sig
  module type Elt =
    sig type t val compare : Indexer.Elt.t -> Indexer.Elt.t -> int end
  module Make :
    functor (E : Elt->
      sig
        type t
        val size : Indexer.Make.t -> int
        val mem : E.t -> Indexer.Make.t -> bool
        val get : int -> Indexer.Make.t -> E.t
        val index : E.t -> Indexer.Make.t -> int
        val empty : Indexer.Make.t
        val add : E.t -> Indexer.Make.t -> Indexer.Make.t
        val remove : E.t -> Indexer.Make.t -> Indexer.Make.t
        val filter : (E.t -> bool) -> Indexer.Make.t -> Indexer.Make.t
        val update :
          E.t option ->
          E.t option -> Indexer.Make.t -> int * int * Indexer.Make.t
        val iter : (E.t -> unit) -> Indexer.Make.t -> unit
        val iteri : (int -> E.t -> unit) -> Indexer.Make.t -> unit
      end
end