module type Key = Hashtbl2.Key
include sig ... end
val sexp_of_t : ('key1 ‑> Base.Sexp.t) ‑> ('key2 ‑> Base.Sexp.t) ‑> ('data ‑> Base.Sexp.t) ‑> ('key1, 'key2, 'data) t ‑> Base.Sexp.t
include Core.Invariant.S3 with type (a, b, c) t := (a, b, c) t
val invariant : 'a Base__.Invariant_intf.inv ‑> 'b Base__.Invariant_intf.inv ‑> 'c Base__.Invariant_intf.inv ‑> ('a, 'b, 'c) t Base__.Invariant_intf.inv
val clear : (_, _, _) t ‑> unit
val add_exn : ('key1, 'key2, 'data) t ‑> 'key1 ‑> 'key2 ‑> 'data ‑> unit
val set : ('key1, 'key2, 'data) t ‑> 'key1 ‑> 'key2 ‑> 'data ‑> unit
val find : ('key1, 'key2, 'data) t ‑> 'key1 ‑> 'key2 ‑> 'data option
val mem : ('key1, 'key2, 'data) t ‑> 'key1 ‑> 'key2 ‑> bool
val mem1 : ('key1, 'key2, 'data) t ‑> 'key1 ‑> bool
val mem2 : ('key1, 'key2, 'data) t ‑> 'key2 ‑> bool
val iter : ('key1, 'key2, 'data) t ‑> f:('key1 ‑> 'key2 ‑> 'data ‑> unit) ‑> unit
val iter1 : ('key1, 'key2, 'data) t ‑> f:('key1 ‑> ('key2, 'data) Core.Hashtbl.t ‑> unit) ‑> unit
val iter2 : ('key1, 'key2, 'data) t ‑> f:('key2 ‑> ('key1, 'data) Core.Hashtbl.t ‑> unit) ‑> unit
val find1 : ('key1, 'key2, 'data) t ‑> 'key1 ‑> ('key2, 'data) Core.Hashtbl.t option
val find2 : ('key1, 'key2, 'data) t ‑> 'key2 ‑> ('key1, 'data) Core.Hashtbl.t option
val find1_iter2 : ('key1, 'key2, 'data) t ‑> 'key1 ‑> f:('key2 ‑> 'data ‑> unit) ‑> unit
val find2_iter1 : ('key1, 'key2, 'data) t ‑> 'key2 ‑> f:('key1 ‑> 'data ‑> unit) ‑> unit
val remove_all1 : ('key1, _, _) t ‑> 'key1 ‑> unit
val remove_exn : ('key1, 'key2, _) t ‑> 'key1 ‑> 'key2 ‑> unit