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