sig
  type ('a, 'b) t
  val create :
    ?growth_allowed:bool ->
    ?size:int ->
    'a Core_kernel.Std.Hashtbl.Hashable.t -> ('a, 'b) Weak_hashtbl.t
  val mem : ('a, 'b) Weak_hashtbl.t -> 'a -> bool
  val find :
    ('a, 'b) Weak_hashtbl.t -> 'a -> 'b Core_kernel.Std.Heap_block.t option
  val find_or_add :
    ('a, 'b) Weak_hashtbl.t ->
    'a ->
    default:(unit -> 'b Core_kernel.Std.Heap_block.t) ->
    'b Core_kernel.Std.Heap_block.t
  val remove : ('a, 'b) Weak_hashtbl.t -> 'a -> unit
  val add_exn :
    ('a, 'b) Weak_hashtbl.t ->
    key:'a -> data:'b Core_kernel.Std.Heap_block.t -> unit
  val replace :
    ('a, 'b) Weak_hashtbl.t ->
    key:'a -> data:'b Core_kernel.Std.Heap_block.t -> unit
  val key_is_using_space : ('a, 'b) Weak_hashtbl.t -> 'a -> bool
  val reclaim_space_for_keys_with_unused_data :
    ('a, 'b) Weak_hashtbl.t -> unit
  val set_run_when_unused_data :
    ('a, 'b) Weak_hashtbl.t -> thread_safe_f:(unit -> unit) -> unit
  val sexp_of_t :
    ('a -> Sexplib.Sexp.t) ->
    ('b -> Sexplib.Sexp.t) -> ('a, 'b) Weak_hashtbl.t -> Sexplib.Sexp.t
end