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