	public void dispose() {
		if (scp == null) {
			return;
		}
		if (Activator.DEBUG) {
			Activator.log.debug("ComponentInstanceImpl.dispose(): disposing instance of component " + scp.name, null); 
		}
		if (!scp.isComponentFactory() && scp.serviceComponent.factory != null) {
			scp.serviceComponent.componentProps.removeElement(scp);
			Vector toDispose = new Vector(1);
			toDispose.addElement(scp);
			InstanceProcess.resolver.disposeComponentConfigs(toDispose, ComponentConstants.DEACTIVATION_REASON_DISPOSED);
			if (scp != null) {
				scp.setState(Component.STATE_DISPOSED);
				scp = null;
			}
		} else {
			scp.dispose(this, ComponentConstants.DEACTIVATION_REASON_DISPOSED);
		}
		freeServiceReferences();
		componentContext = null;
		instance = null;
	}

	public void dispose() {
		if (scp == null) {
			return;
		}
		if (Activator.DEBUG) {
			Activator.log.debug("ComponentInstanceImpl.dispose(): disposing instance of component " + scp.name, null); 
		}
		if (!scp.isComponentFactory() && scp.serviceComponent.factory != null) {
			scp.serviceComponent.componentProps.removeElement(scp);
			Vector toDispose = new Vector(1);
			toDispose.addElement(scp);
			InstanceProcess.resolver.disposeComponentConfigs(toDispose, ComponentConstants.DEACTIVATION_REASON_DISPOSED);
			if (scp != null) {
				scp.setState(Component.STATE_DISPOSED);
			}
		} else {
			scp.dispose(this, ComponentConstants.DEACTIVATION_REASON_DISPOSED);
		}
		freeServiceReferences();
		scp = null;
		componentContext = null;
		instance = null;
	}
