if (curGlobalSingleton == appHandle) curGlobalSingleton = null; else if (curScopedSingleton == appHandle) curScopedSingleton = null; else if (((EclipseAppDescriptor)appHandle.getApplicationDescriptor()).getCardinalityType() == EclipseAppDescriptor.FLAG_CARD_LIMITED) { if (curLimited != null) { ArrayList limited = (ArrayList) curLimited.get(((EclipseAppDescriptor)appHandle.getApplicationDescriptor()).getApplicationId());
if (activeGlobalSingleton == appHandle) activeGlobalSingleton = null; else if (activeScopedSingleton == appHandle) activeScopedSingleton = null; else if (((EclipseAppDescriptor) appHandle.getApplicationDescriptor()).getCardinalityType() == EclipseAppDescriptor.FLAG_CARD_LIMITED) { if (activeLimited != null) { ArrayList limited = (ArrayList) activeLimited.get(((EclipseAppDescriptor) appHandle.getApplicationDescriptor()).getApplicationId());
	synchronized void unlock(EclipseAppHandle appHandle) {		if (curGlobalSingleton == appHandle)			curGlobalSingleton = null;		else if (curScopedSingleton == appHandle)			curScopedSingleton = null;		else if (((EclipseAppDescriptor)appHandle.getApplicationDescriptor()).getCardinalityType() == EclipseAppDescriptor.FLAG_CARD_LIMITED) {			if (curLimited != null) {				ArrayList limited = (ArrayList) curLimited.get(((EclipseAppDescriptor)appHandle.getApplicationDescriptor()).getApplicationId());				if (limited != null)					limited.remove(appHandle);			}		}		if (curMain == appHandle)			curMain = null;		if (curHandles.remove(appHandle))			refreshAppDescriptors(); // only refresh descriptors if we really unlocked something	}