sig
  type 'b t
  val empty : 'CCLevenshtein.S.Index.t
  val is_empty : 'CCLevenshtein.S.Index.t -> bool
  val add :
    'CCLevenshtein.S.Index.t ->
    CCLevenshtein.S.string_ -> '-> 'CCLevenshtein.S.Index.t
  val cardinal : 'CCLevenshtein.S.Index.t -> int
  val remove :
    'CCLevenshtein.S.Index.t ->
    CCLevenshtein.S.string_ -> 'CCLevenshtein.S.Index.t
  val retrieve :
    limit:int ->
    'CCLevenshtein.S.Index.t ->
    CCLevenshtein.S.string_ -> 'CCLevenshtein.klist
  val of_list :
    (CCLevenshtein.S.string_ * 'b) list -> 'CCLevenshtein.S.Index.t
  val to_list :
    'CCLevenshtein.S.Index.t -> (CCLevenshtein.S.string_ * 'b) list
  val add_seq :
    'CCLevenshtein.S.Index.t ->
    (CCLevenshtein.S.string_ * 'a) CCLevenshtein.sequence ->
    'CCLevenshtein.S.Index.t
  val of_seq :
    (CCLevenshtein.S.string_ * 'a) CCLevenshtein.sequence ->
    'CCLevenshtein.S.Index.t
  val to_seq :
    'CCLevenshtein.S.Index.t ->
    (CCLevenshtein.S.string_ * 'a) CCLevenshtein.sequence
  val add_gen :
    'CCLevenshtein.S.Index.t ->
    (CCLevenshtein.S.string_ * 'a) CCLevenshtein.gen ->
    'CCLevenshtein.S.Index.t
  val of_gen :
    (CCLevenshtein.S.string_ * 'a) CCLevenshtein.gen ->
    'CCLevenshtein.S.Index.t
  val to_gen :
    'CCLevenshtein.S.Index.t ->
    (CCLevenshtein.S.string_ * 'a) CCLevenshtein.gen
  val fold :
    ('-> CCLevenshtein.S.string_ -> '-> 'a) ->
    '-> 'CCLevenshtein.S.Index.t -> 'a
  val iter :
    (CCLevenshtein.S.string_ -> '-> unit) ->
    'CCLevenshtein.S.Index.t -> unit
  val to_klist :
    'CCLevenshtein.S.Index.t ->
    (CCLevenshtein.S.string_ * 'b) CCLevenshtein.klist
end