protected void startWorker(boolean persistent) throws BundleException { if (persistent) {
protected void startWorker(int options) throws BundleException { if ((options & START_TRANSIENT) == 0) {
	protected void startWorker(boolean persistent) throws BundleException {		if (persistent) {			setStatus(Constants.BUNDLE_STARTED, true);		}		long start = 0;		if (framework.active) {			if ((state & (STARTING | ACTIVE)) != 0) {				return;			}			boolean shouldStart = false;			try {				if (state == INSTALLED) {					if (!framework.packageAdmin.resolveBundles(new Bundle[] {this})) {						throw new BundleException(getResolutionFailureMessage());					}				}				if (Debug.DEBUG && Debug.DEBUG_GENERAL) {					Debug.println("Bundle: Active sl = " + framework.startLevelManager.getStartLevel() + "; Bundle " + getBundleId() + " sl = " + getStartLevel()); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$				}				shouldStart = getStartLevel() <= framework.startLevelManager.getStartLevel();				if (shouldStart) {					//STARTUP TIMING Start here										if (Debug.DEBUG) {						BundleWatcher bundleStats = framework.adaptor.getBundleWatcher();						if (bundleStats != null)							bundleStats.watchBundle(this, BundleWatcher.START_ACTIVATION);						if (Debug.DEBUG_BUNDLE_TIME) {							start = System.currentTimeMillis();							System.out.println("Starting " + getSymbolicName()); //$NON-NLS-1$						}					}					context = createContext();					state = STARTING;					framework.publishBundleEvent(BundleEvent.STARTING, this);					try {						context.start();						if (framework.active) {							state = ACTIVE;							if (Debug.DEBUG && Debug.DEBUG_GENERAL) {								Debug.println("->started " + this); //$NON-NLS-1$							}							framework.publishBundleEvent(BundleEvent.STARTED, this);						}					} catch (BundleException e) {						context.close();						context = null;						state = RESOLVED;						throw e;					}					if (state == UNINSTALLED) {						context.close();						context = null;						throw new BundleException(NLS.bind(Msg.BUNDLE_UNINSTALLED_EXCEPTION, getBundleData().getLocation())); 					}				}			} finally {				if (Debug.DEBUG && shouldStart) {					BundleWatcher bundleStats = framework.adaptor.getBundleWatcher();					if (bundleStats != null)						bundleStats.watchBundle(this, BundleWatcher.END_ACTIVATION);					if (Debug.DEBUG_BUNDLE_TIME)						System.out.println("End starting " + getSymbolicName() + " " + (System.currentTimeMillis() - start)); //$NON-NLS-1$ //$NON-NLS-2$				}			}		}	}