sig
  type ('a, 'b) t = { xy : ('a, 'b) PHashhe.t; yx : ('b, 'a) PHashhe.t; }
  val hashx : ('a, 'b) PDHashhe.t -> ('a, 'b) PHashhe.t
  val hashy : ('a, 'b) PDHashhe.t -> ('b, 'a) PHashhe.t
  val clear : ('a, 'b) PDHashhe.t -> unit
  val create_compare :
    'Hashhe.compare -> 'Hashhe.compare -> int -> ('a, 'b) PDHashhe.t
  val create :
    ('-> int) ->
    ('-> '-> bool) ->
    ('-> int) -> ('-> '-> bool) -> int -> ('a, 'b) PDHashhe.t
  val add : ('a, 'b) PDHashhe.t -> '-> '-> unit
  val y_of_x : ('a, 'b) PDHashhe.t -> '-> 'b
  val x_of_y : ('a, 'b) PDHashhe.t -> '-> 'a
  val removex : ('a, 'b) PDHashhe.t -> '-> unit
  val removey : ('a, 'b) PDHashhe.t -> '-> unit
  val memx : ('a, 'b) PDHashhe.t -> '-> bool
  val memy : ('a, 'b) PDHashhe.t -> '-> bool
  val iter : ('a, 'b) PDHashhe.t -> ('-> '-> unit) -> unit
  val fold : ('a, 'b) PDHashhe.t -> '-> ('-> '-> '-> 'c) -> 'c
  val cardinal : ('a, 'b) PDHashhe.t -> int
  val print :
    ?first:(unit, Format.formatter, unit) Pervasives.format ->
    ?sep:(unit, Format.formatter, unit) Pervasives.format ->
    ?last:(unit, Format.formatter, unit) Pervasives.format ->
    ?firstbind:(unit, Format.formatter, unit) Pervasives.format ->
    ?sepbind:(unit, Format.formatter, unit) Pervasives.format ->
    ?lastbind:(unit, Format.formatter, unit) Pervasives.format ->
    (Format.formatter -> '-> unit) ->
    (Format.formatter -> '-> unit) ->
    Format.formatter -> ('a, 'b) PDHashhe.t -> unit
end