functor (H : WeakHashable->
  sig
    type data = H.t
    type t
    val create : int -> t
    val merge : t -> data -> data
    val iter : t -> (data -> unit) -> unit
    val clear : t -> unit
    val release : t -> unit
    val shallow_copy : t -> t
    val addr : t -> int
    val overwrite : old:t -> fresh:t -> unit
    val pretty_debug : Format.formatter -> t -> int -> unit
  end