sig
  type key
  type 'a t
  val empty : unit -> 'CCPersistentHashtbl.S.t
  val create : int -> 'CCPersistentHashtbl.S.t
  val is_empty : 'CCPersistentHashtbl.S.t -> bool
  val find : 'CCPersistentHashtbl.S.t -> CCPersistentHashtbl.S.key -> 'a
  val get_exn : CCPersistentHashtbl.S.key -> 'CCPersistentHashtbl.S.t -> 'a
  val get :
    CCPersistentHashtbl.S.key -> 'CCPersistentHashtbl.S.t -> 'a option
  val mem : 'CCPersistentHashtbl.S.t -> CCPersistentHashtbl.S.key -> bool
  val length : 'CCPersistentHashtbl.S.t -> int
  val add :
    'CCPersistentHashtbl.S.t ->
    CCPersistentHashtbl.S.key -> '-> 'CCPersistentHashtbl.S.t
  val replace :
    'CCPersistentHashtbl.S.t ->
    CCPersistentHashtbl.S.key -> '-> 'CCPersistentHashtbl.S.t
  val update :
    'CCPersistentHashtbl.S.t ->
    CCPersistentHashtbl.S.key ->
    ('a option -> 'a option) -> 'CCPersistentHashtbl.S.t
  val remove :
    'CCPersistentHashtbl.S.t ->
    CCPersistentHashtbl.S.key -> 'CCPersistentHashtbl.S.t
  val copy : 'CCPersistentHashtbl.S.t -> 'CCPersistentHashtbl.S.t
  val merge :
    f:(CCPersistentHashtbl.S.key ->
       [ `Both of 'a * '| `Left of '| `Right of 'b ] -> 'c option) ->
    'CCPersistentHashtbl.S.t ->
    'CCPersistentHashtbl.S.t -> 'CCPersistentHashtbl.S.t
  val iter :
    'CCPersistentHashtbl.S.t ->
    (CCPersistentHashtbl.S.key -> '-> unit) -> unit
  val fold :
    ('-> CCPersistentHashtbl.S.key -> '-> 'b) ->
    '-> 'CCPersistentHashtbl.S.t -> 'b
  val map :
    (CCPersistentHashtbl.S.key -> '-> 'b) ->
    'CCPersistentHashtbl.S.t -> 'CCPersistentHashtbl.S.t
  val filter :
    (CCPersistentHashtbl.S.key -> '-> bool) ->
    'CCPersistentHashtbl.S.t -> 'CCPersistentHashtbl.S.t
  val filter_map :
    (CCPersistentHashtbl.S.key -> '-> 'b option) ->
    'CCPersistentHashtbl.S.t -> 'CCPersistentHashtbl.S.t
  val for_all :
    (CCPersistentHashtbl.S.key -> '-> bool) ->
    'CCPersistentHashtbl.S.t -> bool
  val exists :
    (CCPersistentHashtbl.S.key -> '-> bool) ->
    'CCPersistentHashtbl.S.t -> bool
  val of_seq :
    (CCPersistentHashtbl.S.key * 'a) CCPersistentHashtbl.sequence ->
    'CCPersistentHashtbl.S.t
  val of_list :
    (CCPersistentHashtbl.S.key * 'a) list -> 'CCPersistentHashtbl.S.t
  val add_seq :
    'CCPersistentHashtbl.S.t ->
    (CCPersistentHashtbl.S.key * 'a) CCPersistentHashtbl.sequence ->
    'CCPersistentHashtbl.S.t
  val add_list :
    'CCPersistentHashtbl.S.t ->
    (CCPersistentHashtbl.S.key * 'a) list -> 'CCPersistentHashtbl.S.t
  val to_seq :
    'CCPersistentHashtbl.S.t ->
    (CCPersistentHashtbl.S.key * 'a) CCPersistentHashtbl.sequence
  val to_list :
    'CCPersistentHashtbl.S.t -> (CCPersistentHashtbl.S.key * 'a) list
  val equal :
    'CCPersistentHashtbl.equal ->
    'CCPersistentHashtbl.S.t CCPersistentHashtbl.equal
  val pp :
    ?sep:string ->
    ?arrow:string ->
    CCPersistentHashtbl.S.key CCPersistentHashtbl.printer ->
    'CCPersistentHashtbl.printer ->
    'CCPersistentHashtbl.S.t CCPersistentHashtbl.printer
  val stats : 'CCPersistentHashtbl.S.t -> Hashtbl.statistics
end