satisfiedCDPs.addAll(newlySatisfiedCDPs);
	private void resolve(ServiceEvent event) {		// if added CDPs		if (event == null) {			// we added a CDP, so check for circularity and mark			// cycles			resolveCycles();			// get list of newly satisfied CDPs and build them			List newlySatisfiedCDPs = resolveSatisfied();			newlySatisfiedCDPs.removeAll(satisfiedCDPs);			if (!newlySatisfiedCDPs.isEmpty()) {				workQueue.enqueueWork(this, BUILD, newlySatisfiedCDPs);				satisfiedCDPs.addAll(newlySatisfiedCDPs);			}		}		// if service registered		else if (event.getType() == ServiceEvent.REGISTERED) {			// dynamic bind			List dynamicBind = selectDynamicBind(event.getServiceReference());			if (!dynamicBind.isEmpty()) {				workQueue.enqueueWork(this, DYNAMICBIND, dynamicBind);			}			// get list of newly satisfied CDPs and build them			List newlySatisfiedCDPs = resolveSatisfied();			newlySatisfiedCDPs.removeAll(satisfiedCDPs);			if (!newlySatisfiedCDPs.isEmpty()) {				workQueue.enqueueWork(this, BUILD, newlySatisfiedCDPs);				satisfiedCDPs.addAll(newlySatisfiedCDPs);			}		}		// if service modified		else if (event.getType() == ServiceEvent.MODIFIED) {			// check for newly unsatisfied components and synchronously			// dispose them			List newlyUnsatisfiedCDPs = (List) ((ArrayList) satisfiedCDPs).clone();			newlyUnsatisfiedCDPs.removeAll(resolveSatisfied());			if (!newlyUnsatisfiedCDPs.isEmpty()) {				satisfiedCDPs.removeAll(newlyUnsatisfiedCDPs);				instanceProcess.disposeComponentConfigs(newlyUnsatisfiedCDPs);			}			// dynamic unbind			// check each satisfied cdp - do we need to unbind			Map dynamicUnBind = selectDynamicUnBind(event.getServiceReference());			if (!dynamicUnBind.isEmpty()) {				instanceProcess.dynamicUnBind(dynamicUnBind);			}			// dynamic bind			List dynamicBind = selectDynamicBind(event.getServiceReference());			if (!dynamicBind.isEmpty()) {				workQueue.enqueueWork(this, DYNAMICBIND, dynamicBind);			}			// get list of newly satisfied CDPs and build them			List newlySatisfiedCDPs = resolveSatisfied();			newlySatisfiedCDPs.removeAll(satisfiedCDPs);			if (!newlySatisfiedCDPs.isEmpty()) {				workQueue.enqueueWork(this, BUILD, newlySatisfiedCDPs);				satisfiedCDPs.addAll(newlySatisfiedCDPs);			}		}		// if service unregistering		else if (event.getType() == ServiceEvent.UNREGISTERING) {			// check for newly unsatisfied components and			// synchronously dispose them			List newlyUnsatisfiedCDPs = (List) ((ArrayList) satisfiedCDPs).clone();			newlyUnsatisfiedCDPs.removeAll(resolveSatisfied());			if (!newlyUnsatisfiedCDPs.isEmpty()) {				satisfiedCDPs.removeAll(newlyUnsatisfiedCDPs);				instanceProcess.disposeComponentConfigs(newlyUnsatisfiedCDPs);			}			// dynamic unbind			Map dynamicUnBind = selectDynamicUnBind(event.getServiceReference());			if (!dynamicUnBind.isEmpty()) {				instanceProcess.dynamicUnBind(dynamicUnBind);			}		}	}