sig   module Hashtbl :     sig       type ('a, 'b) t = ('a, 'b) Hashtbl.t       val exists : ('a, 'b) ExtHashtbl.Hashtbl.t -> '-> bool       val keys : ('a, 'b) ExtHashtbl.Hashtbl.t -> 'Enum.t       val values : ('a, 'b) ExtHashtbl.Hashtbl.t -> 'Enum.t       val enum : ('a, 'b) ExtHashtbl.Hashtbl.t -> ('a * 'b) Enum.t       val of_enum : ('a * 'b) Enum.t -> ('a, 'b) ExtHashtbl.Hashtbl.t       val find_default : ('a, 'b) ExtHashtbl.Hashtbl.t -> '-> '-> 'b       val find_opt : ('a, 'b) Hashtbl.t -> '-> 'b option       val find_option : ('a, 'b) Hashtbl.t -> '-> 'b option       val remove_all : ('a, 'b) ExtHashtbl.Hashtbl.t -> '-> unit       val map :         ('-> 'c) ->         ('a, 'b) ExtHashtbl.Hashtbl.t -> ('a, 'c) ExtHashtbl.Hashtbl.t       val length : ('a, 'b) ExtHashtbl.Hashtbl.t -> int       val reset : ('a, 'b) ExtHashtbl.Hashtbl.t -> unit       val randomize : unit -> unit       type statistics = {         num_bindings : int;         num_buckets : int;         max_bucket_length : int;         bucket_histogram : int array;       }       val stats :         ('a, 'b) ExtHashtbl.Hashtbl.t -> ExtHashtbl.Hashtbl.statistics       val seeded_hash_param : int -> int -> int -> '-> int       val seeded_hash : int -> '-> int       val is_randomized : unit -> bool       val filter_map_inplace :         ('-> '-> 'b option) -> ('a, 'b) ExtHashtbl.Hashtbl.t -> unit       val create : ?random:bool -> int -> ('a, 'b) ExtHashtbl.Hashtbl.t       val clear : ('a, 'b) ExtHashtbl.Hashtbl.t -> unit       val add : ('a, 'b) ExtHashtbl.Hashtbl.t -> '-> '-> unit       val copy :         ('a, 'b) ExtHashtbl.Hashtbl.t -> ('a, 'b) ExtHashtbl.Hashtbl.t       val find : ('a, 'b) ExtHashtbl.Hashtbl.t -> '-> 'b       val find_all : ('a, 'b) ExtHashtbl.Hashtbl.t -> '-> 'b list       val mem : ('a, 'b) ExtHashtbl.Hashtbl.t -> '-> bool       val remove : ('a, 'b) ExtHashtbl.Hashtbl.t -> '-> unit       val replace : ('a, 'b) ExtHashtbl.Hashtbl.t -> '-> '-> unit       val iter : ('-> '-> unit) -> ('a, 'b) ExtHashtbl.Hashtbl.t -> unit       val fold :         ('-> '-> '-> 'c) -> ('a, 'b) ExtHashtbl.Hashtbl.t -> '-> 'c       val hash : '-> int       val hash_param : int -> int -> '-> int       module type HashedType =         sig           type t           val equal :             ExtHashtbl.Hashtbl.HashedType.t ->             ExtHashtbl.Hashtbl.HashedType.t -> bool           val hash : ExtHashtbl.Hashtbl.HashedType.t -> int         end       module type S =         sig           type key           type 'a t           val create : int -> 'ExtHashtbl.Hashtbl.S.t           val clear : 'ExtHashtbl.Hashtbl.S.t -> unit           val reset : 'ExtHashtbl.Hashtbl.S.t -> unit           val copy : 'ExtHashtbl.Hashtbl.S.t -> 'ExtHashtbl.Hashtbl.S.t           val add :             'ExtHashtbl.Hashtbl.S.t ->             ExtHashtbl.Hashtbl.S.key -> '-> unit           val remove :             'ExtHashtbl.Hashtbl.S.t -> ExtHashtbl.Hashtbl.S.key -> unit           val find :             'ExtHashtbl.Hashtbl.S.t -> ExtHashtbl.Hashtbl.S.key -> 'a           val find_all :             'ExtHashtbl.Hashtbl.S.t -> ExtHashtbl.Hashtbl.S.key -> 'a list           val replace :             'ExtHashtbl.Hashtbl.S.t ->             ExtHashtbl.Hashtbl.S.key -> '-> unit           val mem :             'ExtHashtbl.Hashtbl.S.t -> ExtHashtbl.Hashtbl.S.key -> bool           val iter :             (ExtHashtbl.Hashtbl.S.key -> '-> unit) ->             'ExtHashtbl.Hashtbl.S.t -> unit           val filter_map_inplace :             (ExtHashtbl.Hashtbl.S.key -> '-> 'a option) ->             'ExtHashtbl.Hashtbl.S.t -> unit           val fold :             (ExtHashtbl.Hashtbl.S.key -> '-> '-> 'b) ->             'ExtHashtbl.Hashtbl.S.t -> '-> 'b           val length : 'ExtHashtbl.Hashtbl.S.t -> int           val stats :             'ExtHashtbl.Hashtbl.S.t -> ExtHashtbl.Hashtbl.statistics         end       module Make :         functor (H : HashedType->           sig             type key = H.t             type 'a t             val create : int -> 'a t             val clear : 'a t -> unit             val reset : 'a t -> unit             val copy : 'a t -> 'a t             val add : 'a t -> key -> '-> unit             val remove : 'a t -> key -> unit             val find : 'a t -> key -> 'a             val find_all : 'a t -> key -> 'a list             val replace : 'a t -> key -> '-> unit             val mem : 'a t -> key -> bool             val iter : (key -> '-> unit) -> 'a t -> unit             val filter_map_inplace : (key -> '-> 'a option) -> 'a t -> unit             val fold : (key -> '-> '-> 'b) -> 'a t -> '-> 'b             val length : 'a t -> int             val stats : 'a t -> statistics           end       module type SeededHashedType =         sig           type t           val equal :             ExtHashtbl.Hashtbl.SeededHashedType.t ->             ExtHashtbl.Hashtbl.SeededHashedType.t -> bool           val hash : int -> ExtHashtbl.Hashtbl.SeededHashedType.t -> int         end       module type SeededS =         sig           type key           type 'a t           val create : ?random:bool -> int -> 'ExtHashtbl.Hashtbl.SeededS.t           val clear : 'ExtHashtbl.Hashtbl.SeededS.t -> unit           val reset : 'ExtHashtbl.Hashtbl.SeededS.t -> unit           val copy :             'ExtHashtbl.Hashtbl.SeededS.t ->             'ExtHashtbl.Hashtbl.SeededS.t           val add :             'ExtHashtbl.Hashtbl.SeededS.t ->             ExtHashtbl.Hashtbl.SeededS.key -> '-> unit           val remove :             'ExtHashtbl.Hashtbl.SeededS.t ->             ExtHashtbl.Hashtbl.SeededS.key -> unit           val find :             'ExtHashtbl.Hashtbl.SeededS.t ->             ExtHashtbl.Hashtbl.SeededS.key -> 'a           val find_all :             'ExtHashtbl.Hashtbl.SeededS.t ->             ExtHashtbl.Hashtbl.SeededS.key -> 'a list           val replace :             'ExtHashtbl.Hashtbl.SeededS.t ->             ExtHashtbl.Hashtbl.SeededS.key -> '-> unit           val mem :             'ExtHashtbl.Hashtbl.SeededS.t ->             ExtHashtbl.Hashtbl.SeededS.key -> bool           val iter :             (ExtHashtbl.Hashtbl.SeededS.key -> '-> unit) ->             'ExtHashtbl.Hashtbl.SeededS.t -> unit           val filter_map_inplace :             (ExtHashtbl.Hashtbl.SeededS.key -> '-> 'a option) ->             'ExtHashtbl.Hashtbl.SeededS.t -> unit           val fold :             (ExtHashtbl.Hashtbl.SeededS.key -> '-> '-> 'b) ->             'ExtHashtbl.Hashtbl.SeededS.t -> '-> 'b           val length : 'ExtHashtbl.Hashtbl.SeededS.t -> int           val stats :             'ExtHashtbl.Hashtbl.SeededS.t -> ExtHashtbl.Hashtbl.statistics         end       module MakeSeeded :         functor (H : SeededHashedType->           sig             type key = H.t             type 'a t             val create : ?random:bool -> int -> 'a t             val clear : 'a t -> unit             val reset : 'a t -> unit             val copy : 'a t -> 'a t             val add : 'a t -> key -> '-> unit             val remove : 'a t -> key -> unit             val find : 'a t -> key -> 'a             val find_all : 'a t -> key -> 'a list             val replace : 'a t -> key -> '-> unit             val mem : 'a t -> key -> bool             val iter : (key -> '-> unit) -> 'a t -> unit             val filter_map_inplace : (key -> '-> 'a option) -> 'a t -> unit             val fold : (key -> '-> '-> 'b) -> 'a t -> '-> 'b             val length : 'a t -> int             val stats : 'a t -> statistics           end     end end