functor (X : Hashtbl.HashedType->
  sig
    type key = X.t
    type 'a t
    val create : ?size:int -> '-> 'a t
    val create_with : ?size:int -> (key -> 'a) -> 'a t
    val get : 'a t -> key -> 'a
    val set : 'a t -> key -> '-> unit
    val remove : 'a t -> key -> unit
    val to_seq : 'a t -> (key * 'a) sequence
  end