{
for (Capability capability : capabilities)
{
if (capability instanceof ExportPackages)
{
ExportPackages exported = (ExportPackages) capability;
Set<String> exportPackages = exported.getPackageNames(this);
if (exportPackages != null)
{
if (packageNames.isEmpty())
packageNames = new ArrayList<String>();
packageNames.addAll(exportPackages);
}
}
}
}
List<Requirement> requirements = getRequirements();
if (requirements != null && requirements.isEmpty() == false)
{
for (Requirement requirement : getRequirements())
{
if (optional == false && requirement instanceof OptionalPackages)
{
OptionalPackages exported = (OptionalPackages) requirement;
Set<String> optionalPackages = exported.getOptionalPackageNames(this);
if (optionalPackages != null && packageNames.isEmpty() == false)
packageNames.removeAll(optionalPackages);
}
}
}