String[] possibleContributors = strategy.getNamespaceContributors(namespace); for (int i = 0; i < possibleContributors.length; i++) { Contribution contribution = registryObjects.getContribution(possibleContributors[i]); if (contribution.hasChild(id)) { contribution.unlinkChild(id); if (contribution.isEmpty()) registryObjects.removeContribution(possibleContributors[i]); break; } }
registryObjects.unlinkChildFromContributions(id);
	private boolean removeObject(RegistryObject registryObject, boolean isExtensionPoint, Object token) {		if (!checkReadWriteAccess(token, registryObject.shouldPersist()))			throw new IllegalArgumentException("Unauthorized access to the ExtensionRegistry.removeExtension() method. Check if proper access token is supplied."); //$NON-NLS-1$		int id = registryObject.getObjectId();		access.enterWrite();		try {			String namespace;			if (isExtensionPoint)				namespace = removeExtensionPoint(id);			else				namespace = removeExtension(id);			Map removed = new HashMap(1);			removed.put(new Integer(id), registryObject);			registryObjects.removeObjects(removed);			registryObjects.addNavigableObjects(removed);			getDelta(namespace).setObjectManager(registryObjects.createDelegatingObjectManager(removed));			String[] possibleContributors = strategy.getNamespaceContributors(namespace);			for (int i = 0; i < possibleContributors.length; i++) {				Contribution contribution = registryObjects.getContribution(possibleContributors[i]);				if (contribution.hasChild(id)) {					contribution.unlinkChild(id);					if (contribution.isEmpty())						registryObjects.removeContribution(possibleContributors[i]);					break;				}			}			fireRegistryChangeEvent();		} finally {			access.exitWrite();		}		return true;	}