sig
  type t
  val rehash : t -> t
  val descr : Unmarshal.t
  val copy : t -> t
  val name : string
  val register_comparable :
    ?compare:(Project.t -> Project.t -> int) ->
    ?equal:(Project.t -> Project.t -> bool) ->
    ?hash:(Project.t -> int) ->
    ?physical_hash:(Project.t -> int) -> unit -> unit
  val is_comparable_set : unit -> bool
  val hash : Project.t -> int
  val physical_hash : Project.t -> int
  val equal : Project.t -> Project.t -> bool
  val compare : Project.t -> Project.t -> int
  val contain_project :
    (Project.project -> Project.t -> bool) option Pervasives.ref
end