if (isFriend(symbolicName, exports[i], strict) && !importList.contains(exports[i].getName()))
if (!isSystemExport(exports[i]) && isFriend(symbolicName, exports[i], strict) && !importList.contains(exports[i].getName()))
	private void getPackages(BundleDescription requiredBundle, String symbolicName, List importList, List packageList, List visited, boolean strict) {		if (visited.contains(requiredBundle))			return; // prevent duplicate entries and infinate loops incase of cycles		visited.add(requiredBundle);		// add all the exported packages from the required bundle; take x-friends into account.		ExportPackageDescription[] exports = requiredBundle.getSelectedExports();		for (int i = 0; i < exports.length; i++)			if (isFriend(symbolicName, exports[i], strict) && !importList.contains(exports[i].getName()))				packageList.add(exports[i]);		// now look for reexported bundles from the required bundle.		BundleSpecification[] requiredBundles = requiredBundle.getRequiredBundles();		for (int i = 0; i < requiredBundles.length; i++)			if (requiredBundles[i].isExported() && requiredBundles[i].getSupplier() != null)				getPackages((BundleDescription) requiredBundles[i].getSupplier(), symbolicName, importList, packageList, visited, strict);	}