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