sig
  val add : ('a, 'b) Hashtbl.t -> key:'a -> data:'b -> unit
  val replace : ('a, 'b) Hashtbl.t -> key:'a -> data:'b -> unit
  val iter : f:(key:'a -> data:'b -> unit) -> ('a, 'b) Hashtbl.t -> unit
  val map :
    f:(key:'a -> data:'b -> 'c) -> ('a, 'b) Hashtbl.t -> ('a, 'c) Hashtbl.t
  val filter : f:('a -> bool) -> ('b, 'a) Hashtbl.t -> ('b, 'a) Hashtbl.t
  val filteri :
    f:(key:'a -> data:'b -> bool) -> ('a, 'b) Hashtbl.t -> ('a, 'b) Hashtbl.t
  val filter_map :
    f:(key:'a -> data:'b -> 'c option) ->
    ('a, 'b) Hashtbl.t -> ('a, 'c) Hashtbl.t
  val fold :
    f:(key:'a -> data:'b -> 'c -> 'c) -> ('a, 'b) Hashtbl.t -> init:'c -> 'c
end