if (local != null && local.isFriend(symbolicName))
if (local != null && local.isFriend(symbolicName)) { if (local instanceof BundleLoaderProxy.ReexportPackageSource) local = new SingleSourcePackage(packageName, -1, proxy);
	final void addExportedProvidersFor(String symbolicName, String packageName, ArrayList result, KeyedHashSet visited) {		if (!visited.add(bundle))			return;		// See if we locally provide the package.		PackageSource local = null;		if (isExportedPackage(packageName))			local = proxy.getPackageSource(packageName);		// Must search required bundles that are exported first.		if (requiredBundles != null) {			int size = reexportTable == null ? 0 : reexportTable.length;			int reexportIndex = 0;			for (int i = 0; i < requiredBundles.length; i++) {				if (local != null) {					// always add required bundles first if we locally provide the package					// This allows a bundle to provide a package from a required bundle without 					// re-exporting the whole required bundle.					requiredBundles[i].getBundleLoader().addExportedProvidersFor(symbolicName, packageName, result, visited);				} else if (reexportIndex < size && reexportTable[reexportIndex] == i) {					reexportIndex++;					requiredBundles[i].getBundleLoader().addExportedProvidersFor(symbolicName, packageName, result, visited);				}			}		}		// now add the locally provided package.		if (local != null && local.isFriend(symbolicName))			result.add(local);	}