sig
  type data
  type elt
  type id
  type t
  val create : unit -> Rapids.LABELED_INDEX.t
  val register :
    Rapids.LABELED_INDEX.t ->
    Rapids.LABELED_INDEX.elt ->
    (unit -> Rapids.LABELED_INDEX.data) -> Rapids.LABELED_INDEX.id
  val search :
    Rapids.LABELED_INDEX.t ->
    Rapids.LABELED_INDEX.elt -> Rapids.LABELED_INDEX.id
  val find :
    Rapids.LABELED_INDEX.t ->
    Rapids.LABELED_INDEX.id -> Rapids.LABELED_INDEX.elt
  val data :
    Rapids.LABELED_INDEX.t ->
    Rapids.LABELED_INDEX.id -> Rapids.LABELED_INDEX.data
  val compare_id : Rapids.LABELED_INDEX.id -> Rapids.LABELED_INDEX.id -> int
  val scribe_id : 'Conduit.conduit -> '-> Rapids.LABELED_INDEX.id -> unit
  val io_id : Rapids.LABELED_INDEX.id Io.literate
  val iter :
    Rapids.LABELED_INDEX.t ->
    (Rapids.LABELED_INDEX.id ->
     Rapids.LABELED_INDEX.elt -> Rapids.LABELED_INDEX.data -> unit) ->
    unit
  val set_watcher :
    Rapids.LABELED_INDEX.t ->
    (Rapids.LABELED_INDEX.id ->
     Rapids.LABELED_INDEX.elt -> Rapids.LABELED_INDEX.data -> unit) ->
    unit
end