.getNamespace());
.getNamespaceIdentifier());
	private IModelConstraint createCustomConstraint(			String className,			IXmlConstraintDescriptor descriptor) throws ConstraintParserException {		IModelConstraint result = null;		Throwable pendingException = null;		String pendingMessage = null;		Bundle bundle = Platform.getBundle(descriptor			.getConfig()			.getDeclaringExtension()			.getNamespace());		// old-style method attribute still supported		String methodName = descriptor.getConfig().getAttribute(			PARAMETER_METHOD);		if (methodName == null) {			// try the new parameter mechanism			methodName = XmlConfig.getParameter(				descriptor.getConfig(),				PARAMETER_METHOD);		}				try {			Class resultType = bundle.loadClass(className);			if (AbstractModelConstraint.class.isAssignableFrom(resultType)) {				// instantiate the class extending AbstractModelConstraint				result = new ConstraintAdapter(					descriptor,					(AbstractModelConstraint)getInstance(resultType));			} else if (IConstraintWithExtractions.class.isAssignableFrom(resultType)){				// adapt the specified constraint to the IModelConstraint interface				result = new ConstraintWithExtractionsAdapter(					descriptor,					(IConstraintWithExtractions)getInstance(resultType));			} else {				// adapt the specified method to the IModelConstraint interface				result = new CustomConstraintAdapter(						descriptor,						resultType,						methodName);			}		} catch (ClassNotFoundException e) {			pendingException = e;			pendingMessage = EMFModelValidationPlugin.getMessage(					EMFModelValidationStatusCodes.DELEGATE_CLASS_NOT_FOUND_MSG,					new Object[] {descriptor.getId(), className});		} catch (NoSuchMethodException e) {			pendingException = e;			pendingMessage = EMFModelValidationPlugin.getMessage(					EMFModelValidationStatusCodes.DELEGATE_METHOD_NOT_FOUND_MSG,					new Object[] {descriptor.getId(), className, methodName});		} catch (InstantiationException e) {			pendingException = e;			pendingMessage = EMFModelValidationPlugin.getMessage(					EMFModelValidationStatusCodes.DELEGATE_INSTANTIATION_MSG,					new Object[] {descriptor.getId(), className});		} catch (IllegalAccessException e) {			pendingException = e;			pendingMessage = EMFModelValidationPlugin.getMessage(					EMFModelValidationStatusCodes.DELEGATE_METHOD_INACCESSIBLE_MSG,					new Object[] {descriptor.getId(), className, methodName});		}		if (pendingException != null) {			Trace.catching(getClass(), "createCustomConstraint", pendingException); //$NON-NLS-1$			Log.error(					EMFModelValidationStatusCodes.CONSTRAINT_NOT_INITED,					pendingMessage,					pendingException);						ConstraintParserException cpe = new ConstraintParserException(					pendingException.getLocalizedMessage(),					pendingException);						Trace.throwing(getClass(), "createCustomConstraint", cpe); //$NON-NLS-1$			throw cpe;		}				return result;	}