Bug 567814 - [Validation] The EMF validation framework reports multiple
identical validation problems

Changes after review over test

Change-Id: I99fdcb642af4bde9594c863f634cec91b60777b7
Signed-off-by: Gianina Sadi <Gianina.Sadi@elektrobit.com>
diff --git a/examples/org.eclipse.sphinx.examples.hummingbird20.edit/icons/full/obj16/CustomApplication.gif b/examples/org.eclipse.sphinx.examples.hummingbird20.edit/icons/full/obj16/CustomApplication.gif
new file mode 100644
index 0000000..498364f
--- /dev/null
+++ b/examples/org.eclipse.sphinx.examples.hummingbird20.edit/icons/full/obj16/CustomApplication.gif
Binary files differ
diff --git a/examples/org.eclipse.sphinx.examples.hummingbird20.edit/plugin.properties b/examples/org.eclipse.sphinx.examples.hummingbird20.edit/plugin.properties
index eba5a0f..84799c5 100644
--- a/examples/org.eclipse.sphinx.examples.hummingbird20.edit/plugin.properties
+++ b/examples/org.eclipse.sphinx.examples.hummingbird20.edit/plugin.properties
@@ -106,3 +106,4 @@
 _UI_LanguageCultureName_enUS_literal = en-US

 _UI_LanguageCultureName_deDE_literal = de-DE

 _UI_LanguageCultureName_frFR_literal = fr-FR

+_UI_CustomApplication_type = Custom Application

diff --git a/examples/org.eclipse.sphinx.examples.hummingbird20.edit/src-gen/org/eclipse/sphinx/examples/hummingbird20/instancemodel/edit/CustomApplicationItemProvider.java b/examples/org.eclipse.sphinx.examples.hummingbird20.edit/src-gen/org/eclipse/sphinx/examples/hummingbird20/instancemodel/edit/CustomApplicationItemProvider.java
new file mode 100644
index 0000000..de7f407
--- /dev/null
+++ b/examples/org.eclipse.sphinx.examples.hummingbird20.edit/src-gen/org/eclipse/sphinx/examples/hummingbird20/instancemodel/edit/CustomApplicationItemProvider.java
@@ -0,0 +1,127 @@
+/**
+ * <copyright>
+ * 
+ * Copyright (c) 2008-2014 See4sys, itemis and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: 
+ *     See4sys - Initial API and implementation
+ *     itemis - Enhancements and maintenance
+ * 
+ * </copyright>
+ */
+package org.eclipse.sphinx.examples.hummingbird20.instancemodel.edit;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.StyledString;
+
+import org.eclipse.sphinx.examples.hummingbird20.instancemodel.CustomApplication;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.sphinx.examples.hummingbird20.instancemodel.CustomApplication} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class CustomApplicationItemProvider extends ApplicationItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public CustomApplicationItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This returns CustomApplication.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/CustomApplication")); //$NON-NLS-1$
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		return ((StyledString)getStyledText(object)).getString();
+	}
+
+	/**
+	 * This returns the label styled text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getStyledText(Object object) {
+		String label = ((CustomApplication)object).getName();
+    	StyledString styledLabel = new StyledString();
+		if (label == null || label.length() == 0) {
+			styledLabel.append(getString("_UI_CustomApplication_type"), StyledString.Style.QUALIFIER_STYLER);  //$NON-NLS-1$
+		} else {
+			styledLabel.append(getString("_UI_CustomApplication_type"), StyledString.Style.QUALIFIER_STYLER).append(" " + label); //$NON-NLS-1$ //$NON-NLS-2$
+		}
+		return styledLabel;
+	}
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/examples/org.eclipse.sphinx.examples.hummingbird20.edit/src-gen/org/eclipse/sphinx/examples/hummingbird20/instancemodel/edit/InstanceModel20ItemProviderAdapterFactory.java b/examples/org.eclipse.sphinx.examples.hummingbird20.edit/src-gen/org/eclipse/sphinx/examples/hummingbird20/instancemodel/edit/InstanceModel20ItemProviderAdapterFactory.java
index 279cb04..106e33b 100644
--- a/examples/org.eclipse.sphinx.examples.hummingbird20.edit/src-gen/org/eclipse/sphinx/examples/hummingbird20/instancemodel/edit/InstanceModel20ItemProviderAdapterFactory.java
+++ b/examples/org.eclipse.sphinx.examples.hummingbird20.edit/src-gen/org/eclipse/sphinx/examples/hummingbird20/instancemodel/edit/InstanceModel20ItemProviderAdapterFactory.java
@@ -225,6 +225,29 @@
 	}

 

 	/**

+	 * This keeps track of the one adapter used for all {@link org.eclipse.sphinx.examples.hummingbird20.instancemodel.CustomApplication} instances.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected CustomApplicationItemProvider customApplicationItemProvider;

+

+	/**

+	 * This creates an adapter for a {@link org.eclipse.sphinx.examples.hummingbird20.instancemodel.CustomApplication}.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public Adapter createCustomApplicationAdapter() {

+		if (customApplicationItemProvider == null) {

+			customApplicationItemProvider = new CustomApplicationItemProvider(this);

+		}

+

+		return customApplicationItemProvider;

+	}

+

+	/**

 	 * This returns the root adapter factory that contains this factory.

 	 * <!-- begin-user-doc --> <!-- end-user-doc -->

 	 * @generated

@@ -328,6 +351,7 @@
 		if (parameterValueItemProvider != null) parameterValueItemProvider.dispose();

 		if (parameterExpressionItemProvider != null) parameterExpressionItemProvider.dispose();

 		if (formulaItemProvider != null) formulaItemProvider.dispose();

+		if (customApplicationItemProvider != null) customApplicationItemProvider.dispose();

 	}

 

 }

diff --git a/examples/org.eclipse.sphinx.examples.hummingbird20/model/InstanceModel20XMI.xsd b/examples/org.eclipse.sphinx.examples.hummingbird20/model/InstanceModel20XMI.xsd
index 67105e4..66b21af 100644
--- a/examples/org.eclipse.sphinx.examples.hummingbird20/model/InstanceModel20XMI.xsd
+++ b/examples/org.eclipse.sphinx.examples.hummingbird20/model/InstanceModel20XMI.xsd
@@ -143,4 +143,10 @@
     <xsd:attribute name="value" type="xsd:string"/>

   </xsd:complexType>

   <xsd:element name="Formula" type="im:Formula"/>

+  <xsd:complexType name="CustomApplication">

+    <xsd:complexContent>

+      <xsd:extension base="im:Application"/>

+    </xsd:complexContent>

+  </xsd:complexType>

+  <xsd:element name="CustomApplication" type="im:CustomApplication"/>

 </xsd:schema>

diff --git a/examples/org.eclipse.sphinx.examples.hummingbird20/model/hummingbird20.ecore b/examples/org.eclipse.sphinx.examples.hummingbird20/model/hummingbird20.ecore
index 8d9e742..69dcf44 100644
--- a/examples/org.eclipse.sphinx.examples.hummingbird20/model/hummingbird20.ecore
+++ b/examples/org.eclipse.sphinx.examples.hummingbird20/model/hummingbird20.ecore
@@ -277,5 +277,6 @@
     <eClassifiers xsi:type="ecore:EClass" name="Formula">

       <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/>

     </eClassifiers>

+    <eClassifiers xsi:type="ecore:EClass" name="CustomApplication" eSuperTypes="#//instancemodel/Application"/>

   </eSubpackages>

 </ecore:EPackage>

diff --git a/examples/org.eclipse.sphinx.examples.hummingbird20/model/hummingbird20.genmodel b/examples/org.eclipse.sphinx.examples.hummingbird20/model/hummingbird20.genmodel
index 47e975a..2dce93a 100644
--- a/examples/org.eclipse.sphinx.examples.hummingbird20/model/hummingbird20.genmodel
+++ b/examples/org.eclipse.sphinx.examples.hummingbird20/model/hummingbird20.genmodel
@@ -139,6 +139,7 @@
       <genClasses ecoreClass="hummingbird20.ecore#//instancemodel/Formula">

         <genFeatures createChild="false" ecoreFeature="ecore:EAttribute hummingbird20.ecore#//instancemodel/Formula/value"/>

       </genClasses>

+      <genClasses ecoreClass="hummingbird20.ecore#//instancemodel/CustomApplication"/>

     </nestedGenPackages>

   </genPackages>

 </genmodel:GenModel>

diff --git a/examples/org.eclipse.sphinx.examples.hummingbird20/src-gen/org/eclipse/sphinx/examples/hummingbird20/instancemodel/CustomApplication.java b/examples/org.eclipse.sphinx.examples.hummingbird20/src-gen/org/eclipse/sphinx/examples/hummingbird20/instancemodel/CustomApplication.java
new file mode 100644
index 0000000..24fa346
--- /dev/null
+++ b/examples/org.eclipse.sphinx.examples.hummingbird20/src-gen/org/eclipse/sphinx/examples/hummingbird20/instancemodel/CustomApplication.java
@@ -0,0 +1,30 @@
+/**
+ * <copyright>
+ * 
+ * Copyright (c) 2008-2014 See4sys, itemis and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: 
+ *     See4sys - Initial API and implementation
+ *     itemis - Enhancements and maintenance
+ * 
+ * </copyright>
+ */
+package org.eclipse.sphinx.examples.hummingbird20.instancemodel;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Custom Application</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.sphinx.examples.hummingbird20.instancemodel.InstanceModel20Package#getCustomApplication()
+ * @model
+ * @generated
+ */
+public interface CustomApplication extends Application {
+} // CustomApplication
diff --git a/examples/org.eclipse.sphinx.examples.hummingbird20/src-gen/org/eclipse/sphinx/examples/hummingbird20/instancemodel/InstanceModel20Factory.java b/examples/org.eclipse.sphinx.examples.hummingbird20/src-gen/org/eclipse/sphinx/examples/hummingbird20/instancemodel/InstanceModel20Factory.java
index 53825f0..d9d6fd5 100644
--- a/examples/org.eclipse.sphinx.examples.hummingbird20/src-gen/org/eclipse/sphinx/examples/hummingbird20/instancemodel/InstanceModel20Factory.java
+++ b/examples/org.eclipse.sphinx.examples.hummingbird20/src-gen/org/eclipse/sphinx/examples/hummingbird20/instancemodel/InstanceModel20Factory.java
@@ -80,6 +80,15 @@
 	Formula createFormula();

 

 	/**

+	 * Returns a new object of class '<em>Custom Application</em>'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return a new object of class '<em>Custom Application</em>'.

+	 * @generated

+	 */

+	CustomApplication createCustomApplication();

+

+	/**

 	 * Returns the package supported by this factory.

 	 * <!-- begin-user-doc --> <!-- end-user-doc -->

 	 * @return the package supported by this factory.

diff --git a/examples/org.eclipse.sphinx.examples.hummingbird20/src-gen/org/eclipse/sphinx/examples/hummingbird20/instancemodel/InstanceModel20Package.java b/examples/org.eclipse.sphinx.examples.hummingbird20/src-gen/org/eclipse/sphinx/examples/hummingbird20/instancemodel/InstanceModel20Package.java
index 36d1dc3..19de8f3 100644
--- a/examples/org.eclipse.sphinx.examples.hummingbird20/src-gen/org/eclipse/sphinx/examples/hummingbird20/instancemodel/InstanceModel20Package.java
+++ b/examples/org.eclipse.sphinx.examples.hummingbird20/src-gen/org/eclipse/sphinx/examples/hummingbird20/instancemodel/InstanceModel20Package.java
@@ -384,6 +384,79 @@
 	int FORMULA_FEATURE_COUNT = 1;

 

 	/**

+	 * The meta object id for the '{@link org.eclipse.sphinx.examples.hummingbird20.instancemodel.impl.CustomApplicationImpl <em>Custom Application</em>}' class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see org.eclipse.sphinx.examples.hummingbird20.instancemodel.impl.CustomApplicationImpl

+	 * @see org.eclipse.sphinx.examples.hummingbird20.instancemodel.impl.InstanceModel20PackageImpl#getCustomApplication()

+	 * @generated

+	 */

+	int CUSTOM_APPLICATION = 6;

+

+	/**

+	 * The feature id for the '<em><b>Name</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int CUSTOM_APPLICATION__NAME = APPLICATION__NAME;

+

+	/**

+	 * The feature id for the '<em><b>Description</b></em>' containment reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int CUSTOM_APPLICATION__DESCRIPTION = APPLICATION__DESCRIPTION;

+

+	/**

+	 * The feature id for the '<em><b>Components</b></em>' containment reference list.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int CUSTOM_APPLICATION__COMPONENTS = APPLICATION__COMPONENTS;

+

+	/**

+	 * The feature id for the '<em><b>Mixed</b></em>' attribute list.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int CUSTOM_APPLICATION__MIXED = APPLICATION__MIXED;

+

+	/**

+	 * The feature id for the '<em><b>XSI Schema Location</b></em>' map.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int CUSTOM_APPLICATION__XSI_SCHEMA_LOCATION = APPLICATION__XSI_SCHEMA_LOCATION;

+

+	/**

+	 * The feature id for the '<em><b>Mixed Outer Content</b></em>' attribute list.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int CUSTOM_APPLICATION__MIXED_OUTER_CONTENT = APPLICATION__MIXED_OUTER_CONTENT;

+

+	/**

+	 * The number of structural features of the '<em>Custom Application</em>' class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int CUSTOM_APPLICATION_FEATURE_COUNT = APPLICATION_FEATURE_COUNT + 0;

+

+	/**

 	 * Returns the meta object for class '{@link org.eclipse.sphinx.examples.hummingbird20.instancemodel.Application <em>Application</em>}'.

 	 * <!-- begin-user-doc --> <!-- end-user-doc -->

 	 * @return the meta object for class '<em>Application</em>'.

@@ -620,6 +693,16 @@
 	EAttribute getFormula_Value();

 

 	/**

+	 * Returns the meta object for class '{@link org.eclipse.sphinx.examples.hummingbird20.instancemodel.CustomApplication <em>Custom Application</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for class '<em>Custom Application</em>'.

+	 * @see org.eclipse.sphinx.examples.hummingbird20.instancemodel.CustomApplication

+	 * @generated

+	 */

+	EClass getCustomApplication();

+

+	/**

 	 * Returns the factory that creates the instances of the model.

 	 * <!-- begin-user-doc --> <!-- end-user-doc -->

 	 * @return the factory that creates the instances of the model.

@@ -827,6 +910,16 @@
 		 */

 		EAttribute FORMULA__VALUE = eINSTANCE.getFormula_Value();

 

+		/**

+		 * The meta object literal for the '{@link org.eclipse.sphinx.examples.hummingbird20.instancemodel.impl.CustomApplicationImpl <em>Custom Application</em>}' class.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @see org.eclipse.sphinx.examples.hummingbird20.instancemodel.impl.CustomApplicationImpl

+		 * @see org.eclipse.sphinx.examples.hummingbird20.instancemodel.impl.InstanceModel20PackageImpl#getCustomApplication()

+		 * @generated

+		 */

+		EClass CUSTOM_APPLICATION = eINSTANCE.getCustomApplication();

+

 	}

 

 } // InstanceModel20Package

diff --git a/examples/org.eclipse.sphinx.examples.hummingbird20/src-gen/org/eclipse/sphinx/examples/hummingbird20/instancemodel/impl/CustomApplicationImpl.java b/examples/org.eclipse.sphinx.examples.hummingbird20/src-gen/org/eclipse/sphinx/examples/hummingbird20/instancemodel/impl/CustomApplicationImpl.java
new file mode 100644
index 0000000..6c4b435
--- /dev/null
+++ b/examples/org.eclipse.sphinx.examples.hummingbird20/src-gen/org/eclipse/sphinx/examples/hummingbird20/instancemodel/impl/CustomApplicationImpl.java
@@ -0,0 +1,50 @@
+/**
+ * <copyright>
+ * 
+ * Copyright (c) 2008-2014 See4sys, itemis and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: 
+ *     See4sys - Initial API and implementation
+ *     itemis - Enhancements and maintenance
+ * 
+ * </copyright>
+ */
+package org.eclipse.sphinx.examples.hummingbird20.instancemodel.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.sphinx.examples.hummingbird20.instancemodel.CustomApplication;
+import org.eclipse.sphinx.examples.hummingbird20.instancemodel.InstanceModel20Package;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Custom Application</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class CustomApplicationImpl extends ApplicationImpl implements CustomApplication {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected CustomApplicationImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return InstanceModel20Package.Literals.CUSTOM_APPLICATION;
+	}
+
+}
diff --git a/examples/org.eclipse.sphinx.examples.hummingbird20/src-gen/org/eclipse/sphinx/examples/hummingbird20/instancemodel/impl/InstanceModel20FactoryImpl.java b/examples/org.eclipse.sphinx.examples.hummingbird20/src-gen/org/eclipse/sphinx/examples/hummingbird20/instancemodel/impl/InstanceModel20FactoryImpl.java
index 163f846..203d99d 100644
--- a/examples/org.eclipse.sphinx.examples.hummingbird20/src-gen/org/eclipse/sphinx/examples/hummingbird20/instancemodel/impl/InstanceModel20FactoryImpl.java
+++ b/examples/org.eclipse.sphinx.examples.hummingbird20/src-gen/org/eclipse/sphinx/examples/hummingbird20/instancemodel/impl/InstanceModel20FactoryImpl.java
@@ -20,10 +20,10 @@
 import org.eclipse.emf.ecore.EPackage;

 import org.eclipse.emf.ecore.impl.EFactoryImpl;

 import org.eclipse.emf.ecore.plugin.EcorePlugin;

-import org.eclipse.sphinx.examples.hummingbird20.instancemodel.*;

 import org.eclipse.sphinx.examples.hummingbird20.instancemodel.Application;

 import org.eclipse.sphinx.examples.hummingbird20.instancemodel.Component;

 import org.eclipse.sphinx.examples.hummingbird20.instancemodel.Connection;

+import org.eclipse.sphinx.examples.hummingbird20.instancemodel.CustomApplication;

 import org.eclipse.sphinx.examples.hummingbird20.instancemodel.Formula;

 import org.eclipse.sphinx.examples.hummingbird20.instancemodel.InstanceModel20Factory;

 import org.eclipse.sphinx.examples.hummingbird20.instancemodel.InstanceModel20Package;

@@ -32,30 +32,31 @@
 

 /**

  * <!-- begin-user-doc --> An implementation of the model <b>Factory</b>. <!-- end-user-doc -->

+ *

  * @generated

  */

 public class InstanceModel20FactoryImpl extends EFactoryImpl implements InstanceModel20Factory {

 	/**

-	 * Creates the default factory implementation.

-	 * <!-- begin-user-doc --> <!-- end-user-doc -->

+	 * Creates the default factory implementation. <!-- begin-user-doc --> <!-- end-user-doc -->

+	 *

 	 * @generated

 	 */

 	public static InstanceModel20Factory init() {

 		try {

-			InstanceModel20Factory theInstanceModel20Factory = (InstanceModel20Factory)EPackage.Registry.INSTANCE.getEFactory(InstanceModel20Package.eNS_URI);

+			InstanceModel20Factory theInstanceModel20Factory = (InstanceModel20Factory) EPackage.Registry.INSTANCE

+					.getEFactory(InstanceModel20Package.eNS_URI);

 			if (theInstanceModel20Factory != null) {

 				return theInstanceModel20Factory;

 			}

-		}

-		catch (Exception exception) {

+		} catch (Exception exception) {

 			EcorePlugin.INSTANCE.log(exception);

 		}

 		return new InstanceModel20FactoryImpl();

 	}

 

 	/**

-	 * Creates an instance of the factory.

-	 * <!-- begin-user-doc --> <!-- end-user-doc -->

+	 * Creates an instance of the factory. <!-- begin-user-doc --> <!-- end-user-doc -->

+	 *

 	 * @generated

 	 */

 	public InstanceModel20FactoryImpl() {

@@ -64,24 +65,34 @@
 

 	/**

 	 * <!-- begin-user-doc --> <!-- end-user-doc -->

+	 *

 	 * @generated

 	 */

 	@Override

 	public EObject create(EClass eClass) {

 		switch (eClass.getClassifierID()) {

-			case InstanceModel20Package.APPLICATION: return createApplication();

-			case InstanceModel20Package.COMPONENT: return createComponent();

-			case InstanceModel20Package.CONNECTION: return createConnection();

-			case InstanceModel20Package.PARAMETER_VALUE: return createParameterValue();

-			case InstanceModel20Package.PARAMETER_EXPRESSION: return createParameterExpression();

-			case InstanceModel20Package.FORMULA: return createFormula();

-			default:

-				throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier"); //$NON-NLS-1$ //$NON-NLS-2$

+		case InstanceModel20Package.APPLICATION:

+			return createApplication();

+		case InstanceModel20Package.COMPONENT:

+			return createComponent();

+		case InstanceModel20Package.CONNECTION:

+			return createConnection();

+		case InstanceModel20Package.PARAMETER_VALUE:

+			return createParameterValue();

+		case InstanceModel20Package.PARAMETER_EXPRESSION:

+			return createParameterExpression();

+		case InstanceModel20Package.FORMULA:

+			return createFormula();

+		case InstanceModel20Package.CUSTOM_APPLICATION:

+			return createCustomApplication();

+		default:

+			throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier"); //$NON-NLS-1$ //$NON-NLS-2$

 		}

 	}

 

 	/**

 	 * <!-- begin-user-doc --> <!-- end-user-doc -->

+	 *

 	 * @generated

 	 */

 	@Override

@@ -92,6 +103,7 @@
 

 	/**

 	 * <!-- begin-user-doc --> <!-- end-user-doc -->

+	 *

 	 * @generated

 	 */

 	@Override

@@ -102,6 +114,7 @@
 

 	/**

 	 * <!-- begin-user-doc --> <!-- end-user-doc -->

+	 *

 	 * @generated

 	 */

 	@Override

@@ -112,6 +125,7 @@
 

 	/**

 	 * <!-- begin-user-doc --> <!-- end-user-doc -->

+	 *

 	 * @generated

 	 */

 	@Override

@@ -122,6 +136,7 @@
 

 	/**

 	 * <!-- begin-user-doc --> <!-- end-user-doc -->

+	 *

 	 * @generated

 	 */

 	@Override

@@ -132,6 +147,7 @@
 

 	/**

 	 * <!-- begin-user-doc --> <!-- end-user-doc -->

+	 *

 	 * @generated

 	 */

 	@Override

@@ -142,15 +158,28 @@
 

 	/**

 	 * <!-- begin-user-doc --> <!-- end-user-doc -->

+	 *

 	 * @generated

 	 */

 	@Override

-	public InstanceModel20Package getInstanceModel20Package() {

-		return (InstanceModel20Package)getEPackage();

+	public CustomApplication createCustomApplication() {

+		CustomApplicationImpl customApplication = new CustomApplicationImpl();

+		return customApplication;

 	}

 

 	/**

 	 * <!-- begin-user-doc --> <!-- end-user-doc -->

+	 *

+	 * @generated

+	 */

+	@Override

+	public InstanceModel20Package getInstanceModel20Package() {

+		return (InstanceModel20Package) getEPackage();

+	}

+

+	/**

+	 * <!-- begin-user-doc --> <!-- end-user-doc -->

+	 *

 	 * @deprecated

 	 * @generated

 	 */

diff --git a/examples/org.eclipse.sphinx.examples.hummingbird20/src-gen/org/eclipse/sphinx/examples/hummingbird20/instancemodel/impl/InstanceModel20PackageImpl.java b/examples/org.eclipse.sphinx.examples.hummingbird20/src-gen/org/eclipse/sphinx/examples/hummingbird20/instancemodel/impl/InstanceModel20PackageImpl.java
index c70b726..0419a66 100644
--- a/examples/org.eclipse.sphinx.examples.hummingbird20/src-gen/org/eclipse/sphinx/examples/hummingbird20/instancemodel/impl/InstanceModel20PackageImpl.java
+++ b/examples/org.eclipse.sphinx.examples.hummingbird20/src-gen/org/eclipse/sphinx/examples/hummingbird20/instancemodel/impl/InstanceModel20PackageImpl.java
@@ -27,6 +27,7 @@
 import org.eclipse.sphinx.examples.hummingbird20.instancemodel.Application;

 import org.eclipse.sphinx.examples.hummingbird20.instancemodel.Component;

 import org.eclipse.sphinx.examples.hummingbird20.instancemodel.Connection;

+import org.eclipse.sphinx.examples.hummingbird20.instancemodel.CustomApplication;

 import org.eclipse.sphinx.examples.hummingbird20.instancemodel.Formula;

 import org.eclipse.sphinx.examples.hummingbird20.instancemodel.InstanceModel20Factory;

 import org.eclipse.sphinx.examples.hummingbird20.instancemodel.InstanceModel20Package;

@@ -77,6 +78,13 @@
 	private EClass formulaEClass = null;

 

 	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	private EClass customApplicationEClass = null;

+

+	/**

 	 * Creates an instance of the model <b>Package</b>, registered with {@link org.eclipse.emf.ecore.EPackage.Registry

 	 * EPackage.Registry} by the package package URI value.

 	 * <p>

@@ -115,7 +123,8 @@
 		if (isInited) return (InstanceModel20Package)EPackage.Registry.INSTANCE.getEPackage(InstanceModel20Package.eNS_URI);

 

 		// Obtain or create and register package

-		InstanceModel20PackageImpl theInstanceModel20Package = (InstanceModel20PackageImpl)(EPackage.Registry.INSTANCE.get(eNS_URI) instanceof InstanceModel20PackageImpl ? EPackage.Registry.INSTANCE.get(eNS_URI) : new InstanceModel20PackageImpl());

+		Object registeredInstanceModel20Package = EPackage.Registry.INSTANCE.get(eNS_URI);

+		InstanceModel20PackageImpl theInstanceModel20Package = registeredInstanceModel20Package instanceof InstanceModel20PackageImpl ? (InstanceModel20PackageImpl)registeredInstanceModel20Package : new InstanceModel20PackageImpl();

 

 		isInited = true;

 

@@ -124,8 +133,10 @@
 		XMLTypePackage.eINSTANCE.eClass();

 

 		// Obtain or create and register interdependencies

-		Common20PackageImpl theCommon20Package = (Common20PackageImpl)(EPackage.Registry.INSTANCE.getEPackage(Common20Package.eNS_URI) instanceof Common20PackageImpl ? EPackage.Registry.INSTANCE.getEPackage(Common20Package.eNS_URI) : Common20Package.eINSTANCE);

-		TypeModel20PackageImpl theTypeModel20Package = (TypeModel20PackageImpl)(EPackage.Registry.INSTANCE.getEPackage(TypeModel20Package.eNS_URI) instanceof TypeModel20PackageImpl ? EPackage.Registry.INSTANCE.getEPackage(TypeModel20Package.eNS_URI) : TypeModel20Package.eINSTANCE);

+		Object registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Common20Package.eNS_URI);

+		Common20PackageImpl theCommon20Package = (Common20PackageImpl)(registeredPackage instanceof Common20PackageImpl ? registeredPackage : Common20Package.eINSTANCE);

+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(TypeModel20Package.eNS_URI);

+		TypeModel20PackageImpl theTypeModel20Package = (TypeModel20PackageImpl)(registeredPackage instanceof TypeModel20PackageImpl ? registeredPackage : TypeModel20Package.eINSTANCE);

 

 		// Create package meta-data objects

 		theInstanceModel20Package.createPackageContents();

@@ -140,7 +151,6 @@
 		// Mark meta-data to indicate it can't be changed

 		theInstanceModel20Package.freeze();

 

-  

 		// Update the registry and return the package

 		EPackage.Registry.INSTANCE.put(InstanceModel20Package.eNS_URI, theInstanceModel20Package);

 		return theInstanceModel20Package;

@@ -354,6 +364,16 @@
 	}

 

 	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public EClass getCustomApplication() {

+		return customApplicationEClass;

+	}

+

+	/**

 	 * <!-- begin-user-doc --> <!-- end-user-doc -->

 	 * @generated

 	 */

@@ -407,6 +427,8 @@
 

 		formulaEClass = createEClass(FORMULA);

 		createEAttribute(formulaEClass, FORMULA__VALUE);

+

+		customApplicationEClass = createEClass(CUSTOM_APPLICATION);

 	}

 

 	/**

@@ -444,6 +466,7 @@
 		componentEClass.getESuperTypes().add(theCommon20Package.getIdentifiable());

 		connectionEClass.getESuperTypes().add(theCommon20Package.getIdentifiable());

 		parameterValueEClass.getESuperTypes().add(theCommon20Package.getIdentifiable());

+		customApplicationEClass.getESuperTypes().add(this.getApplication());

 

 		// Initialize classes and features; add operations and parameters

 		initEClass(applicationEClass, Application.class, "Application", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$

@@ -475,6 +498,8 @@
 		initEClass(formulaEClass, Formula.class, "Formula", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$

 		initEAttribute(getFormula_Value(), theEcorePackage.getEString(), "value", null, 0, 1, Formula.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$

 

+		initEClass(customApplicationEClass, CustomApplication.class, "CustomApplication", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$

+

 		// Create resource

 		createResource(eNS_URI);

 

@@ -492,52 +517,52 @@
 	 * @generated

 	 */

 	protected void createExtendedMetaDataAnnotations() {

-		String source = "http:///org/eclipse/emf/ecore/util/ExtendedMetaData"; //$NON-NLS-1$	

+		String source = "http:///org/eclipse/emf/ecore/util/ExtendedMetaData"; //$NON-NLS-1$

 		addAnnotation

-		  (applicationEClass, 

-		   source, 

+		  (applicationEClass,

+		   source,

 		   new String[] {

-			 "kind", "mixed" //$NON-NLS-1$ //$NON-NLS-2$

-		   });	

+			   "kind", "mixed" //$NON-NLS-1$ //$NON-NLS-2$

+		   });

 		addAnnotation

-		  (getApplication_Mixed(), 

-		   source, 

+		  (getApplication_Mixed(),

+		   source,

 		   new String[] {

-			 "name", ":mixed", //$NON-NLS-1$ //$NON-NLS-2$

-			 "kind", "elementWildcard" //$NON-NLS-1$ //$NON-NLS-2$

-		   });	

+			   "name", ":mixed", //$NON-NLS-1$ //$NON-NLS-2$

+			   "kind", "elementWildcard" //$NON-NLS-1$ //$NON-NLS-2$

+		   });

 		addAnnotation

-		  (getApplication_XSISchemaLocation(), 

-		   source, 

+		  (getApplication_XSISchemaLocation(),

+		   source,

 		   new String[] {

-			 "name", "xsi:schemaLocation", //$NON-NLS-1$ //$NON-NLS-2$

-			 "kind", "element" //$NON-NLS-1$ //$NON-NLS-2$

-		   });	

+			   "name", "xsi:schemaLocation", //$NON-NLS-1$ //$NON-NLS-2$

+			   "kind", "element" //$NON-NLS-1$ //$NON-NLS-2$

+		   });

 		addAnnotation

-		  (getApplication_MixedOuterContent(), 

-		   source, 

+		  (getApplication_MixedOuterContent(),

+		   source,

 		   new String[] {

-			 "kind", "elementWildcard", //$NON-NLS-1$ //$NON-NLS-2$

-			 "wildcards", "http://www.eclipse.org/emf/2003/XMLType" //$NON-NLS-1$ //$NON-NLS-2$

-		   });	

+			   "kind", "elementWildcard", //$NON-NLS-1$ //$NON-NLS-2$

+			   "wildcards", "http://www.eclipse.org/emf/2003/XMLType" //$NON-NLS-1$ //$NON-NLS-2$

+		   });

 		addAnnotation

-		  (parameterExpressionEClass, 

-		   source, 

+		  (parameterExpressionEClass,

+		   source,

 		   new String[] {

-			 "kind", "mixed" //$NON-NLS-1$ //$NON-NLS-2$

-		   });	

+			   "kind", "mixed" //$NON-NLS-1$ //$NON-NLS-2$

+		   });

 		addAnnotation

-		  (getParameterExpression_Mixed(), 

-		   source, 

+		  (getParameterExpression_Mixed(),

+		   source,

 		   new String[] {

-			 "name", ":mixed", //$NON-NLS-1$ //$NON-NLS-2$

-			 "kind", "elementWildcard" //$NON-NLS-1$ //$NON-NLS-2$

-		   });	

+			   "name", ":mixed", //$NON-NLS-1$ //$NON-NLS-2$

+			   "kind", "elementWildcard" //$NON-NLS-1$ //$NON-NLS-2$

+		   });

 		addAnnotation

-		  (getParameterExpression_Expressions(), 

-		   source, 

+		  (getParameterExpression_Expressions(),

+		   source,

 		   new String[] {

-			 "kind", "element" //$NON-NLS-1$ //$NON-NLS-2$

+			   "kind", "element" //$NON-NLS-1$ //$NON-NLS-2$

 		   });

 	}

 

@@ -548,84 +573,84 @@
 	 * @generated

 	 */

 	protected void createGenModelAnnotations() {

-		String source = "http://www.eclipse.org/emf/2002/GenModel"; //$NON-NLS-1$	

+		String source = "http://www.eclipse.org/emf/2002/GenModel"; //$NON-NLS-1$

 		addAnnotation

-		  (applicationEClass, 

-		   source, 

+		  (applicationEClass,

+		   source,

 		   new String[] {

-			 "documentation", "Represents an Application model object" //$NON-NLS-1$ //$NON-NLS-2$

-		   });	

+			   "documentation", "Represents an Application model object" //$NON-NLS-1$ //$NON-NLS-2$

+		   });

 		addAnnotation

-		  (getApplication_Components(), 

-		   source, 

+		  (getApplication_Components(),

+		   source,

 		   new String[] {

-			 "documentation", "Aggregates all Components with this Application..." //$NON-NLS-1$ //$NON-NLS-2$

-		   });	

+			   "documentation", "Aggregates all Components with this Application..." //$NON-NLS-1$ //$NON-NLS-2$

+		   });

 		addAnnotation

-		  (getApplication_MixedOuterContent(), 

-		   source, 

+		  (getApplication_MixedOuterContent(),

+		   source,

 		   new String[] {

-			 "suppressedGetVisibility", "true" //$NON-NLS-1$ //$NON-NLS-2$

-		   });	

+			   "suppressedGetVisibility", "true" //$NON-NLS-1$ //$NON-NLS-2$

+		   });

 		addAnnotation

-		  (componentEClass, 

-		   source, 

+		  (componentEClass,

+		   source,

 		   new String[] {

-			 "documentation", "Represents a Component model object" //$NON-NLS-1$ //$NON-NLS-2$

-		   });	

+			   "documentation", "Represents a Component model object" //$NON-NLS-1$ //$NON-NLS-2$

+		   });

 		addAnnotation

-		  (getComponent_Type(), 

-		   source, 

+		  (getComponent_Type(),

+		   source,

 		   new String[] {

-			 "documentation", "Reference to the type of this Component" //$NON-NLS-1$ //$NON-NLS-2$

-		   });	

+			   "documentation", "Reference to the type of this Component" //$NON-NLS-1$ //$NON-NLS-2$

+		   });

 		addAnnotation

-		  (getComponent_ParameterValues(), 

-		   source, 

+		  (getComponent_ParameterValues(),

+		   source,

 		   new String[] {

-			 "documentation", "Aggregates all ParameterValues with this Component..." //$NON-NLS-1$ //$NON-NLS-2$

-		   });	

+			   "documentation", "Aggregates all ParameterValues with this Component..." //$NON-NLS-1$ //$NON-NLS-2$

+		   });

 		addAnnotation

-		  (connectionEClass, 

-		   source, 

+		  (connectionEClass,

+		   source,

 		   new String[] {

-			 "documentation", "Represents a Connection model object" //$NON-NLS-1$ //$NON-NLS-2$

-		   });	

+			   "documentation", "Represents a Connection model object" //$NON-NLS-1$ //$NON-NLS-2$

+		   });

 		addAnnotation

-		  (getConnection_SourceComponent(), 

-		   source, 

+		  (getConnection_SourceComponent(),

+		   source,

 		   new String[] {

-			 "documentation", "Specifies the source component" //$NON-NLS-1$ //$NON-NLS-2$

-		   });	

+			   "documentation", "Specifies the source component" //$NON-NLS-1$ //$NON-NLS-2$

+		   });

 		addAnnotation

-		  (getConnection_SourcePort(), 

-		   source, 

+		  (getConnection_SourcePort(),

+		   source,

 		   new String[] {

-			 "documentation", "Specifies the source port" //$NON-NLS-1$ //$NON-NLS-2$

-		   });	

+			   "documentation", "Specifies the source port" //$NON-NLS-1$ //$NON-NLS-2$

+		   });

 		addAnnotation

-		  (getConnection_TargetComponent(), 

-		   source, 

+		  (getConnection_TargetComponent(),

+		   source,

 		   new String[] {

-			 "documentation", "Specifies the target component" //$NON-NLS-1$ //$NON-NLS-2$

-		   });	

+			   "documentation", "Specifies the target component" //$NON-NLS-1$ //$NON-NLS-2$

+		   });

 		addAnnotation

-		  (parameterValueEClass, 

-		   source, 

+		  (parameterValueEClass,

+		   source,

 		   new String[] {

-			 "documentation", "Represents a Parameter Value model object" //$NON-NLS-1$ //$NON-NLS-2$

-		   });	

+			   "documentation", "Represents a Parameter Value model object" //$NON-NLS-1$ //$NON-NLS-2$

+		   });

 		addAnnotation

-		  (getParameterValue_Type(), 

-		   source, 

+		  (getParameterValue_Type(),

+		   source,

 		   new String[] {

-			 "documentation", "Reference to the type of this Parameter" //$NON-NLS-1$ //$NON-NLS-2$

-		   });	

+			   "documentation", "Reference to the type of this Parameter" //$NON-NLS-1$ //$NON-NLS-2$

+		   });

 		addAnnotation

-		  (getParameterValue_Value(), 

-		   source, 

+		  (getParameterValue_Value(),

+		   source,

 		   new String[] {

-			 "documentation", "Specifies the value of this ParameterValue" //$NON-NLS-1$ //$NON-NLS-2$

+			   "documentation", "Specifies the value of this ParameterValue" //$NON-NLS-1$ //$NON-NLS-2$

 		   });

 	}

 

diff --git a/examples/org.eclipse.sphinx.examples.hummingbird20/src-gen/org/eclipse/sphinx/examples/hummingbird20/instancemodel/util/InstanceModel20AdapterFactory.java b/examples/org.eclipse.sphinx.examples.hummingbird20/src-gen/org/eclipse/sphinx/examples/hummingbird20/instancemodel/util/InstanceModel20AdapterFactory.java
index f2d418e..94d19e7 100644
--- a/examples/org.eclipse.sphinx.examples.hummingbird20/src-gen/org/eclipse/sphinx/examples/hummingbird20/instancemodel/util/InstanceModel20AdapterFactory.java
+++ b/examples/org.eclipse.sphinx.examples.hummingbird20/src-gen/org/eclipse/sphinx/examples/hummingbird20/instancemodel/util/InstanceModel20AdapterFactory.java
@@ -104,6 +104,10 @@
 				return createFormulaAdapter();

 			}

 			@Override

+			public Adapter caseCustomApplication(CustomApplication object) {

+				return createCustomApplicationAdapter();

+			}

+			@Override

 			public Adapter caseIdentifiable(Identifiable object) {

 				return createIdentifiableAdapter();

 			}

@@ -207,6 +211,20 @@
 	}

 

 	/**

+	 * Creates a new adapter for an object of class '{@link org.eclipse.sphinx.examples.hummingbird20.instancemodel.CustomApplication <em>Custom Application</em>}'.

+	 * <!-- begin-user-doc -->

+	 * This default implementation returns null so that we can easily ignore cases;

+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.

+	 * <!-- end-user-doc -->

+	 * @return the new adapter.

+	 * @see org.eclipse.sphinx.examples.hummingbird20.instancemodel.CustomApplication

+	 * @generated

+	 */

+	public Adapter createCustomApplicationAdapter() {

+		return null;

+	}

+

+	/**

 	 * Creates a new adapter for an object of class '{@link org.eclipse.sphinx.examples.hummingbird20.common.Identifiable <em>Identifiable</em>}'.

 	 * <!-- begin-user-doc

 	 * --> This default implementation returns null so that we can easily ignore cases; it's useful to ignore a case

diff --git a/examples/org.eclipse.sphinx.examples.hummingbird20/src-gen/org/eclipse/sphinx/examples/hummingbird20/instancemodel/util/InstanceModel20Switch.java b/examples/org.eclipse.sphinx.examples.hummingbird20/src-gen/org/eclipse/sphinx/examples/hummingbird20/instancemodel/util/InstanceModel20Switch.java
index d52ee44..891e48b 100644
--- a/examples/org.eclipse.sphinx.examples.hummingbird20/src-gen/org/eclipse/sphinx/examples/hummingbird20/instancemodel/util/InstanceModel20Switch.java
+++ b/examples/org.eclipse.sphinx.examples.hummingbird20/src-gen/org/eclipse/sphinx/examples/hummingbird20/instancemodel/util/InstanceModel20Switch.java
@@ -116,6 +116,14 @@
 				if (result == null) result = defaultCase(theEObject);

 				return result;

 			}

+			case InstanceModel20Package.CUSTOM_APPLICATION: {

+				CustomApplication customApplication = (CustomApplication)theEObject;

+				T result = caseCustomApplication(customApplication);

+				if (result == null) result = caseApplication(customApplication);

+				if (result == null) result = caseIdentifiable(customApplication);

+				if (result == null) result = defaultCase(theEObject);

+				return result;

+			}

 			default: return defaultCase(theEObject);

 		}

 	}

@@ -203,6 +211,21 @@
 	}

 

 	/**

+	 * Returns the result of interpreting the object as an instance of '<em>Custom Application</em>'.

+	 * <!-- begin-user-doc -->

+	 * This implementation returns null;

+	 * returning a non-null result will terminate the switch.

+	 * <!-- end-user-doc -->

+	 * @param object the target of the switch.

+	 * @return the result of interpreting the object as an instance of '<em>Custom Application</em>'.

+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)

+	 * @generated

+	 */

+	public T caseCustomApplication(CustomApplication object) {

+		return null;

+	}

+

+	/**

 	 * Returns the result of interpreting the object as an instance of '<em>Identifiable</em>'.

 	 * <!-- begin-user-doc -->

 	 * This implementation returns null; returning a non-null result will terminate the switch. <!-- end-user-doc -->

diff --git a/plugins/org.eclipse.sphinx.emf.validation/src/org/eclipse/sphinx/emf/validation/evalidator/adapter/EValidatorAdapter.java b/plugins/org.eclipse.sphinx.emf.validation/src/org/eclipse/sphinx/emf/validation/evalidator/adapter/EValidatorAdapter.java
index 4844df9..b30b69d 100644
--- a/plugins/org.eclipse.sphinx.emf.validation/src/org/eclipse/sphinx/emf/validation/evalidator/adapter/EValidatorAdapter.java
+++ b/plugins/org.eclipse.sphinx.emf.validation/src/org/eclipse/sphinx/emf/validation/evalidator/adapter/EValidatorAdapter.java
@@ -1,15 +1,18 @@
 /**

  * <copyright>

- * 

+

+

+ *

  * Copyright (c) 2008-2010 See4sys and others.

  * All rights reserved. This program and the accompanying materials

  * are made available under the terms of the Eclipse Public License v1.0

  * which accompanies this distribution, and is available at

  * http://www.eclipse.org/legal/epl-v10.html

- * 

- * Contributors: 

+ *

+ * Contributors:

  *     See4sys - Initial API and implementation

- * 

+ *     Elektrobit - [567814] The EMF validation framework reports multiple identical validation problems

+ *

  * </copyright>

  */

 package org.eclipse.sphinx.emf.validation.evalidator.adapter;

@@ -68,7 +71,7 @@
 

 	/**

 	 * Return the value of the preference to check EMF default rules.

-	 * 

+	 *

 	 * @return

 	 */

 	protected static Boolean areEMFIntrinsicConstraintsEnabled() {

@@ -121,7 +124,7 @@
 				if (eSuperTypes.isEmpty()) {

 					validate_EveryDefaultConstraint(eObject, diagnostics, context);

 				} else {

-					// validate(eSuperTypes.get(0), eObject, diagnostics, context);

+					validate(eSuperTypes.get(0), eObject, diagnostics, context);

 				}

 			}

 		}

@@ -136,11 +139,11 @@
 		// first, do whatever the basic EcoreValidator does

 		// former call to super.validate(eClass, eObject, diagnostics, context);

 

-		// Let's check if EMF default rules should be checked

+		// Let's check if EMF default constraints should be checked

 

 		validateEMFRules(eClass, eObject, diagnostics, context);

 

-		// Ok, Now let's validate our rules.

+		// Ok, Now let's check our constraints.

 

 		IStatus status = Status.OK_STATUS;

 

@@ -151,6 +154,8 @@
 			// then don't repeat (the Diagnostician does the recursion

 			// externally). If there is no context map, then we can't

 			// help it

+

+			// now runs the custom/other validators

 			if (!hasProcessed(eObject, context)) {

 				// Add filters, if it exists (pre-process)

 				addFilters(filters);

@@ -215,7 +220,7 @@
 	/**

 	 * If we have a context map, record this object's <code>status</code> in it so that we will know later that we have

 	 * processed it and its sub-tree.

-	 * 

+	 *

 	 * @param eObject

 	 *            an element that we have validated

 	 * @param context

@@ -232,35 +237,21 @@
 	/**

 	 * Determines whether we have processed this <code>eObject</code> before, by automatic recursion of the EMF Model

 	 * Validation Service. This is only possible if we do, indeed, have a context.

-	 * 

+	 *

 	 * @param eObject

-	 *            an element to be validated (we hope not)

+	 *            an element to be validated

 	 * @param context

 	 *            the context (may be <code>null</code>)

-	 * @return <code>true</code> if the context is not <code>null</code> and the <code>eObject</code> or one of its

-	 *         containers has already been validated; <code>false</code>, otherwise

+	 * @return <code>true</code> if the context is not <code>null</code> and the <code>eObject</code> has already been

+	 *         validated; <code>false</code>, otherwise

 	 */

 	private boolean hasProcessed(EObject eObject, Map<Object, Object> context) {

-		boolean result = false;

-

-		if (context != null) {

-			// this is O(NlogN) but there's no helping it

-			while (eObject != null) {

-				if (context.containsKey(eObject)) {

-					result = true;

-					eObject = null;

-				} else {

-					eObject = eObject.eContainer();

-				}

-			}

-		}

-

-		return result && false;

+		return context != null && context.containsKey(eObject);

 	}

 

 	/**

 	 * Converts a status result from the EMF validation service to diagnostics.

-	 * 

+	 *

 	 * @param status

 	 *            the EMF validation service's status result

 	 * @param diagnostics

@@ -295,8 +286,8 @@
 			// status.getMessage(),

 			// ((IConstraintStatus) status).getResultLocus().toArray()));

 			/* --- */

-			diagnostics.add(new ExtendedDiagnostic(status.getSeverity(), status.getPlugin(), ((IConstraintStatus) status).getConstraint(), status

-					.getCode(), status.getMessage(), ((IConstraintStatus) status).getResultLocus().toArray()));

+			diagnostics.add(new ExtendedDiagnostic(status.getSeverity(), status.getPlugin(), ((IConstraintStatus) status).getConstraint(),

+					status.getCode(), status.getMessage(), ((IConstraintStatus) status).getResultLocus().toArray()));

 			/* >>> */

 		} else {

 			diagnostics

@@ -307,7 +298,7 @@
 

 	/**

 	 * add filters to the batchValidator

-	 * 

+	 *

 	 * @param filters

 	 * @see IConstraintFilter

 	 */

@@ -323,7 +314,7 @@
 

 	/**

 	 * remove filters to the batch validator

-	 * 

+	 *

 	 * @param filters

 	 * @see IConstraintFilter

 	 */

diff --git a/releng/org.eclipse.sphinx.releng.builds/pom.xml b/releng/org.eclipse.sphinx.releng.builds/pom.xml
index f5db81f..09dbaf3 100644
--- a/releng/org.eclipse.sphinx.releng.builds/pom.xml
+++ b/releng/org.eclipse.sphinx.releng.builds/pom.xml
@@ -107,6 +107,7 @@
 		<module>../../tests/org.eclipse.sphinx.tests.emf.workspace.ui</module>

 		<module>../../tests/org.eclipse.sphinx.tests.emf.workspace</module>

 		<module>../../tests/org.eclipse.sphinx.tests.emf</module>

+		<module>../../tests/org.eclipse.sphinx.tests.emf.validation</module>

 		<module>../../tests/org.eclipse.sphinx.tests.jdt.integration</module>

 		<module>../../tests/org.eclipse.sphinx.tests.jdt</module>

 		<module>../../tests/org.eclipse.sphinx.tests.platform.integration</module>

diff --git a/tests/org.eclipse.sphinx.tests.emf.validation/.classpath b/tests/org.eclipse.sphinx.tests.emf.validation/.classpath
new file mode 100644
index 0000000..cc5ee2d
--- /dev/null
+++ b/tests/org.eclipse.sphinx.tests.emf.validation/.classpath
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src/">
+		<attributes>
+			<attribute name="test" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="output" path="target/classes"/>
+</classpath>
diff --git a/tests/org.eclipse.sphinx.tests.emf.validation/.project b/tests/org.eclipse.sphinx.tests.emf.validation/.project
new file mode 100644
index 0000000..cd9e9b3
--- /dev/null
+++ b/tests/org.eclipse.sphinx.tests.emf.validation/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.sphinx.tests.emf.validation</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.m2e.core.maven2Builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.m2e.core.maven2Nature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/tests/org.eclipse.sphinx.tests.emf.validation/.settings/org.eclipse.core.resources.prefs b/tests/org.eclipse.sphinx.tests.emf.validation/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..d97a697
--- /dev/null
+++ b/tests/org.eclipse.sphinx.tests.emf.validation/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,4 @@
+eclipse.preferences.version=1
+encoding//design/default.ecore=UTF-8
+encoding//design/resources.ecore_diagram=UTF-8
+encoding/<project>=UTF-8
diff --git a/tests/org.eclipse.sphinx.tests.emf.validation/.settings/org.eclipse.jdt.core.prefs b/tests/org.eclipse.sphinx.tests.emf.validation/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..1fc7056
--- /dev/null
+++ b/tests/org.eclipse.sphinx.tests.emf.validation/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,391 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.codeComplete.argumentPrefixes=
+org.eclipse.jdt.core.codeComplete.argumentSuffixes=
+org.eclipse.jdt.core.codeComplete.fieldPrefixes=
+org.eclipse.jdt.core.codeComplete.fieldSuffixes=
+org.eclipse.jdt.core.codeComplete.localPrefixes=
+org.eclipse.jdt.core.codeComplete.localSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes=
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
+org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
+org.eclipse.jdt.core.compiler.problem.deadCode=warning
+org.eclipse.jdt.core.compiler.problem.deprecation=warning
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
+org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
+org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
+org.eclipse.jdt.core.compiler.problem.nullReference=ignore
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
+org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
+org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.unusedImport=warning
+org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
+org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
+org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_assignment=0
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=0
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=true
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=true
+org.eclipse.jdt.core.formatter.comment.format_block_comments=true
+org.eclipse.jdt.core.formatter.comment.format_header=false
+org.eclipse.jdt.core.formatter.comment.format_html=true
+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true
+org.eclipse.jdt.core.formatter.comment.format_line_comments=true
+org.eclipse.jdt.core.formatter.comment.format_source_code=true
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=true
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=true
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=insert
+org.eclipse.jdt.core.formatter.comment.line_length=120
+org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
+org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
+org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
+org.eclipse.jdt.core.formatter.compact_else_if=true
+org.eclipse.jdt.core.formatter.continuation_indentation=2
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
+org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
+org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_empty_lines=false
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
+org.eclipse.jdt.core.formatter.indentation.size=4
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_label=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.join_lines_in_comments=true
+org.eclipse.jdt.core.formatter.join_wrapped_lines=true
+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.lineSplit=150
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
+org.eclipse.jdt.core.formatter.tabulation.char=tab
+org.eclipse.jdt.core.formatter.tabulation.size=4
+org.eclipse.jdt.core.formatter.use_on_off_tags=true
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
diff --git a/tests/org.eclipse.sphinx.tests.emf.validation/.settings/org.eclipse.jdt.ui.prefs b/tests/org.eclipse.sphinx.tests.emf.validation/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 0000000..1d4dd39
--- /dev/null
+++ b/tests/org.eclipse.sphinx.tests.emf.validation/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,119 @@
+cleanup.add_default_serial_version_id=true
+cleanup.add_generated_serial_version_id=false
+cleanup.add_missing_annotations=true
+cleanup.add_missing_deprecated_annotations=true
+cleanup.add_missing_methods=false
+cleanup.add_missing_nls_tags=false
+cleanup.add_missing_override_annotations=true
+cleanup.add_missing_override_annotations_interface_methods=true
+cleanup.add_serial_version_id=false
+cleanup.always_use_blocks=true
+cleanup.always_use_parentheses_in_expressions=false
+cleanup.always_use_this_for_non_static_field_access=false
+cleanup.always_use_this_for_non_static_method_access=false
+cleanup.convert_to_enhanced_for_loop=true
+cleanup.correct_indentation=false
+cleanup.format_source_code=true
+cleanup.format_source_code_changes_only=false
+cleanup.make_local_variable_final=true
+cleanup.make_parameters_final=false
+cleanup.make_private_fields_final=true
+cleanup.make_type_abstract_if_missing_method=false
+cleanup.make_variable_declarations_final=false
+cleanup.never_use_blocks=false
+cleanup.never_use_parentheses_in_expressions=true
+cleanup.organize_imports=true
+cleanup.qualify_static_field_accesses_with_declaring_class=false
+cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+cleanup.qualify_static_member_accesses_with_declaring_class=true
+cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.remove_private_constructors=false
+cleanup.remove_trailing_whitespaces=true
+cleanup.remove_trailing_whitespaces_all=true
+cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_casts=true
+cleanup.remove_unnecessary_nls_tags=true
+cleanup.remove_unused_imports=true
+cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_private_fields=true
+cleanup.remove_unused_private_members=false
+cleanup.remove_unused_private_methods=false
+cleanup.remove_unused_private_types=false
+cleanup.sort_members=false
+cleanup.sort_members_all=false
+cleanup.use_blocks=true
+cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_parentheses_in_expressions=true
+cleanup.use_this_for_non_static_field_access=true
+cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+cleanup.use_this_for_non_static_method_access=true
+cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup_profile=_Unmanaged profile 'Sphinx'
+cleanup_settings_version=2
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+formatter_profile=_Sphinx
+formatter_settings_version=12
+org.eclipse.jdt.ui.exception.name=ex
+org.eclipse.jdt.ui.gettersetter.use.is=true
+org.eclipse.jdt.ui.ignorelowercasenames=true
+org.eclipse.jdt.ui.importorder=java;javax;org;com;
+org.eclipse.jdt.ui.javadoc=false
+org.eclipse.jdt.ui.keywordthis=false
+org.eclipse.jdt.ui.ondemandthreshold=99
+org.eclipse.jdt.ui.overrideannotation=true
+org.eclipse.jdt.ui.staticondemandthreshold=99
+org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="true" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment">/**\r\n * @return the ${bare_field_name}\r\n */</template><template autoinsert\="true" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment">/**\r\n * @param ${param} the ${bare_field_name} to set\r\n */</template><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">/**\r\n * &lt;copyright&gt;\r\n * \r\n * Copyright (c) {contributing company name} and others.\r\n * All rights reserved. This program and the accompanying materials\r\n * are made available under the terms of the Eclipse Public License v1.0\r\n * which accompanies this distribution, and is available at\r\n * http\://www.eclipse.org/legal/epl-v10.html\r\n * \r\n * Contributors\: \r\n *     {contributing company name} - Initial API and implementation\r\n * \r\n * &lt;/copyright&gt;\r\n */</template><template autoinsert\="false" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment">/**\r\n * \r\n */</template><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment">/*\r\n * ${see_to_overridden}\r\n */</template><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\r\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\r\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\r\n</template><template autoinsert\="false" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block</template><template autoinsert\="true" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">// ${todo} Auto-generated method stub\r\n${body_statement}</template><template autoinsert\="true" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}\r\n// ${todo} Auto-generated constructor stub</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
+sp_cleanup.add_default_serial_version_id=true
+sp_cleanup.add_generated_serial_version_id=false
+sp_cleanup.add_missing_annotations=true
+sp_cleanup.add_missing_deprecated_annotations=true
+sp_cleanup.add_missing_methods=false
+sp_cleanup.add_missing_nls_tags=false
+sp_cleanup.add_missing_override_annotations=true
+sp_cleanup.add_missing_override_annotations_interface_methods=true
+sp_cleanup.add_serial_version_id=false
+sp_cleanup.always_use_blocks=true
+sp_cleanup.always_use_parentheses_in_expressions=false
+sp_cleanup.always_use_this_for_non_static_field_access=false
+sp_cleanup.always_use_this_for_non_static_method_access=false
+sp_cleanup.convert_to_enhanced_for_loop=true
+sp_cleanup.correct_indentation=false
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.make_local_variable_final=false
+sp_cleanup.make_parameters_final=false
+sp_cleanup.make_private_fields_final=true
+sp_cleanup.make_type_abstract_if_missing_method=false
+sp_cleanup.make_variable_declarations_final=false
+sp_cleanup.never_use_blocks=false
+sp_cleanup.never_use_parentheses_in_expressions=true
+sp_cleanup.on_save_use_additional_actions=true
+sp_cleanup.organize_imports=true
+sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_with_declaring_class=true
+sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
+sp_cleanup.remove_private_constructors=false
+sp_cleanup.remove_trailing_whitespaces=true
+sp_cleanup.remove_trailing_whitespaces_all=true
+sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
+sp_cleanup.remove_unnecessary_casts=true
+sp_cleanup.remove_unnecessary_nls_tags=true
+sp_cleanup.remove_unused_imports=true
+sp_cleanup.remove_unused_local_variables=false
+sp_cleanup.remove_unused_private_fields=true
+sp_cleanup.remove_unused_private_members=false
+sp_cleanup.remove_unused_private_methods=false
+sp_cleanup.remove_unused_private_types=false
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.use_blocks=true
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_parentheses_in_expressions=true
+sp_cleanup.use_this_for_non_static_field_access=true
+sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+sp_cleanup.use_this_for_non_static_method_access=true
+sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/tests/org.eclipse.sphinx.tests.emf.validation/.settings/org.eclipse.m2e.core.prefs b/tests/org.eclipse.sphinx.tests.emf.validation/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000..f897a7f
--- /dev/null
+++ b/tests/org.eclipse.sphinx.tests.emf.validation/.settings/org.eclipse.m2e.core.prefs
@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
diff --git a/tests/org.eclipse.sphinx.tests.emf.validation/.settings/org.eclipse.pde.prefs b/tests/org.eclipse.sphinx.tests.emf.validation/.settings/org.eclipse.pde.prefs
new file mode 100644
index 0000000..97b4320
--- /dev/null
+++ b/tests/org.eclipse.sphinx.tests.emf.validation/.settings/org.eclipse.pde.prefs
@@ -0,0 +1,32 @@
+compilers.f.unresolved-features=1
+compilers.f.unresolved-plugins=1
+compilers.incompatible-environment=1
+compilers.p.build=1
+compilers.p.build.bin.includes=1
+compilers.p.build.encodings=2
+compilers.p.build.java.compiler=2
+compilers.p.build.java.compliance=1
+compilers.p.build.missing.output=2
+compilers.p.build.output.library=1
+compilers.p.build.source.library=1
+compilers.p.build.src.includes=1
+compilers.p.deprecated=1
+compilers.p.discouraged-class=1
+compilers.p.internal=1
+compilers.p.missing-packages=1
+compilers.p.missing-version-export-package=2
+compilers.p.missing-version-import-package=2
+compilers.p.missing-version-require-bundle=2
+compilers.p.no-required-att=0
+compilers.p.not-externalized-att=2
+compilers.p.unknown-attribute=1
+compilers.p.unknown-class=1
+compilers.p.unknown-element=1
+compilers.p.unknown-identifier=1
+compilers.p.unknown-resource=1
+compilers.p.unresolved-ex-points=0
+compilers.p.unresolved-import=0
+compilers.s.create-docs=false
+compilers.s.doc-folder=doc
+compilers.s.open-tags=1
+eclipse.preferences.version=1
diff --git a/tests/org.eclipse.sphinx.tests.emf.validation/.settings/org.eclipse.wst.xml.core.prefs b/tests/org.eclipse.sphinx.tests.emf.validation/.settings/org.eclipse.wst.xml.core.prefs
new file mode 100644
index 0000000..8d6f557
--- /dev/null
+++ b/tests/org.eclipse.sphinx.tests.emf.validation/.settings/org.eclipse.wst.xml.core.prefs
@@ -0,0 +1,17 @@
+attributeHasNoValue=2
+eclipse.preferences.version=1
+endTagWithAttributes=2
+honourAllSchemaLocations=true
+indicateNoGrammar=1
+indiciateNoDocumentElement=-1
+markupValidation=true
+missingClosingBracket=2
+missingClosingQuote=2
+missingEndTag=2
+missingQuotes=2
+missingStartTag=2
+missingTagName=2
+namespaceInPITarget=2
+whitespaceAtStart=2
+whitespaceBeforeTagName=2
+xinclude=true
diff --git a/tests/org.eclipse.sphinx.tests.emf.validation/META-INF/MANIFEST.MF b/tests/org.eclipse.sphinx.tests.emf.validation/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..99aaf1c
--- /dev/null
+++ b/tests/org.eclipse.sphinx.tests.emf.validation/META-INF/MANIFEST.MF
@@ -0,0 +1,17 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.sphinx.tests.emf.validation;singleton:=true
+Bundle-Version: 0.11.2.qualifier
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Require-Bundle: 
+ org.eclipse.sphinx.testutils.integration.referenceworkspace,
+ org.eclipse.sphinx.emf.serialization,
+ org.eclipse.sphinx.emf.validation,
+ org.eclipse.emf.validation.ocl;bundle-version="1.4.0"
+Bundle-ActivationPolicy: lazy
+Bundle-Activator: org.eclipse.sphinx.tests.emf.validation.internal.Activator$Implementation
+Export-Package: org.eclipse.sphinx.tests.emf.validation,
+ org.eclipse.sphinx.tests.emf.validation.internal;x-internal:=true
diff --git a/tests/org.eclipse.sphinx.tests.emf.validation/about.html b/tests/org.eclipse.sphinx.tests.emf.validation/about.html
new file mode 100644
index 0000000..c258ef5
--- /dev/null
+++ b/tests/org.eclipse.sphinx.tests.emf.validation/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+ 
+<p>June 5, 2006</p>	
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content.  Check the Redistributor's license that was 
+provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/tests/org.eclipse.sphinx.tests.emf.validation/build.properties b/tests/org.eclipse.sphinx.tests.emf.validation/build.properties
new file mode 100644
index 0000000..7b3c227
--- /dev/null
+++ b/tests/org.eclipse.sphinx.tests.emf.validation/build.properties
@@ -0,0 +1,8 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+               .,\
+               plugin.xml,\
+               plugin.properties,\
+               about.html
+src.includes = about.html
diff --git a/tests/org.eclipse.sphinx.tests.emf.validation/hs_err_pid9384.log b/tests/org.eclipse.sphinx.tests.emf.validation/hs_err_pid9384.log
new file mode 100644
index 0000000..174a9e9
--- /dev/null
+++ b/tests/org.eclipse.sphinx.tests.emf.validation/hs_err_pid9384.log
@@ -0,0 +1,408 @@
+#
+# A fatal error has been detected by the Java Runtime Environment:
+#
+#  Internal Error (javaCalls.cpp:51), pid=9384, tid=0x000000000000205c
+#  guarantee(thread->is_Java_thread()) failed: crucial check - the VM thread cannot and must not escape to Java code
+#
+# JRE version: Java(TM) SE Runtime Environment (8.0_241-b07) (build 1.8.0_241-b07)
+# Java VM: Java HotSpot(TM) 64-Bit Server VM (25.241-b07 mixed mode windows-amd64 compressed oops)
+# Failed to write core dump. Minidumps are not enabled by default on client versions of Windows
+#
+# If you would like to submit a bug report, please visit:
+#   http://bugreport.java.com/bugreport/crash.jsp
+#
+
+---------------  T H R E A D  ---------------
+
+Current thread (0x000000001c6fa000):  VMThread [stack: 0x000000001e3e0000,0x000000001e4e0000] [id=8284]
+
+Stack: [0x000000001e3e0000,0x000000001e4e0000]
+[error occurred during error reporting (printing stack bounds), id 0xc0000005]
+
+Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
+
+VM_Operation (0x000000001f21f440): GetOrSetLocal, mode: safepoint, requested by thread 0x000000001e613800
+
+
+---------------  P R O C E S S  ---------------
+
+Java Threads: ( => current thread )
+  0x0000000021090000 JavaThread "[ThreadPool Manager] - Idle Thread" daemon [_thread_blocked, id=14864, stack(0x0000000036f40000,0x0000000037040000)]
+  0x0000000021098000 JavaThread "Worker-7" [_thread_blocked, id=1580, stack(0x0000000037bb0000,0x0000000037cb0000)]
+  0x000000002108d000 JavaThread "ReaderThread" [_thread_in_native, id=15044, stack(0x0000000036320000,0x0000000036420000)]
+  0x000000002108f000 JavaThread "Worker-5" [_thread_blocked, id=15948, stack(0x0000000030b60000,0x0000000030c60000)]
+  0x000000002108c000 JavaThread "WorkbenchTestable" [_thread_blocked, id=8948, stack(0x0000000030a60000,0x0000000030b60000)]
+  0x000000001fe68000 JavaThread "EventAdmin Async Event Dispatcher Thread" daemon [_thread_blocked, id=2800, stack(0x000000002e060000,0x000000002e160000)]
+  0x000000001fe69000 JavaThread "Java indexing" daemon [_thread_blocked, id=10300, stack(0x0000000022d30000,0x0000000022e30000)]
+  0x000000001fe67800 JavaThread "EMF Reference Cleaner" daemon [_thread_blocked, id=13596, stack(0x0000000026310000,0x0000000026410000)]
+  0x000000001fe66800 JavaThread "Worker-JM" [_thread_blocked, id=3428, stack(0x00000000264e0000,0x00000000265e0000)]
+  0x000000001e916000 JavaThread "[Timer] - Main Queue Handler" daemon [_thread_blocked, id=16196, stack(0x0000000025190000,0x0000000025290000)]
+  0x00000000205c9800 JavaThread "Bundle File Closer" daemon [_thread_blocked, id=16952, stack(0x00000000215f0000,0x00000000216f0000)]
+  0x000000001fad6800 JavaThread "Start Level: Equinox Container: 20e981bf-6990-001b-1041-abc5dc17b5d1" daemon [_thread_blocked, id=8356, stack(0x00000000214f0000,0x00000000215f0000)]
+  0x0000000020210000 JavaThread "Refresh Thread: Equinox Container: 20e981bf-6990-001b-1041-abc5dc17b5d1" daemon [_thread_blocked, id=8872, stack(0x00000000213f0000,0x00000000214f0000)]
+  0x0000000020244800 JavaThread "Framework Event Dispatcher: Equinox Container: 20e981bf-6990-001b-1041-abc5dc17b5d1" daemon [_thread_blocked, id=15212, stack(0x00000000212f0000,0x00000000213f0000)]
+  0x0000000020192800 JavaThread "Active Thread: Equinox Container: 20e981bf-6990-001b-1041-abc5dc17b5d1" [_thread_blocked, id=1028, stack(0x00000000211f0000,0x00000000212f0000)]
+  0x000000001e6c5800 JavaThread "Service Thread" daemon [_thread_blocked, id=452, stack(0x000000001f820000,0x000000001f920000)]
+  0x000000001e646000 JavaThread "C1 CompilerThread3" daemon [_thread_blocked, id=12208, stack(0x000000001f720000,0x000000001f820000)]
+  0x000000001e63d800 JavaThread "C2 CompilerThread2" daemon [_thread_blocked, id=16856, stack(0x000000001f620000,0x000000001f720000)]
+  0x000000001e63a800 JavaThread "C2 CompilerThread1" daemon [_thread_blocked, id=13492, stack(0x000000001f520000,0x000000001f620000)]
+  0x000000001e634000 JavaThread "C2 CompilerThread0" daemon [_thread_blocked, id=5876, stack(0x000000001f420000,0x000000001f520000)]
+  0x000000001e626000 JavaThread "JDWP Command Reader" daemon [_thread_in_native, id=7172, stack(0x000000001f320000,0x000000001f420000)]
+  0x000000001e61e800 JavaThread "JDWP Event Helper Thread" daemon [_thread_blocked, id=824, stack(0x000000001f220000,0x000000001f320000)]
+  0x000000001e613800 JavaThread "JDWP Transport Listener: dt_socket" daemon [_thread_blocked, id=6912, stack(0x000000001f120000,0x000000001f220000)]
+  0x000000001e609000 JavaThread "Attach Listener" daemon [_thread_blocked, id=6472, stack(0x000000001ece0000,0x000000001ede0000)]
+  0x000000001e608000 JavaThread "Signal Dispatcher" daemon [_thread_blocked, id=16244, stack(0x000000001ebe0000,0x000000001ece0000)]
+  0x000000001e600800 JavaThread "Finalizer" daemon [_thread_blocked, id=10444, stack(0x000000001e9e0000,0x000000001eae0000)]
+  0x0000000002f29000 JavaThread "Reference Handler" daemon [_thread_blocked, id=11628, stack(0x000000001e4e0000,0x000000001e5e0000)]
+  0x0000000002e32800 JavaThread "main" [_thread_blocked, id=16216, stack(0x0000000002d20000,0x0000000002e20000)]
+
+Other Threads:
+=>0x000000001c6fa000 VMThread [stack: 0x000000001e3e0000,0x000000001e4e0000] [id=8284]
+  0x000000001e6e7000 WatcherThread [stack: 0x000000001f920000,0x000000001fa20000] [id=2944]
+
+VM state:at safepoint (normal execution)
+
+VM Mutex/Monitor currently owned by a thread:  ([mutex/lock_event])
+[0x0000000002e2e4a0] Threads_lock - owner thread: 0x000000001c6fa000
+
+heap address: 0x00000006c5c00000, size: 4004 MB, Compressed Oops mode: Zero based, Oop shift amount: 3
+Narrow klass base: 0x0000000000000000, Narrow klass shift: 3
+Compressed class space size: 1073741824 Address: 0x00000007c0000000
+
+Heap:
+ PSYoungGen      total 916480K, used 197662K [0x000000076c980000, 0x00000007a5e00000, 0x00000007c0000000)
+  eden space 903168K, 21% used [0x000000076c980000,0x0000000778a87af8,0x00000007a3b80000)
+  from space 13312K, 0% used [0x00000007a3b80000,0x00000007a3b80000,0x00000007a4880000)
+  to   space 16896K, 0% used [0x00000007a4d80000,0x00000007a4d80000,0x00000007a5e00000)
+ ParOldGen       total 295424K, used 77768K [0x00000006c5c00000, 0x00000006d7c80000, 0x000000076c980000)
+  object space 295424K, 26% used [0x00000006c5c00000,0x00000006ca7f2310,0x00000006d7c80000)
+ Metaspace       used 72954K, capacity 78565K, committed 78808K, reserved 1118208K
+  class space    used 8455K, capacity 10214K, committed 10240K, reserved 1048576K
+
+Card table byte_map: [0x00000000122f0000,0x0000000012ad0000] byte_map_base: 0x000000000ecc2000
+
+Marking Bits: (ParMarkBitMap*) 0x000000006c7abe30
+ Begin Bits: [0x0000000013810000, 0x00000000176a0000)
+ End Bits:   [0x00000000176a0000, 0x000000001b530000)
+
+Polling page: 0x0000000001320000
+
+CodeCache: size=245760Kb used=32636Kb max_used=32663Kb free=213123Kb
+ bounds [0x0000000002f30000, 0x0000000004fa0000, 0x0000000011f30000]
+ total_blobs=8898 nmethods=8031 adapters=785
+ compilation: enabled
+
+Compilation events (10 events):
+Event: 321.241 Thread 0x000000001e646000 10267       3       org.eclipse.core.runtime.jobs.JobChangeAdapter::scheduled (1 bytes)
+Event: 321.241 Thread 0x000000001e646000 nmethod 10267 0x0000000003237310 code [0x0000000003237460, 0x00000000032375b0]
+Event: 515.158 Thread 0x000000001e646000 10268       1       java.lang.Thread::getPriority (5 bytes)
+Event: 515.158 Thread 0x000000001e646000 nmethod 10268 0x0000000003775850 code [0x00000000037759a0, 0x0000000003775ab0]
+Event: 621.293 Thread 0x000000001e63a800 10269       4       org.eclipse.core.internal.utils.StringPool::add (59 bytes)
+Event: 621.293 Thread 0x000000001e63d800 10270       4       org.eclipse.core.internal.dtree.AbstractDataTreeNode::storeStrings (42 bytes)
+Event: 621.331 Thread 0x000000001e63a800 nmethod 10269 0x0000000003847110 code [0x00000000038472a0, 0x0000000003847aa8]
+Event: 621.360 Thread 0x000000001e63d800 nmethod 10270 0x00000000048f7550 code [0x00000000048f7820, 0x00000000048f95f8]
+Event: 815.158 Thread 0x000000001e646000 10271       3       java.lang.Thread::checkAccess (14 bytes)
+Event: 815.159 Thread 0x000000001e646000 nmethod 10271 0x00000000036ea990 code [0x00000000036eab40, 0x00000000036eb178]
+
+GC Heap History (10 events):
+Event: 34.207 GC heap before
+{Heap before GC invocations=122 (full 57):
+ PSYoungGen      total 910336K, used 5288K [0x000000076c980000, 0x00000007a5400000, 0x00000007c0000000)
+  eden space 904704K, 0% used [0x000000076c980000,0x000000076c980000,0x00000007a3d00000)
+  from space 5632K, 93% used [0x00000007a3d00000,0x00000007a422a160,0x00000007a4280000)
+  to   space 11776K, 0% used [0x00000007a4880000,0x00000007a4880000,0x00000007a5400000)
+ ParOldGen       total 295424K, used 62881K [0x00000006c5c00000, 0x00000006d7c80000, 0x000000076c980000)
+  object space 295424K, 21% used [0x00000006c5c00000,0x00000006c9968458,0x00000006d7c80000)
+ Metaspace       used 72803K, capacity 78431K, committed 78552K, reserved 1118208K
+  class space    used 8445K, capacity 10212K, committed 10240K, reserved 1048576K
+Event: 34.294 GC heap after
+Heap after GC invocations=122 (full 57):
+ PSYoungGen      total 910336K, used 0K [0x000000076c980000, 0x00000007a5400000, 0x00000007c0000000)
+  eden space 904704K, 0% used [0x000000076c980000,0x000000076c980000,0x00000007a3d00000)
+  from space 5632K, 0% used [0x00000007a3d00000,0x00000007a3d00000,0x00000007a4280000)
+  to   space 11776K, 0% used [0x00000007a4880000,0x00000007a4880000,0x00000007a5400000)
+ ParOldGen       total 295424K, used 67083K [0x00000006c5c00000, 0x00000006d7c80000, 0x000000076c980000)
+  object space 295424K, 22% used [0x00000006c5c00000,0x00000006c9d82f88,0x00000006d7c80000)
+ Metaspace       used 72803K, capacity 78431K, committed 78552K, reserved 1118208K
+  class space    used 8445K, capacity 10212K, committed 10240K, reserved 1048576K
+}
+Event: 35.099 GC heap before
+{Heap before GC invocations=123 (full 57):
+ PSYoungGen      total 910336K, used 81802K [0x000000076c980000, 0x00000007a5400000, 0x00000007c0000000)
+  eden space 904704K, 9% used [0x000000076c980000,0x0000000771962a08,0x00000007a3d00000)
+  from space 5632K, 0% used [0x00000007a3d00000,0x00000007a3d00000,0x00000007a4280000)
+  to   space 11776K, 0% used [0x00000007a4880000,0x00000007a4880000,0x00000007a5400000)
+ ParOldGen       total 295424K, used 67083K [0x00000006c5c00000, 0x00000006d7c80000, 0x000000076c980000)
+  object space 295424K, 22% used [0x00000006c5c00000,0x00000006c9d82f88,0x00000006d7c80000)
+ Metaspace       used 72805K, capacity 78431K, committed 78552K, reserved 1118208K
+  class space    used 8445K, capacity 10212K, committed 10240K, reserved 1048576K
+Event: 35.107 GC heap after
+Heap after GC invocations=123 (full 57):
+ PSYoungGen      total 914944K, used 9086K [0x000000076c980000, 0x00000007a5700000, 0x00000007c0000000)
+  eden space 903168K, 0% used [0x000000076c980000,0x000000076c980000,0x00000007a3b80000)
+  from space 11776K, 77% used [0x00000007a4880000,0x00000007a515fba8,0x00000007a5400000)
+  to   space 13312K, 0% used [0x00000007a3b80000,0x00000007a3b80000,0x00000007a4880000)
+ ParOldGen       total 295424K, used 67083K [0x00000006c5c00000, 0x00000006d7c80000, 0x000000076c980000)
+  object space 295424K, 22% used [0x00000006c5c00000,0x00000006c9d82f88,0x00000006d7c80000)
+ Metaspace       used 72805K, capacity 78431K, committed 78552K, reserved 1118208K
+  class space    used 8445K, capacity 10212K, committed 10240K, reserved 1048576K
+}
+Event: 35.107 GC heap before
+{Heap before GC invocations=124 (full 58):
+ PSYoungGen      total 914944K, used 9086K [0x000000076c980000, 0x00000007a5700000, 0x00000007c0000000)
+  eden space 903168K, 0% used [0x000000076c980000,0x000000076c980000,0x00000007a3b80000)
+  from space 11776K, 77% used [0x00000007a4880000,0x00000007a515fba8,0x00000007a5400000)
+  to   space 13312K, 0% used [0x00000007a3b80000,0x00000007a3b80000,0x00000007a4880000)
+ ParOldGen       total 295424K, used 67083K [0x00000006c5c00000, 0x00000006d7c80000, 0x000000076c980000)
+  object space 295424K, 22% used [0x00000006c5c00000,0x00000006c9d82f88,0x00000006d7c80000)
+ Metaspace       used 72805K, capacity 78431K, committed 78552K, reserved 1118208K
+  class space    used 8445K, capacity 10212K, committed 10240K, reserved 1048576K
+Event: 35.250 GC heap after
+Heap after GC invocations=124 (full 58):
+ PSYoungGen      total 914944K, used 0K [0x000000076c980000, 0x00000007a5700000, 0x00000007c0000000)
+  eden space 903168K, 0% used [0x000000076c980000,0x000000076c980000,0x00000007a3b80000)
+  from space 11776K, 0% used [0x00000007a4880000,0x00000007a4880000,0x00000007a5400000)
+  to   space 13312K, 0% used [0x00000007a3b80000,0x00000007a3b80000,0x00000007a4880000)
+ ParOldGen       total 295424K, used 70567K [0x00000006c5c00000, 0x00000006d7c80000, 0x000000076c980000)
+  object space 295424K, 23% used [0x00000006c5c00000,0x00000006ca0e9dc8,0x00000006d7c80000)
+ Metaspace       used 72805K, capacity 78431K, committed 78552K, reserved 1118208K
+  class space    used 8445K, capacity 10212K, committed 10240K, reserved 1048576K
+}
+Event: 36.328 GC heap before
+{Heap before GC invocations=125 (full 58):
+ PSYoungGen      total 914944K, used 153460K [0x000000076c980000, 0x00000007a5700000, 0x00000007c0000000)
+  eden space 903168K, 16% used [0x000000076c980000,0x0000000775f5d378,0x00000007a3b80000)
+  from space 11776K, 0% used [0x00000007a4880000,0x00000007a4880000,0x00000007a5400000)
+  to   space 13312K, 0% used [0x00000007a3b80000,0x00000007a3b80000,0x00000007a4880000)
+ ParOldGen       total 295424K, used 70567K [0x00000006c5c00000, 0x00000006d7c80000, 0x000000076c980000)
+  object space 295424K, 23% used [0x00000006c5c00000,0x00000006ca0e9dc8,0x00000006d7c80000)
+ Metaspace       used 72831K, capacity 78431K, committed 78552K, reserved 1118208K
+  class space    used 8447K, capacity 10212K, committed 10240K, reserved 1048576K
+Event: 36.338 GC heap after
+Heap after GC invocations=125 (full 58):
+ PSYoungGen      total 916480K, used 13305K [0x000000076c980000, 0x00000007a5e00000, 0x00000007c0000000)
+  eden space 903168K, 0% used [0x000000076c980000,0x000000076c980000,0x00000007a3b80000)
+  from space 13312K, 99% used [0x00000007a3b80000,0x00000007a487e5e8,0x00000007a4880000)
+  to   space 16896K, 0% used [0x00000007a4d80000,0x00000007a4d80000,0x00000007a5e00000)
+ ParOldGen       total 295424K, used 73887K [0x00000006c5c00000, 0x00000006d7c80000, 0x000000076c980000)
+  object space 295424K, 25% used [0x00000006c5c00000,0x00000006ca427d38,0x00000006d7c80000)
+ Metaspace       used 72831K, capacity 78431K, committed 78552K, reserved 1118208K
+  class space    used 8447K, capacity 10212K, committed 10240K, reserved 1048576K
+}
+Event: 36.338 GC heap before
+{Heap before GC invocations=126 (full 59):
+ PSYoungGen      total 916480K, used 13305K [0x000000076c980000, 0x00000007a5e00000, 0x00000007c0000000)
+  eden space 903168K, 0% used [0x000000076c980000,0x000000076c980000,0x00000007a3b80000)
+  from space 13312K, 99% used [0x00000007a3b80000,0x00000007a487e5e8,0x00000007a4880000)
+  to   space 16896K, 0% used [0x00000007a4d80000,0x00000007a4d80000,0x00000007a5e00000)
+ ParOldGen       total 295424K, used 73887K [0x00000006c5c00000, 0x00000006d7c80000, 0x000000076c980000)
+  object space 295424K, 25% used [0x00000006c5c00000,0x00000006ca427d38,0x00000006d7c80000)
+ Metaspace       used 72831K, capacity 78431K, committed 78552K, reserved 1118208K
+  class space    used 8447K, capacity 10212K, committed 10240K, reserved 1048576K
+Event: 36.424 GC heap after
+Heap after GC invocations=126 (full 59):
+ PSYoungGen      total 916480K, used 0K [0x000000076c980000, 0x00000007a5e00000, 0x00000007c0000000)
+  eden space 903168K, 0% used [0x000000076c980000,0x000000076c980000,0x00000007a3b80000)
+  from space 13312K, 0% used [0x00000007a3b80000,0x00000007a3b80000,0x00000007a4880000)
+  to   space 16896K, 0% used [0x00000007a4d80000,0x00000007a4d80000,0x00000007a5e00000)
+ ParOldGen       total 295424K, used 77768K [0x00000006c5c00000, 0x00000006d7c80000, 0x000000076c980000)
+  object space 295424K, 26% used [0x00000006c5c00000,0x00000006ca7f2310,0x00000006d7c80000)
+ Metaspace       used 72831K, capacity 78431K, committed 78552K, reserved 1118208K
+  class space    used 8447K, capacity 10212K, committed 10240K, reserved 1048576K
+}
+
+Deoptimization events (10 events):
+Event: 34.952 Thread 0x000000001fe69000 Uncommon trap: reason=unstable_if action=reinterpret pc=0x0000000004c17cf0 method=org.eclipse.jdt.internal.compiler.parser.Scanner.internalScanIdentifierOrKeyword(II[C)I @ 623
+Event: 35.093 Thread 0x000000001fe69000 Uncommon trap: reason=unstable_if action=reinterpret pc=0x0000000004e91974 method=org.eclipse.jdt.internal.core.index.DiskIndex.writeStreamInt(Ljava/io/FileOutputStream;I)V @ 9
+Event: 35.778 Thread 0x000000001fe69000 Uncommon trap: reason=unstable_if action=reinterpret pc=0x0000000004b5a2d0 method=org.eclipse.jdt.internal.compiler.classfmt.MethodInfo.readModifierRelatedAttributes()V @ 138
+Event: 37.243 Thread 0x000000001fe69000 Uncommon trap: reason=unstable_if action=reinterpret pc=0x0000000004a9c438 method=org.eclipse.jdt.internal.core.index.DiskIndex.writeStreamChars(Ljava/io/FileOutputStream;[C)V @ 100
+Event: 37.968 Thread 0x000000001fe69000 Uncommon trap: reason=unstable_if action=reinterpret pc=0x0000000004cd6588 method=org.eclipse.jdt.internal.compiler.parser.Scanner.internalScanIdentifierOrKeyword(II[C)I @ 778
+Event: 38.950 Thread 0x000000001fe69000 Uncommon trap: reason=unstable_if action=reinterpret pc=0x000000000438423c method=org.eclipse.jdt.internal.core.index.Index.containerRelativePath(Ljava/lang/String;)Ljava/lang/String; @ 9
+Event: 38.950 Thread 0x000000001fe69000 Uncommon trap: reason=unstable_if action=reinterpret pc=0x0000000004f06794 method=org.eclipse.jdt.internal.core.search.JavaSearchParticipant.indexDocument(Lorg/eclipse/jdt/core/search/SearchDocument;Lorg/eclipse/core/runtime/IPath;)V @ 13
+Event: 38.956 Thread 0x000000001fe69000 Uncommon trap: reason=unstable_if action=reinterpret pc=0x0000000004e8d8dc method=org.eclipse.jdt.core.compiler.CharOperation.indexOf([C[CZII)I @ 133
+Event: 39.007 Thread 0x000000001fe69000 Uncommon trap: reason=unstable_if action=reinterpret pc=0x00000000044c30ac method=org.eclipse.jdt.internal.core.index.Index.containerRelativePath(Ljava/lang/String;)Ljava/lang/String; @ 9
+Event: 65.787 Thread 0x000000001fe69000 Uncommon trap: reason=unstable_if action=reinterpret pc=0x00000000033c82c8 method=org.eclipse.jdt.internal.core.index.MemoryIndex.remove(Ljava/lang/String;)V @ 8
+
+Classes redefined (2 events):
+Event: 254.457 Thread 0x000000001c6fa000 redefined class name=org.eclipse.sphinx.tests.emf.validation.ValidationUtilTest, count=1
+Event: 699.056 Thread 0x000000001c6fa000 redefined class name=org.eclipse.sphinx.tests.emf.validation.ValidationUtilTest, count=2
+
+Internal exceptions (10 events):
+Event: 38.956 Thread 0x000000001fe69000 Exception <a 'java/lang/ArrayIndexOutOfBoundsException'> (0x00000007750696e8) thrown at [C:\ade\jenkins\workspace\8-2-build-windows-amd64-cygwin\jdk8u241\331\hotspot\src\share\vm\runtime\sharedRuntime.cpp, line 605]
+Event: 39.011 Thread 0x000000001fe69000 Exception <a 'java/lang/ArrayIndexOutOfBoundsException'> (0x0000000775079e98) thrown at [C:\ade\jenkins\workspace\8-2-build-windows-amd64-cygwin\jdk8u241\331\hotspot\src\share\vm\runtime\sharedRuntime.cpp, line 605]
+Event: 39.063 Thread 0x000000001fe69000 Exception <a 'java/lang/ArrayIndexOutOfBoundsException'> (0x0000000775084730) thrown at [C:\ade\jenkins\workspace\8-2-build-windows-amd64-cygwin\jdk8u241\331\hotspot\src\share\vm\runtime\sharedRuntime.cpp, line 605]
+Event: 39.118 Thread 0x000000001fe69000 Exception <a 'java/lang/ArrayIndexOutOfBoundsException'> (0x000000077508f4d8) thrown at [C:\ade\jenkins\workspace\8-2-build-windows-amd64-cygwin\jdk8u241\331\hotspot\src\share\vm\runtime\sharedRuntime.cpp, line 605]
+Event: 39.175 Thread 0x000000001fe69000 Exception <a 'java/lang/ArrayIndexOutOfBoundsException'> (0x000000077509cb38) thrown at [C:\ade\jenkins\workspace\8-2-build-windows-amd64-cygwin\jdk8u241\331\hotspot\src\share\vm\runtime\sharedRuntime.cpp, line 605]
+Event: 65.791 Thread 0x000000001fe69000 Exception <a 'java/lang/ArrayIndexOutOfBoundsException'> (0x00000007772f46a8) thrown at [C:\ade\jenkins\workspace\8-2-build-windows-amd64-cygwin\jdk8u241\331\hotspot\src\share\vm\runtime\sharedRuntime.cpp, line 605]
+Event: 65.850 Thread 0x000000001fe69000 Exception <a 'java/lang/ArrayIndexOutOfBoundsException'> (0x00000007773039a8) thrown at [C:\ade\jenkins\workspace\8-2-build-windows-amd64-cygwin\jdk8u241\331\hotspot\src\share\vm\runtime\sharedRuntime.cpp, line 605]
+Event: 65.905 Thread 0x000000001fe69000 Exception <a 'java/lang/ArrayIndexOutOfBoundsException'> (0x000000077730e740) thrown at [C:\ade\jenkins\workspace\8-2-build-windows-amd64-cygwin\jdk8u241\331\hotspot\src\share\vm\runtime\sharedRuntime.cpp, line 605]
+Event: 65.958 Thread 0x000000001fe69000 Exception <a 'java/lang/ArrayIndexOutOfBoundsException'> (0x0000000777319128) thrown at [C:\ade\jenkins\workspace\8-2-build-windows-amd64-cygwin\jdk8u241\331\hotspot\src\share\vm\runtime\sharedRuntime.cpp, line 605]
+Event: 66.011 Thread 0x000000001fe69000 Exception <a 'java/lang/ArrayIndexOutOfBoundsException'> (0x00000007773240e8) thrown at [C:\ade\jenkins\workspace\8-2-build-windows-amd64-cygwin\jdk8u241\331\hotspot\src\share\vm\runtime\sharedRuntime.cpp, line 605]
+
+Events (10 events):
+Event: 699.071 Executing VM operation: ChangeBreakpoints
+Event: 699.078 Executing VM operation: ChangeBreakpoints done
+Event: 699.090 Executing VM operation: ChangeBreakpoints
+Event: 699.094 Executing VM operation: ChangeBreakpoints done
+Event: 699.105 Executing VM operation: GetOwnedMonitorInfo
+Event: 699.105 Executing VM operation: GetOwnedMonitorInfo done
+Event: 699.105 Executing VM operation: GetCurrentContendedMonitor
+Event: 699.105 Executing VM operation: GetCurrentContendedMonitor done
+Event: 815.159 Thread 0x000000001e646000 flushing nmethod 0x0000000003ecd790
+Event: 899.309 Executing VM operation: GetOrSetLocal
+
+
+Dynamic libraries:
+0x00007ff61d2c0000 - 0x00007ff61d2f7000 	C:\Program Files\Java\jre1.8.0_241\bin\javaw.exe
+0x00007fff64d60000 - 0x00007fff64f50000 	C:\Windows\SYSTEM32\ntdll.dll
+0x00007fff62e10000 - 0x00007fff62ec2000 	C:\Windows\System32\KERNEL32.DLL
+0x00007fff61df0000 - 0x00007fff62095000 	C:\Windows\System32\KERNELBASE.dll
+0x00007fff63690000 - 0x00007fff63733000 	C:\Windows\System32\ADVAPI32.dll
+0x00007fff643d0000 - 0x00007fff6446e000 	C:\Windows\System32\msvcrt.dll
+0x00007fff63180000 - 0x00007fff63217000 	C:\Windows\System32\sechost.dll
+0x00007fff63220000 - 0x00007fff6333f000 	C:\Windows\System32\RPCRT4.dll
+0x00007fff64680000 - 0x00007fff64814000 	C:\Windows\System32\USER32.dll
+0x00007fff62250000 - 0x00007fff62271000 	C:\Windows\System32\win32u.dll
+0x00007fff64960000 - 0x00007fff64986000 	C:\Windows\System32\GDI32.dll
+0x00007fff62a30000 - 0x00007fff62bc8000 	C:\Windows\System32\gdi32full.dll
+0x00007fff61d30000 - 0x00007fff61dce000 	C:\Windows\System32\msvcp_win.dll
+0x00007fff62c80000 - 0x00007fff62d7a000 	C:\Windows\System32\ucrtbase.dll
+0x00007fff51930000 - 0x00007fff51bb4000 	C:\Windows\WinSxS\amd64_microsoft.windows.common-controls_6595b64144ccf1df_6.0.18362.1379_none_9e7ff3b3e45cc0c4\COMCTL32.dll
+0x00007fff63350000 - 0x00007fff63687000 	C:\Windows\System32\combase.dll
+0x00007fff62d80000 - 0x00007fff62e01000 	C:\Windows\System32\bcryptPrimitives.dll
+0x00007fff64b30000 - 0x00007fff64b5e000 	C:\Windows\System32\IMM32.DLL
+0x00007fff37e60000 - 0x00007fff37f12000 	C:\Program Files\McAfee\Endpoint Security\Threat Prevention\Ips\EpMPApi.dll
+0x00007fff620a0000 - 0x00007fff620fc000 	C:\Windows\System32\WINTRUST.dll
+0x00007fff61c70000 - 0x00007fff61c82000 	C:\Windows\System32\MSASN1.dll
+0x00007fff62100000 - 0x00007fff6224a000 	C:\Windows\System32\CRYPT32.dll
+0x000000006db60000 - 0x000000006db6c000 	C:\Program Files\McAfee\Endpoint Security\Threat Prevention\Ips\EpMPThe.dll
+0x000000006d6d0000 - 0x000000006d7a2000 	C:\Program Files\Java\jre1.8.0_241\bin\msvcr100.dll
+0x000000006bf80000 - 0x000000006c82c000 	C:\Program Files\Java\jre1.8.0_241\bin\server\jvm.dll
+0x00007fff63bb0000 - 0x00007fff63bb8000 	C:\Windows\System32\PSAPI.DLL
+0x00007fff5a500000 - 0x00007fff5a50a000 	C:\Windows\SYSTEM32\VERSION.dll
+0x00007fff5efa0000 - 0x00007fff5efc4000 	C:\Windows\SYSTEM32\WINMM.dll
+0x00007fff4c680000 - 0x00007fff4c689000 	C:\Windows\SYSTEM32\WSOCK32.dll
+0x00007fff63c70000 - 0x00007fff63cdf000 	C:\Windows\System32\WS2_32.dll
+0x00007fff5ef70000 - 0x00007fff5ef9d000 	C:\Windows\SYSTEM32\WINMMBASE.dll
+0x00007fff61ce0000 - 0x00007fff61d2a000 	C:\Windows\System32\cfgmgr32.dll
+0x00007fff5a7d0000 - 0x00007fff5a7df000 	C:\Program Files\Java\jre1.8.0_241\bin\verify.dll
+0x00007fff50da0000 - 0x00007fff50dc9000 	C:\Program Files\Java\jre1.8.0_241\bin\java.dll
+0x00007fff4ec80000 - 0x00007fff4ecb5000 	C:\Program Files\Java\jre1.8.0_241\bin\jdwp.dll
+0x00007fff505d0000 - 0x00007fff505d8000 	C:\Program Files\Java\jre1.8.0_241\bin\npt.dll
+0x00007fff50c70000 - 0x00007fff50c86000 	C:\Program Files\Java\jre1.8.0_241\bin\zip.dll
+0x00007fff63ce0000 - 0x00007fff643c8000 	C:\Windows\System32\SHELL32.dll
+0x00007fff63bc0000 - 0x00007fff63c67000 	C:\Windows\System32\shcore.dll
+0x00007fff622b0000 - 0x00007fff62a2b000 	C:\Windows\System32\windows.storage.dll
+0x00007fff61c20000 - 0x00007fff61c43000 	C:\Windows\System32\profapi.dll
+0x00007fff61c90000 - 0x00007fff61cda000 	C:\Windows\System32\powrprof.dll
+0x00007fff61c10000 - 0x00007fff61c20000 	C:\Windows\System32\UMPDC.dll
+0x00007fff64ad0000 - 0x00007fff64b22000 	C:\Windows\System32\shlwapi.dll
+0x00007fff61c50000 - 0x00007fff61c61000 	C:\Windows\System32\kernel.appcore.dll
+0x00007fff61dd0000 - 0x00007fff61de7000 	C:\Windows\System32\cryptsp.dll
+0x00007fff505c0000 - 0x00007fff505c9000 	C:\Program Files\Java\jre1.8.0_241\bin\dt_socket.dll
+0x00007fff4ba40000 - 0x00007fff4ba56000 	C:\Windows\system32\napinsp.dll
+0x00007fff4b9e0000 - 0x00007fff4b9fa000 	C:\Windows\system32\pnrpnsp.dll
+0x00007fff61400000 - 0x00007fff61467000 	C:\Windows\System32\mswsock.dll
+0x00007fff61160000 - 0x00007fff6122b000 	C:\Windows\SYSTEM32\DNSAPI.dll
+0x00007fff62ed0000 - 0x00007fff62ed8000 	C:\Windows\System32\NSI.dll
+0x00007fff61120000 - 0x00007fff6115a000 	C:\Windows\SYSTEM32\IPHLPAPI.DLL
+0x00007fff4b9d0000 - 0x00007fff4b9de000 	C:\Windows\System32\winrnr.dll
+0x00007fff5d7b0000 - 0x00007fff5d7cc000 	C:\Windows\system32\NLAapi.dll
+0x00007fff5ca30000 - 0x00007fff5ca45000 	C:\Windows\system32\wshbth.dll
+0x00007fff5c6f0000 - 0x00007fff5c767000 	C:\Windows\System32\fwpuclnt.dll
+0x00007fff62280000 - 0x00007fff622a6000 	C:\Windows\System32\bcrypt.dll
+0x00007fff572e0000 - 0x00007fff572ea000 	C:\Windows\System32\rasadhlp.dll
+0x00007fff60d20000 - 0x00007fff60d53000 	C:\Windows\system32\rsaenh.dll
+0x00007fff61b30000 - 0x00007fff61b55000 	C:\Windows\SYSTEM32\USERENV.dll
+0x00007fff61580000 - 0x00007fff6158c000 	C:\Windows\SYSTEM32\CRYPTBASE.dll
+0x00007fff50bd0000 - 0x00007fff50bea000 	C:\Program Files\Java\jre1.8.0_241\bin\net.dll
+0x00007fff5c140000 - 0x00007fff5c156000 	C:\Windows\SYSTEM32\dhcpcsvc6.DLL
+0x00007fff5c0e0000 - 0x00007fff5c0fc000 	C:\Windows\SYSTEM32\dhcpcsvc.DLL
+0x00007fff4ecf0000 - 0x00007fff4ed02000 	C:\Program Files\Java\jre1.8.0_241\bin\nio.dll
+0x00007fff5a860000 - 0x00007fff5a88a000 	D:\sphinx\pool\pool\plugins\org.eclipse.equinox.launcher.win32.win32.x86_64_1.2.0.v20200915-1442\eclipse_11100.dll
+0x0000000002c20000 - 0x0000000002cc8000 	C:\Users\gisa261718\sphinx-0-9-x\ws\.metadata\.plugins\org.eclipse.pde.core\pde-junit\org.eclipse.osgi\421\0\.cp\swt-win32-4530.dll
+0x00000000267e0000 - 0x0000000026937000 	C:\Windows\System32\ole32.dll
+0x00007fff64890000 - 0x00007fff64955000 	C:\Windows\System32\OLEAUT32.dll
+0x00007fff62f90000 - 0x00007fff63060000 	C:\Windows\System32\comdlg32.dll
+0x00007fff5fc20000 - 0x00007fff600f5000 	C:\Windows\SYSTEM32\WININET.dll
+0x00007fff4dab0000 - 0x00007fff4db39000 	C:\Windows\SYSTEM32\WINSPOOL.DRV
+0x00007fff51c40000 - 0x00007fff51c59000 	C:\Windows\SYSTEM32\USP10.dll
+0x00007fff5d4f0000 - 0x00007fff5d5e0000 	C:\Windows\SYSTEM32\PROPSYS.dll
+0x00007fff5f1f0000 - 0x00007fff5f289000 	C:\Windows\system32\uxtheme.dll
+0x00007fff64990000 - 0x00007fff64ac5000 	C:\Windows\System32\MSCTF.dll
+0x00007fff62ee0000 - 0x00007fff62f82000 	C:\Windows\System32\clbcatq.dll
+0x00007fff2fa00000 - 0x00007fff2fb95000 	C:\Windows\System32\TaskFlowDataEngine.dll
+0x00007fff5ca50000 - 0x00007fff5cba2000 	C:\Windows\SYSTEM32\wintypes.dll
+0x00007fff491c0000 - 0x00007fff49705000 	C:\Windows\System32\cdp.dll
+0x00007fff5eea0000 - 0x00007fff5ef70000 	C:\Windows\System32\dsreg.dll
+0x00007fff5ee10000 - 0x00007fff5ee9a000 	C:\Windows\System32\msvcp110_win.dll
+0x00007fff37890000 - 0x00007fff3790a000 	C:\Windows\System32\OneCoreCommonProxyStub.dll
+0x0000000022e70000 - 0x0000000022e8e000 	C:\Users\gisa261718\sphinx-0-9-x\ws\.metadata\.plugins\org.eclipse.pde.core\pde-junit\org.eclipse.osgi\421\0\.cp\swt-gdip-win32-4530.dll
+0x00007fff508d0000 - 0x00007fff50a76000 	C:\Windows\WinSxS\amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.18362.1379_none_cf6ae6993eef3a92\gdiplus.dll
+0x00007fff5b720000 - 0x00007fff5b8cf000 	C:\Windows\SYSTEM32\WindowsCodecs.dll
+0x0000000180000000 - 0x0000000180012000 	C:\Users\gisa261718\sphinx-0-9-x\ws\.metadata\.plugins\org.eclipse.pde.core\pde-junit\org.eclipse.osgi\66\0\.cp\os\win32\x86_64\localfile_1_0_0.dll
+0x00007fff4da40000 - 0x00007fff4daa5000 	C:\Windows\SYSTEM32\oleacc.dll
+0x00007fff4b960000 - 0x00007fff4b9a1000 	C:\Windows\system32\mlang.dll
+0x00007fff518b0000 - 0x00007fff518b7000 	C:\Windows\SYSTEM32\msimg32.dll
+0x00007fff34450000 - 0x00007fff3448b000 	C:\Windows\system32\dataexchange.dll
+0x00007fff5df60000 - 0x00007fff5e1bb000 	C:\Windows\system32\d3d11.dll
+0x00007fff5e620000 - 0x00007fff5e7fd000 	C:\Windows\system32\dcomp.dll
+0x00007fff60700000 - 0x00007fff607eb000 	C:\Windows\system32\dxgi.dll
+0x00007fff60670000 - 0x00007fff60690000 	C:\Windows\SYSTEM32\dxcore.dll
+0x00007fff5f2c0000 - 0x00007fff5f51a000 	C:\Windows\system32\twinapi.appcore.dll
+0x00007fff5f6f0000 - 0x00007fff5f719000 	C:\Windows\system32\RMCLIENT.dll
+0x00007fff18740000 - 0x00007fff18e45000 	C:\Windows\System32\ieframe.dll
+0x00007fff55c40000 - 0x00007fff55ee7000 	C:\Windows\System32\iertutil.dll
+0x00007fff51030000 - 0x00007fff51047000 	C:\Windows\System32\NETAPI32.dll
+0x00007fff57320000 - 0x00007fff57410000 	C:\Windows\System32\WINHTTP.dll
+0x00007fff5baa0000 - 0x00007fff5bab7000 	C:\Windows\System32\WKSCLI.DLL
+0x00007fff61230000 - 0x00007fff6123c000 	C:\Windows\System32\NETUTILS.DLL
+0x00007fff63100000 - 0x00007fff63176000 	C:\Windows\System32\coml2.dll
+0x00007fff55ef0000 - 0x00007fff560c6000 	C:\Windows\SYSTEM32\urlmon.dll
+0x00007fff61a50000 - 0x00007fff61aed000 	C:\Windows\SYSTEM32\sxs.dll
+0x00007fff2f200000 - 0x00007fff2f251000 	C:\Windows\SYSTEM32\msIso.dll
+0x00007fff05ae0000 - 0x00007fff07097000 	C:\Windows\System32\mshtml.dll
+0x00007fff61af0000 - 0x00007fff61b27000 	C:\Windows\System32\SspiCli.dll
+0x00007fff43490000 - 0x00007fff434bb000 	C:\Windows\System32\srpapi.dll
+0x00007fff61610000 - 0x00007fff61639000 	C:\Windows\SYSTEM32\WLDP.DLL
+0x00007fff05630000 - 0x00007fff05adb000 	C:\Windows\System32\jscript9.dll
+0x00007fff55450000 - 0x00007fff554ed000 	C:\Windows\System32\TextInputFramework.dll
+0x00007fff5bd40000 - 0x00007fff5c06a000 	C:\Windows\System32\CoreUIComponents.dll
+0x00007fff5eb70000 - 0x00007fff5ec44000 	C:\Windows\System32\CoreMessaging.dll
+0x00007fff608e0000 - 0x00007fff60911000 	C:\Windows\SYSTEM32\ntmarta.dll
+0x00007fff467d0000 - 0x00007fff467e1000 	C:\Users\gisa261718\sphinx-0-9-x\ws\.metadata\.plugins\org.eclipse.pde.core\pde-junit\org.eclipse.osgi\69\0\.cp\jWinHttp-1.0.0.dll
+0x00007fff53ad0000 - 0x00007fff53dce000 	C:\Windows\SYSTEM32\DWrite.dll
+0x00007fff2a650000 - 0x00007fff2a662000 	C:\Windows\system32\msimtf.dll
+0x00007fff54030000 - 0x00007fff5403c000 	C:\Windows\SYSTEM32\Secur32.dll
+0x00007fff29560000 - 0x00007fff297d1000 	C:\Windows\System32\uiautomationcore.dll
+0x00007fff5d9a0000 - 0x00007fff5df60000 	C:\Windows\System32\d2d1.dll
+0x00007fff59890000 - 0x00007fff59fd1000 	C:\Windows\SYSTEM32\d3d10warp.dll
+
+VM Arguments:
+jvm_args: -agentlib:jdwp=transport=dt_socket,suspend=y,address=localhost:54465 -ea -Declipse.pde.launch=true -Declipse.p2.data.area=@config.dir\p2 -Dfile.encoding=UTF-8 
+java_command: org.eclipse.equinox.launcher.Main -os win32 -ws win32 -arch x86_64 -nl en_US -consoleLog -version 3 -port 54464 -testLoaderClass org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader -loaderpluginname org.eclipse.jdt.junit4.runtime -test org.eclipse.sphinx.tests.emf.validation.ValidationUtilTest:testMultipleIdenticalMarkersValidation -application org.eclipse.pde.junit.runtime.uitestapplication -product org.eclipse.sdk.ide -data C:\Users\gisa261718\sphinx-0-9-x\ws/../junit-workspace -configuration file:C:/Users/gisa261718/sphinx-0-9-x/ws/.metadata/.plugins/org.eclipse.pde.core/pde-junit/ -dev file:C:/Users/gisa261718/sphinx-0-9-x/ws/.metadata/.plugins/org.eclipse.pde.core/pde-junit/dev.properties -os win32 -ws win32 -arch x86_64 -nl en_US -consoleLog -testpluginname org.eclipse.sphinx.tests.emf.validation
+java_class_path (initial): D:\sphinx\pool\pool\plugins\org.eclipse.equinox.launcher_1.3.100.v20150511-1540.jar
+Launcher Type: SUN_STANDARD
+
+Environment Variables:
+PATH=D:/sphinx/pool/pool/plugins/org.eclipse.justj.openjdk.hotspot.jre.full.win32.x86_64_15.0.2.v20210201-0955/jre/bin/server;D:/sphinx/pool/pool/plugins/org.eclipse.justj.openjdk.hotspot.jre.full.win32.x86_64_15.0.2.v20210201-0955/jre/bin;C:\Program Files (x86)\Common Files\Oracle\Java\javapath;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;C:\Program Files\Intel\WiFi\bin\;C:\Program Files\Common Files\Intel\WirelessCommon\;C:\Strawberry\perl\bin;C:\Strawberry\perl\site\bin;C:\Strawberry\c\bin;C:\Program Files (x86)\Pulse Secure\VC142.CRT\X64\;C:\Program Files (x86)\Pulse Secure\VC142.CRT\X86\;C:\Users\gisa261718\AppData\Local\Microsoft\WindowsApps;;C:\Users\gisa261718\sphinx-0-9-x\eclipse;
+USERNAME=gisa261718
+OS=Windows_NT
+PROCESSOR_IDENTIFIER=Intel64 Family 6 Model 60 Stepping 3, GenuineIntel
+
+
+
+---------------  S Y S T E M  ---------------
+
+OS: Windows 10.0 , 64 bit Build 18362 (10.0.18362.1350)
+
+CPU:total 8 (initial active 8) (4 cores per cpu, 2 threads per core) family 6 model 60 stepping 3, cmov, cx8, fxsr, mmx, sse, sse2, sse3, ssse3, sse4.1, sse4.2, popcnt, avx, avx2, aes, clmul, erms, lzcnt, ht, tsc, tscinvbit, bmi1, bmi2
+
+Memory: 4k page, physical 16393444k(6305812k free), swap 18883812k(4881096k free)
+
+vm_info: Java HotSpot(TM) 64-Bit Server VM (25.241-b07) for windows-amd64 JRE (1.8.0_241-b07), built on Dec 11 2019 10:21:40 by "rejava" with MS VC++ 10.0 (VS2010)
+
+time: Mon Mar 29 11:50:40 2021
+timezone: GTB Daylight Time
+elapsed time: 899 seconds (0d 0h 14m 59s)
+
diff --git a/tests/org.eclipse.sphinx.tests.emf.validation/plugin.properties b/tests/org.eclipse.sphinx.tests.emf.validation/plugin.properties
new file mode 100644
index 0000000..c64193c
--- /dev/null
+++ b/tests/org.eclipse.sphinx.tests.emf.validation/plugin.properties
@@ -0,0 +1,27 @@
+# <copyright>
+# 
+# Copyright (c) 2021 Elektrobit and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+# 
+# Contributors: 
+#     Elektrobit - Initial API and implementation
+# 
+# </copyright>
+
+# ====================================================================
+# To code developer:
+#   Do NOT change the properties between this line and the
+#   "%%% END OF TRANSLATED PROPERTIES %%%" line.
+#   Make a new property name, append to the end of the file and change
+#   the code to use the new property.
+# ====================================================================
+
+# ====================================================================
+# %%% END OF TRANSLATED PROPERTIES %%%
+# ====================================================================
+
+pluginName=Sphinx EMF Validation Test Plug-in (Incubation)
+providerName=Eclipse Modeling Project
diff --git a/tests/org.eclipse.sphinx.tests.emf.validation/plugin.xml b/tests/org.eclipse.sphinx.tests.emf.validation/plugin.xml
new file mode 100644
index 0000000..e77cd5b
--- /dev/null
+++ b/tests/org.eclipse.sphinx.tests.emf.validation/plugin.xml
@@ -0,0 +1,109 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+
+<!--
+<copyright>
+
+Copyright (c) 2021 Elektrobit and others.
+All rights reserved. This program and the accompanying materials
+are made available under the terms of the Eclipse Public License v1.0
+which accompanies this distribution, and is available at
+http://www.eclipse.org/legal/epl-v10.html
+
+Contributors:
+    Elektrobit - Initial API and implementation
+
+</copyright>
+-->
+
+<plugin>
+
+   <!-- Constraint category definition -->
+
+   <extension point="org.eclipse.emf.validation.constraintProviders">
+      <category
+            name="Hummingbird 2.0 Constraints"
+            id="org.eclipse.sphinx.examples.hummingbird20.validation.constraints.category">
+         Constraints for Hummingbird 2.0 metamodel
+      </category>
+   </extension>
+
+   <!-- The constraints themselves -->
+
+   <extension point="org.eclipse.emf.validation.constraintProviders">
+      <constraintProvider cache="true">
+
+       <package namespaceUri="http://www.eclipse.org/sphinx/examples/hummingbird/2.0.1/instancemodel"/>
+
+        <constraints categories="org.eclipse.sphinx.examples.hummingbird20.validation.constraints.category">
+            <constraint
+                  id="org.eclipse.sphinx.tests.emf.validation.constraints.CustomApplicationErrorInNameConstraint"
+                  name="The name must not contain Error"
+                  lang="Java"
+                  class="org.eclipse.sphinx.tests.emf.validation.constraints.CustomApplicationErrorInNameConstraint"
+                  severity="ERROR"
+                  mode="Live"
+                  statusCode="101">
+               <description>Checks if the name is correct.</description>
+               <message>The name of &quot;{0}&quot; must not contain &quot;Error&quot; in name.</message>
+               <target class="Identifiable">
+                  <event name="Set">
+                     <feature name="name" />
+                  </event>
+                  <event name="Unset">
+                    <feature name="name" />
+                  </event>
+               </target>
+            </constraint>
+
+
+            <!-- TODO Switch back to OCL implementation when OCL supports oclContainer() operation or EMF Validation supports one of the below
+                 mentioned workarounds to be implemented:
+                 http://wiki.eclipse.org/MDT/OCL/FAQ#How_do_I_invoke_methods_such_as_eContainer.28.29.2C_eContents.28.29.2C_eGet.28.29.3F -->
+            <!--constraint
+                  id="org.eclipse.sphinx.examples.hummingbird20.validation.constraints.interfaceNamesMustBeUnique"
+                  name="Interface names must be unique"
+                  lang="OCL"
+                  severity="ERROR"
+                  mode="Live"
+                  statusCode="103">
+               <description>Checks if the names of all interfaces within the same platform are unique.</description>
+               <message>The interface "{0}" has the same name as another interface within same platform.</message>
+               <target class="Interface">
+                  <event name="Set">
+                     <feature name="name"/>
+                  </event>
+                  <event name="Unset">
+                    <feature name="name" />
+                  </event>
+               </target>
+
+               <![CDATA[
+                  self.oclContainer().oclAsType(Platform).interfaces->select(i | i <> self and i.name = self.name)->isEmpty()
+               ]]>
+
+            </constraint-->
+
+         </constraints>
+      </constraintProvider>
+    </extension>
+
+   <!-- Client context definition -->
+
+   <extension point="org.eclipse.emf.validation.constraintBindings">
+      <clientContext id="hummingbird20.identifiable.context">
+         <enablement>
+            <instanceof value="org.eclipse.sphinx.examples.hummingbird20.common.Identifiable"/>
+         </enablement>
+      </clientContext>
+   </extension>
+
+   <!-- Binding of constraint category to client context -->
+
+   <extension point="org.eclipse.emf.validation.constraintBindings">
+      <binding
+            context="hummingbird20.identifiable.context"
+            category="org.eclipse.sphinx.examples.hummingbird20.validation.constraints.category"/>
+   </extension>
+
+</plugin>
diff --git a/tests/org.eclipse.sphinx.tests.emf.validation/pom.xml b/tests/org.eclipse.sphinx.tests.emf.validation/pom.xml
new file mode 100644
index 0000000..e76a79f
--- /dev/null
+++ b/tests/org.eclipse.sphinx.tests.emf.validation/pom.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+	<parent>
+		<groupId>org.eclipse.sphinx.releng</groupId>
+		<artifactId>org.eclipse.sphinx.releng.parent</artifactId>
+		<version>0.11.2-SNAPSHOT</version>
+		<relativePath>../../releng/org.eclipse.sphinx.releng.builds/parent/pom.xml</relativePath>
+	</parent>
+	<groupId>org.eclipse.sphinx.tests</groupId>
+	<artifactId>org.eclipse.sphinx.tests.emf.validation</artifactId>
+	<version>0.11.2-SNAPSHOT</version>
+	<packaging>eclipse-test-plugin</packaging>
+</project>
diff --git a/tests/org.eclipse.sphinx.tests.emf.validation/src/org/eclipse/sphinx/tests/emf/validation/ValidationWithCustomConstraintTest.java b/tests/org.eclipse.sphinx.tests.emf.validation/src/org/eclipse/sphinx/tests/emf/validation/ValidationWithCustomConstraintTest.java
new file mode 100644
index 0000000..5124710
--- /dev/null
+++ b/tests/org.eclipse.sphinx.tests.emf.validation/src/org/eclipse/sphinx/tests/emf/validation/ValidationWithCustomConstraintTest.java
@@ -0,0 +1,111 @@
+/**
+ * <copyright>
+ *
+ * Copyright (c) 2021 Elektrobit and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Elektrobit - [567814] The EMF validation framework reports multiple identical validation problems
+ *
+ * </copyright>
+ */
+package org.eclipse.sphinx.tests.emf.validation;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.runtime.preferences.IEclipsePreferences;
+import org.eclipse.core.runtime.preferences.InstanceScope;
+import org.eclipse.emf.common.util.Diagnostic;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.validation.service.IConstraintFilter;
+import org.eclipse.sphinx.emf.validation.diagnostic.ExtendedDiagnostician;
+import org.eclipse.sphinx.emf.validation.diagnostic.filters.RuleIdFilter;
+import org.eclipse.sphinx.emf.validation.preferences.IValidationPreferences;
+import org.eclipse.sphinx.platform.util.PlatformLogUtil;
+import org.eclipse.sphinx.tests.emf.validation.internal.Activator;
+import org.eclipse.sphinx.testutils.integration.referenceworkspace.DefaultIntegrationTestCase;
+import org.eclipse.sphinx.testutils.integration.referenceworkspace.DefaultTestReferenceWorkspace;
+import org.junit.Test;
+import org.osgi.service.prefs.BackingStoreException;
+
+/**
+ * Tests for validation with Custom Constraint
+ */
+public final class ValidationWithCustomConstraintTest extends DefaultIntegrationTestCase {
+
+	@SuppressWarnings("nls")
+	@Test
+	public void testNoMultipleIdenticalValidationErrors() {
+
+		try {
+
+			int countIdenticalErrors = 0;
+			List<String> diagnosticMessages = new ArrayList<String>();
+
+			setEMFIntrinsicConstraints(true);
+
+			IFile hbFile20_20A_1 = refWks.hbProject20_A.getFile(DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20A_5);
+			assertNotNull(hbFile20_20A_1);
+			assertTrue(hbFile20_20A_1.isAccessible());
+
+			Resource hbResource20 = refWks.editingDomain20.getResourceSet()
+					.getResource(URI.createPlatformResourceURI(
+							DefaultTestReferenceWorkspace.HB_PROJECT_NAME_20_A + "/" + DefaultTestReferenceWorkspace.HB_FILE_NAME_20_20A_5, true),
+							false);
+			assertNotNull(hbResource20);
+			assertFalse(hbResource20.getContents().isEmpty());
+
+			EObject rootObject20 = hbResource20.getContents().get(0);
+
+			ExtendedDiagnostician diagnostician = new ExtendedDiagnostician();
+
+			IConstraintFilter filter = new RuleIdFilter("org.eclipse.sphinx.tests.emf.validation.constraints.CustomApplicationErrorInNameConstraint");
+
+			Diagnostic diagnostic = diagnostician.validate(rootObject20, filter, IResource.DEPTH_INFINITE);
+
+			for (Diagnostic child : diagnostic.getChildren()) {
+
+				String message = child.getMessage();
+				diagnosticMessages.add(child.getMessage());
+
+				if (message.equals("The name of \"CustomApplication\" must not contain \"Error\" in name.")) {
+
+					countIdenticalErrors++;
+				}
+			}
+
+			String emfMultiplicitySuperTypeError = "The feature 'components' of 'Custom Application CustomApplicationError' with 0 values must have at least 1 values";
+			assertEquals("Wrong number of identical errors", 1, countIdenticalErrors);
+			assertTrue("The Emf intrinsic constraint did not report error on 'components' feature for Application super-type! Expected: " + "'"
+					+ emfMultiplicitySuperTypeError + "'", diagnosticMessages.toString().contains(emfMultiplicitySuperTypeError));
+
+		}
+
+		catch (Exception ex) {
+			PlatformLogUtil.logAsError(Activator.getPlugin(), ex);
+		}
+	}
+
+	private static void setEMFIntrinsicConstraints(boolean value) {
+		IEclipsePreferences prefs = InstanceScope.INSTANCE.getNode(org.eclipse.sphinx.emf.validation.Activator.PLUGIN_ID);
+
+		if (prefs == null) {
+			return;
+		}
+
+		prefs.putBoolean(IValidationPreferences.PREF_ENABLE_EMF_DEFAULT_RULES, value);
+		try {
+			prefs.flush();
+		} catch (BackingStoreException ex) {
+			PlatformLogUtil.logAsError(Activator.getPlugin(), ex);
+		}
+	}
+}
diff --git a/tests/org.eclipse.sphinx.tests.emf.validation/src/org/eclipse/sphinx/tests/emf/validation/constraints/CustomApplicationErrorInNameConstraint.java b/tests/org.eclipse.sphinx.tests.emf.validation/src/org/eclipse/sphinx/tests/emf/validation/constraints/CustomApplicationErrorInNameConstraint.java
new file mode 100644
index 0000000..5fd5660
--- /dev/null
+++ b/tests/org.eclipse.sphinx.tests.emf.validation/src/org/eclipse/sphinx/tests/emf/validation/constraints/CustomApplicationErrorInNameConstraint.java
@@ -0,0 +1,46 @@
+/**
+ * <copyright>
+ *
+ * Copyright (c) 2021 Elektrobit and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Elektrobit - initial implementation
+ *
+ * </copyright>
+ */
+package org.eclipse.sphinx.tests.emf.validation.constraints;
+
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.validation.AbstractModelConstraint;
+import org.eclipse.emf.validation.IValidationContext;
+import org.eclipse.sphinx.examples.hummingbird20.instancemodel.impl.ApplicationImpl;
+
+public class CustomApplicationErrorInNameConstraint extends AbstractModelConstraint {
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.eclipse.emf.validation.AbstractModelConstraint#validate(org.eclipse.emf.validation.IValidationContext)
+	 */
+	@SuppressWarnings("nls")
+	@Override
+	public IStatus validate(IValidationContext ctx) {
+
+		EObject targetObject = ctx.getTarget();
+		if (targetObject instanceof ApplicationImpl) {
+			EStructuralFeature eStructuralFeature = targetObject.eClass().getEStructuralFeature("name");
+
+			if (targetObject.eGet(eStructuralFeature).equals("CustomApplicationError")) {
+				return ctx.createFailureStatus(new Object[] { targetObject.eClass().getName() });
+			}
+
+		}
+
+		return ctx.createSuccessStatus();
+	}
+}
diff --git a/tests/org.eclipse.sphinx.tests.emf.validation/src/org/eclipse/sphinx/tests/emf/validation/internal/Activator.java b/tests/org.eclipse.sphinx.tests.emf.validation/src/org/eclipse/sphinx/tests/emf/validation/internal/Activator.java
new file mode 100644
index 0000000..1f9a1cb
--- /dev/null
+++ b/tests/org.eclipse.sphinx.tests.emf.validation/src/org/eclipse/sphinx/tests/emf/validation/internal/Activator.java
@@ -0,0 +1,87 @@
+/**
+ * <copyright>
+ *
+ * Copyright (c) 2021 Elektrobit and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Elektrobit - Initial API and implementation
+ *
+ * </copyright>
+ */
+package org.eclipse.sphinx.tests.emf.validation.internal;
+
+import org.eclipse.emf.common.EMFPlugin;
+import org.eclipse.emf.common.util.ResourceLocator;
+
+/**
+ * This is the central singleton for this plug-in.
+ */
+public final class Activator extends EMFPlugin {
+
+	/**
+	 * Keep track of the singleton.
+	 */
+	public static final Activator INSTANCE = new Activator();
+
+	/**
+	 * Keep track of the singleton.
+	 */
+	private static Implementation plugin;
+
+	/**
+	 * Create the instance.
+	 */
+	public Activator() {
+		super(new ResourceLocator[] {});
+	}
+
+	/**
+	 * Returns the singleton instance of the Eclipse plug-in.
+	 *
+	 * @return the singleton instance.
+	 */
+	@Override
+	public ResourceLocator getPluginResourceLocator() {
+		return plugin;
+	}
+
+	/**
+	 * Returns the singleton instance of the Eclipse plug-in.
+	 *
+	 * @return the singleton instance.
+	 */
+	public static Implementation getPlugin() {
+		return plugin;
+	}
+
+	/**
+	 * Returns the singleton instance of the Eclipse plug-in. This method does actually the same thing as getPlugin()
+	 * and has been put in place for compatibility reasons with Activator classes which are not EMF-based but generated
+	 * by PDE.
+	 *
+	 * @return the singleton instance.
+	 */
+	public static Implementation getDefault() {
+		return plugin;
+	}
+
+	/**
+	 * The actual implementation of the Eclipse <b>Plugin</b>.
+	 */
+	public static class Implementation extends EclipsePlugin {
+		/**
+		 * Creates an instance.
+		 */
+		public Implementation() {
+			super();
+
+			// Remember the static instance.
+			//
+			plugin = this;
+		}
+	}
+}
diff --git a/tests/org.eclipse.sphinx.tests.emf/src/org/eclipse/sphinx/tests/emf/util/EObjectUtilTest.java b/tests/org.eclipse.sphinx.tests.emf/src/org/eclipse/sphinx/tests/emf/util/EObjectUtilTest.java
index bda3039..2abadf8 100644
--- a/tests/org.eclipse.sphinx.tests.emf/src/org/eclipse/sphinx/tests/emf/util/EObjectUtilTest.java
+++ b/tests/org.eclipse.sphinx.tests.emf/src/org/eclipse/sphinx/tests/emf/util/EObjectUtilTest.java
@@ -106,16 +106,18 @@
 

 		// ==================================

 

-		assertTrue("test " + hb10ModelRoot.eClass().getName() + " is not assignable from "

-				+ org.eclipse.sphinx.examples.hummingbird10.Application.class.getName(),

+		assertTrue(

+				"test " + hb10ModelRoot.eClass().getName() + " is not assignable from "

+						+ org.eclipse.sphinx.examples.hummingbird10.Application.class.getName(),

 				EObjectUtil.isAssignableFrom(hb10ModelRoot.eClass(), org.eclipse.sphinx.examples.hummingbird10.Application.class.getName()));

 

 		assertTrue("test " + hb10ModelRoot.eClass().getName() + " is not assignable from " + EObject.class.getName(),

 				EObjectUtil.isAssignableFrom(hb10ModelRoot.eClass(), EObject.class.getName()));

 

 		// --------------

-		assertTrue("test " + hb10Component.eClass().getName() + " is not assignable from "

-				+ org.eclipse.sphinx.examples.hummingbird10.Component.class.getName(),

+		assertTrue(

+				"test " + hb10Component.eClass().getName() + " is not assignable from "

+						+ org.eclipse.sphinx.examples.hummingbird10.Component.class.getName(),

 				EObjectUtil.isAssignableFrom(hb10Component.eClass(), org.eclipse.sphinx.examples.hummingbird10.Component.class.getName()));

 

 		assertTrue("test " + hb10Component.eClass().getName() + " is not assignable from " + EObject.class.getName(),

@@ -242,8 +244,8 @@
 		assertNotNull(EObjectUtil.findEClassifier(InstanceModel20Package.eINSTANCE, Component.class.getSimpleName()));

 		assertNotNull(EObjectUtil.findEClassifier(Hummingbird10Package.eINSTANCE, Component.class.getSimpleName()));

 		assertNotNull(EObjectUtil.findEClassifier(Hummingbird10Package.eINSTANCE, Application.class.getSimpleName()));

-		assertNotNull(EObjectUtil.findEClassifier(TypeModel20Package.eINSTANCE,

-				org.eclipse.sphinx.examples.hummingbird10.Interface.class.getSimpleName()));

+		assertNotNull(

+				EObjectUtil.findEClassifier(TypeModel20Package.eINSTANCE, org.eclipse.sphinx.examples.hummingbird10.Interface.class.getSimpleName()));

 

 		assertNull(EObjectUtil.findEClassifier(Hummingbird10Package.eINSTANCE, Platform.class.getSimpleName()));

 		assertNull(EObjectUtil.findEClassifier(Hummingbird10Package.eINSTANCE, ComponentType.class.getSimpleName()));

@@ -284,7 +286,7 @@
 		try {

 			List<EClass> subTypes = EObjectUtil.findESubTypesOf(indefiableClass, false);

 

-			assertEquals(9, subTypes.size());

+			assertEquals(10, subTypes.size());

 			assertTrue(subTypes.contains(app.eClass()));

 			assertTrue(subTypes.contains(component.eClass()));

 			assertTrue(subTypes.contains(componentType.eClass()));

diff --git a/tests/org.eclipse.sphinx.testutils.integration.referenceworkspace/resources/input/referenceWorkspace.zip b/tests/org.eclipse.sphinx.testutils.integration.referenceworkspace/resources/input/referenceWorkspace.zip
index c084895..4fad80c 100644
--- a/tests/org.eclipse.sphinx.testutils.integration.referenceworkspace/resources/input/referenceWorkspace.zip
+++ b/tests/org.eclipse.sphinx.testutils.integration.referenceworkspace/resources/input/referenceWorkspace.zip
Binary files differ
diff --git a/tests/org.eclipse.sphinx.testutils.integration.referenceworkspace/src/org/eclipse/sphinx/testutils/integration/referenceworkspace/DefaultTestReferenceWorkspace.java b/tests/org.eclipse.sphinx.testutils.integration.referenceworkspace/src/org/eclipse/sphinx/testutils/integration/referenceworkspace/DefaultTestReferenceWorkspace.java
index 71a4d2d..364ab68 100644
--- a/tests/org.eclipse.sphinx.testutils.integration.referenceworkspace/src/org/eclipse/sphinx/testutils/integration/referenceworkspace/DefaultTestReferenceWorkspace.java
+++ b/tests/org.eclipse.sphinx.testutils.integration.referenceworkspace/src/org/eclipse/sphinx/testutils/integration/referenceworkspace/DefaultTestReferenceWorkspace.java
@@ -94,6 +94,7 @@
 	public static final String HB_FILE_NAME_20_20A_3 = "hbFile20_20A_3.instancemodel";
 	public static final String HB_FILE_NAME_20_20A_4 = "hbFile20_20A_4.typemodel";
 	public static final String HB_FILE_NAME_21_20A_4 = "hbFile21_20A_4.instancemodel";
+	public static final String HB_FILE_NAME_20_20A_5 = "hbFile20_20A_5.instancemodel";
 
 	/* ----- HUMMINGBIRD 20 Project B ----- */
 	public static final String HB_PROJECT_NAME_20_B = "hbProject20_B";
@@ -216,7 +217,8 @@
 	@Override
 	protected void initReferenceFileDescriptors() {
 
-		addFileDescriptors(HB_PROJECT_NAME_10_A, new String[] { HB_FILE_NAME_10_10A_1, HB_FILE_NAME_10_10A_2, HB_FILE_NAME_10_10A_3, HB_FILE_NAME_10_10A_4, HB_FILE_NAME_10_10A_5 },
+		addFileDescriptors(HB_PROJECT_NAME_10_A,
+				new String[] { HB_FILE_NAME_10_10A_1, HB_FILE_NAME_10_10A_2, HB_FILE_NAME_10_10A_3, HB_FILE_NAME_10_10A_4, HB_FILE_NAME_10_10A_5 },
 				Hummingbird10MMDescriptor.INSTANCE);
 		addFileDescriptors(HB_PROJECT_NAME_10_B, new String[] { HB_FILE_NAME_10_10B_1, HB_FILE_NAME_10_10B_2, HB_FILE_NAME_10_10B_3 },
 				Hummingbird10MMDescriptor.INSTANCE);
@@ -232,9 +234,8 @@
 				HB_PROJECT_NAME_10_F, new String[] { HB_FOLDER_NAME_10_10F_1 + "/" + HB_FILE_NAME_10_10F_1,
 						HB_FOLDER_NAME_10_10F_1 + "/" + HB_FILE_NAME_10_10F_2, HB_FOLDER_NAME_10_10F_1 + "/" + HB_FILE_NAME_10_10F_3 },
 				Hummingbird10MMDescriptor.INSTANCE);
-		addFileDescriptors(HB_PROJECT_NAME_20_A,
-				new String[] { HB_FILE_NAME_20_20A_1, HB_FILE_NAME_20_20A_2, HB_FILE_NAME_20_20A_3, HB_FILE_NAME_20_20A_4, HB_FILE_NAME_21_20A_4 },
-				Hummingbird20MMDescriptor.INSTANCE);
+		addFileDescriptors(HB_PROJECT_NAME_20_A, new String[] { HB_FILE_NAME_20_20A_1, HB_FILE_NAME_20_20A_2, HB_FILE_NAME_20_20A_3,
+				HB_FILE_NAME_20_20A_4, HB_FILE_NAME_21_20A_4, HB_FILE_NAME_20_20A_5 }, Hummingbird20MMDescriptor.INSTANCE);
 		addFileDescriptors(HB_PROJECT_NAME_20_B, new String[] { HB_FILE_NAME_20_20B_1, HB_FILE_NAME_20_20B_2, HB_FILE_NAME_20_20B_3 },
 				Hummingbird20MMDescriptor.INSTANCE);
 		addFileDescriptors(HB_PROJECT_NAME_20_B, new String[] { UML2_FILE_NAME_20B_1, UML2_FILE_NAME_20B_2, UML2_FILE_NAME_20B_3 },