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