functor (Key1 : Key) (Key2 : Key->
  sig
    type 'data t = (Key1.t, Key2.t, 'data) t
    val equal : 'Core.Std.Equal.equal -> 'a t Core.Std.Equal.equal
    val create : unit -> 'data Hashtbl2_pair.t
    val of_alist_exn :
      (Key1.t * Key2.t * 'data) list -> 'data Hashtbl2_pair.t
    val sexp_of_t :
      ('data -> Sexplib.Sexp.t) -> 'data Hashtbl2_pair.t -> Sexplib.Sexp.t
  end