sig
  module Box :
    sig
      type 'a t
      val inject : '-> 'Weak_hashtbl.Box.t
      val project : 'Weak_hashtbl.Box.t -> 'a
    end
  type ('a, 'b) t
  val create : 'Core.Std.Hashtbl.Hashable.t -> ('a, 'b) Weak_hashtbl.t
  val find : ('a, 'b) Weak_hashtbl.t -> '-> 'b option
  val find_or_add :
    ('a, 'b) Weak_hashtbl.t ->
    '-> default:(unit -> 'Weak_hashtbl.Box.t) -> 'b
  val remove : ('a, 'b) Weak_hashtbl.t -> '-> unit
  val replace :
    ('a, 'b) Weak_hashtbl.t -> key:'-> data:'Weak_hashtbl.Box.t -> unit
  val ounit_tests : unit -> OUnit.test
end