sig
  type ('a, 'b) t
  val empty : ('a, 'b) Tbl.t
  val add : 'a -> 'b -> ('a, 'b) Tbl.t -> ('a, 'b) Tbl.t
  val find : 'a -> ('a, 'b) Tbl.t -> 'b
  val mem : 'a -> ('a, 'b) Tbl.t -> bool
  val remove : 'a -> ('a, 'b) Tbl.t -> ('a, 'b) Tbl.t
  val iter : ('a -> 'b -> unit) -> ('a, 'b) Tbl.t -> unit
  val map : ('a -> 'b -> 'c) -> ('a, 'b) Tbl.t -> ('a, 'c) Tbl.t
  val fold : ('a -> 'b -> 'c -> 'c) -> ('a, 'b) Tbl.t -> 'c -> 'c
  val print :
    (Format.formatter -> 'a -> unit) ->
    (Format.formatter -> 'b -> unit) ->
    Format.formatter -> ('a, 'b) Tbl.t -> unit
end