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