sig
  type ('key, 'data) t = ('key, 'data) Bounded_int_table.t
  val sexp_of_t :
    ('key -> Sexplib.Sexp.t) ->
    ('data -> Sexplib.Sexp.t) -> ('key, 'data) t -> Sexplib.Sexp.t
  val invariant : ('a, 'b) t -> unit
  val create :
    ?sexp_of_key:('key -> Std_internal.Sexp.t) ->
    num_keys:int -> key_to_int:('key -> int) -> unit -> ('key, 'data) t
  val data : ('a, 'data) t -> 'data list
  val find : ('key, 'data) t -> 'key -> 'data option
  val fold :
    ('key, 'data) t ->
    init:'accum -> f:(key:'key -> data:'data -> 'accum -> 'accum) -> 'accum
  val iter : ('key, 'data) t -> f:(key:'key -> data:'data -> unit) -> unit
  val iter_vals : ('a, 'data) t -> f:('data -> unit) -> unit
  val keys : ('key, 'a) t -> 'key list
  val length : ('a, 'b) t -> int
  val mem : ('key, 'a) t -> 'key -> bool
  val remove : ('key, 'a) t -> 'key -> unit
  val set : ('a, 'b) t -> key:'-> data:'-> unit
  val add : ('a, 'b) t -> key:'-> data:'-> [ `Duplicate | `Ok ]
  val add_exn : ('a, 'b) t -> key:'-> data:'-> unit
  val to_alist : ('key, 'data) t -> ('key * 'data) list
  val debug : bool ref
  val ounit_tests : unit -> OUnit.test
end