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