sig
  type ('a, 'b) t
  val create : 'a Core.Std.Hashtbl.Hashable.t -> ('a, 'b) Weak_hashtbl.t
  val find : ('a, 'b) Weak_hashtbl.t -> 'a -> 'b Core.Std.Heap_block.t option
  val find_or_add :
    ('a, 'b) Weak_hashtbl.t ->
    'a ->
    default:(unit -> 'b Core.Std.Heap_block.t) -> 'b Core.Std.Heap_block.t
  val remove : ('a, 'b) Weak_hashtbl.t -> 'a -> unit
  val replace :
    ('a, 'b) Weak_hashtbl.t ->
    key:'a -> data:'b Core.Std.Heap_block.t -> unit
end