sig
  type 'a t
  type 'b injection
  val create : int -> 'a CCMixtbl.t
  val create_inj : unit -> 'b CCMixtbl.injection
  val get : inj:'b CCMixtbl.injection -> 'a CCMixtbl.t -> 'a -> 'b option
  val set : inj:'b CCMixtbl.injection -> 'a CCMixtbl.t -> 'a -> 'b -> unit
  val find : inj:'b CCMixtbl.injection -> 'a CCMixtbl.t -> 'a -> 'b
  val length : 'a CCMixtbl.t -> int
  val clear : 'a CCMixtbl.t -> unit
  val remove : 'a CCMixtbl.t -> 'a -> unit
  val copy : 'a CCMixtbl.t -> 'a CCMixtbl.t
  val mem : inj:'b CCMixtbl.injection -> 'a CCMixtbl.t -> 'a -> bool
  val iter_keys : 'a CCMixtbl.t -> ('a -> unit) -> unit
  val fold_keys : 'a CCMixtbl.t -> 'b -> ('b -> 'a -> 'b) -> 'b
  type 'a sequence = ('a -> unit) -> unit
  val keys_seq : 'a CCMixtbl.t -> 'a CCMixtbl.sequence
  val bindings_of :
    inj:'b CCMixtbl.injection -> 'a CCMixtbl.t -> ('a * 'b) CCMixtbl.sequence
  type value = Value : ('b CCMixtbl.injection -> 'b option) -> CCMixtbl.value
  val bindings : 'a CCMixtbl.t -> ('a * CCMixtbl.value) CCMixtbl.sequence
end