sig
  type e1
  type e2
  type elt = Rapids.DOUBLE_INDEX.e1 * Rapids.DOUBLE_INDEX.e2
  type id
  type t
  val create : unit -> Rapids.DOUBLE_INDEX.t
  val register :
    Rapids.DOUBLE_INDEX.t ->
    Rapids.DOUBLE_INDEX.elt -> Rapids.DOUBLE_INDEX.id
  val replace : Rapids.DOUBLE_INDEX.t -> Rapids.DOUBLE_INDEX.elt -> unit
  val find :
    Rapids.DOUBLE_INDEX.t ->
    Rapids.DOUBLE_INDEX.id -> Rapids.DOUBLE_INDEX.elt
  val search1 :
    Rapids.DOUBLE_INDEX.t -> Rapids.DOUBLE_INDEX.e1 -> Rapids.DOUBLE_INDEX.id
  val search2 :
    Rapids.DOUBLE_INDEX.t -> Rapids.DOUBLE_INDEX.e2 -> Rapids.DOUBLE_INDEX.id
  val compare_id : Rapids.DOUBLE_INDEX.id -> Rapids.DOUBLE_INDEX.id -> int
  val scribe_id : 'Conduit.conduit -> '-> Rapids.DOUBLE_INDEX.id -> unit
  val iter :
    Rapids.DOUBLE_INDEX.t ->
    (Rapids.DOUBLE_INDEX.id -> Rapids.DOUBLE_INDEX.elt -> unit) -> unit
  val set_watcher :
    Rapids.DOUBLE_INDEX.t ->
    (Rapids.DOUBLE_INDEX.id -> Rapids.DOUBLE_INDEX.elt -> unit) -> unit
end