sig
  type 'a t = 'a Package.Set.t
  val empty : 'a t
  val is_empty : 'a t -> bool
  val add : 'a Package.Name.t -> 'a t -> 'a t
  val mem : 'a Package.Name.t -> 'a t -> bool
  val exists : ('a Package.Name.t -> bool) -> 'a t -> bool
  val iter : ('a Package.Name.t -> unit) -> 'a t -> unit
  val cardinal : 'a t -> int
  val elements : 'a t -> 'a Package.Name.t list
  val fold : ('a Package.Name.t -> 'b -> 'b) -> 'a t -> 'b -> 'b
end