framework.systemBundle.state = AbstractBundle.STOPPING;
	protected void decFWSL(int activeSL) {		if (Debug.DEBUG && Debug.DEBUG_STARTLEVEL) {			Debug.println("SLL: decFWSL: saving activeSL of " + activeSL); //$NON-NLS-1$		}		framework.startLevelManager.saveActiveStartLevel(activeSL);		BundleRepository bundles = framework.bundles;		if (activeSL == 0) { // stopping the framework			framework.systemBundle.state = AbstractBundle.STOPPING;			/* stop all running bundles */			suspendAllBundles(bundles);			unloadAllBundles(bundles);		} else {			// just decrementing the active startlevel - framework is not shutting down			synchronized (bundles) {				// get the list of installed bundles, sorted by startlevel				AbstractBundle[] shutdown = this.getInstalledBundles(bundles);				for (int i = shutdown.length - 1; i >= 0; i--) {					int bsl = shutdown[i].getStartLevel();					if (bsl > activeSL + 1) {						// don't need to mess with bundles with startlevel > the previous active - they should						// already have been stopped						continue;					} else if (bsl <= activeSL) {						// don't need to keep going - we've stopped all we're going to stop						break;					} else if (shutdown[i].isActive()) {						// if bundle is active or starting, then stop the bundle						if (Debug.DEBUG && Debug.DEBUG_STARTLEVEL) {							Debug.println("SLL: stopping bundle " + shutdown[i].getBundleId()); //$NON-NLS-1$						}						framework.suspendBundle(shutdown[i], false);					}				}			}		}	}