sig
  type key
  type 'a t
  val create : int -> 'Weakhtbl.S.t
  val clear : 'Weakhtbl.S.t -> unit
  val copy : 'Weakhtbl.S.t -> 'Weakhtbl.S.t
  val find : 'Weakhtbl.S.t -> Weakhtbl.S.key -> 'a
  val mem : 'Weakhtbl.S.t -> Weakhtbl.S.key -> bool
  val set : 'Weakhtbl.S.t -> Weakhtbl.S.key -> '-> unit
  val remove : 'Weakhtbl.S.t -> Weakhtbl.S.key -> unit
  val length : 'Weakhtbl.S.t -> int
  val memoize : int -> (Weakhtbl.S.key -> 'a) -> Weakhtbl.S.key -> 'a
  val memoize_rec :
    int ->
    ((Weakhtbl.S.key -> 'a) -> Weakhtbl.S.key -> 'a) -> Weakhtbl.S.key -> 'a
  val memoize_option :
    int -> (Weakhtbl.S.key option -> 'a) -> Weakhtbl.S.key option -> 'a
end