throw be;
throw error;
	protected AbstractBundle installWorkerPrivileged(String location, URLConnection source) throws BundleException {		BundleOperation storage = adaptor.installBundle(location, source);		AbstractBundle bundle;		try {			BundleData bundledata = storage.begin();			bundle = createAndVerifyBundle(bundledata);			try {				// Select the native code paths for the bundle;				// this is not done by the adaptor because this				// should be a static algorithm spec'ed by OSGi				// that we do not allow to be adapted.				String[] nativepaths = selectNativeCode(bundle);				if (nativepaths != null) {					bundledata.installNativeCode(nativepaths);				}				bundle.load();				if (System.getSecurityManager() != null && (bundledata.getType() & (BundleData.TYPE_BOOTCLASSPATH_EXTENSION | BundleData.TYPE_FRAMEWORK_EXTENSION)) != 0) {					// must check for AllPermission before allow a bundle extension to be installed					try {						bundle.hasPermission(new AllPermission());					} catch (SecurityException se) {						throw new BundleException(Msg.formatter.getString("BUNDLE_EXTENSION_PERMISSION"), se); //$NON-NLS-1$					}				}				storage.commit(false);			} catch (BundleException be) {				synchronized (bundles) {					bundle.unload();				}				bundle.close();				throw be;			}			/* bundle has been successfully installed */			bundles.add(bundle);		} catch (BundleException e) {			try {				storage.undo();			} catch (BundleException ee) {				publishFrameworkEvent(FrameworkEvent.ERROR, systemBundle, ee);			}			throw e;		}		return bundle;	}