sig
  type key
  type t
  val empty : CCMixmap.S.t
  val get :
    inj:'CCMixmap.injection -> CCMixmap.S.key -> CCMixmap.S.t -> 'a option
  val add :
    inj:'CCMixmap.injection ->
    CCMixmap.S.key -> '-> CCMixmap.S.t -> CCMixmap.S.t
  val find :
    inj:'CCMixmap.injection -> CCMixmap.S.key -> CCMixmap.S.t -> 'a
  val cardinal : CCMixmap.S.t -> int
  val remove : CCMixmap.S.key -> CCMixmap.S.t -> CCMixmap.S.t
  val mem :
    inj:'CCMixmap.injection -> CCMixmap.S.key -> CCMixmap.S.t -> bool
  val iter_keys : f:(CCMixmap.S.key -> unit) -> CCMixmap.S.t -> unit
  val fold_keys :
    f:('-> CCMixmap.S.key -> 'a) -> x:'-> CCMixmap.S.t -> 'a
  type 'a sequence = ('-> unit) -> unit
  val keys_seq : CCMixmap.S.t -> CCMixmap.S.key CCMixmap.S.sequence
  val bindings_of :
    inj:'CCMixmap.injection ->
    CCMixmap.S.t -> (CCMixmap.S.key * 'a) CCMixmap.S.sequence
  type value =
      Value : ('CCMixmap.injection -> 'a option) -> CCMixmap.S.value
  val bindings :
    CCMixmap.S.t -> (CCMixmap.S.key * CCMixmap.S.value) CCMixmap.S.sequence
end