sig
  type ('key, 'data) t
  type ('a, 'b) table = ('a, 'b) Bounded_int_table.t
  val equal : 'Equal.equal -> 'Equal.equal -> ('a, 'b) t Equal.equal
  val invariant : ('a, 'b) Bounded_int_table.t -> unit
  val create :
    ?sexp_of_key:('key -> Std_internal.Sexp.t) ->
    num_keys:int ->
    key_to_int:('key -> int) -> unit -> ('key, 'data) Bounded_int_table.t
  val keys : ('key, 'a) Bounded_int_table.t -> 'key list
  val data : ('a, 'data) Bounded_int_table.t -> 'data list
  val find : ('key, 'data) Bounded_int_table.t -> 'key -> 'data option
  val find_exn : ('key, 'data) Bounded_int_table.t -> 'key -> 'data
  val find_or_add :
    ('key, 'data) Bounded_int_table.t ->
    'key -> default:(unit -> 'data) -> 'data
  val fold :
    ('key, 'data) Bounded_int_table.t ->
    init:'accum -> f:(key:'key -> data:'data -> 'accum -> 'accum) -> 'accum
  val iter :
    ('key, 'data) Bounded_int_table.t ->
    f:(key:'key -> data:'data -> unit) -> unit
  val iter_vals :
    ('a, 'data) Bounded_int_table.t -> f:('data -> unit) -> unit
  val filter_mapi :
    ('key, 'data1) Bounded_int_table.t ->
    f:(key:'key -> data:'data1 -> 'data2 option) ->
    ('key, 'data2) Bounded_int_table.t
  val filter_map :
    ('key, 'data1) Bounded_int_table.t ->
    f:('data1 -> 'data2 option) -> ('key, 'data2) Bounded_int_table.t
  val mapi :
    ('key, 'data1) Bounded_int_table.t ->
    f:(key:'key -> data:'data1 -> 'data2) ->
    ('key, 'data2) Bounded_int_table.t
  val map :
    ('key, 'data1) Bounded_int_table.t ->
    f:('data1 -> 'data2) -> ('key, 'data2) Bounded_int_table.t
  val for_alli :
    ('key, 'data) Bounded_int_table.t ->
    f:(key:'key -> data:'data -> bool) -> bool
  val existsi :
    ('key, 'data) Bounded_int_table.t ->
    f:(key:'key -> data:'data -> bool) -> bool
  val for_all : ('a, 'data) Bounded_int_table.t -> f:('data -> bool) -> bool
  val exists : ('a, 'data) Bounded_int_table.t -> f:('data -> bool) -> bool
  val length : ('a, 'b) Bounded_int_table.t -> int
  val mem : ('key, 'a) Bounded_int_table.t -> 'key -> bool
  val remove : ('key, 'a) Bounded_int_table.t -> 'key -> unit
  val set : ('a, 'b) Bounded_int_table.t -> key:'-> data:'-> unit
  val add :
    ('a, 'b) Bounded_int_table.t ->
    key:'-> data:'-> [ `Duplicate of '| `Ok ]
  val add_exn : ('a, 'b) Bounded_int_table.t -> key:'-> data:'-> unit
  val to_alist : ('key, 'data) Bounded_int_table.t -> ('key * 'data) list
  module With_key :
    functor
      (Key : sig
               type t
               val to_int : Bounded_int_table.With_key.t -> int
               val t_of_sexp : Sexplib.Sexp.t -> Bounded_int_table.With_key.t
               val sexp_of_t : Bounded_int_table.With_key.t -> Sexplib.Sexp.t
               val bin_t : Bounded_int_table.With_key.t Bin_prot.Type_class.t
               val bin_read_t :
                 Bounded_int_table.With_key.t Bin_prot.Read_ml.reader
               val bin_read_t_ :
                 Bounded_int_table.With_key.t Bin_prot.Unsafe_read_c.reader
               val bin_read_t__ :
                 (int -> Bounded_int_table.With_key.t)
                 Bin_prot.Unsafe_read_c.reader
               val bin_reader_t :
                 Bounded_int_table.With_key.t Bin_prot.Type_class.reader
               val bin_size_t :
                 Bounded_int_table.With_key.t Bin_prot.Size.sizer
               val bin_write_t :
                 Bounded_int_table.With_key.t Bin_prot.Write_ml.writer
               val bin_write_t_ :
                 Bounded_int_table.With_key.t Bin_prot.Unsafe_write_c.writer
               val bin_writer_t :
                 Bounded_int_table.With_key.t Bin_prot.Type_class.writer
             end->
      sig
        type 'data t = (Key.t, 'data) Bounded_int_table.table
        val create : num_keys:int -> 'data Bounded_int_table.With_key.t
        val of_alist :
          (Key.t * 'data) list ->
          'data Bounded_int_table.With_key.t Or_error.t
        val of_alist_exn :
          (Key.t * 'data) list -> 'data Bounded_int_table.With_key.t
        val t_of_sexp :
          (Sexplib.Sexp.t -> 'data) ->
          Sexplib.Sexp.t -> 'data Bounded_int_table.With_key.t
        val sexp_of_t :
          ('data -> Sexplib.Sexp.t) ->
          'data Bounded_int_table.With_key.t -> Sexplib.Sexp.t
        val bin_t :
          'data Bin_prot.Type_class.t ->
          'data Bounded_int_table.With_key.t Bin_prot.Type_class.t
        val bin_read_t :
          'data Bin_prot.Unsafe_read_c.reader ->
          'data Bounded_int_table.With_key.t Bin_prot.Read_ml.reader
        val bin_read_t_ :
          'data Bin_prot.Unsafe_read_c.reader ->
          'data Bounded_int_table.With_key.t Bin_prot.Unsafe_read_c.reader
        val bin_read_t__ :
          'data Bin_prot.Unsafe_read_c.reader ->
          (int -> 'data Bounded_int_table.With_key.t)
          Bin_prot.Unsafe_read_c.reader
        val bin_reader_t :
          'data Bin_prot.Type_class.reader ->
          'data Bounded_int_table.With_key.t Bin_prot.Type_class.reader
        val bin_size_t :
          'data Bin_prot.Size.sizer ->
          'data Bounded_int_table.With_key.t Bin_prot.Size.sizer
        val bin_write_t :
          'data Bin_prot.Unsafe_write_c.writer ->
          'data Bounded_int_table.With_key.t Bin_prot.Write_ml.writer
        val bin_write_t_ :
          'data Bin_prot.Unsafe_write_c.writer ->
          'data Bounded_int_table.With_key.t Bin_prot.Unsafe_write_c.writer
        val bin_writer_t :
          'data Bin_prot.Type_class.writer ->
          'data Bounded_int_table.With_key.t Bin_prot.Type_class.writer
      end
  val debug : bool Pervasives.ref
  val sexp_of_t :
    ('key -> Sexplib.Sexp.t) ->
    ('data -> Sexplib.Sexp.t) ->
    ('key, 'data) Bounded_int_table.t -> Sexplib.Sexp.t
end