initialize(proxy.getBundleDescription());
BundleDescription description = proxy.getBundleDescription();  BundleDescription[] required = description.getResolvedRequires(); if (required.length > 0) {  HashSet reExportSet = new HashSet(required.length); BundleSpecification[] requiredSpecs = description.getRequiredBundles(); if (requiredSpecs != null && requiredSpecs.length > 0) for (int i = 0; i < requiredSpecs.length; i++) if (requiredSpecs[i].isExported()) reExportSet.add(requiredSpecs[i].getName());  requiredBundles = new BundleLoaderProxy[required.length]; int[] reexported = new int[required.length]; int reexportIndex = 0; for (int i = 0; i < required.length; i++) { requiredBundles[i] = getLoaderProxy(required[i]); if (reExportSet.contains(required[i].getSymbolicName())) reexported[reexportIndex++] = i; } if (reexportIndex > 0) { reexportTable = new int[reexportIndex]; System.arraycopy(reexported, 0, reexportTable, 0, reexportIndex); } else { reexportTable = null; } requiredSources = new KeyedHashSet(10, false); } else { requiredBundles = null; reexportTable = null; requiredSources = null; }   ExportPackageDescription[] exports = description.getSelectedExports(); if (exports != null && exports.length > 0) { exportedPackages = exports.length > 10 ? (Collection) new HashSet(exports.length) : new ArrayList(exports.length); for (int i = 0; i < exports.length; i++) { if (proxy.forceSourceCreation(exports[i])) { if (!exportedPackages.contains(exports[i].getName())) {    proxy.createPackageSource(exports[i], true); } } exportedPackages.add(exports[i].getName()); } } else { exportedPackages = null; }  org.osgi.framework.Bundle[] fragmentObjects = bundle.getFragments(); BundleDescription[] fragments = new BundleDescription[fragmentObjects == null ? 0 : fragmentObjects.length]; for (int i = 0; i < fragments.length; i++) fragments[i] = ((AbstractBundle) fragmentObjects[i]).getBundleDescription();  if (description.hasDynamicImports()) addDynamicImportPackage(description.getImportPackages());  for (int i = 0; i < fragments.length; i++) if (fragments[i].isResolved() && fragments[i].hasDynamicImports()) addDynamicImportPackage(fragments[i].getImportPackages());   String buddyList = null; try { buddyList = (String) bundle.getBundleData().getManifest().get(Constants.BUDDY_LOADER); } catch (BundleException e) {  } policy = buddyList != null ? new PolicyHandler(this, buddyList) : null;
	protected BundleLoader(BundleHost bundle, BundleLoaderProxy proxy) throws BundleException {		this.bundle = bundle;		this.proxy = proxy;		try {			bundle.getBundleData().open(); /* make sure the BundleData is open */		} catch (IOException e) {			throw new BundleException(Msg.BUNDLE_READ_EXCEPTION, e);		}		initialize(proxy.getBundleDescription());	}