sig
  type key
  and 'a t
  val create : int -> 'a Hashtbl.S.t
  val clear : 'a Hashtbl.S.t -> unit
  val add : 'a Hashtbl.S.t -> key:Hashtbl.S.key -> data:'a -> unit
  val remove : 'a Hashtbl.S.t -> Hashtbl.S.key -> unit
  val find : 'a Hashtbl.S.t -> Hashtbl.S.key -> 'a
  val find_all : 'a Hashtbl.S.t -> Hashtbl.S.key -> 'a list
  val replace : 'a Hashtbl.S.t -> key:Hashtbl.S.key -> data:'a -> unit
  val mem : 'a Hashtbl.S.t -> Hashtbl.S.key -> bool
  val iter :
    f:(key:Hashtbl.S.key -> data:'a -> unit) -> 'a Hashtbl.S.t -> unit
  val fold :
    f:(key:Hashtbl.S.key -> data:'a -> 'b -> 'b) ->
    'a Hashtbl.S.t -> init:'b -> 'b
end