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