functor
  (Hashtbl : sig
               type 'a key
               type ('a, 'b) t
               val add :
                 ('a, 'b) Hash_set.t ->
                 key:'Hash_set.key -> data:'-> unit
               val clear : ('a, 'b) Hash_set.t -> unit
               val create : int -> ('a, 'b) Hash_set.t
               val fold :
                 f:(key:'Hash_set.key -> data:'-> '-> 'c) ->
                 ('a, 'b) Hash_set.t -> init:'-> 'c
               val iter :
                 f:(key:'Hash_set.key -> data:'-> unit) ->
                 ('a, 'b) Hash_set.t -> unit
               val keys : ('a, 'b) Hash_set.t -> 'Hash_set.key list
               val length : ('a, 'b) Hash_set.t -> int
               val mem : ('a, 'b) Hash_set.t -> 'Hash_set.key -> bool
               val of_alist :
                 ('Hash_set.key * 'b) list -> ('a, 'b) Hash_set.t
               val remove : ('a, 'b) Hash_set.t -> 'Hash_set.key -> unit
               val replace :
                 ('a, 'b) Hash_set.t ->
                 key:'Hash_set.key -> data:'-> unit
             end->
  sig
    type 'a elt_ = 'Hashtbl.key
    type 'a set = ('a, unit) Hashtbl.t
    val clear : ('a, 'b) Hashtbl.t -> unit
    val create : int -> ('a, 'b) Hashtbl.t
    val length : ('a, 'b) Hashtbl.t -> int
    val mem : ('a, 'b) Hashtbl.t -> 'Hashtbl.key -> bool
    val add : ('a, unit) Hashtbl.t -> 'Hashtbl.key -> unit
    val strict_add : ('a, unit) Hashtbl.t -> 'Hashtbl.key -> unit
    val remove : ('a, 'b) Hashtbl.t -> 'Hashtbl.key -> unit
    val strict_remove : ('a, 'b) Hashtbl.t -> 'Hashtbl.key -> unit
    val fold :
      f:('-> 'Hashtbl.key -> 'a) -> init:'-> ('b, 'c) Hashtbl.t -> 'a
    val iter : f:('Hashtbl.key -> unit) -> ('a, 'b) Hashtbl.t -> unit
    val to_list : ('a, 'b) Hashtbl.t -> 'Hashtbl.key list
    val of_list : 'Hashtbl.key list -> ('a, unit) Hashtbl.t
    val sexp_of_t :
      ('Hashtbl.key -> Sexplib.Sexp.t) ->
      ('a, 'b) Hashtbl.t -> Sexplib.Sexp.t
    val t_of_sexp :
      (Sexplib.Sexp.t -> 'Hashtbl.key) ->
      Sexplib.Sexp.t -> ('a, unit) Hashtbl.t
  end