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