Merge branch 'release_1.17.0'
diff --git a/bundles/javafx/org.eclipse.emf.ecp.application.e4.fx/META-INF/MANIFEST.MF b/bundles/javafx/org.eclipse.emf.ecp.application.e4.fx/META-INF/MANIFEST.MF
index b05572f..ca262fa 100644
--- a/bundles/javafx/org.eclipse.emf.ecp.application.e4.fx/META-INF/MANIFEST.MF
+++ b/bundles/javafx/org.eclipse.emf.ecp.application.e4.fx/META-INF/MANIFEST.MF
@@ -20,3 +20,4 @@
 Import-Package: javax.annotation;version="1.0.0",
   javax.inject;version="1.0.0"
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.application.e4.fx
diff --git a/bundles/javafx/org.eclipse.emf.ecp.controls.fx/META-INF/MANIFEST.MF b/bundles/javafx/org.eclipse.emf.ecp.controls.fx/META-INF/MANIFEST.MF
index a1084ab..7b16b00 100644
--- a/bundles/javafx/org.eclipse.emf.ecp.controls.fx/META-INF/MANIFEST.MF
+++ b/bundles/javafx/org.eclipse.emf.ecp.controls.fx/META-INF/MANIFEST.MF
@@ -24,3 +24,4 @@
 Bundle-RequiredExecutionEnvironment: JavaSE-1.8
 Import-Package: com.ibm.icu.text;version="50.0.0"
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.controls.fx
diff --git a/bundles/javafx/org.eclipse.emf.ecp.controls.fx/src/org/eclipse/emf/ecp/controls/fx/util/NumericalHelper.java b/bundles/javafx/org.eclipse.emf.ecp.controls.fx/src/org/eclipse/emf/ecp/controls/fx/util/NumericalHelper.java
index bdbe4ff..44c3d26 100644
--- a/bundles/javafx/org.eclipse.emf.ecp.controls.fx/src/org/eclipse/emf/ecp/controls/fx/util/NumericalHelper.java
+++ b/bundles/javafx/org.eclipse.emf.ecp.controls.fx/src/org/eclipse/emf/ecp/controls/fx/util/NumericalHelper.java
@@ -25,7 +25,7 @@
  * @author Eugen Neufeld
  *
  */
-public class NumericalHelper {
+public final class NumericalHelper {
 
 	private static final String REGEX_INT = "^[-+]?[0-9]*$"; //$NON-NLS-1$
 	private static final String REGEX_FLOAT = "^[-+]?[0-9]*\\.?[0-9]*([eE][-+]?[0-9]+)?$"; //$NON-NLS-1$
@@ -233,7 +233,7 @@
 
 	/**
 	 * Converts a Number to the given type.
-	 * 
+	 *
 	 * @param number the number to convert
 	 * @param instanceClass the type to convert to
 	 * @return the converted value
diff --git a/bundles/javafx/org.eclipse.emf.ecp.controls.fx/src/org/eclipse/emf/ecp/controls/internal/fx/Activator.java b/bundles/javafx/org.eclipse.emf.ecp.controls.fx/src/org/eclipse/emf/ecp/controls/internal/fx/Activator.java
index 381853f..cfd1d6b 100644
--- a/bundles/javafx/org.eclipse.emf.ecp.controls.fx/src/org/eclipse/emf/ecp/controls/internal/fx/Activator.java
+++ b/bundles/javafx/org.eclipse.emf.ecp.controls.fx/src/org/eclipse/emf/ecp/controls/internal/fx/Activator.java
@@ -1,16 +1,27 @@
+/*******************************************************************************
+ * Copyright (c) 2011-2015 EclipseSource Muenchen GmbH 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:
+ * Lucas Koehler - initial API and implementation
+ ******************************************************************************/
 package org.eclipse.emf.ecp.controls.internal.fx;
 
 import java.io.IOException;
 import java.net.URL;
 
-import javafx.scene.image.Image;
-
 import org.eclipse.core.runtime.FileLocator;
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.Plugin;
 import org.eclipse.core.runtime.Status;
 import org.osgi.framework.BundleContext;
 
+import javafx.scene.image.Image;
+
 public final class Activator extends Plugin {
 	/**
 	 * The plug-in ID.
diff --git a/bundles/javafx/org.eclipse.emf.ecp.controls.fx/src/org/eclipse/emf/ecp/controls/internal/fx/ManyAttributesObservableList.java b/bundles/javafx/org.eclipse.emf.ecp.controls.fx/src/org/eclipse/emf/ecp/controls/internal/fx/ManyAttributesObservableList.java
index b2e24d3..ec63410 100644
--- a/bundles/javafx/org.eclipse.emf.ecp.controls.fx/src/org/eclipse/emf/ecp/controls/internal/fx/ManyAttributesObservableList.java
+++ b/bundles/javafx/org.eclipse.emf.ecp.controls.fx/src/org/eclipse/emf/ecp/controls/internal/fx/ManyAttributesObservableList.java
@@ -1,3 +1,14 @@
+/*******************************************************************************
+ * Copyright (c) 2011-2015 EclipseSource Muenchen GmbH 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:
+ * Lucas Koehler - initial API and implementation
+ ******************************************************************************/
 package org.eclipse.emf.ecp.controls.internal.fx;
 
 import java.util.Collection;
@@ -5,16 +16,16 @@
 import java.util.List;
 import java.util.ListIterator;
 
-import javafx.beans.InvalidationListener;
-import javafx.collections.FXCollections;
-import javafx.collections.ListChangeListener;
-import javafx.collections.ObservableList;
-
 import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.common.notify.impl.AdapterImpl;
 import org.eclipse.emf.ecore.EObject;
 import org.eclipse.emf.ecore.EStructuralFeature;
 
+import javafx.beans.InvalidationListener;
+import javafx.collections.FXCollections;
+import javafx.collections.ListChangeListener;
+import javafx.collections.ObservableList;
+
 public class ManyAttributesObservableList<T> implements ObservableList<T> {
 
 	private static final String CHANGES_THROUGH_MODEL = "An AdapterFactoryObservableList cannot be manipulated directly. Changes must be made via the model.";
diff --git a/bundles/javafx/org.eclipse.emf.ecp.controls.fx/src/org/eclipse/emf/ecp/controls/renderer/fx/BooleanRendererFX.java b/bundles/javafx/org.eclipse.emf.ecp.controls.fx/src/org/eclipse/emf/ecp/controls/renderer/fx/BooleanRendererFX.java
index 131c2d4..d4a94e1 100644
--- a/bundles/javafx/org.eclipse.emf.ecp.controls.fx/src/org/eclipse/emf/ecp/controls/renderer/fx/BooleanRendererFX.java
+++ b/bundles/javafx/org.eclipse.emf.ecp.controls.fx/src/org/eclipse/emf/ecp/controls/renderer/fx/BooleanRendererFX.java
@@ -1,3 +1,14 @@
+/*******************************************************************************
+ * Copyright (c) 2011-2015 EclipseSource Muenchen GmbH 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:
+ * Lucas Koehler - initial API and implementation
+ ******************************************************************************/
 package org.eclipse.emf.ecp.controls.renderer.fx;
 
 import org.eclipse.core.databinding.observable.value.IObservableValue;
diff --git a/bundles/javafx/org.eclipse.emf.ecp.controls.fx/src/org/eclipse/emf/ecp/controls/renderer/fx/DateRendererFX.java b/bundles/javafx/org.eclipse.emf.ecp.controls.fx/src/org/eclipse/emf/ecp/controls/renderer/fx/DateRendererFX.java
index cfeaa11..59a2404 100644
--- a/bundles/javafx/org.eclipse.emf.ecp.controls.fx/src/org/eclipse/emf/ecp/controls/renderer/fx/DateRendererFX.java
+++ b/bundles/javafx/org.eclipse.emf.ecp.controls.fx/src/org/eclipse/emf/ecp/controls/renderer/fx/DateRendererFX.java
@@ -1,3 +1,14 @@
+/*******************************************************************************
+ * Copyright (c) 2011-2015 EclipseSource Muenchen GmbH 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:
+ * Lucas Koehler - initial API and implementation
+ ******************************************************************************/
 package org.eclipse.emf.ecp.controls.renderer.fx;
 
 import java.time.Instant;
diff --git a/bundles/javafx/org.eclipse.emf.ecp.controls.fx/src/org/eclipse/emf/ecp/controls/renderer/fx/EnumRendererFX.java b/bundles/javafx/org.eclipse.emf.ecp.controls.fx/src/org/eclipse/emf/ecp/controls/renderer/fx/EnumRendererFX.java
index 978103a..37c3d46 100644
--- a/bundles/javafx/org.eclipse.emf.ecp.controls.fx/src/org/eclipse/emf/ecp/controls/renderer/fx/EnumRendererFX.java
+++ b/bundles/javafx/org.eclipse.emf.ecp.controls.fx/src/org/eclipse/emf/ecp/controls/renderer/fx/EnumRendererFX.java
@@ -1,3 +1,14 @@
+/*******************************************************************************
+ * Copyright (c) 2011-2015 EclipseSource Muenchen GmbH 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:
+ * Lucas Koehler - initial API and implementation
+ ******************************************************************************/
 package org.eclipse.emf.ecp.controls.renderer.fx;
 
 import org.eclipse.core.databinding.observable.value.IObservableValue;
diff --git a/bundles/javafx/org.eclipse.emf.ecp.controls.fx/src/org/eclipse/emf/ecp/controls/renderer/fx/NumericalRendererFX.java b/bundles/javafx/org.eclipse.emf.ecp.controls.fx/src/org/eclipse/emf/ecp/controls/renderer/fx/NumericalRendererFX.java
index 998a216..6ebdd1d 100644
--- a/bundles/javafx/org.eclipse.emf.ecp.controls.fx/src/org/eclipse/emf/ecp/controls/renderer/fx/NumericalRendererFX.java
+++ b/bundles/javafx/org.eclipse.emf.ecp.controls.fx/src/org/eclipse/emf/ecp/controls/renderer/fx/NumericalRendererFX.java
@@ -1,3 +1,14 @@
+/*******************************************************************************
+ * Copyright (c) 2011-2015 EclipseSource Muenchen GmbH 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:
+ * Lucas Koehler - initial API and implementation
+ ******************************************************************************/
 package org.eclipse.emf.ecp.controls.renderer.fx;
 
 import java.text.DecimalFormat;
diff --git a/bundles/javafx/org.eclipse.emf.ecp.controls.fx/src/org/eclipse/emf/ecp/controls/renderer/fx/StringListRendererFX.java b/bundles/javafx/org.eclipse.emf.ecp.controls.fx/src/org/eclipse/emf/ecp/controls/renderer/fx/StringListRendererFX.java
index c9430e0..81e40e5 100644
--- a/bundles/javafx/org.eclipse.emf.ecp.controls.fx/src/org/eclipse/emf/ecp/controls/renderer/fx/StringListRendererFX.java
+++ b/bundles/javafx/org.eclipse.emf.ecp.controls.fx/src/org/eclipse/emf/ecp/controls/renderer/fx/StringListRendererFX.java
@@ -1,6 +1,14 @@
-/**
+/*******************************************************************************
+ * Copyright (c) 2011-2015 EclipseSource Muenchen GmbH 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:
+ * Lucas Koehler - initial API and implementation
+ ******************************************************************************/
 package org.eclipse.emf.ecp.controls.renderer.fx;
 
 import java.lang.reflect.InvocationTargetException;
@@ -114,16 +122,16 @@
 						textField.focusedProperty().addListener(
 							new ChangeListener<Boolean>() {
 
-							@Override
-							public void changed(
-								ObservableValue<? extends Boolean> observable,
-								Boolean oldValue, Boolean newValue) {
-								if (!newValue) {
-									commitEdit(textField.getText());
+								@Override
+								public void changed(
+									ObservableValue<? extends Boolean> observable,
+									Boolean oldValue, Boolean newValue) {
+									if (!newValue) {
+										commitEdit(textField.getText());
+									}
 								}
-							}
 
-						});
+							});
 
 						textField.setText((String) getListValue());
 						setGraphic(textField);
diff --git a/bundles/javafx/org.eclipse.emf.ecp.controls.fx/src/org/eclipse/emf/ecp/controls/renderer/fx/XmlDateRendererFX.java b/bundles/javafx/org.eclipse.emf.ecp.controls.fx/src/org/eclipse/emf/ecp/controls/renderer/fx/XmlDateRendererFX.java
index 4c0f353..fe62020 100644
--- a/bundles/javafx/org.eclipse.emf.ecp.controls.fx/src/org/eclipse/emf/ecp/controls/renderer/fx/XmlDateRendererFX.java
+++ b/bundles/javafx/org.eclipse.emf.ecp.controls.fx/src/org/eclipse/emf/ecp/controls/renderer/fx/XmlDateRendererFX.java
@@ -1,3 +1,14 @@
+/*******************************************************************************
+ * Copyright (c) 2011-2015 EclipseSource Muenchen GmbH 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:
+ * Lucas Koehler - initial API and implementation
+ ******************************************************************************/
 package org.eclipse.emf.ecp.controls.renderer.fx;
 
 import java.time.Instant;
diff --git a/bundles/javafx/org.eclipse.emf.ecp.util.e4.fx/META-INF/MANIFEST.MF b/bundles/javafx/org.eclipse.emf.ecp.util.e4.fx/META-INF/MANIFEST.MF
index c3de250..9260807 100644
--- a/bundles/javafx/org.eclipse.emf.ecp.util.e4.fx/META-INF/MANIFEST.MF
+++ b/bundles/javafx/org.eclipse.emf.ecp.util.e4.fx/META-INF/MANIFEST.MF
@@ -11,3 +11,4 @@
   org.eclipse.emf.emfstore.client
 Bundle-RequiredExecutionEnvironment: JavaSE-1.8
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.util.e4.fx
diff --git a/bundles/javafx/org.eclipse.emf.ecp.util.fx/META-INF/MANIFEST.MF b/bundles/javafx/org.eclipse.emf.ecp.util.fx/META-INF/MANIFEST.MF
index 553af73..8b802f0 100644
--- a/bundles/javafx/org.eclipse.emf.ecp.util.fx/META-INF/MANIFEST.MF
+++ b/bundles/javafx/org.eclipse.emf.ecp.util.fx/META-INF/MANIFEST.MF
@@ -7,3 +7,4 @@
 Export-Package: org.eclipse.emf.ecp.util.fx;version="1.9.0"
 Require-Bundle: org.eclipse.emf.edit
 Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Automatic-Module-Name: org.eclipse.emf.ecp.util.fx
diff --git a/bundles/javafx/org.eclipse.emf.ecp.util.fx/src/org/eclipse/emf/ecp/util/fx/EMFUtil.java b/bundles/javafx/org.eclipse.emf.ecp.util.fx/src/org/eclipse/emf/ecp/util/fx/EMFUtil.java
index 8d826d7..c0cf08b 100644
--- a/bundles/javafx/org.eclipse.emf.ecp.util.fx/src/org/eclipse/emf/ecp/util/fx/EMFUtil.java
+++ b/bundles/javafx/org.eclipse.emf.ecp.util.fx/src/org/eclipse/emf/ecp/util/fx/EMFUtil.java
@@ -1,3 +1,14 @@
+/*******************************************************************************

+ * Copyright (c) 2011-2015 EclipseSource Muenchen GmbH 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:

+ * Lucas Koehler - initial API and implementation

+ ******************************************************************************/

 package org.eclipse.emf.ecp.util.fx;

 

 import java.net.URL;

diff --git a/bundles/javafx/org.eclipse.emf.ecp.view.group.fx/META-INF/MANIFEST.MF b/bundles/javafx/org.eclipse.emf.ecp.view.group.fx/META-INF/MANIFEST.MF
index 75239e1..3e35317 100644
--- a/bundles/javafx/org.eclipse.emf.ecp.view.group.fx/META-INF/MANIFEST.MF
+++ b/bundles/javafx/org.eclipse.emf.ecp.view.group.fx/META-INF/MANIFEST.MF
@@ -13,3 +13,4 @@
 Bundle-RequiredExecutionEnvironment: JavaSE-1.8
 Import-Package: org.osgi.framework;version="1.3.0"
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.view.group.fx
diff --git a/bundles/javafx/org.eclipse.emf.ecp.view.group.fx/src/org/eclipse/emf/ecp/view/group/fx/Activator.java b/bundles/javafx/org.eclipse.emf.ecp.view.group.fx/src/org/eclipse/emf/ecp/view/group/fx/Activator.java
index e895e8b..ec3f4f9 100644
--- a/bundles/javafx/org.eclipse.emf.ecp.view.group.fx/src/org/eclipse/emf/ecp/view/group/fx/Activator.java
+++ b/bundles/javafx/org.eclipse.emf.ecp.view.group.fx/src/org/eclipse/emf/ecp/view/group/fx/Activator.java
@@ -1,3 +1,14 @@
+/*******************************************************************************

+ * Copyright (c) 2011-2015 EclipseSource Muenchen GmbH 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:

+ * Lucas Koehler - initial API and implementation

+ ******************************************************************************/

 package org.eclipse.emf.ecp.view.group.fx;

 

 import org.osgi.framework.BundleActivator;

diff --git a/bundles/javafx/org.eclipse.emf.ecp.view.group.fx/src/org/eclipse/emf/ecp/view/group/fx/GroupRendererFX.java b/bundles/javafx/org.eclipse.emf.ecp.view.group.fx/src/org/eclipse/emf/ecp/view/group/fx/GroupRendererFX.java
index 112758c..d27c940 100644
--- a/bundles/javafx/org.eclipse.emf.ecp.view.group.fx/src/org/eclipse/emf/ecp/view/group/fx/GroupRendererFX.java
+++ b/bundles/javafx/org.eclipse.emf.ecp.view.group.fx/src/org/eclipse/emf/ecp/view/group/fx/GroupRendererFX.java
@@ -1,3 +1,14 @@
+/*******************************************************************************

+ * Copyright (c) 2011-2015 EclipseSource Muenchen GmbH 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:

+ * Lucas Koehler - initial API and implementation

+ ******************************************************************************/

 package org.eclipse.emf.ecp.view.group.fx;

 

 import org.eclipse.emf.ecp.view.model.internal.fx.ContainerRendererFX;

diff --git a/bundles/javafx/org.eclipse.emf.ecp.view.horizontal.fx/META-INF/MANIFEST.MF b/bundles/javafx/org.eclipse.emf.ecp.view.horizontal.fx/META-INF/MANIFEST.MF
index 543db76..d607f70 100644
--- a/bundles/javafx/org.eclipse.emf.ecp.view.horizontal.fx/META-INF/MANIFEST.MF
+++ b/bundles/javafx/org.eclipse.emf.ecp.view.horizontal.fx/META-INF/MANIFEST.MF
@@ -13,3 +13,4 @@
   org.eclipse.emfforms.common;bundle-version="[1.16.0,1.17.0)"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.8
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.view.horizontal.fx
diff --git a/bundles/javafx/org.eclipse.emf.ecp.view.horizontal.fx/src/org/eclipse/emf/ecp/view/horizontal/fx/Activator.java b/bundles/javafx/org.eclipse.emf.ecp.view.horizontal.fx/src/org/eclipse/emf/ecp/view/horizontal/fx/Activator.java
index b14d1e3..7093fad 100644
--- a/bundles/javafx/org.eclipse.emf.ecp.view.horizontal.fx/src/org/eclipse/emf/ecp/view/horizontal/fx/Activator.java
+++ b/bundles/javafx/org.eclipse.emf.ecp.view.horizontal.fx/src/org/eclipse/emf/ecp/view/horizontal/fx/Activator.java
@@ -1,3 +1,14 @@
+/*******************************************************************************

+ * Copyright (c) 2011-2015 EclipseSource Muenchen GmbH 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:

+ * Lucas Koehler - initial API and implementation

+ ******************************************************************************/

 package org.eclipse.emf.ecp.view.horizontal.fx;

 

 import org.osgi.framework.BundleActivator;

diff --git a/bundles/javafx/org.eclipse.emf.ecp.view.horizontal.fx/src/org/eclipse/emf/ecp/view/horizontal/fx/HorizontalLayoutPageRendererFX.java b/bundles/javafx/org.eclipse.emf.ecp.view.horizontal.fx/src/org/eclipse/emf/ecp/view/horizontal/fx/HorizontalLayoutPageRendererFX.java
index 132d3d5..7db075f 100644
--- a/bundles/javafx/org.eclipse.emf.ecp.view.horizontal.fx/src/org/eclipse/emf/ecp/view/horizontal/fx/HorizontalLayoutPageRendererFX.java
+++ b/bundles/javafx/org.eclipse.emf.ecp.view.horizontal.fx/src/org/eclipse/emf/ecp/view/horizontal/fx/HorizontalLayoutPageRendererFX.java
@@ -1,3 +1,14 @@
+/*******************************************************************************

+ * Copyright (c) 2011-2015 EclipseSource Muenchen GmbH 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:

+ * Lucas Koehler - initial API and implementation

+ ******************************************************************************/

 package org.eclipse.emf.ecp.view.horizontal.fx;

 

 import org.eclipse.emf.ecp.view.model.internal.fx.GridCellFX;

diff --git a/bundles/javafx/org.eclipse.emf.ecp.view.horizontal.fx/src/org/eclipse/emf/ecp/view/horizontal/fx/HorizontalLayoutRendererFX.java b/bundles/javafx/org.eclipse.emf.ecp.view.horizontal.fx/src/org/eclipse/emf/ecp/view/horizontal/fx/HorizontalLayoutRendererFX.java
index 4982fdd..8d8bcd8 100644
--- a/bundles/javafx/org.eclipse.emf.ecp.view.horizontal.fx/src/org/eclipse/emf/ecp/view/horizontal/fx/HorizontalLayoutRendererFX.java
+++ b/bundles/javafx/org.eclipse.emf.ecp.view.horizontal.fx/src/org/eclipse/emf/ecp/view/horizontal/fx/HorizontalLayoutRendererFX.java
@@ -1,3 +1,14 @@
+/*******************************************************************************
+ * Copyright (c) 2011-2015 EclipseSource Muenchen GmbH 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:
+ * Lucas Koehler - initial API and implementation
+ ******************************************************************************/
 package org.eclipse.emf.ecp.view.horizontal.fx;
 
 import org.eclipse.emf.ecp.view.model.internal.fx.GridCellFX;
diff --git a/bundles/javafx/org.eclipse.emf.ecp.view.label.fx/META-INF/MANIFEST.MF b/bundles/javafx/org.eclipse.emf.ecp.view.label.fx/META-INF/MANIFEST.MF
index 5669169..5be752f 100644
--- a/bundles/javafx/org.eclipse.emf.ecp.view.label.fx/META-INF/MANIFEST.MF
+++ b/bundles/javafx/org.eclipse.emf.ecp.view.label.fx/META-INF/MANIFEST.MF
@@ -8,3 +8,4 @@
   org.eclipse.emf.ecp.view.label.model;bundle-version="[1.16.0,1.17.0)",
   org.eclipse.emfforms.common;bundle-version="[1.16.0,1.17.0)"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Automatic-Module-Name: org.eclipse.emf.ecp.view.label.fx
diff --git a/bundles/javafx/org.eclipse.emf.ecp.view.model.fx/META-INF/MANIFEST.MF b/bundles/javafx/org.eclipse.emf.ecp.view.model.fx/META-INF/MANIFEST.MF
index c5b0589..6c4ab75 100644
--- a/bundles/javafx/org.eclipse.emf.ecp.view.model.fx/META-INF/MANIFEST.MF
+++ b/bundles/javafx/org.eclipse.emf.ecp.view.model.fx/META-INF/MANIFEST.MF
@@ -21,3 +21,4 @@
 Bundle-RequiredExecutionEnvironment: JavaSE-1.8
 Import-Package: org.eclipse.fx.core.databinding
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.view.model.fx
diff --git a/bundles/javafx/org.eclipse.emf.ecp.view.model.fx/src/org/eclipse/emf/ecp/view/model/internal/fx/AbstractControlRendererFX.java b/bundles/javafx/org.eclipse.emf.ecp.view.model.fx/src/org/eclipse/emf/ecp/view/model/internal/fx/AbstractControlRendererFX.java
index 42228a5..09254f6 100644
--- a/bundles/javafx/org.eclipse.emf.ecp.view.model.fx/src/org/eclipse/emf/ecp/view/model/internal/fx/AbstractControlRendererFX.java
+++ b/bundles/javafx/org.eclipse.emf.ecp.view.model.fx/src/org/eclipse/emf/ecp/view/model/internal/fx/AbstractControlRendererFX.java
@@ -1,3 +1,14 @@
+/*******************************************************************************
+ * Copyright (c) 2011-2015 EclipseSource Muenchen GmbH 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:
+ * Lucas Koehler - initial API and implementation
+ ******************************************************************************/
 package org.eclipse.emf.ecp.view.model.internal.fx;
 
 import org.eclipse.core.databinding.Binding;
diff --git a/bundles/javafx/org.eclipse.emf.ecp.view.model.fx/src/org/eclipse/emf/ecp/view/model/internal/fx/Activator.java b/bundles/javafx/org.eclipse.emf.ecp.view.model.fx/src/org/eclipse/emf/ecp/view/model/internal/fx/Activator.java
index 34a1804..938a808 100644
--- a/bundles/javafx/org.eclipse.emf.ecp.view.model.fx/src/org/eclipse/emf/ecp/view/model/internal/fx/Activator.java
+++ b/bundles/javafx/org.eclipse.emf.ecp.view.model.fx/src/org/eclipse/emf/ecp/view/model/internal/fx/Activator.java
@@ -1,14 +1,25 @@
+/*******************************************************************************

+ * Copyright (c) 2011-2015 EclipseSource Muenchen GmbH 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:

+ * Lucas Koehler - initial API and implementation

+ ******************************************************************************/

 package org.eclipse.emf.ecp.view.model.internal.fx;

 

 import java.io.IOException;

 import java.net.URL;

 

-import javafx.scene.image.Image;

-

 import org.eclipse.core.runtime.FileLocator;

 import org.eclipse.core.runtime.Plugin;

 import org.osgi.framework.BundleContext;

 

+import javafx.scene.image.Image;

+

 public class Activator extends Plugin {

 

 	private static BundleContext context;

diff --git a/bundles/javafx/org.eclipse.emf.ecp.view.model.fx/src/org/eclipse/emf/ecp/view/model/internal/fx/ContainerRendererFX.java b/bundles/javafx/org.eclipse.emf.ecp.view.model.fx/src/org/eclipse/emf/ecp/view/model/internal/fx/ContainerRendererFX.java
index 38816e2..b4b4124 100644
--- a/bundles/javafx/org.eclipse.emf.ecp.view.model.fx/src/org/eclipse/emf/ecp/view/model/internal/fx/ContainerRendererFX.java
+++ b/bundles/javafx/org.eclipse.emf.ecp.view.model.fx/src/org/eclipse/emf/ecp/view/model/internal/fx/ContainerRendererFX.java
@@ -1,3 +1,14 @@
+/*******************************************************************************
+ * Copyright (c) 2011-2015 EclipseSource Muenchen GmbH 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:
+ * Lucas Koehler - initial API and implementation
+ ******************************************************************************/
 package org.eclipse.emf.ecp.view.model.internal.fx;
 
 import org.eclipse.emf.ecp.view.spi.context.ViewModelContext;
diff --git a/bundles/javafx/org.eclipse.emf.ecp.view.model.fx/src/org/eclipse/emf/ecp/view/model/internal/fx/RendererFX.java b/bundles/javafx/org.eclipse.emf.ecp.view.model.fx/src/org/eclipse/emf/ecp/view/model/internal/fx/RendererFX.java
index 06a58a6..db916cd 100644
--- a/bundles/javafx/org.eclipse.emf.ecp.view.model.fx/src/org/eclipse/emf/ecp/view/model/internal/fx/RendererFX.java
+++ b/bundles/javafx/org.eclipse.emf.ecp.view.model.fx/src/org/eclipse/emf/ecp/view/model/internal/fx/RendererFX.java
@@ -1,3 +1,14 @@
+/*******************************************************************************

+ * Copyright (c) 2011-2015 EclipseSource Muenchen GmbH 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:

+ * Lucas Koehler - initial API and implementation

+ ******************************************************************************/

 package org.eclipse.emf.ecp.view.model.internal.fx;

 

 import java.util.Collections;

diff --git a/bundles/javafx/org.eclipse.emf.ecp.view.model.fx/src/org/eclipse/emf/ecp/view/model/internal/fx/RendererFactory.java b/bundles/javafx/org.eclipse.emf.ecp.view.model.fx/src/org/eclipse/emf/ecp/view/model/internal/fx/RendererFactory.java
index 95e9a6d..4f83f4f 100644
--- a/bundles/javafx/org.eclipse.emf.ecp.view.model.fx/src/org/eclipse/emf/ecp/view/model/internal/fx/RendererFactory.java
+++ b/bundles/javafx/org.eclipse.emf.ecp.view.model.fx/src/org/eclipse/emf/ecp/view/model/internal/fx/RendererFactory.java
@@ -1,3 +1,14 @@
+/*******************************************************************************

+ * Copyright (c) 2011-2015 EclipseSource Muenchen GmbH 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:

+ * Lucas Koehler - initial API and implementation

+ ******************************************************************************/

 package org.eclipse.emf.ecp.view.model.internal.fx;

 

 import org.eclipse.emf.ecp.view.spi.context.ViewModelContext;

diff --git a/bundles/javafx/org.eclipse.emf.ecp.view.model.fx/src/org/eclipse/emf/ecp/view/model/internal/fx/RendererFactoryImpl.java b/bundles/javafx/org.eclipse.emf.ecp.view.model.fx/src/org/eclipse/emf/ecp/view/model/internal/fx/RendererFactoryImpl.java
index df00fa8..0519cf2 100644
--- a/bundles/javafx/org.eclipse.emf.ecp.view.model.fx/src/org/eclipse/emf/ecp/view/model/internal/fx/RendererFactoryImpl.java
+++ b/bundles/javafx/org.eclipse.emf.ecp.view.model.fx/src/org/eclipse/emf/ecp/view/model/internal/fx/RendererFactoryImpl.java
@@ -1,3 +1,14 @@
+/*******************************************************************************

+ * Copyright (c) 2011-2015 EclipseSource Muenchen GmbH 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:

+ * Lucas Koehler - initial API and implementation

+ ******************************************************************************/

 package org.eclipse.emf.ecp.view.model.internal.fx;

 

 import java.lang.reflect.InvocationTargetException;

@@ -10,7 +21,6 @@
 import org.eclipse.core.runtime.IExtensionPoint;

 import org.eclipse.core.runtime.InvalidRegistryObjectException;

 import org.eclipse.core.runtime.Platform;

-import org.eclipse.emf.ecp.view.model.common.ECPRendererTester;

 import org.eclipse.emf.ecp.view.model.common.ECPStaticRendererTester;

 import org.eclipse.emf.ecp.view.spi.context.ViewModelContext;

 import org.eclipse.emf.ecp.view.spi.model.VElement;

@@ -45,7 +55,8 @@
 				.getConfigurationElements()) {

 				try {

 					final Class<RendererFX<VElement>> rendererClass = loadClass(configurationElement

-						.getContributor().getName(), configurationElement

+						.getContributor().getName(),

+						configurationElement

 							.getAttribute("renderer"));

 

 					// Get tester(s) for the current renderer.

diff --git a/bundles/javafx/org.eclipse.emf.ecp.view.model.fx/src/org/eclipse/emf/ecp/view/model/internal/fx/SimpleControlRendererFX.java b/bundles/javafx/org.eclipse.emf.ecp.view.model.fx/src/org/eclipse/emf/ecp/view/model/internal/fx/SimpleControlRendererFX.java
index ef3fb70..2d21a63 100644
--- a/bundles/javafx/org.eclipse.emf.ecp.view.model.fx/src/org/eclipse/emf/ecp/view/model/internal/fx/SimpleControlRendererFX.java
+++ b/bundles/javafx/org.eclipse.emf.ecp.view.model.fx/src/org/eclipse/emf/ecp/view/model/internal/fx/SimpleControlRendererFX.java
@@ -1,3 +1,14 @@
+/*******************************************************************************
+ * Copyright (c) 2011-2015 EclipseSource Muenchen GmbH 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:
+ * Lucas Koehler - initial API and implementation
+ ******************************************************************************/
 package org.eclipse.emf.ecp.view.model.internal.fx;
 
 import org.eclipse.emf.common.util.Diagnostic;
diff --git a/bundles/javafx/org.eclipse.emf.ecp.view.model.fx/src/org/eclipse/emf/ecp/view/model/internal/fx/ViewRendererFX.java b/bundles/javafx/org.eclipse.emf.ecp.view.model.fx/src/org/eclipse/emf/ecp/view/model/internal/fx/ViewRendererFX.java
index 6856767..1cc1e17 100644
--- a/bundles/javafx/org.eclipse.emf.ecp.view.model.fx/src/org/eclipse/emf/ecp/view/model/internal/fx/ViewRendererFX.java
+++ b/bundles/javafx/org.eclipse.emf.ecp.view.model.fx/src/org/eclipse/emf/ecp/view/model/internal/fx/ViewRendererFX.java
@@ -1,3 +1,14 @@
+/*******************************************************************************
+ * Copyright (c) 2011-2015 EclipseSource Muenchen GmbH 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:
+ * Lucas Koehler - initial API and implementation
+ ******************************************************************************/
 package org.eclipse.emf.ecp.view.model.internal.fx;
 
 import org.eclipse.emf.ecp.view.spi.context.ViewModelContext;
diff --git a/bundles/javafx/org.eclipse.emf.ecp.view.treemasterdetail.fx/META-INF/MANIFEST.MF b/bundles/javafx/org.eclipse.emf.ecp.view.treemasterdetail.fx/META-INF/MANIFEST.MF
index 3861983..cb38fca 100644
--- a/bundles/javafx/org.eclipse.emf.ecp.view.treemasterdetail.fx/META-INF/MANIFEST.MF
+++ b/bundles/javafx/org.eclipse.emf.ecp.view.treemasterdetail.fx/META-INF/MANIFEST.MF
@@ -6,14 +6,15 @@
 Bundle-Activator: org.eclipse.emf.ecp.view.treemasterdetail.fx.Activator
 Bundle-Vendor: Eclipse Modeling Project
 Export-Package: org.eclipse.emf.ecp.view.treemasterdetail.fx;version="1.9.0"
-Require-Bundle: org.eclipse.emf.ecp.view.treemasterdetail.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.model.fx;bundle-version="[1.16.0,1.17.0)",
+Require-Bundle: org.eclipse.emf.ecp.view.treemasterdetail.model;bundle-version="[1.15.0,2.0.0)",
+  org.eclipse.emf.ecp.view.model.fx;bundle-version="[1.15.0,2.0.0)",
   org.eclipse.fx.emf.edit.ui;bundle-version="[2.0.0,3.0.0)",
   org.eclipse.emf.edit;bundle-version="2.9.0",
-  org.eclipse.emf.ecp.util.fx;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.model.common;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.common;bundle-version="[1.16.0,1.17.0)",
+  org.eclipse.emf.ecp.util.fx;bundle-version="[1.15.0,2.0.0)",
+  org.eclipse.emf.ecp.view.model.common;bundle-version="[1.15.0,2.0.0)",
+  org.eclipse.emfforms.common;bundle-version="[1.15.0,2.0.0)",
   org.eclipse.fx.ui.controls;bundle-version="[2.0.0,3.0.0)"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.8
 Import-Package: org.osgi.framework;version="1.3.0"
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.view.treemasterdetail.fx
diff --git a/bundles/javafx/org.eclipse.emf.ecp.view.treemasterdetail.fx/src/org/eclipse/emf/ecp/view/treemasterdetail/fx/Activator.java b/bundles/javafx/org.eclipse.emf.ecp.view.treemasterdetail.fx/src/org/eclipse/emf/ecp/view/treemasterdetail/fx/Activator.java
index e112f31..00881ac 100644
--- a/bundles/javafx/org.eclipse.emf.ecp.view.treemasterdetail.fx/src/org/eclipse/emf/ecp/view/treemasterdetail/fx/Activator.java
+++ b/bundles/javafx/org.eclipse.emf.ecp.view.treemasterdetail.fx/src/org/eclipse/emf/ecp/view/treemasterdetail/fx/Activator.java
@@ -1,3 +1,14 @@
+/*******************************************************************************

+ * Copyright (c) 2011-2015 EclipseSource Muenchen GmbH 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:

+ * Lucas Koehler - initial API and implementation

+ ******************************************************************************/

 package org.eclipse.emf.ecp.view.treemasterdetail.fx;

 

 import org.osgi.framework.BundleActivator;

diff --git a/bundles/javafx/org.eclipse.emf.ecp.view.treemasterdetail.fx/src/org/eclipse/emf/ecp/view/treemasterdetail/fx/TreeMasterDetailRendererFX.java b/bundles/javafx/org.eclipse.emf.ecp.view.treemasterdetail.fx/src/org/eclipse/emf/ecp/view/treemasterdetail/fx/TreeMasterDetailRendererFX.java
index 5290ac2..d5c9843 100644
--- a/bundles/javafx/org.eclipse.emf.ecp.view.treemasterdetail.fx/src/org/eclipse/emf/ecp/view/treemasterdetail/fx/TreeMasterDetailRendererFX.java
+++ b/bundles/javafx/org.eclipse.emf.ecp.view.treemasterdetail.fx/src/org/eclipse/emf/ecp/view/treemasterdetail/fx/TreeMasterDetailRendererFX.java
@@ -1,3 +1,14 @@
+/*******************************************************************************

+ * Copyright (c) 2011-2015 EclipseSource Muenchen GmbH 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:

+ * Lucas Koehler - initial API and implementation

+ ******************************************************************************/

 package org.eclipse.emf.ecp.view.treemasterdetail.fx;

 

 import org.eclipse.emf.ecore.EObject;

@@ -81,13 +92,13 @@
 						.getCreateChildrenMenu((EObject) item,

 							new Callback<Void, Void>() {

 

-						@Override

-						public Void call(Void param) {

-							treeView.selectionModelProperty()

-								.getValue().selectNext();

-							return null;

-						}

-					});

+								@Override

+								public Void call(Void param) {

+									treeView.selectionModelProperty()

+										.getValue().selectNext();

+									return null;

+								}

+							});

 					if (createChildrenMenu == null) {

 						return;

 					}

diff --git a/bundles/javafx/org.eclipse.emf.ecp.view.vertical.fx/META-INF/MANIFEST.MF b/bundles/javafx/org.eclipse.emf.ecp.view.vertical.fx/META-INF/MANIFEST.MF
index e232b28..291199a 100644
--- a/bundles/javafx/org.eclipse.emf.ecp.view.vertical.fx/META-INF/MANIFEST.MF
+++ b/bundles/javafx/org.eclipse.emf.ecp.view.vertical.fx/META-INF/MANIFEST.MF
@@ -13,3 +13,4 @@
   org.eclipse.emfforms.common;bundle-version="[1.16.0,1.17.0)"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.8
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.view.vertical.fx
diff --git a/bundles/javafx/org.eclipse.emf.ecp.view.vertical.fx/src/org/eclipse/emf/ecp/view/vertical/fx/Activator.java b/bundles/javafx/org.eclipse.emf.ecp.view.vertical.fx/src/org/eclipse/emf/ecp/view/vertical/fx/Activator.java
index 7de37a4..2303e40 100644
--- a/bundles/javafx/org.eclipse.emf.ecp.view.vertical.fx/src/org/eclipse/emf/ecp/view/vertical/fx/Activator.java
+++ b/bundles/javafx/org.eclipse.emf.ecp.view.vertical.fx/src/org/eclipse/emf/ecp/view/vertical/fx/Activator.java
@@ -1,3 +1,14 @@
+/*******************************************************************************

+ * Copyright (c) 2011-2015 EclipseSource Muenchen GmbH 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:

+ * Lucas Koehler - initial API and implementation

+ ******************************************************************************/

 package org.eclipse.emf.ecp.view.vertical.fx;

 

 import org.osgi.framework.BundleActivator;

diff --git a/bundles/javafx/org.eclipse.emf.ecp.view.vertical.fx/src/org/eclipse/emf/ecp/view/vertical/fx/VerticalLayoutRendererFX.java b/bundles/javafx/org.eclipse.emf.ecp.view.vertical.fx/src/org/eclipse/emf/ecp/view/vertical/fx/VerticalLayoutRendererFX.java
index 5efdf6c..ef45e95 100644
--- a/bundles/javafx/org.eclipse.emf.ecp.view.vertical.fx/src/org/eclipse/emf/ecp/view/vertical/fx/VerticalLayoutRendererFX.java
+++ b/bundles/javafx/org.eclipse.emf.ecp.view.vertical.fx/src/org/eclipse/emf/ecp/view/vertical/fx/VerticalLayoutRendererFX.java
@@ -1,3 +1,14 @@
+/*******************************************************************************
+ * Copyright (c) 2011-2015 EclipseSource Muenchen GmbH 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:
+ * Lucas Koehler - initial API and implementation
+ ******************************************************************************/
 package org.eclipse.emf.ecp.view.vertical.fx;
 
 import org.eclipse.emf.ecp.view.model.internal.fx.ContainerRendererFX;
diff --git a/bundles/javafx/org.eclipse.emf.ecp.viewmodel.fx/META-INF/MANIFEST.MF b/bundles/javafx/org.eclipse.emf.ecp.viewmodel.fx/META-INF/MANIFEST.MF
index ba66352..8c4f3b5 100644
--- a/bundles/javafx/org.eclipse.emf.ecp.viewmodel.fx/META-INF/MANIFEST.MF
+++ b/bundles/javafx/org.eclipse.emf.ecp.viewmodel.fx/META-INF/MANIFEST.MF
@@ -6,3 +6,4 @@
 Bundle-Vendor: Eclipse Modeling Project
 Require-Bundle: org.eclipse.emf.ecp.view.model.provider.xmi;bundle-version="[1.16.0,1.17.0)"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Automatic-Module-Name: org.eclipse.emf.ecp.viewmodel.fx
diff --git a/bundles/javafx/org.eclipse.emf.emfstore.fx.projects/META-INF/MANIFEST.MF b/bundles/javafx/org.eclipse.emf.emfstore.fx.projects/META-INF/MANIFEST.MF
index 8b70594..3367b94 100644
--- a/bundles/javafx/org.eclipse.emf.emfstore.fx.projects/META-INF/MANIFEST.MF
+++ b/bundles/javafx/org.eclipse.emf.emfstore.fx.projects/META-INF/MANIFEST.MF
@@ -19,3 +19,4 @@
   javax.inject;version="1.0.0",
   org.osgi.framework;version="1.3.0"
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.emfstore.fx.projects
diff --git a/bundles/javafx/org.eclipse.emf.emfstore.fx.projects/src/org/eclipse/emf/emfstore/fx/internal/projects/Activator.java b/bundles/javafx/org.eclipse.emf.emfstore.fx.projects/src/org/eclipse/emf/emfstore/fx/internal/projects/Activator.java
index 0948edc..a1617b7 100644
--- a/bundles/javafx/org.eclipse.emf.emfstore.fx.projects/src/org/eclipse/emf/emfstore/fx/internal/projects/Activator.java
+++ b/bundles/javafx/org.eclipse.emf.emfstore.fx.projects/src/org/eclipse/emf/emfstore/fx/internal/projects/Activator.java
@@ -1,3 +1,14 @@
+/*******************************************************************************

+ * Copyright (c) 2011-2015 EclipseSource Muenchen GmbH 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:

+ * Lucas Koehler - initial API and implementation

+ ******************************************************************************/

 package org.eclipse.emf.emfstore.fx.internal.projects;

 

 import org.osgi.framework.BundleActivator;

diff --git a/bundles/javafx/org.eclipse.emf.emfstore.fx.projects/src/org/eclipse/emf/emfstore/fx/internal/projects/CreateEObjectStage.java b/bundles/javafx/org.eclipse.emf.emfstore.fx.projects/src/org/eclipse/emf/emfstore/fx/internal/projects/CreateEObjectStage.java
index 150acc9..d8a8d06 100644
--- a/bundles/javafx/org.eclipse.emf.emfstore.fx.projects/src/org/eclipse/emf/emfstore/fx/internal/projects/CreateEObjectStage.java
+++ b/bundles/javafx/org.eclipse.emf.emfstore.fx.projects/src/org/eclipse/emf/emfstore/fx/internal/projects/CreateEObjectStage.java
@@ -1,3 +1,14 @@
+/*******************************************************************************

+ * Copyright (c) 2011-2015 EclipseSource Muenchen GmbH 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:

+ * Lucas Koehler - initial API and implementation

+ ******************************************************************************/

 package org.eclipse.emf.emfstore.fx.internal.projects;

 

 import org.eclipse.emf.ecore.EClass;

diff --git a/bundles/javafx/org.eclipse.emf.emfstore.fx.projects/src/org/eclipse/emf/emfstore/fx/internal/projects/ESLocalProjectTreeCell.java b/bundles/javafx/org.eclipse.emf.emfstore.fx.projects/src/org/eclipse/emf/emfstore/fx/internal/projects/ESLocalProjectTreeCell.java
index 742a365..c4a4330 100644
--- a/bundles/javafx/org.eclipse.emf.emfstore.fx.projects/src/org/eclipse/emf/emfstore/fx/internal/projects/ESLocalProjectTreeCell.java
+++ b/bundles/javafx/org.eclipse.emf.emfstore.fx.projects/src/org/eclipse/emf/emfstore/fx/internal/projects/ESLocalProjectTreeCell.java
@@ -1,7 +1,32 @@
+/*******************************************************************************

+ * Copyright (c) 2011-2015 EclipseSource Muenchen GmbH 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:

+ * Lucas Koehler - initial API and implementation

+ ******************************************************************************/

 package org.eclipse.emf.emfstore.fx.internal.projects;

 

 import java.net.URL;

 

+import org.eclipse.core.runtime.NullProgressMonitor;

+import org.eclipse.emf.common.notify.Notification;

+import org.eclipse.emf.common.notify.Notifier;

+import org.eclipse.emf.common.notify.impl.AdapterImpl;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecp.util.fx.EMFUtil;

+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;

+import org.eclipse.emf.edit.provider.ComposedImage;

+import org.eclipse.emf.edit.provider.IItemLabelProvider;

+import org.eclipse.emf.emfstore.client.ESLocalProject;

+import org.eclipse.emf.emfstore.client.ESUsersession;

+import org.eclipse.emf.emfstore.client.ESWorkspaceProvider;

+import org.eclipse.emf.emfstore.server.exceptions.ESException;

+

 import javafx.beans.value.ChangeListener;

 import javafx.beans.value.ObservableValue;

 import javafx.event.ActionEvent;

@@ -18,20 +43,6 @@
 import javafx.scene.layout.HBoxBuilder;

 import javafx.scene.layout.Pane;

 

-import org.eclipse.core.runtime.NullProgressMonitor;

-import org.eclipse.emf.common.notify.Notification;

-import org.eclipse.emf.common.notify.Notifier;

-import org.eclipse.emf.common.notify.impl.AdapterImpl;

-import org.eclipse.emf.ecore.EObject;

-import org.eclipse.emf.ecp.util.fx.EMFUtil;

-import org.eclipse.emf.edit.provider.ComposedAdapterFactory;

-import org.eclipse.emf.edit.provider.ComposedImage;

-import org.eclipse.emf.edit.provider.IItemLabelProvider;

-import org.eclipse.emf.emfstore.client.ESLocalProject;

-import org.eclipse.emf.emfstore.client.ESUsersession;

-import org.eclipse.emf.emfstore.client.ESWorkspaceProvider;

-import org.eclipse.emf.emfstore.server.exceptions.ESException;

-

 public final class ESLocalProjectTreeCell extends TreeCell<Object> {

 	/**

 	 *

@@ -200,8 +211,7 @@
 				ESLocalProject localProject = null;

 				if (EObject.class.isInstance(value)) {

 					localProject = ESWorkspaceProvider.INSTANCE.getWorkspace().getLocalProject((EObject) value);

-				}

-				else if (ESLocalProject.class.isInstance(value)) {

+				} else if (ESLocalProject.class.isInstance(value)) {

 					localProject = (ESLocalProject) value;

 				}

 

diff --git a/bundles/javafx/org.eclipse.emf.emfstore.fx.projects/src/org/eclipse/emf/emfstore/fx/internal/projects/ESRemoteProjectTreeCell.java b/bundles/javafx/org.eclipse.emf.emfstore.fx.projects/src/org/eclipse/emf/emfstore/fx/internal/projects/ESRemoteProjectTreeCell.java
index 084cf17..6ea1135 100644
--- a/bundles/javafx/org.eclipse.emf.emfstore.fx.projects/src/org/eclipse/emf/emfstore/fx/internal/projects/ESRemoteProjectTreeCell.java
+++ b/bundles/javafx/org.eclipse.emf.emfstore.fx.projects/src/org/eclipse/emf/emfstore/fx/internal/projects/ESRemoteProjectTreeCell.java
@@ -1,3 +1,14 @@
+/*******************************************************************************

+ * Copyright (c) 2011-2015 EclipseSource Muenchen GmbH 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:

+ * Lucas Koehler - initial API and implementation

+ ******************************************************************************/

 package org.eclipse.emf.emfstore.fx.internal.projects;

 

 import java.util.Arrays;

diff --git a/bundles/javafx/org.eclipse.emf.emfstore.fx.projects/src/org/eclipse/emf/emfstore/fx/internal/projects/EmfStoreLocalTreeItem.java b/bundles/javafx/org.eclipse.emf.emfstore.fx.projects/src/org/eclipse/emf/emfstore/fx/internal/projects/EmfStoreLocalTreeItem.java
index 457cdbf..83d2cf9 100644
--- a/bundles/javafx/org.eclipse.emf.emfstore.fx.projects/src/org/eclipse/emf/emfstore/fx/internal/projects/EmfStoreLocalTreeItem.java
+++ b/bundles/javafx/org.eclipse.emf.emfstore.fx.projects/src/org/eclipse/emf/emfstore/fx/internal/projects/EmfStoreLocalTreeItem.java
@@ -1,3 +1,14 @@
+/*******************************************************************************
+ * Copyright (c) 2011-2015 EclipseSource Muenchen GmbH 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:
+ * Lucas Koehler - initial API and implementation
+ ******************************************************************************/
 package org.eclipse.emf.emfstore.fx.internal.projects;
 
 import java.util.ArrayList;
diff --git a/bundles/javafx/org.eclipse.emf.emfstore.fx.projects/src/org/eclipse/emf/emfstore/fx/internal/projects/EmfStoreRemoteProjectTreeItem.java b/bundles/javafx/org.eclipse.emf.emfstore.fx.projects/src/org/eclipse/emf/emfstore/fx/internal/projects/EmfStoreRemoteProjectTreeItem.java
index c3271d5..11a7242 100644
--- a/bundles/javafx/org.eclipse.emf.emfstore.fx.projects/src/org/eclipse/emf/emfstore/fx/internal/projects/EmfStoreRemoteProjectTreeItem.java
+++ b/bundles/javafx/org.eclipse.emf.emfstore.fx.projects/src/org/eclipse/emf/emfstore/fx/internal/projects/EmfStoreRemoteProjectTreeItem.java
@@ -1,9 +1,16 @@
+/*******************************************************************************

+ * Copyright (c) 2011-2015 EclipseSource Muenchen GmbH 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:

+ * Lucas Koehler - initial API and implementation

+ ******************************************************************************/

 package org.eclipse.emf.emfstore.fx.internal.projects;

 

-import javafx.collections.FXCollections;

-import javafx.collections.ObservableList;

-import javafx.scene.control.TreeItem;

-

 import org.eclipse.emf.emfstore.client.ESLocalProject;

 import org.eclipse.emf.emfstore.client.ESRemoteProject;

 import org.eclipse.emf.emfstore.client.ESServer;

@@ -15,6 +22,10 @@
 import org.eclipse.emf.emfstore.internal.client.model.ESWorkspaceProviderImpl;

 import org.eclipse.emf.emfstore.server.exceptions.ESException;

 

+import javafx.collections.FXCollections;

+import javafx.collections.ObservableList;

+import javafx.scene.control.TreeItem;

+

 public class EmfStoreRemoteProjectTreeItem extends TreeItem<Object> {

 	private ObservableList<TreeItem<Object>> children;

 

diff --git a/bundles/javafx/org.eclipse.emf.emfstore.fx.projects/src/org/eclipse/emf/emfstore/fx/internal/projects/LoginStage.java b/bundles/javafx/org.eclipse.emf.emfstore.fx.projects/src/org/eclipse/emf/emfstore/fx/internal/projects/LoginStage.java
index 9c77114..209c1cf 100644
--- a/bundles/javafx/org.eclipse.emf.emfstore.fx.projects/src/org/eclipse/emf/emfstore/fx/internal/projects/LoginStage.java
+++ b/bundles/javafx/org.eclipse.emf.emfstore.fx.projects/src/org/eclipse/emf/emfstore/fx/internal/projects/LoginStage.java
@@ -1,5 +1,18 @@
+/*******************************************************************************

+ * Copyright (c) 2011-2015 EclipseSource Muenchen GmbH 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:

+ * Lucas Koehler - initial API and implementation

+ ******************************************************************************/

 package org.eclipse.emf.emfstore.fx.internal.projects;

 

+import org.eclipse.emf.emfstore.client.ESUsersession;

+

 import javafx.event.ActionEvent;

 import javafx.event.EventHandler;

 import javafx.scene.Scene;

@@ -13,8 +26,6 @@
 import javafx.stage.Modality;

 import javafx.stage.Stage;

 

-import org.eclipse.emf.emfstore.client.ESUsersession;

-

 public class LoginStage extends Stage {

 

 	private String name;

diff --git a/bundles/javafx/org.eclipse.emf.emfstore.fx.projects/src/org/eclipse/emf/emfstore/fx/internal/projects/ProjectsView.java b/bundles/javafx/org.eclipse.emf.emfstore.fx.projects/src/org/eclipse/emf/emfstore/fx/internal/projects/ProjectsView.java
index f164fbb..e9b36a5 100644
--- a/bundles/javafx/org.eclipse.emf.emfstore.fx.projects/src/org/eclipse/emf/emfstore/fx/internal/projects/ProjectsView.java
+++ b/bundles/javafx/org.eclipse.emf.emfstore.fx.projects/src/org/eclipse/emf/emfstore/fx/internal/projects/ProjectsView.java
@@ -1,5 +1,24 @@
+/*******************************************************************************

+ * Copyright (c) 2011-2015 EclipseSource Muenchen GmbH 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:

+ * Lucas Koehler - initial API and implementation

+ ******************************************************************************/

 package org.eclipse.emf.emfstore.fx.internal.projects;

 

+import javax.annotation.PostConstruct;

+import javax.inject.Inject;

+

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecp.util.e4.fx.ModelElementOpenerFX;

+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;

+import org.eclipse.emf.emfstore.client.ESWorkspaceProvider;

+

 import javafx.beans.value.ChangeListener;

 import javafx.beans.value.ObservableValue;

 import javafx.event.ActionEvent;

@@ -13,14 +32,6 @@
 import javafx.scene.layout.Priority;

 import javafx.util.Callback;

 

-import javax.annotation.PostConstruct;

-import javax.inject.Inject;

-

-import org.eclipse.emf.ecore.EObject;

-import org.eclipse.emf.ecp.util.e4.fx.ModelElementOpenerFX;

-import org.eclipse.emf.edit.provider.ComposedAdapterFactory;

-import org.eclipse.emf.emfstore.client.ESWorkspaceProvider;

-

 public class ProjectsView {

 

 	// @Inject

diff --git a/bundles/javafx/org.eclipse.emf.emfstore.fx.projects/src/org/eclipse/emf/emfstore/fx/internal/projects/RemoteProjectsView.java b/bundles/javafx/org.eclipse.emf.emfstore.fx.projects/src/org/eclipse/emf/emfstore/fx/internal/projects/RemoteProjectsView.java
index c3c31d8..da000a5 100644
--- a/bundles/javafx/org.eclipse.emf.emfstore.fx.projects/src/org/eclipse/emf/emfstore/fx/internal/projects/RemoteProjectsView.java
+++ b/bundles/javafx/org.eclipse.emf.emfstore.fx.projects/src/org/eclipse/emf/emfstore/fx/internal/projects/RemoteProjectsView.java
@@ -1,14 +1,25 @@
+/*******************************************************************************

+ * Copyright (c) 2011-2015 EclipseSource Muenchen GmbH 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:

+ * Lucas Koehler - initial API and implementation

+ ******************************************************************************/

 package org.eclipse.emf.emfstore.fx.internal.projects;

 

+import javax.annotation.PostConstruct;

+

+import org.eclipse.emf.emfstore.client.ESWorkspaceProvider;

+

 import javafx.scene.control.TreeCell;

 import javafx.scene.control.TreeView;

 import javafx.scene.layout.BorderPane;

 import javafx.util.Callback;

 

-import javax.annotation.PostConstruct;

-

-import org.eclipse.emf.emfstore.client.ESWorkspaceProvider;

-

 public class RemoteProjectsView {

 

 	@PostConstruct

diff --git a/bundles/javafx/org.eclipse.emf.emfstore.fx.util/META-INF/MANIFEST.MF b/bundles/javafx/org.eclipse.emf.emfstore.fx.util/META-INF/MANIFEST.MF
index a87fdc7..2aebb71 100644
--- a/bundles/javafx/org.eclipse.emf.emfstore.fx.util/META-INF/MANIFEST.MF
+++ b/bundles/javafx/org.eclipse.emf.emfstore.fx.util/META-INF/MANIFEST.MF
@@ -7,3 +7,4 @@
 Export-Package: org.eclipse.emf.emfstore.fx.util;version="1.9.0"
 Require-Bundle: org.eclipse.emf.emfstore.client
 Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Automatic-Module-Name: org.eclipse.emf.emfstore.fx.util
diff --git a/bundles/org.eclipse.emf.ecp.application.e3/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.application.e3/META-INF/MANIFEST.MF
index e37a2be..6922cee 100644
--- a/bundles/org.eclipse.emf.ecp.application.e3/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.application.e3/META-INF/MANIFEST.MF
@@ -2,16 +2,17 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: ECP Demo Application Eclipse 3.x
 Bundle-SymbolicName: org.eclipse.emf.ecp.application.e3;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Activator: org.eclipse.emf.ecp.application3x.Activator
 Bundle-Vendor: Eclipse Modeling Project
 Bundle-Localization: plugin
-Export-Package: org.eclipse.emf.ecp.application3x;version="1.16.0";x-internal:=true
+Export-Package: org.eclipse.emf.ecp.application3x;version="1.17.0";x-internal:=true
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.4.0,4.0.0)",
-  org.eclipse.emf.ecp.ui.e3;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.ui;bundle-version="[3.0.0,4.0.0)",
-  org.eclipse.core.resources;bundle-version="[3.7.0,4.0.0)",
-  org.eclipse.ui.ide;bundle-version="[3.7.0,4.0.0)",
-  org.eclipse.ui.ide.application;bundle-version="[1.0.0,2.0.0)"
+ org.eclipse.emf.ecp.ui.e3;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.ui;bundle-version="[3.0.0,4.0.0)",
+ org.eclipse.core.resources;bundle-version="[3.7.0,4.0.0)",
+ org.eclipse.ui.ide;bundle-version="[3.7.0,4.0.0)",
+ org.eclipse.ui.ide.application;bundle-version="[1.0.0,2.0.0)"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.application.e3
diff --git a/bundles/org.eclipse.emf.ecp.application.e3/pom.xml b/bundles/org.eclipse.emf.ecp.application.e3/pom.xml
index ae64f58..b0a5bd9 100644
--- a/bundles/org.eclipse.emf.ecp.application.e3/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.application.e3/pom.xml
@@ -5,12 +5,12 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emf.ecp.application.e3</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
   
   <properties>
diff --git a/bundles/org.eclipse.emf.ecp.application.e4/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.application.e4/META-INF/MANIFEST.MF
index 2b6af93..ffc10e6 100644
--- a/bundles/org.eclipse.emf.ecp.application.e4/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.application.e4/META-INF/MANIFEST.MF
@@ -2,18 +2,19 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: ECP e4 Application
 Bundle-SymbolicName: org.eclipse.emf.ecp.application.e4;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emf.ecp.application.e4.editor;version="1.16.0";x-internal:=true
-Require-Bundle: org.eclipse.emf.ecp.ui.e4;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.core.expressions;bundle-version="[3.4.0,4.0.0)",
-  org.eclipse.emf.ecp.core;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.ui;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.e4.ui.workbench;bundle-version="[0.10.0,2.0.0)",
-  org.eclipse.e4.ui.model.workbench;bundle-version="[0.10.0,3.0.0)",
-  org.eclipse.e4.core.contexts;bundle-version="[1.3.0,2.0.0)",
-  org.eclipse.equinox.event;bundle-version="[1.3.0,2.0.0)"
+Export-Package: org.eclipse.emf.ecp.application.e4.editor;version="1.17.0";x-internal:=true
+Require-Bundle: org.eclipse.emf.ecp.ui.e4;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.core.expressions;bundle-version="[3.4.0,4.0.0)",
+ org.eclipse.emf.ecp.core;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.ui;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.e4.ui.workbench;bundle-version="[0.10.0,2.0.0)",
+ org.eclipse.e4.ui.model.workbench;bundle-version="[0.10.0,3.0.0)",
+ org.eclipse.e4.core.contexts;bundle-version="[1.3.0,2.0.0)",
+ org.eclipse.equinox.event;bundle-version="[1.3.0,2.0.0)"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
-Import-Package: org.eclipse.emfforms.spi.common.report;version="[1.16.0,1.17.0)",
-  org.osgi.framework;version="[1.2.0,2.0.0)"
+Import-Package: org.eclipse.emfforms.spi.common.report;version="[1.17.0,1.18.0]",
+ org.osgi.framework;version="[1.2.0,2.0.0)"
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.application.e4
diff --git a/bundles/org.eclipse.emf.ecp.application.e4/pom.xml b/bundles/org.eclipse.emf.ecp.application.e4/pom.xml
index 7c8a805..7957175 100644
--- a/bundles/org.eclipse.emf.ecp.application.e4/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.application.e4/pom.xml
@@ -5,12 +5,12 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emf.ecp.application.e4</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
   
   <properties>
diff --git a/bundles/org.eclipse.emf.ecp.cdo.core/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.cdo.core/META-INF/MANIFEST.MF
index ffa6f41..86802fc 100644
--- a/bundles/org.eclipse.emf.ecp.cdo.core/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.cdo.core/META-INF/MANIFEST.MF
@@ -2,17 +2,18 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: ECP CDO Model Repository Core
 Bundle-SymbolicName: org.eclipse.emf.ecp.cdo.core;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Activator: org.eclipse.emf.ecp.cdo.internal.core.Activator
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emf.ecp.cdo.internal.core;version="1.16.0";x-friends:="org.eclipse.emf.ecp.cdo.ui"
+Export-Package: org.eclipse.emf.ecp.cdo.internal.core;version="1.17.0";x-friends:="org.eclipse.emf.ecp.cdo.ui"
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.4.0,4.0.0)";visibility:=reexport,
-  org.eclipse.emf.ecp.core;bundle-version="[1.16.0,1.17.0)";visibility:=reexport,
-  org.eclipse.emf.cdo.net4j;bundle-version="[4.1.0,5.0.0)",
-  org.eclipse.emf.cdo.workspace;bundle-version="[4.1.0,5.0.0)";visibility:=reexport,
-  org.eclipse.emf.cdo.server.db;bundle-version="[4.1.0,5.0.0)",
-  org.eclipse.net4j.db.h2;bundle-version="[4.0.0,5.0.0)"
+ org.eclipse.emf.ecp.core;bundle-version="[1.17.0,1.18.0]";visibility:=reexport,
+ org.eclipse.emf.cdo.net4j;bundle-version="[4.1.0,5.0.0)",
+ org.eclipse.emf.cdo.workspace;bundle-version="[4.1.0,5.0.0)";visibility:=reexport,
+ org.eclipse.emf.cdo.server.db;bundle-version="[4.1.0,5.0.0)",
+ org.eclipse.net4j.db.h2;bundle-version="[4.0.0,5.0.0)"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Import-Package: org.h2;version="[1.0.2.qualifier,2.0.0)",
   org.h2.jdbcx;version="[1.0.2.qualifier,2.0.0)"
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.cdo.core
diff --git a/bundles/org.eclipse.emf.ecp.cdo.core/pom.xml b/bundles/org.eclipse.emf.ecp.cdo.core/pom.xml
index b62d5dc..ba842ff 100644
--- a/bundles/org.eclipse.emf.ecp.cdo.core/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.cdo.core/pom.xml
@@ -5,12 +5,12 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emf.ecp.cdo.core</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
   
   <properties>
diff --git a/bundles/org.eclipse.emf.ecp.cdo.ui/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.cdo.ui/META-INF/MANIFEST.MF
index 6c30e9c..546ba99 100644
--- a/bundles/org.eclipse.emf.ecp.cdo.ui/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.cdo.ui/META-INF/MANIFEST.MF
@@ -2,16 +2,17 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: CDO Model Repository ECP UI
 Bundle-SymbolicName: org.eclipse.emf.ecp.cdo.ui;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Activator: org.eclipse.emf.ecp.cdo.internal.ui.Activator
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emf.ecp.cdo.internal.ui;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.cdo.internal.ui.handlers;version="1.16.0";x-internal:=true
+Export-Package: org.eclipse.emf.ecp.cdo.internal.ui;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.cdo.internal.ui.handlers;version="1.17.0";x-internal:=true
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.4.0,4.0.0)",
-  org.eclipse.emf.ecp.cdo.core;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.cdo.edit;bundle-version="[4.0.0,5.0.0)",
-  org.eclipse.emf.ecp.ui;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.net4j.util;bundle-version="[3.0.0,4.0.0)",
-  org.eclipse.net4j.util.ui;bundle-version="[3.0.0,4.0.0)"
+ org.eclipse.emf.ecp.cdo.core;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.cdo.edit;bundle-version="[4.0.0,5.0.0)",
+ org.eclipse.emf.ecp.ui;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.net4j.util;bundle-version="[3.0.0,4.0.0)",
+ org.eclipse.net4j.util.ui;bundle-version="[3.0.0,4.0.0)"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.cdo.ui
diff --git a/bundles/org.eclipse.emf.ecp.cdo.ui/pom.xml b/bundles/org.eclipse.emf.ecp.cdo.ui/pom.xml
index e93e1b8..943e4ff 100644
--- a/bundles/org.eclipse.emf.ecp.cdo.ui/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.cdo.ui/pom.xml
@@ -5,12 +5,12 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emf.ecp.cdo.ui</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
   
   <properties>
diff --git a/bundles/org.eclipse.emf.ecp.changebroker.provider/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.changebroker.provider/META-INF/MANIFEST.MF
index e1cf2d8..4ba1394 100644
--- a/bundles/org.eclipse.emf.ecp.changebroker.provider/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.changebroker.provider/META-INF/MANIFEST.MF
@@ -2,13 +2,14 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: ECP Change Broker Provider Bridge
 Bundle-SymbolicName: org.eclipse.emf.ecp.changebroker.provider
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emf.ecp.changebroker.provider.internal;version="1.16.0";x-internal:=true
-Require-Bundle: org.eclipse.emf.ecp.changebroker;bundle-version="[1.16.0,1.17.0)",
+Export-Package: org.eclipse.emf.ecp.changebroker.provider.internal;version="1.17.0";x-internal:=true
+Require-Bundle: org.eclipse.emf.ecp.changebroker;bundle-version="[1.17.0,1.18.0)",
   org.eclipse.emf.common;bundle-version="[2.7.0,3.0.0)",
-  org.eclipse.emf.ecp.core;bundle-version="[1.16.0,1.17.0)",
+  org.eclipse.emf.ecp.core;bundle-version="[1.17.0,1.18.0)",
   org.eclipse.core.runtime;bundle-version="[3.7.0,4.0.0)"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Service-Component: OSGI-INF/component.xml
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.changebroker.provider
diff --git a/bundles/org.eclipse.emf.ecp.changebroker.provider/pom.xml b/bundles/org.eclipse.emf.ecp.changebroker.provider/pom.xml
index d334657..6420609 100644
--- a/bundles/org.eclipse.emf.ecp.changebroker.provider/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.changebroker.provider/pom.xml
@@ -5,11 +5,11 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emf.ecp.changebroker.provider</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 </project>
diff --git a/bundles/org.eclipse.emf.ecp.changebroker/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.changebroker/META-INF/MANIFEST.MF
index cdd6d76..ef8fde4 100644
--- a/bundles/org.eclipse.emf.ecp.changebroker/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.changebroker/META-INF/MANIFEST.MF
@@ -2,11 +2,12 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: ECP Change Broker
 Bundle-SymbolicName: org.eclipse.emf.ecp.changebroker
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emf.ecp.changebroker.internal;version="1.16.0";x-internal:=true,
- org.eclipse.emf.ecp.changebroker.spi;version="1.16.0"
+Export-Package: org.eclipse.emf.ecp.changebroker.internal;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.changebroker.spi;version="1.17.0"
 Require-Bundle: org.eclipse.emf.ecore;bundle-version="[2.5.0,3.0.0)"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Service-Component: OSGI-INF/component.xml
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.changebroker
diff --git a/bundles/org.eclipse.emf.ecp.changebroker/pom.xml b/bundles/org.eclipse.emf.ecp.changebroker/pom.xml
index 40477bb..3ae48ba 100644
--- a/bundles/org.eclipse.emf.ecp.changebroker/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.changebroker/pom.xml
@@ -5,11 +5,11 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emf.ecp.changebroker</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 </project>
diff --git a/bundles/org.eclipse.emf.ecp.common.ui/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.common.ui/META-INF/MANIFEST.MF
index e8cb0fe..3235977 100644
--- a/bundles/org.eclipse.emf.ecp.common.ui/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.common.ui/META-INF/MANIFEST.MF
@@ -2,15 +2,15 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Common UI
 Bundle-SymbolicName: org.eclipse.emf.ecp.common.ui
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emf.ecp.internal.common.ui;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.spi.common.ui;version="1.16.0",
-  org.eclipse.emf.ecp.spi.common.ui.composites;version="1.16.0"
+Export-Package: org.eclipse.emf.ecp.internal.common.ui;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.spi.common.ui;version="1.17.0",
+ org.eclipse.emf.ecp.spi.common.ui.composites;version="1.17.0"
 Require-Bundle: org.eclipse.emf.ecore;bundle-version="[2.8.0,3.0.0)",
-  org.eclipse.emf.edit;bundle-version="[2.8.0,3.0.0)",
-  org.eclipse.emf.ecp.common;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.localization;bundle-version="[1.16.0,1.17.0)"
+ org.eclipse.emf.edit;bundle-version="[2.8.0,3.0.0)",
+ org.eclipse.emf.ecp.common;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.localization;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Import-Package: org.eclipse.emf.edit.ui.provider;version="0.0.0",
   org.eclipse.jface.dialogs;version="0.0.0",
@@ -25,3 +25,4 @@
   org.eclipse.swt.widgets;version="0.0.0",
   org.osgi.framework;version="1.8.0"
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.common.ui
diff --git a/bundles/org.eclipse.emf.ecp.common.ui/OSGI-INF/l10n/bundle.properties b/bundles/org.eclipse.emf.ecp.common.ui/OSGI-INF/l10n/bundle.properties
index 280736e..09e37ba 100644
--- a/bundles/org.eclipse.emf.ecp.common.ui/OSGI-INF/l10n/bundle.properties
+++ b/bundles/org.eclipse.emf.ecp.common.ui/OSGI-INF/l10n/bundle.properties
@@ -1,5 +1,5 @@
 AbstractModelElementHelper_FilterLabel=Search
-AbstractModelElementHelper_FilterText=Model Element class
+AbstractModelElementHelper_FilterText=Model Element
 CheckedModelElementHelper_DeselectAllLabel=Deselect All
 CheckedModelElementHelper_SelectAllLabel=Select All
 
diff --git a/bundles/org.eclipse.emf.ecp.common.ui/pom.xml b/bundles/org.eclipse.emf.ecp.common.ui/pom.xml
index c906f81..1ed1d93 100644
--- a/bundles/org.eclipse.emf.ecp.common.ui/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.common.ui/pom.xml
@@ -5,12 +5,12 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emf.ecp.common.ui</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
   
   <properties>
diff --git a/bundles/org.eclipse.emf.ecp.common.ui/src/org/eclipse/emf/ecp/spi/common/ui/SelectModelElementWizardFactory.java b/bundles/org.eclipse.emf.ecp.common.ui/src/org/eclipse/emf/ecp/spi/common/ui/SelectModelElementWizardFactory.java
index fa89df7..afebb34 100644
--- a/bundles/org.eclipse.emf.ecp.common.ui/src/org/eclipse/emf/ecp/spi/common/ui/SelectModelElementWizardFactory.java
+++ b/bundles/org.eclipse.emf.ecp.common.ui/src/org/eclipse/emf/ecp/spi/common/ui/SelectModelElementWizardFactory.java
@@ -37,9 +37,12 @@
 	 * @param elements The elements to be selected
 	 * @param isMany whether multi selection is allowed
 	 * @return The selected elements
+	 *
+	 * @param <T> the type to select
 	 */
-	public static Set<EObject> openModelElementSelectionDialog(
-		final Set<EObject> elements, boolean isMany) {
+	@SuppressWarnings("unchecked")
+	public static <T extends EObject> Set<T> openModelElementSelectionDialog(
+		final Set<T> elements, boolean isMany) {
 
 		final SelectionComposite<TableViewer> tableSelectionComposite = CompositeFactory
 			.getTableSelectionComposite(elements.toArray(), isMany);
@@ -52,9 +55,10 @@
 			LocalizationServiceHelper.getString(SelectModelElementWizardFactory.class,
 				MessageKeys.ModelelementSelectionDialog_DialogTitle),
 			LocalizationServiceHelper.getString(SelectModelElementWizardFactory.class,
-				MessageKeys.ModelelementSelectionDialog_DialogMessage_SearchPattern), EObject.class);
+				MessageKeys.ModelelementSelectionDialog_DialogMessage_SearchPattern),
+			EObject.class);
 
-		final HashSet<EObject> selectedElements = new HashSet<EObject>();
+		final HashSet<T> selectedElements = new HashSet<T>();
 		wizard.setCompositeProvider(tableSelectionComposite);
 
 		final WizardDialog wd = new WizardDialog(Display.getDefault().getActiveShell(), wizard);
@@ -67,7 +71,7 @@
 
 			for (final Object object : selection) {
 				if (object instanceof EObject) {
-					selectedElements.add((EObject) object);
+					selectedElements.add((T) object);
 				}
 			}
 
diff --git a/bundles/org.eclipse.emf.ecp.common.ui/src/org/eclipse/emf/ecp/spi/common/ui/composites/SelectModelElementCompositeImpl.java b/bundles/org.eclipse.emf.ecp.common.ui/src/org/eclipse/emf/ecp/spi/common/ui/composites/SelectModelElementCompositeImpl.java
index 4c12b13..3020697 100644
--- a/bundles/org.eclipse.emf.ecp.common.ui/src/org/eclipse/emf/ecp/spi/common/ui/composites/SelectModelElementCompositeImpl.java
+++ b/bundles/org.eclipse.emf.ecp.common.ui/src/org/eclipse/emf/ecp/spi/common/ui/composites/SelectModelElementCompositeImpl.java
@@ -24,6 +24,7 @@
 import org.eclipse.jface.viewers.ILabelProvider;
 import org.eclipse.jface.viewers.TableViewer;
 import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.jface.viewers.ViewerComparator;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.widgets.Composite;
 
@@ -100,6 +101,7 @@
 		}
 		lv.setLabelProvider(getLabelProvider());
 		lv.setContentProvider(ArrayContentProvider.getInstance());
+		lv.setComparator(new ViewerComparator());
 		lv.setInput(getInput());
 		return lv;
 	}
diff --git a/bundles/org.eclipse.emf.ecp.common/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.common/META-INF/MANIFEST.MF
index 86f5cce..56bd737 100644
--- a/bundles/org.eclipse.emf.ecp.common/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.common/META-INF/MANIFEST.MF
@@ -2,12 +2,13 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: ECP Common
 Bundle-SymbolicName: org.eclipse.emf.ecp.common
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emf.ecp.common.spi;version="1.16.0",
- org.eclipse.emf.ecp.common.spi.asserts;version="1.16.0",
- org.eclipse.emf.ecp.common.spi.cachetree;version="1.16.0"
+Export-Package: org.eclipse.emf.ecp.common.spi;version="1.17.0",
+ org.eclipse.emf.ecp.common.spi.asserts;version="1.17.0",
+ org.eclipse.emf.ecp.common.spi.cachetree;version="1.17.0"
 Require-Bundle: org.eclipse.emf.ecore;bundle-version="[2.8.0,3.0.0)",
  org.eclipse.emf.edit;bundle-version="[2.8.0,3.0.0)"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.common
diff --git a/bundles/org.eclipse.emf.ecp.common/pom.xml b/bundles/org.eclipse.emf.ecp.common/pom.xml
index d4a7f53..e070ca2 100644
--- a/bundles/org.eclipse.emf.ecp.common/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.common/pom.xml
@@ -5,12 +5,12 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emf.ecp.common</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
   
   <properties>
diff --git a/bundles/org.eclipse.emf.ecp.common/src/org/eclipse/emf/ecp/common/spi/ChildrenDescriptorCollector.java b/bundles/org.eclipse.emf.ecp.common/src/org/eclipse/emf/ecp/common/spi/ChildrenDescriptorCollector.java
index a3f9213..64fa8e5 100644
--- a/bundles/org.eclipse.emf.ecp.common/src/org/eclipse/emf/ecp/common/spi/ChildrenDescriptorCollector.java
+++ b/bundles/org.eclipse.emf.ecp.common/src/org/eclipse/emf/ecp/common/spi/ChildrenDescriptorCollector.java
@@ -14,6 +14,7 @@
 import java.lang.reflect.AccessibleObject;
 import java.lang.reflect.Field;
 import java.util.Collection;
+import java.util.Collections;
 import java.util.LinkedHashSet;
 import java.util.Set;
 
@@ -26,7 +27,7 @@
 
 /**
  * A helper class which collects all the available descriptors for an {@link EObject}.
- * 
+ *
  * @since 1.5
  */
 public class ChildrenDescriptorCollector {
@@ -45,10 +46,12 @@
 	 * @param eObject The {@link EObject} whose descriptors should be returned
 	 * @return The descriptors of the requested {@link EObject}
 	 */
-	public Collection<?> getDescriptors(EObject eObject)
-	{
+	public Collection<?> getDescriptors(EObject eObject) {
 		this.eObject = eObject;
 		domain = AdapterFactoryEditingDomain.getEditingDomainFor(eObject);
+		if (domain == null) {
+			return Collections.emptyList();
+		}
 		descriptors = domain.getNewChildDescriptors(eObject, null);
 		alreadyReadNameSpaces = new LinkedHashSet<String>();
 		alreadyReadNameSpaces.add(eObject.eClass().getEPackage().getNsURI());
@@ -56,8 +59,7 @@
 		return descriptors;
 	}
 
-	private void iterateThroughSuperTypes()
-	{
+	private void iterateThroughSuperTypes() {
 		for (final EClass eClass : eObject.eClass().getEAllSuperTypes()) {
 			final String namespace = eClass.getEPackage().getNsURI();
 			if (alreadyReadNameSpaces.contains(namespace)) {
@@ -70,8 +72,7 @@
 
 	// EMF API
 	@SuppressWarnings({ "rawtypes", "unchecked" })
-	private void iterateThroughExtenderDescriptors(String namespace)
-	{
+	private void iterateThroughExtenderDescriptors(String namespace) {
 		for (final IChildCreationExtender.Descriptor descriptor : EMFEditPlugin
 			.getChildCreationExtenderDescriptorRegistry()
 			.getDescriptors(namespace)) {
diff --git a/bundles/org.eclipse.emf.ecp.common/src/org/eclipse/emf/ecp/common/spi/EMFUtils.java b/bundles/org.eclipse.emf.ecp.common/src/org/eclipse/emf/ecp/common/spi/EMFUtils.java
index 990815e..92e58f6 100644
--- a/bundles/org.eclipse.emf.ecp.common/src/org/eclipse/emf/ecp/common/spi/EMFUtils.java
+++ b/bundles/org.eclipse.emf.ecp.common/src/org/eclipse/emf/ecp/common/spi/EMFUtils.java
@@ -20,6 +20,7 @@
 import org.eclipse.emf.ecore.EClassifier;
 import org.eclipse.emf.ecore.EPackage;
 import org.eclipse.emf.ecore.EPackage.Registry;
+import org.eclipse.emf.ecore.EcorePackage;
 
 /**
  * Util class for basic EMF.
@@ -47,7 +48,8 @@
 			for (final EClassifier eClassifier : ePackage.getEClassifiers()) {
 				if (eClassifier instanceof EClass) {
 					final EClass eClass = (EClass) eClassifier;
-					if (superClass.isSuperTypeOf(eClass) && !eClass.isAbstract() && !eClass.isInterface()) {
+					if (!eClass.isAbstract() && !eClass.isInterface()
+						&& (EcorePackage.eINSTANCE.getEObject() == superClass || superClass.isSuperTypeOf(eClass))) {
 						classes.add(eClass);
 					}
 				}
diff --git a/bundles/org.eclipse.emf.ecp.core.emffilter/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.core.emffilter/META-INF/MANIFEST.MF
index 0a643cb..329ee10 100644
--- a/bundles/org.eclipse.emf.ecp.core.emffilter/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.core.emffilter/META-INF/MANIFEST.MF
@@ -2,11 +2,12 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: ECP Emffilter
 Bundle-SymbolicName: org.eclipse.emf.ecp.core.emffilter;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Activator: org.eclipse.emf.ecp.core.emffilter.internal.Activator
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emf.ecp.core.emffilter.internal;version="1.16.0";x-internal:=true
+Export-Package: org.eclipse.emf.ecp.core.emffilter.internal;version="1.17.0";x-internal:=true
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.6.0,4.0.0)",
-  org.eclipse.emf.ecp.core;bundle-version="[1.16.0,1.17.0)"
+ org.eclipse.emf.ecp.core;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.core.emffilter
diff --git a/bundles/org.eclipse.emf.ecp.core.emffilter/pom.xml b/bundles/org.eclipse.emf.ecp.core.emffilter/pom.xml
index b931ce1..fafd890 100644
--- a/bundles/org.eclipse.emf.ecp.core.emffilter/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.core.emffilter/pom.xml
@@ -5,11 +5,11 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emf.ecp.core.emffilter</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 </project>
diff --git a/bundles/org.eclipse.emf.ecp.core.emffilter/src/org/eclipse/emf/ecp/core/emffilter/internal/DefaultFilter.java b/bundles/org.eclipse.emf.ecp.core.emffilter/src/org/eclipse/emf/ecp/core/emffilter/internal/DefaultFilter.java
index 9f7a0d0..850c778 100644
--- a/bundles/org.eclipse.emf.ecp.core.emffilter/src/org/eclipse/emf/ecp/core/emffilter/internal/DefaultFilter.java
+++ b/bundles/org.eclipse.emf.ecp.core.emffilter/src/org/eclipse/emf/ecp/core/emffilter/internal/DefaultFilter.java
@@ -73,6 +73,7 @@
 
 	private void addViewModels(Set<String> packages) {
 		packages.add("http://org/eclipse/emf/ecp/view/model/170"); //$NON-NLS-1$
+		packages.add("http://org/eclipse/emf/ecp/view/model/1170"); //$NON-NLS-1$
 		packages.add("http://org/eclipse/emf/ecp/view/custom/model"); //$NON-NLS-1$
 		packages.add("http://org/eclipse/emf/ecp/view/dynamictree/model"); //$NON-NLS-1$
 		packages.add("http://org/eclipse/emf/ecp/view/group/model"); //$NON-NLS-1$
@@ -83,6 +84,7 @@
 		packages.add("http://org/eclipse/emf/ecp/view/separator/model"); //$NON-NLS-1$
 		packages.add("http://org/eclipse/emf/ecp/view/table/model/150"); //$NON-NLS-1$
 		packages.add("http://org/eclipse/emf/ecp/view/vertical/model"); //$NON-NLS-1$
+		packages.add("http://org/eclipse/emf/emfforms/view/annotation/model"); //$NON-NLS-1$
 
 		packages.add("http://org/eclipse/emf/ecp/view/categorization/model"); //$NON-NLS-1$
 		packages.add("http://org/eclipse/emf/ecp/view/template/model"); //$NON-NLS-1$
@@ -97,6 +99,10 @@
 		packages.add("http://www.eclipse.org/emf/ecp/view/template/style/tab/model"); //$NON-NLS-1$
 		packages.add("http://www.eclipse.org/emf/ecp/view/template/style/table/model"); //$NON-NLS-1$
 		packages.add("http://www.eclipse.org/emf/ecp/view/template/style/unsettable/model"); //$NON-NLS-1$
+		packages.add("http://www.eclipse.org/emf/ecp/view/template/style/wrap/model"); //$NON-NLS-1$
+		packages.add("http://www.eclipse.org/emf/ecp/view/template/selector/annotation/model"); //$NON-NLS-1$
+		packages.add("http://www.eclipse.org/emf/ecp/view/template/selector/hierarchy/model"); //$NON-NLS-1$
+		packages.add("http://www.eclipse.org/emf/ecp/view/template/selector/bool/model"); //$NON-NLS-1$
 
 		packages.add("http://org/eclipse/emf/ecp/view/treemasterview/model"); //$NON-NLS-1$
 
diff --git a/bundles/org.eclipse.emf.ecp.core.rap.sessionprovider.rwt/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.core.rap.sessionprovider.rwt/META-INF/MANIFEST.MF
index 5fba53c..2c2ab45 100644
--- a/bundles/org.eclipse.emf.ecp.core.rap.sessionprovider.rwt/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.core.rap.sessionprovider.rwt/META-INF/MANIFEST.MF
@@ -2,14 +2,15 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: ECP Core RAP Sessionprovider
 Bundle-SymbolicName: org.eclipse.emf.ecp.core.rap.sessionprovider.rwt
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emf.ecp.core.rap.sessionprovider.rwt;version="1.16.0"
-Require-Bundle: org.eclipse.emf.ecp.core.rap;bundle-version="[1.16.0,1.17.0)"
+Export-Package: org.eclipse.emf.ecp.core.rap.sessionprovider.rwt;version="1.17.0"
+Require-Bundle: org.eclipse.emf.ecp.core.rap;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Import-Package: javax.servlet.http;version="0.0.0",
-  org.eclipse.emf.ecp.core.rap;version="[1.16.0,1.17.0)",
-  org.eclipse.rap.rwt;version="0.0.0",
-  org.eclipse.rap.rwt.service;version="3.0.2"
+ org.eclipse.emf.ecp.core.rap;version="[1.17.0,1.18.0]",
+ org.eclipse.rap.rwt;version="0.0.0",
+ org.eclipse.rap.rwt.service;version="3.0.2"
 Service-Component: OSGI-INF/component.xml
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.core.rap.sessionprovider.rwt
diff --git a/bundles/org.eclipse.emf.ecp.core.rap.sessionprovider.rwt/pom.xml b/bundles/org.eclipse.emf.ecp.core.rap.sessionprovider.rwt/pom.xml
index 70a4b01..f65ccef 100644
--- a/bundles/org.eclipse.emf.ecp.core.rap.sessionprovider.rwt/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.core.rap.sessionprovider.rwt/pom.xml
@@ -5,11 +5,11 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emf.ecp.core.rap.sessionprovider.rwt</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 </project>
diff --git a/bundles/org.eclipse.emf.ecp.core.rap/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.core.rap/META-INF/MANIFEST.MF
index 220392b..62a4757 100644
--- a/bundles/org.eclipse.emf.ecp.core.rap/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.core.rap/META-INF/MANIFEST.MF
@@ -2,12 +2,12 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: ECP Core RAP
 Bundle-SymbolicName: org.eclipse.emf.ecp.core.rap
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Activator: org.eclipse.emf.ecp.core.rap.Activator
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emf.ecp.core.rap;version="1.16.0"
+Export-Package: org.eclipse.emf.ecp.core.rap;version="1.17.0"
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.7.0,4.0.0)",
-  org.eclipse.emf.ecp.core;bundle-version="[1.16.0,1.17.0)"
+ org.eclipse.emf.ecp.core;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Import-Package: org.eclipse.core.runtime;version="0.0.0",
   org.eclipse.net4j.util.lifecycle;version="0.0.0",
@@ -16,3 +16,4 @@
   org.eclipse.swt.widgets;version="0.0.0",
   org.osgi.framework;version="0.0.0"
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.core.rap
diff --git a/bundles/org.eclipse.emf.ecp.core.rap/pom.xml b/bundles/org.eclipse.emf.ecp.core.rap/pom.xml
index e4b76bb..7cbc033 100644
--- a/bundles/org.eclipse.emf.ecp.core.rap/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.core.rap/pom.xml
@@ -5,11 +5,11 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emf.ecp.core.rap</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 </project>
diff --git a/bundles/org.eclipse.emf.ecp.core/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.core/META-INF/MANIFEST.MF
index 2567bb7..ad15868 100644
--- a/bundles/org.eclipse.emf.ecp.core/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.core/META-INF/MANIFEST.MF
@@ -2,29 +2,30 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: ECP Core
 Bundle-SymbolicName: org.eclipse.emf.ecp.core;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Activator: org.eclipse.emf.ecp.internal.core.Activator
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emf.ecp.core;version="1.16.0",
-  org.eclipse.emf.ecp.core.exceptions;version="1.16.0",
-  org.eclipse.emf.ecp.core.util;version="1.16.0",
-  org.eclipse.emf.ecp.core.util.observer;version="1.16.0",
-  org.eclipse.emf.ecp.internal.core;version="1.16.0";
-   x-friends:="org.eclipse.emf.ecp.ui,
-    org.eclipse.emf.ecp.ui.view.test,
-    org.eclipse.emf.ecp.edit.ecore.swt,
-    org.eclipse.emf.ecp.core.rap",
-  org.eclipse.emf.ecp.internal.core.properties;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.internal.core.util;version="1.16.0";x-friends:="org.eclipse.emf.ecp.ui",
-  org.eclipse.emf.ecp.internal.core.util.observer;version="1.16.0";x-friends:="org.eclipse.emf.ecp.core.rap",
-  org.eclipse.emf.ecp.spi.core;version="1.16.0",
-  org.eclipse.emf.ecp.spi.core.util;version="1.16.0"
+Export-Package: org.eclipse.emf.ecp.core;version="1.17.0",
+ org.eclipse.emf.ecp.core.exceptions;version="1.17.0",
+ org.eclipse.emf.ecp.core.util;version="1.17.0",
+ org.eclipse.emf.ecp.core.util.observer;version="1.17.0",
+ org.eclipse.emf.ecp.internal.core;version="1.17.0";
+  x-friends:="org.eclipse.emf.ecp.ui,
+   org.eclipse.emf.ecp.ui.view.test,
+   org.eclipse.emf.ecp.edit.ecore.swt,
+   org.eclipse.emf.ecp.core.rap",
+ org.eclipse.emf.ecp.internal.core.properties;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.internal.core.util;version="1.17.0";x-friends:="org.eclipse.emf.ecp.ui",
+ org.eclipse.emf.ecp.internal.core.util.observer;version="1.17.0";x-friends:="org.eclipse.emf.ecp.core.rap",
+ org.eclipse.emf.ecp.spi.core;version="1.17.0",
+ org.eclipse.emf.ecp.spi.core.util;version="1.17.0"
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.4.0,4.0.0)",
-  org.eclipse.core.expressions;bundle-version="[3.4.0,4.0.0)";resolution:=optional,
-  org.eclipse.emf.ecore;bundle-version="[2.5.0,3.0.0)";visibility:=reexport,
-  org.eclipse.emf.edit;bundle-version="[2.5.0,3.0.0)";visibility:=reexport,
-  org.eclipse.net4j.util;bundle-version="[3.0.0,4.0.0)",
-  org.eclipse.emf.ecp.common;bundle-version="[1.16.0,1.17.0)"
+ org.eclipse.core.expressions;bundle-version="[3.4.0,4.0.0)";resolution:=optional,
+ org.eclipse.emf.ecore;bundle-version="[2.5.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.edit;bundle-version="[2.5.0,3.0.0)";visibility:=reexport,
+ org.eclipse.net4j.util;bundle-version="[3.0.0,4.0.0)",
+ org.eclipse.emf.ecp.common;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Service-Component: OSGI-INF/ecpProviderRegistry.xml,OSGI-INF/ecpRepositoryManager.xml,OSGI-INF/ecpProjectManager.xml,OSGI-INF/ecpObserverBus.xml
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.core
diff --git a/bundles/org.eclipse.emf.ecp.core/pom.xml b/bundles/org.eclipse.emf.ecp.core/pom.xml
index 2e1c1a6..b1d379d 100644
--- a/bundles/org.eclipse.emf.ecp.core/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.core/pom.xml
@@ -5,12 +5,12 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emf.ecp.core</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
   
   <properties>
diff --git a/bundles/org.eclipse.emf.ecp.core/src/org/eclipse/emf/ecp/internal/core/ECPRepositoryImpl.java b/bundles/org.eclipse.emf.ecp.core/src/org/eclipse/emf/ecp/internal/core/ECPRepositoryImpl.java
index bf30a88..f292bd8 100644
--- a/bundles/org.eclipse.emf.ecp.core/src/org/eclipse/emf/ecp/internal/core/ECPRepositoryImpl.java
+++ b/bundles/org.eclipse.emf.ecp.core/src/org/eclipse/emf/ecp/internal/core/ECPRepositoryImpl.java
@@ -73,10 +73,10 @@
 	public ECPRepositoryImpl(ECPProvider provider, String name, ECPProperties properties) {
 		super(name, properties);
 		label = name;
-		description = "";
+		description = ""; //$NON-NLS-1$
 
 		if (provider == null) {
-			throw new IllegalArgumentException("Provider is null");
+			throw new IllegalArgumentException("Provider is null"); //$NON-NLS-1$
 		}
 
 		this.provider = (InternalProvider) provider;
@@ -99,7 +99,7 @@
 		final String providerName = in.readUTF();
 		provider = (InternalProvider) ECPUtil.getECPProviderRegistry().getProvider(providerName);
 		if (provider == null) {
-			throw new IllegalStateException("Provider not found: " + providerName);
+			throw new IllegalStateException("Provider not found: " + providerName); //$NON-NLS-1$
 		}
 
 		provider.addDisposeListener(this);
diff --git a/bundles/org.eclipse.emf.ecp.core/src/org/eclipse/emf/ecp/internal/core/ECPRepositoryManagerImpl.java b/bundles/org.eclipse.emf.ecp.core/src/org/eclipse/emf/ecp/internal/core/ECPRepositoryManagerImpl.java
index a2611d8..871f818 100644
--- a/bundles/org.eclipse.emf.ecp.core/src/org/eclipse/emf/ecp/internal/core/ECPRepositoryManagerImpl.java
+++ b/bundles/org.eclipse.emf.ecp.core/src/org/eclipse/emf/ecp/internal/core/ECPRepositoryManagerImpl.java
@@ -64,7 +64,7 @@
 	/**
 	 * The file extension that is used for dynamic properties of statically declared repositories.
 	 */
-	private static final String DYNAMIC_PROPERTIES_EXTENSION = ".dynamic_properties";
+	private static final String DYNAMIC_PROPERTIES_EXTENSION = ".dynamic_properties"; //$NON-NLS-1$
 
 	private final RepositoryParser extensionParser = new RepositoryParser();
 
@@ -74,7 +74,7 @@
 	public ECPRepositoryManagerImpl() {
 
 		final File stateLocation = Activator.getInstance().getStateLocation().toFile();
-		setFolder(new File(stateLocation, "repositories"));
+		setFolder(new File(stateLocation, "repositories")); //$NON-NLS-1$
 	}
 
 	/** {@inheritDoc} **/
@@ -114,8 +114,8 @@
 	public ECPRepository addRepository(ECPProvider provider, String name, String label, String description,
 		ECPProperties properties) {
 		if (!provider.hasCreateRepositorySupport()) {
-			throw new UnsupportedOperationException("The provider " + provider.getLabel()
-				+ " doesn't support the addition of new repositories.");
+			throw new UnsupportedOperationException("The provider " + provider.getLabel() //$NON-NLS-1$
+				+ " doesn't support the addition of new repositories."); //$NON-NLS-1$
 		}
 		final InternalRepository repository = new ECPRepositoryImpl(provider, name, properties);
 		repository.setLabel(label);
@@ -199,7 +199,7 @@
 	 * @author Eike Stepper
 	 */
 	private final class RepositoryParser extends ExtensionParser<InternalRepository> {
-		private static final String EXTENSION_POINT_NAME = "repositories";
+		private static final String EXTENSION_POINT_NAME = "repositories"; //$NON-NLS-1$
 
 		RepositoryParser() {
 			super(ECPRepositoryManagerImpl.this, Activator.PLUGIN_ID, EXTENSION_POINT_NAME);
@@ -209,7 +209,7 @@
 		protected InternalRepository createElement(String name, IConfigurationElement configurationElement) {
 			final RepositoryDescriptor descriptor = new RepositoryDescriptor(name, configurationElement);
 			descriptor.setLabel(configurationElement.getDeclaringExtension().getLabel());
-			descriptor.setDescription(configurationElement.getAttribute("description"));
+			descriptor.setDescription(configurationElement.getAttribute("description")); //$NON-NLS-1$
 			return descriptor;
 		}
 	}
@@ -235,7 +235,7 @@
 
 			private void excludeDeclaredProperties(String key) {
 				if (declaredPropertyKeys != null && declaredPropertyKeys.contains(key)) {
-					throw new IllegalArgumentException("Statically declared property can not be changed: " + key);
+					throw new IllegalArgumentException("Statically declared property can not be changed: " + key); //$NON-NLS-1$
 				}
 			}
 
@@ -253,9 +253,9 @@
 
 		RepositoryDescriptor(String name, IConfigurationElement configurationElement) {
 			super(ECPRepositoryManagerImpl.this, name, TYPE, configurationElement);
-			for (final IConfigurationElement property : configurationElement.getChildren("property")) {
-				final String key = property.getAttribute("key");
-				final String value = property.getAttribute("value");
+			for (final IConfigurationElement property : configurationElement.getChildren("property")) { //$NON-NLS-1$
+				final String key = property.getAttribute("key"); //$NON-NLS-1$
+				final String value = property.getAttribute("value"); //$NON-NLS-1$
 				properties.addProperty(key, value);
 			}
 
@@ -305,7 +305,7 @@
 		/** {@inheritDoc} */
 		@Override
 		public InternalProvider getProvider() {
-			final String providerName = getConfigurationElement().getAttribute("provider");
+			final String providerName = getConfigurationElement().getAttribute("provider"); //$NON-NLS-1$
 			return (InternalProvider) ECPUtil.getECPProviderRegistry().getProvider(providerName);
 		}
 
diff --git a/bundles/org.eclipse.emf.ecp.core/src/org/eclipse/emf/ecp/internal/core/util/Element.java b/bundles/org.eclipse.emf.ecp.core/src/org/eclipse/emf/ecp/internal/core/util/Element.java
index 53328a9..bc160db 100644
--- a/bundles/org.eclipse.emf.ecp.core/src/org/eclipse/emf/ecp/internal/core/util/Element.java
+++ b/bundles/org.eclipse.emf.ecp.core/src/org/eclipse/emf/ecp/internal/core/util/Element.java
@@ -26,7 +26,7 @@
 	 */

 	public Element(String name) {

 		if (name == null) {

-			throw new IllegalArgumentException("name is null");

+			throw new IllegalArgumentException("name is null"); //$NON-NLS-1$

 		}

 

 		this.name = name;

diff --git a/bundles/org.eclipse.emf.ecp.core/src/org/eclipse/emf/ecp/internal/core/util/ElementDescriptor.java b/bundles/org.eclipse.emf.ecp.core/src/org/eclipse/emf/ecp/internal/core/util/ElementDescriptor.java
index e6ad4e3..a2aa440 100644
--- a/bundles/org.eclipse.emf.ecp.core/src/org/eclipse/emf/ecp/internal/core/util/ElementDescriptor.java
+++ b/bundles/org.eclipse.emf.ecp.core/src/org/eclipse/emf/ecp/internal/core/util/ElementDescriptor.java
@@ -110,7 +110,7 @@
 

 					resolvedElement(resolvedElement);

 				} catch (final Throwable t) {

-					throw new Error("Unable to resolve " + this, t);

+					throw new Error("Unable to resolve " + this, t); //$NON-NLS-1$

 				}

 

 				resolved = true;

diff --git a/bundles/org.eclipse.emf.ecp.core/src/org/eclipse/emf/ecp/internal/core/util/ExtensionParser.java b/bundles/org.eclipse.emf.ecp.core/src/org/eclipse/emf/ecp/internal/core/util/ExtensionParser.java
index 9fb50d1..7d21c48 100644
--- a/bundles/org.eclipse.emf.ecp.core/src/org/eclipse/emf/ecp/internal/core/util/ExtensionParser.java
+++ b/bundles/org.eclipse.emf.ecp.core/src/org/eclipse/emf/ecp/internal/core/util/ExtensionParser.java
@@ -91,7 +91,7 @@
 	protected void doActivate() throws Exception {

 		super.doActivate();

 

-		final String extensionPointID = namespace + "." + name;

+		final String extensionPointID = namespace + "." + name; //$NON-NLS-1$

 		final Set<ELEMENT> add = new HashSet<ELEMENT>();

 

 		final IExtensionPoint extensionPoint = Platform.getExtensionRegistry().getExtensionPoint(extensionPointID);

@@ -115,7 +115,7 @@
 

 		final ELEMENT element = createElement(name, configurationElement);

 		element.setLabel(extension.getLabel());

-		element.setDescription(configurationElement.getAttribute("description"));

+		element.setDescription(configurationElement.getAttribute("description")); //$NON-NLS-1$

 		result.add(element);

 	}

 

@@ -145,17 +145,17 @@
 				final Bundle bundle = Platform.getBundle(bundleName);

 				String location = bundle.getLocation();

 

-				if (location.startsWith("initial@")) {

-					location = location.substring("initial@".length());

+				if (location.startsWith("initial@")) { //$NON-NLS-1$

+					location = location.substring("initial@".length()); //$NON-NLS-1$

 				}

 

-				final String prefix = "reference:file:";

+				final String prefix = "reference:file:"; //$NON-NLS-1$

 				if (location.startsWith(prefix)) {

 					location = location.substring(prefix.length());

 

 					// TODO Trace properly

-					System.out.println(getClass().getSimpleName() + ": " + bundleName + " [" + bundle.getBundleId()

-						+ "] --> file:" + new File(location).getCanonicalPath());

+					System.out.println(getClass().getSimpleName() + ": " + bundleName + " [" + bundle.getBundleId() //$NON-NLS-1$ //$NON-NLS-2$

+						+ "] --> file:" + new File(location).getCanonicalPath()); //$NON-NLS-1$

 				}

 			} catch (final Exception ex) {

 				ex.printStackTrace();

@@ -179,7 +179,7 @@
 		}

 

 		protected String getClassAttributeName() {

-			return "class";

+			return "class"; //$NON-NLS-1$

 		}

 	}

 }

diff --git a/bundles/org.eclipse.emf.ecp.core/src/org/eclipse/emf/ecp/internal/core/util/Properties.java b/bundles/org.eclipse.emf.ecp.core/src/org/eclipse/emf/ecp/internal/core/util/Properties.java
index baecc76..f66cb7c 100644
--- a/bundles/org.eclipse.emf.ecp.core/src/org/eclipse/emf/ecp/internal/core/util/Properties.java
+++ b/bundles/org.eclipse.emf.ecp.core/src/org/eclipse/emf/ecp/internal/core/util/Properties.java
@@ -171,7 +171,7 @@
 

 		@Override

 		public String toString() {

-			return key + " --> " + value;

+			return key + " --> " + value; //$NON-NLS-1$

 		}

 	}

 

diff --git a/bundles/org.eclipse.emf.ecp.core/src/org/eclipse/emf/ecp/internal/core/util/PropertiesStore.java b/bundles/org.eclipse.emf.ecp.core/src/org/eclipse/emf/ecp/internal/core/util/PropertiesStore.java
index bd55b3b..2b18582 100644
--- a/bundles/org.eclipse.emf.ecp.core/src/org/eclipse/emf/ecp/internal/core/util/PropertiesStore.java
+++ b/bundles/org.eclipse.emf.ecp.core/src/org/eclipse/emf/ecp/internal/core/util/PropertiesStore.java
@@ -63,12 +63,12 @@
 	protected void doActivate() throws Exception {

 		super.doActivate();

 		if (folder == null) {

-			throw new IllegalStateException("Folder is null");

+			throw new IllegalStateException("Folder is null"); //$NON-NLS-1$

 		}

 

 		if (folder.exists()) {

 			if (!folder.isDirectory()) {

-				throw new IllegalStateException("Not a folder: " + folder);

+				throw new IllegalStateException("Not a folder: " + folder); //$NON-NLS-1$

 			}

 		} else {

 			folder.mkdirs();

@@ -79,7 +79,7 @@
 

 	protected void load() {

 		// TODO Trace properly

-		System.out.println("Loading " + getClass().getSimpleName() + " from " + folder.getAbsolutePath());

+		System.out.println("Loading " + getClass().getSimpleName() + " from " + folder.getAbsolutePath()); //$NON-NLS-1$ //$NON-NLS-2$

 

 		final Set<ELEMENT> elements = new HashSet<ELEMENT>();

 		for (final File file : folder.listFiles()) {

@@ -155,7 +155,7 @@
 

 	public void storeElement(ELEMENT element) {

 		final File file = getFile(element);

-		final File temp = new File(file.getParentFile(), file.getName() + ".tmp");

+		final File temp = new File(file.getParentFile(), file.getName() + ".tmp"); //$NON-NLS-1$

 		if (temp.isFile()) {

 			temp.delete();

 		}

diff --git a/bundles/org.eclipse.emf.ecp.diagnostician/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.diagnostician/META-INF/MANIFEST.MF
index e2c3038..31ecb8f 100644
--- a/bundles/org.eclipse.emf.ecp.diagnostician/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.diagnostician/META-INF/MANIFEST.MF
@@ -2,12 +2,13 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: ECP Diagnostician
 Bundle-SymbolicName: org.eclipse.emf.ecp.validation.diagnostician;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Activator: org.eclipse.emf.ecp.internal.diagnostician.Activator
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emf.ecp.diagnostician;version="1.16.0";x-friends:="org.eclipse.emf.ecp.ui.validation.e4,org.eclipse.emf.ecp.ui.validation.test",
- org.eclipse.emf.ecp.internal.diagnostician;version="1.16.0";x-internal:=true
+Export-Package: org.eclipse.emf.ecp.diagnostician;version="1.17.0";x-friends:="org.eclipse.emf.ecp.ui.validation.e4,org.eclipse.emf.ecp.ui.validation.test",
+ org.eclipse.emf.ecp.internal.diagnostician;version="1.17.0";x-internal:=true
 Require-Bundle: org.eclipse.emf.ecore;bundle-version="[2.8.0,3.0.0)",
  org.eclipse.core.runtime;bundle-version="[3.4.0,4.0.0)"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.validation.diagnostician
diff --git a/bundles/org.eclipse.emf.ecp.diagnostician/pom.xml b/bundles/org.eclipse.emf.ecp.diagnostician/pom.xml
index 9342577..3fdd0e1 100644
--- a/bundles/org.eclipse.emf.ecp.diagnostician/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.diagnostician/pom.xml
@@ -5,11 +5,11 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emf.ecp.validation.diagnostician</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 </project>
diff --git a/bundles/org.eclipse.emf.ecp.diffmerge.context/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.diffmerge.context/META-INF/MANIFEST.MF
index ed15f4d..7717515 100644
--- a/bundles/org.eclipse.emf.ecp.diffmerge.context/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.diffmerge.context/META-INF/MANIFEST.MF
@@ -2,19 +2,20 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Diff Merge Context
 Bundle-SymbolicName: org.eclipse.emf.ecp.diffmerge.context
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Activator: org.eclipse.emf.ecp.diffmerge.internal.context.Activator
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emf.ecp.diffmerge.internal.context;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.diffmerge.spi.context;version="1.16.0"
-Require-Bundle: org.eclipse.emf.ecp.view.context;bundle-version="[1.16.0,1.17.0)";visibility:=reexport,
-  org.eclipse.emf.ecore;bundle-version="[2.7.0,3.0.0)",
-  org.eclipse.emf.ecp.view.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.diffmerge.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.edit;bundle-version="[2.8.0,3.0.0)",
-  org.eclipse.core.runtime;bundle-version="[3.8.0,4.0.0)",
-  org.eclipse.core.databinding.observable;bundle-version="[1.4.0,2.0.0)"
+Export-Package: org.eclipse.emf.ecp.diffmerge.internal.context;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.diffmerge.spi.context;version="1.17.0"
+Require-Bundle: org.eclipse.emf.ecp.view.context;bundle-version="[1.17.0,1.18.0]";visibility:=reexport,
+ org.eclipse.emf.ecore;bundle-version="[2.7.0,3.0.0)",
+ org.eclipse.emf.ecp.view.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.diffmerge.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.edit;bundle-version="[2.8.0,3.0.0)",
+ org.eclipse.core.runtime;bundle-version="[3.8.0,4.0.0)",
+ org.eclipse.core.databinding.observable;bundle-version="[1.4.0,2.0.0)"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
-Import-Package: org.eclipse.emfforms.spi.common.report;version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.spi.core.services.databinding;version="[1.16.0,1.17.0)"
+Import-Package: org.eclipse.emfforms.spi.common.report;version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.spi.core.services.databinding;version="[1.17.0,1.18.0]"
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.diffmerge.context
diff --git a/bundles/org.eclipse.emf.ecp.diffmerge.context/pom.xml b/bundles/org.eclipse.emf.ecp.diffmerge.context/pom.xml
index d4b7679..565c129 100644
--- a/bundles/org.eclipse.emf.ecp.diffmerge.context/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.diffmerge.context/pom.xml
@@ -5,11 +5,11 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emf.ecp.diffmerge.context</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 </project>
diff --git a/bundles/org.eclipse.emf.ecp.diffmerge.context/src/org/eclipse/emf/ecp/diffmerge/internal/context/CompareControls.java b/bundles/org.eclipse.emf.ecp.diffmerge.context/src/org/eclipse/emf/ecp/diffmerge/internal/context/CompareControls.java
index 98dce6e..7af4af5 100644
--- a/bundles/org.eclipse.emf.ecp.diffmerge.context/src/org/eclipse/emf/ecp/diffmerge/internal/context/CompareControls.java
+++ b/bundles/org.eclipse.emf.ecp.diffmerge.context/src/org/eclipse/emf/ecp/diffmerge/internal/context/CompareControls.java
@@ -86,50 +86,56 @@
 		final Object leftValue = leftEObject.eGet(leftStructuralFeature, true);
 		final Object rightValue = rightEObject.eGet(rightStructuralFeature, true);
 
+		return areValuesEqual(leftValue, leftStructuralFeature, rightValue, rightStructuralFeature);
+	}
+
+	/**
+	 * Compares two {@link EStructuralFeature EStructuralFeatures} and their values.
+	 * If both are null, they are equal. For a single reference, the referenced EObjects are compare (equals). For a
+	 * "many" references, a list entries are compared.
+	 *
+	 * @param leftValue the value of the left {@link EStructuralFeature}
+	 * @param leftStructuralFeature the left EStructuralFeature
+	 * @param rightValue the value of the right EStructuralFeature
+	 * @param rightStructuralFeature the right EStructuralFeature
+	 * @return whether the values are equal
+	 */
+	@SuppressWarnings("unchecked")
+	public static boolean areValuesEqual(final Object leftValue, final EStructuralFeature leftStructuralFeature,
+		final Object rightValue,
+		final EStructuralFeature rightStructuralFeature) {
 		if (leftValue == null && rightValue == null) {
 			return true;
 		}
-		if (leftValue == null && rightValue != null) {
-			return false;
-		}
-		if (leftValue != null && rightValue == null) {
+		if (leftValue == null || rightValue == null) {
 			return false;
 		}
 		if (leftValue.equals(rightValue)) {
 			return true;
 		}
 
-		// TODO handle EReference (single and many)
-		if (EcorePackage.eINSTANCE.getEReference().isInstance(leftStructuralFeature) && !leftStructuralFeature.isMany()
-			|| EcorePackage.eINSTANCE.getEReference().isInstance(rightStructuralFeature)
-				&& !rightStructuralFeature.isMany()) {
+		if (isSingleReferences(leftStructuralFeature)
+			&& isSingleReferences(rightStructuralFeature)) {
 			return EcoreUtil.equals(EObject.class.cast(leftValue), EObject.class.cast(rightValue));
 		}
-		if (leftStructuralFeature.isMany() && rightStructuralFeature.isMany()) {
-			return handleLists(leftStructuralFeature, rightStructuralFeature, leftValue, rightValue);
+		if (isMultiReference(leftStructuralFeature) && isMultiReference(rightStructuralFeature)) {
+			return EcoreUtil.equals((List<EObject>) leftValue, (List<EObject>) rightValue);
 		}
 		return false;
 	}
 
-	@SuppressWarnings("unchecked")
-	private static boolean handleLists(final EStructuralFeature leftStructuralFeature,
-		final EStructuralFeature rightStructuralFeature, final Object leftValue, final Object rightValue) {
-
-		if (EcorePackage.eINSTANCE.getEReference().isInstance(leftStructuralFeature)
-			&& EcorePackage.eINSTANCE.getEReference().isInstance(rightStructuralFeature)) {
-			return EcoreUtil.equals((List<EObject>) leftValue, (List<EObject>) rightValue);
-		}
-		final List<?> leftList = (List<?>) leftValue;
-		final List<?> rightList = (List<?>) rightValue;
-		if (leftList.size() != rightList.size()) {
-			return false;
-		}
-		for (int i = 0; i < leftList.size(); i++) {
-			if (leftList.get(i) != rightList.get(i)) {
-				return false;
-			}
-		}
-		return true;
-
+	/**
+	 * @param leftStructuralFeature
+	 * @return
+	 */
+	private static boolean isMultiReference(EStructuralFeature leftStructuralFeature) {
+		return EcorePackage.eINSTANCE.getEReference().isInstance(leftStructuralFeature)
+			&& leftStructuralFeature.isMany();
 	}
+
+	private static boolean isSingleReferences(final EStructuralFeature leftStructuralFeature) {
+		return EcorePackage.eINSTANCE.getEReference().isInstance(leftStructuralFeature)
+			&& !leftStructuralFeature.isMany();
+	}
+
 }
diff --git a/bundles/org.eclipse.emf.ecp.diffmerge.context/src/org/eclipse/emf/ecp/diffmerge/internal/context/DiffMergeModelContextImpl.java b/bundles/org.eclipse.emf.ecp.diffmerge.context/src/org/eclipse/emf/ecp/diffmerge/internal/context/DiffMergeModelContextImpl.java
index 5616d12..3cda034 100644
--- a/bundles/org.eclipse.emf.ecp.diffmerge.context/src/org/eclipse/emf/ecp/diffmerge/internal/context/DiffMergeModelContextImpl.java
+++ b/bundles/org.eclipse.emf.ecp.diffmerge.context/src/org/eclipse/emf/ecp/diffmerge/internal/context/DiffMergeModelContextImpl.java
@@ -30,6 +30,7 @@
 import org.eclipse.emf.ecp.diffmerge.spi.context.DiffMergeModelContext;
 import org.eclipse.emf.ecp.spi.diffmerge.model.VDiffAttachment;
 import org.eclipse.emf.ecp.spi.diffmerge.model.VDiffmergeFactory;
+import org.eclipse.emf.ecp.view.internal.context.ArrayOnceViewModelServiceProvider;
 import org.eclipse.emf.ecp.view.internal.context.ViewModelContextImpl;
 import org.eclipse.emf.ecp.view.spi.context.ViewModelService;
 import org.eclipse.emf.ecp.view.spi.model.VAttachment;
@@ -102,7 +103,7 @@
 	 */
 	public DiffMergeModelContextImpl(VElement view, EObject domainObject,
 		EObject origin1, EObject origin2, ViewModelService... modelServices) {
-		super(view, domainObject, modelServices);
+		super(view, domainObject, new ArrayOnceViewModelServiceProvider(modelServices));
 		left = origin1;
 		right = origin2;
 
diff --git a/bundles/org.eclipse.emf.ecp.diffmerge.model.edit/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.diffmerge.model.edit/META-INF/MANIFEST.MF
index c452f22..e0b2257 100644
--- a/bundles/org.eclipse.emf.ecp.diffmerge.model.edit/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.diffmerge.model.edit/META-INF/MANIFEST.MF
@@ -2,18 +2,19 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.emf.ecp.diffmerge.model.edit;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-ClassPath: .
 Bundle-Activator: org.eclipse.emf.ecp.spi.diffmerge.model.provider.DiffmergeEditPlugin$Implementation
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
-Export-Package: org.eclipse.emf.ecp.spi.diffmerge.model.provider;version="1.16.0"
+Export-Package: org.eclipse.emf.ecp.spi.diffmerge.model.provider;version="1.17.0"
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.7.0,4.0.0)",
-  org.eclipse.emf.ecp.diffmerge.model;bundle-version="[1.16.0,1.17.0)";visibility:=reexport,
-  org.eclipse.emf.edit;bundle-version="[2.8.0,3.0.0)";visibility:=reexport,
-  org.eclipse.emf.ecore;bundle-version="[2.7.0,3.0.0)";visibility:=reexport,
-  org.eclipse.emf.ecore.edit;bundle-version="[2.7.0,3.0.0)";visibility:=reexport,
-  org.eclipse.emf.ecp.view.model;bundle-version="[1.16.0,1.17.0)";visibility:=reexport,
-  org.eclipse.emf.ecp.view.model.edit;bundle-version="[1.16.0,1.17.0)";visibility:=reexport
+ org.eclipse.emf.ecp.diffmerge.model;bundle-version="[1.17.0,1.18.0]";visibility:=reexport,
+ org.eclipse.emf.edit;bundle-version="[2.8.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.ecore;bundle-version="[2.7.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.ecore.edit;bundle-version="[2.7.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.ecp.view.model;bundle-version="[1.17.0,1.18.0]";visibility:=reexport,
+ org.eclipse.emf.ecp.view.model.edit;bundle-version="[1.17.0,1.18.0]";visibility:=reexport
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.diffmerge.model.edit
diff --git a/bundles/org.eclipse.emf.ecp.diffmerge.model.edit/plugin.xml b/bundles/org.eclipse.emf.ecp.diffmerge.model.edit/plugin.xml
index 62abe0c..869662a 100644
--- a/bundles/org.eclipse.emf.ecp.diffmerge.model.edit/plugin.xml
+++ b/bundles/org.eclipse.emf.ecp.diffmerge.model.edit/plugin.xml
@@ -31,7 +31,7 @@
    <extension point="org.eclipse.emf.edit.childCreationExtenders">
       <!-- @generated diffmerge -->
       <extender
-            uri="http://org/eclipse/emf/ecp/view/model/170"
+            uri="http://org/eclipse/emf/ecp/view/model/1170"
             class="org.eclipse.emf.ecp.spi.diffmerge.model.provider.DiffmergeItemProviderAdapterFactory$ViewChildCreationExtender"/>
    </extension>
 
diff --git a/bundles/org.eclipse.emf.ecp.diffmerge.model.edit/pom.xml b/bundles/org.eclipse.emf.ecp.diffmerge.model.edit/pom.xml
index c5c7467..225fc86 100644
--- a/bundles/org.eclipse.emf.ecp.diffmerge.model.edit/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.diffmerge.model.edit/pom.xml
@@ -5,11 +5,11 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emf.ecp.diffmerge.model.edit</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 </project>
diff --git a/bundles/org.eclipse.emf.ecp.diffmerge.model/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.diffmerge.model/META-INF/MANIFEST.MF
index a3a292a..e17073a 100644
--- a/bundles/org.eclipse.emf.ecp.diffmerge.model/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.diffmerge.model/META-INF/MANIFEST.MF
@@ -2,15 +2,16 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.emf.ecp.diffmerge.model;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-ClassPath: .
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
-Export-Package: org.eclipse.emf.ecp.spi.diffmerge.model;version="1.16.0",
-  org.eclipse.emf.ecp.spi.diffmerge.model.impl;version="1.16.0",
-  org.eclipse.emf.ecp.spi.diffmerge.model.util;version="1.16.0"
+Export-Package: org.eclipse.emf.ecp.spi.diffmerge.model;version="1.17.0",
+ org.eclipse.emf.ecp.spi.diffmerge.model.impl;version="1.17.0",
+ org.eclipse.emf.ecp.spi.diffmerge.model.util;version="1.17.0"
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.7.0,4.0.0)",
-  org.eclipse.emf.ecore;bundle-version="[2.7.0,3.0.0)",
-  org.eclipse.emf.ecp.view.model;bundle-version="[1.16.0,1.17.0)"
+ org.eclipse.emf.ecore;bundle-version="[2.7.0,3.0.0)",
+ org.eclipse.emf.ecp.view.model;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.diffmerge.model
diff --git a/bundles/org.eclipse.emf.ecp.diffmerge.model/pom.xml b/bundles/org.eclipse.emf.ecp.diffmerge.model/pom.xml
index ff0000d..5404656 100644
--- a/bundles/org.eclipse.emf.ecp.diffmerge.model/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.diffmerge.model/pom.xml
@@ -5,11 +5,11 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emf.ecp.diffmerge.model</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 </project>
diff --git a/bundles/org.eclipse.emf.ecp.diffmerge.renderer.swt/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.diffmerge.renderer.swt/META-INF/MANIFEST.MF
index 71b0f6d..965ac6a 100644
--- a/bundles/org.eclipse.emf.ecp.diffmerge.renderer.swt/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.diffmerge.renderer.swt/META-INF/MANIFEST.MF
@@ -2,32 +2,33 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: DiffMerge Renderer
 Bundle-SymbolicName: org.eclipse.emf.ecp.diffmerge.renderer.swt;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Activator: org.eclipse.emf.ecp.diffmerge.internal.renderer.swt.Activator
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emf.ecp.diffmerge.internal.renderer.swt;version="1.16.0";x-internal:=true
+Export-Package: org.eclipse.emf.ecp.diffmerge.internal.renderer.swt;version="1.17.0";x-internal:=true
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.7.0,4.0.0)",
-  org.eclipse.emf.ecp.view.core.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.ui.view.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.edit;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.edit.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.diffmerge.context;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.diffmerge.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.table.ui.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.table.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.diffmerge.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.util.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.edit;bundle-version="[2.8.0,3.0.0)",
-  org.eclipse.core.databinding.property;bundle-version="[1.4.0,2.0.0)",
-  org.eclipse.emfforms.core.services;bundle-version="[1.16.0,1.17.0)"
+ org.eclipse.emf.ecp.view.core.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.ui.view.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.edit;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.edit.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.diffmerge.context;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.diffmerge.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.table.ui.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.table.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.diffmerge.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.util.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.edit;bundle-version="[2.8.0,3.0.0)",
+ org.eclipse.core.databinding.property;bundle-version="[1.4.0,2.0.0)",
+ org.eclipse.emfforms.core.services;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
-Import-Package: org.eclipse.emfforms.spi.common.report;version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.spi.swt.core;version="[1.16.0,1.17.0)",
-  org.eclipse.jface.layout;version="0.0.0",
-  org.eclipse.jface.resource;version="0.0.0",
-  org.eclipse.swt;version="0.0.0",
-  org.eclipse.swt.events;version="0.0.0",
-  org.eclipse.swt.graphics;version="0.0.0",
-  org.eclipse.swt.layout;version="0.0.0",
-  org.eclipse.swt.widgets;version="0.0.0"
+Import-Package: org.eclipse.emfforms.spi.common.report;version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.spi.swt.core;version="[1.17.0,1.18.0]",
+ org.eclipse.jface.layout;version="0.0.0",
+ org.eclipse.jface.resource;version="0.0.0",
+ org.eclipse.swt;version="0.0.0",
+ org.eclipse.swt.events;version="0.0.0",
+ org.eclipse.swt.graphics;version="0.0.0",
+ org.eclipse.swt.layout;version="0.0.0",
+ org.eclipse.swt.widgets;version="0.0.0"
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.diffmerge.renderer.swt
diff --git a/bundles/org.eclipse.emf.ecp.diffmerge.renderer.swt/pom.xml b/bundles/org.eclipse.emf.ecp.diffmerge.renderer.swt/pom.xml
index 519554f..27883b1 100644
--- a/bundles/org.eclipse.emf.ecp.diffmerge.renderer.swt/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.diffmerge.renderer.swt/pom.xml
@@ -5,11 +5,11 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emf.ecp.diffmerge.renderer.swt</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 </project>
diff --git a/bundles/org.eclipse.emf.ecp.diffmerge.swt/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.diffmerge.swt/META-INF/MANIFEST.MF
index ba0f612..1564f01 100644
--- a/bundles/org.eclipse.emf.ecp.diffmerge.swt/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.diffmerge.swt/META-INF/MANIFEST.MF
@@ -2,23 +2,23 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: DiffMerge UI SWT
 Bundle-SymbolicName: org.eclipse.emf.ecp.diffmerge.swt
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Activator: org.eclipse.emf.ecp.diffmerge.swt.Activator
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emf.ecp.diffmerge.swt;version="1.16.0";x-friends:="org.eclipse.emf.ecp.diffmerge.renderer.swt"
+Export-Package: org.eclipse.emf.ecp.diffmerge.swt;version="1.17.0";x-friends:="org.eclipse.emf.ecp.diffmerge.renderer.swt"
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.7.0,4.0.0)",
   org.eclipse.emf.ecore;bundle-version="[2.7.0,3.0.0)",
-  org.eclipse.emf.ecp.view.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.edit;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.edit.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.context;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.diffmerge.context;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.ui.view;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.ui.view.swt;bundle-version="[1.16.0,1.17.0)",
+  org.eclipse.emf.ecp.view.model;bundle-version="[1.17.0,1.18.0)",
+  org.eclipse.emf.ecp.edit;bundle-version="[1.17.0,1.18.0)",
+  org.eclipse.emf.ecp.edit.swt;bundle-version="[1.17.0,1.18.0)",
+  org.eclipse.emf.ecp.view.context;bundle-version="[1.17.0,1.18.0)",
+  org.eclipse.emf.ecp.diffmerge.context;bundle-version="[1.17.0,1.18.0)",
+  org.eclipse.emf.ecp.ui.view;bundle-version="[1.17.0,1.18.0)",
+  org.eclipse.emf.ecp.ui.view.swt;bundle-version="[1.17.0,1.18.0)",
   org.eclipse.emf.edit;bundle-version="[2.8.0,3.0.0)",
-  org.eclipse.emf.ecp.view.util.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.localization;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services;bundle-version="[1.16.0,1.17.0)"
+  org.eclipse.emf.ecp.view.util.swt;bundle-version="[1.17.0,1.18.0)",
+  org.eclipse.emfforms.localization;bundle-version="[1.17.0,1.18.0)",
+  org.eclipse.emfforms.core.services;bundle-version="[1.17.0,1.18.0)"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Import-Package: org.eclipse.jface.layout;version="0.0.0",
   org.eclipse.jface.resource;version="0.0.0",
@@ -31,3 +31,4 @@
   org.eclipse.swt.widgets;version="0.0.0",
   org.osgi.framework;version="1.3.0"
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.diffmerge.swt
diff --git a/bundles/org.eclipse.emf.ecp.diffmerge.swt/pom.xml b/bundles/org.eclipse.emf.ecp.diffmerge.swt/pom.xml
index 920484a..92be68b 100644
--- a/bundles/org.eclipse.emf.ecp.diffmerge.swt/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.diffmerge.swt/pom.xml
@@ -5,11 +5,11 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emf.ecp.diffmerge.swt</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 </project>
diff --git a/bundles/org.eclipse.emf.ecp.doc/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.doc/META-INF/MANIFEST.MF
index f49a6a2..543f883 100644
--- a/bundles/org.eclipse.emf.ecp.doc/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.doc/META-INF/MANIFEST.MF
@@ -2,6 +2,6 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Doc
 Bundle-SymbolicName: org.eclipse.emf.ecp.doc;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
 Require-Bundle: org.eclipse.ui.intro;bundle-version="[3.4.0,4.0.0)"
diff --git a/bundles/org.eclipse.emf.ecp.doc/pom.xml b/bundles/org.eclipse.emf.ecp.doc/pom.xml
index a417a07..beac2e6 100644
--- a/bundles/org.eclipse.emf.ecp.doc/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.doc/pom.xml
@@ -5,11 +5,11 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emf.ecp.doc</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 </project>
diff --git a/bundles/org.eclipse.emf.ecp.ecore.editor.ui/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.ecore.editor.ui/META-INF/MANIFEST.MF
index b888946..a356888 100644
--- a/bundles/org.eclipse.emf.ecp.ecore.editor.ui/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.ecore.editor.ui/META-INF/MANIFEST.MF
@@ -2,21 +2,22 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: ECore GenModel Test
 Bundle-SymbolicName: org.eclipse.emf.ecp.ecore.editor.ui;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
 Export-Package: org.eclipse.emf.ecp.ecore.editor.ui;version="1.2.0";x-internal:=true,
   org.eclipse.emf.ecp.ecore.editor.ui.operations;version="1.2.0";x-internal:=true
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.7.0,4.0.0)",
-  org.eclipse.core.resources;bundle-version="[3.4.0,4.0.0)",
-  org.eclipse.emf.converter;bundle-version="[2.6.0,3.0.0)",
-  org.eclipse.emf.codegen.ecore.ui;bundle-version="[2.9.0,3.0.0)",
-  org.eclipse.emf.importer;bundle-version="[2.8.0,3.0.0)",
-  org.eclipse.emf.edit.ui;bundle-version="[2.9.0,3.0.0)",
-  org.eclipse.jface.text;bundle-version="[3.8.101,4.0.0)",
-  org.eclipse.emf.ecore;bundle-version="[2.8.0,3.0.0)",
-  org.eclipse.emf.ecp.ecore.editor;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.swt;bundle-version="[3.102.1,4.0.0)"
+ org.eclipse.core.resources;bundle-version="[3.4.0,4.0.0)",
+ org.eclipse.emf.converter;bundle-version="[2.6.0,3.0.0)",
+ org.eclipse.emf.codegen.ecore.ui;bundle-version="[2.9.0,3.0.0)",
+ org.eclipse.emf.importer;bundle-version="[2.8.0,3.0.0)",
+ org.eclipse.emf.edit.ui;bundle-version="[2.9.0,3.0.0)",
+ org.eclipse.jface.text;bundle-version="[3.8.101,4.0.0)",
+ org.eclipse.emf.ecore;bundle-version="[2.8.0,3.0.0)",
+ org.eclipse.emf.ecp.ecore.editor;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.swt;bundle-version="[3.102.1,4.0.0)"
 Bundle-RequiredExecutionEnvironment: J2SE-1.5
 Import-Package: org.eclipse.emf.ecore.presentation;version="0.0.0",
   org.eclipse.emf.ecore.xmi;version="0.0.0"
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.ecore.editor.ui
diff --git a/bundles/org.eclipse.emf.ecp.ecore.editor.ui/pom.xml b/bundles/org.eclipse.emf.ecp.ecore.editor.ui/pom.xml
index 62f42e3..cedca12 100644
--- a/bundles/org.eclipse.emf.ecp.ecore.editor.ui/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.ecore.editor.ui/pom.xml
@@ -5,11 +5,11 @@
   <parent>

     <groupId>org.eclipse.emf.ecp</groupId>

     <artifactId>ecp-bundles-parent</artifactId>

-    <version>1.16.0-SNAPSHOT</version>

+    <version>1.17.0-SNAPSHOT</version>

     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>

   </parent>

   <groupId>org.eclipse.emf.ecp</groupId>

   <artifactId>org.eclipse.emf.ecp.ecore.editor.ui</artifactId>

-  <version>1.16.0-SNAPSHOT</version>

+  <version>1.17.0-SNAPSHOT</version>

   <packaging>eclipse-plugin</packaging>

 </project>

diff --git a/bundles/org.eclipse.emf.ecp.ecore.editor/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.ecore.editor/META-INF/MANIFEST.MF
index 0405a61..602dc03 100644
--- a/bundles/org.eclipse.emf.ecp.ecore.editor/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.ecore.editor/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: ECP ECore Editor
 Bundle-SymbolicName: org.eclipse.emf.ecp.ecore.editor;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
 Export-Package: org.eclipse.emf.ecp.ecore.editor;version="1.2.0";x-friends:="org.eclipse.emf.ecp.ecore.editor.test,org.eclipse.emf.ecp.ecore.editor.ui",
  org.eclipse.emf.ecp.ecore.editor.factory;version="1.2.0";x-friends:="org.eclipse.emf.ecp.ecore.editor.test,org.eclipse.emf.ecp.ecore.editor.ui",
@@ -20,3 +20,4 @@
  org.eclipse.emf.importer.ecore;version="0.0.0",
  org.eclipse.jface.wizard;version="0.0.0"
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.ecore.editor
diff --git a/bundles/org.eclipse.emf.ecp.ecore.editor/pom.xml b/bundles/org.eclipse.emf.ecp.ecore.editor/pom.xml
index cbb6e83..e5d2ef0 100644
--- a/bundles/org.eclipse.emf.ecp.ecore.editor/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.ecore.editor/pom.xml
@@ -5,11 +5,11 @@
   <parent>

     <groupId>org.eclipse.emf.ecp</groupId>

     <artifactId>ecp-bundles-parent</artifactId>

-    <version>1.16.0-SNAPSHOT</version>

+    <version>1.17.0-SNAPSHOT</version>

     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>

   </parent>

   <groupId>org.eclipse.emf.ecp</groupId>

   <artifactId>org.eclipse.emf.ecp.ecore.editor</artifactId>

-  <version>1.16.0-SNAPSHOT</version>

+  <version>1.17.0-SNAPSHOT</version>

   <packaging>eclipse-plugin</packaging>

 </project>

diff --git a/bundles/org.eclipse.emf.ecp.edit.ecore.swt/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.edit.ecore.swt/META-INF/MANIFEST.MF
index 531b449..39eeda7 100644
--- a/bundles/org.eclipse.emf.ecp.edit.ecore.swt/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.edit.ecore.swt/META-INF/MANIFEST.MF
@@ -2,14 +2,15 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: ECP Editor controls for Ecore Elements (Deprecated)
 Bundle-SymbolicName: org.eclipse.emf.ecp.edit.ecore.swt;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emf.ecp.edit.ecore.swt.internal;version="1.16.0";x-internal:=true
+Export-Package: org.eclipse.emf.ecp.edit.ecore.swt.internal;version="1.17.0";x-internal:=true
 Require-Bundle: org.eclipse.ui;bundle-version="[3.0.0,4.0.0)",
-  org.eclipse.core.runtime;bundle-version="[3.4.0,4.0.0)",
-  org.eclipse.emf.ecp.edit.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.ui.view;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.ui;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.common.ui;bundle-version="[1.16.0,1.17.0)"
+ org.eclipse.core.runtime;bundle-version="[3.4.0,4.0.0)",
+ org.eclipse.emf.ecp.edit.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.ui.view;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.ui;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.common.ui;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.edit.ecore.swt
diff --git a/bundles/org.eclipse.emf.ecp.edit.ecore.swt/pom.xml b/bundles/org.eclipse.emf.ecp.edit.ecore.swt/pom.xml
index 80ddc8b..d3ec530 100644
--- a/bundles/org.eclipse.emf.ecp.edit.ecore.swt/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.edit.ecore.swt/pom.xml
@@ -5,11 +5,11 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emf.ecp.edit.ecore.swt</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 </project>
diff --git a/bundles/org.eclipse.emf.ecp.edit.ecore.swt/src/org/eclipse/emf/ecp/edit/ecore/swt/internal/AddEClassifierReferenceAction.java b/bundles/org.eclipse.emf.ecp.edit.ecore.swt/src/org/eclipse/emf/ecp/edit/ecore/swt/internal/AddEClassifierReferenceAction.java
index 18a485e..284984d 100644
--- a/bundles/org.eclipse.emf.ecp.edit.ecore.swt/src/org/eclipse/emf/ecp/edit/ecore/swt/internal/AddEClassifierReferenceAction.java
+++ b/bundles/org.eclipse.emf.ecp.edit.ecore.swt/src/org/eclipse/emf/ecp/edit/ecore/swt/internal/AddEClassifierReferenceAction.java
@@ -70,7 +70,8 @@
 		if (selectedClassifier == null) {
 			return;
 		}
-		referenceService.addNewModelElements(selectedClassifier, (EReference) getSetting().getEStructuralFeature());
+		referenceService.addNewModelElements(selectedClassifier, (EReference) getSetting().getEStructuralFeature(),
+			true);
 	}
 
 	private EClassifier getExistingEClassifiers() {
diff --git a/bundles/org.eclipse.emf.ecp.edit.swt/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.edit.swt/META-INF/MANIFEST.MF
index e4cf119..71b2eb7 100644
--- a/bundles/org.eclipse.emf.ecp.edit.swt/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.edit.swt/META-INF/MANIFEST.MF
@@ -2,64 +2,68 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %Bundle-Name
 Bundle-SymbolicName: org.eclipse.emf.ecp.edit.swt;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Activator: org.eclipse.emf.ecp.edit.internal.swt.Activator
 Bundle-Vendor: %Bundle-Vendor
-Export-Package: org.eclipse.emf.ecp.edit.internal.swt;version="1.16.0";x-friends:="org.eclipse.emf.ecp.ui.view.editor.controls,org.eclipse.emf.ecp.view.treemasterdetail.ui.swt,org.eclipse.emf.ecp.view.core.swt",
-  org.eclipse.emf.ecp.edit.internal.swt.actions;version="1.16.0";x-friends:="org.eclipse.emf.ecp.ui.view.editor.controls,org.eclipse.emf.ecp.edit.ecore.swt",
-  org.eclipse.emf.ecp.edit.internal.swt.controls;version="1.16.0";
-   x-friends:="org.eclipse.emf.ecp.ui.view.swt,
-    org.eclipse.emf.ecp.ui.view.editor.controls,
-    org.eclipse.emf.ecp.view.table.ui.swt,
-    org.eclipse.emf.ecp.view.core.swt",
-  org.eclipse.emf.ecp.edit.internal.swt.reference;version="1.16.0";x-friends:="org.eclipse.emf.ecp.edit.ecore.swt,org.eclipse.emf.ecp.ui.view.editor.controls",
-  org.eclipse.emf.ecp.edit.internal.swt.table;version="1.16.0";x-friends:="org.eclipse.emf.ecp.view.table.ui.swt,org.eclipse.emfforms.swt.control.multiattribute",
-  org.eclipse.emf.ecp.edit.internal.swt.util;version="1.16.0";
-   x-friends:="org.eclipse.emf.ecp.editor,
-    org.eclipse.emf.ecp.explorereditorbridge,
-    org.eclipse.emf.ecp.ui.view.swt,
-    org.eclipse.emf.ecp.ui.view.editor.controls,
-    org.eclipse.emf.ecp.view.groupedgrid.ui.swt,
-    org.eclipse.emf.ecp.edit.ecore.swt,
-    org.eclipse.emf.ecp.view.table.ui.swt,
-    org.eclipse.emf.ecp.view.categorization.swt,
-    org.eclipse.emf.ecp.view.treemasterdetail.ui.swt,
-    org.eclipse.emf.ecp.view.core.swt,
-    org.eclipse.emfforms.swt.control.multiattribute",
-  org.eclipse.emf.ecp.edit.spi.swt.actions;version="1.16.0",
-  org.eclipse.emf.ecp.edit.spi.swt.commands;version="1.16.0",
-  org.eclipse.emf.ecp.edit.spi.swt.reference;version="1.16.0",
-  org.eclipse.emf.ecp.edit.spi.swt.table;version="1.16.0",
-  org.eclipse.emf.ecp.edit.spi.swt.util;version="1.16.0"
+Export-Package: org.eclipse.emf.ecp.edit.internal.swt;version="1.17.0";
+  x-friends:="org.eclipse.emf.ecp.ui.view.editor.controls,
+   org.eclipse.emf.ecp.view.treemasterdetail.ui.swt,
+   org.eclipse.emf.ecp.view.core.swt",
+ org.eclipse.emf.ecp.edit.internal.swt.actions;version="1.17.0";x-friends:="org.eclipse.emf.ecp.ui.view.editor.controls,org.eclipse.emf.ecp.edit.ecore.swt",
+ org.eclipse.emf.ecp.edit.internal.swt.controls;version="1.17.0";
+  x-friends:="org.eclipse.emf.ecp.ui.view.swt,
+   org.eclipse.emf.ecp.ui.view.editor.controls,
+   org.eclipse.emf.ecp.view.table.ui.swt,
+   org.eclipse.emf.ecp.view.core.swt",
+ org.eclipse.emf.ecp.edit.internal.swt.reference;version="1.17.0";x-friends:="org.eclipse.emf.ecp.edit.ecore.swt,org.eclipse.emf.ecp.ui.view.editor.controls",
+ org.eclipse.emf.ecp.edit.internal.swt.table;version="1.17.0";x-friends:="org.eclipse.emf.ecp.view.table.ui.swt,org.eclipse.emfforms.swt.control.multiattribute",
+ org.eclipse.emf.ecp.edit.internal.swt.util;version="1.17.0";
+  x-friends:="org.eclipse.emf.ecp.editor,
+   org.eclipse.emf.ecp.explorereditorbridge,
+   org.eclipse.emf.ecp.ui.view.swt,
+   org.eclipse.emf.ecp.ui.view.editor.controls,
+   org.eclipse.emf.ecp.view.groupedgrid.ui.swt,
+   org.eclipse.emf.ecp.edit.ecore.swt,
+   org.eclipse.emf.ecp.view.table.ui.swt,
+   org.eclipse.emf.ecp.view.categorization.swt,
+   org.eclipse.emf.ecp.view.treemasterdetail.ui.swt,
+   org.eclipse.emf.ecp.view.core.swt,
+   org.eclipse.emfforms.swt.control.multiattribute",
+ org.eclipse.emf.ecp.edit.spi.swt.actions;version="1.17.0",
+ org.eclipse.emf.ecp.edit.spi.swt.commands;version="1.17.0",
+ org.eclipse.emf.ecp.edit.spi.swt.reference;version="1.17.0",
+ org.eclipse.emf.ecp.edit.spi.swt.table;version="1.17.0",
+ org.eclipse.emf.ecp.edit.spi.swt.util;version="1.17.0"
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.7.0,4.0.0)",
-  org.eclipse.emf.ecp.edit;bundle-version="[1.16.0,1.17.0)";visibility:=reexport,
-  org.eclipse.emf.ecore;bundle-version="[2.7.0,3.0.0)",
-  org.eclipse.emf.edit;bundle-version="[2.8.0,3.0.0)",
-  org.eclipse.core.databinding.property;bundle-version="[1.4.0,2.0.0)",
-  org.eclipse.emf.ecp.ui.view;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.template.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.databinding.edit;bundle-version="[1.3.0,2.0.0)",
-  org.eclipse.emfforms.localization;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services.editsupport;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services;bundle-version="[1.16.0,1.17.0)"
+ org.eclipse.emf.ecp.edit;bundle-version="[1.17.0,1.18.0]";visibility:=reexport,
+ org.eclipse.emf.ecore;bundle-version="[2.7.0,3.0.0)",
+ org.eclipse.emf.edit;bundle-version="[2.8.0,3.0.0)",
+ org.eclipse.core.databinding.property;bundle-version="[1.4.0,2.0.0)",
+ org.eclipse.emf.ecp.ui.view;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.template.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.databinding.edit;bundle-version="[1.3.0,2.0.0)",
+ org.eclipse.emfforms.localization;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services.editsupport;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Import-Package: org.eclipse.core.commands;version="0.0.0",
-  org.eclipse.emfforms.spi.common.report;version="[1.16.0,1.17.0)",
-  org.eclipse.jface.action;version="0.0.0",
-  org.eclipse.jface.databinding.fieldassist;version="0.0.0",
-  org.eclipse.jface.databinding.swt;version="0.0.0",
-  org.eclipse.jface.databinding.viewers;version="0.0.0",
-  org.eclipse.jface.dialogs;version="0.0.0",
-  org.eclipse.jface.fieldassist;version="0.0.0",
-  org.eclipse.jface.layout;version="0.0.0",
-  org.eclipse.jface.operation;version="0.0.0",
-  org.eclipse.jface.resource;version="0.0.0",
-  org.eclipse.jface.viewers;version="0.0.0",
-  org.eclipse.jface.window;version="0.0.0",
-  org.eclipse.swt;version="0.0.0",
-  org.eclipse.swt.custom;version="0.0.0",
-  org.eclipse.swt.events;version="0.0.0",
-  org.eclipse.swt.graphics;version="0.0.0",
-  org.eclipse.swt.layout;version="0.0.0",
-  org.eclipse.swt.widgets;version="0.0.0"
+ org.eclipse.emfforms.spi.common.report;version="[1.17.0,1.18.0]",
+ org.eclipse.jface.action;version="0.0.0",
+ org.eclipse.jface.databinding.fieldassist;version="0.0.0",
+ org.eclipse.jface.databinding.swt;version="0.0.0",
+ org.eclipse.jface.databinding.viewers;version="0.0.0",
+ org.eclipse.jface.dialogs;version="0.0.0",
+ org.eclipse.jface.fieldassist;version="0.0.0",
+ org.eclipse.jface.layout;version="0.0.0",
+ org.eclipse.jface.operation;version="0.0.0",
+ org.eclipse.jface.resource;version="0.0.0",
+ org.eclipse.jface.viewers;version="0.0.0",
+ org.eclipse.jface.window;version="0.0.0",
+ org.eclipse.swt;version="0.0.0",
+ org.eclipse.swt.custom;version="0.0.0",
+ org.eclipse.swt.events;version="0.0.0",
+ org.eclipse.swt.graphics;version="0.0.0",
+ org.eclipse.swt.layout;version="0.0.0",
+ org.eclipse.swt.widgets;version="0.0.0"
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.edit.swt
diff --git a/bundles/org.eclipse.emf.ecp.edit.swt/pom.xml b/bundles/org.eclipse.emf.ecp.edit.swt/pom.xml
index 2fb1b05..13cbe7c 100644
--- a/bundles/org.eclipse.emf.ecp.edit.swt/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.edit.swt/pom.xml
@@ -5,12 +5,12 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emf.ecp.edit.swt</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
   
   <properties>
diff --git a/bundles/org.eclipse.emf.ecp.edit.swt/src/org/eclipse/emf/ecp/edit/spi/swt/reference/NewReferenceAction.java b/bundles/org.eclipse.emf.ecp.edit.swt/src/org/eclipse/emf/ecp/edit/spi/swt/reference/NewReferenceAction.java
index f04336f..e5132cd 100644
--- a/bundles/org.eclipse.emf.ecp.edit.swt/src/org/eclipse/emf/ecp/edit/spi/swt/reference/NewReferenceAction.java
+++ b/bundles/org.eclipse.emf.ecp.edit.swt/src/org/eclipse/emf/ecp/edit/spi/swt/reference/NewReferenceAction.java
@@ -219,7 +219,7 @@
 		if (referenceService == null) {
 			return;
 		}
-		referenceService.addNewModelElements(eObject, eReference);
+		referenceService.addNewModelElements(eObject, eReference, true);
 	}
 
 	private MessageDialog getContainmentWarningDialog() {
diff --git a/bundles/org.eclipse.emf.ecp.edit.swt/src/org/eclipse/emf/ecp/edit/spi/swt/table/ECPEnumCellEditor.java b/bundles/org.eclipse.emf.ecp.edit.swt/src/org/eclipse/emf/ecp/edit/spi/swt/table/ECPEnumCellEditor.java
index 4e4ffd8..029a26b 100644
--- a/bundles/org.eclipse.emf.ecp.edit.swt/src/org/eclipse/emf/ecp/edit/spi/swt/table/ECPEnumCellEditor.java
+++ b/bundles/org.eclipse.emf.ecp.edit.swt/src/org/eclipse/emf/ecp/edit/spi/swt/table/ECPEnumCellEditor.java
@@ -68,7 +68,7 @@
 		for (final EEnumLiteral literal : eLiterals) {
 
 			final String isInputtable = EcoreUtil.getAnnotation(literal,
-				VViewPackage.eNS_URI,
+				VViewPackage.NS_URI_170,
 				"isInputtable"); //$NON-NLS-1$
 
 			if (isInputtable == null || Boolean.getBoolean(isInputtable)) {
diff --git a/bundles/org.eclipse.emf.ecp.edit.swt/src/org/eclipse/emf/ecp/edit/spi/swt/util/PreSetValidationStrategy.java b/bundles/org.eclipse.emf.ecp.edit.swt/src/org/eclipse/emf/ecp/edit/spi/swt/util/PreSetValidationStrategy.java
index afb42cf..7db3397 100644
--- a/bundles/org.eclipse.emf.ecp.edit.swt/src/org/eclipse/emf/ecp/edit/spi/swt/util/PreSetValidationStrategy.java
+++ b/bundles/org.eclipse.emf.ecp.edit.swt/src/org/eclipse/emf/ecp/edit/spi/swt/util/PreSetValidationStrategy.java
@@ -34,7 +34,7 @@
  *
  * @since 1.13
  */
-public class PreSetValidationStrategy extends UpdateValueStrategy {
+public class PreSetValidationStrategy extends EMFUpdateValueStrategy {
 
 	private final EStructuralFeature eStructuralFeature;
 	private final VElement vElement;
diff --git a/bundles/org.eclipse.emf.ecp.edit/.settings/.api_filters b/bundles/org.eclipse.emf.ecp.edit/.settings/.api_filters
index 45eed6e..d15530d 100644
--- a/bundles/org.eclipse.emf.ecp.edit/.settings/.api_filters
+++ b/bundles/org.eclipse.emf.ecp.edit/.settings/.api_filters
@@ -1,6 +1,12 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
 <component id="org.eclipse.emf.ecp.edit" version="2">
     <resource path="META-INF/MANIFEST.MF">
+        <filter comment="SPI Change for 1.17" id="923795461">
+            <message_arguments>
+                <message_argument value="1.17.0"/>
+                <message_argument value="1.16.0"/>
+            </message_arguments>
+        </filter>
         <filter comment="The changes were SPI" id="923795461">
             <message_arguments>
                 <message_argument value="1.2.0"/>
@@ -126,6 +132,12 @@
                 <message_argument value="addNewModelElements(EObject, EReference)"/>
             </message_arguments>
         </filter>
+        <filter comment="SPI Change for 1.17" id="403804204">
+            <message_arguments>
+                <message_argument value="org.eclipse.emf.ecp.edit.spi.ReferenceService"/>
+                <message_argument value="addNewModelElements(EObject, EReference, boolean)"/>
+            </message_arguments>
+        </filter>
         <filter comment="SPI break only" id="405901410">
             <message_arguments>
                 <message_argument value="org.eclipse.emf.ecp.edit.spi.ReferenceService"/>
diff --git a/bundles/org.eclipse.emf.ecp.edit/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.edit/META-INF/MANIFEST.MF
index 82df7cc..ca325c4 100644
--- a/bundles/org.eclipse.emf.ecp.edit/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.edit/META-INF/MANIFEST.MF
@@ -2,26 +2,27 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %Bundle-Name
 Bundle-SymbolicName: org.eclipse.emf.ecp.edit;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Activator: org.eclipse.emf.ecp.internal.edit.Activator
 Bundle-Vendor: %Bundle-Vendor
-Export-Package: org.eclipse.emf.ecp.edit.spi;version="1.16.0",
-  org.eclipse.emf.ecp.edit.spi.util;version="1.16.0",
-  org.eclipse.emf.ecp.internal.edit;version="1.16.0";x-internal:=true
+Export-Package: org.eclipse.emf.ecp.edit.spi;version="1.17.0",
+ org.eclipse.emf.ecp.edit.spi.util;version="1.17.0",
+ org.eclipse.emf.ecp.internal.edit;version="1.17.0";x-internal:=true
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.7.0,4.0.0)",
-  org.eclipse.emf.ecore;bundle-version="[2.6.0,3.0.0)",
-  org.eclipse.emf.edit;bundle-version="[2.8.0,3.0.0)",
-  org.eclipse.core.databinding;bundle-version="[1.3.0,2.0.0)";visibility:=reexport,
-  org.eclipse.emf.databinding.edit;bundle-version="[1.3.0,2.0.0)",
-  org.eclipse.emf.ecp.view.context;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.model;bundle-version="[1.16.0,1.17.0)";visibility:=reexport,
-  org.eclipse.emf.ecp.view.model.common;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.core.databinding.property;bundle-version="[1.4.0,2.0.0)",
-  org.eclipse.emfforms.localization;bundle-version="[1.16.0,1.17.0)"
+ org.eclipse.emf.ecore;bundle-version="[2.6.0,3.0.0)",
+ org.eclipse.emf.edit;bundle-version="[2.8.0,3.0.0)",
+ org.eclipse.core.databinding;bundle-version="[1.3.0,2.0.0)";visibility:=reexport,
+ org.eclipse.emf.databinding.edit;bundle-version="[1.3.0,2.0.0)",
+ org.eclipse.emf.ecp.view.context;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.model;bundle-version="[1.17.0,1.18.0]";visibility:=reexport,
+ org.eclipse.emf.ecp.view.model.common;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.core.databinding.property;bundle-version="[1.4.0,2.0.0)",
+ org.eclipse.emfforms.localization;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Service-Component: OSGI-INF/ecpControlFactory.xml,OSGI-INF/org.eclipse.emf.ecp.internal.edit.DeleteServiceFactoryImpl.xml
 Bundle-ActivationPolicy: lazy
-Import-Package: org.eclipse.emf.ecp.view.model.common.edit.provider;version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.spi.common.report;version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.spi.core.services.databinding;version="[1.16.0,1.17.0)",
-  org.osgi.service.component.annotations;version="1.2.0"
+Import-Package: org.eclipse.emf.ecp.view.model.common.edit.provider;version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.spi.common.report;version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.spi.core.services.databinding;version="[1.17.0,1.18.0]",
+ org.osgi.service.component.annotations;version="1.2.0"
+Automatic-Module-Name: org.eclipse.emf.ecp.edit
diff --git a/bundles/org.eclipse.emf.ecp.edit/pom.xml b/bundles/org.eclipse.emf.ecp.edit/pom.xml
index a9b9605..0aab42e 100644
--- a/bundles/org.eclipse.emf.ecp.edit/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.edit/pom.xml
@@ -5,11 +5,11 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emf.ecp.edit</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 </project>
diff --git a/bundles/org.eclipse.emf.ecp.edit/src/org/eclipse/emf/ecp/edit/spi/ReferenceService.java b/bundles/org.eclipse.emf.ecp.edit/src/org/eclipse/emf/ecp/edit/spi/ReferenceService.java
index d3db0a3..f858ca8 100644
--- a/bundles/org.eclipse.emf.ecp.edit/src/org/eclipse/emf/ecp/edit/spi/ReferenceService.java
+++ b/bundles/org.eclipse.emf.ecp.edit/src/org/eclipse/emf/ecp/edit/spi/ReferenceService.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2011-2013 EclipseSource Muenchen GmbH and others.
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH and others.
  *
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
@@ -8,12 +8,14 @@
  *
  * Contributors:
  * Eugen Neufeld - initial API and implementation
+ * Lucas Koehler - added new add new model elements api
  ******************************************************************************/
 package org.eclipse.emf.ecp.edit.spi;
 
 import org.eclipse.emf.ecore.EObject;
 import org.eclipse.emf.ecore.EReference;
 import org.eclipse.emf.ecp.view.spi.context.ViewModelService;
+import org.eclipse.emfforms.common.Optional;
 
 /**
  * @author Eugen Neufeld
@@ -29,10 +31,25 @@
 	 * @param eObject the {@link EObject} to add
 	 * @param eReference the {@link EReference} to add the {@link EObject} to
 	 * @since 1.5
+	 * @deprecated use {@link #addNewModelElements(EObject, EReference, boolean)} instead
 	 */
+	@Deprecated
 	void addNewModelElements(EObject eObject, EReference eReference);
 
 	/**
+	 * Adds new model elements to the {@link EReference}.
+	 * The implementation is responsible for providing a selection mechanism, e.g. a dialog.
+	 *
+	 * @param eObject the {@link EObject} to add
+	 * @param eReference the {@link EReference} to add the {@link EObject} to
+	 * @param openInNewContext Hints the reference service whether the created model element should be opened in a new
+	 *            context
+	 * @since 1.17
+	 * @return The created model element
+	 */
+	Optional<EObject> addNewModelElements(EObject eObject, EReference eReference, boolean openInNewContext);
+
+	/**
 	 * Adds existing model elements to the {@link EReference}.
 	 * The implementation is responsible for providing a selection meachsims, e.g. a dialog.
 	 *
diff --git a/bundles/org.eclipse.emf.ecp.editor.e3/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.editor.e3/META-INF/MANIFEST.MF
index a359b9d..1f8a407 100644
--- a/bundles/org.eclipse.emf.ecp.editor.e3/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.editor.e3/META-INF/MANIFEST.MF
@@ -2,40 +2,41 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: ECP Editor integration for 3.x Workbench
 Bundle-SymbolicName: org.eclipse.emf.ecp.editor.e3;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Activator: org.eclipse.emf.ecp.editor.internal.e3.Activator
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emf.ecp.editor.e3;version="1.16.0";x-friends:="org.eclipse.emf.ecp.explorereditorbridge",
-  org.eclipse.emf.ecp.editor.internal.e3;version="1.16.0";x-internal:=true
+Export-Package: org.eclipse.emf.ecp.editor.e3;version="1.17.0";x-friends:="org.eclipse.emf.ecp.explorereditorbridge",
+ org.eclipse.emf.ecp.editor.internal.e3;version="1.17.0";x-internal:=true
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.4.0,4.0.0)",
-  org.eclipse.emf.ecore;bundle-version="[2.5.0,3.0.0)",
-  org.eclipse.emf.ecp.ui;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.edit.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.ui.view;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.ui.view.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.context;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services;bundle-version="[1.16.0,1.17.0)"
+ org.eclipse.emf.ecore;bundle-version="[2.5.0,3.0.0)",
+ org.eclipse.emf.ecp.ui;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.edit.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.ui.view;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.ui.view.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.context;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Import-Package: org.eclipse.core.commands;version="0.0.0",
-  org.eclipse.emf.edit.ui.provider;version="0.0.0",
-  org.eclipse.emfforms.spi.common.report;version="[1.16.0,1.17.0)",
-  org.eclipse.jface.action;version="0.0.0",
-  org.eclipse.jface.dialogs;version="0.0.0",
-  org.eclipse.jface.resource;version="0.0.0",
-  org.eclipse.jface.viewers;version="0.0.0",
-  org.eclipse.jface.window;version="0.0.0",
-  org.eclipse.jface.wizard;version="0.0.0",
-  org.eclipse.swt;version="0.0.0",
-  org.eclipse.swt.custom;version="0.0.0",
-  org.eclipse.swt.graphics;version="0.0.0",
-  org.eclipse.swt.layout;version="0.0.0",
-  org.eclipse.swt.widgets;version="0.0.0",
-  org.eclipse.ui;ui.workbench=split;version="0.0.0",
-  org.eclipse.ui.forms;version="0.0.0",
-  org.eclipse.ui.forms.editor;version="0.0.0",
-  org.eclipse.ui.forms.widgets;version="0.0.0",
-  org.eclipse.ui.menus;version="0.0.0",
-  org.eclipse.ui.part;ui.workbench=split;version="0.0.0",
-  org.eclipse.ui.plugin;version="0.0.0",
-  org.eclipse.ui.services;version="0.0.0"
+ org.eclipse.emf.edit.ui.provider;version="0.0.0",
+ org.eclipse.emfforms.spi.common.report;version="[1.17.0,1.18.0]",
+ org.eclipse.jface.action;version="0.0.0",
+ org.eclipse.jface.dialogs;version="0.0.0",
+ org.eclipse.jface.resource;version="0.0.0",
+ org.eclipse.jface.viewers;version="0.0.0",
+ org.eclipse.jface.window;version="0.0.0",
+ org.eclipse.jface.wizard;version="0.0.0",
+ org.eclipse.swt;version="0.0.0",
+ org.eclipse.swt.custom;version="0.0.0",
+ org.eclipse.swt.graphics;version="0.0.0",
+ org.eclipse.swt.layout;version="0.0.0",
+ org.eclipse.swt.widgets;version="0.0.0",
+ org.eclipse.ui;version="0.0.0";ui.workbench=split,
+ org.eclipse.ui.forms;version="0.0.0",
+ org.eclipse.ui.forms.editor;version="0.0.0",
+ org.eclipse.ui.forms.widgets;version="0.0.0",
+ org.eclipse.ui.menus;version="0.0.0",
+ org.eclipse.ui.part;version="0.0.0";ui.workbench=split,
+ org.eclipse.ui.plugin;version="0.0.0",
+ org.eclipse.ui.services;version="0.0.0"
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.editor.e3
diff --git a/bundles/org.eclipse.emf.ecp.editor.e3/pom.xml b/bundles/org.eclipse.emf.ecp.editor.e3/pom.xml
index 9def3c0..a6b2947 100644
--- a/bundles/org.eclipse.emf.ecp.editor.e3/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.editor.e3/pom.xml
@@ -5,12 +5,12 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emf.ecp.editor.e3</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
   
   <properties>
diff --git a/bundles/org.eclipse.emf.ecp.emf2web.json/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.emf2web.json/META-INF/MANIFEST.MF
index 55076a4..1b88863 100644
--- a/bundles/org.eclipse.emf.ecp.emf2web.json/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.emf2web.json/META-INF/MANIFEST.MF
@@ -2,21 +2,22 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: EMF To Web JSON
 Bundle-SymbolicName: org.eclipse.emf.ecp.emf2web.json
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emf.ecp.emf2web.json.controller.xtend;version="1.16.0",
- org.eclipse.emf.ecp.emf2web.json.generator.seed.xtend;version="1.16.0",
- org.eclipse.emf.ecp.emf2web.json.generator.xtend;version="1.16.0",
- org.eclipse.emf.ecp.emf2web.json.util;version="1.16.0";x-internal:=true
+Export-Package: org.eclipse.emf.ecp.emf2web.json.controller.xtend;version="1.17.0",
+ org.eclipse.emf.ecp.emf2web.json.generator.seed.xtend;version="1.17.0",
+ org.eclipse.emf.ecp.emf2web.json.generator.xtend;version="1.17.0",
+ org.eclipse.emf.ecp.emf2web.json.util;version="1.17.0";x-internal:=true
 Require-Bundle: org.eclipse.xtext.xbase.lib;bundle-version="[2.8.0,3.0.0)",
  org.eclipse.xtend.lib;bundle-version="[2.8.0,3.0.0)",
  org.eclipse.xtend.lib.macro;bundle-version="[2.8.0,3.0.0)",
- org.eclipse.emf.ecp.emf2web;bundle-version="[1.16.0,1.17.0)",
- org.eclipse.emf.ecp.view.model;bundle-version="[1.16.0,1.17.0)",
+ org.eclipse.emf.ecp.emf2web;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.model;bundle-version="[1.17.0,1.18.0]",
  com.google.gson;bundle-version="[2.2.0,3.0.0)",
- org.eclipse.emf.ecp.view.categorization.model;bundle-version="[1.16.0,1.17.0)",
- org.eclipse.emf.ecp.view.label.model;bundle-version="[1.16.0,1.17.0)",
- org.eclipse.emf.ecp.view.table.model;bundle-version="[1.16.0,1.17.0)",
- org.eclipse.emf.ecp.view.custom.model;bundle-version="[1.16.0,1.17.0)"
+ org.eclipse.emf.ecp.view.categorization.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.label.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.table.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.custom.model;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.emf2web.json
diff --git a/bundles/org.eclipse.emf.ecp.emf2web.json/pom.xml b/bundles/org.eclipse.emf.ecp.emf2web.json/pom.xml
index 9f2d521..2db8ddc 100644
--- a/bundles/org.eclipse.emf.ecp.emf2web.json/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.emf2web.json/pom.xml
@@ -7,12 +7,12 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
 
   <artifactId>org.eclipse.emf.ecp.emf2web.json</artifactId>
   <packaging>eclipse-plugin</packaging>
   <groupId>org.eclipse.emf.ecp</groupId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
 </project>
diff --git a/bundles/org.eclipse.emf.ecp.emf2web.json/src/org/eclipse/emf/ecp/emf2web/json/controller/xtend/JsonGenerationController.xtend b/bundles/org.eclipse.emf.ecp.emf2web.json/src/org/eclipse/emf/ecp/emf2web/json/controller/xtend/JsonGenerationController.xtend
index f7e8411..4d12cc4 100644
--- a/bundles/org.eclipse.emf.ecp.emf2web.json/src/org/eclipse/emf/ecp/emf2web/json/controller/xtend/JsonGenerationController.xtend
+++ b/bundles/org.eclipse.emf.ecp.emf2web.json/src/org/eclipse/emf/ecp/emf2web/json/controller/xtend/JsonGenerationController.xtend
@@ -36,7 +36,9 @@
 		val formsGenerator = new FormsJsonGenerator(helper)
 
 		for (view : views) {
-			helper.setEcorePath(view.ecorePath)
+			for (ecorePath : view.ecorePaths) {
+				helper.addEcorePath(ecorePath);
+			}
 			val eClass = view.rootEClass
 			val schemaIdentifier = eClass.name
 
diff --git a/bundles/org.eclipse.emf.ecp.emf2web.json/src/org/eclipse/emf/ecp/emf2web/json/util/ReferenceHelperImpl.java b/bundles/org.eclipse.emf.ecp.emf2web.json/src/org/eclipse/emf/ecp/emf2web/json/util/ReferenceHelperImpl.java
index b32fbec..0493cb3 100644
--- a/bundles/org.eclipse.emf.ecp.emf2web.json/src/org/eclipse/emf/ecp/emf2web/json/util/ReferenceHelperImpl.java
+++ b/bundles/org.eclipse.emf.ecp.emf2web.json/src/org/eclipse/emf/ecp/emf2web/json/util/ReferenceHelperImpl.java
@@ -11,6 +11,9 @@
  ******************************************************************************/
 package org.eclipse.emf.ecp.emf2web.json.util;
 
+import java.util.LinkedHashSet;
+import java.util.Set;
+
 import org.eclipse.emf.ecore.EReference;
 import org.eclipse.emf.ecp.emf2web.util.AbstractReferenceHelper;
 import org.eclipse.emf.ecp.view.spi.model.VDomainModelReference;
@@ -27,7 +30,7 @@
 	private static final String SEPARATOR = "/"; //$NON-NLS-1$
 	private static final String PROPERTIES = "properties"; //$NON-NLS-1$
 	private static final String ITEMS = "items"; //$NON-NLS-1$
-	private String ecorePath;
+	private final Set<String> ecorePaths = new LinkedHashSet<String>();
 
 	@Override
 	public String getStringRepresentation(VDomainModelReference reference) {
@@ -69,21 +72,16 @@
 	}
 
 	/**
-	 * Allows to set the ecore path to the current view model.
-	 * 
+	 * Allows to add an ecore path to the current view model.
+	 *
 	 * @param ecorePath The path to the ecore of the current view model
 	 */
-	public void setEcorePath(String ecorePath) {
-		this.ecorePath = ecorePath;
+	public void addEcorePath(String ecorePath) {
+		ecorePaths.add(ecorePath);
 	}
 
-	/**
-	 * {@inheritDoc}
-	 *
-	 * @see org.eclipse.emf.ecp.emf2web.util.AbstractReferenceHelper#getEcorePath()
-	 */
 	@Override
-	protected String getEcorePath() {
-		return ecorePath;
+	protected Set<String> getEcorePaths() {
+		return ecorePaths;
 	}
 }
diff --git a/bundles/org.eclipse.emf.ecp.emf2web.ui.json/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.emf2web.ui.json/META-INF/MANIFEST.MF
index 599d0da..97ccbc4 100644
--- a/bundles/org.eclipse.emf.ecp.emf2web.ui.json/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.emf2web.ui.json/META-INF/MANIFEST.MF
@@ -2,20 +2,21 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: EMF To Web JSON UI
 Bundle-SymbolicName: org.eclipse.emf.ecp.emf2web.ui.json;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Activator: org.eclipse.emf.ecp.emf2web.ui.json.Activator
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emf.ecp.emf2web.ui.json;version="1.16.0";x-internal:=true,
- org.eclipse.emf.ecp.emf2web.ui.json.internal.handler;version="1.16.0";x-internal:=true,
- org.eclipse.emf.ecp.emf2web.ui.json.internal.messages;version="1.16.0";x-internal:=true
+Export-Package: org.eclipse.emf.ecp.emf2web.ui.json;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.emf2web.ui.json.internal.handler;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.emf2web.ui.json.internal.messages;version="1.17.0";x-internal:=true
 Require-Bundle: org.eclipse.ui;bundle-version="[3.107.0,4.0.0)",
- org.eclipse.emf.ecp.emf2web.ui;bundle-version="[1.16.0,1.17.0)",
+ org.eclipse.emf.ecp.emf2web.ui;bundle-version="[1.17.0,1.18.0]",
  org.eclipse.core.resources;bundle-version="[3.10.0,4.0.0)",
  org.eclipse.core.runtime;bundle-version="[3.11.0,4.0.0)",
  org.eclipse.emf.ecore;bundle-version="[2.11.0,3.0.0)",
- org.eclipse.emf.ecp.view.model;bundle-version="[1.16.0,1.17.0)",
- org.eclipse.emf.ecp.emf2web;bundle-version="[1.16.0,1.17.0)",
- org.eclipse.emf.ecp.emf2web.json;bundle-version="[1.16.0,1.17.0)",
- org.eclipse.emf.ecp.ide.util;bundle-version="[1.16.0,1.17.0)"
+ org.eclipse.emf.ecp.view.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.emf2web;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.emf2web.json;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.ide.util;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.emf2web.ui.json
diff --git a/bundles/org.eclipse.emf.ecp.emf2web.ui.json/pom.xml b/bundles/org.eclipse.emf.ecp.emf2web.ui.json/pom.xml
index 365849d..a86d4bb 100644
--- a/bundles/org.eclipse.emf.ecp.emf2web.ui.json/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.emf2web.ui.json/pom.xml
@@ -7,12 +7,12 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
 
   <artifactId>org.eclipse.emf.ecp.emf2web.ui.json</artifactId>
   <packaging>eclipse-plugin</packaging>
   <groupId>org.eclipse.emf.ecp</groupId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
 </project>
diff --git a/bundles/org.eclipse.emf.ecp.emf2web.ui/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.emf2web.ui/META-INF/MANIFEST.MF
index c76b454..841f36d 100644
--- a/bundles/org.eclipse.emf.ecp.emf2web.ui/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.emf2web.ui/META-INF/MANIFEST.MF
@@ -2,12 +2,12 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: EMF To Web UI
 Bundle-SymbolicName: org.eclipse.emf.ecp.emf2web.ui;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emf.ecp.emf2web.ui.handler;version="1.16.0",
- org.eclipse.emf.ecp.emf2web.ui.messages;version="1.16.0";x-internal:=true,
- org.eclipse.emf.ecp.emf2web.ui.wizard;version="1.16.0"
-Require-Bundle: org.eclipse.emf.ecp.emf2web;bundle-version="[1.16.0,1.17.0)",
+Export-Package: org.eclipse.emf.ecp.emf2web.ui.handler;version="1.17.0",
+ org.eclipse.emf.ecp.emf2web.ui.messages;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.emf2web.ui.wizard;version="1.17.0"
+Require-Bundle: org.eclipse.emf.ecp.emf2web;bundle-version="[1.17.0,1.18.0]",
  org.eclipse.core.databinding;bundle-version="[1.5.0,2.0.0)",
  org.eclipse.core.databinding.beans;bundle-version="[1.3.0,2.0.0)",
  org.eclipse.core.databinding.observable;bundle-version="[1.5.0,2.0.0)",
@@ -15,7 +15,7 @@
  org.eclipse.equinox.common;bundle-version="[3.7.0,4.0.0)",
  com.ibm.icu;bundle-version="[54.1.0,60.0.0)",
  org.eclipse.ui;bundle-version="[3.107.0,4.0.0)",
- org.eclipse.emf.ecp.view.model;bundle-version="[1.16.0,1.17.0)",
+ org.eclipse.emf.ecp.view.model;bundle-version="[1.17.0,1.18.0]",
  org.eclipse.emf.common.ui;bundle-version="[2.10.0,3.0.0)",
  org.eclipse.core.resources;bundle-version="[3.10.0,4.0.0)",
  org.eclipse.ui.ide;bundle-version="[3.11.0,4.0.0)"
@@ -25,3 +25,4 @@
   org.eclipse.swt;version="0.0.0",
   org.eclipse.swt.widgets;version="0.0.0"
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.emf2web.ui
diff --git a/bundles/org.eclipse.emf.ecp.emf2web.ui/pom.xml b/bundles/org.eclipse.emf.ecp.emf2web.ui/pom.xml
index 9e35902..c60008c 100644
--- a/bundles/org.eclipse.emf.ecp.emf2web.ui/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.emf2web.ui/pom.xml
@@ -7,12 +7,12 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
 
   <artifactId>org.eclipse.emf.ecp.emf2web.ui</artifactId>
   <packaging>eclipse-plugin</packaging>
   <groupId>org.eclipse.emf.ecp</groupId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
 </project>
diff --git a/bundles/org.eclipse.emf.ecp.emf2web/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.emf2web/META-INF/MANIFEST.MF
index ff50d8e..60ee6fc 100644
--- a/bundles/org.eclipse.emf.ecp.emf2web/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.emf2web/META-INF/MANIFEST.MF
@@ -2,48 +2,49 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: EMF To Web
 Bundle-SymbolicName: org.eclipse.emf.ecp.emf2web;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-ClassPath: .
 Bundle-Activator: org.eclipse.emf.ecp.emf2web.Activator
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emf.ecp.emf2web;version="1.16.0";x-internal:=true,
- org.eclipse.emf.ecp.emf2web.controller.xtend;version="1.16.0";
+Export-Package: org.eclipse.emf.ecp.emf2web;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.emf2web.controller.xtend;version="1.17.0";
   uses:="org.eclipse.emf.ecore,
    org.eclipse.emf.ecp.emf2web.exporter,
    org.eclipse.emf.common.util,
    org.eclipse.emf.ecp.view.spi.model",
- org.eclipse.emf.ecp.emf2web.exporter;version="1.16.0";uses:="org.eclipse.emf.common.util,org.eclipse.emf.ecp.emf2web.controller.xtend",
- org.eclipse.emf.ecp.emf2web.generator;version="1.16.0";uses:="org.eclipse.emf.ecore",
- org.eclipse.emf.ecp.emf2web.internal.messages;version="1.16.0";x-internal:=true,
- org.eclipse.emf.ecp.emf2web.util;version="1.16.0";uses:="org.eclipse.emf.ecore",
- org.eclipse.emf.ecp.emf2web.util.xtend;version="1.16.0"
+ org.eclipse.emf.ecp.emf2web.exporter;version="1.17.0";uses:="org.eclipse.emf.common.util,org.eclipse.emf.ecp.emf2web.controller.xtend",
+ org.eclipse.emf.ecp.emf2web.generator;version="1.17.0";uses:="org.eclipse.emf.ecore",
+ org.eclipse.emf.ecp.emf2web.internal.messages;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.emf2web.util;version="1.17.0";uses:="org.eclipse.emf.ecore",
+ org.eclipse.emf.ecp.emf2web.util.xtend;version="1.17.0"
 Require-Bundle: org.eclipse.ui;bundle-version="[3.107.0,4.0.0)",
-  org.eclipse.core.runtime;bundle-version="[3.11.0,4.0.0)",
-  org.eclipse.emf;bundle-version="[2.6.0,3.0.0)",
-  org.eclipse.emf.ecore;bundle-version="[2.9.0,3.0.0)",
-  org.eclipse.xtend.lib;bundle-version="[2.8.0,3.0.0)",
-  org.eclipse.xtext.xbase.lib;bundle-version="[2.8.0,3.0.0)",
-  org.eclipse.core.resources;bundle-version="[3.8.0,4.0.0)",
-  org.eclipse.emf.edit;bundle-version="[2.11.0,3.0.0)",
-  org.eclipse.emf.edit.ui;bundle-version="[2.10.0,3.0.0)",
-  org.eclipse.emf.ecp.view.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.categorization.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.custom.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.group.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.horizontal.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.label.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.rule.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.table.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.template.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.treemasterdetail.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.vertical.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.model.common;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.model.provider.generator;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.model.editor;bundle-version="[1.16.0,1.17.0)",
-  com.google.gson;bundle-version="[2.2.0,3.0.0)",
-  org.eclipse.emfforms.core.services;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.ui.view;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.emfstore.common.model;bundle-version="[1.5.0,2.0.0)",
-  org.eclipse.emfforms.common;bundle-version="[1.16.0,1.17.0)"
+ org.eclipse.core.runtime;bundle-version="[3.11.0,4.0.0)",
+ org.eclipse.emf;bundle-version="[2.6.0,3.0.0)",
+ org.eclipse.emf.ecore;bundle-version="[2.9.0,3.0.0)",
+ org.eclipse.xtend.lib;bundle-version="[2.8.0,3.0.0)",
+ org.eclipse.xtext.xbase.lib;bundle-version="[2.8.0,3.0.0)",
+ org.eclipse.core.resources;bundle-version="[3.8.0,4.0.0)",
+ org.eclipse.emf.edit;bundle-version="[2.11.0,3.0.0)",
+ org.eclipse.emf.edit.ui;bundle-version="[2.10.0,3.0.0)",
+ org.eclipse.emf.ecp.view.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.categorization.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.custom.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.group.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.horizontal.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.label.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.rule.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.table.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.template.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.treemasterdetail.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.vertical.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.model.common;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.model.provider.generator;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.model.editor;bundle-version="[1.17.0,1.18.0]",
+ com.google.gson;bundle-version="[2.2.0,3.0.0)",
+ org.eclipse.emfforms.core.services;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.ui.view;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.emfstore.common.model;bundle-version="[1.5.0,2.0.0)",
+ org.eclipse.emfforms.common;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.emf2web
diff --git a/bundles/org.eclipse.emf.ecp.emf2web/pom.xml b/bundles/org.eclipse.emf.ecp.emf2web/pom.xml
index 973d10b..5fd4df4 100644
--- a/bundles/org.eclipse.emf.ecp.emf2web/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.emf2web/pom.xml
@@ -7,12 +7,12 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
 
   <artifactId>org.eclipse.emf.ecp.emf2web</artifactId>
   <packaging>eclipse-plugin</packaging>
   <groupId>org.eclipse.emf.ecp</groupId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
 </project>
diff --git a/bundles/org.eclipse.emf.ecp.emf2web/src/org/eclipse/emf/ecp/emf2web/util/AbstractReferenceHelper.java b/bundles/org.eclipse.emf.ecp.emf2web/src/org/eclipse/emf/ecp/emf2web/util/AbstractReferenceHelper.java
index c5cd19a..61bfbb9 100644
--- a/bundles/org.eclipse.emf.ecp.emf2web/src/org/eclipse/emf/ecp/emf2web/util/AbstractReferenceHelper.java
+++ b/bundles/org.eclipse.emf.ecp.emf2web/src/org/eclipse/emf/ecp/emf2web/util/AbstractReferenceHelper.java
@@ -16,6 +16,7 @@
 import java.io.FileNotFoundException;
 import java.io.IOException;
 import java.util.Properties;
+import java.util.Set;
 
 import org.eclipse.core.databinding.observable.value.IObservableValue;
 import org.eclipse.core.databinding.property.value.IValueProperty;
@@ -84,15 +85,10 @@
 
 	private static final String DISPLAY_NAME = "_UI_%1$s_%2$s_feature"; //$NON-NLS-1$
 
-	/**
-	 * {@inheritDoc}
-	 *
-	 * @see org.eclipse.emf.ecp.emf2web.util.ReferenceHelper#getLabel(org.eclipse.emf.ecp.view.spi.model.VDomainModelReference)
-	 */
 	@Override
 	public String getLabel(VDomainModelReference reference) {
-		final String path = getEcorePath();
-		if (path == null) {
+		final Set<String> paths = getEcorePaths();
+		if (paths == null || paths.isEmpty()) {
 			try {
 				final BundleContext bundleContext = Activator.getDefault().getBundleContext();
 				final ServiceReference<EMFFormsLabelProvider> serviceReference = bundleContext
@@ -108,51 +104,53 @@
 				return ""; //$NON-NLS-1$
 			}
 		}
-		// try to find edit bundle
-		final String firstPath = path.split("/")[1]; //$NON-NLS-1$
-		final String editPath = firstPath + ".edit/plugin.properties"; //$NON-NLS-1$
-		final IResource member = ResourcesPlugin.getWorkspace().getRoot().findMember(editPath);
-		if (member != null && member.exists()) {
-			final File file = member.getLocation().toFile();
-			final Properties p = new Properties();
-			FileInputStream fis = null;
-			try {
-				fis = new FileInputStream(file);
-				p.load(fis);
-			} catch (final FileNotFoundException ex) {
-				Activator.getDefault().getReportService().report(new AbstractReport(ex));
-			} catch (final IOException ex) {
-				Activator.getDefault().getReportService().report(new AbstractReport(ex));
-			} finally {
-				if (fis != null) {
-					try {
-						fis.close();
-					} catch (final IOException ex) {
-						Activator.getDefault().getReportService().report(new AbstractReport(ex));
+		for (final String path : paths) {
+			// try to find edit bundle
+			final String firstPath = path.split("/")[1]; //$NON-NLS-1$
+			final String editPath = firstPath + ".edit/plugin.properties"; //$NON-NLS-1$
+			final IResource member = ResourcesPlugin.getWorkspace().getRoot().findMember(editPath);
+			if (member != null && member.exists()) {
+				final File file = member.getLocation().toFile();
+				final Properties p = new Properties();
+				FileInputStream fis = null;
+				try {
+					fis = new FileInputStream(file);
+					p.load(fis);
+				} catch (final FileNotFoundException ex) {
+					Activator.getDefault().getReportService().report(new AbstractReport(ex));
+				} catch (final IOException ex) {
+					Activator.getDefault().getReportService().report(new AbstractReport(ex));
+				} finally {
+					if (fis != null) {
+						try {
+							fis.close();
+						} catch (final IOException ex) {
+							Activator.getDefault().getReportService().report(new AbstractReport(ex));
+						}
 					}
 				}
-			}
 
-			final EStructuralFeature feature = getEStructuralFeature(reference);
-			if (feature == null) {
-				return null;
+				final EStructuralFeature feature = getEStructuralFeature(reference);
+				if (feature == null) {
+					continue;
+				}
+				final EClass eClass = feature.getEContainingClass();
+				final String key = String.format(DISPLAY_NAME, eClass.getName(), feature.getName());
+				final String result = p.getProperty(key);
+				if (result == null) {
+					return feature.getName();
+				}
+				return result;
 			}
-			final EClass eClass = feature.getEContainingClass();
-			final String key = String.format(DISPLAY_NAME, eClass.getName(), feature.getName());
-			final String result = p.getProperty(key);
-			if (result == null) {
-				return feature.getName();
-			}
-			return result;
 		}
 		final EStructuralFeature feature = getEStructuralFeature(reference);
 		return feature.getName();
 	}
 
 	/**
-	 * Return the ecore path of the current view model.
+	 * Returns the ecore paths of the current view model.
 	 *
-	 * @return The path to the ecore of the current view
+	 * @return The paths to the ecores of the current view
 	 */
-	protected abstract String getEcorePath();
+	protected abstract Set<String> getEcorePaths();
 }
diff --git a/bundles/org.eclipse.emf.ecp.emfstore.core.rap/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.emfstore.core.rap/META-INF/MANIFEST.MF
index 318f982..a068b68 100644
--- a/bundles/org.eclipse.emf.ecp.emfstore.core.rap/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.emfstore.core.rap/META-INF/MANIFEST.MF
@@ -2,14 +2,15 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: ECP EMFStore Core RAP
 Bundle-SymbolicName: org.eclipse.emf.ecp.emfstore.core.rap
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Activator: org.eclipse.emf.ecp.emfstore.internal.core.rap.Activator
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emf.ecp.emfstore.internal.core.rap;version="1.16.0";x-internal:=true
+Export-Package: org.eclipse.emf.ecp.emfstore.internal.core.rap;version="1.17.0";x-internal:=true
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.7.0,4.0.0)",
-  org.eclipse.emf.ecp.core.rap;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.emfstore.core;bundle-version="[1.16.0,1.17.0)"
+ org.eclipse.emf.ecp.core.rap;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.emfstore.core;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Import-Package: org.eclipse.rap.rwt;version="0.0.0",
   org.eclipse.rap.rwt.service;version="0.0.0"
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.emfstore.core.rap
diff --git a/bundles/org.eclipse.emf.ecp.emfstore.core.rap/pom.xml b/bundles/org.eclipse.emf.ecp.emfstore.core.rap/pom.xml
index ef846c5..fee7b6c 100644
--- a/bundles/org.eclipse.emf.ecp.emfstore.core.rap/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.emfstore.core.rap/pom.xml
@@ -5,11 +5,11 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emf.ecp.emfstore.core.rap</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 </project>
diff --git a/bundles/org.eclipse.emf.ecp.emfstore.core/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.emfstore.core/META-INF/MANIFEST.MF
index f54d4b0..466d7ae 100644
--- a/bundles/org.eclipse.emf.ecp.emfstore.core/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.emfstore.core/META-INF/MANIFEST.MF
@@ -2,10 +2,10 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: ECP EMFStore Provider Core Plugin
 Bundle-SymbolicName: org.eclipse.emf.ecp.emfstore.core;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Activator: org.eclipse.emf.ecp.emfstore.core.internal.Activator
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emf.ecp.emfstore.core.internal;version="1.16.0";
+Export-Package: org.eclipse.emf.ecp.emfstore.core.internal;version="1.17.0";
    x-friends:="org.eclipse.emf.ecp.emfstore.ui,
     org.eclipse.emf.ecp.emfstore.ui.search,
     org.eclipse.emf.ecp.view.ui.editor.test,
@@ -13,9 +13,10 @@
     org.eclipse.emf.ecp.emfstore.ui.e4,
     org.eclipse.emf.ecp.emfstore.core.rap"
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.4.0,4.0.0)",
-  org.eclipse.emf.ecp.core;bundle-version="[1.16.0,1.17.0)",
+  org.eclipse.emf.ecp.core;bundle-version="[1.17.0,1.18.0)",
   org.eclipse.emf.emfstore.client;bundle-version="[1.0.0,2.0.0)",
   org.eclipse.net4j.util;bundle-version="[3.0.0,4.0.0)"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Service-Component: OSGI-INF/esWorkspaceProviderProvider.xml
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.emfstore.core
diff --git a/bundles/org.eclipse.emf.ecp.emfstore.core/pom.xml b/bundles/org.eclipse.emf.ecp.emfstore.core/pom.xml
index 23ffebe..7b3d224 100644
--- a/bundles/org.eclipse.emf.ecp.emfstore.core/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.emfstore.core/pom.xml
@@ -5,11 +5,11 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emf.ecp.emfstore.core</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 </project>
diff --git a/bundles/org.eclipse.emf.ecp.emfstore.localserver/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.emfstore.localserver/META-INF/MANIFEST.MF
index 1fd3b37..29c7471 100644
--- a/bundles/org.eclipse.emf.ecp.emfstore.localserver/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.emfstore.localserver/META-INF/MANIFEST.MF
@@ -10,3 +10,4 @@
   org.eclipse.emf.emfstore.server;bundle-version="[1.3.0,2.0.0)"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.emfstore.localserver
diff --git a/bundles/org.eclipse.emf.ecp.emfstore.ui.e3/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.emfstore.ui.e3/META-INF/MANIFEST.MF
index e137674..52d3aa4 100644
--- a/bundles/org.eclipse.emf.ecp.emfstore.ui.e3/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.emfstore.ui.e3/META-INF/MANIFEST.MF
@@ -2,19 +2,19 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: ECP EMFStore E3
 Bundle-SymbolicName: org.eclipse.emf.ecp.emfstore.ui.e3;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Activator: org.eclipse.emf.ecp.emfstore.internal.ui.e3.Activator
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emf.ecp.emfstore.internal.ui.decorator;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.emfstore.internal.ui.e3;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.emfstore.internal.ui.handler;version="1.16.0";x-internal:=true;uses:="org.eclipse.core.commands"
-Require-Bundle: org.eclipse.emf.ecp.core;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.emfstore.core;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.emfstore.ui;bundle-version="[1.16.0,1.17.0)",
+Export-Package: org.eclipse.emf.ecp.emfstore.internal.ui.decorator;version="1.17.0";x-internal:=true,
+  org.eclipse.emf.ecp.emfstore.internal.ui.e3;version="1.17.0";x-internal:=true,
+  org.eclipse.emf.ecp.emfstore.internal.ui.handler;version="1.17.0";x-internal:=true;uses:="org.eclipse.core.commands"
+Require-Bundle: org.eclipse.emf.ecp.core;bundle-version="[1.17.0,1.18.0)",
+  org.eclipse.emf.ecp.emfstore.core;bundle-version="[1.17.0,1.18.0)",
+  org.eclipse.emf.ecp.emfstore.ui;bundle-version="[1.17.0,1.18.0)",
   org.eclipse.emf.emfstore.client;bundle-version="[1.3.0,2.0.0)",
   org.eclipse.emf.emfstore.client.ui;bundle-version="[1.3.0,2.0.0)",
-  org.eclipse.emf.ecp.ui;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.common;bundle-version="[1.16.0,1.17.0)",
+  org.eclipse.emf.ecp.ui;bundle-version="[1.17.0,1.18.0)",
+  org.eclipse.emf.ecp.common;bundle-version="[1.17.0,1.18.0)",
   org.eclipse.core.expressions;bundle-version="[3.4.0,4.0.0)"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Import-Package: org.eclipse.core.commands;version="0.0.0",
@@ -34,3 +34,4 @@
   org.eclipse.ui.handlers;version="0.0.0",
   org.eclipse.ui.plugin;version="0.0.0"
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.emfstore.ui.e3
diff --git a/bundles/org.eclipse.emf.ecp.emfstore.ui.e3/pom.xml b/bundles/org.eclipse.emf.ecp.emfstore.ui.e3/pom.xml
index f5030e9..182a286 100644
--- a/bundles/org.eclipse.emf.ecp.emfstore.ui.e3/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.emfstore.ui.e3/pom.xml
@@ -5,11 +5,11 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emf.ecp.emfstore.ui.e3</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 </project>
diff --git a/bundles/org.eclipse.emf.ecp.emfstore.ui.e4/.project b/bundles/org.eclipse.emf.ecp.emfstore.ui.e4/.project
index bf8f8d4..272d754 100644
--- a/bundles/org.eclipse.emf.ecp.emfstore.ui.e4/.project
+++ b/bundles/org.eclipse.emf.ecp.emfstore.ui.e4/.project
@@ -25,10 +25,16 @@
 			<arguments>
 			</arguments>
 		</buildCommand>
+		<buildCommand>
+			<name>net.sf.eclipsecs.core.CheckstyleBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
 	</buildSpec>
 	<natures>
 		<nature>org.eclipse.pde.PluginNature</nature>
 		<nature>org.eclipse.jdt.core.javanature</nature>
 		<nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
+		<nature>net.sf.eclipsecs.core.CheckstyleNature</nature>
 	</natures>
 </projectDescription>
diff --git a/bundles/org.eclipse.emf.ecp.emfstore.ui.e4/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.emfstore.ui.e4/META-INF/MANIFEST.MF
index 085df27..1774c3c 100644
--- a/bundles/org.eclipse.emf.ecp.emfstore.ui.e4/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.emfstore.ui.e4/META-INF/MANIFEST.MF
@@ -2,20 +2,20 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Emfstore e4 ui
 Bundle-SymbolicName: org.eclipse.emf.ecp.emfstore.ui.e4;singleton:=true
-Bundle-Version: 1.16.0.qualifier
-Bundle-Activator: org.eclipse.emf.ecp.e4.emfstore.Activator
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emf.ecp.e4.emfstore;version="1.16.0";x-internal:=true
+Export-Package: org.eclipse.emf.ecp.e4.emfstore;version="1.17.0";x-internal:=true
 Require-Bundle: org.eclipse.e4.core.di;bundle-version="[1.2.0,2.0.0)",
-  javax.inject;bundle-version="[1.0.0,2.0.0)",
-  org.eclipse.e4.ui.workbench;bundle-version="[0.10.0,2.0.0)",
-  org.eclipse.emf.emfstore.client.ui;bundle-version="[1.3.0,2.0.0)",
-  org.eclipse.swt;bundle-version="[3.100.0,4.0.0)",
-  org.eclipse.e4.ui.services;bundle-version="[0.10.0,2.0.0)",
-  org.eclipse.emf.ecp.core;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.emfstore.core;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.emfstore.client;bundle-version="[1.3.0,2.0.0)",
-  org.eclipse.emf.ecp.emfstore.ui;bundle-version="[1.16.0,1.17.0)"
+ javax.inject;bundle-version="[1.0.0,2.0.0)",
+ org.eclipse.e4.ui.workbench;bundle-version="[0.10.0,2.0.0)",
+ org.eclipse.emf.emfstore.client.ui;bundle-version="[1.3.0,2.0.0)",
+ org.eclipse.swt;bundle-version="[3.100.0,4.0.0)",
+ org.eclipse.e4.ui.services;bundle-version="[0.10.0,2.0.0)",
+ org.eclipse.emf.ecp.core;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.emfstore.core;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.emfstore.client;bundle-version="[1.3.0,2.0.0)",
+ org.eclipse.emf.ecp.emfstore.ui;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Import-Package: org.osgi.framework;version="1.3.0"
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.emfstore.ui.e4
diff --git a/bundles/org.eclipse.emf.ecp.emfstore.ui.e4/pom.xml b/bundles/org.eclipse.emf.ecp.emfstore.ui.e4/pom.xml
index 1446e37..7c697c0 100644
--- a/bundles/org.eclipse.emf.ecp.emfstore.ui.e4/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.emfstore.ui.e4/pom.xml
@@ -5,11 +5,11 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emf.ecp.emfstore.ui.e4</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 </project>
diff --git a/bundles/org.eclipse.emf.ecp.emfstore.ui.e4/src/org/eclipse/emf/ecp/e4/emfstore/Activator.java b/bundles/org.eclipse.emf.ecp.emfstore.ui.e4/src/org/eclipse/emf/ecp/e4/emfstore/Activator.java
deleted file mode 100644
index ddcdacd..0000000
--- a/bundles/org.eclipse.emf.ecp.emfstore.ui.e4/src/org/eclipse/emf/ecp/e4/emfstore/Activator.java
+++ /dev/null
@@ -1,32 +0,0 @@
-package org.eclipse.emf.ecp.e4.emfstore;
-
-import org.osgi.framework.BundleActivator;
-import org.osgi.framework.BundleContext;
-
-public class Activator implements BundleActivator {
-
-	private static BundleContext context;
-
-	static BundleContext getContext() {
-		return context;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * @see org.osgi.framework.BundleActivator#start(org.osgi.framework.BundleContext)
-	 */
-	@Override
-	public void start(BundleContext bundleContext) throws Exception {
-		Activator.context = bundleContext;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * @see org.osgi.framework.BundleActivator#stop(org.osgi.framework.BundleContext)
-	 */
-	@Override
-	public void stop(BundleContext bundleContext) throws Exception {
-		Activator.context = null;
-	}
-
-}
diff --git a/bundles/org.eclipse.emf.ecp.emfstore.ui.e4/src/org/eclipse/emf/ecp/e4/emfstore/CheckoutBranchHandler.java b/bundles/org.eclipse.emf.ecp.emfstore.ui.e4/src/org/eclipse/emf/ecp/e4/emfstore/CheckoutBranchHandler.java
index 6ab80cd..4ad98bc 100644
--- a/bundles/org.eclipse.emf.ecp.emfstore.ui.e4/src/org/eclipse/emf/ecp/e4/emfstore/CheckoutBranchHandler.java
+++ b/bundles/org.eclipse.emf.ecp.emfstore.ui.e4/src/org/eclipse/emf/ecp/e4/emfstore/CheckoutBranchHandler.java
@@ -1,21 +1,45 @@
-package org.eclipse.emf.ecp.e4.emfstore;

-

-import javax.inject.Named;

-

-import org.eclipse.e4.core.di.annotations.Execute;

-import org.eclipse.e4.core.di.annotations.Optional;

-import org.eclipse.e4.ui.services.IServiceConstants;

-import org.eclipse.emf.ecp.emfstore.core.internal.EMFStoreProjectWrapper;

-import org.eclipse.emf.ecp.emfstore.internal.ui.handler.CheckoutBranchHelper;

-import org.eclipse.swt.widgets.Shell;

-

-public class CheckoutBranchHandler {

-	@Execute

-	public void execute(Shell shell,

-		@Named(IServiceConstants.ACTIVE_SELECTION) @Optional EMFStoreProjectWrapper projectWrapper) {

-		if (projectWrapper != null) {

-			CheckoutBranchHelper.checkoutBranch(projectWrapper, shell);

-		}

-	}

-

+/*******************************************************************************
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
+ *
+ ******************************************************************************/
+package org.eclipse.emf.ecp.e4.emfstore;
+
+import javax.inject.Named;
+
+import org.eclipse.e4.core.di.annotations.Execute;
+import org.eclipse.e4.core.di.annotations.Optional;
+import org.eclipse.e4.ui.services.IServiceConstants;
+import org.eclipse.emf.ecp.emfstore.core.internal.EMFStoreProjectWrapper;
+import org.eclipse.emf.ecp.emfstore.internal.ui.handler.CheckoutBranchHelper;
+import org.eclipse.swt.widgets.Shell;
+
+/**
+ * Handler to trigger branch checkout.
+ *
+ * @see CheckoutBranchHandler#execute(Shell, EMFStoreProjectWrapper)
+ * @author Eugen Neufeld
+ */
+public class CheckoutBranchHandler {
+	/**
+	 * Called by the framework when handler is triggered.
+	 *
+	 * @param shell The current {@link Shell}
+	 * @param projectWrapper The currently selected {@link EMFStoreProjectWrapper}
+	 */
+	@Execute
+	public void execute(Shell shell,
+		@Named(IServiceConstants.ACTIVE_SELECTION) @Optional EMFStoreProjectWrapper projectWrapper) {
+		if (projectWrapper != null) {
+			CheckoutBranchHelper.checkoutBranch(projectWrapper, shell);
+		}
+	}
+
 }
\ No newline at end of file
diff --git a/bundles/org.eclipse.emf.ecp.emfstore.ui.e4/src/org/eclipse/emf/ecp/e4/emfstore/CommitHandler.java b/bundles/org.eclipse.emf.ecp.emfstore.ui.e4/src/org/eclipse/emf/ecp/e4/emfstore/CommitHandler.java
index 51b78ad..351ab56 100644
--- a/bundles/org.eclipse.emf.ecp.emfstore.ui.e4/src/org/eclipse/emf/ecp/e4/emfstore/CommitHandler.java
+++ b/bundles/org.eclipse.emf.ecp.emfstore.ui.e4/src/org/eclipse/emf/ecp/e4/emfstore/CommitHandler.java
@@ -1,21 +1,45 @@
-package org.eclipse.emf.ecp.e4.emfstore;

-

-import javax.inject.Named;

-

-import org.eclipse.e4.core.di.annotations.Execute;

-import org.eclipse.e4.core.di.annotations.Optional;

-import org.eclipse.e4.ui.services.IServiceConstants;

-import org.eclipse.emf.ecp.emfstore.internal.ui.handler.CommitProjectHelper;

-import org.eclipse.emf.ecp.spi.core.InternalProject;

-import org.eclipse.swt.widgets.Shell;

-

-public class CommitHandler {

-	@Execute

-	public void execute(Shell shell,

-		@Named(IServiceConstants.ACTIVE_SELECTION) @Optional InternalProject project) {

-		if (project != null) {

-			CommitProjectHelper.commitProject(project, shell);

-		}

-	}

-

+/*******************************************************************************
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
+ *
+ ******************************************************************************/
+package org.eclipse.emf.ecp.e4.emfstore;
+
+import javax.inject.Named;
+
+import org.eclipse.e4.core.di.annotations.Execute;
+import org.eclipse.e4.core.di.annotations.Optional;
+import org.eclipse.e4.ui.services.IServiceConstants;
+import org.eclipse.emf.ecp.emfstore.internal.ui.handler.CommitProjectHelper;
+import org.eclipse.emf.ecp.spi.core.InternalProject;
+import org.eclipse.swt.widgets.Shell;
+
+/**
+ * Handler to trigger a commit.
+ *
+ * @see CommitProjectHelper#commitProject(InternalProject, Shell)
+ * @author Eugen Neufeld
+ */
+public class CommitHandler {
+	/**
+	 * Called by the framework when handler is triggered.
+	 *
+	 * @param shell The current {@link Shell}
+	 * @param project The currently selected {@link InternalProject}
+	 */
+	@Execute
+	public void execute(Shell shell,
+		@Named(IServiceConstants.ACTIVE_SELECTION) @Optional InternalProject project) {
+		if (project != null) {
+			CommitProjectHelper.commitProject(project, shell);
+		}
+	}
+
 }
\ No newline at end of file
diff --git a/bundles/org.eclipse.emf.ecp.emfstore.ui.e4/src/org/eclipse/emf/ecp/e4/emfstore/CreateBranchHandler.java b/bundles/org.eclipse.emf.ecp.emfstore.ui.e4/src/org/eclipse/emf/ecp/e4/emfstore/CreateBranchHandler.java
index 9d50985..2c1fa01 100644
--- a/bundles/org.eclipse.emf.ecp.emfstore.ui.e4/src/org/eclipse/emf/ecp/e4/emfstore/CreateBranchHandler.java
+++ b/bundles/org.eclipse.emf.ecp.emfstore.ui.e4/src/org/eclipse/emf/ecp/e4/emfstore/CreateBranchHandler.java
@@ -1,21 +1,46 @@
-package org.eclipse.emf.ecp.e4.emfstore;

-

-import javax.inject.Named;

-

-import org.eclipse.e4.core.di.annotations.Execute;

-import org.eclipse.e4.core.di.annotations.Optional;

-import org.eclipse.e4.ui.services.IServiceConstants;

-import org.eclipse.emf.ecp.emfstore.internal.ui.handler.CreateBranchHelper;

-import org.eclipse.emf.ecp.spi.core.InternalProject;

-import org.eclipse.swt.widgets.Shell;

-

-public class CreateBranchHandler {

-	@Execute

-	public void execute(Shell shell,

-		@Named(IServiceConstants.ACTIVE_SELECTION) @Optional InternalProject project) {

-		if (project != null) {

-			CreateBranchHelper.createBranch(project, shell);

-		}

-	}

-

+/*******************************************************************************
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
+ *
+ ******************************************************************************/
+package org.eclipse.emf.ecp.e4.emfstore;
+
+import javax.inject.Named;
+
+import org.eclipse.e4.core.di.annotations.Execute;
+import org.eclipse.e4.core.di.annotations.Optional;
+import org.eclipse.e4.ui.services.IServiceConstants;
+import org.eclipse.emf.ecp.emfstore.internal.ui.handler.CommitProjectHelper;
+import org.eclipse.emf.ecp.emfstore.internal.ui.handler.CreateBranchHelper;
+import org.eclipse.emf.ecp.spi.core.InternalProject;
+import org.eclipse.swt.widgets.Shell;
+
+/**
+ * Handler to trigger branch creation.
+ *
+ * @see CommitProjectHelper#commitProject(InternalProject, Shell)
+ * @author Eugen Neufeld
+ */
+public class CreateBranchHandler {
+	/**
+	 * Called by the framework when handler is triggered.
+	 *
+	 * @param shell The current {@link Shell}
+	 * @param project The currently selected {@link InternalProject}
+	 */
+	@Execute
+	public void execute(Shell shell,
+		@Named(IServiceConstants.ACTIVE_SELECTION) @Optional InternalProject project) {
+		if (project != null) {
+			CreateBranchHelper.createBranch(project, shell);
+		}
+	}
+
 }
\ No newline at end of file
diff --git a/bundles/org.eclipse.emf.ecp.emfstore.ui.e4/src/org/eclipse/emf/ecp/e4/emfstore/CreateRemoteProjectHandler.java b/bundles/org.eclipse.emf.ecp.emfstore.ui.e4/src/org/eclipse/emf/ecp/e4/emfstore/CreateRemoteProjectHandler.java
index 24170fc..d1add4b 100644
--- a/bundles/org.eclipse.emf.ecp.emfstore.ui.e4/src/org/eclipse/emf/ecp/e4/emfstore/CreateRemoteProjectHandler.java
+++ b/bundles/org.eclipse.emf.ecp.emfstore.ui.e4/src/org/eclipse/emf/ecp/e4/emfstore/CreateRemoteProjectHandler.java
@@ -1,21 +1,44 @@
-package org.eclipse.emf.ecp.e4.emfstore;

-

-import javax.inject.Named;

-

-import org.eclipse.e4.core.di.annotations.Execute;

-import org.eclipse.e4.core.di.annotations.Optional;

-import org.eclipse.e4.ui.services.IServiceConstants;

-import org.eclipse.emf.ecp.emfstore.internal.ui.handler.CreateRemoteProjectHelper;

-import org.eclipse.emf.ecp.spi.core.InternalRepository;

-import org.eclipse.swt.widgets.Shell;

-

-public class CreateRemoteProjectHandler {

-	@Execute

-	public void execute(Shell shell,

-		@Named(IServiceConstants.ACTIVE_SELECTION) @Optional InternalRepository ecpRepository) {

-		if (ecpRepository != null) {

-			CreateRemoteProjectHelper.createRemoteProject(ecpRepository, shell);

-		}

-	}

-

+/*******************************************************************************
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
+ *
+ ******************************************************************************/
+package org.eclipse.emf.ecp.e4.emfstore;
+
+import javax.inject.Named;
+
+import org.eclipse.e4.core.di.annotations.Execute;
+import org.eclipse.e4.core.di.annotations.Optional;
+import org.eclipse.e4.ui.services.IServiceConstants;
+import org.eclipse.emf.ecp.emfstore.internal.ui.handler.CreateRemoteProjectHelper;
+import org.eclipse.emf.ecp.spi.core.InternalRepository;
+import org.eclipse.swt.widgets.Shell;
+
+/**
+ * Handler to trigger remote project creation.
+ *
+ * @author Eugen Neufeld
+ */
+public class CreateRemoteProjectHandler {
+	/**
+	 * Called by the framework when handler is triggered.
+	 *
+	 * @param shell The current {@link Shell}
+	 * @param ecpRepository The currently selected {@link InternalRepository}
+	 */
+	@Execute
+	public void execute(Shell shell,
+		@Named(IServiceConstants.ACTIVE_SELECTION) @Optional InternalRepository ecpRepository) {
+		if (ecpRepository != null) {
+			CreateRemoteProjectHelper.createRemoteProject(ecpRepository, shell);
+		}
+	}
+
 }
\ No newline at end of file
diff --git a/bundles/org.eclipse.emf.ecp.emfstore.ui.e4/src/org/eclipse/emf/ecp/e4/emfstore/DeleteOnServerHandler.java b/bundles/org.eclipse.emf.ecp.emfstore.ui.e4/src/org/eclipse/emf/ecp/e4/emfstore/DeleteOnServerHandler.java
index 235704a..9253e51 100644
--- a/bundles/org.eclipse.emf.ecp.emfstore.ui.e4/src/org/eclipse/emf/ecp/e4/emfstore/DeleteOnServerHandler.java
+++ b/bundles/org.eclipse.emf.ecp.emfstore.ui.e4/src/org/eclipse/emf/ecp/e4/emfstore/DeleteOnServerHandler.java
@@ -1,21 +1,45 @@
-package org.eclipse.emf.ecp.e4.emfstore;

-

-import javax.inject.Named;

-

-import org.eclipse.e4.core.di.annotations.Execute;

-import org.eclipse.e4.core.di.annotations.Optional;

-import org.eclipse.e4.ui.services.IServiceConstants;

-import org.eclipse.emf.ecp.emfstore.core.internal.EMFStoreProjectWrapper;

-import org.eclipse.emf.ecp.emfstore.internal.ui.handler.DeleteOnServerHelper;

-import org.eclipse.swt.widgets.Shell;

-

-public class DeleteOnServerHandler {

-	@Execute

-	public void execute(Shell shell,

-		@Named(IServiceConstants.ACTIVE_SELECTION) @Optional EMFStoreProjectWrapper projectWrapper) {

-		if (projectWrapper != null) {

-			DeleteOnServerHelper.deleteOnServer(projectWrapper, shell);

-		}

-	}

-

+/*******************************************************************************
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
+ *
+ ******************************************************************************/
+package org.eclipse.emf.ecp.e4.emfstore;
+
+import javax.inject.Named;
+
+import org.eclipse.e4.core.di.annotations.Execute;
+import org.eclipse.e4.core.di.annotations.Optional;
+import org.eclipse.e4.ui.services.IServiceConstants;
+import org.eclipse.emf.ecp.emfstore.core.internal.EMFStoreProjectWrapper;
+import org.eclipse.emf.ecp.emfstore.internal.ui.handler.DeleteOnServerHelper;
+import org.eclipse.swt.widgets.Shell;
+
+/**
+ * Handler to trigger project deletion on server.
+ *
+ * @see DeleteOnServerHelper#deleteOnServer(EMFStoreProjectWrapper, Shell)
+ * @author Eugen Neufeld
+ */
+public class DeleteOnServerHandler {
+	/**
+	 * Called by the framework when handler is triggered.
+	 *
+	 * @param shell The current {@link Shell}
+	 * @param projectWrapper The currently selected {@link EMFStoreProjectWrapper}
+	 */
+	@Execute
+	public void execute(Shell shell,
+		@Named(IServiceConstants.ACTIVE_SELECTION) @Optional EMFStoreProjectWrapper projectWrapper) {
+		if (projectWrapper != null) {
+			DeleteOnServerHelper.deleteOnServer(projectWrapper, shell);
+		}
+	}
+
 }
\ No newline at end of file
diff --git a/bundles/org.eclipse.emf.ecp.emfstore.ui.e4/src/org/eclipse/emf/ecp/e4/emfstore/ExportProjectHandler.java b/bundles/org.eclipse.emf.ecp.emfstore.ui.e4/src/org/eclipse/emf/ecp/e4/emfstore/ExportProjectHandler.java
index 14e5821..4f63a8d 100644
--- a/bundles/org.eclipse.emf.ecp.emfstore.ui.e4/src/org/eclipse/emf/ecp/e4/emfstore/ExportProjectHandler.java
+++ b/bundles/org.eclipse.emf.ecp.emfstore.ui.e4/src/org/eclipse/emf/ecp/e4/emfstore/ExportProjectHandler.java
@@ -1,3 +1,15 @@
+/*******************************************************************************
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
+ *
+ ******************************************************************************/
 package org.eclipse.emf.ecp.e4.emfstore;
 
 import javax.inject.Named;
@@ -9,7 +21,19 @@
 import org.eclipse.emf.ecp.spi.core.InternalProject;
 import org.eclipse.swt.widgets.Shell;
 
+/**
+ * Handler to trigger the export of an ecp project.
+ *
+ * @see ExportProjectHelper#exportProject(InternalProject, Shell)
+ * @author Eugen Neufeld
+ */
 public class ExportProjectHandler {
+	/**
+	 * Called by the framework when handler is triggered.
+	 *
+	 * @param shell The current {@link Shell}
+	 * @param ecpProject The currently selected {@link ECPProject}
+	 */
 	@Execute
 	public void execute(Shell shell,
 		@Named(IServiceConstants.ACTIVE_SELECTION) ECPProject ecpProject) {
diff --git a/bundles/org.eclipse.emf.ecp.emfstore.ui.e4/src/org/eclipse/emf/ecp/e4/emfstore/ImportProjectHandler.java b/bundles/org.eclipse.emf.ecp.emfstore.ui.e4/src/org/eclipse/emf/ecp/e4/emfstore/ImportProjectHandler.java
index 7f7b4d4..8471b8e 100644
--- a/bundles/org.eclipse.emf.ecp.emfstore.ui.e4/src/org/eclipse/emf/ecp/e4/emfstore/ImportProjectHandler.java
+++ b/bundles/org.eclipse.emf.ecp.emfstore.ui.e4/src/org/eclipse/emf/ecp/e4/emfstore/ImportProjectHandler.java
@@ -1,10 +1,33 @@
+/*******************************************************************************
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
+ *
+ ******************************************************************************/
 package org.eclipse.emf.ecp.e4.emfstore;
 
 import org.eclipse.e4.core.di.annotations.Execute;
 import org.eclipse.emf.ecp.emfstore.internal.ui.handler.ImportProjectHelper;
 import org.eclipse.swt.widgets.Shell;
 
+/**
+ * Handler to trigger the import of an ecp project.
+ *
+ * @see ImportProjectHelper#importProject(Shell)
+ * @author Eugen Neufeld
+ */
 public class ImportProjectHandler {
+	/**
+	 * Called by the framework when handler is triggered.
+	 *
+	 * @param shell The current {@link Shell}
+	 */
 	@Execute
 	public void execute(Shell shell) {
 		ImportProjectHelper.importProject(shell);
diff --git a/bundles/org.eclipse.emf.ecp.emfstore.ui.e4/src/org/eclipse/emf/ecp/e4/emfstore/LogInHandler.java b/bundles/org.eclipse.emf.ecp.emfstore.ui.e4/src/org/eclipse/emf/ecp/e4/emfstore/LogInHandler.java
index 26f2b1a..326f2ec 100644
--- a/bundles/org.eclipse.emf.ecp.emfstore.ui.e4/src/org/eclipse/emf/ecp/e4/emfstore/LogInHandler.java
+++ b/bundles/org.eclipse.emf.ecp.emfstore.ui.e4/src/org/eclipse/emf/ecp/e4/emfstore/LogInHandler.java
@@ -1,3 +1,15 @@
+/*******************************************************************************
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
+ *
+ ******************************************************************************/
 package org.eclipse.emf.ecp.e4.emfstore;
 
 import javax.inject.Named;
@@ -9,7 +21,19 @@
 import org.eclipse.emf.ecp.spi.core.InternalRepository;
 import org.eclipse.swt.widgets.Shell;
 
+/**
+ * Handler to trigger the login for an {@link InternalRepository}.
+ *
+ * @see EMFStoreLogInHelper#login(InternalRepository, Shell)
+ * @author Eugen Neufeld
+ */
 public class LogInHandler {
+	/**
+	 * Called by the framework when handler is triggered.
+	 *
+	 * @param shell The current {@link Shell}
+	 * @param ecpRepository The currently selected {@link InternalRepository}
+	 */
 	@Execute
 	public void execute(Shell shell,
 		@Named(IServiceConstants.ACTIVE_SELECTION) @Optional InternalRepository ecpRepository) {
diff --git a/bundles/org.eclipse.emf.ecp.emfstore.ui.e4/src/org/eclipse/emf/ecp/e4/emfstore/LogOutHandler.java b/bundles/org.eclipse.emf.ecp.emfstore.ui.e4/src/org/eclipse/emf/ecp/e4/emfstore/LogOutHandler.java
index 4d23765..4602ea4 100644
--- a/bundles/org.eclipse.emf.ecp.emfstore.ui.e4/src/org/eclipse/emf/ecp/e4/emfstore/LogOutHandler.java
+++ b/bundles/org.eclipse.emf.ecp.emfstore.ui.e4/src/org/eclipse/emf/ecp/e4/emfstore/LogOutHandler.java
@@ -1,3 +1,15 @@
+/*******************************************************************************
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
+ *
+ ******************************************************************************/
 package org.eclipse.emf.ecp.e4.emfstore;
 
 import javax.inject.Named;
@@ -9,7 +21,19 @@
 import org.eclipse.emf.ecp.spi.core.InternalRepository;
 import org.eclipse.swt.widgets.Shell;
 
+/**
+ * Handler to trigger the logout for an {@link InternalRepository}.
+ *
+ * @see EMFStoreLogOutHelper#logout(InternalRepository, Shell)
+ * @author Eugen Neufeld
+ */
 public class LogOutHandler {
+	/**
+	 * Called by the framework when handler is triggered.
+	 *
+	 * @param shell The current {@link Shell}
+	 * @param ecpRepository The currently selected {@link InternalRepository}
+	 */
 	@Execute
 	public void execute(Shell shell,
 		@Named(IServiceConstants.ACTIVE_SELECTION) @Optional InternalRepository ecpRepository) {
diff --git a/bundles/org.eclipse.emf.ecp.emfstore.ui.e4/src/org/eclipse/emf/ecp/e4/emfstore/ManageUserGroupHandler.java b/bundles/org.eclipse.emf.ecp.emfstore.ui.e4/src/org/eclipse/emf/ecp/e4/emfstore/ManageUserGroupHandler.java
index 1422f71..c6b6452 100644
--- a/bundles/org.eclipse.emf.ecp.emfstore.ui.e4/src/org/eclipse/emf/ecp/e4/emfstore/ManageUserGroupHandler.java
+++ b/bundles/org.eclipse.emf.ecp.emfstore.ui.e4/src/org/eclipse/emf/ecp/e4/emfstore/ManageUserGroupHandler.java
@@ -1,21 +1,45 @@
-package org.eclipse.emf.ecp.e4.emfstore;

-

-import javax.inject.Named;

-

-import org.eclipse.e4.core.di.annotations.Execute;

-import org.eclipse.e4.core.di.annotations.Optional;

-import org.eclipse.e4.ui.services.IServiceConstants;

-import org.eclipse.emf.ecp.emfstore.internal.ui.handler.ManageUserGroupHelper;

-import org.eclipse.emf.ecp.spi.core.InternalRepository;

-import org.eclipse.swt.widgets.Shell;

-

-public class ManageUserGroupHandler {

-	@Execute

-	public void execute(Shell shell,

-		@Named(IServiceConstants.ACTIVE_SELECTION) @Optional InternalRepository ecpRepository) {

-		if (ecpRepository != null) {

-			ManageUserGroupHelper.mangeUser(ecpRepository, shell);

-		}

-	}

-

+/*******************************************************************************
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
+ *
+ ******************************************************************************/
+package org.eclipse.emf.ecp.e4.emfstore;
+
+import javax.inject.Named;
+
+import org.eclipse.e4.core.di.annotations.Execute;
+import org.eclipse.e4.core.di.annotations.Optional;
+import org.eclipse.e4.ui.services.IServiceConstants;
+import org.eclipse.emf.ecp.emfstore.internal.ui.handler.ManageUserGroupHelper;
+import org.eclipse.emf.ecp.spi.core.InternalRepository;
+import org.eclipse.swt.widgets.Shell;
+
+/**
+ * Handler to trigger the management of user groups.
+ *
+ * @see ManageUserGroupHelper#mangeUser(InternalRepository, Shell)
+ * @author Eugen Neufeld
+ */
+public class ManageUserGroupHandler {
+	/**
+	 * Called by the framework when handler is triggered.
+	 *
+	 * @param shell The current {@link Shell}
+	 * @param ecpRepository The currently selected {@link InternalRepository}
+	 */
+	@Execute
+	public void execute(Shell shell,
+		@Named(IServiceConstants.ACTIVE_SELECTION) @Optional InternalRepository ecpRepository) {
+		if (ecpRepository != null) {
+			ManageUserGroupHelper.mangeUser(ecpRepository, shell);
+		}
+	}
+
 }
\ No newline at end of file
diff --git a/bundles/org.eclipse.emf.ecp.emfstore.ui.e4/src/org/eclipse/emf/ecp/e4/emfstore/MergeBranchHandler.java b/bundles/org.eclipse.emf.ecp.emfstore.ui.e4/src/org/eclipse/emf/ecp/e4/emfstore/MergeBranchHandler.java
index af2bd2f..81dfb9d 100644
--- a/bundles/org.eclipse.emf.ecp.emfstore.ui.e4/src/org/eclipse/emf/ecp/e4/emfstore/MergeBranchHandler.java
+++ b/bundles/org.eclipse.emf.ecp.emfstore.ui.e4/src/org/eclipse/emf/ecp/e4/emfstore/MergeBranchHandler.java
@@ -1,21 +1,45 @@
-package org.eclipse.emf.ecp.e4.emfstore;

-

-import javax.inject.Named;

-

-import org.eclipse.e4.core.di.annotations.Execute;

-import org.eclipse.e4.core.di.annotations.Optional;

-import org.eclipse.e4.ui.services.IServiceConstants;

-import org.eclipse.emf.ecp.emfstore.internal.ui.handler.MergeBranchHelper;

-import org.eclipse.emf.ecp.spi.core.InternalProject;

-import org.eclipse.swt.widgets.Shell;

-

-public class MergeBranchHandler {

-	@Execute

-	public void execute(Shell shell,

-		@Named(IServiceConstants.ACTIVE_SELECTION) @Optional InternalProject project) {

-		if (project != null) {

-			MergeBranchHelper.mergeBranch(project, shell);

-		}

-	}

-

+/*******************************************************************************
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
+ *
+ ******************************************************************************/
+package org.eclipse.emf.ecp.e4.emfstore;
+
+import javax.inject.Named;
+
+import org.eclipse.e4.core.di.annotations.Execute;
+import org.eclipse.e4.core.di.annotations.Optional;
+import org.eclipse.e4.ui.services.IServiceConstants;
+import org.eclipse.emf.ecp.emfstore.internal.ui.handler.MergeBranchHelper;
+import org.eclipse.emf.ecp.spi.core.InternalProject;
+import org.eclipse.swt.widgets.Shell;
+
+/**
+ * Handler to trigger the branch merge.
+ *
+ * @see MergeBranchHelper#mergeBranch(InternalProject, Shell)
+ * @author Eugen Neufeld
+ */
+public class MergeBranchHandler {
+	/**
+	 * Called by the framework when handler is triggered.
+	 *
+	 * @param shell The current {@link Shell}
+	 * @param project The currently selected {@link InternalProject}
+	 */
+	@Execute
+	public void execute(Shell shell,
+		@Named(IServiceConstants.ACTIVE_SELECTION) @Optional InternalProject project) {
+		if (project != null) {
+			MergeBranchHelper.mergeBranch(project, shell);
+		}
+	}
+
 }
\ No newline at end of file
diff --git a/bundles/org.eclipse.emf.ecp.emfstore.ui.e4/src/org/eclipse/emf/ecp/e4/emfstore/RegisterEPackageHandler.java b/bundles/org.eclipse.emf.ecp.emfstore.ui.e4/src/org/eclipse/emf/ecp/e4/emfstore/RegisterEPackageHandler.java
index 0ea631b..d2f5cf1 100644
--- a/bundles/org.eclipse.emf.ecp.emfstore.ui.e4/src/org/eclipse/emf/ecp/e4/emfstore/RegisterEPackageHandler.java
+++ b/bundles/org.eclipse.emf.ecp.emfstore.ui.e4/src/org/eclipse/emf/ecp/e4/emfstore/RegisterEPackageHandler.java
@@ -1,21 +1,45 @@
-package org.eclipse.emf.ecp.e4.emfstore;

-

-import javax.inject.Named;

-

-import org.eclipse.e4.core.di.annotations.Execute;

-import org.eclipse.e4.core.di.annotations.Optional;

-import org.eclipse.e4.ui.services.IServiceConstants;

-import org.eclipse.emf.ecp.emfstore.internal.ui.handler.RegisterEPackageHelper;

-import org.eclipse.emf.ecp.spi.core.InternalRepository;

-import org.eclipse.swt.widgets.Shell;

-

-public class RegisterEPackageHandler {

-	@Execute

-	public void execute(Shell shell,

-		@Named(IServiceConstants.ACTIVE_SELECTION) @Optional InternalRepository ecpRepository) {

-		if (ecpRepository != null) {

-			RegisterEPackageHelper.registerEPackage(ecpRepository, shell);

-		}

-	}

-

+/*******************************************************************************
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
+ *
+ ******************************************************************************/
+package org.eclipse.emf.ecp.e4.emfstore;
+
+import javax.inject.Named;
+
+import org.eclipse.e4.core.di.annotations.Execute;
+import org.eclipse.e4.core.di.annotations.Optional;
+import org.eclipse.e4.ui.services.IServiceConstants;
+import org.eclipse.emf.ecp.emfstore.internal.ui.handler.RegisterEPackageHelper;
+import org.eclipse.emf.ecp.spi.core.InternalRepository;
+import org.eclipse.swt.widgets.Shell;
+
+/**
+ * Handler to trigger the registration of ecp packages.
+ *
+ * @see RegisterEPackageHelper#registerEPackage(InternalRepository, Shell)
+ * @author Eugen Neufeld
+ */
+public class RegisterEPackageHandler {
+	/**
+	 * Called by the framework when handler is triggered.
+	 *
+	 * @param shell The current {@link Shell}
+	 * @param ecpRepository The currently selected {@link InternalRepository}
+	 */
+	@Execute
+	public void execute(Shell shell,
+		@Named(IServiceConstants.ACTIVE_SELECTION) @Optional InternalRepository ecpRepository) {
+		if (ecpRepository != null) {
+			RegisterEPackageHelper.registerEPackage(ecpRepository, shell);
+		}
+	}
+
 }
\ No newline at end of file
diff --git a/bundles/org.eclipse.emf.ecp.emfstore.ui.e4/src/org/eclipse/emf/ecp/e4/emfstore/RevertHandler.java b/bundles/org.eclipse.emf.ecp.emfstore.ui.e4/src/org/eclipse/emf/ecp/e4/emfstore/RevertHandler.java
index b0b2df3..b96740d 100644
--- a/bundles/org.eclipse.emf.ecp.emfstore.ui.e4/src/org/eclipse/emf/ecp/e4/emfstore/RevertHandler.java
+++ b/bundles/org.eclipse.emf.ecp.emfstore.ui.e4/src/org/eclipse/emf/ecp/e4/emfstore/RevertHandler.java
@@ -1,21 +1,45 @@
-package org.eclipse.emf.ecp.e4.emfstore;

-

-import javax.inject.Named;

-

-import org.eclipse.e4.core.di.annotations.Execute;

-import org.eclipse.e4.core.di.annotations.Optional;

-import org.eclipse.e4.ui.services.IServiceConstants;

-import org.eclipse.emf.ecp.emfstore.internal.ui.handler.RevertAllOperationsHelper;

-import org.eclipse.emf.ecp.spi.core.InternalProject;

-import org.eclipse.swt.widgets.Shell;

-

-public class RevertHandler {

-	@Execute

-	public void execute(Shell shell,

-		@Named(IServiceConstants.ACTIVE_SELECTION) @Optional InternalProject project) {

-		if (project != null) {

-			RevertAllOperationsHelper.revert(project, shell);

-		}

-	}

-

+/*******************************************************************************
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
+ *
+ ******************************************************************************/
+package org.eclipse.emf.ecp.e4.emfstore;
+
+import javax.inject.Named;
+
+import org.eclipse.e4.core.di.annotations.Execute;
+import org.eclipse.e4.core.di.annotations.Optional;
+import org.eclipse.e4.ui.services.IServiceConstants;
+import org.eclipse.emf.ecp.emfstore.internal.ui.handler.RevertAllOperationsHelper;
+import org.eclipse.emf.ecp.spi.core.InternalProject;
+import org.eclipse.swt.widgets.Shell;
+
+/**
+ * Handler to trigger the change revert.
+ *
+ * @see RevertAllOperationsHelper#revert(InternalProject, Shell)
+ * @author Eugen Neufeld
+ */
+public class RevertHandler {
+	/**
+	 * Called by the framework when handler is triggered.
+	 *
+	 * @param shell The current {@link Shell}
+	 * @param project The currently selected {@link InternalProject}
+	 */
+	@Execute
+	public void execute(Shell shell,
+		@Named(IServiceConstants.ACTIVE_SELECTION) @Optional InternalProject project) {
+		if (project != null) {
+			RevertAllOperationsHelper.revert(project, shell);
+		}
+	}
+
 }
\ No newline at end of file
diff --git a/bundles/org.eclipse.emf.ecp.emfstore.ui.e4/src/org/eclipse/emf/ecp/e4/emfstore/ShareHandler.java b/bundles/org.eclipse.emf.ecp.emfstore.ui.e4/src/org/eclipse/emf/ecp/e4/emfstore/ShareHandler.java
index ec37ec6..4e7456e 100644
--- a/bundles/org.eclipse.emf.ecp.emfstore.ui.e4/src/org/eclipse/emf/ecp/e4/emfstore/ShareHandler.java
+++ b/bundles/org.eclipse.emf.ecp.emfstore.ui.e4/src/org/eclipse/emf/ecp/e4/emfstore/ShareHandler.java
@@ -1,21 +1,45 @@
-package org.eclipse.emf.ecp.e4.emfstore;

-

-import javax.inject.Named;

-

-import org.eclipse.e4.core.di.annotations.Execute;

-import org.eclipse.e4.core.di.annotations.Optional;

-import org.eclipse.e4.ui.services.IServiceConstants;

-import org.eclipse.emf.ecp.emfstore.internal.ui.handler.ShareProjectHelper;

-import org.eclipse.emf.ecp.spi.core.InternalProject;

-import org.eclipse.swt.widgets.Shell;

-

-public class ShareHandler {

-	@Execute

-	public void execute(Shell shell,

-		@Named(IServiceConstants.ACTIVE_SELECTION) @Optional InternalProject project) {

-		if (project != null) {

-			ShareProjectHelper.share(project, shell);

-		}

-	}

-

+/*******************************************************************************
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
+ *
+ ******************************************************************************/
+package org.eclipse.emf.ecp.e4.emfstore;
+
+import javax.inject.Named;
+
+import org.eclipse.e4.core.di.annotations.Execute;
+import org.eclipse.e4.core.di.annotations.Optional;
+import org.eclipse.e4.ui.services.IServiceConstants;
+import org.eclipse.emf.ecp.emfstore.internal.ui.handler.ShareProjectHelper;
+import org.eclipse.emf.ecp.spi.core.InternalProject;
+import org.eclipse.swt.widgets.Shell;
+
+/**
+ * Handler to trigger the share.
+ *
+ * @see ShareProjectHelper#share(InternalProject, Shell)
+ * @author Eugen Neufeld
+ */
+public class ShareHandler {
+	/**
+	 * Called by the framework when handler is triggered.
+	 *
+	 * @param shell The current {@link Shell}
+	 * @param project The currently selected {@link InternalProject}
+	 */
+	@Execute
+	public void execute(Shell shell,
+		@Named(IServiceConstants.ACTIVE_SELECTION) @Optional InternalProject project) {
+		if (project != null) {
+			ShareProjectHelper.share(project, shell);
+		}
+	}
+
 }
\ No newline at end of file
diff --git a/bundles/org.eclipse.emf.ecp.emfstore.ui.e4/src/org/eclipse/emf/ecp/e4/emfstore/ShowHistoryViewHandler.java b/bundles/org.eclipse.emf.ecp.emfstore.ui.e4/src/org/eclipse/emf/ecp/e4/emfstore/ShowHistoryViewHandler.java
index 2e39d40..58c3699 100644
--- a/bundles/org.eclipse.emf.ecp.emfstore.ui.e4/src/org/eclipse/emf/ecp/e4/emfstore/ShowHistoryViewHandler.java
+++ b/bundles/org.eclipse.emf.ecp.emfstore.ui.e4/src/org/eclipse/emf/ecp/e4/emfstore/ShowHistoryViewHandler.java
@@ -1,20 +1,44 @@
-package org.eclipse.emf.ecp.e4.emfstore;

-

-import javax.inject.Named;

-

-import org.eclipse.e4.core.di.annotations.Execute;

-import org.eclipse.e4.core.di.annotations.Optional;

-import org.eclipse.e4.ui.services.IServiceConstants;

-import org.eclipse.emf.ecp.emfstore.internal.ui.handler.ShowHistoryViewHelper;

-import org.eclipse.swt.widgets.Shell;

-

-public class ShowHistoryViewHandler {

-	@Execute

-	public void execute(Shell shell,

-		@Named(IServiceConstants.ACTIVE_SELECTION) @Optional Object object) {

-		if (object != null) {

-			ShowHistoryViewHelper.showHistoryView(object, shell);

-		}

-	}

-

+/*******************************************************************************
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
+ *
+ ******************************************************************************/
+package org.eclipse.emf.ecp.e4.emfstore;
+
+import javax.inject.Named;
+
+import org.eclipse.e4.core.di.annotations.Execute;
+import org.eclipse.e4.core.di.annotations.Optional;
+import org.eclipse.e4.ui.services.IServiceConstants;
+import org.eclipse.emf.ecp.emfstore.internal.ui.handler.ShowHistoryViewHelper;
+import org.eclipse.swt.widgets.Shell;
+
+/**
+ * Handler to open the EMFStore History View.
+ *
+ * @see ShowHistoryViewHelper#showHistoryView(Object, Shell)
+ * @author Eugen Neufeld
+ */
+public class ShowHistoryViewHandler {
+	/**
+	 * Called by the framework when handler is triggered.
+	 *
+	 * @param shell The current {@link Shell}
+	 * @param object The currently selected {@link Object}
+	 */
+	@Execute
+	public void execute(Shell shell,
+		@Named(IServiceConstants.ACTIVE_SELECTION) @Optional Object object) {
+		if (object != null) {
+			ShowHistoryViewHelper.showHistoryView(object, shell);
+		}
+	}
+
 }
\ No newline at end of file
diff --git a/bundles/org.eclipse.emf.ecp.emfstore.ui.e4/src/org/eclipse/emf/ecp/e4/emfstore/StartLocalServerHandler.java b/bundles/org.eclipse.emf.ecp.emfstore.ui.e4/src/org/eclipse/emf/ecp/e4/emfstore/StartLocalServerHandler.java
index e0e0e1d..b55d0be 100644
--- a/bundles/org.eclipse.emf.ecp.emfstore.ui.e4/src/org/eclipse/emf/ecp/e4/emfstore/StartLocalServerHandler.java
+++ b/bundles/org.eclipse.emf.ecp.emfstore.ui.e4/src/org/eclipse/emf/ecp/e4/emfstore/StartLocalServerHandler.java
@@ -1,18 +1,43 @@
+/*******************************************************************************
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
+ *
+ ******************************************************************************/
 package org.eclipse.emf.ecp.e4.emfstore;
 
 import org.eclipse.e4.core.di.annotations.CanExecute;
 import org.eclipse.e4.core.di.annotations.Execute;
 import org.eclipse.emf.ecp.emfstore.internal.ui.handler.StartLocalServerHelper;
 import org.eclipse.emf.emfstore.internal.server.EMFStoreController;
-import org.osgi.service.log.LogService;
 
+/**
+ * Handler to start a local EMFStore Server.
+ *
+ * @see StartLocalServerHelper#startLocalServer()
+ * @author Eugen Neufeld
+ */
 @SuppressWarnings("restriction")
 public class StartLocalServerHandler {
+	/**
+	 * Called by the framework when handler is triggered.
+	 */
 	@Execute
-	public void execute(LogService logService) {
+	public void execute() {
 		StartLocalServerHelper.startLocalServer();
 	}
 
+	/**
+	 * Called by the framework to check whether handler is enabled.
+	 * 
+	 * @return true if enabled, false otherwise
+	 */
 	@CanExecute
 	public boolean isEnabled() {
 		return EMFStoreController.getInstance() == null;
diff --git a/bundles/org.eclipse.emf.ecp.emfstore.ui.e4/src/org/eclipse/emf/ecp/e4/emfstore/UndoHandler.java b/bundles/org.eclipse.emf.ecp.emfstore.ui.e4/src/org/eclipse/emf/ecp/e4/emfstore/UndoHandler.java
index 1ecc580..586402c 100644
--- a/bundles/org.eclipse.emf.ecp.emfstore.ui.e4/src/org/eclipse/emf/ecp/e4/emfstore/UndoHandler.java
+++ b/bundles/org.eclipse.emf.ecp.emfstore.ui.e4/src/org/eclipse/emf/ecp/e4/emfstore/UndoHandler.java
@@ -1,21 +1,45 @@
-package org.eclipse.emf.ecp.e4.emfstore;

-

-import javax.inject.Named;

-

-import org.eclipse.e4.core.di.annotations.Execute;

-import org.eclipse.e4.core.di.annotations.Optional;

-import org.eclipse.e4.ui.services.IServiceConstants;

-import org.eclipse.emf.ecp.emfstore.internal.ui.handler.UndoLastOperationHelper;

-import org.eclipse.emf.ecp.spi.core.InternalProject;

-import org.eclipse.swt.widgets.Shell;

-

-public class UndoHandler {

-	@Execute

-	public void execute(Shell shell,

-		@Named(IServiceConstants.ACTIVE_SELECTION) @Optional InternalProject project) {

-		if (project != null) {

-			UndoLastOperationHelper.undo(project, shell);

-		}

-	}

-

+/*******************************************************************************
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
+ *
+ ******************************************************************************/
+package org.eclipse.emf.ecp.e4.emfstore;
+
+import javax.inject.Named;
+
+import org.eclipse.e4.core.di.annotations.Execute;
+import org.eclipse.e4.core.di.annotations.Optional;
+import org.eclipse.e4.ui.services.IServiceConstants;
+import org.eclipse.emf.ecp.emfstore.internal.ui.handler.UndoLastOperationHelper;
+import org.eclipse.emf.ecp.spi.core.InternalProject;
+import org.eclipse.swt.widgets.Shell;
+
+/**
+ * Handler to trigger an undo on a project.
+ *
+ * @see UndoLastOperationHelper#undo(InternalProject, Shell)
+ * @author Eugen Neufeld
+ */
+public class UndoHandler {
+	/**
+	 * Called by the framework when handler is triggered.
+	 *
+	 * @param shell The current {@link Shell}
+	 * @param project The currently selected {@link InternalProject}
+	 */
+	@Execute
+	public void execute(Shell shell,
+		@Named(IServiceConstants.ACTIVE_SELECTION) @Optional InternalProject project) {
+		if (project != null) {
+			UndoLastOperationHelper.undo(project, shell);
+		}
+	}
+
 }
\ No newline at end of file
diff --git a/bundles/org.eclipse.emf.ecp.emfstore.ui.e4/src/org/eclipse/emf/ecp/e4/emfstore/UpdateHandler.java b/bundles/org.eclipse.emf.ecp.emfstore.ui.e4/src/org/eclipse/emf/ecp/e4/emfstore/UpdateHandler.java
index e5b9474..332630d 100644
--- a/bundles/org.eclipse.emf.ecp.emfstore.ui.e4/src/org/eclipse/emf/ecp/e4/emfstore/UpdateHandler.java
+++ b/bundles/org.eclipse.emf.ecp.emfstore.ui.e4/src/org/eclipse/emf/ecp/e4/emfstore/UpdateHandler.java
@@ -1,21 +1,45 @@
-package org.eclipse.emf.ecp.e4.emfstore;

-

-import javax.inject.Named;

-

-import org.eclipse.e4.core.di.annotations.Execute;

-import org.eclipse.e4.core.di.annotations.Optional;

-import org.eclipse.e4.ui.services.IServiceConstants;

-import org.eclipse.emf.ecp.emfstore.internal.ui.handler.UpdateProjectHelper;

-import org.eclipse.emf.ecp.spi.core.InternalProject;

-import org.eclipse.swt.widgets.Shell;

-

-public class UpdateHandler {

-	@Execute

-	public void execute(Shell shell,

-		@Named(IServiceConstants.ACTIVE_SELECTION) @Optional InternalProject project) {

-		if (project != null) {

-			UpdateProjectHelper.update(project, shell);

-		}

-	}

-

+/*******************************************************************************
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
+ *
+ ******************************************************************************/
+package org.eclipse.emf.ecp.e4.emfstore;
+
+import javax.inject.Named;
+
+import org.eclipse.e4.core.di.annotations.Execute;
+import org.eclipse.e4.core.di.annotations.Optional;
+import org.eclipse.e4.ui.services.IServiceConstants;
+import org.eclipse.emf.ecp.emfstore.internal.ui.handler.UpdateProjectHelper;
+import org.eclipse.emf.ecp.spi.core.InternalProject;
+import org.eclipse.swt.widgets.Shell;
+
+/**
+ * Handler to trigger an update of on a project.
+ *
+ * @see UpdateProjectHelper#update(InternalProject, Shell)
+ * @author Eugen Neufeld
+ */
+public class UpdateHandler {
+	/**
+	 * Called by the framework when handler is triggered.
+	 *
+	 * @param shell The current {@link Shell}
+	 * @param project The currently selected {@link InternalProject}
+	 */
+	@Execute
+	public void execute(Shell shell,
+		@Named(IServiceConstants.ACTIVE_SELECTION) @Optional InternalProject project) {
+		if (project != null) {
+			UpdateProjectHelper.update(project, shell);
+		}
+	}
+
 }
\ No newline at end of file
diff --git a/bundles/org.eclipse.emf.ecp.emfstore.ui.e4/src/org/eclipse/emf/ecp/e4/emfstore/UpdateToVersionHandler.java b/bundles/org.eclipse.emf.ecp.emfstore.ui.e4/src/org/eclipse/emf/ecp/e4/emfstore/UpdateToVersionHandler.java
index 5c11884..3475f72 100644
--- a/bundles/org.eclipse.emf.ecp.emfstore.ui.e4/src/org/eclipse/emf/ecp/e4/emfstore/UpdateToVersionHandler.java
+++ b/bundles/org.eclipse.emf.ecp.emfstore.ui.e4/src/org/eclipse/emf/ecp/e4/emfstore/UpdateToVersionHandler.java
@@ -1,21 +1,45 @@
-package org.eclipse.emf.ecp.e4.emfstore;

-

-import javax.inject.Named;

-

-import org.eclipse.e4.core.di.annotations.Execute;

-import org.eclipse.e4.core.di.annotations.Optional;

-import org.eclipse.e4.ui.services.IServiceConstants;

-import org.eclipse.emf.ecp.emfstore.internal.ui.handler.UpdateProjectHelper;

-import org.eclipse.emf.ecp.spi.core.InternalProject;

-import org.eclipse.swt.widgets.Shell;

-

-public class UpdateToVersionHandler {

-	@Execute

-	public void execute(Shell shell,

-		@Named(IServiceConstants.ACTIVE_SELECTION) @Optional InternalProject project) {

-		if (project != null) {

-			UpdateProjectHelper.updateToVersion(project, shell);

-		}

-	}

-

+/*******************************************************************************
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
+ *
+ ******************************************************************************/
+package org.eclipse.emf.ecp.e4.emfstore;
+
+import javax.inject.Named;
+
+import org.eclipse.e4.core.di.annotations.Execute;
+import org.eclipse.e4.core.di.annotations.Optional;
+import org.eclipse.e4.ui.services.IServiceConstants;
+import org.eclipse.emf.ecp.emfstore.internal.ui.handler.UpdateProjectHelper;
+import org.eclipse.emf.ecp.spi.core.InternalProject;
+import org.eclipse.swt.widgets.Shell;
+
+/**
+ * Handler to trigger an update to a specific version.
+ *
+ * @see UpdateProjectHelper#updateToVersion(InternalProject, Shell)
+ * @author Eugen Neufeld
+ */
+public class UpdateToVersionHandler {
+	/**
+	 * Called by the framework when handler is triggered.
+	 *
+	 * @param shell The current {@link Shell}
+	 * @param project The currently selected {@link InternalProject}
+	 */
+	@Execute
+	public void execute(Shell shell,
+		@Named(IServiceConstants.ACTIVE_SELECTION) @Optional InternalProject project) {
+		if (project != null) {
+			UpdateProjectHelper.updateToVersion(project, shell);
+		}
+	}
+
 }
\ No newline at end of file
diff --git a/bundles/org.eclipse.emf.ecp.emfstore.ui.search/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.emfstore.ui.search/META-INF/MANIFEST.MF
index d3ee187..057706a 100644
--- a/bundles/org.eclipse.emf.ecp.emfstore.ui.search/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.emfstore.ui.search/META-INF/MANIFEST.MF
@@ -2,15 +2,15 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: ECP Search UI
 Bundle-SymbolicName: org.eclipse.emf.ecp.emfstore.ui.search;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emf.ecp.emfstore.ui.search;version="1.16.0";x-internal:=true
+Export-Package: org.eclipse.emf.ecp.emfstore.ui.search;version="1.17.0";x-internal:=true
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.4.0,4.0.0)",
-  org.eclipse.emf.ecp.core;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.emfstore.core;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.ui.e3;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.emfstore.client;bundle-version="[1.0.0,2.0.0)",
-  org.eclipse.emf.ecp.ui;bundle-version="[1.16.0,1.17.0)"
+ org.eclipse.emf.ecp.core;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.emfstore.core;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.ui.e3;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.emfstore.client;bundle-version="[1.0.0,2.0.0)",
+ org.eclipse.emf.ecp.ui;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Import-Package: org.eclipse.core.commands;version="0.0.0",
   org.eclipse.emf.edit.ui.provider;version="0.0.0",
@@ -23,3 +23,4 @@
   org.eclipse.ui.handlers;version="0.0.0",
   org.eclipse.ui.plugin;version="0.0.0"
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.emfstore.ui.search
diff --git a/bundles/org.eclipse.emf.ecp.emfstore.ui.search/pom.xml b/bundles/org.eclipse.emf.ecp.emfstore.ui.search/pom.xml
index 6c84b18..7b6c94b 100644
--- a/bundles/org.eclipse.emf.ecp.emfstore.ui.search/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.emfstore.ui.search/pom.xml
@@ -5,11 +5,11 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emf.ecp.emfstore.ui.search</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 </project>
diff --git a/bundles/org.eclipse.emf.ecp.emfstore.ui/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.emfstore.ui/META-INF/MANIFEST.MF
index 2ce310d..e02a68e 100644
--- a/bundles/org.eclipse.emf.ecp.emfstore.ui/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.emfstore.ui/META-INF/MANIFEST.MF
@@ -2,21 +2,21 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: ECP EMFStore UI Provider
 Bundle-SymbolicName: org.eclipse.emf.ecp.emfstore.ui;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Activator: org.eclipse.emf.ecp.emfstore.internal.ui.Activator
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emf.ecp.emfstore.internal.ui;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.emfstore.internal.ui.handler;version="1.16.0";x-friends:="org.eclipse.emf.ecp.emfstore.ui.e4,org.eclipse.emf.ecp.emfstore.ui.e3",
-  org.eclipse.emf.ecp.emfstore.internal.ui.observer;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.emfstore.internal.ui.property;version="1.16.0";x-internal:=true
+Export-Package: org.eclipse.emf.ecp.emfstore.internal.ui;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.emfstore.internal.ui.handler;version="1.17.0";x-friends:="org.eclipse.emf.ecp.emfstore.ui.e4,org.eclipse.emf.ecp.emfstore.ui.e3",
+ org.eclipse.emf.ecp.emfstore.internal.ui.observer;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.emfstore.internal.ui.property;version="1.17.0";x-internal:=true
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.4.0,4.0.0)",
-  org.eclipse.core.expressions;bundle-version="[3.4.0,4.0.0)",
-  org.eclipse.emf.ecp.emfstore.core;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.ui;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.emfstore.client;bundle-version="[1.0.0,2.0.0)",
-  org.eclipse.emf.emfstore.client.ui;bundle-version="[1.0.0,2.0.0)",
-  org.eclipse.net4j.util;bundle-version="[3.0.0,4.0.0)",
-  org.eclipse.emf.ecp.common;bundle-version="[1.16.0,1.17.0)"
+ org.eclipse.core.expressions;bundle-version="[3.4.0,4.0.0)",
+ org.eclipse.emf.ecp.emfstore.core;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.ui;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.emfstore.client;bundle-version="[1.0.0,2.0.0)",
+ org.eclipse.emf.emfstore.client.ui;bundle-version="[1.0.0,2.0.0)",
+ org.eclipse.net4j.util;bundle-version="[3.0.0,4.0.0)",
+ org.eclipse.emf.ecp.common;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Import-Package: org.eclipse.core.commands;version="0.0.0",
   org.eclipse.jface.action;version="0.0.0",
@@ -31,3 +31,4 @@
   org.eclipse.swt.layout;version="0.0.0",
   org.eclipse.swt.widgets;version="0.0.0"
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.emfstore.ui
diff --git a/bundles/org.eclipse.emf.ecp.emfstore.ui/pom.xml b/bundles/org.eclipse.emf.ecp.emfstore.ui/pom.xml
index e778209..832fb4c 100644
--- a/bundles/org.eclipse.emf.ecp.emfstore.ui/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.emfstore.ui/pom.xml
@@ -5,11 +5,11 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emf.ecp.emfstore.ui</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 </project>
diff --git a/bundles/org.eclipse.emf.ecp.examplemodel.ui/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.examplemodel.ui/META-INF/MANIFEST.MF
index 3b60525..4f04cb1 100644
--- a/bundles/org.eclipse.emf.ecp.examplemodel.ui/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.examplemodel.ui/META-INF/MANIFEST.MF
@@ -2,10 +2,11 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: UI Contributions for the Bowling example model
 Bundle-SymbolicName: org.eclipse.emf.ecp.examplemodel.ui;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Require-Bundle: org.eclipse.emf.ecp.edit;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.edit.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.emfstore.examplemodel;bundle-version="[1.3.0,2.0.0)",
-  org.eclipse.emf.ecp.view.model.provider.xmi;bundle-version="[1.16.0,1.17.0)"
+Require-Bundle: org.eclipse.emf.ecp.edit;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.edit.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.emfstore.examplemodel;bundle-version="[1.3.0,2.0.0)",
+ org.eclipse.emf.ecp.view.model.provider.xmi;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Automatic-Module-Name: org.eclipse.emf.ecp.examplemodel.ui
diff --git a/bundles/org.eclipse.emf.ecp.examplemodel.ui/pom.xml b/bundles/org.eclipse.emf.ecp.examplemodel.ui/pom.xml
index 46a5ecf..22d7121 100644
--- a/bundles/org.eclipse.emf.ecp.examplemodel.ui/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.examplemodel.ui/pom.xml
@@ -5,11 +5,11 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emf.ecp.examplemodel.ui</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 </project>
diff --git a/bundles/org.eclipse.emf.ecp.examplemodel.ui/view/league.view b/bundles/org.eclipse.emf.ecp.examplemodel.ui/view/league.view
index 79a3bee..6a444d7 100644
--- a/bundles/org.eclipse.emf.ecp.examplemodel.ui/view/league.view
+++ b/bundles/org.eclipse.emf.ecp.examplemodel.ui/view/league.view
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="ASCII"?>
-<org.eclipse.emf.ecp.view.model:View xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:org.eclipse.emf.ecp.view.model="http://org/eclipse/emf/ecp/view/model/170" xmlns:org.eclipse.emf.ecp.view.table.model="http://org/eclipse/emf/ecp/view/table/model/150" xmi:id="_muqHoEWAEeWfKJaajyNdyA">
+<org.eclipse.emf.ecp.view.model:View xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:org.eclipse.emf.ecp.view.model="http://org/eclipse/emf/ecp/view/model/1170" xmlns:org.eclipse.emf.ecp.view.table.model="http://org/eclipse/emf/ecp/view/table/model/150" xmi:id="_muqHoEWAEeWfKJaajyNdyA">
   <rootEClass href="http://org/eclipse/example/bowling#//League"/>
   <children xsi:type="org.eclipse.emf.ecp.view.model:Control" xmi:id="_muqHoUWAEeWfKJaajyNdyA" name="Control name">
     <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_muqHokWAEeWfKJaajyNdyA">
diff --git a/bundles/org.eclipse.emf.ecp.examplemodel.ui/view/matchup.view b/bundles/org.eclipse.emf.ecp.examplemodel.ui/view/matchup.view
index d48935e..4f7c51f 100644
--- a/bundles/org.eclipse.emf.ecp.examplemodel.ui/view/matchup.view
+++ b/bundles/org.eclipse.emf.ecp.examplemodel.ui/view/matchup.view
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="ASCII"?>
-<org.eclipse.emf.ecp.view.model:View xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:org.eclipse.emf.ecp.view.model="http://org/eclipse/emf/ecp/view/model/170" xmlns:org.eclipse.emf.ecp.view.table.model="http://org/eclipse/emf/ecp/view/table/model/150" xmi:id="_j-cp0EWAEeWfKJaajyNdyA">
+<org.eclipse.emf.ecp.view.model:View xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:org.eclipse.emf.ecp.view.model="http://org/eclipse/emf/ecp/view/model/1170" xmlns:org.eclipse.emf.ecp.view.table.model="http://org/eclipse/emf/ecp/view/table/model/150" xmi:id="_j-cp0EWAEeWfKJaajyNdyA">
   <rootEClass href="http://org/eclipse/example/bowling#//Matchup"/>
   <children xsi:type="org.eclipse.emf.ecp.view.table.model:TableControl" xmi:id="_j-fGEEWAEeWfKJaajyNdyA">
     <domainModelReference xsi:type="org.eclipse.emf.ecp.view.table.model:TableDomainModelReference" xmi:id="_j-fGEUWAEeWfKJaajyNdyA">
diff --git a/bundles/org.eclipse.emf.ecp.examplemodel.ui/view/tournament.view b/bundles/org.eclipse.emf.ecp.examplemodel.ui/view/tournament.view
index 4928f19..63cd5da 100644
--- a/bundles/org.eclipse.emf.ecp.examplemodel.ui/view/tournament.view
+++ b/bundles/org.eclipse.emf.ecp.examplemodel.ui/view/tournament.view
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="ASCII"?>
-<org.eclipse.emf.ecp.view.model:View xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:org.eclipse.emf.ecp.view.model="http://org/eclipse/emf/ecp/view/model/170" xmlns:org.eclipse.emf.ecp.view.table.model="http://org/eclipse/emf/ecp/view/table/model/150" xmi:id="_qzdZ0EWAEeWfKJaajyNdyA">
+<org.eclipse.emf.ecp.view.model:View xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:org.eclipse.emf.ecp.view.model="http://org/eclipse/emf/ecp/view/model/1170" xmlns:org.eclipse.emf.ecp.view.table.model="http://org/eclipse/emf/ecp/view/table/model/150" xmi:id="_qzdZ0EWAEeWfKJaajyNdyA">
   <rootEClass href="http://org/eclipse/example/bowling#//Tournament"/>
   <children xsi:type="org.eclipse.emf.ecp.view.table.model:TableControl" xmi:id="_qzdZ0UWAEeWfKJaajyNdyA">
     <domainModelReference xsi:type="org.eclipse.emf.ecp.view.table.model:TableDomainModelReference" xmi:id="_qzdZ0kWAEeWfKJaajyNdyA">
diff --git a/bundles/org.eclipse.emf.ecp.explorereditorbridge/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.explorereditorbridge/META-INF/MANIFEST.MF
index c1b86f0..c4da582 100644
--- a/bundles/org.eclipse.emf.ecp.explorereditorbridge/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.explorereditorbridge/META-INF/MANIFEST.MF
@@ -2,30 +2,31 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: ECP Explorer Editor Bridge
 Bundle-SymbolicName: org.eclipse.emf.ecp.explorereditorbridge;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Activator: org.eclipse.emf.ecp.explorereditorbridge.internal.Activator
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emf.ecp.explorereditorbridge.internal;version="1.16.0";x-friends:="org.eclipse.emf.ecp.ui.view.test"
+Export-Package: org.eclipse.emf.ecp.explorereditorbridge.internal;version="1.17.0";x-friends:="org.eclipse.emf.ecp.ui.view.test"
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.4.0,4.0.0)",
-  org.eclipse.emf.ecp.ui;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.databinding;bundle-version="[1.2.0,2.0.0)",
-  org.eclipse.emf.ecp.edit;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.editor.e3;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.context;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.ui.view;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.edit.swt;bundle-version="[1.16.0,1.17.0)"
+ org.eclipse.emf.ecp.ui;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.databinding;bundle-version="[1.2.0,2.0.0)",
+ org.eclipse.emf.ecp.edit;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.editor.e3;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.context;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.ui.view;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.edit.swt;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Import-Package: org.eclipse.core.commands;version="0.0.0",
-  org.eclipse.emf.ecp.edit.internal.swt;version="[1.16.0,1.17.0)",
-  org.eclipse.emf.edit.ui.provider;version="0.0.0",
-  org.eclipse.jface.dialogs;version="0.0.0",
-  org.eclipse.jface.viewers;version="0.0.0",
-  org.eclipse.jface.window;version="0.0.0",
-  org.eclipse.jface.wizard;version="0.0.0",
-  org.eclipse.swt;version="0.0.0",
-  org.eclipse.swt.layout;version="0.0.0",
-  org.eclipse.swt.widgets;version="0.0.0",
-  org.eclipse.ui;ui.workbench=split;version="0.0.0",
-  org.eclipse.ui.dialogs;ui.workbench=split;version="0.0.0",
-  org.eclipse.ui.plugin;version="0.0.0"
+ org.eclipse.emf.ecp.edit.internal.swt;version="[1.17.0,1.18.0]",
+ org.eclipse.emf.edit.ui.provider;version="0.0.0",
+ org.eclipse.jface.dialogs;version="0.0.0",
+ org.eclipse.jface.viewers;version="0.0.0",
+ org.eclipse.jface.window;version="0.0.0",
+ org.eclipse.jface.wizard;version="0.0.0",
+ org.eclipse.swt;version="0.0.0",
+ org.eclipse.swt.layout;version="0.0.0",
+ org.eclipse.swt.widgets;version="0.0.0",
+ org.eclipse.ui;version="0.0.0";ui.workbench=split,
+ org.eclipse.ui.dialogs;version="0.0.0";ui.workbench=split,
+ org.eclipse.ui.plugin;version="0.0.0"
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.explorereditorbridge
diff --git a/bundles/org.eclipse.emf.ecp.explorereditorbridge/pom.xml b/bundles/org.eclipse.emf.ecp.explorereditorbridge/pom.xml
index 9007501..ce6ccb3 100644
--- a/bundles/org.eclipse.emf.ecp.explorereditorbridge/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.explorereditorbridge/pom.xml
@@ -5,12 +5,12 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emf.ecp.explorereditorbridge</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
   
   <properties>
diff --git a/bundles/org.eclipse.emf.ecp.graphiti.core/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.graphiti.core/META-INF/MANIFEST.MF
index 53ec303..2853a9f 100644
--- a/bundles/org.eclipse.emf.ecp.graphiti.core/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.graphiti.core/META-INF/MANIFEST.MF
@@ -21,3 +21,4 @@
   org.eclipse.ui.views.properties;ui.views=split;version="0.0.0",
   org.eclipse.ui.views.properties.tabbed;version="0.0.0"
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.graphiti.core
diff --git a/bundles/org.eclipse.emf.ecp.graphiti.integration/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.graphiti.integration/META-INF/MANIFEST.MF
index 8b06fef..3978f84 100644
--- a/bundles/org.eclipse.emf.ecp.graphiti.integration/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.graphiti.integration/META-INF/MANIFEST.MF
@@ -16,6 +16,7 @@
   org.eclipse.emf.edit.ui;bundle-version="2.8.0",
   org.eclipse.emf.databinding.edit;bundle-version="1.2.0",
   org.eclipse.emf.ecp.graphiti.core;bundle-version="[1.7.0,2.0.0)",
-  org.eclipse.emf.ecp.ui;bundle-version="[1.16.0,1.17.0)"
+  org.eclipse.emf.ecp.ui;bundle-version="[1.15.0,2.0.0)"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.graphiti.integration
diff --git a/bundles/org.eclipse.emf.ecp.ide.editor.view.templatebridge/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.ide.editor.view.templatebridge/META-INF/MANIFEST.MF
index 7a9967c..12d9c0e 100644
--- a/bundles/org.eclipse.emf.ecp.ide.editor.view.templatebridge/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.ide.editor.view.templatebridge/META-INF/MANIFEST.MF
@@ -2,14 +2,15 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: EMFForms View Editor to Template Editor Integration
 Bundle-SymbolicName: org.eclipse.emf.ecp.ide.editor.view.templatebridge;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emf.ecp.internal.ide.editor.view.templatebridge.actions;version="1.16.0";x-internal:=true
-Require-Bundle: org.eclipse.emf.ecp.view.treemasterdetail.ui.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecore;bundle-version="[2.8.0,3.0.0)",
-  org.eclipse.ui.workbench;bundle-version="[3.7.0,4.0.0)",
-  org.eclipse.ui;bundle-version="[3.0.0,4.0.0)",
-  org.eclipse.emf.ecp.view.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.template.tooling;bundle-version="[1.16.0,1.17.0)"
+Export-Package: org.eclipse.emf.ecp.internal.ide.editor.view.templatebridge.actions;version="1.17.0";x-internal:=true
+Require-Bundle: org.eclipse.emf.ecp.view.treemasterdetail.ui.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecore;bundle-version="[2.8.0,3.0.0)",
+ org.eclipse.ui.workbench;bundle-version="[3.7.0,4.0.0)",
+ org.eclipse.ui;bundle-version="[3.0.0,4.0.0)",
+ org.eclipse.emf.ecp.view.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.template.tooling;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.ide.editor.view.templatebridge
diff --git a/bundles/org.eclipse.emf.ecp.ide.editor.view.templatebridge/pom.xml b/bundles/org.eclipse.emf.ecp.ide.editor.view.templatebridge/pom.xml
index e10738b..310f6ef 100644
--- a/bundles/org.eclipse.emf.ecp.ide.editor.view.templatebridge/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.ide.editor.view.templatebridge/pom.xml
@@ -5,11 +5,11 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emf.ecp.ide.editor.view.templatebridge</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 </project>
diff --git a/bundles/org.eclipse.emf.ecp.ide.editor.view/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.ide.editor.view/META-INF/MANIFEST.MF
index 4dede81..8468e30 100644
--- a/bundles/org.eclipse.emf.ecp.ide.editor.view/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.ide.editor.view/META-INF/MANIFEST.MF
@@ -2,26 +2,27 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: IDE View Editor
 Bundle-SymbolicName: org.eclipse.emf.ecp.ide.editor.view;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Activator: org.eclipse.emf.ecp.ide.editor.view.Activator
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emf.ecp.ide.editor.view;version="1.16.0";x-friends:="org.eclipse.emf.ecp.view.model.preview.e3",
-  org.eclipse.emf.ecp.ide.editor.view.messages;version="1.16.0";x-internal:=true
+Export-Package: org.eclipse.emf.ecp.ide.editor.view;version="1.17.0";x-friends:="org.eclipse.emf.ecp.view.model.preview.e3",
+ org.eclipse.emf.ecp.ide.editor.view.messages;version="1.17.0";x-internal:=true
 Require-Bundle: org.eclipse.ui;bundle-version="[3.0.0,4.0.0)",
-  org.eclipse.core.runtime;bundle-version="[3.4.0,4.0.0)",
-  org.eclipse.emf.ecp.ui.view.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.ui.ide;bundle-version="[3.9.1,4.0.0)",
-  org.eclipse.emf.ecp.ide.view.service;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.ide.util;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.core.resources;bundle-version="[3.7.0,4.0.0)",
-  org.eclipse.emf.ecp.ui;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.edit;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecore.xmi;bundle-version="[2.7.0,3.0.0)",
-  org.eclipse.jface;bundle-version="[3.7.0,4.0.0)",
-  org.eclipse.emf.ecore;bundle-version="[2.7.0,3.0.0)",
-  org.eclipse.emf.ecp.view.migrator;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.edit.ui;bundle-version="[2.7.0,3.0.0)"
+ org.eclipse.core.runtime;bundle-version="[3.4.0,4.0.0)",
+ org.eclipse.emf.ecp.ui.view.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.ui.ide;bundle-version="[3.9.1,4.0.0)",
+ org.eclipse.emf.ecp.ide.view.service;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.ide.util;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.core.resources;bundle-version="[3.7.0,4.0.0)",
+ org.eclipse.emf.ecp.ui;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.edit;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecore.xmi;bundle-version="[2.7.0,3.0.0)",
+ org.eclipse.jface;bundle-version="[3.7.0,4.0.0)",
+ org.eclipse.emf.ecore;bundle-version="[2.7.0,3.0.0)",
+ org.eclipse.emf.ecp.view.migrator;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.edit.ui;bundle-version="[2.7.0,3.0.0)"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
-Import-Package: org.eclipse.emfforms.spi.common.report;version="[1.16.0,1.17.0)"
+Import-Package: org.eclipse.emfforms.spi.common.report;version="[1.17.0,1.18.0]"
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.ide.editor.view
diff --git a/bundles/org.eclipse.emf.ecp.ide.editor.view/pom.xml b/bundles/org.eclipse.emf.ecp.ide.editor.view/pom.xml
index e6e2f76..ec8e1e9 100644
--- a/bundles/org.eclipse.emf.ecp.ide.editor.view/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.ide.editor.view/pom.xml
@@ -5,11 +5,11 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emf.ecp.ide.editor.view</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 </project>
diff --git a/bundles/org.eclipse.emf.ecp.ide.editor.view/src/org/eclipse/emf/ecp/ide/editor/view/ViewEditorPart.java b/bundles/org.eclipse.emf.ecp.ide.editor.view/src/org/eclipse/emf/ecp/ide/editor/view/ViewEditorPart.java
index e54a510..e9e6da7 100644
--- a/bundles/org.eclipse.emf.ecp.ide.editor.view/src/org/eclipse/emf/ecp/ide/editor/view/ViewEditorPart.java
+++ b/bundles/org.eclipse.emf.ecp.ide.editor.view/src/org/eclipse/emf/ecp/ide/editor/view/ViewEditorPart.java
@@ -36,16 +36,14 @@
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.EObject;
 import org.eclipse.emf.ecore.EPackage;
-import org.eclipse.emf.ecore.EStructuralFeature;
 import org.eclipse.emf.ecore.resource.Resource;
 import org.eclipse.emf.ecore.resource.ResourceSet;
 import org.eclipse.emf.ecore.util.EcoreUtil;
-import org.eclipse.emf.ecore.util.FeatureMap;
 import org.eclipse.emf.ecore.xmi.XMLResource;
-import org.eclipse.emf.ecore.xml.type.AnyType;
 import org.eclipse.emf.ecp.edit.spi.EMFDeleteServiceImpl;
 import org.eclipse.emf.ecp.ide.editor.view.messages.Messages;
 import org.eclipse.emf.ecp.ide.spi.util.EcoreHelper;
+import org.eclipse.emf.ecp.ide.spi.util.ViewModelHelper;
 import org.eclipse.emf.ecp.ide.view.service.ViewModelEditorCallback;
 import org.eclipse.emf.ecp.ui.view.ECPRendererException;
 import org.eclipse.emf.ecp.ui.view.swt.DefaultReferenceService;
@@ -173,7 +171,7 @@
 		}
 
 		try {
-			registerEcore();
+			registerEcore(resource);
 			// BEGIN SUPRESS CATCH EXCEPTION
 		} catch (final Exception e) {
 			Activator.getDefault().getLog().log(new Status(IStatus.ERROR, Activator.PLUGIN_ID, e.getMessage(), e));
@@ -307,7 +305,18 @@
 					Messages.WorkspaceMigrationDialog_Description);
 				final List<URI> toMigrate = new ArrayList<URI>();
 				if (migrateWorkspace) {
-					toMigrate.addAll(getWorkspaceURIsToMigrate(resourceURI));
+					for (final URI uri : getWorkspaceURIsToMigrate(resourceURI)) {
+						final Resource workspaceResource = editingDomain.getResourceSet().getResource(uri, true);
+						try {
+							registerEcore(workspaceResource);
+							toMigrate.add(uri);
+						} catch (final IOException ex) {
+							Activator.getDefault().getLog()
+								.log(new Status(IStatus.ERROR, Activator.PLUGIN_ID, MessageFormat.format(
+									Messages.ViewEditorPart_WorkspaceMigrationError,
+									resourceURI.toString()), ex));
+						}
+					}
 				}
 				toMigrate.add(resourceURI);
 				final IRunnableWithProgress runnable = new IRunnableWithProgress() {
@@ -367,7 +376,14 @@
 		}
 		try {
 			final ArrayList<URI> urIsToMigrate = workspaceMigrator.getURIsToMigrate();
-			urIsToMigrate.remove(resourceURI);
+
+			// Get the editors's resource uri as a uri with an absolute file path and remove it from the workspace URIs
+			// to migrate in order to avoid migrating it two times (this would throw an exception).
+			final IResource findMember = ResourcesPlugin.getWorkspace().getRoot()
+				.findMember(resourceURI.toPlatformString(true));
+			final String osString = findMember.getLocation().toOSString();
+			urIsToMigrate.remove(URI.createFileURI(osString));
+
 			if (urIsToMigrate.size() > 0) {
 				final Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
 				final ListSelectionDialog migrationDialog = MigrationDialogHelper
@@ -432,12 +448,13 @@
 		showView();
 	}
 
-	private void registerEcore() throws IOException {
-		final String ecorePath = getEcorePath();
-		if (ecorePath == null) {
-			return;
+	private void registerEcore(Resource viewResource) throws IOException {
+		for (final String ecorePath : ViewModelHelper.getEcorePaths(viewResource)) {
+			if (ecorePath == null) {
+				return;
+			}
+			EcoreHelper.registerEcore(ecorePath);
 		}
-		EcoreHelper.registerEcore(ecorePath);
 	}
 
 	private void saveChangedView(VView view) {
@@ -545,27 +562,6 @@
 		return (VView) eObject;
 	}
 
-	private String getEcorePath() {
-		if (resource == null || resource.getContents().isEmpty()) {
-			return null;
-		}
-		final EObject eObject = resource.getContents().get(0);
-		if (VView.class.isInstance(eObject)) {
-			return VView.class.cast(eObject).getEcorePath();
-		}
-		if (AnyType.class.isInstance(eObject)) {
-			/* view model has older ns uri */
-			final FeatureMap anyAttribute = AnyType.class.cast(eObject).getAnyAttribute();
-			for (int i = 0; i < anyAttribute.size(); i++) {
-				final EStructuralFeature feature = anyAttribute.getEStructuralFeature(i);
-				if ("ecorePath".equals(feature.getName())) { //$NON-NLS-1$
-					return (String) anyAttribute.getValue(i);
-				}
-			}
-		}
-		return null;
-	}
-
 	/**
 	 * Runnable to check if a migration is needed.
 	 *
@@ -621,13 +617,14 @@
 				render.getSWTControl().dispose();
 			}
 
-			final String ecorePath = getView().getEcorePath();
-			if (ecorePath != null) {
-				try {
-					EcoreHelper.registerEcore(ecorePath);
-				} catch (final IOException e) {
-					Activator.getDefault().getLog()
-						.log(new Status(IStatus.ERROR, Activator.PLUGIN_ID, e.getMessage(), e));
+			for (final String ecorePath : getView().getEcorePaths()) {
+				if (ecorePath != null) {
+					try {
+						EcoreHelper.registerEcore(ecorePath);
+					} catch (final IOException e) {
+						Activator.getDefault().getLog()
+							.log(new Status(IStatus.ERROR, Activator.PLUGIN_ID, e.getMessage(), e));
+					}
 				}
 			}
 
@@ -680,13 +677,14 @@
 
 				final VView view = getView();
 
-				if ((view.getEcorePath() == null
-					|| ResourcesPlugin.getWorkspace().getRoot().findMember(view.getEcorePath()) == null)
+				// TODO: remove? Should probably handled manually by the user instead.
+				if ((view.getEcorePaths().isEmpty()
+					|| ResourcesPlugin.getWorkspace().getRoot().findMember(view.getEcorePaths().get(0)) == null)
 					&& view.getRootEClass() != null && view.getRootEClass().eIsProxy()) {
 
 					final String selectedECorePath = selectEcoreFromWorkspace();
 					if (selectedECorePath != null) {
-						view.setEcorePath(selectedECorePath);
+						view.getEcorePaths().add(selectedECorePath);
 						saveChangedView(view);
 						reloadViewModel();
 					}
diff --git a/bundles/org.eclipse.emf.ecp.ide.editor.view/src/org/eclipse/emf/ecp/ide/editor/view/messages/Messages.java b/bundles/org.eclipse.emf.ecp.ide.editor.view/src/org/eclipse/emf/ecp/ide/editor/view/messages/Messages.java
index 3ee15f4..55cab33 100644
--- a/bundles/org.eclipse.emf.ecp.ide.editor.view/src/org/eclipse/emf/ecp/ide/editor/view/messages/Messages.java
+++ b/bundles/org.eclipse.emf.ecp.ide.editor.view/src/org/eclipse/emf/ecp/ide/editor/view/messages/Messages.java
@@ -37,6 +37,7 @@
 	public static String ViewEditorPart_No;
 	public static String ViewEditorPart_ViewCannotBeDisplayed;
 	public static String ViewEditorPart_Warning;
+	public static String ViewEditorPart_WorkspaceMigrationError;
 	public static String ViewEditorPart_Yes;
 	public static String MigrationDialog_Title;
 	public static String MigrationDialog_Description;
diff --git a/bundles/org.eclipse.emf.ecp.ide.editor.view/src/org/eclipse/emf/ecp/ide/editor/view/messages/messages.properties b/bundles/org.eclipse.emf.ecp.ide.editor.view/src/org/eclipse/emf/ecp/ide/editor/view/messages/messages.properties
index af48d24..929edbf 100644
--- a/bundles/org.eclipse.emf.ecp.ide.editor.view/src/org/eclipse/emf/ecp/ide/editor/view/messages/messages.properties
+++ b/bundles/org.eclipse.emf.ecp.ide.editor.view/src/org/eclipse/emf/ecp/ide/editor/view/messages/messages.properties
@@ -1,22 +1,23 @@
 ViewEditorPart_EcoreSelectionTitle=Select Ecore
-ViewEditorPart_EcoreSelectionValidation=Please Select a File
-ViewEditorPart_EditorViewChanged=The Ecore of your ViewModel just changed. This change is not reflected in this View Model Editor. Do you want to reload now?
-ViewEditorPart_InvalidVView=The input resource does not contain a valid VView. Please check your file.
-ViewEditorPart_invalidVView_noRootEClass=The input resource does not contain a valid VView: The Root EClass of the VView is not set.
-ViewEditorPart_invalidVView_rootEClassNotInPackage=The Root EClass "{0}" of the VView could not be resolved. The registered EPackage "{1}" with namespace URI "{2}" does not contain the Root EClass. Maybe you use the wrong version of the Ecore?
-ViewEditorPart_invalidVView_rootEClassPackageNotResolved=The Root EClass "{0}" of the VView could not be resolved. Please make sure to register the Ecore providing the EPackage with namespace URI "{1}".
-ViewEditorPart_LoadedPartyDescription=The view model could only be loaded partly. Probably it needs migration. Please visit our migration guide for more information.
-ViewEditorPart_LoadedPartyTitle=Problems while loading the view model.
-ViewEditorPart_MigrationErrorText1=An error occurred during migration of the model. 
+ViewEditorPart_EcoreSelectionValidation=Please select an Ecore file
+ViewEditorPart_EditorViewChanged=An Ecore referenced by this view was modified. Eventual changes are not reflected in this editor yet. Do you want to reload this view?
+ViewEditorPart_InvalidVView=The file you attempted to open does not seem to contain a valid EMFForms view model. \nEither your EMF Forms tooling is outdated or the view model is corrupted. 
+ViewEditorPart_invalidVView_noRootEClass=The file you attempted to open does not seem to contain a valid EMFForms view model.\nReason: The VView element refers to an invalid root Eclass.
+ViewEditorPart_invalidVView_rootEClassNotInPackage=The root EClass "{0}" of the VView element could not be resolved.\nReason: The registered EPackage "{1}" with namespace URI "{2}" does not contain the root EClass.\nPerhaps your Ecore does not fit to your view model?
+ViewEditorPart_invalidVView_rootEClassPackageNotResolved=The root EClass "{0}" of the VView could not be resolved using package "{1}".\nMake sure you registered the EPackage containing your EClass with its respective namespace URI.
+ViewEditorPart_LoadedPartyDescription=The view model loading incomplete. A migration to the latest view model version might be required.\nPlease visit our migration guide for more information.
+ViewEditorPart_LoadedPartyTitle=Problems while loading the view model
+ViewEditorPart_MigrationErrorText1=An error occurred during the migration of the view model. 
 ViewEditorPart_MigrationErrorText2=More information on the error can be found in the error log.
-ViewEditorPart_MigrationErrorTitle=EMF Forms View Model Migration Error
-ViewEditorPart_MigrationQuestion=Your view model is not up to date. Do you want to migrate it to the latest version?
-ViewEditorPart_MigrationTitle=Migrate?
+ViewEditorPart_MigrationErrorTitle=EMF Forms view model migration error
+ViewEditorPart_MigrationQuestion=This view model was saved using an older version of EMF Forms.\nAutomatically migrate to the latest version?
+ViewEditorPart_MigrationTitle=Perform migration to the latest view model version?
 ViewEditorPart_No=No
-ViewEditorPart_ViewCannotBeDisplayed=Current view cannot be displayed. Reason: {0}
+ViewEditorPart_ViewCannotBeDisplayed=This view cannot be displayed.\nReason: {0}
 ViewEditorPart_Warning=Warning
+ViewEditorPart_WorkspaceMigrationError=View Model at workspace location {0} cannot be migrated because one or more of its referenced Ecores could not be registered.
 ViewEditorPart_Yes=Yes
-MigrationDialog_Title=Migrate View Models from workspace
-MigrationDialog_Description=The following view models from your workspace also need to be migrated. \n\nPlease select the view models to migrate:
-WorkspaceMigrationDialog_Title = Migrate View Models from workspace
-WorkspaceMigrationDialog_Description = Should the workspace be checked for other viewmodels that need to be migrated?
+MigrationDialog_Title=Migrate view models from workspace
+MigrationDialog_Description=The following view models in your workspace also need migration.\n\nPlease select the view models to migrate:
+WorkspaceMigrationDialog_Title=Migrate view models from workspace
+WorkspaceMigrationDialog_Description=Scan workspace for other view models to be migrated?
\ No newline at end of file
diff --git a/bundles/org.eclipse.emf.ecp.ide.editor.viewmodel/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.ide.editor.viewmodel/META-INF/MANIFEST.MF
index c3efa34..9961daa 100644
--- a/bundles/org.eclipse.emf.ecp.ide.editor.viewmodel/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.ide.editor.viewmodel/META-INF/MANIFEST.MF
@@ -2,7 +2,8 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Viewmodel
 Bundle-SymbolicName: org.eclipse.emf.ecp.ide.editor.viewmodel;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Require-Bundle: org.eclipse.emf.ecp.view.model.provider.xmi;bundle-version="[1.16.0,1.17.0)"
+Require-Bundle: org.eclipse.emf.ecp.view.model.provider.xmi;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Automatic-Module-Name: org.eclipse.emf.ecp.ide.editor.viewmodel
diff --git a/bundles/org.eclipse.emf.ecp.ide.editor.viewmodel/plugin.xml b/bundles/org.eclipse.emf.ecp.ide.editor.viewmodel/plugin.xml
index 4968b62..d7328bb 100644
--- a/bundles/org.eclipse.emf.ecp.ide.editor.viewmodel/plugin.xml
+++ b/bundles/org.eclipse.emf.ecp.ide.editor.viewmodel/plugin.xml
@@ -3,6 +3,7 @@
 <plugin>
    <extension
          point="org.eclipse.emf.ecp.view.model.provider.xmi.file">
+
       <file
             filePath="viewmodel/view.viewmodel">
       </file>
@@ -23,6 +24,9 @@
       <file
             filePath="viewmodel/TableDomainModelReference.view">
       </file>
+      <file
+            filePath="viewmodel/ReadOnlyColumnConfiguration.view">
+      </file>
    </extension>
 
 </plugin>
diff --git a/bundles/org.eclipse.emf.ecp.ide.editor.viewmodel/pom.xml b/bundles/org.eclipse.emf.ecp.ide.editor.viewmodel/pom.xml
index cd6b629..1188c80 100644
--- a/bundles/org.eclipse.emf.ecp.ide.editor.viewmodel/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.ide.editor.viewmodel/pom.xml
@@ -5,11 +5,11 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emf.ecp.ide.editor.viewmodel</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 </project>
diff --git a/bundles/org.eclipse.emf.ecp.ide.editor.viewmodel/viewmodel/MappingDomainModelReference.view b/bundles/org.eclipse.emf.ecp.ide.editor.viewmodel/viewmodel/MappingDomainModelReference.view
index a5135da..f09f60f 100644
--- a/bundles/org.eclipse.emf.ecp.ide.editor.viewmodel/viewmodel/MappingDomainModelReference.view
+++ b/bundles/org.eclipse.emf.ecp.ide.editor.viewmodel/viewmodel/MappingDomainModelReference.view
@@ -1,9 +1,9 @@
 <?xml version="1.0" encoding="ASCII"?>
-<org.eclipse.emf.ecp.view.model:View xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:org.eclipse.emf.ecp.view.model="http://org/eclipse/emf/ecp/view/model/170" xmi:id="_9-nfwEWDEeWAUvDRzOysOA">
+<org.eclipse.emf.ecp.view.model:View xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:org.eclipse.emf.ecp.view.model="http://org/eclipse/emf/ecp/view/model/1170" xmi:id="_9-nfwEWDEeWAUvDRzOysOA">
   <rootEClass href="http://www.eclipse.org/emf/ecp/view/mappingdmr/model#//MappingDomainModelReference"/>
   <children xsi:type="org.eclipse.emf.ecp.view.model:Control" xmi:id="_9-pU8EWDEeWAUvDRzOysOA" name="Control domainModelEFeature">
     <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_9-pU8UWDEeWAUvDRzOysOA">
-      <domainModelEFeature xsi:type="ecore:EReference" href="http://org/eclipse/emf/ecp/view/model/170#//FeaturePathDomainModelReference/domainModelEFeature"/>
+      <domainModelEFeature xsi:type="ecore:EReference" href="http://org/eclipse/emf/ecp/view/model/1170#//FeaturePathDomainModelReference/domainModelEFeature"/>
     </domainModelReference>
   </children>
   <children xsi:type="org.eclipse.emf.ecp.view.model:Control" xmi:id="_9-pU8kWDEeWAUvDRzOysOA" name="Control mappedClass">
diff --git a/bundles/org.eclipse.emf.ecp.ide.editor.viewmodel/viewmodel/ReadOnlyColumnConfiguration.view b/bundles/org.eclipse.emf.ecp.ide.editor.viewmodel/viewmodel/ReadOnlyColumnConfiguration.view
new file mode 100644
index 0000000..ec17235
--- /dev/null
+++ b/bundles/org.eclipse.emf.ecp.ide.editor.viewmodel/viewmodel/ReadOnlyColumnConfiguration.view
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="ASCII"?>
+<org.eclipse.emf.ecp.view.model:View xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:org.eclipse.emf.ecp.view.model="http://org/eclipse/emf/ecp/view/model/1170" xmlns:org.eclipse.emfforms.view.annotation.model="http://org/eclipse/emf/emfforms/view/annotation/model" xmi:id="_GjkCUC3jEeiYLY-qTYJXTA" name="ReadOnlyColumnConfiguration">
+  <rootEClass href="http://org/eclipse/emf/ecp/view/table/model/150#//ReadOnlyColumnConfiguration"/>
+  <children xsi:type="org.eclipse.emf.ecp.view.model:Control" xmi:id="_Gj1vIC3jEeiYLY-qTYJXTA" name="Control columnDomainReferences">
+    <attachments xsi:type="org.eclipse.emfforms.view.annotation.model:Annotation" xmi:id="_ILzLcC3jEeiYLY-qTYJXTA" key="hideAddNewButton"/>
+    <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_Gj1vIS3jEeiYLY-qTYJXTA">
+      <domainModelEFeature xsi:type="ecore:EReference" href="http://org/eclipse/emf/ecp/view/table/model/150#//ReadOnlyColumnConfiguration/columnDomainReferences"/>
+    </domainModelReference>
+  </children>
+</org.eclipse.emf.ecp.view.model:View>
diff --git a/bundles/org.eclipse.emf.ecp.ide.editor.viewmodel/viewmodel/TableControl.view b/bundles/org.eclipse.emf.ecp.ide.editor.viewmodel/viewmodel/TableControl.view
index 5d08e12..ee299fd 100644
--- a/bundles/org.eclipse.emf.ecp.ide.editor.viewmodel/viewmodel/TableControl.view
+++ b/bundles/org.eclipse.emf.ecp.ide.editor.viewmodel/viewmodel/TableControl.view
@@ -1,24 +1,24 @@
 <?xml version="1.0" encoding="ASCII"?>
-<org.eclipse.emf.ecp.view.model:View xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:org.eclipse.emf.ecp.view.model="http://org/eclipse/emf/ecp/view/model/170" xmlns:org.eclipse.emf.ecp.view.rule.model="http://org/eclipse/emf/ecp/view/rule/model" xmi:id="_pXvpwEWAEeWfKJaajyNdyA">
+<org.eclipse.emf.ecp.view.model:View xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:org.eclipse.emf.ecp.view.model="http://org/eclipse/emf/ecp/view/model/1170" xmlns:org.eclipse.emf.ecp.view.rule.model="http://org/eclipse/emf/ecp/view/rule/model" xmi:id="_pXvpwEWAEeWfKJaajyNdyA">
   <rootEClass href="http://org/eclipse/emf/ecp/view/table/model/150#//TableControl"/>
   <children xsi:type="org.eclipse.emf.ecp.view.model:Control" xmi:id="_pXvpwUWAEeWfKJaajyNdyA" name="Control name">
     <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_pXvpwkWAEeWfKJaajyNdyA">
-      <domainModelEFeature xsi:type="ecore:EAttribute" href="http://org/eclipse/emf/ecp/view/model/170#//Element/name"/>
+      <domainModelEFeature xsi:type="ecore:EAttribute" href="http://org/eclipse/emf/ecp/view/model/1170#//Element/name"/>
     </domainModelReference>
   </children>
   <children xsi:type="org.eclipse.emf.ecp.view.model:Control" xmi:id="_pXvpw0WAEeWfKJaajyNdyA" name="Control readonly">
     <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_pXvpxEWAEeWfKJaajyNdyA">
-      <domainModelEFeature xsi:type="ecore:EAttribute" href="http://org/eclipse/emf/ecp/view/model/170#//Element/readonly"/>
+      <domainModelEFeature xsi:type="ecore:EAttribute" href="http://org/eclipse/emf/ecp/view/model/1170#//Element/readonly"/>
     </domainModelReference>
   </children>
   <children xsi:type="org.eclipse.emf.ecp.view.model:Control" xmi:id="_pXvpxUWAEeWfKJaajyNdyA" name="Control labelAlignment">
     <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_pXvpxkWAEeWfKJaajyNdyA">
-      <domainModelEFeature xsi:type="ecore:EAttribute" href="http://org/eclipse/emf/ecp/view/model/170#//Control/labelAlignment"/>
+      <domainModelEFeature xsi:type="ecore:EAttribute" href="http://org/eclipse/emf/ecp/view/model/1170#//Control/labelAlignment"/>
     </domainModelReference>
   </children>
   <children xsi:type="org.eclipse.emf.ecp.view.model:Control" xmi:id="_pXvpx0WAEeWfKJaajyNdyA" name="Control domainModelReference">
     <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_pXvpyEWAEeWfKJaajyNdyA">
-      <domainModelEFeature xsi:type="ecore:EReference" href="http://org/eclipse/emf/ecp/view/model/170#//Control/domainModelReference"/>
+      <domainModelEFeature xsi:type="ecore:EReference" href="http://org/eclipse/emf/ecp/view/model/1170#//Control/domainModelReference"/>
     </domainModelReference>
   </children>
   <children xsi:type="org.eclipse.emf.ecp.view.model:Control" xmi:id="_pXvpyUWAEeWfKJaajyNdyA" name="Control addRemoveDisabled">
@@ -34,7 +34,7 @@
   <children xsi:type="org.eclipse.emf.ecp.view.model:Control" xmi:id="_twMc4ND8EeelrbphwT5uew" name="Control columns">
     <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_twMc4dD8EeelrbphwT5uew">
       <domainModelEFeature xsi:type="ecore:EReference" href="http://org/eclipse/emf/ecp/view/table/model/150#//TableDomainModelReference/columnDomainModelReferences"/>
-      <domainModelEReferencePath href="http://org/eclipse/emf/ecp/view/model/170#//Control/domainModelReference"/>
+      <domainModelEReferencePath href="http://org/eclipse/emf/ecp/view/model/1170#//Control/domainModelReference"/>
     </domainModelReference>
   </children>
   <children xsi:type="org.eclipse.emf.ecp.view.model:Control" xmi:id="_twMc4tD8EeelrbphwT5uew" name="Control detailEditing">
diff --git a/bundles/org.eclipse.emf.ecp.ide.editor.viewmodel/viewmodel/TableDomainModelReference.view b/bundles/org.eclipse.emf.ecp.ide.editor.viewmodel/viewmodel/TableDomainModelReference.view
index 4278887..a90fe67 100644
--- a/bundles/org.eclipse.emf.ecp.ide.editor.viewmodel/viewmodel/TableDomainModelReference.view
+++ b/bundles/org.eclipse.emf.ecp.ide.editor.viewmodel/viewmodel/TableDomainModelReference.view
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="ASCII"?>
-<org.eclipse.emf.ecp.view.model:View xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:org.eclipse.emf.ecp.view.model="http://org/eclipse/emf/ecp/view/model/170" xmi:id="_qGkeoEWAEeWfKJaajyNdyA">
+<org.eclipse.emf.ecp.view.model:View xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:org.eclipse.emf.ecp.view.model="http://org/eclipse/emf/ecp/view/model/1170" xmi:id="_qGkeoEWAEeWfKJaajyNdyA">
   <rootEClass href="http://org/eclipse/emf/ecp/view/table/model/150#//TableDomainModelReference"/>
   <children xsi:type="org.eclipse.emf.ecp.view.model:Control" xmi:id="_qGkeoUWAEeWfKJaajyNdyA" name="Control domainModelEFeature">
     <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_qGkeokWAEeWfKJaajyNdyA">
diff --git a/bundles/org.eclipse.emf.ecp.ide.editor.viewmodel/viewmodel/View_detail.view b/bundles/org.eclipse.emf.ecp.ide.editor.viewmodel/viewmodel/View_detail.view
new file mode 100644
index 0000000..2ed2191
--- /dev/null
+++ b/bundles/org.eclipse.emf.ecp.ide.editor.viewmodel/viewmodel/View_detail.view
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="ASCII"?>
+<org.eclipse.emf.ecp.view.model:View xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:org.eclipse.emf.ecp.view.model="http://org/eclipse/emf/ecp/view/model/1170" xmi:id="_YBO4YBFuEeiGqtClCQBJBQ" name="View">
+  <ecorePaths>/org.eclipse.emf.ecp.view.model/model/view.ecore</ecorePaths>
+  <rootEClass href="http://org/eclipse/emf/ecp/view/model/1170#//View"/>
+  <children xsi:type="org.eclipse.emf.ecp.view.model:Control" xmi:id="_YBW0MBFuEeiGqtClCQBJBQ" name="Control name">
+    <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_YBW0MRFuEeiGqtClCQBJBQ">
+      <domainModelEFeature xsi:type="ecore:EAttribute" href="http://org/eclipse/emf/ecp/view/model/1170#//Element/name"/>
+    </domainModelReference>
+  </children>
+  <children xsi:type="org.eclipse.emf.ecp.view.model:Control" xmi:id="_YBW0MhFuEeiGqtClCQBJBQ" name="Control label">
+    <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_YBW0MxFuEeiGqtClCQBJBQ">
+      <domainModelEFeature xsi:type="ecore:EAttribute" href="http://org/eclipse/emf/ecp/view/model/1170#//Element/label"/>
+    </domainModelReference>
+  </children>
+  <children xsi:type="org.eclipse.emf.ecp.view.model:Control" xmi:id="_YBW0NBFuEeiGqtClCQBJBQ" name="Control visible">
+    <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_YBW0NRFuEeiGqtClCQBJBQ">
+      <domainModelEFeature xsi:type="ecore:EAttribute" href="http://org/eclipse/emf/ecp/view/model/1170#//Element/visible"/>
+    </domainModelReference>
+  </children>
+  <children xsi:type="org.eclipse.emf.ecp.view.model:Control" xmi:id="_YBW0NhFuEeiGqtClCQBJBQ" name="Control enabled">
+    <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_YBW0NxFuEeiGqtClCQBJBQ">
+      <domainModelEFeature xsi:type="ecore:EAttribute" href="http://org/eclipse/emf/ecp/view/model/1170#//Element/enabled"/>
+    </domainModelReference>
+  </children>
+  <children xsi:type="org.eclipse.emf.ecp.view.model:Control" xmi:id="_YBW0OBFuEeiGqtClCQBJBQ" name="Control readonly">
+    <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_YBW0ORFuEeiGqtClCQBJBQ">
+      <domainModelEFeature xsi:type="ecore:EAttribute" href="http://org/eclipse/emf/ecp/view/model/1170#//Element/readonly"/>
+    </domainModelReference>
+  </children>
+  <children xsi:type="org.eclipse.emf.ecp.view.model:Control" xmi:id="_YBW0OhFuEeiGqtClCQBJBQ" name="Control diagnostic">
+    <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_YBW0OxFuEeiGqtClCQBJBQ">
+      <domainModelEFeature xsi:type="ecore:EReference" href="http://org/eclipse/emf/ecp/view/model/1170#//Element/diagnostic"/>
+    </domainModelReference>
+  </children>
+  <children xsi:type="org.eclipse.emf.ecp.view.model:Control" xmi:id="_YBW0PBFuEeiGqtClCQBJBQ" name="Control attachments">
+    <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_YBW0PRFuEeiGqtClCQBJBQ">
+      <domainModelEFeature xsi:type="ecore:EReference" href="http://org/eclipse/emf/ecp/view/model/1170#//Element/attachments"/>
+    </domainModelReference>
+  </children>
+  <children xsi:type="org.eclipse.emf.ecp.view.model:Control" xmi:id="_YBW0PhFuEeiGqtClCQBJBQ" name="Control uuid">
+    <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_YBW0PxFuEeiGqtClCQBJBQ">
+      <domainModelEFeature xsi:type="ecore:EAttribute" href="http://org/eclipse/emf/ecp/view/model/1170#//Element/uuid"/>
+    </domainModelReference>
+  </children>
+  <children xsi:type="org.eclipse.emf.ecp.view.model:Control" xmi:id="_YBW0QBFuEeiGqtClCQBJBQ" name="Control rootEClass">
+    <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_YBW0QRFuEeiGqtClCQBJBQ">
+      <domainModelEFeature xsi:type="ecore:EReference" href="http://org/eclipse/emf/ecp/view/model/1170#//View/rootEClass"/>
+    </domainModelReference>
+  </children>
+  <children xsi:type="org.eclipse.emf.ecp.view.model:Control" xmi:id="_YBW0QhFuEeiGqtClCQBJBQ" name="Control children">
+    <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_YBW0QxFuEeiGqtClCQBJBQ">
+      <domainModelEFeature xsi:type="ecore:EReference" href="http://org/eclipse/emf/ecp/view/model/1170#//View/children"/>
+    </domainModelReference>
+  </children>
+  <children xsi:type="org.eclipse.emf.ecp.view.model:Control" xmi:id="_YBW0RBFuEeiGqtClCQBJBQ" name="Control ecorePath">
+    <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_YBW0RRFuEeiGqtClCQBJBQ">
+      <domainModelEFeature xsi:type="ecore:EAttribute" href="http://org/eclipse/emf/ecp/view/model/1170#//View/ecorePaths"/>
+    </domainModelReference>
+  </children>
+  <children xsi:type="org.eclipse.emf.ecp.view.model:Control" xmi:id="_YBW0RhFuEeiGqtClCQBJBQ" name="Control loadingProperties">
+    <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_YBW0RxFuEeiGqtClCQBJBQ">
+      <domainModelEFeature xsi:type="ecore:EReference" href="http://org/eclipse/emf/ecp/view/model/1170#//View/loadingProperties"/>
+    </domainModelReference>
+  </children>
+</org.eclipse.emf.ecp.view.model:View>
diff --git a/bundles/org.eclipse.emf.ecp.ide.editor.viewmodel/viewmodel/control.view b/bundles/org.eclipse.emf.ecp.ide.editor.viewmodel/viewmodel/control.view
index 1048289..8b1ab13 100644
--- a/bundles/org.eclipse.emf.ecp.ide.editor.viewmodel/viewmodel/control.view
+++ b/bundles/org.eclipse.emf.ecp.ide.editor.viewmodel/viewmodel/control.view
@@ -1,24 +1,25 @@
 <?xml version="1.0" encoding="ASCII"?>
-<org.eclipse.emf.ecp.view.model:View xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:org.eclipse.emf.ecp.view.model="http://org/eclipse/emf/ecp/view/model/170" xmi:id="_WB0E8EWCEeWfKJaajyNdyA" ecorePath="/org.eclipse.emf.ecp.view.model/model/view.ecore">
-  <rootEClass href="http://org/eclipse/emf/ecp/view/model/170#//Control"/>
+<org.eclipse.emf.ecp.view.model:View xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:org.eclipse.emf.ecp.view.model="http://org/eclipse/emf/ecp/view/model/1170" xmi:id="_WB0E8EWCEeWfKJaajyNdyA">
+  <ecorePaths>/org.eclipse.emf.ecp.view.model/model/view.ecore</ecorePaths>
+  <rootEClass href="http://org/eclipse/emf/ecp/view/model/1170#//Control"/>
   <children xsi:type="org.eclipse.emf.ecp.view.model:Control" xmi:id="_WB0E8UWCEeWfKJaajyNdyA" name="Control name">
     <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_WB0E8kWCEeWfKJaajyNdyA">
-      <domainModelEFeature xsi:type="ecore:EAttribute" href="http://org/eclipse/emf/ecp/view/model/170#//Element/name"/>
+      <domainModelEFeature xsi:type="ecore:EAttribute" href="http://org/eclipse/emf/ecp/view/model/1170#//Element/name"/>
     </domainModelReference>
   </children>
   <children xsi:type="org.eclipse.emf.ecp.view.model:Control" xmi:id="_WB0E80WCEeWfKJaajyNdyA" name="Control readonly">
     <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_WB0E9EWCEeWfKJaajyNdyA">
-      <domainModelEFeature xsi:type="ecore:EAttribute" href="http://org/eclipse/emf/ecp/view/model/170#//Element/readonly"/>
+      <domainModelEFeature xsi:type="ecore:EAttribute" href="http://org/eclipse/emf/ecp/view/model/1170#//Element/readonly"/>
     </domainModelReference>
   </children>
   <children xsi:type="org.eclipse.emf.ecp.view.model:Control" xmi:id="_WB0E9UWCEeWfKJaajyNdyA" name="Control labelAlignment">
     <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_WB0E9kWCEeWfKJaajyNdyA">
-      <domainModelEFeature xsi:type="ecore:EAttribute" href="http://org/eclipse/emf/ecp/view/model/170#//Control/labelAlignment"/>
+      <domainModelEFeature xsi:type="ecore:EAttribute" href="http://org/eclipse/emf/ecp/view/model/1170#//Control/labelAlignment"/>
     </domainModelReference>
   </children>
   <children xsi:type="org.eclipse.emf.ecp.view.model:Control" xmi:id="_WB0E90WCEeWfKJaajyNdyA" name="Control domainModelReference">
     <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_WB0E-EWCEeWfKJaajyNdyA">
-      <domainModelEFeature xsi:type="ecore:EReference" href="http://org/eclipse/emf/ecp/view/model/170#//Control/domainModelReference"/>
+      <domainModelEFeature xsi:type="ecore:EReference" href="http://org/eclipse/emf/ecp/view/model/1170#//Control/domainModelReference"/>
     </domainModelReference>
   </children>
 </org.eclipse.emf.ecp.view.model:View>
diff --git a/bundles/org.eclipse.emf.ecp.ide.editor.viewmodel/viewmodel/group.view b/bundles/org.eclipse.emf.ecp.ide.editor.viewmodel/viewmodel/group.view
index 6623f3a..b0b40f4 100644
--- a/bundles/org.eclipse.emf.ecp.ide.editor.viewmodel/viewmodel/group.view
+++ b/bundles/org.eclipse.emf.ecp.ide.editor.viewmodel/viewmodel/group.view
@@ -1,14 +1,14 @@
 <?xml version="1.0" encoding="ASCII"?>
-<org.eclipse.emf.ecp.view.model:View xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:org.eclipse.emf.ecp.view.model="http://org/eclipse/emf/ecp/view/model/170" xmlns:org.eclipse.emf.ecp.view.stack.model="http://org/eclipse/emf/ecp/view/stack/model" xmi:id="_mfOkgEWAEeWfKJaajyNdyA">
+<org.eclipse.emf.ecp.view.model:View xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:org.eclipse.emf.ecp.view.model="http://org/eclipse/emf/ecp/view/model/1170" xmlns:org.eclipse.emf.ecp.view.stack.model="http://org/eclipse/emf/ecp/view/stack/model" xmi:id="_mfOkgEWAEeWfKJaajyNdyA">
   <rootEClass href="http://org/eclipse/emf/ecp/view/group/model#//Group"/>
   <children xsi:type="org.eclipse.emf.ecp.view.model:Control" xmi:id="_mfPLkEWAEeWfKJaajyNdyA" name="Control name">
     <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_mfPLkUWAEeWfKJaajyNdyA">
-      <domainModelEFeature xsi:type="ecore:EAttribute" href="http://org/eclipse/emf/ecp/view/model/170#//Element/name"/>
+      <domainModelEFeature xsi:type="ecore:EAttribute" href="http://org/eclipse/emf/ecp/view/model/1170#//Element/name"/>
     </domainModelReference>
   </children>
   <children xsi:type="org.eclipse.emf.ecp.view.model:Control" xmi:id="_mfPLkkWAEeWfKJaajyNdyA" name="Control readonly">
     <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_mfPLk0WAEeWfKJaajyNdyA">
-      <domainModelEFeature xsi:type="ecore:EAttribute" href="http://org/eclipse/emf/ecp/view/model/170#//Element/readonly"/>
+      <domainModelEFeature xsi:type="ecore:EAttribute" href="http://org/eclipse/emf/ecp/view/model/1170#//Element/readonly"/>
     </domainModelReference>
   </children>
   <children xsi:type="org.eclipse.emf.ecp.view.model:Control" xmi:id="_OwTEgP0JEea0gu9ZCWtkiA" name="tooltip">
diff --git a/bundles/org.eclipse.emf.ecp.ide.editor.viewmodel/viewmodel/view.viewmodel b/bundles/org.eclipse.emf.ecp.ide.editor.viewmodel/viewmodel/view.viewmodel
index d10c8d9..3e51357 100644
--- a/bundles/org.eclipse.emf.ecp.ide.editor.viewmodel/viewmodel/view.viewmodel
+++ b/bundles/org.eclipse.emf.ecp.ide.editor.viewmodel/viewmodel/view.viewmodel
@@ -1,24 +1,30 @@
-<?xml version="1.0" encoding="ASCII"?>

-<org.eclipse.emf.ecp.view.model:View xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:org.eclipse.emf.ecp.view.model="http://org/eclipse/emf/ecp/view/model/170" xmlns:org.eclipse.emf.ecp.view.treemasterview.model="http://org/eclipse/emf/ecp/view/treemasterview/model" xmi:id="_70vJgEWAEeWfKJaajyNdyA">

-  <rootEClass href="http://org/eclipse/emf/ecp/view/model/170#//View"/>

-  <children xsi:type="org.eclipse.emf.ecp.view.treemasterview.model:TreeMasterDetail" xmi:id="_70vJgUWAEeWfKJaajyNdyA">

-    <detailView xmi:id="_70vJgkWAEeWfKJaajyNdyA">

-      <rootEClass href="http://org/eclipse/emf/ecp/view/model/170#//View"/>

-      <children xsi:type="org.eclipse.emf.ecp.view.model:Control" xmi:id="_70vJg0WAEeWfKJaajyNdyA" name="Control name">

-        <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_70vJhEWAEeWfKJaajyNdyA">

-          <domainModelEFeature xsi:type="ecore:EAttribute" href="http://org/eclipse/emf/ecp/view/model/170#//Element/name"/>

-        </domainModelReference>

-      </children>

-      <children xsi:type="org.eclipse.emf.ecp.view.model:Control" xmi:id="_70vJhUWAEeWfKJaajyNdyA" name="Control readonly">

-        <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_70vJhkWAEeWfKJaajyNdyA">

-          <domainModelEFeature xsi:type="ecore:EAttribute" href="http://org/eclipse/emf/ecp/view/model/170#//Element/readonly"/>

-        </domainModelReference>

-      </children>

-      <children xsi:type="org.eclipse.emf.ecp.view.model:Control" xmi:id="_70vJh0WAEeWfKJaajyNdyA" name="Control rootEClass">

-        <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_70vJiEWAEeWfKJaajyNdyA">

-          <domainModelEFeature xsi:type="ecore:EReference" href="http://org/eclipse/emf/ecp/view/model/170#//View/rootEClass"/>

-        </domainModelReference>

-      </children>

-    </detailView>

-  </children>

-</org.eclipse.emf.ecp.view.model:View>

+<?xml version="1.0" encoding="ASCII"?>
+<org.eclipse.emf.ecp.view.model:View xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:org.eclipse.emf.ecp.view.model="http://org/eclipse/emf/ecp/view/model/1170" xmlns:org.eclipse.emf.ecp.view.treemasterview.model="http://org/eclipse/emf/ecp/view/treemasterview/model" xmi:id="_70vJgEWAEeWfKJaajyNdyA">
+  <ecorePaths>/org.eclipse.emf.ecp.view.model/model/view.ecore</ecorePaths>
+  <rootEClass href="http://org/eclipse/emf/ecp/view/model/1170#//View"/>
+  <children xsi:type="org.eclipse.emf.ecp.view.treemasterview.model:TreeMasterDetail" xmi:id="_70vJgUWAEeWfKJaajyNdyA">
+    <detailView xmi:id="_70vJgkWAEeWfKJaajyNdyA">
+      <rootEClass href="http://org/eclipse/emf/ecp/view/model/1170#//View"/>
+      <children xsi:type="org.eclipse.emf.ecp.view.model:Control" xmi:id="_70vJg0WAEeWfKJaajyNdyA" name="Control name">
+        <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_70vJhEWAEeWfKJaajyNdyA">
+          <domainModelEFeature xsi:type="ecore:EAttribute" href="http://org/eclipse/emf/ecp/view/model/1170#//Element/name"/>
+        </domainModelReference>
+      </children>
+      <children xsi:type="org.eclipse.emf.ecp.view.model:Control" xmi:id="_70vJhUWAEeWfKJaajyNdyA" name="Control readonly">
+        <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_70vJhkWAEeWfKJaajyNdyA">
+          <domainModelEFeature xsi:type="ecore:EAttribute" href="http://org/eclipse/emf/ecp/view/model/1170#//Element/readonly"/>
+        </domainModelReference>
+      </children>
+      <children xsi:type="org.eclipse.emf.ecp.view.model:Control" xmi:id="_70vJh0WAEeWfKJaajyNdyA" name="Control rootEClass">
+        <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_70vJiEWAEeWfKJaajyNdyA">
+          <domainModelEFeature xsi:type="ecore:EReference" href="http://org/eclipse/emf/ecp/view/model/1170#//View/rootEClass"/>
+        </domainModelReference>
+      </children>
+      <children xsi:type="org.eclipse.emf.ecp.view.model:Control" xmi:id="_YBW0RBFuEeiGqtClCQBJBQ" name="Control ecorePath">
+	    <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_YBW0RRFuEeiGqtClCQBJBQ">
+	      <domainModelEFeature xsi:type="ecore:EAttribute" href="http://org/eclipse/emf/ecp/view/model/1170#//View/ecorePaths"/>
+	    </domainModelReference>
+	  </children>
+    </detailView>
+  </children>
+</org.eclipse.emf.ecp.view.model:View>
diff --git a/bundles/org.eclipse.emf.ecp.ide.migration/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.ide.migration/META-INF/MANIFEST.MF
index d52ef7e..2f520fc 100644
--- a/bundles/org.eclipse.emf.ecp.ide.migration/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.ide.migration/META-INF/MANIFEST.MF
@@ -2,17 +2,18 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: ViewModel Migration Tooling
 Bundle-SymbolicName: org.eclipse.emf.ecp.ide.migration;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Activator: org.eclipse.emf.ecp.ide.internal.migration.Activator
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emf.ecp.ide.internal.migration;version="1.16.0";x-internal:=true
+Export-Package: org.eclipse.emf.ecp.ide.internal.migration;version="1.17.0";x-internal:=true
 Require-Bundle: org.eclipse.ui;bundle-version="[3.0.0,4.0.0)",
-  org.eclipse.core.resources;bundle-version="[3.4.0,4.0.0)",
-  org.eclipse.core.runtime;bundle-version="[3.4.0,4.0.0)",
-  org.eclipse.emf.edit;bundle-version="[2.8.0,3.0.0)",
-  org.eclipse.emf.ecp.ui.view;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.ui.validation;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.ide.util;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.common.validation;bundle-version="[1.16.0,1.17.0)"
+ org.eclipse.core.resources;bundle-version="[3.4.0,4.0.0)",
+ org.eclipse.core.runtime;bundle-version="[3.4.0,4.0.0)",
+ org.eclipse.emf.edit;bundle-version="[2.8.0,3.0.0)",
+ org.eclipse.emf.ecp.ui.view;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.ui.validation;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.ide.util;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.common.validation;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.ide.migration
diff --git a/bundles/org.eclipse.emf.ecp.ide.migration/pom.xml b/bundles/org.eclipse.emf.ecp.ide.migration/pom.xml
index 9f588f5..79a53ca 100644
--- a/bundles/org.eclipse.emf.ecp.ide.migration/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.ide.migration/pom.xml
@@ -5,11 +5,11 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emf.ecp.ide.migration</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 </project>
diff --git a/bundles/org.eclipse.emf.ecp.ide.util/.settings/.api_filters b/bundles/org.eclipse.emf.ecp.ide.util/.settings/.api_filters
new file mode 100644
index 0000000..c008216
--- /dev/null
+++ b/bundles/org.eclipse.emf.ecp.ide.util/.settings/.api_filters
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<component id="org.eclipse.emf.ecp.ide.util" version="2">
+    <resource path="src/org/eclipse/emf/ecp/ide/spi/util/EcoreHelper.java" type="org.eclipse.emf.ecp.ide.spi.util.EcoreHelper">
+        <filter comment="SPI change 1.17.0" id="338792546">
+            <message_arguments>
+                <message_argument value="org.eclipse.emf.ecp.ide.spi.util.EcoreHelper"/>
+                <message_argument value="getOtherRelatedWorkspacePaths(String)"/>
+            </message_arguments>
+        </filter>
+    </resource>
+    <resource path="src/org/eclipse/emf/ecp/ide/spi/util/ViewModelHelper.java" type="org.eclipse.emf.ecp.ide.spi.util.ViewModelHelper">
+        <filter comment="SPI change 1.17.0" id="338792546">
+            <message_arguments>
+                <message_argument value="org.eclipse.emf.ecp.ide.spi.util.ViewModelHelper"/>
+                <message_argument value="loadView(IFile, Collection&lt;String&gt;)"/>
+            </message_arguments>
+        </filter>
+        <filter id="1143996420">
+            <message_arguments>
+                <message_argument value="loadView(IFile, Collection&lt;String&gt;)"/>
+            </message_arguments>
+        </filter>
+    </resource>
+</component>
diff --git a/bundles/org.eclipse.emf.ecp.ide.util/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.ide.util/META-INF/MANIFEST.MF
index 9c50dc8..a471310 100644
--- a/bundles/org.eclipse.emf.ecp.ide.util/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.ide.util/META-INF/MANIFEST.MF
@@ -2,17 +2,19 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: ECP Ecore Helper Plugin
 Bundle-SymbolicName: org.eclipse.emf.ecp.ide.util;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Activator: org.eclipse.emf.ecp.ide.internal.Activator
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emf.ecp.ide.internal;version="1.16.0";x-internal:=true,
- org.eclipse.emf.ecp.ide.spi.util;version="1.16.0",
- org.eclipse.emf.ecp.internal.ide.util.messages;version="1.16.0";x-internal:=true
+Export-Package: org.eclipse.emf.ecp.ide.internal;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.ide.spi.util;version="1.17.0",
+ org.eclipse.emf.ecp.internal.ide.util.messages;version="1.17.0";x-internal:=true
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.4.0,4.0.0)",
-  org.eclipse.emf.ecore.xmi;bundle-version="[2.7.0,3.0.0)",
-  org.eclipse.core.resources;bundle-version="[3.7.0,4.0.0)",
-  org.eclipse.emf.ecp.view.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.edit;bundle-version="[2.8.0,3.0.0)",
-  org.eclipse.emfforms.common;bundle-version="[1.16.0,1.17.0)"
+ org.eclipse.emf.ecore.xmi;bundle-version="[2.7.0,3.0.0)",
+ org.eclipse.core.resources;bundle-version="[3.7.0,4.0.0)",
+ org.eclipse.emf.ecp.view.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.edit;bundle-version="[2.8.0,3.0.0)",
+ org.eclipse.emfforms.common;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecore;bundle-version="[2.8.0,3.0.0)"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.ide.util
diff --git a/bundles/org.eclipse.emf.ecp.ide.util/pom.xml b/bundles/org.eclipse.emf.ecp.ide.util/pom.xml
index 70ca099..92afa9d 100644
--- a/bundles/org.eclipse.emf.ecp.ide.util/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.ide.util/pom.xml
@@ -5,11 +5,11 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emf.ecp.ide.util</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 </project>
diff --git a/bundles/org.eclipse.emf.ecp.ide.util/src/org/eclipse/emf/ecp/ide/spi/util/ViewModelHelper.java b/bundles/org.eclipse.emf.ecp.ide.util/src/org/eclipse/emf/ecp/ide/spi/util/ViewModelHelper.java
index 9be28ed..02776b2 100644
--- a/bundles/org.eclipse.emf.ecp.ide.util/src/org/eclipse/emf/ecp/ide/spi/util/ViewModelHelper.java
+++ b/bundles/org.eclipse.emf.ecp.ide.util/src/org/eclipse/emf/ecp/ide/spi/util/ViewModelHelper.java
@@ -13,8 +13,11 @@
 
 import java.io.FileNotFoundException;
 import java.io.IOException;
+import java.util.Arrays;
 import java.util.Collection;
+import java.util.Collections;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 
 import org.eclipse.core.resources.IFile;
@@ -23,13 +26,17 @@
 import org.eclipse.emf.common.notify.AdapterFactory;
 import org.eclipse.emf.common.util.URI;
 import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
 import org.eclipse.emf.ecore.EPackage;
 import org.eclipse.emf.ecore.EPackage.Descriptor;
 import org.eclipse.emf.ecore.EPackage.Registry;
+import org.eclipse.emf.ecore.EStructuralFeature;
 import org.eclipse.emf.ecore.resource.Resource;
 import org.eclipse.emf.ecore.resource.ResourceSet;
 import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
 import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.emf.ecore.util.FeatureMap;
+import org.eclipse.emf.ecore.xml.type.AnyType;
 import org.eclipse.emf.ecp.view.spi.model.VView;
 import org.eclipse.emf.ecp.view.spi.model.VViewPackage;
 import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain;
@@ -109,8 +116,9 @@
 		view.setRootEClass(ec);
 		view.setName(selectedEClass.getName());
 		// Update the VView-EClass mapping
-		if (selectedEcore != null) {
-			view.setEcorePath(selectedEcore.getFullPath().toString());
+		if (selectedEcore != null
+			&& !view.getEcorePaths().contains(selectedEcore.getFullPath().toString())) {
+			view.getEcorePaths().add(selectedEcore.getFullPath().toString());
 		}
 
 		// Save the contents of the resource to the file system.
@@ -133,31 +141,26 @@
 	public static VView loadView(IFile file, Collection<String> registeredEcores) throws IOException {
 		final String path = file.getLocation().toString();
 		final VView view = loadView(path);
+		registerReferencedEcores(view, registeredEcores);
 		if (view != null && !viewIsResolved(view)) {
-			return tryResolve(view, path, registeredEcores);
+			EcoreUtil.resolveAll(view);
 		}
-
 		return view;
 	}
 
-	private static VView tryResolve(VView view, String path, Collection<String> registeredEcores) throws IOException {
-		EcoreUtil.resolveAll(view);
-		if (viewIsResolved(view)) {
-			return view;
+	private static void registerReferencedEcores(VView view, Collection<String> registeredEcores)
+		throws IOException {
+		if (view == null || view.getEcorePaths() == null) {
+			return;
 		}
+		for (final String ecorePath : view.getEcorePaths()) {
+			if (ResourcesPlugin.getWorkspace().getRoot().findMember(ecorePath) == null) {
+				throw new FileNotFoundException(ecorePath);
+			}
 
-		if (view.getEcorePath() == null
-			|| ResourcesPlugin.getWorkspace().getRoot().findMember(view.getEcorePath()) == null) {
-			throw new FileNotFoundException(path);
+			EcoreHelper.registerEcore(ecorePath);
+			registeredEcores.add(ecorePath);
 		}
-
-		EcoreHelper.registerEcore(view.getEcorePath());
-		registeredEcores.add(view.getEcorePath());
-		final VView reloadView = loadView(path);
-		if (reloadView != null && !viewIsResolved(reloadView)) {
-			EcoreUtil.resolveAll(reloadView);
-		}
-		return reloadView;
 	}
 
 	/**
@@ -170,6 +173,9 @@
 		return !view.getRootEClass().eIsProxy();
 	}
 
+	/**
+	 * @since 1.16
+	 */
 	private static VView loadView(String path) {
 		final ResourceSet resourceSet = new ResourceSetImpl();
 		final URI fileURI = URI.createFileURI(path);
@@ -179,4 +185,41 @@
 		}
 		return null;
 	}
+
+	/**
+	 * Extract the list of Ecore paths from a view model resource.
+	 *
+	 * @param resource the resource to extract the paths from
+	 * @return list of Ecore paths
+	 *
+	 * @since 1.17
+	 */
+	@SuppressWarnings("unchecked")
+	public static List<String> getEcorePaths(Resource resource) {
+		if (resource == null || resource.getContents().isEmpty()) {
+			return Collections.emptyList();
+		}
+		final EObject eObject = resource.getContents().get(0);
+		if (VView.class.isInstance(eObject)) {
+			return VView.class.cast(eObject).getEcorePaths();
+		}
+		if (AnyType.class.isInstance(eObject)) {
+			/* view model has older ns uri */
+			final FeatureMap anyAttribute = AnyType.class.cast(eObject).getAnyAttribute();
+			for (int i = 0; i < anyAttribute.size(); i++) {
+				final EStructuralFeature feature = anyAttribute.getEStructuralFeature(i);
+
+				// up to 1.16.0
+				if ("ecorePath".equals(feature.getName())) { //$NON-NLS-1$
+					return Arrays.asList(new String[] { (String) anyAttribute.getValue(i) });
+				}
+				// from 1.17.0
+				if ("ecorePaths".equals(feature.getName())) { //$NON-NLS-1$
+					return (List<String>) anyAttribute.getValue(i);
+				}
+
+			}
+		}
+		return Collections.emptyList();
+	}
 }
diff --git a/bundles/org.eclipse.emf.ecp.ide.view.service/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.ide.view.service/META-INF/MANIFEST.MF
index 43a1b62..70ee12b 100644
--- a/bundles/org.eclipse.emf.ecp.ide.view.service/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.ide.view.service/META-INF/MANIFEST.MF
@@ -2,19 +2,20 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: IDE ViewModel Service
 Bundle-SymbolicName: org.eclipse.emf.ecp.ide.view.service
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Activator: org.eclipse.emf.ecp.ide.view.service.Activator
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emf.ecp.ide.view.internal.service;version="1.16.0";x-friends:="org.eclipse.emf.ecp.ui.view.editor.controls",
-  org.eclipse.emf.ecp.ide.view.service;version="1.16.0";
-   x-friends:="org.eclipse.emf.ecp.ide.editor.view,
-    org.eclipse.emf.ecp.ui.view.editor.controls,
-    org.eclipse.emf.ecp.view.model.editor,
-    org.eclipse.emf.ecp.view.model.project.installer"
-Require-Bundle: org.eclipse.emf.ecp.view.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.core.resources;bundle-version="[3.7.0,4.0.0)",
-  org.eclipse.emf.ecp.ide.util;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.core.runtime;bundle-version="[3.4.0,4.0.0)"
+Export-Package: org.eclipse.emf.ecp.ide.view.internal.service;version="1.17.0";x-friends:="org.eclipse.emf.ecp.ui.view.editor.controls",
+ org.eclipse.emf.ecp.ide.view.service;version="1.17.0";
+  x-friends:="org.eclipse.emf.ecp.ide.editor.view,
+   org.eclipse.emf.ecp.ui.view.editor.controls,
+   org.eclipse.emf.ecp.view.model.editor,
+   org.eclipse.emf.ecp.view.model.project.installer"
+Require-Bundle: org.eclipse.emf.ecp.view.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.core.resources;bundle-version="[3.7.0,4.0.0)",
+ org.eclipse.emf.ecp.ide.util;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.core.runtime;bundle-version="[3.4.0,4.0.0)"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Service-Component: OSGI-INF/ideviewmdoelregistry.xml
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.ide.view.service
diff --git a/bundles/org.eclipse.emf.ecp.ide.view.service/pom.xml b/bundles/org.eclipse.emf.ecp.ide.view.service/pom.xml
index a9e053b..60af445 100644
--- a/bundles/org.eclipse.emf.ecp.ide.view.service/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.ide.view.service/pom.xml
@@ -5,11 +5,11 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emf.ecp.ide.view.service</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 </project>
diff --git a/bundles/org.eclipse.emf.ecp.ide.view.service/src/org/eclipse/emf/ecp/ide/view/internal/service/IDEViewModelRegistryImpl.java b/bundles/org.eclipse.emf.ecp.ide.view.service/src/org/eclipse/emf/ecp/ide/view/internal/service/IDEViewModelRegistryImpl.java
index bc2ffc0..2271219 100644
--- a/bundles/org.eclipse.emf.ecp.ide.view.service/src/org/eclipse/emf/ecp/ide/view/internal/service/IDEViewModelRegistryImpl.java
+++ b/bundles/org.eclipse.emf.ecp.ide.view.service/src/org/eclipse/emf/ecp/ide/view/internal/service/IDEViewModelRegistryImpl.java
@@ -14,6 +14,7 @@
 import java.io.IOException;
 import java.util.LinkedHashMap;
 import java.util.LinkedHashSet;
+import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
@@ -48,8 +49,12 @@
 	@Override
 	public void register(String ecorePath, VView viewModel) {
 
-		final Set<String> otherRelatedWorkspaceURIs = EcoreHelper
-			.getOtherRelatedWorkspacePaths(viewModel.getEcorePath());
+		final Set<String> otherRelatedWorkspaceURIs = new LinkedHashSet<String>();
+		for (final String viewModelEcorePath : viewModel.getEcorePaths()) {
+			otherRelatedWorkspaceURIs.addAll(EcoreHelper
+				.getOtherRelatedWorkspacePaths(viewModelEcorePath));
+		}
+
 		final Set<String> otherRelatedWorkspacePaths = new LinkedHashSet<String>();
 		for (final String uri : otherRelatedWorkspaceURIs) {
 			final URI platformURI = URI.createURI(uri);
@@ -84,8 +89,8 @@
 					}
 					for (final VView view : ecoreViewMapping.get(ecorePath)) {
 						final Set<String> ecorePathsToCheck = new LinkedHashSet<String>();
-						if (view.getEcorePath() != null) {
-							ecorePathsToCheck.add(view.getEcorePath());
+						if (view.getEcorePaths() != null) {
+							ecorePathsToCheck.addAll(view.getEcorePaths());
 						}
 						if (viewToRelatedEcorePaths.containsKey(ecorePath)) {
 							ecorePathsToCheck.addAll(viewToRelatedEcorePaths.get(ecorePath));
@@ -138,8 +143,8 @@
 	@Override
 	public void unregisterViewModelEditor(VView viewModel, ViewModelEditorCallback viewModelEditor) {
 		viewModelViewModelEditorMapping.remove(viewModel);
-		final String ecorePath = viewModel.getEcorePath();
-		if (ecorePath != null) {
+		final List<String> ecorePaths = viewModel.getEcorePaths();
+		for (final String ecorePath : ecorePaths) {
 			EcoreHelper.unregisterEcore(ecorePath);
 		}
 	}
diff --git a/bundles/org.eclipse.emf.ecp.quickfix.ui.e4/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.quickfix.ui.e4/META-INF/MANIFEST.MF
index 05b2571..0b44aa0 100644
--- a/bundles/org.eclipse.emf.ecp.quickfix.ui.e4/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.quickfix.ui.e4/META-INF/MANIFEST.MF
@@ -2,18 +2,19 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: ECP Quickfix UI
 Bundle-SymbolicName: org.eclipse.emf.ecp.quickfix.ui.e4;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emf.ecp.quickfix.ui.e4.internal;version="1.16.0";x-friends:="org.eclipse.emf.ecp.application.e4"
+Export-Package: org.eclipse.emf.ecp.quickfix.ui.e4.internal;version="1.17.0";x-friends:="org.eclipse.emf.ecp.application.e4"
 Require-Bundle: org.eclipse.e4.ui.model.workbench;bundle-version="[1.1.0,3.0.0)",
-  org.eclipse.e4.ui.di;bundle-version="[1.0.0,2.0.0)",
-  org.eclipse.e4.ui.services;bundle-version="[1.0.0,2.0.0)",
-  org.eclipse.e4.core.di;bundle-version="[1.2.0,2.0.0)",
-  org.eclipse.e4.ui.workbench;bundle-version="[1.0.2,2.0.0)",
-  org.eclipse.emf.ecp.quickfix;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecore;bundle-version="[2.8.0,3.0.0)",
-  org.eclipse.core.runtime;bundle-version="[3.4.0,4.0.0)",
-  org.eclipse.jface;bundle-version="[3.7.0,4.0.0)"
+ org.eclipse.e4.ui.di;bundle-version="[1.0.0,2.0.0)",
+ org.eclipse.e4.ui.services;bundle-version="[1.0.0,2.0.0)",
+ org.eclipse.e4.core.di;bundle-version="[1.2.0,2.0.0)",
+ org.eclipse.e4.ui.workbench;bundle-version="[1.0.2,2.0.0)",
+ org.eclipse.emf.ecp.quickfix;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecore;bundle-version="[2.8.0,3.0.0)",
+ org.eclipse.core.runtime;bundle-version="[3.4.0,4.0.0)",
+ org.eclipse.jface;bundle-version="[3.7.0,4.0.0)"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Import-Package: javax.inject;version="1.0.0"
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.quickfix.ui.e4
diff --git a/bundles/org.eclipse.emf.ecp.quickfix.ui.e4/pom.xml b/bundles/org.eclipse.emf.ecp.quickfix.ui.e4/pom.xml
index 69a6756..0712350 100644
--- a/bundles/org.eclipse.emf.ecp.quickfix.ui.e4/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.quickfix.ui.e4/pom.xml
@@ -7,7 +7,7 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
 
diff --git a/bundles/org.eclipse.emf.ecp.quickfix/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.quickfix/META-INF/MANIFEST.MF
index 719b145..4f7dd4b 100644
--- a/bundles/org.eclipse.emf.ecp.quickfix/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.quickfix/META-INF/MANIFEST.MF
@@ -2,12 +2,13 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: ECP Quickfix Service
 Bundle-SymbolicName: org.eclipse.emf.ecp.quickfix;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emf.ecp.quickfix;version="1.16.0",
- org.eclipse.emf.ecp.quickfix.internal;version="1.16.0";x-internal:=true
+Export-Package: org.eclipse.emf.ecp.quickfix;version="1.17.0",
+ org.eclipse.emf.ecp.quickfix.internal;version="1.17.0";x-internal:=true
 Require-Bundle: org.eclipse.emf.common;bundle-version="[2.7.0,3.0.0)",
  org.eclipse.emf.ecore;bundle-version="[2.5.0,3.0.0)"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Service-Component: OSGI-INF/modelQuickFix.xml
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.quickfix
diff --git a/bundles/org.eclipse.emf.ecp.quickfix/pom.xml b/bundles/org.eclipse.emf.ecp.quickfix/pom.xml
index ab8f96b..ea75ccc 100644
--- a/bundles/org.eclipse.emf.ecp.quickfix/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.quickfix/pom.xml
@@ -7,7 +7,7 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
 
diff --git a/bundles/org.eclipse.emf.ecp.rap.util/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.rap.util/META-INF/MANIFEST.MF
index 103e311..ab8114a 100644
--- a/bundles/org.eclipse.emf.ecp.rap.util/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.rap.util/META-INF/MANIFEST.MF
@@ -2,13 +2,14 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: RAP Util
 Bundle-SymbolicName: org.eclipse.emf.ecp.rap.util;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emf.ecp.rap.spi.util;version="1.16.0"
-Require-Bundle: org.eclipse.emf.ecp.edit.swt;bundle-version="[1.16.0,1.17.0)"
+Export-Package: org.eclipse.emf.ecp.rap.spi.util;version="1.17.0"
+Require-Bundle: org.eclipse.emf.ecp.edit.swt;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Import-Package: org.eclipse.jface.dialogs;version="0.0.0",
   org.eclipse.jface.window;version="0.0.0",
   org.eclipse.swt.events;version="0.0.0",
   org.eclipse.swt.widgets;version="0.0.0"
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.rap.util
diff --git a/bundles/org.eclipse.emf.ecp.rap.util/pom.xml b/bundles/org.eclipse.emf.ecp.rap.util/pom.xml
index 99dc3c9..0d7acc2 100644
--- a/bundles/org.eclipse.emf.ecp.rap.util/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.rap.util/pom.xml
@@ -5,11 +5,11 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emf.ecp.rap.util</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 </project>
diff --git a/bundles/org.eclipse.emf.ecp.rap/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.rap/META-INF/MANIFEST.MF
index da72b00..056ce7b 100644
--- a/bundles/org.eclipse.emf.ecp.rap/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.rap/META-INF/MANIFEST.MF
@@ -2,12 +2,13 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: ECP RAP
 Bundle-SymbolicName: org.eclipse.emf.ecp.rap;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Activator: org.eclipse.emf.ecp.rap.Activator
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emf.ecp.rap;version="1.16.0";x-internal:=true
-Require-Bundle: org.eclipse.emf.ecp.ui;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.core.runtime;bundle-version="3.8.0",
-  org.eclipse.rap.ui;bundle-version="2.0.0"
+Export-Package: org.eclipse.emf.ecp.rap;version="1.17.0";x-internal:=true
+Require-Bundle: org.eclipse.emf.ecp.ui;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.core.runtime;bundle-version="3.8.0",
+ org.eclipse.rap.ui;bundle-version="2.0.0"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.rap
diff --git a/bundles/org.eclipse.emf.ecp.rap/pom.xml b/bundles/org.eclipse.emf.ecp.rap/pom.xml
index ab32a0f..98728ed 100644
--- a/bundles/org.eclipse.emf.ecp.rap/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.rap/pom.xml
@@ -5,11 +5,11 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emf.ecp.rap</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 </project>
diff --git a/bundles/org.eclipse.emf.ecp.test.common/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.test.common/META-INF/MANIFEST.MF
index ca863b1..0abbcbe 100644
--- a/bundles/org.eclipse.emf.ecp.test.common/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.test.common/META-INF/MANIFEST.MF
@@ -2,9 +2,10 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Common Test Helpers
 Bundle-SymbolicName: org.eclipse.emf.ecp.test.common
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emf.ecp.test.common;version="1.16.0"
+Export-Package: org.eclipse.emf.ecp.test.common;version="1.17.0"
 Require-Bundle: org.eclipse.core.databinding.observable;bundle-version="[1.3.0,2.0.0)"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.test.common
diff --git a/bundles/org.eclipse.emf.ecp.test.common/pom.xml b/bundles/org.eclipse.emf.ecp.test.common/pom.xml
index f444deb..3562423 100644
--- a/bundles/org.eclipse.emf.ecp.test.common/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.test.common/pom.xml
@@ -6,11 +6,11 @@
 	<parent>
 		<groupId>org.eclipse.emf.ecp</groupId>
 		<artifactId>ecp-tests-parent</artifactId>
-		<version>1.16.0-SNAPSHOT</version>
+		<version>1.17.0-SNAPSHOT</version>
 		<relativePath>../../releng/org.eclipse.emf.ecp.releng.tests/</relativePath>
 	</parent>
 
 	<artifactId>org.eclipse.emf.ecp.test.common</artifactId>
 	<packaging>eclipse-plugin</packaging>
-	<version>1.16.0-SNAPSHOT</version>
+	<version>1.17.0-SNAPSHOT</version>
 </project>
diff --git a/bundles/org.eclipse.emf.ecp.ui.e3/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.ui.e3/META-INF/MANIFEST.MF
index ac717e8..5cd9584 100644
--- a/bundles/org.eclipse.emf.ecp.ui.e3/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.ui.e3/META-INF/MANIFEST.MF
@@ -2,23 +2,23 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: ECP Eclipse 3.x Integration
 Bundle-SymbolicName: org.eclipse.emf.ecp.ui.e3;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Activator: org.eclipse.emf.ecp.ui.platform.Activator
 Bundle-Vendor: Eclipse Modeling Project
 Bundle-Localization: OSGI-INF/l10n/bundle
-Export-Package: org.eclipse.emf.ecp.ui.actions;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.ui.commands;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.ui.e3;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.ui.linkedView;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.ui.perspective;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.ui.platform;version="1.16.0";x-friends:="org.eclipse.emf.ecp.emfstore.ui",
-  org.eclipse.emf.ecp.ui.tester;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.ui.views;version="1.16.0";x-internal:=true
+Export-Package: org.eclipse.emf.ecp.ui.actions;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.ui.commands;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.ui.e3;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.ui.linkedView;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.ui.perspective;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.ui.platform;version="1.17.0";x-friends:="org.eclipse.emf.ecp.emfstore.ui",
+ org.eclipse.emf.ecp.ui.tester;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.ui.views;version="1.17.0";x-internal:=true
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.4.0,4.0.0)",
-  org.eclipse.emf.ecp.ui;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.core.expressions;bundle-version="[3.4.0,4.0.0)",
-  org.eclipse.emf.ecp.core;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.common.ui;bundle-version="[1.16.0,1.17.0)"
+ org.eclipse.emf.ecp.ui;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.core.expressions;bundle-version="[3.4.0,4.0.0)",
+ org.eclipse.emf.ecp.core;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.common.ui;bundle-version="[1.17.0,1.18.0]"
 Import-Package: org.eclipse.core.commands;version="0.0.0",
   org.eclipse.emf.edit.ui.provider;version="0.0.0",
   org.eclipse.jface.action;version="0.0.0",
@@ -40,3 +40,4 @@
 Eclipse-ExtensibleAPI: true
 Bundle-ActivationPolicy: lazy
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Automatic-Module-Name: org.eclipse.emf.ecp.ui.e3
diff --git a/bundles/org.eclipse.emf.ecp.ui.e3/pom.xml b/bundles/org.eclipse.emf.ecp.ui.e3/pom.xml
index d8b28ef..d6d5ad0 100644
--- a/bundles/org.eclipse.emf.ecp.ui.e3/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.ui.e3/pom.xml
@@ -5,12 +5,12 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emf.ecp.ui.e3</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
   
   <properties>
diff --git a/bundles/org.eclipse.emf.ecp.ui.e4/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.ui.e4/META-INF/MANIFEST.MF
index 5365eee..032d561 100644
--- a/bundles/org.eclipse.emf.ecp.ui.e4/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.ui.e4/META-INF/MANIFEST.MF
@@ -2,33 +2,34 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: ECP E4 UI
 Bundle-SymbolicName: org.eclipse.emf.ecp.ui.e4;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Activator: org.eclipse.emf.ecp.ui.internal.e4.Activator
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emf.ecp.ui.e4.editor;version="1.16.0";x-friends:="org.eclipse.emf.ecp.application.e4",
-  org.eclipse.emf.ecp.ui.e4.handlers;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.ui.e4.util;version="1.16.0";x-friends:="org.eclipse.emf.ecp.application.e4",
-  org.eclipse.emf.ecp.ui.e4.view;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.ui.internal.e4;version="1.16.0";x-internal:=true
+Export-Package: org.eclipse.emf.ecp.ui.e4.editor;version="1.17.0";x-friends:="org.eclipse.emf.ecp.application.e4",
+ org.eclipse.emf.ecp.ui.e4.handlers;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.ui.e4.util;version="1.17.0";x-friends:="org.eclipse.emf.ecp.application.e4",
+ org.eclipse.emf.ecp.ui.e4.view;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.ui.internal.e4;version="1.17.0";x-internal:=true
 Require-Bundle: org.eclipse.osgi;bundle-version="[3.7.0,4.0.0)",
-  org.eclipse.e4.core.contexts;bundle-version="[1.2.0,2.0.0)",
-  org.eclipse.e4.ui.workbench;bundle-version="[0.10.0,2.0.0)",
-  org.eclipse.e4.ui.model.workbench;bundle-version="[0.10.0,3.0.0)",
-  org.eclipse.emf.ecp.ui;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.e4.ui.workbench.swt;bundle-version="[0.10.0,1.0.0)",
-  javax.inject;bundle-version="[1.0.0,2.0.0)",
-  org.eclipse.e4.core.di;bundle-version="[1.2.0,2.0.0)",
-  org.eclipse.emf.ecp.ui.view.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.e4.ui.di;bundle-version="[0.10.0,2.0.0)",
-  org.eclipse.e4.ui.services;bundle-version="[1.0.0,2.0.0)",
-  org.eclipse.emf.edit.ui;bundle-version="[2.7.0,3.0.0)",
-  org.eclipse.emf.ecp.common;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.edit;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.e4.core.services;bundle-version="[1.0.0,3.0.0)",
-  org.eclipse.emfforms.core.services;bundle-version="[1.16.0,1.17.0)"
+ org.eclipse.e4.core.contexts;bundle-version="[1.2.0,2.0.0)",
+ org.eclipse.e4.ui.workbench;bundle-version="[0.10.0,2.0.0)",
+ org.eclipse.e4.ui.model.workbench;bundle-version="[0.10.0,3.0.0)",
+ org.eclipse.emf.ecp.ui;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.e4.ui.workbench.swt;bundle-version="[0.10.0,1.0.0)",
+ javax.inject;bundle-version="[1.0.0,2.0.0)",
+ org.eclipse.e4.core.di;bundle-version="[1.2.0,2.0.0)",
+ org.eclipse.emf.ecp.ui.view.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.e4.ui.di;bundle-version="[0.10.0,2.0.0)",
+ org.eclipse.e4.ui.services;bundle-version="[1.0.0,2.0.0)",
+ org.eclipse.emf.edit.ui;bundle-version="[2.7.0,3.0.0)",
+ org.eclipse.emf.ecp.common;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.edit;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.e4.core.services;bundle-version="[1.0.0,3.0.0)",
+ org.eclipse.emfforms.core.services;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Import-Package: javax.annotation;version="1.1.0",
-  javax.inject;version="1.0.0",
-  org.eclipse.emfforms.spi.common.report;version="[1.16.0,1.17.0)",
-  org.osgi.service.event;version="1.3.0"
+ javax.inject;version="1.0.0",
+ org.eclipse.emfforms.spi.common.report;version="[1.17.0,1.18.0]",
+ org.osgi.service.event;version="1.3.0"
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.ui.e4
diff --git a/bundles/org.eclipse.emf.ecp.ui.e4/pom.xml b/bundles/org.eclipse.emf.ecp.ui.e4/pom.xml
index bd05d3a..2c20572 100644
--- a/bundles/org.eclipse.emf.ecp.ui.e4/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.ui.e4/pom.xml
@@ -5,12 +5,12 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emf.ecp.ui.e4</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
   
   <properties>
diff --git a/bundles/org.eclipse.emf.ecp.ui.rap/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.ui.rap/META-INF/MANIFEST.MF
index 5c147c4..8269a67 100644
--- a/bundles/org.eclipse.emf.ecp.ui.rap/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.ui.rap/META-INF/MANIFEST.MF
@@ -2,13 +2,14 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: ECP UI RWT
 Bundle-SymbolicName: org.eclipse.emf.ecp.ui.rap
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emf.ecp.internal.ui.util;version="1.16.0";x-internal:=true
+Export-Package: org.eclipse.emf.ecp.internal.ui.util;version="1.17.0";x-internal:=true
 Require-Bundle: org.eclipse.rap.filedialog;bundle-version="[3.0.0,4.0.0)",
-  org.eclipse.rap.rwt;bundle-version="[3.0.0,4.0.0)",
-  org.eclipse.emf.ecp.ui;bundle-version="[1.16.0,1.17.0)"
+ org.eclipse.rap.rwt;bundle-version="[3.0.0,4.0.0)",
+ org.eclipse.emf.ecp.ui;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: J2SE-1.5
 Import-Package: org.osgi.service.component.annotations;version="[1.0.0,2.0.0)"
 Service-Component: OSGI-INF/org.eclipse.emf.ecp.internal.ui.util.ECPFileDialogHelperImpl.xml
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.ui.rap
diff --git a/bundles/org.eclipse.emf.ecp.ui.rap/pom.xml b/bundles/org.eclipse.emf.ecp.ui.rap/pom.xml
index 1f7486a..e261567 100644
--- a/bundles/org.eclipse.emf.ecp.ui.rap/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.ui.rap/pom.xml
@@ -5,11 +5,11 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emf.ecp.ui.rap</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 </project>
diff --git a/bundles/org.eclipse.emf.ecp.ui.rcp/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.ui.rcp/META-INF/MANIFEST.MF
index 15fd5bd..ce423c0 100644
--- a/bundles/org.eclipse.emf.ecp.ui.rcp/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.ui.rcp/META-INF/MANIFEST.MF
@@ -2,12 +2,13 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: ECP UI SWT
 Bundle-SymbolicName: org.eclipse.emf.ecp.ui.rcp
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emf.ecp.internal.ui.util;version="1.16.0";x-internal:=true
+Export-Package: org.eclipse.emf.ecp.internal.ui.util;version="1.17.0";x-internal:=true
 Require-Bundle: org.eclipse.swt;bundle-version="[3.7.0,4.0.0)",
-  org.eclipse.emf.ecp.ui;bundle-version="[1.16.0,1.17.0)"
+  org.eclipse.emf.ecp.ui;bundle-version="[1.17.0,1.18.0)"
 Bundle-RequiredExecutionEnvironment: J2SE-1.5
 Import-Package: org.osgi.service.component.annotations;version="[1.0.0,2.0.0)"
 Service-Component: OSGI-INF/org.eclipse.emf.ecp.internal.ui.util.ECPFileDialogHelperImpl.xml
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.ui.rcp
diff --git a/bundles/org.eclipse.emf.ecp.ui.rcp/pom.xml b/bundles/org.eclipse.emf.ecp.ui.rcp/pom.xml
index a8e9dfd..4e13638 100644
--- a/bundles/org.eclipse.emf.ecp.ui.rcp/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.ui.rcp/pom.xml
@@ -5,12 +5,12 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emf.ecp.ui.rcp</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 
   <properties>
diff --git a/bundles/org.eclipse.emf.ecp.ui.transaction/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.ui.transaction/META-INF/MANIFEST.MF
index 6bc862e..7532639 100644
--- a/bundles/org.eclipse.emf.ecp.ui.transaction/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.ui.transaction/META-INF/MANIFEST.MF
@@ -2,12 +2,12 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: ECP Transactional UI
 Bundle-SymbolicName: org.eclipse.emf.ecp.ui.transaction;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emf.ecp.ui.transaction;version="1.16.0";x-internal:=true
+Export-Package: org.eclipse.emf.ecp.ui.transaction;version="1.17.0";x-internal:=true
 Require-Bundle: org.eclipse.emf.transaction;bundle-version="1.4.0",
-  org.eclipse.emf.ecp.ui;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.emfstore.core;bundle-version="[1.16.0,1.17.0)"
+ org.eclipse.emf.ecp.ui;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.emfstore.core;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Import-Package: org.eclipse.core.commands;version="0.0.0",
   org.eclipse.emf.edit.ui.action;version="0.0.0",
@@ -34,3 +34,4 @@
   org.eclipse.ui.plugin;version="0.0.0",
   org.eclipse.ui.views.properties;ui.views=split;version="0.0.0"
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.ui.transaction
diff --git a/bundles/org.eclipse.emf.ecp.ui.transaction/pom.xml b/bundles/org.eclipse.emf.ecp.ui.transaction/pom.xml
index 27ffb95..6f8ed7c 100644
--- a/bundles/org.eclipse.emf.ecp.ui.transaction/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.ui.transaction/pom.xml
@@ -5,11 +5,11 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emf.ecp.ui.transaction</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 </project>
diff --git a/bundles/org.eclipse.emf.ecp.ui.validation.e4/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.ui.validation.e4/META-INF/MANIFEST.MF
index 9ef5a95..0e9eec3 100644
--- a/bundles/org.eclipse.emf.ecp.ui.validation.e4/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.ui.validation.e4/META-INF/MANIFEST.MF
@@ -2,22 +2,23 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: ECP UI Validation E4
 Bundle-SymbolicName: org.eclipse.emf.ecp.ui.validation.e4;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emf.ecp.ui.validation.e4.handler;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.ui.validation.e4.view;version="1.16.0";x-internal:=true
+Export-Package: org.eclipse.emf.ecp.ui.validation.e4.handler;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.ui.validation.e4.view;version="1.17.0";x-internal:=true
 Require-Bundle: org.eclipse.e4.ui.workbench.swt;bundle-version="[0.10.0,1.0.0)",
-  org.eclipse.e4.ui.workbench;bundle-version="[0.10.0,2.0.0)",
-  org.eclipse.emf.ecp.ui.validation;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.e4.ui.di;bundle-version="[0.10.0,2.0.0)",
-  org.eclipse.jface;bundle-version="[3.9.1,4.0.0)",
-  org.eclipse.emf.ecp.validation.diagnostician;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecore;bundle-version="[2.5.0,3.0.0)",
-  org.eclipse.e4.ui.services;bundle-version="[0.1.0,2.0.0)",
-  org.eclipse.e4.ui.model.workbench;bundle-version="[1.0.1,3.0.0)",
-  org.eclipse.core.expressions;bundle-version="[3.4.500,4.0.0)"
+ org.eclipse.e4.ui.workbench;bundle-version="[0.10.0,2.0.0)",
+ org.eclipse.emf.ecp.ui.validation;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.e4.ui.di;bundle-version="[0.10.0,2.0.0)",
+ org.eclipse.jface;bundle-version="[3.9.1,4.0.0)",
+ org.eclipse.emf.ecp.validation.diagnostician;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecore;bundle-version="[2.5.0,3.0.0)",
+ org.eclipse.e4.ui.services;bundle-version="[0.1.0,2.0.0)",
+ org.eclipse.e4.ui.model.workbench;bundle-version="[1.0.1,3.0.0)",
+ org.eclipse.core.expressions;bundle-version="[3.4.500,4.0.0)"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Import-Package: javax.annotation;version="1.1.0",
   javax.inject;version="1.0.0",
   org.eclipse.e4.core.di.annotations;version="0.0.0"
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.ui.validation.e4
diff --git a/bundles/org.eclipse.emf.ecp.ui.validation.e4/pom.xml b/bundles/org.eclipse.emf.ecp.ui.validation.e4/pom.xml
index 5d78498..830b344 100644
--- a/bundles/org.eclipse.emf.ecp.ui.validation.e4/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.ui.validation.e4/pom.xml
@@ -5,11 +5,11 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emf.ecp.ui.validation.e4</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 </project>
diff --git a/bundles/org.eclipse.emf.ecp.ui.validation/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.ui.validation/META-INF/MANIFEST.MF
index 3eb4a7c..8caba49 100644
--- a/bundles/org.eclipse.emf.ecp.ui.validation/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.ui.validation/META-INF/MANIFEST.MF
@@ -2,14 +2,14 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: ECP Validation View
 Bundle-SymbolicName: org.eclipse.emf.ecp.ui.validation;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Activator: org.eclipse.emf.ecp.internal.ui.validation.Activator
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emf.ecp.internal.ui.validation;version="1.16.0";x-friends:="org.eclipse.emf.ecp.ui.validation.e4,org.eclipse.emf.ecp.ide.migration",
-  org.eclipse.emf.ecp.ui.validation;version="1.16.0";x-friends:="org.eclipse.emf.ecp.ui.validation.e4"
+Export-Package: org.eclipse.emf.ecp.internal.ui.validation;version="1.17.0";x-friends:="org.eclipse.emf.ecp.ui.validation.e4,org.eclipse.emf.ecp.ide.migration",
+ org.eclipse.emf.ecp.ui.validation;version="1.17.0";x-friends:="org.eclipse.emf.ecp.ui.validation.e4"
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.4.0,4.0.0)",
-  org.eclipse.emf.edit;bundle-version="[2.8.0,3.0.0)",
-  org.eclipse.emf.ecp.ui.view.swt;bundle-version="[1.16.0,1.17.0)"
+ org.eclipse.emf.edit;bundle-version="[2.8.0,3.0.0)",
+ org.eclipse.emf.ecp.ui.view.swt;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Service-Component: OSGI-INF/component.xml
 Bundle-ActivationPolicy: lazy
@@ -19,3 +19,4 @@
   org.eclipse.swt;version="0.0.0",
   org.eclipse.swt.graphics;version="0.0.0",
   org.eclipse.swt.widgets;version="0.0.0"
+Automatic-Module-Name: org.eclipse.emf.ecp.ui.validation
diff --git a/bundles/org.eclipse.emf.ecp.ui.validation/pom.xml b/bundles/org.eclipse.emf.ecp.ui.validation/pom.xml
index d93b240..b9e6688 100644
--- a/bundles/org.eclipse.emf.ecp.ui.validation/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.ui.validation/pom.xml
@@ -5,11 +5,11 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emf.ecp.ui.validation</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 </project>
diff --git a/bundles/org.eclipse.emf.ecp.ui.view.editor.controls/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.ui.view.editor.controls/META-INF/MANIFEST.MF
index f63294e..bcce547 100644
--- a/bundles/org.eclipse.emf.ecp.ui.view.editor.controls/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.ui.view.editor.controls/META-INF/MANIFEST.MF
@@ -2,38 +2,43 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Controls
 Bundle-SymbolicName: org.eclipse.emf.ecp.ui.view.editor.controls;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Activator: org.eclipse.emf.ecp.view.internal.editor.controls.Activator
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emf.ecp.view.internal.editor.controls;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.view.internal.editor.handler;version="1.16.0";x-friends:="org.eclipse.emf.ecp.view.model.project.installer,org.eclipse.emf.ecp.view.model.editor,org.eclipse.emf.ecp.view.treemasterdetail.ui.swt",
-  org.eclipse.emf.ecp.view.spi.editor.controls;version="1.16.0"
+Export-Package: org.eclipse.emf.ecp.view.internal.editor.controls;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.internal.editor.handler;version="1.17.0";
+  x-friends:="org.eclipse.emf.ecp.view.model.project.installer,
+   org.eclipse.emf.ecp.view.model.editor,
+   org.eclipse.emf.ecp.view.treemasterdetail.ui.swt",
+ org.eclipse.emf.ecp.view.spi.editor.controls;version="1.17.0"
 Require-Bundle: org.eclipse.core.runtime;bundle-version="3.7.0",
-  org.eclipse.emf.ecp.edit.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.edit.ui;bundle-version="2.8.0",
-  org.eclipse.emf.ecp.ui;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.rule.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.workspace.core;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.model.provider.xmi;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.table.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.ide.view.service;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecore.xmi;bundle-version="[2.7.0,3.0.0)",
-  org.eclipse.emf.ecp.view.treemasterdetail.ui.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.core.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.ui.view.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.template.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.stack.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecore.edit;bundle-version="[2.7.0,3.0.0)",
-  org.eclipse.emf.ecp.view.label.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.common.ui;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.custom.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.databinding.edit;bundle-version="[1.3.0,2.0.0)",
-  org.eclipse.core.databinding.property;bundle-version="[1.4.0,2.0.0)",
-  org.eclipse.emfforms.localization;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services.editsupport;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.swt.core.di;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.util.swt;bundle-version="[1.16.0,1.17.0)"
+ org.eclipse.emf.ecp.edit.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.edit.ui;bundle-version="2.8.0",
+ org.eclipse.emf.ecp.ui;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.rule.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.workspace.core;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.model.provider.xmi;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.table.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.ide.view.service;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecore.xmi;bundle-version="[2.7.0,3.0.0)",
+ org.eclipse.emf.ecp.view.treemasterdetail.ui.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.core.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.ui.view.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.template.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.stack.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecore.edit;bundle-version="[2.7.0,3.0.0)",
+ org.eclipse.emf.ecp.view.label.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.common.ui;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.custom.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.databinding.edit;bundle-version="[1.3.0,2.0.0)",
+ org.eclipse.core.databinding.property;bundle-version="[1.4.0,2.0.0)",
+ org.eclipse.emfforms.localization;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services.editsupport;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.swt.core.di;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.util.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.swt.control.multiattribute;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.ide.util;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Service-Component: OSGI-INF/ControlRootEClassControl2SWTRendererService.xml,
  OSGI-INF/ControlRootEClassControlChangeableSWTRendererService.xml,
@@ -44,15 +49,18 @@
  OSGI-INF/TableColumnsDMRTableControlService.xml,
  OSGI-INF/TableDetailViewControlSWTRendererService.xml,
  OSGI-INF/TableWidthConfigurationDMRRendererService.xml,
- OSGI-INF/ColumnEnablementConfigurationDMRRendererService.xml
+ OSGI-INF/ColumnEnablementConfigurationDMRRendererService.xml,
+ OSGI-INF/org.eclipse.emf.ecp.view.internal.editor.controls.EcorePathsRendererService.xml
 Bundle-ActivationPolicy: lazy
-Import-Package: org.eclipse.emfforms.spi.common.report;version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.spi.core.services.databinding.emf;version="[1.16.0,1.17.0)",
-  org.eclipse.jface.databinding.swt;version="0.0.0",
-  org.eclipse.jface.databinding.viewers;version="0.0.0",
-  org.eclipse.jface.resource;version="0.0.0",
-  org.eclipse.swt;version="0.0.0",
-  org.eclipse.swt.graphics;version="0.0.0",
-  org.eclipse.swt.layout;version="0.0.0",
-  org.eclipse.swt.widgets;version="0.0.0",
-  org.osgi.service.component.annotations;version="[1.2.0,2.0.0)";resolution:=optional
+Import-Package: org.eclipse.core.resources;version="0.0.0",
+ org.eclipse.emfforms.spi.common.report;version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.spi.core.services.databinding.emf;version="[1.17.0,1.18.0]",
+ org.eclipse.jface.databinding.swt;version="0.0.0",
+ org.eclipse.jface.databinding.viewers;version="0.0.0",
+ org.eclipse.jface.resource;version="0.0.0",
+ org.eclipse.swt;version="0.0.0",
+ org.eclipse.swt.graphics;version="0.0.0",
+ org.eclipse.swt.layout;version="0.0.0",
+ org.eclipse.swt.widgets;version="0.0.0",
+ org.osgi.service.component.annotations;version="[1.2.0,2.0.0)";resolution:=optional
+Automatic-Module-Name: org.eclipse.emf.ecp.ui.view.editor.controls
diff --git a/bundles/org.eclipse.emf.ecp.ui.view.editor.controls/OSGI-INF/l10n/bundle.properties b/bundles/org.eclipse.emf.ecp.ui.view.editor.controls/OSGI-INF/l10n/bundle.properties
index f147ede..6d0fa0d 100644
--- a/bundles/org.eclipse.emf.ecp.ui.view.editor.controls/OSGI-INF/l10n/bundle.properties
+++ b/bundles/org.eclipse.emf.ecp.ui.view.editor.controls/OSGI-INF/l10n/bundle.properties
@@ -1,2 +1,6 @@
 LinkControl_NotSet=(Not Set)
-LinkControl_NoLinkSetClickToSetLink=No link set\\! Click to set link.
\ No newline at end of file
+LinkControl_NoLinkSetClickToSetLink=No link set\\! Click to set link.
+EcorePath_AddDialog_Title=Select Ecore
+EcorePath_AddDialog_Message=Please select the Ecore which should be added to the list of local EcorePaths.
+EcorePath_AddDialog_Status_NotEcore=Please select an Ecore file.
+EcorePath_AddDialog_Status_AlreadyAdded=The Ecore ''{0}'' was already added.
\ No newline at end of file
diff --git a/bundles/org.eclipse.emf.ecp.ui.view.editor.controls/OSGI-INF/org.eclipse.emf.ecp.view.internal.editor.controls.EcorePathsRendererService.xml b/bundles/org.eclipse.emf.ecp.ui.view.editor.controls/OSGI-INF/org.eclipse.emf.ecp.view.internal.editor.controls.EcorePathsRendererService.xml
new file mode 100644
index 0000000..7eec4c3
--- /dev/null
+++ b/bundles/org.eclipse.emf.ecp.ui.view.editor.controls/OSGI-INF/org.eclipse.emf.ecp.view.internal.editor.controls.EcorePathsRendererService.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.eclipse.emf.ecp.view.internal.editor.controls.EcorePathsRendererService">
+   <service>
+      <provide interface="org.eclipse.emfforms.spi.swt.core.di.EMFFormsDIRendererService"/>
+   </service>
+   <reference bind="setEMFFormsDatabinding" interface="org.eclipse.emfforms.spi.core.services.databinding.EMFFormsDatabinding" name="EMFFormsDatabinding"/>
+   <reference bind="setReportService" interface="org.eclipse.emfforms.spi.common.report.ReportService" name="ReportService"/>
+   <implementation class="org.eclipse.emf.ecp.view.internal.editor.controls.EcorePathsRendererService"/>
+</scr:component>
\ No newline at end of file
diff --git a/bundles/org.eclipse.emf.ecp.ui.view.editor.controls/pom.xml b/bundles/org.eclipse.emf.ecp.ui.view.editor.controls/pom.xml
index af3f815..227e438 100644
--- a/bundles/org.eclipse.emf.ecp.ui.view.editor.controls/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.ui.view.editor.controls/pom.xml
@@ -7,7 +7,7 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
 
diff --git a/bundles/org.eclipse.emf.ecp.ui.view.editor.controls/src/org/eclipse/emf/ecp/view/internal/editor/controls/ColumnConfigurationDMRRendererReferenceService.java b/bundles/org.eclipse.emf.ecp.ui.view.editor.controls/src/org/eclipse/emf/ecp/view/internal/editor/controls/ColumnConfigurationDMRRendererReferenceService.java
index 559101f..657047c 100644
--- a/bundles/org.eclipse.emf.ecp.ui.view.editor.controls/src/org/eclipse/emf/ecp/view/internal/editor/controls/ColumnConfigurationDMRRendererReferenceService.java
+++ b/bundles/org.eclipse.emf.ecp.ui.view.editor.controls/src/org/eclipse/emf/ecp/view/internal/editor/controls/ColumnConfigurationDMRRendererReferenceService.java
@@ -24,6 +24,7 @@
 import org.eclipse.emf.ecp.view.spi.table.model.VTableControl;
 import org.eclipse.emf.ecp.view.spi.table.model.VTableDomainModelReference;
 import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain;
+import org.eclipse.emfforms.common.Optional;
 
 /**
  * Special {@link ReferenceService} allowing stream lined DMR selection for the width configuration.
@@ -61,11 +62,18 @@
 		return 0;
 	}
 
+	@Deprecated
 	@Override
 	public void addNewModelElements(EObject eObject, EReference eReference) {
 		/* no-op */
 	}
 
+	@Override
+	public Optional<EObject> addNewModelElements(EObject eObject, EReference eReference, boolean openInNewContext) {
+		/* no-op */
+		return Optional.empty();
+	}
+
 	@SuppressWarnings("restriction")
 	@Override
 	public void addExistingModelElements(EObject eObject, EReference eReference) {
diff --git a/bundles/org.eclipse.emf.ecp.ui.view.editor.controls/src/org/eclipse/emf/ecp/view/internal/editor/controls/ControlRootEClassControlChangeableSWTRenderer.java b/bundles/org.eclipse.emf.ecp.ui.view.editor.controls/src/org/eclipse/emf/ecp/view/internal/editor/controls/ControlRootEClassControlChangeableSWTRenderer.java
index 2e564da..a0fc344 100644
--- a/bundles/org.eclipse.emf.ecp.ui.view.editor.controls/src/org/eclipse/emf/ecp/view/internal/editor/controls/ControlRootEClassControlChangeableSWTRenderer.java
+++ b/bundles/org.eclipse.emf.ecp.ui.view.editor.controls/src/org/eclipse/emf/ecp/view/internal/editor/controls/ControlRootEClassControlChangeableSWTRenderer.java
@@ -265,7 +265,10 @@
 			return;
 		}
 
-		view.setEcorePath(ecore.getURI().toPlatformString(true));
+		final String uriString = ecore.getURI().toPlatformString(true);
+		if (!view.getEcorePaths().contains(uriString)) {
+			view.getEcorePaths().add(uriString);
+		}
 
 	}
 
diff --git a/bundles/org.eclipse.emf.ecp.ui.view.editor.controls/src/org/eclipse/emf/ecp/view/internal/editor/controls/EcorePathsRenderer.java b/bundles/org.eclipse.emf.ecp.ui.view.editor.controls/src/org/eclipse/emf/ecp/view/internal/editor/controls/EcorePathsRenderer.java
new file mode 100644
index 0000000..f03b22d
--- /dev/null
+++ b/bundles/org.eclipse.emf.ecp.ui.view.editor.controls/src/org/eclipse/emf/ecp/view/internal/editor/controls/EcorePathsRenderer.java
@@ -0,0 +1,146 @@
+/*******************************************************************************
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * Eugen Neufeld - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.emf.ecp.view.internal.editor.controls;
+
+import java.io.IOException;
+import java.text.MessageFormat;
+
+import javax.inject.Inject;
+
+import org.eclipse.core.databinding.observable.list.IObservableList;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecp.ide.spi.util.EcoreHelper;
+import org.eclipse.emf.ecp.view.spi.context.ViewModelContext;
+import org.eclipse.emf.ecp.view.spi.model.VControl;
+import org.eclipse.emf.ecp.view.spi.util.swt.ImageRegistryService;
+import org.eclipse.emf.ecp.view.template.model.VTViewTemplateProvider;
+import org.eclipse.emfforms.spi.common.report.AbstractReport;
+import org.eclipse.emfforms.spi.common.report.ReportService;
+import org.eclipse.emfforms.spi.core.services.databinding.EMFFormsDatabinding;
+import org.eclipse.emfforms.spi.core.services.label.EMFFormsLabelProvider;
+import org.eclipse.emfforms.spi.localization.LocalizationServiceHelper;
+import org.eclipse.emfforms.spi.view.control.multiattribute.MultiAttributeSWTRenderer;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.window.Window;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.ui.dialogs.ElementTreeSelectionDialog;
+import org.eclipse.ui.dialogs.ISelectionStatusValidator;
+import org.eclipse.ui.model.BaseWorkbenchContentProvider;
+import org.eclipse.ui.model.WorkbenchLabelProvider;
+
+/**
+ * Custom Renderer for the EcorePath List of a View. This Renderer changes the behavior of the add and remove button so
+ * that a user gets a Dialog to select an Ecore from the Workspace in the case of an add. In the case of a remove the
+ * Ecore is deregistered.
+ *
+ * @author Eugen Neufeld
+ *
+ */
+public class EcorePathsRenderer extends MultiAttributeSWTRenderer {
+
+	private Composite parent;
+	private IObservableList list;
+
+	/**
+	 * Default constructor.
+	 *
+	 * @param vElement The {@link VControl} of the Renderer
+	 * @param viewContext The {@link ViewModelContext} of the Renderer
+	 * @param reportService The {@link ReportService} to use for logging
+	 * @param emfFormsDatabinding The {@link EMFFormsDatabinding} to use
+	 * @param emfFormsLabelProvider The {@link EMFFormsLabelProvider} to use
+	 * @param vtViewTemplateProvider The {@link VTViewTemplateProvider} to use
+	 * @param imageRegistryService The {@link ImageRegistryService} to use
+	 */
+	@Inject
+	public EcorePathsRenderer(VControl vElement, ViewModelContext viewContext, ReportService reportService,
+		EMFFormsDatabinding emfFormsDatabinding, EMFFormsLabelProvider emfFormsLabelProvider,
+		VTViewTemplateProvider vtViewTemplateProvider, ImageRegistryService imageRegistryService) {
+		super(vElement, viewContext, reportService, emfFormsDatabinding, emfFormsLabelProvider, vtViewTemplateProvider,
+			imageRegistryService);
+	}
+
+	@Override
+	public void finalizeRendering(Composite parent) {
+		super.finalizeRendering(parent);
+		this.parent = parent;
+	}
+
+	@Override
+	protected void initButtons(IObservableList list) {
+		this.list = list;
+		super.initButtons(list);
+	}
+
+	@Override
+	protected Object getValueForNewRow(EAttribute attribute) {
+		final ElementTreeSelectionDialog dialog = new ElementTreeSelectionDialog(parent.getShell(),
+			new WorkbenchLabelProvider(), new BaseWorkbenchContentProvider());
+		dialog.setInput(ResourcesPlugin.getWorkspace().getRoot());
+		dialog.setAllowMultiple(false);
+		dialog.setValidator(new ISelectionStatusValidator() {
+
+			@Override
+			public IStatus validate(Object[] selection) {
+				if (selection.length == 1 && selection[0] instanceof IFile) {
+					final IFile file = (IFile) selection[0];
+					if (file.getType() == IResource.FILE && "ecore".equalsIgnoreCase(file.getFileExtension())) { //$NON-NLS-1$
+						if (list.contains(file.getFullPath().toString())) {
+							return new Status(IStatus.ERROR, Activator.PLUGIN_ID, IStatus.ERROR,
+								MessageFormat.format(LocalizationServiceHelper.getString(EcorePathsRenderer.class,
+									"EcorePath_AddDialog_Status_AlreadyAdded"), file.getName()), //$NON-NLS-1$
+								null);
+						}
+						return new Status(IStatus.OK, Activator.PLUGIN_ID, IStatus.OK, null, null);
+					}
+				}
+				return new Status(IStatus.ERROR, Activator.PLUGIN_ID, IStatus.ERROR,
+					LocalizationServiceHelper.getString(EcorePathsRenderer.class,
+						"EcorePath_AddDialog_Status_NotEcore"), //$NON-NLS-1$
+					null);
+			}
+		});
+
+		dialog.setTitle(LocalizationServiceHelper.getString(EcorePathsRenderer.class, "EcorePath_AddDialog_Title")); //$NON-NLS-1$
+		dialog.setMessage(LocalizationServiceHelper.getString(EcorePathsRenderer.class, "EcorePath_AddDialog_Message")); //$NON-NLS-1$
+
+		if (dialog.open() == Window.OK) {
+			final String path = ((IFile) dialog.getFirstResult()).getFullPath().toString();
+			try {
+				EcoreHelper.registerEcore(path);
+			} catch (final IOException ex) {
+				getReportService().report(new AbstractReport(ex));
+				return null;
+			}
+			return path;
+		}
+		return null;
+	}
+
+	@Override
+	protected void postRemove(IStructuredSelection selection) {
+		for (final Object toDelete : selection.toList()) {
+			EcoreHelper.unregisterEcore(toDelete.toString());
+		}
+	}
+
+	@Override
+	protected void createUpDownButtons(Composite composite, IObservableList list) {
+		// do nothing
+	}
+
+}
diff --git a/bundles/org.eclipse.emf.ecp.ui.view.editor.controls/src/org/eclipse/emf/ecp/view/internal/editor/controls/EcorePathsRendererService.java b/bundles/org.eclipse.emf.ecp.ui.view.editor.controls/src/org/eclipse/emf/ecp/view/internal/editor/controls/EcorePathsRendererService.java
new file mode 100644
index 0000000..68b6608
--- /dev/null
+++ b/bundles/org.eclipse.emf.ecp.ui.view.editor.controls/src/org/eclipse/emf/ecp/view/internal/editor/controls/EcorePathsRendererService.java
@@ -0,0 +1,96 @@
+/*******************************************************************************
+ * Copyright (c) 2011-2016 EclipseSource Muenchen GmbH 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:
+ * Eugen Neufeld - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.emf.ecp.view.internal.editor.controls;
+
+import org.eclipse.core.databinding.property.value.IValueProperty;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.ecp.view.spi.context.ViewModelContext;
+import org.eclipse.emf.ecp.view.spi.model.VControl;
+import org.eclipse.emf.ecp.view.spi.model.VElement;
+import org.eclipse.emf.ecp.view.spi.model.VViewPackage;
+import org.eclipse.emfforms.spi.common.report.ReportService;
+import org.eclipse.emfforms.spi.core.services.databinding.DatabindingFailedException;
+import org.eclipse.emfforms.spi.core.services.databinding.DatabindingFailedReport;
+import org.eclipse.emfforms.spi.core.services.databinding.EMFFormsDatabinding;
+import org.eclipse.emfforms.spi.swt.core.AbstractSWTRenderer;
+import org.eclipse.emfforms.spi.swt.core.di.EMFFormsDIRendererService;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Reference;
+
+/**
+ * DI renderer service for {@link EcorePathsRenderer}.
+ *
+ * @author Eugen Neufeld
+ *
+ */
+@Component
+public class EcorePathsRendererService implements EMFFormsDIRendererService<VControl> {
+
+	private EMFFormsDatabinding databindingService;
+	private ReportService reportService;
+
+	/**
+	 * Called by the framework to set the {@link EMFFormsDatabinding}.
+	 *
+	 * @param databindingService The {@link EMFFormsDatabinding}
+	 */
+	@Reference(unbind = "-")
+	protected void setEMFFormsDatabinding(EMFFormsDatabinding databindingService) {
+		this.databindingService = databindingService;
+	}
+
+	/**
+	 * Called by the framework to set the {@link ReportService}.
+	 *
+	 * @param reportService The {@link ReportService}
+	 */
+	@Reference(unbind = "-")
+	protected void setReportService(ReportService reportService) {
+		this.reportService = reportService;
+	}
+
+	@Override
+	public double isApplicable(VElement vElement, ViewModelContext viewModelContext) {
+		if (!VControl.class.isInstance(vElement)) {
+			return NOT_APPLICABLE;
+		}
+		final VControl control = (VControl) vElement;
+		if (control.getDomainModelReference() == null) {
+			return NOT_APPLICABLE;
+		}
+		IValueProperty valueProperty;
+		try {
+			valueProperty = databindingService.getValueProperty(control.getDomainModelReference(),
+				viewModelContext.getDomainModel());
+		} catch (final DatabindingFailedException ex) {
+			reportService.report(new DatabindingFailedReport(ex));
+			return NOT_APPLICABLE;
+		}
+		final EStructuralFeature feature = (EStructuralFeature) valueProperty.getValueType();
+		if (VViewPackage.eINSTANCE.getView_EcorePaths() == feature) {
+			return 100d;
+		}
+
+		return NOT_APPLICABLE;
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.emfforms.spi.swt.core.di.EMFFormsDIRendererService#getRendererClass()
+	 */
+	@Override
+	public Class<? extends AbstractSWTRenderer<VControl>> getRendererClass() {
+		return EcorePathsRenderer.class;
+	}
+
+}
diff --git a/bundles/org.eclipse.emf.ecp.ui.view.editor.controls/src/org/eclipse/emf/ecp/view/internal/editor/controls/ExpectedValueControlRenderer.java b/bundles/org.eclipse.emf.ecp.ui.view.editor.controls/src/org/eclipse/emf/ecp/view/internal/editor/controls/ExpectedValueControlRenderer.java
index f03deb7..2178653 100644
--- a/bundles/org.eclipse.emf.ecp.ui.view.editor.controls/src/org/eclipse/emf/ecp/view/internal/editor/controls/ExpectedValueControlRenderer.java
+++ b/bundles/org.eclipse.emf.ecp.ui.view.editor.controls/src/org/eclipse/emf/ecp/view/internal/editor/controls/ExpectedValueControlRenderer.java
@@ -55,10 +55,8 @@
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Control;
 import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Shell;
 import org.eclipse.ui.dialogs.ListDialog;
-import org.osgi.framework.BundleContext;
-import org.osgi.framework.FrameworkUtil;
-import org.osgi.framework.ServiceReference;
 
 /**
  * A control for defining an value in a leaf condition.
@@ -69,43 +67,35 @@
 // APITODO no api yet
 public abstract class ExpectedValueControlRenderer extends SimpleControlSWTControlSWTRenderer {
 
-	private static final EMFFormsDatabinding EMFFORMS_DATABINDING;
-	private static final EMFFormsLabelProvider EMFFORMS_LABELPROVIDER;
-	private static final VTViewTemplateProvider VIEW_TEMPLATE_PROVIDER;
-
-	static {
-		final BundleContext bundleContext = FrameworkUtil.getBundle(ExpectedValueControlRenderer.class)
-			.getBundleContext();
-		final ServiceReference<EMFFormsDatabinding> emfFormsDatabindingServiceReference = bundleContext
-			.getServiceReference(EMFFormsDatabinding.class);
-		EMFFORMS_DATABINDING = bundleContext.getService(emfFormsDatabindingServiceReference);
-		final ServiceReference<EMFFormsLabelProvider> emfFormsLabelProviderServiceReference = bundleContext
-			.getServiceReference(EMFFormsLabelProvider.class);
-		EMFFORMS_LABELPROVIDER = bundleContext.getService(emfFormsLabelProviderServiceReference);
-		final ServiceReference<VTViewTemplateProvider> vtViewTemplateProviderServiceReference = bundleContext
-			.getServiceReference(VTViewTemplateProvider.class);
-		VIEW_TEMPLATE_PROVIDER = bundleContext.getService(vtViewTemplateProviderServiceReference);
-	}
-
 	/**
 	 * Default constructor.
 	 *
 	 * @param vElement the view model element to be rendered
 	 * @param viewContext the view context
 	 * @param reportService The {@link ReportService}
+	 * @param databindingService The {@link EMFFormsDatabinding}
+	 * @param labelProvider The {@link EMFFormsLabelProvider}
+	 * @param viewTemplateProvider The {@link VTViewTemplateProvider}
 	 */
 	public ExpectedValueControlRenderer(VControl vElement, ViewModelContext viewContext,
-		ReportService reportService) {
-		super(vElement, viewContext, reportService, EMFFORMS_DATABINDING, EMFFORMS_LABELPROVIDER,
-			VIEW_TEMPLATE_PROVIDER);
+		ReportService reportService, EMFFormsDatabinding databindingService, EMFFormsLabelProvider labelProvider,
+		VTViewTemplateProvider viewTemplateProvider) {
+		super(vElement, viewContext, reportService, databindingService, labelProvider, viewTemplateProvider);
 	}
 
 	private Label text;
+	private Shell shell;
 
 	private String getTextVariantID() {
 		return "org_eclipse_emf_ecp_view_editor_controls_ruleattribute"; //$NON-NLS-1$
 	}
 
+	@Override
+	public void finalizeRendering(Composite parent) {
+		super.finalizeRendering(parent);
+		shell = parent.getShell();
+	}
+
 	/**
 	 * {@inheritDoc}
 	 *
@@ -178,6 +168,11 @@
 	protected Object getSelectedObject(EAttribute attribute) {
 		Object object = null;
 		// final EAttribute attribute = (EAttribute) structuralFeature;
+		if (attribute == null) {
+			showError(shell, "Missing Attribute", //$NON-NLS-1$
+				"Please select an attribute before attempting to select its value."); //$NON-NLS-1$
+			return object;
+		}
 		Class<?> attribuetClazz = attribute.getEAttributeType().getInstanceClass();
 
 		if (attribuetClazz == null) {
@@ -185,7 +180,7 @@
 				attribuetClazz = Enum.class;
 				final EList<EEnumLiteral> eLiterals = EEnumImpl.class.cast(attribute.getEType()).getELiterals();
 				final Object[] enumValues = eLiterals.toArray();
-				final ListDialog ld = new ListDialog(text.getShell());
+				final ListDialog ld = new ListDialog(shell);
 				ld.setLabelProvider(new LabelProvider());
 				ld.setContentProvider(ArrayContentProvider.getInstance());
 				ld.setInput(enumValues);
@@ -201,23 +196,11 @@
 			}
 		} else {
 			if (attribuetClazz.isPrimitive()) {
-				if (int.class.isAssignableFrom(attribuetClazz)) {
-					attribuetClazz = Integer.class;
-				} else if (long.class.isAssignableFrom(attribuetClazz)) {
-					attribuetClazz = Long.class;
-				} else if (float.class.isAssignableFrom(attribuetClazz)) {
-					attribuetClazz = Float.class;
-				} else if (double.class.isAssignableFrom(attribuetClazz)) {
-					attribuetClazz = Double.class;
-				} else if (boolean.class.isAssignableFrom(attribuetClazz)) {
-					attribuetClazz = Boolean.class;
-				} else if (char.class.isAssignableFrom(attribuetClazz)) {
-					attribuetClazz = Character.class;
-				}
+				attribuetClazz = getAttributeClass(attribuetClazz);
 			}
 			if (Enum.class.isAssignableFrom(attribuetClazz)) {
 				final Object[] enumValues = attribuetClazz.getEnumConstants();
-				final ListDialog ld = new ListDialog(text.getShell());
+				final ListDialog ld = new ListDialog(shell);
 				ld.setLabelProvider(new LabelProvider());
 				ld.setContentProvider(ArrayContentProvider.getInstance());
 				ld.setInput(enumValues);
@@ -231,47 +214,88 @@
 			} else if (String.class.isAssignableFrom(attribuetClazz)
 				|| Number.class.isAssignableFrom(attribuetClazz)
 				|| Boolean.class.isAssignableFrom(attribuetClazz)) {
-				try {
-					final Constructor<?> constructor = attribuetClazz.getConstructor(String.class);
-					final InputDialog id = new InputDialog(
-						text.getShell(),
-						"Insert the value", //$NON-NLS-1$
-						"The value must be parseable by the " //$NON-NLS-1$
-							+ attribuetClazz.getSimpleName()
-							+ " class. For a double value please use the #.# format. For boolean values 'true' or 'false'.", //$NON-NLS-1$
-						null, null);
-					final int inputResult = id.open();
-					if (Window.OK == inputResult) {
-						object = constructor.newInstance(id.getValue());
-					}
-					if (Boolean.class.isAssignableFrom(attribuetClazz) && !Boolean.class.cast(object)
-						&& !"false".equalsIgnoreCase(id.getValue())) { //$NON-NLS-1$
-						MessageDialog.openError(text.getShell(), "Invalid boolean value", //$NON-NLS-1$
-							"You have entered an invalid value. False has been chosen instead."); //$NON-NLS-1$
-					}
-				} catch (final IllegalArgumentException ex) {
-					openInvalidValueMessage();
-				} catch (final SecurityException ex) {
-					openInvalidValueMessage();
-				} catch (final NoSuchMethodException ex) {
-					openInvalidValueMessage();
-				} catch (final InstantiationException ex) {
-					openInvalidValueMessage();
-				} catch (final IllegalAccessException ex) {
-					openInvalidValueMessage();
-				} catch (final InvocationTargetException ex) {
-					openInvalidValueMessage();
-				}
+				object = promptForValue(shell, object, attribuetClazz);
 			} else {
-				MessageDialog.openError(text.getShell(), "Not primitive Attribute selected", //$NON-NLS-1$
+				showError(shell, "Not primitive Attribute selected", //$NON-NLS-1$
 					"The selected attribute has a not primitive type. We can't provide you support for it!"); //$NON-NLS-1$
 			}
 		}
 		return object;
 	}
 
+	/**
+	 * Shows an error message to the user.
+	 *
+	 * @param shell The Shell to show the error on
+	 * @param title The title of the error message
+	 * @param description The error description
+	 */
+	protected void showError(Shell shell, String title, String description) {
+		MessageDialog.openError(shell, title, description);
+	}
+
+	/**
+	 * Prompts the user to input a value. Return the original object if the input is cancelled.
+	 *
+	 * @param shell The Shell on which an input dialog will be opened
+	 * @param object The current value
+	 * @param attributeClazz The Class for which we want a value
+	 * @return the prompted value, or the input object if the prompt was cancelled
+	 */
+	Object promptForValue(Shell shell, Object object, Class<?> attributeClazz) {
+		try {
+			final Constructor<?> constructor = attributeClazz.getConstructor(String.class);
+			final InputDialog id = new InputDialog(
+				shell,
+				"Insert the value", //$NON-NLS-1$
+				"The value must be parseable by the " //$NON-NLS-1$
+					+ attributeClazz.getSimpleName()
+					+ " class. For a double value please use the #.# format. For boolean values 'true' or 'false'.", //$NON-NLS-1$
+				null, null);
+			final int inputResult = id.open();
+			if (Window.OK == inputResult) {
+				object = constructor.newInstance(id.getValue());
+			}
+			if (Boolean.class.isAssignableFrom(attributeClazz) && !Boolean.class.cast(object)
+				&& !"false".equalsIgnoreCase(id.getValue())) { //$NON-NLS-1$
+				showError(shell, "Invalid boolean value", //$NON-NLS-1$
+					"You have entered an invalid value. False has been chosen instead."); //$NON-NLS-1$
+			}
+		} catch (final IllegalArgumentException ex) {
+			openInvalidValueMessage();
+		} catch (final SecurityException ex) {
+			openInvalidValueMessage();
+		} catch (final NoSuchMethodException ex) {
+			openInvalidValueMessage();
+		} catch (final InstantiationException ex) {
+			openInvalidValueMessage();
+		} catch (final IllegalAccessException ex) {
+			openInvalidValueMessage();
+		} catch (final InvocationTargetException ex) {
+			openInvalidValueMessage();
+		}
+		return object;
+	}
+
+	private Class<?> getAttributeClass(Class<?> attributeClazz) {
+		if (int.class.isAssignableFrom(attributeClazz)) {
+			attributeClazz = Integer.class;
+		} else if (long.class.isAssignableFrom(attributeClazz)) {
+			attributeClazz = Long.class;
+		} else if (float.class.isAssignableFrom(attributeClazz)) {
+			attributeClazz = Float.class;
+		} else if (double.class.isAssignableFrom(attributeClazz)) {
+			attributeClazz = Double.class;
+		} else if (boolean.class.isAssignableFrom(attributeClazz)) {
+			attributeClazz = Boolean.class;
+		} else if (char.class.isAssignableFrom(attributeClazz)) {
+			attributeClazz = Character.class;
+		}
+		return attributeClazz;
+	}
+
 	private void openInvalidValueMessage() {
-		MessageDialog.openError(text.getShell(), "Invalid value", //$NON-NLS-1$
+		MessageDialog.openError(shell, "Invalid value", //$NON-NLS-1$
 			"You have entered an invalid value. The previsous value will be kept."); //$NON-NLS-1$
 	}
 
@@ -321,7 +345,7 @@
 			if (String.class.isInstance(converted)) {
 				IObservableValue observableValue;
 				try {
-					observableValue = EMFFORMS_DATABINDING
+					observableValue = getEMFFormsDatabinding()
 						.getObservableValue(getVElement().getDomainModelReference(),
 							getViewModelContext().getDomainModel());
 				} catch (final DatabindingFailedException ex) {
diff --git a/bundles/org.eclipse.emf.ecp.ui.view.editor.controls/src/org/eclipse/emf/ecp/view/internal/editor/controls/LeafConditionControlRenderer.java b/bundles/org.eclipse.emf.ecp.ui.view.editor.controls/src/org/eclipse/emf/ecp/view/internal/editor/controls/LeafConditionControlRenderer.java
index a42306e..11e93af 100644
--- a/bundles/org.eclipse.emf.ecp.ui.view.editor.controls/src/org/eclipse/emf/ecp/view/internal/editor/controls/LeafConditionControlRenderer.java
+++ b/bundles/org.eclipse.emf.ecp.ui.view.editor.controls/src/org/eclipse/emf/ecp/view/internal/editor/controls/LeafConditionControlRenderer.java
@@ -33,13 +33,15 @@
 import org.eclipse.emf.ecp.view.spi.rule.model.LeafCondition;
 import org.eclipse.emf.ecp.view.spi.rule.model.RulePackage;
 import org.eclipse.emf.ecp.view.spi.rule.model.impl.LeafConditionImpl;
+import org.eclipse.emf.ecp.view.template.model.VTViewTemplateProvider;
 import org.eclipse.emf.edit.command.SetCommand;
 import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain;
 import org.eclipse.emf.edit.domain.EditingDomain;
 import org.eclipse.emfforms.spi.common.report.ReportService;
 import org.eclipse.emfforms.spi.core.services.databinding.DatabindingFailedException;
 import org.eclipse.emfforms.spi.core.services.databinding.DatabindingFailedReport;
-import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.emfforms.spi.core.services.databinding.EMFFormsDatabinding;
+import org.eclipse.emfforms.spi.core.services.label.EMFFormsLabelProvider;
 import org.eclipse.jface.viewers.TreeViewer;
 import org.eclipse.jface.wizard.WizardDialog;
 import org.eclipse.swt.widgets.Display;
@@ -57,10 +59,15 @@
 	 * @param vElement the view model element to be rendered
 	 * @param viewContext the view context
 	 * @param reportService the {@link ReportService}
+	 * @param databindingService The {@link EMFFormsDatabinding}
+	 * @param labelProvider The {@link EMFFormsLabelProvider}
+	 * @param viewTemplateProvider The {@link VTViewTemplateProvider}
 	 */
 	@Inject
-	public LeafConditionControlRenderer(VControl vElement, ViewModelContext viewContext, ReportService reportService) {
-		super(vElement, viewContext, reportService);
+	public LeafConditionControlRenderer(VControl vElement, ViewModelContext viewContext, ReportService reportService,
+		EMFFormsDatabinding databindingService, EMFFormsLabelProvider labelProvider,
+		VTViewTemplateProvider viewTemplateProvider) {
+		super(vElement, viewContext, reportService, databindingService, labelProvider, viewTemplateProvider);
 	}
 
 	/**
@@ -79,22 +86,14 @@
 		}
 
 		if (condition.getDomainModelReference() == null) {
-			MessageDialog.openError(control.getShell(), "No Feature Path Domain Model Reference found", //$NON-NLS-1$
-				"A Feature Path Domain Model Reference needs to be added to the condition first. " //$NON-NLS-1$
-			);
+			showError(control.getShell(), "No Feature Path Domain Model Reference found", //$NON-NLS-1$
+				"A Feature Path Domain Model Reference needs to be added to the condition first."); //$NON-NLS-1$
 			return;
 		}
 
 		EStructuralFeature structuralFeature = ((VFeaturePathDomainModelReference) condition
 			.getDomainModelReference()).getDomainModelEFeature();
 
-		if (structuralFeature == null) {
-			MessageDialog.openError(control.getShell(), "No value selected", //$NON-NLS-1$
-				"Please set a value to the Domain Model Reference first. " //$NON-NLS-1$
-			);
-			return;
-		}
-
 		if (EReference.class.isInstance(structuralFeature)) {
 			final EReference reference = EReference.class.cast(structuralFeature);
 			final EClass referenceType = reference.getEReferenceType();
@@ -118,6 +117,12 @@
 				.getDomainModelEFeature();
 		}
 
+		if (structuralFeature == null) {
+			showError(control.getShell(), "No value selected", //$NON-NLS-1$
+				"Please set a value to the Domain Model Reference first."); //$NON-NLS-1$
+			return;
+		}
+
 		if (EReference.class.isInstance(structuralFeature)) {
 			// TODO show all references
 			return;
diff --git a/bundles/org.eclipse.emf.ecp.ui.view.editor.controls/src/org/eclipse/emf/ecp/view/internal/editor/controls/StackItemControlRenderer.java b/bundles/org.eclipse.emf.ecp.ui.view.editor.controls/src/org/eclipse/emf/ecp/view/internal/editor/controls/StackItemControlRenderer.java
index 2828b60..16a88ce 100644
--- a/bundles/org.eclipse.emf.ecp.ui.view.editor.controls/src/org/eclipse/emf/ecp/view/internal/editor/controls/StackItemControlRenderer.java
+++ b/bundles/org.eclipse.emf.ecp.ui.view.editor.controls/src/org/eclipse/emf/ecp/view/internal/editor/controls/StackItemControlRenderer.java
@@ -22,12 +22,15 @@
 import org.eclipse.emf.ecp.view.spi.stack.model.VStackItem;
 import org.eclipse.emf.ecp.view.spi.stack.model.VStackLayout;
 import org.eclipse.emf.ecp.view.spi.stack.model.VStackPackage;
+import org.eclipse.emf.ecp.view.template.model.VTViewTemplateProvider;
 import org.eclipse.emf.edit.command.SetCommand;
 import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain;
 import org.eclipse.emf.edit.domain.EditingDomain;
 import org.eclipse.emfforms.spi.common.report.ReportService;
 import org.eclipse.emfforms.spi.core.services.databinding.DatabindingFailedException;
 import org.eclipse.emfforms.spi.core.services.databinding.DatabindingFailedReport;
+import org.eclipse.emfforms.spi.core.services.databinding.EMFFormsDatabinding;
+import org.eclipse.emfforms.spi.core.services.label.EMFFormsLabelProvider;
 import org.eclipse.jface.dialogs.MessageDialog;
 import org.eclipse.swt.widgets.Label;
 
@@ -43,10 +46,15 @@
 	 * @param vElement the view model element to be rendered
 	 * @param viewContext the view context
 	 * @param reportService the {@link ReportService}
+	 * @param databindingService The {@link EMFFormsDatabinding}
+	 * @param labelProvider The {@link EMFFormsLabelProvider}
+	 * @param viewTemplateProvider The {@link VTViewTemplateProvider}
 	 */
 	@Inject
-	public StackItemControlRenderer(VControl vElement, ViewModelContext viewContext, ReportService reportService) {
-		super(vElement, viewContext, reportService);
+	public StackItemControlRenderer(VControl vElement, ViewModelContext viewContext, ReportService reportService,
+		EMFFormsDatabinding databindingService, EMFFormsLabelProvider labelProvider,
+		VTViewTemplateProvider viewTemplateProvider) {
+		super(vElement, viewContext, reportService, databindingService, labelProvider, viewTemplateProvider);
 	}
 
 	/**
diff --git a/bundles/org.eclipse.emf.ecp.ui.view.editor.controls/src/org/eclipse/emf/ecp/view/internal/editor/handler/SelectAttributesWizard.java b/bundles/org.eclipse.emf.ecp.ui.view.editor.controls/src/org/eclipse/emf/ecp/view/internal/editor/handler/SelectAttributesWizard.java
index ce25a61..d901e79 100644
--- a/bundles/org.eclipse.emf.ecp.ui.view.editor.controls/src/org/eclipse/emf/ecp/view/internal/editor/handler/SelectAttributesWizard.java
+++ b/bundles/org.eclipse.emf.ecp.ui.view.editor.controls/src/org/eclipse/emf/ecp/view/internal/editor/handler/SelectAttributesWizard.java
@@ -119,7 +119,7 @@
 	}
 
 	/**
-	 * @param view
+	 * @param view The VView to use
 	 */
 	protected void setView(VView view) {
 		this.view = view;
diff --git a/bundles/org.eclipse.emf.ecp.ui.view.editor.controls/src/org/eclipse/emf/ecp/view/spi/editor/controls/AbstractFilteredReferenceCommand.java b/bundles/org.eclipse.emf.ecp.ui.view.editor.controls/src/org/eclipse/emf/ecp/view/spi/editor/controls/AbstractFilteredReferenceCommand.java
index 8bf5899..e57f71b 100644
--- a/bundles/org.eclipse.emf.ecp.ui.view.editor.controls/src/org/eclipse/emf/ecp/view/spi/editor/controls/AbstractFilteredReferenceCommand.java
+++ b/bundles/org.eclipse.emf.ecp.ui.view.editor.controls/src/org/eclipse/emf/ecp/view/spi/editor/controls/AbstractFilteredReferenceCommand.java
@@ -79,12 +79,9 @@
 

 	@Override

 	protected void doExecute() {

-		// if (rootClass == null) {

-		// return;

-		// }

 		final AdapterFactoryLabelProvider labelProvider = new AdapterFactoryLabelProvider(composedAdapterFactory);

 		final ECPViewEditorTreeSelectionDialog dialog = new ECPViewEditorTreeSelectionDialog(shell, labelProvider,

-			getContentProvider(rootClass));

+			new EReferenceTreeContenProvider());

 		validator.setECPViewEditorTreeSelectionDialog(dialog);

 		dialog.setAllowMultiple(false);

 		dialog.setValidator(validator);

@@ -121,96 +118,98 @@
 	 */

 	protected abstract void setSelectedValues(T selectedFeature, List<EReference> bottomUpPath);

 

-	private ITreeContentProvider getContentProvider(EClass rootClass) {

-		return new ITreeContentProvider() {

+	/**

+	 * Content provider for a tree showing all {@link EReference}s within a {@link EClass} or {@link EPackage}.

+	 *

+	 * @author Jonas Helming

+	 *

+	 */

+	private final class EReferenceTreeContenProvider implements ITreeContentProvider {

+		@Override

+		public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {

+			// Do nothing (no input change expected/supported)

 

-			@Override

-			public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {

-				// TODO Auto-generated method stub

+		}

+

+		@Override

+		public void dispose() {

+			// Do Nothing, no listeners instanciated

+		}

+

+		@Override

+		public boolean hasChildren(Object element) {

+

+			if (EPackage.class.isInstance(element)) {

+				return true;

+			}

+			if (EClass.class.isInstance(element)) {

+				final EClass eClass = (EClass) element;

+				final boolean hasReferences = !eClass.getEAllReferences().isEmpty();

+				final boolean hasAttributes = !eClass.getEAllAttributes().isEmpty();

+				return hasReferences || hasAttributes;

 

 			}

+			if (EReference.class.isInstance(element)) {

+				final EReference eReference = (EReference) element;

 

-			@Override

-			public void dispose() {

-				// TODO Auto-generated method stub

-

-			}

-

-			@Override

-			public boolean hasChildren(Object element) {

-

-				if (EPackage.class.isInstance(element)) {

-					return true;

-				}

-				if (EClass.class.isInstance(element)) {

-					final EClass eClass = (EClass) element;

-					final boolean hasReferences = !eClass.getEAllReferences().isEmpty();

-					final boolean hasAttributes = !eClass.getEAllAttributes().isEmpty();

-					return hasReferences || hasAttributes;

-

-				}

-				if (EReference.class.isInstance(element)) {

-					final EReference eReference = (EReference) element;

-

-					return eReference.isMany() && !allowMultiReferences ? false : hasChildren(eReference

+				return eReference.isMany() && !allowMultiReferences ? false

+					: hasChildren(eReference

 						.getEReferenceType());

-				}

-				return false;

 			}

+			return false;

+		}

 

-			@Override

-			public Object getParent(Object element) {

-				// TODO Auto-generated method stub

-				return null;

+		@Override

+		public Object getParent(Object element) {

+			// TODO Auto-generated method stub

+			return null;

+		}

+

+		@Override

+		public Object[] getElements(Object inputElement) {

+			return getChildren(inputElement);

+		}

+

+		@Override

+		public Object[] getChildren(Object parentElement) {

+			if (EClass.class.isInstance(parentElement)) {

+				final EClass eClass = (EClass) parentElement;

+				final Set<Object> result = getElementsForEClass(eClass);

+				return result.toArray();

 			}

-

-			@Override

-			public Object[] getElements(Object inputElement) {

-				return getChildren(inputElement);

+			if (EReference.class.isInstance(parentElement)) {

+				final EReference eReference = (EReference) parentElement;

+				final Set<Object> result = getElementsForEClass(eReference.getEReferenceType());

+				return result.toArray();

 			}

-

-			@Override

-			public Object[] getChildren(Object parentElement) {

-				if (EClass.class.isInstance(parentElement)) {

-					final EClass eClass = (EClass) parentElement;

-					final Set<Object> result = getElementsForEClass(eClass);

-					return result.toArray();

-				}

-				if (EReference.class.isInstance(parentElement)) {

-					final EReference eReference = (EReference) parentElement;

-					final Set<Object> result = getElementsForEClass(eReference.getEReferenceType());

-					return result.toArray();

-				}

-				if (EPackage.Registry.class.isInstance(parentElement)) {

-					return EPackage.Registry.class.cast(parentElement).values().toArray();

-				}

-				if (EPackage.class.isInstance(parentElement)) {

-					final Set<Object> children = new LinkedHashSet<Object>();

-					children.addAll(EPackage.class.cast(parentElement).getESubpackages());

-					children.addAll(EPackage.class.cast(parentElement).getEClassifiers());

-					return children.toArray();

-				}

-				return null;

+			if (EPackage.Registry.class.isInstance(parentElement)) {

+				return EPackage.Registry.class.cast(parentElement).values().toArray();

 			}

+			if (EPackage.class.isInstance(parentElement)) {

+				final Set<Object> children = new LinkedHashSet<Object>();

+				children.addAll(EPackage.class.cast(parentElement).getESubpackages());

+				children.addAll(EPackage.class.cast(parentElement).getEClassifiers());

+				return children.toArray();

+			}

+			return null;

+		}

 

-			private Set<Object> getElementsForEClass(EClass eClass) {

-				final Set<Object> result = new LinkedHashSet<Object>();

-				if (eClass.isAbstract() || eClass.isInterface()) {

-					// find eClasses which are not abstract

-					for (final EClassifier eClassifier : eClass.getEPackage().getEClassifiers()) {

-						if (eClass != eClassifier && EClass.class.isInstance(eClassifier)

-							&& eClass.isSuperTypeOf((EClass) eClassifier)) {

-							result.add(eClassifier);

-						}

+		private Set<Object> getElementsForEClass(EClass eClass) {

+			final Set<Object> result = new LinkedHashSet<Object>();

+			if (eClass.isAbstract() || eClass.isInterface()) {

+				// find eClasses which are not abstract

+				for (final EClassifier eClassifier : eClass.getEPackage().getEClassifiers()) {

+					if (eClass != eClassifier && EClass.class.isInstance(eClassifier)

+						&& eClass.isSuperTypeOf((EClass) eClassifier)) {

+						result.add(eClassifier);

 					}

 				}

-				else {

-					result.addAll(eClass.getEAllReferences());

-					result.addAll(eClass.getEAllAttributes());

-				}

-				return result;

+			} else {

+				result.addAll(eClass.getEAllReferences());

+				result.addAll(eClass.getEAllAttributes());

 			}

-		};

+			return result;

+		}

 	}

 

 }

diff --git a/bundles/org.eclipse.emf.ecp.ui.view.linewrapper/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.ui.view.linewrapper/META-INF/MANIFEST.MF
index c5010c0..571cea9 100644
--- a/bundles/org.eclipse.emf.ecp.ui.view.linewrapper/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.ui.view.linewrapper/META-INF/MANIFEST.MF
@@ -2,9 +2,10 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: ECP String Modifier with Line Wrapping
 Bundle-SymbolicName: org.eclipse.emf.ecp.ui.view.linewrapper;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emf.ecp.internal.ui.view.linewrapper;version="1.16.0";x-internal:=true
-Require-Bundle: org.eclipse.emf.ecp.ui.view;bundle-version="[1.16.0,1.17.0)"
+Export-Package: org.eclipse.emf.ecp.internal.ui.view.linewrapper;version="1.17.0";x-internal:=true
+Require-Bundle: org.eclipse.emf.ecp.ui.view;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.ui.view.linewrapper
diff --git a/bundles/org.eclipse.emf.ecp.ui.view.linewrapper/pom.xml b/bundles/org.eclipse.emf.ecp.ui.view.linewrapper/pom.xml
index de6fab1..45f1456 100644
--- a/bundles/org.eclipse.emf.ecp.ui.view.linewrapper/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.ui.view.linewrapper/pom.xml
@@ -7,7 +7,7 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
 
diff --git a/bundles/org.eclipse.emf.ecp.ui.view.swt.di/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.ui.view.swt.di/META-INF/MANIFEST.MF
index 6666547..738ffea 100644
--- a/bundles/org.eclipse.emf.ecp.ui.view.swt.di/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.ui.view.swt.di/META-INF/MANIFEST.MF
@@ -2,30 +2,31 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Dependency Injection SWT Renderer
 Bundle-SymbolicName: org.eclipse.emf.ecp.ui.view.swt.di;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emf.ecp.ui.view.swt.di.renderer;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.ui.view.swt.di.util;version="1.16.0";x-internal:=true
-Require-Bundle: org.eclipse.emf.ecp.view.model.common.di;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.core.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.core.databinding.observable;bundle-version="[1.4.1,2.0.0)",
-  org.eclipse.emf.edit;bundle-version="[2.8.0,3.0.0)",
-  org.eclipse.core.databinding;bundle-version="[1.4.1,2.0.0)",
-  org.eclipse.emf.ecp.ui.view;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.ui.view.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.e4.core.contexts;bundle-version="[1.3.100,2.0.0)",
-  org.eclipse.emf.ecp.view.template.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.swt.core;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services.editsupport;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.localization;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.databinding;bundle-version="[1.3.0,2.0.0)"
+Export-Package: org.eclipse.emf.ecp.ui.view.swt.di.renderer;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.ui.view.swt.di.util;version="1.17.0";x-internal:=true
+Require-Bundle: org.eclipse.emf.ecp.view.model.common.di;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.core.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.core.databinding.observable;bundle-version="[1.4.1,2.0.0)",
+ org.eclipse.emf.edit;bundle-version="[2.8.0,3.0.0)",
+ org.eclipse.core.databinding;bundle-version="[1.4.1,2.0.0)",
+ org.eclipse.emf.ecp.ui.view;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.ui.view.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.e4.core.contexts;bundle-version="[1.3.100,2.0.0)",
+ org.eclipse.emf.ecp.view.template.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.swt.core;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services.editsupport;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.localization;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.databinding;bundle-version="[1.3.0,2.0.0)"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
-Import-Package: org.eclipse.emf.ecp.edit.spi.swt.util;version="[1.16.0,1.17.0)",
- org.eclipse.emfforms.spi.common.locale;version="[1.16.0,1.17.0)",
- org.eclipse.emfforms.spi.common.report;version="[1.16.0,1.17.0)",
+Import-Package: org.eclipse.emf.ecp.edit.spi.swt.util;version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.spi.common.locale;version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.spi.common.report;version="[1.17.0,1.18.0]",
  org.eclipse.swt.graphics;version="0.0.0",
  org.eclipse.swt.widgets;version="0.0.0",
  org.osgi.framework;version="1.8.0"
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.ui.view.swt.di
diff --git a/bundles/org.eclipse.emf.ecp.ui.view.swt.di/pom.xml b/bundles/org.eclipse.emf.ecp.ui.view.swt.di/pom.xml
index 0f91c5d..f43c2a8 100644
--- a/bundles/org.eclipse.emf.ecp.ui.view.swt.di/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.ui.view.swt.di/pom.xml
@@ -7,7 +7,7 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
 
diff --git a/bundles/org.eclipse.emf.ecp.ui.view.swt/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.ui.view.swt/META-INF/MANIFEST.MF
index 43d627d..7e6891b 100644
--- a/bundles/org.eclipse.emf.ecp.ui.view.swt/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.ui.view.swt/META-INF/MANIFEST.MF
@@ -2,34 +2,35 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %Bundle-Name
 Bundle-SymbolicName: org.eclipse.emf.ecp.ui.view.swt;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Activator: org.eclipse.emf.ecp.view.internal.swt.Activator
 Bundle-Vendor: %Bundle-Vendor
-Export-Package: org.eclipse.emf.ecp.ui.view.swt;version="1.16.0",
- org.eclipse.emf.ecp.ui.view.swt.reference;version="1.16.0",
- org.eclipse.emf.ecp.view.internal.swt;version="1.16.0";x-friends:="org.eclipse.emf.ecp.view.table.ui.swt.test,org.eclipse.emf.ecp.view.context.test",
- org.eclipse.emf.ecp.view.spi.swt;version="1.16.0",
- org.eclipse.emf.ecp.view.spi.swt.layout;version="1.16.0",
- org.eclipse.emf.ecp.view.spi.swt.reporting;version="1.16.0"
+Export-Package: org.eclipse.emf.ecp.ui.view.swt;version="1.17.0",
+ org.eclipse.emf.ecp.ui.view.swt.reference;version="1.17.0",
+ org.eclipse.emf.ecp.view.internal.swt;version="1.17.0";x-friends:="org.eclipse.emf.ecp.view.table.ui.swt.test,org.eclipse.emf.ecp.view.context.test",
+ org.eclipse.emf.ecp.view.spi.swt;version="1.17.0",
+ org.eclipse.emf.ecp.view.spi.swt.layout;version="1.17.0",
+ org.eclipse.emf.ecp.view.spi.swt.reporting;version="1.17.0"
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.5.0,4.0.0)",
- org.eclipse.emf.ecp.ui.view;bundle-version="[1.16.0,1.17.0)";visibility:=reexport,
- org.eclipse.emf.ecp.view.model;bundle-version="[1.16.0,1.17.0)";visibility:=reexport,
- org.eclipse.emf.ecp.edit;bundle-version="[1.16.0,1.17.0)",
- org.eclipse.emf.ecp.edit.swt;bundle-version="[1.16.0,1.17.0)",
- org.eclipse.emf.ecp.view.context;bundle-version="[1.16.0,1.17.0)",
- org.eclipse.emf.ecp.view.model.common;bundle-version="[1.16.0,1.17.0)";visibility:=reexport,
- org.eclipse.emf.ecp.common.ui;bundle-version="[1.16.0,1.17.0)",
+ org.eclipse.emf.ecp.ui.view;bundle-version="[1.17.0,1.18.0]";visibility:=reexport,
+ org.eclipse.emf.ecp.view.model;bundle-version="[1.17.0,1.18.0]";visibility:=reexport,
+ org.eclipse.emf.ecp.edit;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.edit.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.context;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.model.common;bundle-version="[1.17.0,1.18.0]";visibility:=reexport,
+ org.eclipse.emf.ecp.common.ui;bundle-version="[1.17.0,1.18.0]",
  org.eclipse.emf.edit;bundle-version="[2.8.0,3.0.0)",
- org.eclipse.emfforms.core.services.editsupport;bundle-version="[1.16.0,1.17.0)",
- org.eclipse.emfforms.swt.core;bundle-version="[1.16.0,1.17.0)";visibility:=reexport
+ org.eclipse.emfforms.core.services.editsupport;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.swt.core;bundle-version="[1.17.0,1.18.0]";visibility:=reexport,
+ org.eclipse.emfforms.core.bazaar;bundle-version="[1.17.0,1.18.0)"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
-Service-Component: OSGI-INF/org.eclipse.emf.ecp.ui.view.swt.DefaultReferenceServiceFactory.xml
+Service-Component: OSGI-INF/org.eclipse.emf.ecp.ui.view.swt.DefaultReferenceServiceFactory.xml,
+ OSGI-INF/DefaultCreateNewModelElementStrategyProvider.xml
 Bundle-ActivationPolicy: lazy
 Import-Package: org.eclipse.core.commands;version="0.0.0",
- org.eclipse.emf.ecp.edit.spi.swt.util;version="[1.16.0,1.17.0)",
- org.eclipse.emfforms.bazaar;version="[1.16.0,1.17.0)",
- org.eclipse.emfforms.spi.common.report;version="[1.16.0,1.17.0)",
- org.eclipse.emfforms.spi.core.services.view;version="[1.16.0,1.17.0)",
+ org.eclipse.emf.ecp.edit.spi.swt.util;version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.spi.common.report;version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.spi.core.services.view;version="[1.17.0,1.18.0]",
  org.eclipse.jface;version="0.0.0",
  org.eclipse.jface.action;version="0.0.0",
  org.eclipse.jface.dialogs;version="0.0.0",
@@ -46,3 +47,4 @@
  org.eclipse.swt.widgets;version="0.0.0",
  org.osgi.service.component;version="[1.2.0,2.0.0)",
  org.osgi.service.component.annotations;version="[1.2.0,2.0.0)";resolution:=optional
+Automatic-Module-Name: org.eclipse.emf.ecp.ui.view.swt
diff --git a/bundles/org.eclipse.emf.ecp.ui.view.swt/OSGI-INF/DefaultCreateNewModelElementStrategyProvider.xml b/bundles/org.eclipse.emf.ecp.ui.view.swt/OSGI-INF/DefaultCreateNewModelElementStrategyProvider.xml
new file mode 100644
index 0000000..6f4b8f6
--- /dev/null
+++ b/bundles/org.eclipse.emf.ecp.ui.view.swt/OSGI-INF/DefaultCreateNewModelElementStrategyProvider.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" activate="activate" deactivate="deactivate" name="DefaultCreateNewModelElementStrategyProvider">
+   <property name="service.ranking" type="Integer" value="1"/>
+   <service>
+      <provide interface="org.eclipse.emf.ecp.ui.view.swt.reference.CreateNewModelElementStrategy$Provider"/>
+      <provide interface="org.eclipse.emf.ecp.ui.view.swt.reference.DefaultCreateNewModelElementStrategyProvider"/>
+   </service>
+   <reference bind="addEClassSelectionStrategyProvider" cardinality="0..n" interface="org.eclipse.emf.ecp.ui.view.swt.reference.EClassSelectionStrategy$Provider" name="EClassSelectionStrategyProvider" policy="dynamic" unbind="removeEClassSelectionStrategyProvider"/>
+   <reference bind="setReportService" interface="org.eclipse.emfforms.spi.common.report.ReportService" name="ReportService"/>
+   <implementation class="org.eclipse.emf.ecp.ui.view.swt.reference.DefaultCreateNewModelElementStrategyProvider"/>
+</scr:component>
\ No newline at end of file
diff --git a/bundles/org.eclipse.emf.ecp.ui.view.swt/OSGI-INF/org.eclipse.emf.ecp.ui.view.swt.DefaultReferenceServiceFactory.xml b/bundles/org.eclipse.emf.ecp.ui.view.swt/OSGI-INF/org.eclipse.emf.ecp.ui.view.swt.DefaultReferenceServiceFactory.xml
index 7bc4956..c0c3e19 100644
--- a/bundles/org.eclipse.emf.ecp.ui.view.swt/OSGI-INF/org.eclipse.emf.ecp.ui.view.swt.DefaultReferenceServiceFactory.xml
+++ b/bundles/org.eclipse.emf.ecp.ui.view.swt/OSGI-INF/org.eclipse.emf.ecp.ui.view.swt.DefaultReferenceServiceFactory.xml
@@ -5,7 +5,7 @@
       <provide interface="org.eclipse.emfforms.spi.core.services.view.EMFFormsViewServiceFactory"/>
    </service>
    <reference bind="addAttachmentStrategyProvider" cardinality="0..n" interface="org.eclipse.emf.ecp.ui.view.swt.reference.AttachmentStrategy$Provider" name="AttachmentStrategyProvider" policy="dynamic" unbind="removeAttachmentStrategyProvider"/>
-   <reference bind="addEClassSelectionStrategyProvider" cardinality="0..n" interface="org.eclipse.emf.ecp.ui.view.swt.reference.EClassSelectionStrategy$Provider" name="EClassSelectionStrategyProvider" policy="dynamic" unbind="removeEClassSelectionStrategyProvider"/>
+   <reference bind="addCreateNewModelElementStrategyProvider" cardinality="0..n" interface="org.eclipse.emf.ecp.ui.view.swt.reference.CreateNewModelElementStrategy$Provider" name="CreateNewModelElementStrategyProvider" policy="dynamic" unbind="removeCreateNewModelElementStrategyProvider"/>
    <reference bind="addEObjectSelectionStrategyProvider" cardinality="0..n" interface="org.eclipse.emf.ecp.ui.view.swt.reference.EObjectSelectionStrategy$Provider" name="EObjectSelectionStrategyProvider" policy="dynamic" unbind="removeEObjectSelectionStrategyProvider"/>
    <reference bind="addOpenInNewContextStrategyProvider" cardinality="0..n" interface="org.eclipse.emf.ecp.ui.view.swt.reference.OpenInNewContextStrategy$Provider" name="OpenInNewContextStrategyProvider" policy="dynamic" unbind="removeOpenInNewContextStrategyProvider"/>
    <reference bind="addReferenceStrategyProvider" cardinality="0..n" interface="org.eclipse.emf.ecp.ui.view.swt.reference.ReferenceStrategy$Provider" name="ReferenceStrategyProvider" policy="dynamic" unbind="removeReferenceStrategyProvider"/>
diff --git a/bundles/org.eclipse.emf.ecp.ui.view.swt/pom.xml b/bundles/org.eclipse.emf.ecp.ui.view.swt/pom.xml
index cb60ed0..eddf05c 100644
--- a/bundles/org.eclipse.emf.ecp.ui.view.swt/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.ui.view.swt/pom.xml
@@ -7,7 +7,7 @@
   <parent>

     <groupId>org.eclipse.emf.ecp</groupId>

     <artifactId>ecp-bundles-parent</artifactId>

-    <version>1.16.0-SNAPSHOT</version>

+    <version>1.17.0-SNAPSHOT</version>

     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>

   </parent>

 

diff --git a/bundles/org.eclipse.emf.ecp.ui.view.swt/src/org/eclipse/emf/ecp/ui/view/swt/DefaultReferenceService.java b/bundles/org.eclipse.emf.ecp.ui.view.swt/src/org/eclipse/emf/ecp/ui/view/swt/DefaultReferenceService.java
index e9f1203..16274f9 100644
--- a/bundles/org.eclipse.emf.ecp.ui.view.swt/src/org/eclipse/emf/ecp/ui/view/swt/DefaultReferenceService.java
+++ b/bundles/org.eclipse.emf.ecp.ui.view.swt/src/org/eclipse/emf/ecp/ui/view/swt/DefaultReferenceService.java
@@ -14,34 +14,24 @@
 
 import static java.util.Collections.singleton;
 
-import java.util.Collection;
-import java.util.HashSet;
 import java.util.Iterator;
 import java.util.LinkedHashSet;
 import java.util.Set;
 
-import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.EObject;
-import org.eclipse.emf.ecore.EPackage;
 import org.eclipse.emf.ecore.EReference;
-import org.eclipse.emf.ecore.util.EcoreUtil;
-import org.eclipse.emf.ecp.common.spi.EMFUtils;
 import org.eclipse.emf.ecp.edit.spi.ReferenceService;
 import org.eclipse.emf.ecp.internal.edit.ECPControlHelper;
-import org.eclipse.emf.ecp.spi.common.ui.CompositeFactory;
 import org.eclipse.emf.ecp.spi.common.ui.SelectModelElementWizardFactory;
-import org.eclipse.emf.ecp.spi.common.ui.composites.SelectionComposite;
 import org.eclipse.emf.ecp.ui.view.swt.reference.AttachmentStrategy;
-import org.eclipse.emf.ecp.ui.view.swt.reference.EClassSelectionStrategy;
+import org.eclipse.emf.ecp.ui.view.swt.reference.CreateNewModelElementStrategy;
 import org.eclipse.emf.ecp.ui.view.swt.reference.EObjectSelectionStrategy;
 import org.eclipse.emf.ecp.ui.view.swt.reference.OpenInNewContextStrategy;
 import org.eclipse.emf.ecp.ui.view.swt.reference.ReferenceStrategy;
 import org.eclipse.emf.ecp.view.spi.context.ViewModelContext;
 import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
-import org.eclipse.emfforms.spi.common.report.AbstractReport;
-import org.eclipse.emfforms.spi.common.report.ReportService;
+import org.eclipse.emfforms.common.Optional;
 import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.viewers.TreeViewer;
 import org.eclipse.swt.widgets.Display;
 
 /**
@@ -64,7 +54,8 @@
  * </p>
  * <ul>
  * <li>{@link org.eclipse.emf.ecp.ui.view.swt.reference.AttachmentStrategy AttachmentStrategy}</li>
- * <li>{@link org.eclipse.emf.ecp.ui.view.swt.reference.EClassSelectionStrategy EClassSelectionStrategy}</li>
+ * <li>{@link org.eclipse.emf.ecp.ui.view.swt.reference.CreateNewModelElementStrategy
+ * CreateNewModelElementStrategy}</li>
  * <li>{@link org.eclipse.emf.ecp.ui.view.swt.reference.EObjectSelectionStrategy EObjectSelectionStrategy}</li>
  * <li>{@link org.eclipse.emf.ecp.ui.view.swt.reference.OpenInNewContextStrategy OpenInNewContextStrategy}</li>
  * <li>{@link org.eclipse.emf.ecp.ui.view.swt.reference.ReferenceStrategy ReferenceStrategy}</li>
@@ -85,17 +76,15 @@
 @SuppressWarnings("restriction")
 public class DefaultReferenceService implements ReferenceService {
 
-	private ViewModelContext context;
-
 	private EObjectSelectionStrategy eobjectSelectionStrategy = EObjectSelectionStrategy.NULL;
-	private EClassSelectionStrategy eclassSelectionStrategy = EClassSelectionStrategy.NULL;
+	private CreateNewModelElementStrategy createNewModelElementStrategy = CreateNewModelElementStrategy.DEFAULT;
 	private AttachmentStrategy attachmentStrategy = AttachmentStrategy.DEFAULT;
 	private ReferenceStrategy referenceStrategy = ReferenceStrategy.DEFAULT;
 	private OpenInNewContextStrategy openInNewContextStrategy = OpenInNewContextStrategy.DEFAULT;
 
 	@Override
 	public void instantiate(ViewModelContext context) {
-		this.context = context;
+		// Nothing to do
 	}
 
 	@Override
@@ -108,53 +97,42 @@
 		return 2;
 	}
 
+	@Deprecated
 	@Override
 	public void addNewModelElements(EObject eObject, EReference eReference) {
-		final EObject newMEInstance = getNewModelElementInstance(eObject, eReference);
+		addNewModelElements(eObject, eReference, true);
+	}
 
-		if (newMEInstance == null) {
-			return;
-		}
-
+	/**
+	 * @since 1.17
+	 */
+	@Override
+	public Optional<EObject> addNewModelElements(EObject eObject, EReference eReference, boolean openInNewContext) {
 		if (eReference.isContainer()) {
-			// TODO language
 			MessageDialog.openError(Display.getDefault().getActiveShell(), "Error", //$NON-NLS-1$
 				"Operation not permitted for container references!");//$NON-NLS-1$
-			return;
+			return Optional.empty();
 		}
 
+		final Optional<EObject> newMEInstanceOptional = createNewModelElementStrategy.createNewModelElement(eObject,
+			eReference);
+
+		if (!newMEInstanceOptional.isPresent()) {
+			return Optional.empty();
+		}
+		final EObject newMEInstance = newMEInstanceOptional.get();
+
 		if (!eReference.isContainment()) {
 			attachmentStrategy.addElementToModel(eObject, eReference, newMEInstance);
 		}
 
 		referenceStrategy.addElementsToReference(eObject, eReference, singleton(newMEInstance));
 
-		openInNewContext(newMEInstance);
-	}
-
-	private EObject getNewModelElementInstance(EObject owner, EReference reference) {
-		final Collection<EClass> classes = eclassSelectionStrategy.collectEClasses(owner, reference,
-			EMFUtils.getSubClasses(reference.getEReferenceType()));
-		if (classes.isEmpty()) {
-			final String errorMessage = String.format("No concrete classes for the type %1$s were found!", //$NON-NLS-1$
-				reference.getEReferenceType().getName());
-			MessageDialog.openError(Display.getDefault().getActiveShell(), "Error", //$NON-NLS-1$
-				errorMessage);
-			context.getService(ReportService.class).report(new AbstractReport(errorMessage));
-			return null;
+		if (openInNewContext) {
+			openInNewContext(newMEInstance);
 		}
-		if (classes.size() == 1) {
-			return EcoreUtil.create(classes.iterator().next());
-		}
-		return getModelElementInstanceFromList(classes);
-	}
 
-	private EObject getModelElementInstanceFromList(Collection<EClass> classes) {
-		final SelectionComposite<TreeViewer> helper = CompositeFactory.getSelectModelClassComposite(
-			new HashSet<EPackage>(),
-			new HashSet<EPackage>(), classes);
-
-		return SelectModelElementWizardFactory.openCreateNewModelElementDialog(helper);
+		return newMEInstanceOptional;
 	}
 
 	@Override
@@ -205,19 +183,16 @@
 	}
 
 	/**
-	 * Set a strategy for selection of eligible {@link EClass}es for creation
-	 * of new objects in references.
+	 * Add a strategy for the creation of a new model element.
 	 *
-	 * @param strategy a strategy to set
-	 *
-	 * @since 1.16
+	 * @param strategy The strategy to set
 	 */
-	void setEClassSelectionStrategy(EClassSelectionStrategy strategy) {
+	void setCreateNewModelElementStrategy(CreateNewModelElementStrategy strategy) {
 		if (strategy == null) {
-			strategy = EClassSelectionStrategy.NULL;
+			strategy = CreateNewModelElementStrategy.DEFAULT;
 		}
 
-		eclassSelectionStrategy = strategy;
+		createNewModelElementStrategy = strategy;
 	}
 
 	/**
diff --git a/bundles/org.eclipse.emf.ecp.ui.view.swt/src/org/eclipse/emf/ecp/ui/view/swt/DefaultReferenceServiceFactory.java b/bundles/org.eclipse.emf.ecp.ui.view.swt/src/org/eclipse/emf/ecp/ui/view/swt/DefaultReferenceServiceFactory.java
index 0173b00..6c8245b 100644
--- a/bundles/org.eclipse.emf.ecp.ui.view.swt/src/org/eclipse/emf/ecp/ui/view/swt/DefaultReferenceServiceFactory.java
+++ b/bundles/org.eclipse.emf.ecp.ui.view.swt/src/org/eclipse/emf/ecp/ui/view/swt/DefaultReferenceServiceFactory.java
@@ -9,6 +9,7 @@
  * Contributors:
  * Eugen - initial API and implementation
  * Christian W. Damus - bug 529542
+ * Lucas Koehler - refactored common bazaar functionality out
  ******************************************************************************/
 package org.eclipse.emf.ecp.ui.view.swt;
 
@@ -16,28 +17,22 @@
 import static org.osgi.service.component.annotations.ReferencePolicy.DYNAMIC;
 
 import java.util.Collection;
-import java.util.Dictionary;
-import java.util.Enumeration;
-import java.util.HashMap;
 import java.util.List;
-import java.util.Map;
 import java.util.Set;
 
-import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.EObject;
 import org.eclipse.emf.ecore.EReference;
 import org.eclipse.emf.ecp.edit.spi.ReferenceService;
 import org.eclipse.emf.ecp.ui.view.swt.reference.AttachmentStrategy;
-import org.eclipse.emf.ecp.ui.view.swt.reference.EClassSelectionStrategy;
+import org.eclipse.emf.ecp.ui.view.swt.reference.CreateNewModelElementStrategy;
 import org.eclipse.emf.ecp.ui.view.swt.reference.EObjectSelectionStrategy;
 import org.eclipse.emf.ecp.ui.view.swt.reference.OpenInNewContextStrategy;
 import org.eclipse.emf.ecp.ui.view.swt.reference.ReferenceStrategy;
+import org.eclipse.emf.ecp.ui.view.swt.reference.ReferenceStrategyUtil;
 import org.eclipse.emf.ecp.view.spi.context.ViewModelContext;
 import org.eclipse.emfforms.bazaar.Bazaar;
-import org.eclipse.emfforms.bazaar.BazaarContext;
-import org.eclipse.emfforms.bazaar.Create;
-import org.eclipse.emfforms.bazaar.StaticBid;
-import org.eclipse.emfforms.bazaar.Vendor;
+import org.eclipse.emfforms.common.Optional;
+import org.eclipse.emfforms.spi.bazaar.BazaarUtil;
 import org.eclipse.emfforms.spi.core.services.view.EMFFormsViewContext;
 import org.eclipse.emfforms.spi.core.services.view.EMFFormsViewServiceFactory;
 import org.eclipse.emfforms.spi.core.services.view.EMFFormsViewServicePolicy;
@@ -60,13 +55,15 @@
 
 	private ComponentContext context;
 
-	private final Bazaar<EObjectSelectionStrategy> eobjectSelectionStrategyBazaar = createBazaar(
+	private final Bazaar<EObjectSelectionStrategy> eobjectSelectionStrategyBazaar = BazaarUtil.createBazaar(
 		EObjectSelectionStrategy.NULL);
-	private final Bazaar<EClassSelectionStrategy> eclassSelectionStrategyBazaar = createBazaar(
-		EClassSelectionStrategy.NULL);
-	private final Bazaar<AttachmentStrategy> attachmentStrategyBazaar = createBazaar(AttachmentStrategy.DEFAULT);
-	private final Bazaar<ReferenceStrategy> referenceStrategyBazaar = createBazaar(ReferenceStrategy.DEFAULT);
-	private final Bazaar<OpenInNewContextStrategy> openInNewContextStrategyBazaar = createBazaar(
+	private final Bazaar<CreateNewModelElementStrategy> createNewModelElementStrategyBazaar = BazaarUtil.createBazaar(
+		CreateNewModelElementStrategy.DEFAULT);
+	private final Bazaar<AttachmentStrategy> attachmentStrategyBazaar = BazaarUtil
+		.createBazaar(AttachmentStrategy.DEFAULT);
+	private final Bazaar<ReferenceStrategy> referenceStrategyBazaar = BazaarUtil
+		.createBazaar(ReferenceStrategy.DEFAULT);
+	private final Bazaar<OpenInNewContextStrategy> openInNewContextStrategyBazaar = BazaarUtil.createBazaar(
 		OpenInNewContextStrategy.DEFAULT);
 
 	/**
@@ -76,32 +73,6 @@
 		super();
 	}
 
-	private static <T> Bazaar<T> createBazaar(T defaultStrategy) {
-		final Bazaar.Builder<T> builder = builder(defaultStrategy);
-		return builder.build();
-	}
-
-	private static <T> Bazaar.Builder<T> builder(final T defaultStrategy) {
-		/**
-		 * A vendor of the default, that tries to lose every bid.
-		 */
-		@StaticBid(bid = Double.NEGATIVE_INFINITY)
-		class DefaultVendor implements Vendor<T> {
-			/**
-			 * Return the default strategy.
-			 *
-			 * @return the default strategy
-			 */
-			@Create
-			public T createDefault() {
-				return defaultStrategy;
-			}
-		}
-
-		final Bazaar.Builder<T> result = Bazaar.Builder.empty();
-		return result.threadSafe().add(new DefaultVendor());
-	}
-
 	@Override
 	public EMFFormsViewServicePolicy getPolicy() {
 		return EMFFormsViewServicePolicy.LAZY;
@@ -142,6 +113,25 @@
 	}
 
 	/**
+	 * Add a create new model element strategy provider.
+	 *
+	 * @param provider the provider to add
+	 */
+	@Reference(cardinality = MULTIPLE, policy = DYNAMIC)
+	void addCreateNewModelElementStrategyProvider(CreateNewModelElementStrategy.Provider provider) {
+		createNewModelElementStrategyBazaar.addVendor(provider);
+	}
+
+	/**
+	 * Remove a create new model element strategy provider.
+	 *
+	 * @param provider the provider to remove
+	 */
+	void removeCreateNewModelElementStrategyProvider(CreateNewModelElementStrategy.Provider provider) {
+		createNewModelElementStrategyBazaar.removeVendor(provider);
+	}
+
+	/**
 	 * Add an open strategy provider.
 	 *
 	 * @param provider the provider to add
@@ -161,25 +151,6 @@
 	}
 
 	/**
-	 * Add an {@code EClass} selection strategy provider.
-	 *
-	 * @param provider the provider to add
-	 */
-	@Reference(cardinality = MULTIPLE, policy = DYNAMIC)
-	void addEClassSelectionStrategyProvider(EClassSelectionStrategy.Provider provider) {
-		eclassSelectionStrategyBazaar.addVendor(provider);
-	}
-
-	/**
-	 * Remove an {@code EClass} selection strategy provider.
-	 *
-	 * @param provider the provider to remove
-	 */
-	void removeEClassSelectionStrategyProvider(EClassSelectionStrategy.Provider provider) {
-		eclassSelectionStrategyBazaar.removeVendor(provider);
-	}
-
-	/**
 	 * Add an {@code EObject} selection strategy provider.
 	 *
 	 * @param provider the provider to add
@@ -246,7 +217,7 @@
 
 			// Inject customizations
 			drs.setAttachmentStrategy(createDynamicAttachmentStrategy());
-			drs.setEClassSelectionStrategy(createDynamicEClassSelectionStrategy());
+			drs.setCreateNewModelElementStrategy(createDynamicCreateNewModelElementStrategy());
 			drs.setEObjectSelectionStrategy(createDynamicEObjectSelectionStrategy());
 			drs.setOpenStrategy(createDynamicOpenInNewContextStrategy());
 			drs.setReferenceStrategy(createDynamicReferenceStrategy());
@@ -258,46 +229,13 @@
 		throw new IllegalStateException("The provided context is not a ViewModelContext."); //$NON-NLS-1$
 	}
 
-	private BazaarContext getBazaarContext(EObject owner, EReference reference) {
-		return baseContext(owner, reference).build();
-	}
-
-	private BazaarContext.Builder baseContext(EObject owner, EReference reference) {
-		return BazaarContext.Builder.with(adapt(context.getProperties()))
-			.put(EObject.class, owner)
-			.put(EReference.class, reference);
-	}
-
-	/**
-	 * Adapt a {@code dictionary} as a map.
-	 *
-	 * @param dictionary a dictionary
-	 * @return the {@code dictionary}, as a map
-	 */
-	static Map<String, ?> adapt(Dictionary<String, ?> dictionary) {
-		// The OSGi implementation of the read-only properties for all sorts of
-		// things is a map
-		if (dictionary instanceof Map<?, ?>) {
-			@SuppressWarnings("unchecked")
-			final Map<String, ?> result = (Map<String, ?>) dictionary;
-			return result;
-		}
-
-		final Map<String, Object> result = new HashMap<String, Object>();
-		for (final Enumeration<String> keys = dictionary.keys(); keys.hasMoreElements();) {
-			final String next = keys.nextElement();
-			result.put(next, dictionary.get(next));
-		}
-		return result;
-	}
-
 	private AttachmentStrategy createDynamicAttachmentStrategy() {
 		return new AttachmentStrategy() {
 
 			@Override
 			public boolean addElementToModel(EObject owner, EReference reference, EObject object) {
 				final AttachmentStrategy delegate = attachmentStrategyBazaar.createProduct(
-					getBazaarContext(owner, reference));
+					ReferenceStrategyUtil.createBazaarContext(context, owner, reference));
 				if (delegate == null) {
 					return false;
 				}
@@ -306,13 +244,28 @@
 		};
 	}
 
+	private CreateNewModelElementStrategy createDynamicCreateNewModelElementStrategy() {
+		return new CreateNewModelElementStrategy() {
+
+			@Override
+			public Optional<EObject> createNewModelElement(EObject owner, EReference reference) {
+				final CreateNewModelElementStrategy delegate = createNewModelElementStrategyBazaar
+					.createProduct(ReferenceStrategyUtil.createBazaarContext(context, owner, reference));
+				if (delegate == null) {
+					return Optional.empty();
+				}
+				return delegate.createNewModelElement(owner, reference);
+			}
+		};
+	}
+
 	private ReferenceStrategy createDynamicReferenceStrategy() {
 		return new ReferenceStrategy() {
 
 			@Override
 			public boolean addElementsToReference(EObject owner, EReference reference, Set<? extends EObject> objects) {
 				final ReferenceStrategy delegate = referenceStrategyBazaar.createProduct(
-					getBazaarContext(owner, reference));
+					ReferenceStrategyUtil.createBazaarContext(context, owner, reference));
 				if (delegate == null) {
 					return false;
 				}
@@ -321,26 +274,6 @@
 		};
 	}
 
-	private EClassSelectionStrategy createDynamicEClassSelectionStrategy() {
-		return new EClassSelectionStrategy() {
-
-			@Override
-			public Collection<EClass> collectEClasses(EObject owner, EReference reference,
-				Collection<EClass> eclasses) {
-
-				Collection<EClass> result = eclasses;
-
-				final List<EClassSelectionStrategy> delegates = eclassSelectionStrategyBazaar.createProducts(
-					getBazaarContext(owner, reference));
-				for (final EClassSelectionStrategy next : delegates) {
-					result = next.collectEClasses(owner, reference, result);
-				}
-
-				return result;
-			}
-		};
-	}
-
 	private EObjectSelectionStrategy createDynamicEObjectSelectionStrategy() {
 		return new EObjectSelectionStrategy() {
 
@@ -351,7 +284,7 @@
 				Collection<EObject> result = existingObjects;
 
 				final List<EObjectSelectionStrategy> delegates = eobjectSelectionStrategyBazaar.createProducts(
-					getBazaarContext(owner, reference));
+					ReferenceStrategyUtil.createBazaarContext(context, owner, reference));
 				for (final EObjectSelectionStrategy next : delegates) {
 					result = next.collectExistingObjects(owner, reference, result);
 				}
@@ -367,7 +300,7 @@
 			@Override
 			public boolean openInNewContext(EObject owner, EReference reference, EObject object) {
 				final OpenInNewContextStrategy delegate = openInNewContextStrategyBazaar.createProduct(
-					getBazaarContext(owner, reference));
+					ReferenceStrategyUtil.createBazaarContext(context, owner, reference));
 				if (delegate == null) {
 					return false;
 				}
diff --git a/bundles/org.eclipse.emf.ecp.ui.view.swt/src/org/eclipse/emf/ecp/ui/view/swt/reference/CreateNewModelElementStrategy.java b/bundles/org.eclipse.emf.ecp.ui.view.swt/src/org/eclipse/emf/ecp/ui/view/swt/reference/CreateNewModelElementStrategy.java
new file mode 100644
index 0000000..f9fc93c
--- /dev/null
+++ b/bundles/org.eclipse.emf.ecp.ui.view.swt/src/org/eclipse/emf/ecp/ui/view/swt/reference/CreateNewModelElementStrategy.java
@@ -0,0 +1,65 @@
+/*******************************************************************************
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * lucas - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.emf.ecp.ui.view.swt.reference;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.emfforms.bazaar.Vendor;
+import org.eclipse.emfforms.common.Optional;
+
+/**
+ * A {@link org.eclipse.emf.ecp.ui.view.swt.DefaultReferenceService DefaultReferenceService}
+ * <em>customization strategy</em> to add one or more new elements to a reference of an owner.
+ *
+ * @author Lucas Koehler
+ * @see org.eclipse.emf.ecp.ui.view.swt.DefaultReferenceService DefaultReferenceService
+ * @since 1.17
+ */
+public interface CreateNewModelElementStrategy {
+
+	/**
+	 * Default strategy that creates a new model element based on the sub classes of the reference type. If
+	 * there is more than one, a selection dialog is shown.
+	 */
+	CreateNewModelElementStrategy DEFAULT = new CreateNewModelElementStrategy() {
+
+		@Override
+		public Optional<EObject> createNewModelElement(EObject owner, EReference reference) {
+			final EClass referenceType = reference.getEReferenceType();
+			if (referenceType.isAbstract()) {
+				return Optional.empty();
+			}
+			return Optional.of(EcoreUtil.create(referenceType));
+		}
+	};
+
+	/**
+	 * Create a new model element in the reference of the given owner.
+	 *
+	 * @param owner The {@link EObject} that contains the reference
+	 * @param reference The reference for which a new model element should be created
+	 * @return The created model element or <code>null</code> if none was created
+	 */
+	Optional<EObject> createNewModelElement(EObject owner, EReference reference);
+
+	/**
+	 * Specific Bazaar vendor interface for add new model elements strategies.
+	 *
+	 * @since 1.16
+	 */
+	public interface Provider extends Vendor<CreateNewModelElementStrategy> {
+		// Nothing to add to the super interface
+	}
+
+}
diff --git a/bundles/org.eclipse.emf.ecp.ui.view.swt/src/org/eclipse/emf/ecp/ui/view/swt/reference/DefaultCreateNewModelElementStrategyProvider.java b/bundles/org.eclipse.emf.ecp.ui.view.swt/src/org/eclipse/emf/ecp/ui/view/swt/reference/DefaultCreateNewModelElementStrategyProvider.java
new file mode 100644
index 0000000..0dc1494
--- /dev/null
+++ b/bundles/org.eclipse.emf.ecp.ui.view.swt/src/org/eclipse/emf/ecp/ui/view/swt/reference/DefaultCreateNewModelElementStrategyProvider.java
@@ -0,0 +1,263 @@
+/*******************************************************************************
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * Eugen Neufeld - initial API and implementation
+ * Christian W. Damus - bug 529138
+ ******************************************************************************/
+package org.eclipse.emf.ecp.ui.view.swt.reference;
+
+import static org.osgi.service.component.annotations.ReferenceCardinality.MULTIPLE;
+import static org.osgi.service.component.annotations.ReferencePolicy.DYNAMIC;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.LinkedHashMap;
+import java.util.Map;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.emf.ecp.common.spi.ChildrenDescriptorCollector;
+import org.eclipse.emf.ecp.common.spi.EMFUtils;
+import org.eclipse.emf.ecp.spi.common.ui.CompositeFactory;
+import org.eclipse.emf.ecp.spi.common.ui.SelectModelElementWizardFactory;
+import org.eclipse.emf.ecp.spi.common.ui.composites.SelectionComposite;
+import org.eclipse.emf.ecp.ui.view.swt.reference.CreateNewModelElementStrategy.Provider;
+import org.eclipse.emf.edit.command.CommandParameter;
+import org.eclipse.emfforms.bazaar.Bazaar;
+import org.eclipse.emfforms.bazaar.Create;
+import org.eclipse.emfforms.common.Optional;
+import org.eclipse.emfforms.spi.bazaar.BazaarUtil;
+import org.eclipse.emfforms.spi.common.report.AbstractReport;
+import org.eclipse.emfforms.spi.common.report.ReportService;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.swt.widgets.Display;
+import org.osgi.service.component.ComponentContext;
+import org.osgi.service.component.annotations.Activate;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Deactivate;
+import org.osgi.service.component.annotations.Reference;
+
+/**
+ * Default strategy that allows creating a new model element based on the sub classes of the reference type. If
+ * there is more than one, a selection dialog is shown.
+ * This implementation utilizes the {@link EClassSelectionStrategy} to filter the EClass to offer.
+ *
+ * @author Eugen Neufeld
+ * @since 1.17
+ *
+ */
+@Component(name = "DefaultCreateNewModelElementStrategyProvider", property = "service.ranking:Integer=1", service = {
+	Provider.class, DefaultCreateNewModelElementStrategyProvider.class })
+public class DefaultCreateNewModelElementStrategyProvider
+	extends ReferenceServiceCustomizationVendor<CreateNewModelElementStrategy> implements Provider {
+
+	private final Bazaar<EClassSelectionStrategy> eclassSelectionStrategyBazaar = BazaarUtil
+		.createBazaar(EClassSelectionStrategy.NULL);
+	private ComponentContext context;
+	private ReportService reportService;
+
+	/**
+	 * Add an {@code EClass} selection strategy provider.
+	 *
+	 * @param provider the provider to add
+	 */
+	@Reference(cardinality = MULTIPLE, policy = DYNAMIC)
+	public void addEClassSelectionStrategyProvider(EClassSelectionStrategy.Provider provider) {
+		eclassSelectionStrategyBazaar.addVendor(provider);
+	}
+
+	/**
+	 * Remove an {@code EClass} selection strategy provider.
+	 *
+	 * @param provider the provider to remove
+	 */
+	public void removeEClassSelectionStrategyProvider(EClassSelectionStrategy.Provider provider) {
+		eclassSelectionStrategyBazaar.removeVendor(provider);
+	}
+
+	/**
+	 * The {@link ReportService} to use for errors.
+	 *
+	 * @param reportService The {@link ReportService}
+	 */
+	@Reference
+	void setReportService(ReportService reportService) {
+		this.reportService = reportService;
+	}
+
+	/**
+	 * Activates me.
+	 *
+	 * @param context my component context
+	 */
+	@Activate
+	void activate(ComponentContext context) {
+		this.context = context;
+	}
+
+	/**
+	 * Deactivates me.
+	 */
+	@Deactivate
+	void deactivate() {
+		context = null;
+	}
+
+	@Override
+	protected boolean handles(EObject owner, EReference reference) {
+		return true;
+	}
+
+	/**
+	 * Creates the {@link CreateNewModelElementStrategy}.
+	 *
+	 * @return The created {@link CreateNewModelElementStrategy}
+	 */
+	@Create
+	public CreateNewModelElementStrategy createCreateNewModelElementStrategy() {
+		final EClassSelectionStrategy classSelectionStrategy = ReferenceStrategyUtil
+			.createDynamicEClassSelectionStrategy(eclassSelectionStrategyBazaar, context);
+		return new DefaultStrategy(classSelectionStrategy);
+	}
+
+	/**
+	 * Obtain a mapping of new objects provided by an {@code owner}'s edit provider, by class.
+	 *
+	 * @param owner the owner of a reference in which to create an object
+	 * @param reference the reference in which to create an object
+	 *
+	 * @return a mapping of edit-provider supplied possible children
+	 */
+	public Map<EClass, EObject> getNewObjectsByDescriptors(EObject owner, EReference reference) {
+		final Collection<CommandParameter> descriptors = getNewChildDescriptors(owner, reference);
+		if (descriptors.isEmpty()) {
+			return Collections.emptyMap();
+		}
+
+		final Map<EClass, EObject> result = new LinkedHashMap<EClass, EObject>();
+		for (final CommandParameter next : descriptors) {
+			final EObject object = next.getEValue();
+			result.put(object.eClass(), object);
+		}
+		return result;
+	}
+
+	/**
+	 * Obtain new child descriptors from the {@code owner}'s edit provider.
+	 *
+	 * @param owner the owner of a reference in which to create an object
+	 * @param reference the reference in which to create an object
+	 * @return the new child descriptors
+	 */
+	private Collection<CommandParameter> getNewChildDescriptors(EObject owner, EReference reference) {
+
+		// The item provider offers new child descriptors for probably multiple containment references.
+		// We want only those compatible with our reference
+
+		final Collection<?> descriptors = new ChildrenDescriptorCollector().getDescriptors(owner);
+
+		final EClass referenceType = reference.getEReferenceType();
+		final Collection<CommandParameter> result = new ArrayList<CommandParameter>(descriptors.size());
+		for (final Object next : descriptors) {
+			if (next instanceof CommandParameter) {
+				final CommandParameter newChild = (CommandParameter) next;
+				if (referenceType.isInstance(newChild.getEValue())) {
+					result.add(newChild);
+				}
+			}
+		}
+
+		return result;
+	}
+
+	//
+	// Nested types
+	//
+
+	/**
+	 * The default creation strategy implementation.
+	 */
+	private class DefaultStrategy implements CreateNewModelElementStrategy {
+		private final EClassSelectionStrategy classSelectionStrategy;
+
+		DefaultStrategy(final EClassSelectionStrategy classSelectionStrategy) {
+			super();
+
+			this.classSelectionStrategy = classSelectionStrategy;
+		}
+
+		@Override
+		public Optional<EObject> createNewModelElement(EObject owner, EReference reference) {
+			// Ask the edit provider for available children. If it provides none (which is
+			// usually the case for cross-reference features, not containments) then fall back
+			// to the release 1.16 behaviour of just finding all subclasses of the reference type
+			final Map<EClass, EObject> availableChildren = getNewObjectsByDescriptors(owner, reference);
+			final Collection<EClass> availableClasses = availableChildren.isEmpty()
+				? EMFUtils.getSubClasses(reference.getEReferenceType())
+				: availableChildren.keySet();
+
+			final Collection<EClass> classes = classSelectionStrategy.collectEClasses(owner, reference,
+				availableClasses);
+			if (classes.isEmpty()) {
+				final String errorMessage = String.format("No concrete classes for the type %1$s were found!", //$NON-NLS-1$
+					reference.getEReferenceType().getName());
+				MessageDialog.openError(Display.getDefault().getActiveShell(), "Error", //$NON-NLS-1$
+					errorMessage);
+				reportService.report(new AbstractReport(errorMessage));
+				return Optional.empty();
+			}
+			if (classes.size() == 1) {
+				final EClass only = classes.iterator().next();
+				EObject result = availableChildren.get(only);
+				if (result == null) {
+					// Create one in the release 1.16 way
+					result = EcoreUtil.create(only);
+				}
+				return Optional.of(result);
+			}
+			return Optional.ofNullable(getModelElementInstanceFromList(classes, availableChildren));
+		}
+
+		/**
+		 * Prompt the user to select one of the given {@code classes} to instantiate. If the
+		 * available children includes an instance of the selected class, then use it, otherwise
+		 * create a new unconfigured instance.
+		 *
+		 * @param classes the classes to chose from
+		 * @param availableChildren available instances of some intersection of those {@code classes}
+		 *
+		 * @return an instance of the class selected by the user, or {@code null} if the user cancelled
+		 *         the prompt
+		 */
+		private EObject getModelElementInstanceFromList(Collection<EClass> classes,
+			Map<EClass, EObject> availableChildren) {
+
+			final SelectionComposite<TreeViewer> helper = CompositeFactory.getSelectModelClassComposite(
+				new HashSet<EPackage>(),
+				new HashSet<EPackage>(), classes);
+
+			EObject result = SelectModelElementWizardFactory.openCreateNewModelElementDialog(helper);
+			if (result != null) {
+				final EObject fromAvailable = availableChildren.get(result.eClass());
+				if (fromAvailable != null) {
+					// Use the object provided by the edit provider, instead, as it may be
+					// pre-configured in some important way
+					result = fromAvailable;
+				}
+			}
+			return result;
+		}
+	}
+}
diff --git a/bundles/org.eclipse.emf.ecp.ui.view.swt/src/org/eclipse/emf/ecp/ui/view/swt/reference/EClassSelectionStrategy.java b/bundles/org.eclipse.emf.ecp.ui.view.swt/src/org/eclipse/emf/ecp/ui/view/swt/reference/EClassSelectionStrategy.java
index de65353..92eed13 100644
--- a/bundles/org.eclipse.emf.ecp.ui.view.swt/src/org/eclipse/emf/ecp/ui/view/swt/reference/EClassSelectionStrategy.java
+++ b/bundles/org.eclipse.emf.ecp.ui.view.swt/src/org/eclipse/emf/ecp/ui/view/swt/reference/EClassSelectionStrategy.java
@@ -19,9 +19,8 @@
 import org.eclipse.emfforms.bazaar.Vendor;
 
 /**
- * A {@link org.eclipse.emf.ecp.ui.view.swt.DefaultReferenceService DefaultReferenceService}
- * <em>customization strategy</em> for accumulating {@link EClass}es for instantiation to create a new
- * object in a reference.
+ * A <em>customization strategy</em> for accumulating {@link EClass}es for instantiation to create a new
+ * object in a reference. Used by the {@link DefaultCreateNewModelElementStrategyProvider}.
  *
  * @since 1.16
  *
diff --git a/bundles/org.eclipse.emf.ecp.ui.view.swt/src/org/eclipse/emf/ecp/ui/view/swt/reference/ReferenceStrategyUtil.java b/bundles/org.eclipse.emf.ecp.ui.view.swt/src/org/eclipse/emf/ecp/ui/view/swt/reference/ReferenceStrategyUtil.java
new file mode 100644
index 0000000..58cae81
--- /dev/null
+++ b/bundles/org.eclipse.emf.ecp.ui.view.swt/src/org/eclipse/emf/ecp/ui/view/swt/reference/ReferenceStrategyUtil.java
@@ -0,0 +1,90 @@
+/*******************************************************************************
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * Lucas Koehler - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.emf.ecp.ui.view.swt.reference;
+
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emfforms.bazaar.Bazaar;
+import org.eclipse.emfforms.bazaar.BazaarContext;
+import org.eclipse.emfforms.spi.bazaar.BazaarUtil;
+import org.osgi.service.component.ComponentContext;
+
+/**
+ * Common functionality for the creation strategies for the DefaultReferenceService.
+ *
+ * @author Lucas Koehler
+ * @since 1.17
+ *
+ */
+public final class ReferenceStrategyUtil {
+	/**
+	 * Prevent instantiation of this utility class.
+	 */
+	private ReferenceStrategyUtil() {
+	}
+
+	/**
+	 * Creates an {@link EClassSelectionStrategy} which uses all {@link EClassSelectionStrategy
+	 * EClassSelectionStrategies} registered to the given bazaar. When
+	 * {@link EClassSelectionStrategy#collectEClasses(EObject, EReference, Collection)} of the created strategy is
+	 * called, all applicable strategies are applied one after another.
+	 *
+	 * @param bazaar The {@link Bazaar} providing the {@link EClassSelectionStrategy EClassSelectionStrategies}
+	 * @param context The receiver's ComponentContext
+	 * @return The dynamic composite {@link EClassSelectionStrategy}
+	 */
+	public static EClassSelectionStrategy createDynamicEClassSelectionStrategy(
+		final Bazaar<EClassSelectionStrategy> bazaar, final ComponentContext context) {
+		return new EClassSelectionStrategy() {
+
+			@Override
+			public Collection<EClass> collectEClasses(EObject owner, EReference reference,
+				Collection<EClass> eclasses) {
+
+				Collection<EClass> result = eclasses;
+
+				final List<EClassSelectionStrategy> delegates = bazaar.createProducts(
+					createBazaarContext(context, owner, reference));
+				// sort from low to high
+				Collections.reverse(delegates);
+
+				for (final EClassSelectionStrategy next : delegates) {
+					result = next.collectEClasses(owner, reference, result);
+				}
+
+				return result;
+			}
+		};
+	}
+
+	/**
+	 * Creates a basic {@link BazaarContext} that contains the properties of the {@link ComponentContext}. Adds the
+	 * <code>owner</code> as a context value for class {@link EObject} and the <code>reference</code> for class
+	 * {@link EReference}.
+	 *
+	 * @param context The {@link ComponentContext}
+	 * @param owner The {@link EObject} containing a reference
+	 * @param reference The {@link EReference}
+	 * @return The configured {@link BazaarContext}
+	 */
+	public static BazaarContext createBazaarContext(ComponentContext context, EObject owner, EReference reference) {
+		return BazaarUtil.createBaseContext(context.getProperties())
+			.put(EObject.class, owner)
+			.put(EReference.class, reference)
+			.build();
+	}
+}
diff --git a/bundles/org.eclipse.emf.ecp.ui.view/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.ui.view/META-INF/MANIFEST.MF
index ee1dbd1..b61f1b5 100644
--- a/bundles/org.eclipse.emf.ecp.ui.view/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.ui.view/META-INF/MANIFEST.MF
@@ -2,21 +2,22 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: MPI UI View
 Bundle-SymbolicName: org.eclipse.emf.ecp.ui.view;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Activator: org.eclipse.emf.ecp.view.internal.ui.Activator
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emf.ecp.ui.view;version="1.16.0",
-  org.eclipse.emf.ecp.view.internal.provider;version="1.16.0";x-friends:="org.eclipse.emf.ecp.view.context.test",
-  org.eclipse.emf.ecp.view.internal.ui;version="1.16.0";x-friends:="org.eclipse.emf.ecp.view.table.ui.swt",
-  org.eclipse.emf.ecp.view.spi.provider;version="1.16.0",
-  org.eclipse.emf.ecp.view.spi.provider.reporting;version="1.16.0",
-  org.eclipse.emf.ecp.view.spi.renderer;version="1.16.0"
+Export-Package: org.eclipse.emf.ecp.ui.view;version="1.17.0",
+ org.eclipse.emf.ecp.view.internal.provider;version="1.17.0";x-friends:="org.eclipse.emf.ecp.view.context.test",
+ org.eclipse.emf.ecp.view.internal.ui;version="1.17.0";x-friends:="org.eclipse.emf.ecp.view.table.ui.swt",
+ org.eclipse.emf.ecp.view.spi.provider;version="1.17.0",
+ org.eclipse.emf.ecp.view.spi.provider.reporting;version="1.17.0",
+ org.eclipse.emf.ecp.view.spi.renderer;version="1.17.0"
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.5.0,4.0.0)",
-  org.eclipse.emf.ecp.view.model;bundle-version="[1.16.0,1.17.0)";visibility:=reexport,
-  org.eclipse.emf.ecp.view.context;bundle-version="[1.16.0,1.17.0)";visibility:=reexport,
-  org.eclipse.emf.ecp.edit;bundle-version="[1.16.0,1.17.0)"
+ org.eclipse.emf.ecp.view.model;bundle-version="[1.17.0,1.18.0]";visibility:=reexport,
+ org.eclipse.emf.ecp.view.context;bundle-version="[1.17.0,1.18.0]";visibility:=reexport,
+ org.eclipse.emf.ecp.edit;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Service-Component: OSGI-INF/EMFFormsViewService.xml
 Bundle-ActivationPolicy: lazy
-Import-Package: org.eclipse.emfforms.spi.common.report;version="[1.16.0,1.17.0)",
-  org.osgi.service.component.annotations;version="[1.2.0,2.0.0)";resolution:=optional
+Import-Package: org.eclipse.emfforms.spi.common.report;version="[1.17.0,1.18.0]",
+ org.osgi.service.component.annotations;version="[1.2.0,2.0.0)";resolution:=optional
+Automatic-Module-Name: org.eclipse.emf.ecp.ui.view
diff --git a/bundles/org.eclipse.emf.ecp.ui.view/pom.xml b/bundles/org.eclipse.emf.ecp.ui.view/pom.xml
index 9f18ea4..1eaa884 100644
--- a/bundles/org.eclipse.emf.ecp.ui.view/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.ui.view/pom.xml
@@ -7,7 +7,7 @@
   <parent>

     <groupId>org.eclipse.emf.ecp</groupId>

     <artifactId>ecp-bundles-parent</artifactId>

-    <version>1.16.0-SNAPSHOT</version>

+    <version>1.17.0-SNAPSHOT</version>

     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>

   </parent>

 

diff --git a/bundles/org.eclipse.emf.ecp.ui/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.ui/META-INF/MANIFEST.MF
index 97a6b57..fe58e11 100644
--- a/bundles/org.eclipse.emf.ecp.ui/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.ui/META-INF/MANIFEST.MF
@@ -2,53 +2,56 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: ECP UI
 Bundle-SymbolicName: org.eclipse.emf.ecp.ui;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Activator: org.eclipse.emf.ecp.internal.ui.Activator
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emf.ecp.internal.ui;version="1.16.0";
-   x-friends:="org.eclipse.emf.ecp.explorereditorbridge,
-    org.eclipse.emf.ecp.edit.ecore.swt,
-    org.eclipse.emf.ecp.emfstore.ui,
-    org.eclipse.emf.ecp.ui.rcp",
-  org.eclipse.emf.ecp.internal.ui.composites;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.internal.ui.dialogs;version="1.16.0";x-friends:="org.eclipse.emf.ecp.explorereditorbridge",
-  org.eclipse.emf.ecp.internal.ui.model;version="1.16.0";x-friends:="org.eclipse.emf.ecp.ui.e4,org.eclipse.emf.ecp.ui.e3,org.eclipse.emf.ecp.ui.transaction",
-  org.eclipse.emf.ecp.internal.ui.tester;version="1.16.0",
-  org.eclipse.emf.ecp.internal.ui.util;version="1.16.0";
-   x-friends:="org.eclipse.emf.ecp.explorereditorbridge,
-    org.eclipse.emf.ecp.ui.e3,
-    org.eclipse.emf.ecp.ui.e4,
-    org.eclipse.emf.ecp.emfstore.ui.e3,
-    org.eclipse.emf.ecp.validationvieweditorbridge,
-    org.eclipse.emf.ecp.emfstore.ui,
-    org.eclipse.emf.ecp.ui.rcp",
-  org.eclipse.emf.ecp.internal.wizards;version="1.16.0";
-   x-friends:="org.eclipse.emf.ecp.edit.ecore.swt,
-    org.eclipse.emf.ecp.explorereditorbridge,
-    org.eclipse.emf.ecp.workspace.ui,
-    org.eclipse.emf.ecp.view.table.editor,
-    org.eclipse.emf.ecp.emfstore.ui",
-  org.eclipse.emf.ecp.internal.wizards.page;version="1.16.0";x-friends:="org.eclipse.emf.ecp.explorereditorbridge",
-  org.eclipse.emf.ecp.spi.ui;version="1.16.0",
-  org.eclipse.emf.ecp.spi.ui.util;version="1.16.0",
-  org.eclipse.emf.ecp.ui;version="1.16.0",
-  org.eclipse.emf.ecp.ui.common;version="1.16.0";
-   x-friends:="org.eclipse.emf.ecp.edit.ecore.swt,
-    org.eclipse.emf.ecp.explorereditorbridge,
-    org.eclipse.emf.ecp.ui.e3,
-    org.eclipse.emf.ecp.view.table.editor,
-    org.eclipse.emf.ecp.view.ui.editor.test,
-    org.eclipse.emf.ecp.workspace.ui,
-    org.eclipse.emf.ecp.ui.e4",
-  org.eclipse.emf.ecp.ui.common.dnd;version="1.16.0";x-friends:="org.eclipse.emf.ecp.ui.view.editor.controls",
-  org.eclipse.emf.ecp.ui.util;version="1.16.0"
+Export-Package: org.eclipse.emf.ecp.internal.ui;version="1.17.0";
+  x-friends:="org.eclipse.emf.ecp.explorereditorbridge,
+   org.eclipse.emf.ecp.edit.ecore.swt,
+   org.eclipse.emf.ecp.emfstore.ui,
+   org.eclipse.emf.ecp.ui.rcp",
+ org.eclipse.emf.ecp.internal.ui.composites;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.internal.ui.dialogs;version="1.17.0";x-friends:="org.eclipse.emf.ecp.explorereditorbridge",
+ org.eclipse.emf.ecp.internal.ui.model;version="1.17.0";
+  x-friends:="org.eclipse.emf.ecp.ui.e4,
+   org.eclipse.emf.ecp.ui.e3,
+   org.eclipse.emf.ecp.ui.transaction",
+ org.eclipse.emf.ecp.internal.ui.tester;version="1.17.0",
+ org.eclipse.emf.ecp.internal.ui.util;version="1.17.0";
+  x-friends:="org.eclipse.emf.ecp.explorereditorbridge,
+   org.eclipse.emf.ecp.ui.e3,
+   org.eclipse.emf.ecp.ui.e4,
+   org.eclipse.emf.ecp.emfstore.ui.e3,
+   org.eclipse.emf.ecp.validationvieweditorbridge,
+   org.eclipse.emf.ecp.emfstore.ui,
+   org.eclipse.emf.ecp.ui.rcp",
+ org.eclipse.emf.ecp.internal.wizards;version="1.17.0";
+  x-friends:="org.eclipse.emf.ecp.edit.ecore.swt,
+   org.eclipse.emf.ecp.explorereditorbridge,
+   org.eclipse.emf.ecp.workspace.ui,
+   org.eclipse.emf.ecp.view.table.editor,
+   org.eclipse.emf.ecp.emfstore.ui",
+ org.eclipse.emf.ecp.internal.wizards.page;version="1.17.0";x-friends:="org.eclipse.emf.ecp.explorereditorbridge",
+ org.eclipse.emf.ecp.spi.ui;version="1.17.0",
+ org.eclipse.emf.ecp.spi.ui.util;version="1.17.0",
+ org.eclipse.emf.ecp.ui;version="1.17.0",
+ org.eclipse.emf.ecp.ui.common;version="1.17.0";
+  x-friends:="org.eclipse.emf.ecp.edit.ecore.swt,
+   org.eclipse.emf.ecp.explorereditorbridge,
+   org.eclipse.emf.ecp.ui.e3,
+   org.eclipse.emf.ecp.view.table.editor,
+   org.eclipse.emf.ecp.view.ui.editor.test,
+   org.eclipse.emf.ecp.workspace.ui,
+   org.eclipse.emf.ecp.ui.e4",
+ org.eclipse.emf.ecp.ui.common.dnd;version="1.17.0";x-friends:="org.eclipse.emf.ecp.ui.view.editor.controls",
+ org.eclipse.emf.ecp.ui.util;version="1.17.0"
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.4.0,4.0.0)",
-  org.eclipse.emf.ecp.core;bundle-version="[1.16.0,1.17.0)";visibility:=reexport,
-  org.eclipse.net4j.util;bundle-version="[3.0.0,4.0.0)",
-  org.eclipse.core.expressions;bundle-version="[3.4.0,4.0.0)",
-  org.eclipse.emf.ecp.edit;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.context;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.common.ui;bundle-version="[1.16.0,1.17.0)"
+ org.eclipse.emf.ecp.core;bundle-version="[1.17.0,1.18.0]";visibility:=reexport,
+ org.eclipse.net4j.util;bundle-version="[3.0.0,4.0.0)",
+ org.eclipse.core.expressions;bundle-version="[3.4.0,4.0.0)",
+ org.eclipse.emf.ecp.edit;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.context;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.common.ui;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Import-Package: org.eclipse.core.commands;version="0.0.0",
   org.eclipse.emf.edit.ui.action;version="0.0.0",
@@ -75,3 +78,4 @@
   org.eclipse.ui.plugin;version="0.0.0",
   org.eclipse.ui.views.properties;ui.views=split;version="0.0.0"
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.ui
diff --git a/bundles/org.eclipse.emf.ecp.ui/pom.xml b/bundles/org.eclipse.emf.ecp.ui/pom.xml
index 4f6d5ea..bc7e983 100644
--- a/bundles/org.eclipse.emf.ecp.ui/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.ui/pom.xml
@@ -5,12 +5,12 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emf.ecp.ui</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
   
   <properties>
diff --git a/bundles/org.eclipse.emf.ecp.ui/src/org/eclipse/emf/ecp/spi/ui/ECPReferenceServiceImpl.java b/bundles/org.eclipse.emf.ecp.ui/src/org/eclipse/emf/ecp/spi/ui/ECPReferenceServiceImpl.java
index b422a21..7dd9334 100644
--- a/bundles/org.eclipse.emf.ecp.ui/src/org/eclipse/emf/ecp/spi/ui/ECPReferenceServiceImpl.java
+++ b/bundles/org.eclipse.emf.ecp.ui/src/org/eclipse/emf/ecp/spi/ui/ECPReferenceServiceImpl.java
@@ -31,6 +31,7 @@
 import org.eclipse.emf.ecp.spi.ui.util.ECPHandlerHelper;
 import org.eclipse.emf.ecp.ui.common.ECPCompositeFactory;
 import org.eclipse.emf.ecp.view.spi.context.ViewModelContext;
+import org.eclipse.emfforms.common.Optional;
 import org.eclipse.jface.dialogs.MessageDialog;
 import org.eclipse.jface.viewers.TreeViewer;
 import org.eclipse.swt.widgets.Display;
@@ -83,11 +84,18 @@
 	 * {@inheritDoc}
 	 *
 	 * @since 1.5
+	 * @deprecated
 	 */
+	@Deprecated
 	@Override
 	public void addNewModelElements(EObject eObject, EReference eReference) {
+		addNewModelElements(eObject, eReference, true);
+	}
+
+	@Override
+	public Optional<EObject> addNewModelElements(EObject eObject, EReference eReference, boolean openInNewContext) {
 		if (eReference == null) {
-			return;
+			return Optional.empty();
 		}
 		EObject newModelElement = null;
 		final Collection<EClass> classes = ECPUtil.getSubClasses(eReference.getEReferenceType());
@@ -106,19 +114,23 @@
 		}
 
 		if (newModelElement == null) {
-			return;
+			return Optional.empty();
 
 		}
 
 		if (eReference.isContainer()) {
 			// TODO language
-			MessageDialog.openError(Display.getDefault().getActiveShell(), "Error",//$NON-NLS-1$
+			MessageDialog.openError(Display.getDefault().getActiveShell(), "Error", //$NON-NLS-1$
 				"Operation not permitted for container references!");//$NON-NLS-1$
-			return;
+			return Optional.empty();
 		}
 		ECPControlHelper.addModelElementInReference(eObject, newModelElement, eReference,
 			ecpProject.getEditingDomain());
-		openInNewContext(newModelElement);
+		if (openInNewContext) {
+			openInNewContext(newModelElement);
+		}
+
+		return Optional.of(newModelElement);
 	}
 
 	/**
diff --git a/bundles/org.eclipse.emf.ecp.validation.connector/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.validation.connector/META-INF/MANIFEST.MF
index c70ee73..16b7293 100644
--- a/bundles/org.eclipse.emf.ecp.validation.connector/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.validation.connector/META-INF/MANIFEST.MF
@@ -2,15 +2,16 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: ECP Validation Connector Plugin
 Bundle-SymbolicName: org.eclipse.emf.ecp.validation.connector;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Activator: org.eclipse.emf.ecp.validation.connector.Activator
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emf.ecp.validation.connector;version="1.16.0";x-internal:=true
+Export-Package: org.eclipse.emf.ecp.validation.connector;version="1.17.0";x-internal:=true
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.4.0,4.0.0)",
-  org.eclipse.emf.ecp.validation;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.ui;bundle-version="[1.16.0,1.17.0)"
+ org.eclipse.emf.ecp.validation;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.ui;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Import-Package: org.eclipse.jface.resource;version="0.0.0",
   org.eclipse.jface.viewers;version="0.0.0",
   org.eclipse.swt.graphics;version="0.0.0"
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.validation.connector
diff --git a/bundles/org.eclipse.emf.ecp.validation.connector/pom.xml b/bundles/org.eclipse.emf.ecp.validation.connector/pom.xml
index e9f9dbf..b9b13ab 100644
--- a/bundles/org.eclipse.emf.ecp.validation.connector/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.validation.connector/pom.xml
@@ -5,12 +5,12 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emf.ecp.validation.connector</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
   
   <properties>
diff --git a/bundles/org.eclipse.emf.ecp.validation/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.validation/META-INF/MANIFEST.MF
index 19ca4d9..f57403f 100644
--- a/bundles/org.eclipse.emf.ecp.validation/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.validation/META-INF/MANIFEST.MF
@@ -2,14 +2,15 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: ECP Validation Service
 Bundle-SymbolicName: org.eclipse.emf.ecp.validation;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emf.ecp.internal.validation;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.validation.api;version="1.16.0";x-friends:="org.eclipse.emf.ecp.validation.connector"
+Export-Package: org.eclipse.emf.ecp.internal.validation;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.validation.api;version="1.17.0";x-friends:="org.eclipse.emf.ecp.validation.connector"
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.4.0,4.0.0)",
-  org.eclipse.emf.ecore;bundle-version="2.8.0",
-  org.eclipse.emf.ecp.ui;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.common;bundle-version="[1.16.0,1.17.0)"
+ org.eclipse.emf.ecore;bundle-version="2.8.0",
+ org.eclipse.emf.ecp.ui;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.common;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Service-Component: OSGI-INF/validationService.xml
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.validation
diff --git a/bundles/org.eclipse.emf.ecp.validation/pom.xml b/bundles/org.eclipse.emf.ecp.validation/pom.xml
index a1d2190..5f568a8 100644
--- a/bundles/org.eclipse.emf.ecp.validation/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.validation/pom.xml
@@ -5,12 +5,12 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emf.ecp.validation</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 
   <properties>
diff --git a/bundles/org.eclipse.emf.ecp.validationvieweditorbridge/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.validationvieweditorbridge/META-INF/MANIFEST.MF
index 54a9ce5..3064cff 100644
--- a/bundles/org.eclipse.emf.ecp.validationvieweditorbridge/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.validationvieweditorbridge/META-INF/MANIFEST.MF
@@ -2,11 +2,12 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: ECP Validation View to Editor Bridge
 Bundle-SymbolicName: org.eclipse.emf.ecp.validationvieweditorbridge;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emf.ecp.internal.validationvieweditorbridge;version="1.16.0";x-internal:=true
-Require-Bundle: org.eclipse.emf.ecp.ui;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.ui.validation;bundle-version="[1.16.0,1.17.0)"
+Export-Package: org.eclipse.emf.ecp.internal.validationvieweditorbridge;version="1.17.0";x-internal:=true
+Require-Bundle: org.eclipse.emf.ecp.ui;bundle-version="[1.17.0,1.18.0)",
+  org.eclipse.emf.ecp.ui.validation;bundle-version="[1.17.0,1.18.0)"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Import-Package: org.eclipse.jface.viewers;version="0.0.0"
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.validationvieweditorbridge
diff --git a/bundles/org.eclipse.emf.ecp.validationvieweditorbridge/pom.xml b/bundles/org.eclipse.emf.ecp.validationvieweditorbridge/pom.xml
index cca22dc..f80ba92 100644
--- a/bundles/org.eclipse.emf.ecp.validationvieweditorbridge/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.validationvieweditorbridge/pom.xml
@@ -5,11 +5,11 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emf.ecp.validationvieweditorbridge</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 </project>
diff --git a/bundles/org.eclipse.emf.ecp.view.categorization.model.edit/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.view.categorization.model.edit/META-INF/MANIFEST.MF
index 26881d8..60e207c 100644
--- a/bundles/org.eclipse.emf.ecp.view.categorization.model.edit/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.view.categorization.model.edit/META-INF/MANIFEST.MF
@@ -2,20 +2,21 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.categorization.model.edit;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-ClassPath: .
 Bundle-Activator: org.eclipse.emf.ecp.view.spi.categorization.model.provider.CategorizationEditPlugin$Implementation
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
-Export-Package: org.eclipse.emf.ecp.view.spi.categorization.model.provider;version="1.16.0"
+Export-Package: org.eclipse.emf.ecp.view.spi.categorization.model.provider;version="1.17.0"
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.7.0,4.0.0)",
-  org.eclipse.emf.ecp.view.categorization.model;bundle-version="[1.16.0,1.17.0)";visibility:=reexport,
-  org.eclipse.emf.edit;bundle-version="[2.7.0,3.0.0)";visibility:=reexport,
-  org.eclipse.emf.ecore;bundle-version="[2.7.0,3.0.0)";visibility:=reexport,
-  org.eclipse.emf.ecore.edit;bundle-version="[2.6.0,3.0.0)";visibility:=reexport,
-  org.eclipse.emf.ecp.view.model;bundle-version="[1.16.0,1.17.0)";visibility:=reexport,
-  org.eclipse.emf.ecp.view.model.edit;bundle-version="[1.16.0,1.17.0)";visibility:=reexport,
-  org.eclipse.emf.ecp.view.horizontal.model;bundle-version="[1.16.0,1.17.0)";visibility:=reexport,
-  org.eclipse.emf.ecp.view.vertical.model;bundle-version="[1.16.0,1.17.0)";visibility:=reexport
+ org.eclipse.emf.ecp.view.categorization.model;bundle-version="[1.17.0,1.18.0]";visibility:=reexport,
+ org.eclipse.emf.edit;bundle-version="[2.7.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.ecore;bundle-version="[2.7.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.ecore.edit;bundle-version="[2.6.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.ecp.view.model;bundle-version="[1.17.0,1.18.0]";visibility:=reexport,
+ org.eclipse.emf.ecp.view.model.edit;bundle-version="[1.17.0,1.18.0]";visibility:=reexport,
+ org.eclipse.emf.ecp.view.horizontal.model;bundle-version="[1.17.0,1.18.0]";visibility:=reexport,
+ org.eclipse.emf.ecp.view.vertical.model;bundle-version="[1.17.0,1.18.0]";visibility:=reexport
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.view.categorization.model.edit
diff --git a/bundles/org.eclipse.emf.ecp.view.categorization.model.edit/plugin.xml b/bundles/org.eclipse.emf.ecp.view.categorization.model.edit/plugin.xml
index 01d925a..d1abe7b 100644
--- a/bundles/org.eclipse.emf.ecp.view.categorization.model.edit/plugin.xml
+++ b/bundles/org.eclipse.emf.ecp.view.categorization.model.edit/plugin.xml
@@ -31,7 +31,7 @@
    <extension point="org.eclipse.emf.edit.childCreationExtenders">
       <!-- @generated categorization -->
       <extender
-            uri="http://org/eclipse/emf/ecp/view/model/170"
+            uri="http://org/eclipse/emf/ecp/view/model/1170"
             class="org.eclipse.emf.ecp.view.spi.categorization.model.provider.CategorizationItemProviderAdapterFactory$ViewChildCreationExtender"/>
    </extension>
 
diff --git a/bundles/org.eclipse.emf.ecp.view.categorization.model.edit/pom.xml b/bundles/org.eclipse.emf.ecp.view.categorization.model.edit/pom.xml
index f168e11..324b6a7 100644
--- a/bundles/org.eclipse.emf.ecp.view.categorization.model.edit/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.view.categorization.model.edit/pom.xml
@@ -7,7 +7,7 @@
   <parent>

     <groupId>org.eclipse.emf.ecp</groupId>

     <artifactId>ecp-bundles-parent</artifactId>

-    <version>1.16.0-SNAPSHOT</version>

+    <version>1.17.0-SNAPSHOT</version>

     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>

   </parent>

 

@@ -15,5 +15,5 @@
   <packaging>eclipse-plugin</packaging>

 

   <groupId>org.eclipse.emf.ecp</groupId>

-  <version>1.16.0-SNAPSHOT</version>

+  <version>1.17.0-SNAPSHOT</version>

 </project>

diff --git a/bundles/org.eclipse.emf.ecp.view.categorization.model/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.view.categorization.model/META-INF/MANIFEST.MF
index 99be3e3..8d239b9 100644
--- a/bundles/org.eclipse.emf.ecp.view.categorization.model/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.view.categorization.model/META-INF/MANIFEST.MF
@@ -2,15 +2,16 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.categorization.model;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-ClassPath: .
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
-Export-Package: org.eclipse.emf.ecp.view.spi.categorization.model;version="1.16.0",
-  org.eclipse.emf.ecp.view.spi.categorization.model.impl;version="1.16.0",
-  org.eclipse.emf.ecp.view.spi.categorization.model.util;version="1.16.0"
+Export-Package: org.eclipse.emf.ecp.view.spi.categorization.model;version="1.17.0",
+ org.eclipse.emf.ecp.view.spi.categorization.model.impl;version="1.17.0",
+ org.eclipse.emf.ecp.view.spi.categorization.model.util;version="1.17.0"
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.7.0,4.0.0)",
-  org.eclipse.emf.ecore;bundle-version="[2.7.0,3.0.0)",
-  org.eclipse.emf.ecp.view.model;bundle-version="[1.16.0,1.17.0)";visibility:=reexport
+ org.eclipse.emf.ecore;bundle-version="[2.7.0,3.0.0)",
+ org.eclipse.emf.ecp.view.model;bundle-version="[1.17.0,1.18.0]";visibility:=reexport
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.view.categorization.model
diff --git a/bundles/org.eclipse.emf.ecp.view.categorization.model/pom.xml b/bundles/org.eclipse.emf.ecp.view.categorization.model/pom.xml
index 3b3da02..d6749b0 100644
--- a/bundles/org.eclipse.emf.ecp.view.categorization.model/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.view.categorization.model/pom.xml
@@ -7,7 +7,7 @@
   <parent>

     <groupId>org.eclipse.emf.ecp</groupId>

     <artifactId>ecp-bundles-parent</artifactId>

-    <version>1.16.0-SNAPSHOT</version>

+    <version>1.17.0-SNAPSHOT</version>

     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>

   </parent>

 

@@ -15,5 +15,5 @@
   <packaging>eclipse-plugin</packaging>

 

   <groupId>org.eclipse.emf.ecp</groupId>

-  <version>1.16.0-SNAPSHOT</version>

+  <version>1.17.0-SNAPSHOT</version>

 </project>

diff --git a/bundles/org.eclipse.emf.ecp.view.categorization.swt/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.view.categorization.swt/META-INF/MANIFEST.MF
index 1adf5b3..b8363e4 100644
--- a/bundles/org.eclipse.emf.ecp.view.categorization.swt/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.view.categorization.swt/META-INF/MANIFEST.MF
@@ -2,31 +2,32 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Categorization SWT
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.categorization.swt;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Activator: org.eclipse.emf.ecp.view.internal.categorization.swt.Activator
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emf.ecp.view.internal.categorization.swt;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.view.spi.categorization.swt;version="1.16.0"
+Export-Package: org.eclipse.emf.ecp.view.internal.categorization.swt;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.spi.categorization.swt;version="1.17.0"
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.7.0,4.0.0)",
-  org.eclipse.emf.edit;bundle-version="[2.8.0,3.0.0)",
-  org.eclipse.emf.ecp.ui.view.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.categorization.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.core.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.edit.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.model.common;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.localization;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.swt.core;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.databinding.edit;bundle-version="[1.2.0,2.0.0)",
-  org.eclipse.emfforms.swt.core.di;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.template.model;bundle-version="[1.16.0,1.17.0)"
+ org.eclipse.emf.edit;bundle-version="[2.8.0,3.0.0)",
+ org.eclipse.emf.ecp.ui.view.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.categorization.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.core.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.edit.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.model.common;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.localization;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.swt.core;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.databinding.edit;bundle-version="[1.2.0,2.0.0)",
+ org.eclipse.emfforms.swt.core.di;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.template.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.categorization.model.edit;bundle-version="[1.17.0,1.18.0)"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Service-Component: OSGI-INF/categorizationElementTabbedRendererService.xml,OSGI-INF/compositeCategoryTreeRendererService.xml,OSGI-INF/compositeCategoryTabRendererService.xml,OSGI-INF/swtCategorizationElementRendererService.xml,OSGI-INF/swtCategorizationRendererService.xml,OSGI-INF/swtCategoryRendererService.xml
 Bundle-ActivationPolicy: lazy
 Import-Package: javax.inject;version="1.0.0",
  org.eclipse.core.databinding.property.value;version="0.0.0",
  org.eclipse.emf.edit.ui.provider;version="0.0.0",
- org.eclipse.emfforms.spi.common.report;version="[1.16.0,1.17.0)",
- org.eclipse.emfforms.spi.core.services.databinding;version="[1.16.0,1.17.0)",
+ org.eclipse.emfforms.spi.common.report;version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.spi.core.services.databinding;version="[1.17.0,1.18.0]",
  org.eclipse.jface.databinding.swt;version="0.0.0",
  org.eclipse.jface.layout;version="0.0.0",
  org.eclipse.jface.resource;version="0.0.0",
@@ -36,3 +37,4 @@
  org.eclipse.swt.events;version="0.0.0",
  org.eclipse.swt.graphics;version="0.0.0",
  org.eclipse.swt.widgets;version="0.0.0"
+Automatic-Module-Name: org.eclipse.emf.ecp.view.categorization.swt
diff --git a/bundles/org.eclipse.emf.ecp.view.categorization.swt/pom.xml b/bundles/org.eclipse.emf.ecp.view.categorization.swt/pom.xml
index ed19203..c868740 100644
--- a/bundles/org.eclipse.emf.ecp.view.categorization.swt/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.view.categorization.swt/pom.xml
@@ -7,7 +7,7 @@
   <parent>

     <groupId>org.eclipse.emf.ecp</groupId>

     <artifactId>ecp-bundles-parent</artifactId>

-    <version>1.16.0-SNAPSHOT</version>

+    <version>1.17.0-SNAPSHOT</version>

     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>

   </parent>

 

@@ -15,5 +15,5 @@
   <packaging>eclipse-plugin</packaging>

 

   <groupId>org.eclipse.emf.ecp</groupId>

-  <version>1.16.0-SNAPSHOT</version>

+  <version>1.17.0-SNAPSHOT</version>

 </project>

diff --git a/bundles/org.eclipse.emf.ecp.view.compoundcontrol.model.edit/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.view.compoundcontrol.model.edit/META-INF/MANIFEST.MF
index d95b5a2..8d8350b 100644
--- a/bundles/org.eclipse.emf.ecp.view.compoundcontrol.model.edit/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.view.compoundcontrol.model.edit/META-INF/MANIFEST.MF
@@ -2,18 +2,19 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.compoundcontrol.model.edit;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-ClassPath: .
 Bundle-Activator: org.eclipse.emf.ecp.view.spi.compoundcontrol.model.provider.HorizontalEditPlugin$Implementation
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
-Export-Package: org.eclipse.emf.ecp.view.spi.compoundcontrol.model.provider;version="1.16.0"
+Export-Package: org.eclipse.emf.ecp.view.spi.compoundcontrol.model.provider;version="1.17.0"
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.7.0,4.0.0)",
-  org.eclipse.emf.ecp.view.compoundcontrol.model;bundle-version="[1.16.0,1.17.0)";visibility:=reexport,
-  org.eclipse.emf.edit;bundle-version="[2.8.0,3.0.0)";visibility:=reexport,
-  org.eclipse.emf.ecore;bundle-version="[2.7.0,3.0.0)";visibility:=reexport,
-  org.eclipse.emf.ecore.edit;bundle-version="[2.6.0,3.0.0)";visibility:=reexport,
-  org.eclipse.emf.ecp.view.model;bundle-version="[1.16.0,1.17.0)";visibility:=reexport,
-  org.eclipse.emf.ecp.view.model.edit;bundle-version="[1.16.0,1.17.0)";visibility:=reexport
+ org.eclipse.emf.ecp.view.compoundcontrol.model;bundle-version="[1.17.0,1.18.0]";visibility:=reexport,
+ org.eclipse.emf.edit;bundle-version="[2.8.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.ecore;bundle-version="[2.7.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.ecore.edit;bundle-version="[2.6.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.ecp.view.model;bundle-version="[1.17.0,1.18.0]";visibility:=reexport,
+ org.eclipse.emf.ecp.view.model.edit;bundle-version="[1.17.0,1.18.0]";visibility:=reexport
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.view.compoundcontrol.model.edit
diff --git a/bundles/org.eclipse.emf.ecp.view.compoundcontrol.model.edit/plugin.xml b/bundles/org.eclipse.emf.ecp.view.compoundcontrol.model.edit/plugin.xml
index 442eb23..08f3dd7 100644
--- a/bundles/org.eclipse.emf.ecp.view.compoundcontrol.model.edit/plugin.xml
+++ b/bundles/org.eclipse.emf.ecp.view.compoundcontrol.model.edit/plugin.xml
@@ -31,7 +31,7 @@
    <extension point="org.eclipse.emf.edit.childCreationExtenders">
       <!-- @generated compoundcontrol -->
       <extender
-            uri="http://org/eclipse/emf/ecp/view/model/170"
+            uri="http://org/eclipse/emf/ecp/view/model/1170"
             class="org.eclipse.emf.ecp.view.spi.compoundcontrol.model.provider.CompoundcontrolItemProviderAdapterFactory$ViewChildCreationExtender"/>
    </extension>
 
diff --git a/bundles/org.eclipse.emf.ecp.view.compoundcontrol.model.edit/pom.xml b/bundles/org.eclipse.emf.ecp.view.compoundcontrol.model.edit/pom.xml
index 5b24a59..49faaec 100644
--- a/bundles/org.eclipse.emf.ecp.view.compoundcontrol.model.edit/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.view.compoundcontrol.model.edit/pom.xml
@@ -7,7 +7,7 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
 
diff --git a/bundles/org.eclipse.emf.ecp.view.compoundcontrol.model.edit/src/org/eclipse/emf/ecp/view/spi/compoundcontrol/model/provider/CompoundcontrolItemProviderAdapterFactory.java b/bundles/org.eclipse.emf.ecp.view.compoundcontrol.model.edit/src/org/eclipse/emf/ecp/view/spi/compoundcontrol/model/provider/CompoundcontrolItemProviderAdapterFactory.java
index 458cfe2..0969277 100644
--- a/bundles/org.eclipse.emf.ecp.view.compoundcontrol.model.edit/src/org/eclipse/emf/ecp/view/spi/compoundcontrol/model/provider/CompoundcontrolItemProviderAdapterFactory.java
+++ b/bundles/org.eclipse.emf.ecp.view.compoundcontrol.model.edit/src/org/eclipse/emf/ecp/view/spi/compoundcontrol/model/provider/CompoundcontrolItemProviderAdapterFactory.java
@@ -20,13 +20,11 @@
 import org.eclipse.emf.common.notify.Notifier;
 import org.eclipse.emf.common.util.ResourceLocator;
 import org.eclipse.emf.ecore.EObject;
-import org.eclipse.emf.ecp.view.spi.compoundcontrol.model.VCompoundControl;
 import org.eclipse.emf.ecp.view.spi.compoundcontrol.model.VCompoundcontrolFactory;
 import org.eclipse.emf.ecp.view.spi.compoundcontrol.model.VCompoundcontrolPackage;
 import org.eclipse.emf.ecp.view.spi.compoundcontrol.model.util.CompoundcontrolAdapterFactory;
 import org.eclipse.emf.ecp.view.spi.model.VContainer;
 import org.eclipse.emf.ecp.view.spi.model.VView;
-import org.eclipse.emf.ecp.view.spi.model.VViewFactory;
 import org.eclipse.emf.ecp.view.spi.model.VViewPackage;
 import org.eclipse.emf.ecp.view.spi.model.util.ViewSwitch;
 import org.eclipse.emf.edit.command.CommandParameter;
@@ -320,47 +318,31 @@
 			}
 
 			/**
-			 * <!-- begin-user-doc -->
-			 * View case.
+			 * <!-- begin-user-doc --> <!-- end-user-doc -->
 			 *
-			 * @param object object
-			 * @return object
-			 *         <!-- end-user-doc -->
-			 *
-			 * @generated NOT
+			 * @generated
 			 */
 			@Override
 			public Object caseView(VView object) {
 				newChildDescriptors.add(createChildParameter(VViewPackage.Literals.VIEW__CHILDREN,
-					createCompoundControlWithDummyDMR()));
+					VCompoundcontrolFactory.eINSTANCE.createCompoundControl()));
 
 				return null;
 			}
 
 			/**
-			 * <!-- begin-user-doc -->
-			 * Container case.
-			 * 
-			 * @param object object
-			 * @return object
-			 *         <!-- end-user-doc -->
+			 * <!-- begin-user-doc --> <!-- end-user-doc -->
 			 *
-			 * @generated NOT
+			 * @generated
 			 */
 			@Override
 			public Object caseContainer(VContainer object) {
 				newChildDescriptors.add(createChildParameter(VViewPackage.Literals.CONTAINER__CHILDREN,
-					createCompoundControlWithDummyDMR()));
+					VCompoundcontrolFactory.eINSTANCE.createCompoundControl()));
 
 				return null;
 			}
 
-			private VCompoundControl createCompoundControlWithDummyDMR() {
-				final VCompoundControl compoundControl = VCompoundcontrolFactory.eINSTANCE.createCompoundControl();
-				compoundControl.setDomainModelReference(VViewFactory.eINSTANCE.createFeaturePathDomainModelReference());
-				return compoundControl;
-			}
-
 			/**
 			 * <!-- begin-user-doc -->. <!-- end-user-doc -->
 			 *
diff --git a/bundles/org.eclipse.emf.ecp.view.compoundcontrol.model/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.view.compoundcontrol.model/META-INF/MANIFEST.MF
index da4e2ad..d1bd925 100644
--- a/bundles/org.eclipse.emf.ecp.view.compoundcontrol.model/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.view.compoundcontrol.model/META-INF/MANIFEST.MF
@@ -2,15 +2,16 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.compoundcontrol.model;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-ClassPath: .
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
-Export-Package: org.eclipse.emf.ecp.view.spi.compoundcontrol.model;version="1.16.0",
-  org.eclipse.emf.ecp.view.spi.compoundcontrol.model.impl;version="1.16.0",
-  org.eclipse.emf.ecp.view.spi.compoundcontrol.model.util;version="1.16.0"
+Export-Package: org.eclipse.emf.ecp.view.spi.compoundcontrol.model;version="1.17.0",
+ org.eclipse.emf.ecp.view.spi.compoundcontrol.model.impl;version="1.17.0",
+ org.eclipse.emf.ecp.view.spi.compoundcontrol.model.util;version="1.17.0"
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.7.0,4.0.0)",
-  org.eclipse.emf.ecore;bundle-version="[2.7.0,3.0.0)";visibility:=reexport,
-  org.eclipse.emf.ecp.view.model;bundle-version="[1.16.0,1.17.0)";visibility:=reexport
+ org.eclipse.emf.ecore;bundle-version="[2.7.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.ecp.view.model;bundle-version="[1.17.0,1.18.0]";visibility:=reexport
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.view.compoundcontrol.model
diff --git a/bundles/org.eclipse.emf.ecp.view.compoundcontrol.model/pom.xml b/bundles/org.eclipse.emf.ecp.view.compoundcontrol.model/pom.xml
index 9856255..bb44718 100644
--- a/bundles/org.eclipse.emf.ecp.view.compoundcontrol.model/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.view.compoundcontrol.model/pom.xml
@@ -7,7 +7,7 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
 
diff --git a/bundles/org.eclipse.emf.ecp.view.compoundcontrol.swt/.settings/.api_filters b/bundles/org.eclipse.emf.ecp.view.compoundcontrol.swt/.settings/.api_filters
index c69ac15..070a155 100644
--- a/bundles/org.eclipse.emf.ecp.view.compoundcontrol.swt/.settings/.api_filters
+++ b/bundles/org.eclipse.emf.ecp.view.compoundcontrol.swt/.settings/.api_filters
@@ -21,12 +21,24 @@
                 <message_argument value="CompoundControlSWTRenderer(VCompoundControl, ViewModelContext, ReportService)"/>
             </message_arguments>
         </filter>
+        <filter comment="SPI Change 1.17.0" id="338722907">
+            <message_arguments>
+                <message_argument value="org.eclipse.emf.ecp.view.spi.compoundcontrol.swt.CompoundControlSWTRenderer"/>
+                <message_argument value="CompoundControlSWTRenderer(VCompoundControl, ViewModelContext, ReportService, EMFFormsLabelProvider, EMFFormsRendererFactory, VTViewTemplateProvider)"/>
+            </message_arguments>
+        </filter>
         <filter comment="EMFForms 1.6 SPI Change" id="338792546">
             <message_arguments>
                 <message_argument value="org.eclipse.emf.ecp.view.spi.compoundcontrol.swt.CompoundControlSWTRenderer"/>
                 <message_argument value="getGridDescription(SWTGridDescription)"/>
             </message_arguments>
         </filter>
+        <filter comment="SPI Change 1.17.0" id="338792546">
+            <message_arguments>
+                <message_argument value="org.eclipse.emf.ecp.view.spi.compoundcontrol.swt.CompoundControlSWTRenderer"/>
+                <message_argument value="getLabelAlignment()"/>
+            </message_arguments>
+        </filter>
         <filter comment="EMFForms 1.6 SPI Change" id="338792546">
             <message_arguments>
                 <message_argument value="org.eclipse.emf.ecp.view.spi.compoundcontrol.swt.CompoundControlSWTRenderer"/>
diff --git a/bundles/org.eclipse.emf.ecp.view.compoundcontrol.swt/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.view.compoundcontrol.swt/META-INF/MANIFEST.MF
index c211e0a..4db592b 100644
--- a/bundles/org.eclipse.emf.ecp.view.compoundcontrol.swt/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.view.compoundcontrol.swt/META-INF/MANIFEST.MF
@@ -2,27 +2,29 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Compound Control SWT Renderer
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.compoundcontrol.swt;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emf.ecp.view.internal.compoundcontrol.swt;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.view.spi.compoundcontrol.swt;version="1.16.0"
-Require-Bundle: org.eclipse.emf.ecp.view.core.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.compoundcontrol.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.ui.view.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.core.runtime;bundle-version="[3.7.0,4.0.0)",
-  org.eclipse.emfforms.swt.core;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.databinding;bundle-version="[1.3.0,2.0.0)",
-  org.eclipse.emfforms.swt.core.di;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.template.model;bundle-version="[1.16.0,1.17.0)"
+Export-Package: org.eclipse.emf.ecp.view.internal.compoundcontrol.swt;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.spi.compoundcontrol.swt;version="1.17.0"
+Require-Bundle: org.eclipse.emf.ecp.view.core.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.compoundcontrol.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.ui.view.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.core.runtime;bundle-version="[3.7.0,4.0.0)",
+ org.eclipse.emfforms.swt.core;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.databinding;bundle-version="[1.3.0,2.0.0)",
+ org.eclipse.emfforms.swt.core.di;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.template.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services.emf;bundle-version="[1.17.0,1.18.0)"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Import-Package: javax.inject;version="1.0.0",
-  org.eclipse.emfforms.spi.common.report;version="[1.16.0,1.17.0)",
-  org.eclipse.jface.databinding.swt;version="0.0.0",
-  org.eclipse.jface.layout;version="0.0.0",
-  org.eclipse.swt;version="0.0.0",
-  org.eclipse.swt.graphics;version="0.0.0",
-  org.eclipse.swt.widgets;version="0.0.0",
-  org.osgi.service.component.annotations;version="1.2.0";resolution:=optional
+ org.eclipse.emfforms.spi.common.report;version="[1.17.0,1.18.0]",
+ org.eclipse.jface.databinding.swt;version="0.0.0",
+ org.eclipse.jface.layout;version="0.0.0",
+ org.eclipse.swt;version="0.0.0",
+ org.eclipse.swt.graphics;version="0.0.0",
+ org.eclipse.swt.widgets;version="0.0.0",
+ org.osgi.service.component.annotations;version="1.2.0";resolution:=optional
 Service-Component: OSGI-INF/CompoundControlDIRendererService.xml
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.view.compoundcontrol.swt
diff --git a/bundles/org.eclipse.emf.ecp.view.compoundcontrol.swt/pom.xml b/bundles/org.eclipse.emf.ecp.view.compoundcontrol.swt/pom.xml
index e08ebbe..572e903 100644
--- a/bundles/org.eclipse.emf.ecp.view.compoundcontrol.swt/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.view.compoundcontrol.swt/pom.xml
@@ -7,7 +7,7 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
 
diff --git a/bundles/org.eclipse.emf.ecp.view.compoundcontrol.swt/src/org/eclipse/emf/ecp/view/spi/compoundcontrol/swt/CompoundControlSWTRenderer.java b/bundles/org.eclipse.emf.ecp.view.compoundcontrol.swt/src/org/eclipse/emf/ecp/view/spi/compoundcontrol/swt/CompoundControlSWTRenderer.java
index e6a41ea..47665e0 100644
--- a/bundles/org.eclipse.emf.ecp.view.compoundcontrol.swt/src/org/eclipse/emf/ecp/view/spi/compoundcontrol/swt/CompoundControlSWTRenderer.java
+++ b/bundles/org.eclipse.emf.ecp.view.compoundcontrol.swt/src/org/eclipse/emf/ecp/view/spi/compoundcontrol/swt/CompoundControlSWTRenderer.java
@@ -11,19 +11,28 @@
  */
 package org.eclipse.emf.ecp.view.spi.compoundcontrol.swt;
 
+import java.util.AbstractMap;
+import java.util.ArrayList;
 import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
 
 import javax.inject.Inject;
 
-import org.eclipse.core.databinding.Binding;
 import org.eclipse.core.databinding.DataBindingContext;
+import org.eclipse.core.databinding.UpdateValueStrategy;
 import org.eclipse.core.databinding.observable.value.IObservableValue;
-import org.eclipse.emf.common.util.EList;
+import org.eclipse.core.runtime.IStatus;
 import org.eclipse.emf.databinding.EMFDataBindingContext;
+import org.eclipse.emf.databinding.EMFUpdateValueStrategy;
 import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EStructuralFeature;
 import org.eclipse.emf.ecp.view.model.common.util.RendererUtil;
 import org.eclipse.emf.ecp.view.spi.compoundcontrol.model.VCompoundControl;
 import org.eclipse.emf.ecp.view.spi.context.ViewModelContext;
+import org.eclipse.emf.ecp.view.spi.core.swt.AbstractControlSWTRendererUtil;
+import org.eclipse.emf.ecp.view.spi.core.swt.SimpleControlSWTRendererUtil;
 import org.eclipse.emf.ecp.view.spi.model.LabelAlignment;
 import org.eclipse.emf.ecp.view.spi.model.VContainedElement;
 import org.eclipse.emf.ecp.view.spi.model.VControl;
@@ -33,22 +42,23 @@
 import org.eclipse.emf.ecp.view.spi.swt.layout.LayoutProviderHelper;
 import org.eclipse.emf.ecp.view.spi.swt.reporting.RenderingFailedReport;
 import org.eclipse.emf.ecp.view.template.model.VTViewTemplateProvider;
-import org.eclipse.emf.ecp.view.template.style.alignment.model.AlignmentType;
-import org.eclipse.emf.ecp.view.template.style.alignment.model.VTControlLabelAlignmentStyleProperty;
 import org.eclipse.emf.ecp.view.template.style.labelwidth.model.VTLabelWidthStyleProperty;
+import org.eclipse.emf.ecp.view.template.style.mandatory.model.VTMandatoryStyleProperty;
 import org.eclipse.emfforms.common.Optional;
 import org.eclipse.emfforms.spi.common.report.AbstractReport;
 import org.eclipse.emfforms.spi.common.report.ReportService;
+import org.eclipse.emfforms.spi.core.services.databinding.DatabindingFailedException;
+import org.eclipse.emfforms.spi.core.services.databinding.emf.EMFFormsDatabindingEMF;
 import org.eclipse.emfforms.spi.core.services.label.EMFFormsLabelProvider;
 import org.eclipse.emfforms.spi.core.services.label.NoLabelFoundException;
 import org.eclipse.emfforms.spi.swt.core.AbstractSWTRenderer;
 import org.eclipse.emfforms.spi.swt.core.EMFFormsNoRendererException;
 import org.eclipse.emfforms.spi.swt.core.EMFFormsRendererFactory;
+import org.eclipse.emfforms.spi.swt.core.SWTDataElementIdHelper;
 import org.eclipse.emfforms.spi.swt.core.layout.GridDescriptionFactory;
 import org.eclipse.emfforms.spi.swt.core.layout.SWTGridCell;
 import org.eclipse.emfforms.spi.swt.core.layout.SWTGridDescription;
-import org.eclipse.jface.layout.GridDataFactory;
-import org.eclipse.jface.layout.GridLayoutFactory;
+import org.eclipse.jface.databinding.swt.WidgetProperties;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Control;
@@ -63,7 +73,7 @@
  */
 public class CompoundControlSWTRenderer extends AbstractSWTRenderer<VCompoundControl> {
 
-	private static final String SEPARATOR = "/"; //$NON-NLS-1$
+	private static final String SEPARATOR = " / "; //$NON-NLS-1$
 
 	private SWTGridDescription rendererGridDescription;
 
@@ -75,6 +85,10 @@
 
 	private final VTViewTemplateProvider viewTemplateProvider;
 
+	private boolean firstControlValidationIconUsed;
+
+	private final EMFFormsDatabindingEMF databindingService;
+
 	/**
 	 * Default constructor.
 	 *
@@ -84,7 +98,8 @@
 	 * @param labelProvider the {@link EMFFormsLabelProvider label provider}
 	 * @param rendererFactory the {@link EMFFormsRendererFactory renderer factory}
 	 * @param viewTemplateProvider {@link VTViewTemplateProvider}
-	 * @since 1.16
+	 * @param databindingService {@link EMFFormsDatabindingEMF}
+	 * @since 1.17
 	 */
 	@Inject
 	public CompoundControlSWTRenderer(
@@ -93,11 +108,13 @@
 		ReportService reportService,
 		EMFFormsLabelProvider labelProvider,
 		EMFFormsRendererFactory rendererFactory,
-		VTViewTemplateProvider viewTemplateProvider) {
+		VTViewTemplateProvider viewTemplateProvider,
+		EMFFormsDatabindingEMF databindingService) {
 		super(vElement, viewContext, reportService);
 		this.labelProvider = labelProvider;
 		this.rendererFactory = rendererFactory;
 		this.viewTemplateProvider = viewTemplateProvider;
+		this.databindingService = databindingService;
 	}
 
 	/**
@@ -121,6 +138,14 @@
 	}
 
 	/**
+	 * @return the {@link EMFFormsDatabindingEMF}.
+	 * @since 1.17
+	 */
+	protected EMFFormsDatabindingEMF getDatabindingService() {
+		return databindingService;
+	}
+
+	/**
 	 * Returns the {@link DataBindingContext}.
 	 *
 	 * @return the databining context
@@ -138,6 +163,7 @@
 	 * @since 1.16
 	 */
 	protected LinkedHashMap<VContainedElement, AbstractSWTRenderer<VElement>> getElementRendererMap() {
+		initChildRendererMap();
 		return elementRendererMap;
 	}
 
@@ -157,22 +183,28 @@
 	@Override
 	public SWTGridDescription getGridDescription(SWTGridDescription gridDescription) {
 		if (rendererGridDescription == null) {
-			rendererGridDescription = GridDescriptionFactory.INSTANCE.createSimpleGrid(1, 2, this);
+			final int columns = SimpleControlSWTRendererUtil
+				.showLabel(getVElement(), getReportService(), getClass().getName()) ? 3 : 2;
 
-			final SWTGridCell label = rendererGridDescription.getGrid().get(0);
-			label.setHorizontalGrab(false);
-			label.setVerticalGrab(false);
-			label.setVerticalFill(false);
-			final Optional<Integer> labelWidth = getLabelWidth();
-			if (labelWidth.isPresent()) {
-				label.setPreferredSize(
-					labelWidth.get(),
-					label.getPreferredSize() == null ? SWT.DEFAULT : label.getPreferredSize().y);
+			rendererGridDescription = GridDescriptionFactory.INSTANCE.createEmptyGridDescription();
+			rendererGridDescription.setRows(1);
+			rendererGridDescription.setColumns(columns);
+
+			final List<SWTGridCell> grid = new ArrayList<SWTGridCell>();
+
+			if (columns == 3) {
+				final SWTGridCell labelCell = SimpleControlSWTRendererUtil
+					.createLabelCell(grid.size(), this, getLabelWidth());
+				grid.add(labelCell);
 			}
 
-			final SWTGridCell controls = rendererGridDescription.getGrid().get(1);
-			controls.setVerticalGrab(false);
-			controls.setVerticalFill(false);
+			final SWTGridCell validationCell = SimpleControlSWTRendererUtil.createValidationCell(grid.size(), this);
+			grid.add(validationCell);
+
+			final SWTGridCell controlCel = SimpleControlSWTRendererUtil.createControlCell(grid.size(), this);
+			grid.add(controlCel);
+
+			rendererGridDescription.setGrid(grid);
 		}
 		return rendererGridDescription;
 	}
@@ -180,10 +212,16 @@
 	@Override
 	protected Control renderControl(SWTGridCell cell, Composite parent)
 		throws NoRendererFoundException, NoPropertyDescriptorFoundExeption {
-		switch (cell.getColumn()) {
+		int controlIndex = cell.getColumn();
+		if (getVElement().getLabelAlignment() == LabelAlignment.NONE) {
+			controlIndex++;
+		}
+		switch (controlIndex) {
 		case 0:
 			return createLabel(parent);
 		case 1:
+			return createValidationIcon(parent);
+		case 2:
 			return createControls(parent);
 		default:
 			throw new IllegalArgumentException(
@@ -200,51 +238,93 @@
 	 * @since 1.8
 	 */
 	protected Control createLabel(Composite parent) {
-		final EList<VControl> controls = getVElement().getControls();
+		final Label label = new Label(parent, getLabelStyleBits());
+		label.setData(CUSTOM_VARIANT, "org_eclipse_emf_ecp_control_label"); //$NON-NLS-1$
+		SWTDataElementIdHelper
+			.setElementIdDataWithSubId(label, getVElement(), "control_label", getViewModelContext()); //$NON-NLS-1$
+		label.setBackground(parent.getBackground());
 
-		final Composite labelComposite = new Composite(parent, SWT.NONE);
-		GridLayoutFactory.fillDefaults().numColumns(2 * controls.size() -
-			1).equalWidth(false).applyTo(labelComposite);
+		final IObservableValue textObservable = WidgetProperties.text().observe(label);
+		final Map<IObservableValue, Map.Entry<VControl, EStructuralFeature>> displayNameObservables = getLabelDisplayNameObservables();
 
-		final AlignmentType labelAlignment = getLabelAlignment();
+		for (final IObservableValue displayNameObservable : displayNameObservables.keySet()) {
+			getDataBindingContext().bindValue(
+				textObservable,
+				displayNameObservable,
+				new UpdateValueStrategy(UpdateValueStrategy.POLICY_NEVER),
+				new CompoundControlDisplayNameUpdateValueStrategy(displayNameObservables));
+		}
 
-		for (int i = 0; i < controls.size(); i++) {
-			if (i != 0) {
-				final Label separatorLabel = new Label(labelComposite, SWT.NONE);
-				GridDataFactory.fillDefaults().grab(false, false).align(SWT.FILL, SWT.CENTER).applyTo(separatorLabel);
-				separatorLabel.setText(SEPARATOR);
-			}
-
-			boolean grab = false;
-			int stylebits = SWT.NONE;
-			if (labelAlignment == AlignmentType.LEFT && i == controls.size() - 1) {
-				/* if left, the last label should grow */
-				grab = true;
-			} else if (labelAlignment == AlignmentType.RIGHT && i == 0) {
-				/* if right, first column should grow and right alignment */
-				grab = true;
-				stylebits = SWT.RIGHT;
-			}
-
-			final Label label = new Label(labelComposite, stylebits);
-			GridDataFactory.fillDefaults().grab(grab, false).align(SWT.FILL, SWT.CENTER).applyTo(label);
-			final VControl control = controls.get(i);
-			try {
-				@SuppressWarnings("deprecation")
-				final IObservableValue targetValue = org.eclipse.jface.databinding.swt.SWTObservables
-					.observeText(label);
-				final IObservableValue modelValue = getLabelProvider().getDisplayName(control.getDomainModelReference(),
-					getViewModelContext().getDomainModel());
-				final Binding bindValue = getDataBindingContext().bindValue(targetValue, modelValue);
-				bindValue.updateModelToTarget();
-			} catch (final NoLabelFoundException ex) {
-				getReportService().report(new AbstractReport(ex));
-			}
+		final IObservableValue tooltipObservable = WidgetProperties.tooltipText().observe(label);
+		final List<IObservableValue> labelDescriptionObservables = getLabelDescriptionObservables();
+		for (final IObservableValue descriptionObservable : labelDescriptionObservables) {
+			getDataBindingContext().bindValue(
+				tooltipObservable,
+				descriptionObservable,
+				new UpdateValueStrategy(UpdateValueStrategy.POLICY_NEVER),
+				new EMFUpdateValueStrategy() {
+					@Override
+					public Object convert(Object value) {
+						final StringBuilder stringBuilder = new StringBuilder();
+						for (final IObservableValue obs : labelDescriptionObservables) {
+							if (stringBuilder.length() > 0) {
+								stringBuilder.append("\n"); //$NON-NLS-1$
+							}
+							stringBuilder.append(obs.getValue());
+						}
+						return stringBuilder.toString();
+					}
+				});
 
 		}
 
-		labelComposite.setData(CUSTOM_VARIANT, "org_eclipse_emf_ecp_control_label"); //$NON-NLS-1$
-		return labelComposite;
+		return label;
+	}
+
+	private Map<IObservableValue, Map.Entry<VControl, EStructuralFeature>> getLabelDisplayNameObservables() {
+		final LinkedHashMap<IObservableValue, Entry<VControl, EStructuralFeature>> displayNames = new LinkedHashMap<IObservableValue, Map.Entry<VControl, EStructuralFeature>>();
+
+		for (final VControl control : getVElement().getControls()) {
+			try {
+				final IObservableValue displayName = labelProvider
+					.getDisplayName(control.getDomainModelReference(), getViewModelContext().getDomainModel());
+
+				final EStructuralFeature feature = getDatabindingService()
+					.getValueProperty(control.getDomainModelReference(), getViewModelContext().getDomainModel())
+					.getStructuralFeature();
+
+				displayNames.put(displayName,
+					new AbstractMap.SimpleEntry<VControl, EStructuralFeature>(control, feature));
+			} catch (final NoLabelFoundException ex) {
+				getReportService().report(new AbstractReport(ex, IStatus.WARNING));
+			} catch (final DatabindingFailedException ex) {
+				getReportService().report(new AbstractReport(ex, IStatus.WARNING));
+			}
+		}
+
+		return displayNames;
+	}
+
+	private List<IObservableValue> getLabelDescriptionObservables() {
+		final List<IObservableValue> labelDescriptionObservables = new ArrayList<IObservableValue>();
+		for (final VControl control : getVElement().getControls()) {
+			try {
+				labelDescriptionObservables.add(labelProvider.getDescription(control.getDomainModelReference(),
+					getViewModelContext().getDomainModel()));
+			} catch (final NoLabelFoundException ex) {
+				getReportService().report(new AbstractReport(ex, IStatus.WARNING));
+			}
+		}
+		return labelDescriptionObservables;
+	}
+
+	/**
+	 * @return the style bits for the control's label
+	 * @since 1.17
+	 */
+	protected int getLabelStyleBits() {
+		return AbstractControlSWTRendererUtil
+			.getLabelStyleBits(getViewTemplateProvider(), getVElement(), getViewModelContext());
 	}
 
 	/**
@@ -264,19 +344,60 @@
 	}
 
 	/**
-	 * @return the style bits for the control's label
-	 * @since 1.16
+	 * Return the validation cell of the fist child. If no children or strange first cell, return a dummy validation
+	 * icon.
+	 *
+	 * @param parent the parent to render on
+	 * @return the validation control
+	 *
+	 * @throws NoRendererFoundException this is thrown when a renderer cannot be found
+	 * @throws NoPropertyDescriptorFoundExeption this is thrown when no property descriptor can be found
+	 * @since 1.17
 	 */
-	protected AlignmentType getLabelAlignment() {
-		final VTControlLabelAlignmentStyleProperty styleProperty = RendererUtil.getStyleProperty(
-			getViewTemplateProvider(),
-			getVElement(),
-			getViewModelContext(),
-			VTControlLabelAlignmentStyleProperty.class);
-		if (styleProperty == null) {
-			return AlignmentType.LEFT;
+	protected Control createValidationIcon(Composite parent)
+		throws NoRendererFoundException, NoPropertyDescriptorFoundExeption {
+		if (getVElement().getControls().isEmpty()) {
+			return createDummyValidationIcon(parent);
 		}
-		return styleProperty.getType();
+		final AbstractSWTRenderer<VElement> renderer = getElementRendererMap()
+			.get(getVElement().getControls().get(0));
+		if (renderer == null) {
+			return createDummyValidationIcon(parent);
+		}
+		final SWTGridDescription gridDescription = renderer
+			.getGridDescription(GridDescriptionFactory.INSTANCE.createEmptyGridDescription());
+		if (gridDescription.getColumns() < 2) {
+			return createDummyValidationIcon(parent);
+		}
+		/* use child renderer cell */
+		setFirstControlValidationIconUsed(true);
+		final SWTGridCell validationCell = gridDescription.getGrid().get(0);
+		return validationCell.getRenderer().render(validationCell, parent);
+	}
+
+	/**
+	 * Whether the first cell of the first child control was used to renderer our validation icon.
+	 *
+	 * @param used <code>true</code> if used, <code>false</code> otherwise
+	 * @since 1.17
+	 */
+	protected void setFirstControlValidationIconUsed(boolean used) {
+		firstControlValidationIconUsed = used;
+	}
+
+	/**
+	 * Creates the validation icon of the first cell of the first child may not be used as the validation icon.
+	 *
+	 * @param parent the parent
+	 * @return the validation icon
+	 * @since 1.17
+	 */
+	protected Control createDummyValidationIcon(Composite parent) {
+		final Label validationLabel = new Label(parent, SWT.NONE);
+		SWTDataElementIdHelper
+			.setElementIdDataWithSubId(validationLabel, getVElement(), "control_validation", getViewModelContext()); //$NON-NLS-1$
+		validationLabel.setBackground(parent.getBackground());
+		return validationLabel;
 	}
 
 	/**
@@ -287,11 +408,11 @@
 	 * @since 1.8
 	 */
 	protected Control createControls(Composite parent) {
-		return createControls(parent, 0);
+		return createControls(parent, firstControlValidationIconUsed ? 1 : 0);
 	}
 
 	/**
-	 * Creates the controls composite. May skip the first cells of the child renderers.
+	 * Creates the controls composite. May skip the first cell(s).
 	 *
 	 * @param parent the parent composite
 	 * @param cellsToSkip number of cells to skip
@@ -299,8 +420,6 @@
 	 * @since 1.16
 	 */
 	protected Control createControls(Composite parent, int cellsToSkip) {
-		initChildRendererMap();
-
 		final Composite columnComposite = new Composite(parent, SWT.NONE);
 		columnComposite.setBackground(parent.getBackground());
 
@@ -352,7 +471,7 @@
 	 * @since 1.16
 	 */
 	protected void initChildRendererMap() {
-		if (getElementRendererMap() != null) {
+		if (elementRendererMap != null) {
 			return;
 		}
 		setElementRendererMap(new LinkedHashMap<VContainedElement, AbstractSWTRenderer<VElement>>());
@@ -422,4 +541,53 @@
 		}
 		super.dispose();
 	}
+
+	/**
+	 * Model to target for display names which concats all display names.
+	 *
+	 * @author Johannes Faltermeier
+	 *
+	 */
+	private final class CompoundControlDisplayNameUpdateValueStrategy extends EMFUpdateValueStrategy {
+		private final Map<IObservableValue, Entry<VControl, EStructuralFeature>> displayNameObservables;
+
+		/**
+		 * @param displayNameObservables
+		 */
+		private CompoundControlDisplayNameUpdateValueStrategy(
+			Map<IObservableValue, Entry<VControl, EStructuralFeature>> displayNameObservables) {
+			this.displayNameObservables = displayNameObservables;
+		}
+
+		@Override
+		public Object convert(Object value) {
+			final StringBuilder stringBuilder = new StringBuilder();
+
+			for (final Entry<IObservableValue, Map.Entry<VControl, EStructuralFeature>> obs : displayNameObservables
+				.entrySet()) {
+				if (stringBuilder.length() > 0) {
+					stringBuilder.append(SEPARATOR);
+				}
+				stringBuilder.append(
+					getDisplayName(obs.getKey(), obs.getValue().getKey(), obs.getValue().getValue()));
+
+			}
+			return stringBuilder.toString();
+		}
+
+		private Object getDisplayName(
+			final IObservableValue obs,
+			VControl control,
+			EStructuralFeature structuralFeature) {
+
+			final Object value = obs.getValue();
+			String extra = ""; //$NON-NLS-1$
+			final VTMandatoryStyleProperty mandatoryStyle = AbstractControlSWTRendererUtil
+				.getMandatoryStyle(getViewTemplateProvider(), control, getViewModelContext());
+			if (mandatoryStyle.isHighliteMandatoryFields() && structuralFeature.getLowerBound() > 0) {
+				extra = mandatoryStyle.getMandatoryMarker();
+			}
+			return value + extra;
+		}
+	}
 }
diff --git a/bundles/org.eclipse.emf.ecp.view.compoundcontrol.tooling/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.view.compoundcontrol.tooling/META-INF/MANIFEST.MF
index 8f00bc8..823e39f 100644
--- a/bundles/org.eclipse.emf.ecp.view.compoundcontrol.tooling/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.view.compoundcontrol.tooling/META-INF/MANIFEST.MF
@@ -2,6 +2,6 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Compound Control Tooling
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.compoundcontrol.tooling;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
diff --git a/bundles/org.eclipse.emf.ecp.view.compoundcontrol.tooling/pom.xml b/bundles/org.eclipse.emf.ecp.view.compoundcontrol.tooling/pom.xml
index c75d893..75464f6 100644
--- a/bundles/org.eclipse.emf.ecp.view.compoundcontrol.tooling/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.view.compoundcontrol.tooling/pom.xml
@@ -7,7 +7,7 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
 
diff --git a/bundles/org.eclipse.emf.ecp.view.compoundcontrol.tooling/viewmodel/CompoundControl.view b/bundles/org.eclipse.emf.ecp.view.compoundcontrol.tooling/viewmodel/CompoundControl.view
index 9170d88..18c38d2 100644
--- a/bundles/org.eclipse.emf.ecp.view.compoundcontrol.tooling/viewmodel/CompoundControl.view
+++ b/bundles/org.eclipse.emf.ecp.view.compoundcontrol.tooling/viewmodel/CompoundControl.view
@@ -1,9 +1,20 @@
 <?xml version="1.0" encoding="ASCII"?>
-<org.eclipse.emf.ecp.view.model:View xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:org.eclipse.emf.ecp.view.model="http://org/eclipse/emf/ecp/view/model/170" xmi:id="_qh0foGaPEeWid_wgrZaAaw" name="CompoundControl" ecorePath="/org.eclipse.emf.ecp.view.compoundcontrol.model/model/compoundcontrol.ecore">
+<org.eclipse.emf.ecp.view.model:View xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:org.eclipse.emf.ecp.view.model="http://org/eclipse/emf/ecp/view/model/1170" xmi:id="_qh0foGaPEeWid_wgrZaAaw" name="CompoundControl">
   <rootEClass href="http://org/eclipse/emf/ecp/view/compoundcontrol/model#//CompoundControl"/>
   <children xsi:type="org.eclipse.emf.ecp.view.model:Control" xmi:id="_qiHakGaPEeWid_wgrZaAaw" name="Control name">
     <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_qiHakWaPEeWid_wgrZaAaw">
-      <domainModelEFeature xsi:type="ecore:EAttribute" href="http://org/eclipse/emf/ecp/view/model/170#//Element/name"/>
+      <domainModelEFeature xsi:type="ecore:EAttribute" href="http://org/eclipse/emf/ecp/view/model/1170#//Element/name"/>
     </domainModelReference>
   </children>
+  <children xsi:type="org.eclipse.emf.ecp.view.model:Control" xmi:id="_pOkQ4E3kEeiiiv2tJoAZjg" name="Control readonly">
+    <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_pOk38E3kEeiiiv2tJoAZjg">
+      <domainModelEFeature xsi:type="ecore:EAttribute" href="http://org/eclipse/emf/ecp/view/model/1170#//Element/readonly"/>
+    </domainModelReference>
+  </children>
+  <children xsi:type="org.eclipse.emf.ecp.view.model:Control" xmi:id="_pOn7QE3kEeiiiv2tJoAZjg" name="Control labelAlignment">
+    <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_pOn7QU3kEeiiiv2tJoAZjg">
+      <domainModelEFeature xsi:type="ecore:EAttribute" href="http://org/eclipse/emf/ecp/view/model/1170#//Control/labelAlignment"/>
+    </domainModelReference>
+  </children>
+  <ecorePaths>/org.eclipse.emf.ecp.view.compoundcontrol.model/model/compoundcontrol.ecore</ecorePaths>
 </org.eclipse.emf.ecp.view.model:View>
diff --git a/bundles/org.eclipse.emf.ecp.view.context.locale/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.view.context.locale/META-INF/MANIFEST.MF
index 56b53a9..2ac8c9a 100644
--- a/bundles/org.eclipse.emf.ecp.view.context.locale/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.view.context.locale/META-INF/MANIFEST.MF
@@ -2,10 +2,11 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: EMF Forms Locale View Service
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.context.locale;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emf.ecp.view.context.internal.locale;version="1.16.0";x-internal:=true
-Require-Bundle: org.eclipse.emf.ecp.view.context;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.edit;bundle-version="[1.16.0,1.17.0)"
+Export-Package: org.eclipse.emf.ecp.view.context.internal.locale;version="1.17.0";x-internal:=true
+Require-Bundle: org.eclipse.emf.ecp.view.context;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.edit;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.view.context.locale
diff --git a/bundles/org.eclipse.emf.ecp.view.context.locale/pom.xml b/bundles/org.eclipse.emf.ecp.view.context.locale/pom.xml
index 0993432..f4fdefb 100644
--- a/bundles/org.eclipse.emf.ecp.view.context.locale/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.view.context.locale/pom.xml
@@ -7,13 +7,13 @@
   <parent>

     <groupId>org.eclipse.emf.ecp</groupId>

     <artifactId>ecp-bundles-parent</artifactId>

-    <version>1.16.0-SNAPSHOT</version>

+    <version>1.17.0-SNAPSHOT</version>

     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>

   </parent>

 

   <artifactId>org.eclipse.emf.ecp.view.context.locale</artifactId>

   <packaging>eclipse-plugin</packaging>

-  <version>1.16.0-SNAPSHOT</version>

+  <version>1.17.0-SNAPSHOT</version>

 

   <groupId>org.eclipse.emf.ecp</groupId>

 </project>

diff --git a/bundles/org.eclipse.emf.ecp.view.context.locale/src/org/eclipse/emf/ecp/view/context/internal/locale/DefaultLocaleViewService.java b/bundles/org.eclipse.emf.ecp.view.context.locale/src/org/eclipse/emf/ecp/view/context/internal/locale/DefaultLocaleViewService.java
index 4ae3499..a7a42f2 100644
--- a/bundles/org.eclipse.emf.ecp.view.context.locale/src/org/eclipse/emf/ecp/view/context/internal/locale/DefaultLocaleViewService.java
+++ b/bundles/org.eclipse.emf.ecp.view.context.locale/src/org/eclipse/emf/ecp/view/context/internal/locale/DefaultLocaleViewService.java
@@ -15,13 +15,17 @@
 
 import org.eclipse.emf.ecp.edit.spi.ViewLocaleService;
 import org.eclipse.emf.ecp.view.spi.context.ViewModelContext;
+import org.eclipse.emfforms.spi.common.locale.EMFFormsLocaleProvider;
 
 /**
  * A {@link org.eclipse.emf.ecp.view.spi.context.ViewModelService ViewModelService} which provides the default locale.
  *
  * @author Eugen Neufeld
+ * @deprecated Please use the {@link EMFFormsLocaleProvider
+ *             EMFFormsLocaleProvider}
  *
  */
+@Deprecated
 public class DefaultLocaleViewService implements ViewLocaleService {
 
 	/**
diff --git a/bundles/org.eclipse.emf.ecp.view.context/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.view.context/META-INF/MANIFEST.MF
index dedaa63..b07c62f 100644
--- a/bundles/org.eclipse.emf.ecp.view.context/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.view.context/META-INF/MANIFEST.MF
@@ -2,19 +2,20 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: View Model Context
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.context;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Activator: org.eclipse.emf.ecp.view.internal.context.Activator
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emf.ecp.view.internal.context;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.view.spi.context;version="1.16.0"
+Export-Package: org.eclipse.emf.ecp.view.internal.context;version="1.17.0";x-internal:=true,
+  org.eclipse.emf.ecp.view.spi.context;version="1.17.0"
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.7.0,4.0.0)",
   org.eclipse.emf.edit;bundle-version="[2.8.0,3.0.0)",
-  org.eclipse.emf.ecp.view.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.common;bundle-version="[1.16.0,1.17.0)";visibility:=reexport,
+  org.eclipse.emf.ecp.view.model;bundle-version="[1.17.0,1.18.0)",
+  org.eclipse.emf.ecp.common;bundle-version="[1.17.0,1.18.0)";visibility:=reexport,
   org.eclipse.core.databinding.observable;bundle-version="[1.4.0,2.0.0)",
-  org.eclipse.emfforms.core.services;bundle-version="[1.16.0,1.17.0)";visibility:=reexport
+  org.eclipse.emfforms.core.services;bundle-version="[1.17.0,1.18.0)";visibility:=reexport
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
-Import-Package: org.eclipse.emfforms.common;version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.spi.common.report;version="[1.16.0,1.17.0)",
+Import-Package: org.eclipse.emfforms.common;version="[1.17.0,1.18.0)",
+  org.eclipse.emfforms.spi.common.report;version="[1.17.0,1.18.0)",
   org.osgi.service.component.annotations;version="[1.2.0,2.0.0)";resolution:=optional
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.view.context
diff --git a/bundles/org.eclipse.emf.ecp.view.context/pom.xml b/bundles/org.eclipse.emf.ecp.view.context/pom.xml
index 59ad926..c7cec13 100644
--- a/bundles/org.eclipse.emf.ecp.view.context/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.view.context/pom.xml
@@ -7,7 +7,7 @@
   <parent>

     <groupId>org.eclipse.emf.ecp</groupId>

     <artifactId>ecp-bundles-parent</artifactId>

-    <version>1.16.0-SNAPSHOT</version>

+    <version>1.17.0-SNAPSHOT</version>

     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>

   </parent>

 

diff --git a/bundles/org.eclipse.emf.ecp.view.context/src/org/eclipse/emf/ecp/view/internal/context/ViewModelContextImpl.java b/bundles/org.eclipse.emf.ecp.view.context/src/org/eclipse/emf/ecp/view/internal/context/ViewModelContextImpl.java
index 5fc6a9d..fd25864 100644
--- a/bundles/org.eclipse.emf.ecp.view.context/src/org/eclipse/emf/ecp/view/internal/context/ViewModelContextImpl.java
+++ b/bundles/org.eclipse.emf.ecp.view.context/src/org/eclipse/emf/ecp/view/internal/context/ViewModelContextImpl.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2011-2017 EclipseSource Muenchen GmbH and others.
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH and others.
  *
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
@@ -8,11 +8,12 @@
  *
  * Contributors:
  * Eugen Neufeld - initial API and implementation
- * Christian W. Damus - bug 527740
+ * Christian W. Damus - bugs 527740, 533522
  ******************************************************************************/
 package org.eclipse.emf.ecp.view.internal.context;
 
 import java.util.Comparator;
+import java.util.Iterator;
 import java.util.LinkedHashMap;
 import java.util.LinkedHashSet;
 import java.util.List;
@@ -20,8 +21,12 @@
 import java.util.Set;
 import java.util.SortedSet;
 import java.util.TreeSet;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ConcurrentMap;
+import java.util.concurrent.ConcurrentSkipListSet;
 import java.util.concurrent.CopyOnWriteArrayList;
 import java.util.concurrent.CopyOnWriteArraySet;
+import java.util.concurrent.atomic.AtomicInteger;
 
 import org.eclipse.emf.common.command.BasicCommandStack;
 import org.eclipse.emf.common.notify.AdapterFactory;
@@ -99,8 +104,10 @@
 	/** The view model change listener. Needs to be thread safe. */
 	private final List<ModelChangeListener> viewModelChangeListener = new CopyOnWriteArrayList<ModelChangeListener>();
 
-	/** The domain model change listener. Needs to be thread safe. */
-	private final List<ModelChangeListener> domainModelChangeListener = new CopyOnWriteArrayList<ModelChangeListener>();
+	/** The domain model change listeners. Needs to be thread safe. */
+	private final GroupedListenerList<ModelChangeListener> domainModelChangeListener =
+		// needed to make sure that all data operations are done before any validation etc provided by services happens
+		new GroupedListenerList<ModelChangeListener>(VDomainModelReference.class);
 
 	/** The root domain model change listeners. Needs to be thread safe. */
 	private final List<RootDomainModelChangeListener> rootDomainModelChangeListeners = new CopyOnWriteArrayList<RootDomainModelChangeListener>();
@@ -256,7 +263,6 @@
 		} else {
 			viewServiceProvider = modelServiceProvider;
 		}
-		viewServices.addAll(viewServiceProvider.getViewModelServices(view, domainObject));
 		this.parentVElement = parentVElement;
 		instantiate();
 	}
@@ -314,6 +320,9 @@
 
 		view.eAdapters().add(viewModelContentAdapter);
 
+		// Generate local view services from our provider
+		viewServices.addAll(viewServiceProvider.getViewModelServices(view, domainObject));
+
 		for (final ViewModelService viewService : viewServices) {
 			viewService.instantiate(this);
 		}
@@ -516,27 +525,7 @@
 			throw new IllegalArgumentException(MODEL_CHANGE_LISTENER_MUST_NOT_BE_NULL);
 		}
 		if (parentContext == null) {
-			// TODO performance
-			// needed to make sure, all data operations are done before any validation etc provided by services happens
-			if (VDomainModelReference.class.isInstance(modelChangeListener)) {
-				domainModelChangeListener.add(0, modelChangeListener);
-			} else {
-				// TODO hack for https://bugs.eclipse.org/bugs/show_bug.cgi?id=460158
-				int positionToInsert = -1;
-				for (int i = 0; i < domainModelChangeListener.size(); i++) {
-					final ModelChangeListener listener = domainModelChangeListener.get(i);
-					if (modelChangeListener.getClass().isInstance(listener)) {
-						positionToInsert = i;
-						break;
-					}
-				}
-
-				if (positionToInsert == -1) {
-					domainModelChangeListener.add(modelChangeListener);
-				} else {
-					domainModelChangeListener.add(positionToInsert, modelChangeListener);
-				}
-			}
+			domainModelChangeListener.add(modelChangeListener);
 		} else {
 			parentContext.registerDomainChangeListener(modelChangeListener);
 		}
@@ -547,6 +536,10 @@
 		// if (isDisposed) {
 		// throw new IllegalStateException("The ViewModelContext was already disposed.");
 		// }
+		if (modelChangeListener == null) {
+			// ConcurrentSkipListSet doesn't allow nulls but balks on attempts to remove them, too
+			return;
+		}
 		if (parentContext == null) {
 			domainModelChangeListener.remove(modelChangeListener);
 		} else {
@@ -596,17 +589,12 @@
 				return (T) service;
 			}
 		}
-
-		if (serviceMap.containsKey(serviceType)) {
-			return (T) serviceMap.get(serviceType);
-		} else if (servicesManager != null) {
-			final Optional<T> lazyService = servicesManager.createLocalLazyService(serviceType, this);
-			if (lazyService.isPresent()) {
-				final T t = lazyService.get();
-				serviceMap.put(serviceType, t);
-				return t;
-			}
+		// First check local services
+		final T localService = getLocalService(serviceType);
+		if (localService != null) {
+			return localService;
 		}
+		// If context is the root, check global services to be instanciated
 		if (servicesManager != null && parentContext == null) {
 			final Optional<T> lazyService = servicesManager.createGlobalLazyService(serviceType, this);
 			if (lazyService.isPresent()) {
@@ -615,10 +603,11 @@
 				return t;
 			}
 		}
+		// Check the parent context
 		if (parentContext != null && parentContext.hasService(serviceType)) {
 			return parentContext.getService(serviceType);
 		}
-
+		// Check OSGi services
 		if (bundleContext != null) {
 			final ServiceReference<T> serviceReference = bundleContext.getServiceReference(serviceType);
 			if (serviceReference != null) {
@@ -631,6 +620,24 @@
 		return null;
 	}
 
+	/**
+	 * @return a instance of a local service or a local service service, which can be created or null if neither exists.
+	 */
+	@SuppressWarnings("unchecked")
+	private <T> T getLocalService(Class<T> serviceType) {
+		if (serviceMap.containsKey(serviceType)) {
+			return (T) serviceMap.get(serviceType);
+		} else if (servicesManager != null) {
+			final Optional<T> lazyService = servicesManager.createLocalLazyService(serviceType, this);
+			if (lazyService.isPresent()) {
+				final T t = lazyService.get();
+				serviceMap.put(serviceType, t);
+				return t;
+			}
+		}
+		return null;
+	}
+
 	private void report(AbstractReport report) {
 		final Activator activator = Activator.getInstance();
 		if (activator != null) {
@@ -1012,4 +1019,101 @@
 	public void unregisterRootDomainModelChangeListener(RootDomainModelChangeListener rootDomainModelChangeListener) {
 		rootDomainModelChangeListeners.remove(rootDomainModelChangeListener);
 	}
+
+	/**
+	 * A collection of listeners grouped by class. Work-around for the absence of priority
+	 * support (<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=460158">bug 460158</a>).
+	 *
+	 * @author Christian W. Damus
+	 *
+	 * @see <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=460158">bug 460158</a>
+	 */
+	private static final class GroupedListenerList<T> implements Iterable<T> {
+		private final Set<T> listeners = new ConcurrentSkipListSet<T>(comparator());
+
+		private final AtomicInteger nextGroup = new AtomicInteger();
+		private final ConcurrentMap<Class<?>, Integer> groups = new ConcurrentHashMap<Class<?>, Integer>();
+
+		private final Class<?> importantGroup;
+
+		/**
+		 * Initializes with an important group that must be first in the iteration order.
+		 */
+		GroupedListenerList(Class<?> importantGroup) {
+			super();
+
+			this.importantGroup = importantGroup;
+			seedImportantGroup();
+		}
+
+		/**
+		 * Sort elements by group first and then arbitrarily within each group.
+		 *
+		 * @return a grouping comparator
+		 */
+		private Comparator<T> comparator() {
+			return new Comparator<T>() {
+				@Override
+				public int compare(T o1, T o2) {
+					if (o1 == o2) {
+						return 0;
+					}
+
+					final int group1 = getGroup(o1);
+					final int group2 = getGroup(o2);
+					int result = group1 - group2;
+
+					if (result == 0) {
+						// Same group. Arbitrary ordering by address
+						result = System.identityHashCode(o1) - System.identityHashCode(o2);
+					}
+
+					return result;
+				}
+			};
+		}
+
+		private void seedImportantGroup() {
+			if (importantGroup != null) {
+				// Seed the map with a lowest-order group
+				groups.put(importantGroup, nextGroup.getAndIncrement());
+			}
+		}
+
+		private int getGroup(T listener) {
+			final Class<?> groupKey = importantGroup != null && importantGroup.isInstance(listener)
+				? importantGroup
+				: listener.getClass();
+
+			Integer result = groups.get(groupKey);
+			if (result == null) {
+				result = nextGroup.getAndIncrement();
+				final Integer collision = groups.putIfAbsent(groupKey, result);
+				if (collision != null) {
+					result = collision;
+				}
+			}
+
+			return result;
+		}
+
+		void add(T listener) {
+			listeners.add(listener);
+		}
+
+		void remove(T listener) {
+			listeners.remove(listener);
+		}
+
+		void clear() {
+			listeners.clear();
+			groups.clear();
+			seedImportantGroup();
+		}
+
+		@Override
+		public Iterator<T> iterator() {
+			return listeners.iterator();
+		}
+	}
 }
diff --git a/bundles/org.eclipse.emf.ecp.view.control.multireference/.settings/org.eclipse.pde.ds.annotations.prefs b/bundles/org.eclipse.emf.ecp.view.control.multireference/.settings/org.eclipse.pde.ds.annotations.prefs
new file mode 100644
index 0000000..73a356b
--- /dev/null
+++ b/bundles/org.eclipse.emf.ecp.view.control.multireference/.settings/org.eclipse.pde.ds.annotations.prefs
@@ -0,0 +1,8 @@
+classpath=true
+dsVersion=V1_3
+eclipse.preferences.version=1
+enabled=true
+generateBundleActivationPolicyLazy=true
+path=OSGI-INF
+validationErrorLevel=error
+validationErrorLevel.missingImplicitUnbindMethod=error
diff --git a/bundles/org.eclipse.emf.ecp.view.control.multireference/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.view.control.multireference/META-INF/MANIFEST.MF
index 28de07f..fd7b182 100644
--- a/bundles/org.eclipse.emf.ecp.view.control.multireference/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.view.control.multireference/META-INF/MANIFEST.MF
@@ -2,37 +2,41 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Multireference
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.control.multireference;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emf.ecp.view.internal.control.multireference;version="1.16.0";x-internal:=true
+Export-Package: org.eclipse.emf.ecp.view.internal.control.multireference;version="1.17.0";x-internal:=true
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.7.0,4.0.0)",
-  org.eclipse.core.databinding;bundle-version="[1.4.1,2.0.0)",
-  org.eclipse.emf.edit;bundle-version="[2.8.0,3.0.0)",
-  org.eclipse.emf.ecp.ui.view.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.core.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.template.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.edit.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.util.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.core.databinding.property;bundle-version="[1.4.0,2.0.0)",
-  org.eclipse.emfforms.localization;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.databinding;bundle-version="[1.3.0,2.0.0)",
-  org.eclipse.emfforms.swt.core.di;bundle-version="[1.16.0,1.17.0)"
+ org.eclipse.core.databinding;bundle-version="[1.4.1,2.0.0)",
+ org.eclipse.emf.edit;bundle-version="[2.8.0,3.0.0)",
+ org.eclipse.emf.ecp.ui.view.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.core.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.template.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.edit.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.util.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.core.databinding.property;bundle-version="[1.4.0,2.0.0)",
+ org.eclipse.emfforms.localization;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.databinding;bundle-version="[1.3.0,2.0.0)",
+ org.eclipse.emfforms.swt.core.di;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.view.annotation.model;bundle-version="[1.17.0,1.18.0)"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Import-Package: javax.inject;version="1.0.0",
-  org.eclipse.emf.edit.ui.provider;version="0.0.0",
-  org.eclipse.emfforms.internal.core.services.label;version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.spi.common.report;version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.spi.swt.core;version="[1.16.0,1.17.0)",
-  org.eclipse.jface.databinding.swt;version="0.0.0",
-  org.eclipse.jface.databinding.viewers;version="0.0.0",
-  org.eclipse.jface.layout;version="0.0.0",
-  org.eclipse.jface.viewers;version="0.0.0",
-  org.eclipse.swt;version="0.0.0",
-  org.eclipse.swt.events;version="0.0.0",
-  org.eclipse.swt.graphics;version="0.0.0",
-  org.eclipse.swt.layout;version="0.0.0",
-  org.eclipse.swt.widgets;version="0.0.0",
-  org.osgi.framework;version="1.3.0"
-Service-Component: OSGI-INF/multiReferenceRendererService.xml
+ org.eclipse.emf.edit.ui.provider;version="0.0.0",
+ org.eclipse.emfforms.internal.core.services.label;version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.spi.common.report;version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.spi.swt.core;version="[1.17.0,1.18.0]",
+ org.eclipse.jface.databinding.swt;version="0.0.0",
+ org.eclipse.jface.databinding.viewers;version="0.0.0",
+ org.eclipse.jface.layout;version="0.0.0",
+ org.eclipse.jface.viewers;version="0.0.0",
+ org.eclipse.swt;version="0.0.0",
+ org.eclipse.swt.events;version="0.0.0",
+ org.eclipse.swt.graphics;version="0.0.0",
+ org.eclipse.swt.layout;version="0.0.0",
+ org.eclipse.swt.widgets;version="0.0.0",
+ org.osgi.framework;version="1.3.0",
+ org.osgi.service.component.annotations;version="1.2.0";resolution:=optional
+Service-Component: OSGI-INF/multiReferenceRendererService.xml,
+ OSGI-INF/LinkOnlyMultiReferenceRendererService.xml
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.view.control.multireference
diff --git a/bundles/org.eclipse.emf.ecp.view.control.multireference/OSGI-INF/LinkOnlyMultiReferenceRendererService.xml b/bundles/org.eclipse.emf.ecp.view.control.multireference/OSGI-INF/LinkOnlyMultiReferenceRendererService.xml
new file mode 100644
index 0000000..41bb23b
--- /dev/null
+++ b/bundles/org.eclipse.emf.ecp.view.control.multireference/OSGI-INF/LinkOnlyMultiReferenceRendererService.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="LinkOnlyMultiReferenceRendererService">
+   <service>
+      <provide interface="org.eclipse.emfforms.spi.swt.core.di.EMFFormsDIRendererService"/>
+   </service>
+   <reference bind="setEMFFormsDatabinding" interface="org.eclipse.emfforms.spi.core.services.databinding.EMFFormsDatabinding" name="EMFFormsDatabinding"/>
+   <reference bind="setReportService" interface="org.eclipse.emfforms.spi.common.report.ReportService" name="ReportService"/>
+   <implementation class="org.eclipse.emf.ecp.view.internal.control.multireference.LinkOnlyMultiReferenceRendererService"/>
+</scr:component>
\ No newline at end of file
diff --git a/bundles/org.eclipse.emf.ecp.view.control.multireference/pom.xml b/bundles/org.eclipse.emf.ecp.view.control.multireference/pom.xml
index abac82b..d250927 100644
--- a/bundles/org.eclipse.emf.ecp.view.control.multireference/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.view.control.multireference/pom.xml
@@ -7,7 +7,7 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
 
@@ -15,5 +15,5 @@
   <packaging>eclipse-plugin</packaging>
 
   <groupId>org.eclipse.emf.ecp</groupId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
 </project>
diff --git a/bundles/org.eclipse.emf.ecp.view.control.multireference/src/org/eclipse/emf/ecp/view/internal/control/multireference/LinkOnlyMultiReferenceRenderer.java b/bundles/org.eclipse.emf.ecp.view.control.multireference/src/org/eclipse/emf/ecp/view/internal/control/multireference/LinkOnlyMultiReferenceRenderer.java
new file mode 100644
index 0000000..18efba2
--- /dev/null
+++ b/bundles/org.eclipse.emf.ecp.view.control.multireference/src/org/eclipse/emf/ecp/view/internal/control/multireference/LinkOnlyMultiReferenceRenderer.java
@@ -0,0 +1,60 @@
+/*******************************************************************************
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * Martin Fleck - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.emf.ecp.view.internal.control.multireference;
+
+import javax.inject.Inject;
+
+import org.eclipse.emf.ecp.view.spi.context.ViewModelContext;
+import org.eclipse.emf.ecp.view.spi.model.VControl;
+import org.eclipse.emf.ecp.view.spi.util.swt.ImageRegistryService;
+import org.eclipse.emf.ecp.view.template.model.VTViewTemplateProvider;
+import org.eclipse.emfforms.spi.common.report.ReportService;
+import org.eclipse.emfforms.spi.core.services.databinding.EMFFormsDatabinding;
+import org.eclipse.emfforms.spi.core.services.label.EMFFormsLabelProvider;
+
+/**
+ * Multi Reference renderer that only allows linking existing objects but not creating new ones.
+ *
+ * @author Martin Fleck
+ *
+ */
+public class LinkOnlyMultiReferenceRenderer extends MultiReferenceSWTRenderer {
+
+	/**
+	 * Default constructor.
+	 *
+	 * @param vElement the view model element to be rendered
+	 * @param viewContext the view context
+	 * @param emfFormsDatabinding The {@link EMFFormsDatabinding}
+	 * @param emfFormsLabelProvider The {@link EMFFormsLabelProvider}
+	 * @param reportService The {@link ReportService}
+	 * @param vtViewTemplateProvider The {@link VTViewTemplateProvider}
+	 * @param imageRegistryService The {@link ImageRegistryService}
+	 */
+	@Inject
+	public LinkOnlyMultiReferenceRenderer(VControl vElement, ViewModelContext viewContext, ReportService reportService,
+		EMFFormsDatabinding emfFormsDatabinding, EMFFormsLabelProvider emfFormsLabelProvider,
+		VTViewTemplateProvider vtViewTemplateProvider, ImageRegistryService imageRegistryService) {
+		super(vElement, viewContext, reportService, emfFormsDatabinding, emfFormsLabelProvider, vtViewTemplateProvider,
+			imageRegistryService);
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.emf.ecp.view.internal.control.multireference.MultiReferenceSWTRenderer#showAddNewButton()
+	 */
+	@Override
+	protected boolean showAddNewButton() {
+		return false;
+	}
+}
diff --git a/bundles/org.eclipse.emf.ecp.view.control.multireference/src/org/eclipse/emf/ecp/view/internal/control/multireference/LinkOnlyMultiReferenceRendererService.java b/bundles/org.eclipse.emf.ecp.view.control.multireference/src/org/eclipse/emf/ecp/view/internal/control/multireference/LinkOnlyMultiReferenceRendererService.java
new file mode 100644
index 0000000..92533ca
--- /dev/null
+++ b/bundles/org.eclipse.emf.ecp.view.control.multireference/src/org/eclipse/emf/ecp/view/internal/control/multireference/LinkOnlyMultiReferenceRendererService.java
@@ -0,0 +1,121 @@
+/*******************************************************************************
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * Martin Fleck - initial API and implementation
+ * Lucas Koehler - Adapted for universal usage by using an annotation
+ ******************************************************************************/
+package org.eclipse.emf.ecp.view.internal.control.multireference;
+
+import org.eclipse.core.databinding.property.value.IValueProperty;
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.ecp.view.spi.context.ViewModelContext;
+import org.eclipse.emf.ecp.view.spi.model.VAttachment;
+import org.eclipse.emf.ecp.view.spi.model.VControl;
+import org.eclipse.emf.ecp.view.spi.model.VElement;
+import org.eclipse.emf.emfforms.spi.view.annotation.model.VAnnotation;
+import org.eclipse.emfforms.spi.common.report.ReportService;
+import org.eclipse.emfforms.spi.core.services.databinding.DatabindingFailedException;
+import org.eclipse.emfforms.spi.core.services.databinding.DatabindingFailedReport;
+import org.eclipse.emfforms.spi.core.services.databinding.EMFFormsDatabinding;
+import org.eclipse.emfforms.spi.swt.core.AbstractSWTRenderer;
+import org.eclipse.emfforms.spi.swt.core.di.EMFFormsDIRendererService;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Reference;
+
+/**
+ * Provides the {@link LinkOnlyMultiReferenceRenderer} for multi references. The renderer is only used if the
+ * corresponding control specifies an annotation with key {@value #ANNOTATION_KEY}.
+ *
+ * @author Martin Fleck
+ * @author Lucas Koehler
+ *
+ */
+@Component(name = "LinkOnlyMultiReferenceRendererService")
+public class LinkOnlyMultiReferenceRendererService implements EMFFormsDIRendererService<VControl> {
+
+	/**
+	 * The annotation key specifying that this renderer is applicable for a multi reference.
+	 */
+	public static final String ANNOTATION_KEY = "hideAddNewButton"; //$NON-NLS-1$
+
+	private EMFFormsDatabinding databindingService;
+	private ReportService reportService;
+
+	/**
+	 * Called by the initializer to set the EMFFormsDatabinding.
+	 *
+	 * @param databindingService The EMFFormsDatabinding
+	 */
+	@Reference(unbind = "-")
+	protected void setEMFFormsDatabinding(EMFFormsDatabinding databindingService) {
+		this.databindingService = databindingService;
+	}
+
+	/**
+	 * Called by the initializer to set the ReportService.
+	 *
+	 * @param reportService The ReportService
+	 */
+	@Reference(unbind = "-")
+	protected void setReportService(ReportService reportService) {
+		this.reportService = reportService;
+	}
+
+	@Override
+	public double isApplicable(VElement vElement, ViewModelContext viewModelContext) {
+		if (!VControl.class.isInstance(vElement)) {
+			return NOT_APPLICABLE;
+		}
+		final VControl control = (VControl) vElement;
+		if (control.getDomainModelReference() == null) {
+			return NOT_APPLICABLE;
+		}
+
+		IValueProperty valueProperty;
+		try {
+			valueProperty = databindingService
+				.getValueProperty(control.getDomainModelReference(), viewModelContext.getDomainModel());
+		} catch (final DatabindingFailedException ex) {
+			reportService.report(new DatabindingFailedReport(ex));
+			return NOT_APPLICABLE;
+		}
+		final EStructuralFeature feature = (EStructuralFeature) valueProperty.getValueType();
+		if (!feature.isMany()) {
+			return NOT_APPLICABLE;
+		}
+		if (EAttribute.class.isInstance(feature)) {
+			return NOT_APPLICABLE;
+		}
+
+		// Check that the annotation is present; we do not care about the value
+		if (isAnnotationPresent(vElement)) {
+			return 6;
+		}
+
+		return NOT_APPLICABLE;
+	}
+
+	// Method by itself to reduce n-path complexity of #isApplicable
+	private boolean isAnnotationPresent(VElement vElement) {
+		for (final VAttachment vAttachment : vElement.getAttachments()) {
+			if (VAnnotation.class.isInstance(vAttachment)
+				&& ANNOTATION_KEY.equals(VAnnotation.class.cast(vAttachment).getKey())) {
+				return true;
+			}
+		}
+		return false;
+	}
+
+	@Override
+	public Class<? extends AbstractSWTRenderer<VControl>> getRendererClass() {
+		return LinkOnlyMultiReferenceRenderer.class;
+	}
+
+}
diff --git a/bundles/org.eclipse.emf.ecp.view.control.multireference/src/org/eclipse/emf/ecp/view/internal/control/multireference/MultiReferenceSWTRenderer.java b/bundles/org.eclipse.emf.ecp.view.control.multireference/src/org/eclipse/emf/ecp/view/internal/control/multireference/MultiReferenceSWTRenderer.java
index 6f3fe66..7957889 100644
--- a/bundles/org.eclipse.emf.ecp.view.control.multireference/src/org/eclipse/emf/ecp/view/internal/control/multireference/MultiReferenceSWTRenderer.java
+++ b/bundles/org.eclipse.emf.ecp.view.control.multireference/src/org/eclipse/emf/ecp/view/internal/control/multireference/MultiReferenceSWTRenderer.java
@@ -196,7 +196,7 @@
 		if (rendererGridDescription == null) {
 			// create special grid for compact mode
 			if (getTableStyleProperty().getRenderMode() == RenderMode.COMPACT_VERTICALLY) {
-				rendererGridDescription = GridDescriptionFactory.INSTANCE.createSimpleGrid(1, 2, this);
+				rendererGridDescription = GridDescriptionFactory.INSTANCE.createCompactGrid(false, true, this);
 			} else {
 				rendererGridDescription = GridDescriptionFactory.INSTANCE.createSimpleGrid(1, 1, this);
 			}
@@ -298,16 +298,21 @@
 			// Default
 			return renderMultiReferenceControl(cell, parent);
 		}
-		// Compact
+		// Compact: render icon
 		if (cell.getColumn() == 0 && rendererGridDescription.getColumns() > 1) {
 			validationIcon = createValidationIcon(parent);
 			return validationIcon;
 		}
+		// Compact: render table and buttons next to each other
 		final Composite composite = new Composite(parent, SWT.NONE);
+		composite.setBackgroundMode(SWT.INHERIT_FORCE);
+
 		GridLayoutFactory.fillDefaults().numColumns(2).applyTo(composite);
-		renderMultiReferenceControl(cell, composite);
+		final Control multiRefComposite = renderMultiReferenceControl(cell, composite);
+		GridDataFactory.fillDefaults().grab(true, true).applyTo(multiRefComposite);
 		try {
-			createButtonComposite(composite);
+			final Composite buttonComposite = createButtonComposite(composite);
+			GridDataFactory.fillDefaults().align(SWT.END, SWT.BEGINNING).applyTo(buttonComposite);
 		} catch (final DatabindingFailedException ex) {
 			getReportService().report(new RenderingFailedReport(ex));
 			return createErrorLabel(composite, ex);
@@ -385,7 +390,7 @@
 		GridDataFactory.fillDefaults().grab(true, true).align(SWT.FILL, SWT.FILL)
 			.hint(1, getTableHeightHint())
 			.applyTo(controlComposite);
-		GridLayoutFactory.fillDefaults().numColumns(1).applyTo(controlComposite);
+		GridLayoutFactory.fillDefaults().applyTo(controlComposite);
 		return controlComposite;
 	}
 
@@ -639,9 +644,10 @@
 	 * necessary.
 	 *
 	 * @param parent The parent of the created {@link Composite}
+	 * @return the created Composite
 	 * @throws DatabindingFailedException thrown if the databinding could not be executed successfully
 	 */
-	protected void createButtonComposite(Composite parent) throws DatabindingFailedException {
+	protected Composite createButtonComposite(Composite parent) throws DatabindingFailedException {
 		final Composite buttonComposite = new Composite(parent, SWT.NONE);
 
 		final IObservableValue observableValue = getEMFFormsDatabinding()
@@ -674,8 +680,7 @@
 		}
 
 		GridLayoutFactory.fillDefaults().numColumns(nrButtons).equalWidth(true).applyTo(buttonComposite);
-		GridDataFactory.fillDefaults().grab(true, false).align(SWT.END, SWT.FILL)
-			.applyTo(buttonComposite);
+		return buttonComposite;
 	}
 
 	/**
@@ -700,7 +705,9 @@
 		validationIcon = createValidationIcon(titleComposite);
 		GridDataFactory.fillDefaults().hint(16, 17).grab(false, false).applyTo(validationIcon);
 
-		createButtonComposite(titleComposite);
+		final Composite buttonComposite = createButtonComposite(titleComposite);
+		GridDataFactory.fillDefaults().grab(true, false).align(SWT.END, SWT.FILL)
+			.applyTo(buttonComposite);
 	}
 
 	/**
@@ -884,7 +891,7 @@
 	 */
 	protected void handleAddNew(TableViewer tableViewer, EObject eObject, EStructuralFeature structuralFeature) {
 		final ReferenceService referenceService = getViewModelContext().getService(ReferenceService.class);
-		referenceService.addNewModelElements(eObject, (EReference) structuralFeature);
+		referenceService.addNewModelElements(eObject, (EReference) structuralFeature, true);
 	}
 
 	/**
diff --git a/bundles/org.eclipse.emf.ecp.view.core.swt/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.view.core.swt/META-INF/MANIFEST.MF
index 756cee3..96abc0e 100644
--- a/bundles/org.eclipse.emf.ecp.view.core.swt/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.view.core.swt/META-INF/MANIFEST.MF
@@ -2,48 +2,49 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: View Core SWT
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.core.swt;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Activator: org.eclipse.emf.ecp.view.internal.core.swt.Activator
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emf.ecp.view.internal.core.swt;version="1.16.0";x-friends:="org.eclipse.emf.ecp.view.table.ui.swt",
-  org.eclipse.emf.ecp.view.internal.core.swt.renderer;version="1.16.0";x-friends:="org.eclipse.emf.ecp.ui.view.editor.controls,org.eclipse.emf.ecp.view.context.test",
-  org.eclipse.emf.ecp.view.spi.core.swt;version="1.16.0";
-   uses:="org.eclipse.emf.ecp.ui.view.swt.internal,
-    org.eclipse.emf.ecp.view.spi.model,
-    org.eclipse.swt.widgets,
-    org.eclipse.emf.ecp.view.spi.context,
-    org.eclipse.emf.ecp.edit.spi.swt.util",
-  org.eclipse.emf.ecp.view.spi.core.swt.renderer;version="1.16.0"
+Export-Package: org.eclipse.emf.ecp.view.internal.core.swt;version="1.17.0";x-friends:="org.eclipse.emf.ecp.view.table.ui.swt",
+ org.eclipse.emf.ecp.view.internal.core.swt.renderer;version="1.17.0";x-friends:="org.eclipse.emf.ecp.ui.view.editor.controls,org.eclipse.emf.ecp.view.context.test",
+ org.eclipse.emf.ecp.view.spi.core.swt;version="1.17.0";
+  uses:="org.eclipse.emf.ecp.ui.view.swt.internal,
+   org.eclipse.emf.ecp.view.spi.model,
+   org.eclipse.swt.widgets,
+   org.eclipse.emf.ecp.view.spi.context,
+   org.eclipse.emf.ecp.edit.spi.swt.util",
+ org.eclipse.emf.ecp.view.spi.core.swt.renderer;version="1.17.0"
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.7.0,4.0.0)",
-  org.eclipse.emf.ecp.ui.view.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.edit.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.template.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.model.common;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.core.databinding.property;bundle-version="[1.4.200,2.0.0)",
-  org.eclipse.emf.ecp.view.util.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.edit;bundle-version="[2.8.0,3.0.0)",
-  org.eclipse.emf.databinding;bundle-version="[1.3.0,2.0.0)",
-  org.eclipse.emfforms.localization;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services.editsupport;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.swt.core;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.swt.core.di;bundle-version="[1.16.0,1.17.0)"
+ org.eclipse.emf.ecp.ui.view.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.edit.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.template.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.model.common;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.core.databinding.property;bundle-version="[1.4.200,2.0.0)",
+ org.eclipse.emf.ecp.view.util.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.edit;bundle-version="[2.8.0,3.0.0)",
+ org.eclipse.emf.databinding;bundle-version="[1.3.0,2.0.0)",
+ org.eclipse.emfforms.localization;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services.editsupport;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.swt.core;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.swt.core.di;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Service-Component: OSGI-INF/booleanControlService.xml,OSGI-INF/dateTimeControlService.xml,OSGI-INF/enumControlService.xml,OSGI-INF/numberControlService.xml,OSGI-INF/textControlService.xml,OSGI-INF/xmlDateControlService.xml,OSGI-INF/viewRendererService.xml,OSGI-INF/linkControlService.xml,OSGI-INF/enumLiteralFilteredControlService.xml
 Bundle-ActivationPolicy: lazy
 Import-Package: javax.inject;version="1.0.0",
-  org.eclipse.emfforms.spi.common.locale;version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.spi.common.report;version="[1.16.0,1.17.0)",
-  org.eclipse.jface.databinding.swt;version="0.0.0",
-  org.eclipse.jface.databinding.viewers;version="0.0.0",
-  org.eclipse.jface.dialogs;version="0.0.0",
-  org.eclipse.jface.layout;version="0.0.0",
-  org.eclipse.jface.resource;version="0.0.0",
-  org.eclipse.jface.viewers;version="0.0.0",
-  org.eclipse.jface.window;version="0.0.0",
-  org.eclipse.swt;version="0.0.0",
-  org.eclipse.swt.custom;version="0.0.0",
-  org.eclipse.swt.events;version="0.0.0",
-  org.eclipse.swt.graphics;version="0.0.0",
-  org.eclipse.swt.layout;version="0.0.0",
-  org.eclipse.swt.widgets;version="0.0.0"
+ org.eclipse.emfforms.spi.common.locale;version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.spi.common.report;version="[1.17.0,1.18.0]",
+ org.eclipse.jface.databinding.swt;version="0.0.0",
+ org.eclipse.jface.databinding.viewers;version="0.0.0",
+ org.eclipse.jface.dialogs;version="0.0.0",
+ org.eclipse.jface.layout;version="0.0.0",
+ org.eclipse.jface.resource;version="0.0.0",
+ org.eclipse.jface.viewers;version="0.0.0",
+ org.eclipse.jface.window;version="0.0.0",
+ org.eclipse.swt;version="0.0.0",
+ org.eclipse.swt.custom;version="0.0.0",
+ org.eclipse.swt.events;version="0.0.0",
+ org.eclipse.swt.graphics;version="0.0.0",
+ org.eclipse.swt.layout;version="0.0.0",
+ org.eclipse.swt.widgets;version="0.0.0"
+Automatic-Module-Name: org.eclipse.emf.ecp.view.core.swt
diff --git a/bundles/org.eclipse.emf.ecp.view.core.swt/pom.xml b/bundles/org.eclipse.emf.ecp.view.core.swt/pom.xml
index 0c9cbe7..e851fb8 100644
--- a/bundles/org.eclipse.emf.ecp.view.core.swt/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.view.core.swt/pom.xml
@@ -7,7 +7,7 @@
   <parent>

     <groupId>org.eclipse.emf.ecp</groupId>

     <artifactId>ecp-bundles-parent</artifactId>

-    <version>1.16.0-SNAPSHOT</version>

+    <version>1.17.0-SNAPSHOT</version>

     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>

   </parent>

 

@@ -15,5 +15,5 @@
   <packaging>eclipse-plugin</packaging>

 

   <groupId>org.eclipse.emf.ecp</groupId>

-  <version>1.16.0-SNAPSHOT</version>

+  <version>1.17.0-SNAPSHOT</version>

 </project>

diff --git a/bundles/org.eclipse.emf.ecp.view.core.swt/src/org/eclipse/emf/ecp/view/internal/core/swt/renderer/ECPLegacyControlSWTRenderer.java b/bundles/org.eclipse.emf.ecp.view.core.swt/src/org/eclipse/emf/ecp/view/internal/core/swt/renderer/ECPLegacyControlSWTRenderer.java
index 0aa6663..fa3098d 100644
--- a/bundles/org.eclipse.emf.ecp.view.core.swt/src/org/eclipse/emf/ecp/view/internal/core/swt/renderer/ECPLegacyControlSWTRenderer.java
+++ b/bundles/org.eclipse.emf.ecp.view.core.swt/src/org/eclipse/emf/ecp/view/internal/core/swt/renderer/ECPLegacyControlSWTRenderer.java
@@ -39,22 +39,22 @@
 @Deprecated
 public class ECPLegacyControlSWTRenderer extends SimpleControlSWTControlSWTRenderer {
 
-	private static final EMFFormsDatabinding emfFormsDatabinding;
-	private static final EMFFormsLabelProvider emfFormsLabelProvider;
-	private static final VTViewTemplateProvider vtViewTemplateProvider;
+	private static final EMFFormsDatabinding EMFFORMS_DATABINDING;
+	private static final EMFFormsLabelProvider EMFFORMS_LABELPROVIDER;
+	private static final VTViewTemplateProvider VTVIEW_TEMPLATEPROVIDER;
 
 	static {
 		final BundleContext bundleContext = FrameworkUtil.getBundle(ECPLegacyControlSWTRenderer.class)
 			.getBundleContext();
 		final ServiceReference<EMFFormsDatabinding> emfFormsDatabindingServiceReference = bundleContext
 			.getServiceReference(EMFFormsDatabinding.class);
-		emfFormsDatabinding = bundleContext.getService(emfFormsDatabindingServiceReference);
+		EMFFORMS_DATABINDING = bundleContext.getService(emfFormsDatabindingServiceReference);
 		final ServiceReference<EMFFormsLabelProvider> emfFormsLabelProviderServiceReference = bundleContext
 			.getServiceReference(EMFFormsLabelProvider.class);
-		emfFormsLabelProvider = bundleContext.getService(emfFormsLabelProviderServiceReference);
+		EMFFORMS_LABELPROVIDER = bundleContext.getService(emfFormsLabelProviderServiceReference);
 		final ServiceReference<VTViewTemplateProvider> vtViewTemplateProviderServiceReference = bundleContext
 			.getServiceReference(VTViewTemplateProvider.class);
-		vtViewTemplateProvider = bundleContext.getService(vtViewTemplateProviderServiceReference);
+		VTVIEW_TEMPLATEPROVIDER = bundleContext.getService(vtViewTemplateProviderServiceReference);
 	}
 
 	/**
@@ -66,7 +66,7 @@
 	 */
 	public ECPLegacyControlSWTRenderer(VControl vElement, ViewModelContext viewContext,
 		ReportService reportService) {
-		super(vElement, viewContext, reportService, emfFormsDatabinding, emfFormsLabelProvider, vtViewTemplateProvider);
+		super(vElement, viewContext, reportService, EMFFORMS_DATABINDING, EMFFORMS_LABELPROVIDER, VTVIEW_TEMPLATEPROVIDER);
 	}
 
 	private SWTControl control;
diff --git a/bundles/org.eclipse.emf.ecp.view.core.swt/src/org/eclipse/emf/ecp/view/internal/core/swt/renderer/EnumComboViewerSWTRenderer.java b/bundles/org.eclipse.emf.ecp.view.core.swt/src/org/eclipse/emf/ecp/view/internal/core/swt/renderer/EnumComboViewerSWTRenderer.java
index 61988a3..5d7db4a 100644
--- a/bundles/org.eclipse.emf.ecp.view.core.swt/src/org/eclipse/emf/ecp/view/internal/core/swt/renderer/EnumComboViewerSWTRenderer.java
+++ b/bundles/org.eclipse.emf.ecp.view.core.swt/src/org/eclipse/emf/ecp/view/internal/core/swt/renderer/EnumComboViewerSWTRenderer.java
@@ -141,7 +141,7 @@
 		for (final EEnumLiteral literal : eLiterals) {
 
 			final String isInputtable = EcoreUtil.getAnnotation(literal,
-				VViewPackage.eNS_URI,
+				VViewPackage.NS_URI_170,
 				"isInputtable"); //$NON-NLS-1$
 
 			if (isInputtable == null || Boolean.getBoolean(isInputtable)) {
diff --git a/bundles/org.eclipse.emf.ecp.view.core.swt/src/org/eclipse/emf/ecp/view/internal/core/swt/renderer/LinkControlSWTRenderer.java b/bundles/org.eclipse.emf.ecp.view.core.swt/src/org/eclipse/emf/ecp/view/internal/core/swt/renderer/LinkControlSWTRenderer.java
index 7a54cb9..94ed624 100644
--- a/bundles/org.eclipse.emf.ecp.view.core.swt/src/org/eclipse/emf/ecp/view/internal/core/swt/renderer/LinkControlSWTRenderer.java
+++ b/bundles/org.eclipse.emf.ecp.view.core.swt/src/org/eclipse/emf/ecp/view/internal/core/swt/renderer/LinkControlSWTRenderer.java
@@ -285,7 +285,7 @@
 				try {
 					final EObject eObject = (EObject) ((IObserving) getModelValue()).getObserved();
 					final EReference eReference = (EReference) getModelValue().getValueType();
-					getReferenceService().addNewModelElements(eObject, eReference);
+					getReferenceService().addNewModelElements(eObject, eReference, openNewReferenceInContext());
 				} catch (final DatabindingFailedException ex) {
 					getReportService().report(new DatabindingFailedReport(ex));
 				}
@@ -294,6 +294,15 @@
 	}
 
 	/**
+	 * Whether a new reference should be opened in a new context. True to open in new context, false otherwise.
+	 * 
+	 * @return true to open in new context, false otherwise
+	 */
+	protected boolean openNewReferenceInContext() {
+		return true;
+	}
+
+	/**
 	 * Called by {@link #createButtons(Composite)} to create the delete reference button.
 	 *
 	 * @param parent the parent composite
diff --git a/bundles/org.eclipse.emf.ecp.view.core.swt/src/org/eclipse/emf/ecp/view/spi/core/swt/AbstractControlSWTRenderer.java b/bundles/org.eclipse.emf.ecp.view.core.swt/src/org/eclipse/emf/ecp/view/spi/core/swt/AbstractControlSWTRenderer.java
index 7c3ae70..108ac33 100644
--- a/bundles/org.eclipse.emf.ecp.view.core.swt/src/org/eclipse/emf/ecp/view/spi/core/swt/AbstractControlSWTRenderer.java
+++ b/bundles/org.eclipse.emf.ecp.view.core.swt/src/org/eclipse/emf/ecp/view/spi/core/swt/AbstractControlSWTRenderer.java
@@ -13,7 +13,6 @@
 
 import java.util.LinkedHashMap;
 import java.util.Map;
-import java.util.Set;
 
 import org.eclipse.core.databinding.DataBindingContext;
 import org.eclipse.core.databinding.UpdateValueStrategy;
@@ -24,7 +23,6 @@
 import org.eclipse.emf.ecore.EObject;
 import org.eclipse.emf.ecore.EStructuralFeature;
 import org.eclipse.emf.ecp.edit.spi.swt.util.SWTValidationHelper;
-import org.eclipse.emf.ecp.view.model.common.util.RendererUtil;
 import org.eclipse.emf.ecp.view.spi.context.ViewModelContext;
 import org.eclipse.emf.ecp.view.spi.model.LabelAlignment;
 import org.eclipse.emf.ecp.view.spi.model.ModelChangeListener;
@@ -34,10 +32,7 @@
 import org.eclipse.emf.ecp.view.spi.renderer.NoPropertyDescriptorFoundExeption;
 import org.eclipse.emf.ecp.view.spi.renderer.NoRendererFoundException;
 import org.eclipse.emf.ecp.view.spi.swt.reporting.RenderingFailedReport;
-import org.eclipse.emf.ecp.view.template.model.VTStyleProperty;
 import org.eclipse.emf.ecp.view.template.model.VTViewTemplateProvider;
-import org.eclipse.emf.ecp.view.template.style.alignment.model.VTControlLabelAlignmentStyleProperty;
-import org.eclipse.emf.ecp.view.template.style.mandatory.model.VTMandatoryFactory;
 import org.eclipse.emf.ecp.view.template.style.mandatory.model.VTMandatoryStyleProperty;
 import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain;
 import org.eclipse.emf.edit.domain.EditingDomain;
@@ -461,20 +456,8 @@
 	 * @since 1.16
 	 */
 	protected int getLabelStyleBits() {
-		final VTControlLabelAlignmentStyleProperty styleProperty = RendererUtil.getStyleProperty(
-			getVTViewTemplateProvider(),
-			getVElement(),
-			getViewModelContext(),
-			VTControlLabelAlignmentStyleProperty.class);
-		if (styleProperty == null) {
-			return SWT.NONE;
-		}
-		switch (styleProperty.getType()) {
-		case RIGHT:
-			return SWT.RIGHT;
-		default:
-			return SWT.NONE;
-		}
+		return AbstractControlSWTRendererUtil
+			.getLabelStyleBits(getVTViewTemplateProvider(), getVElement(), getViewModelContext());
 	}
 
 	/**
@@ -490,21 +473,8 @@
 	}
 
 	private VTMandatoryStyleProperty getMandatoryStyle() {
-		if (vtViewTemplateProvider == null) {
-			return getDefaultStyle();
-		}
-		final Set<VTStyleProperty> styleProperties = vtViewTemplateProvider
-			.getStyleProperties(getVElement(), getViewModelContext());
-		for (final VTStyleProperty styleProperty : styleProperties) {
-			if (VTMandatoryStyleProperty.class.isInstance(styleProperty)) {
-				return (VTMandatoryStyleProperty) styleProperty;
-			}
-		}
-		return getDefaultStyle();
-	}
-
-	private VTMandatoryStyleProperty getDefaultStyle() {
-		return VTMandatoryFactory.eINSTANCE.createMandatoryStyleProperty();
+		return AbstractControlSWTRendererUtil
+			.getMandatoryStyle(vtViewTemplateProvider, getVElement(), getViewModelContext());
 	}
 
 	/**
diff --git a/bundles/org.eclipse.emf.ecp.view.core.swt/src/org/eclipse/emf/ecp/view/spi/core/swt/AbstractControlSWTRendererUtil.java b/bundles/org.eclipse.emf.ecp.view.core.swt/src/org/eclipse/emf/ecp/view/spi/core/swt/AbstractControlSWTRendererUtil.java
new file mode 100644
index 0000000..eee2eba
--- /dev/null
+++ b/bundles/org.eclipse.emf.ecp.view.core.swt/src/org/eclipse/emf/ecp/view/spi/core/swt/AbstractControlSWTRendererUtil.java
@@ -0,0 +1,114 @@
+/*******************************************************************************
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * Johannes Faltermeier - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.emf.ecp.view.spi.core.swt;
+
+import java.util.Set;
+
+import org.eclipse.emf.ecp.view.model.common.util.RendererUtil;
+import org.eclipse.emf.ecp.view.spi.context.ViewModelContext;
+import org.eclipse.emf.ecp.view.spi.model.VControl;
+import org.eclipse.emf.ecp.view.template.model.VTStyleProperty;
+import org.eclipse.emf.ecp.view.template.model.VTViewTemplateProvider;
+import org.eclipse.emf.ecp.view.template.style.alignment.model.VTControlLabelAlignmentStyleProperty;
+import org.eclipse.emf.ecp.view.template.style.mandatory.model.VTMandatoryFactory;
+import org.eclipse.emf.ecp.view.template.style.mandatory.model.VTMandatoryStyleProperty;
+import org.eclipse.emf.ecp.view.template.style.wrap.model.VTLabelWrapStyleProperty;
+import org.eclipse.swt.SWT;
+
+/**
+ * Holds some Util methods for the {@link AbstractControlSWTRendererUtil} which may be reused by renderers which cannot
+ * inherit from {@link AbstractControlSWTRendererUtil} but want to reuse functionality.
+ *
+ * @author Johannes Faltermeier
+ * @since 1.17
+ *
+ */
+public final class AbstractControlSWTRendererUtil {
+
+	private AbstractControlSWTRendererUtil() {
+		/* util */
+	}
+
+	/**
+	 * The style bits for a control label.
+	 *
+	 * @param viewTemplateProvider the {@link VTViewTemplateProvider}
+	 * @param control the {@link VControl}
+	 * @param viewModelContext the {@link ViewModelContext}
+	 * @return the style bits
+	 */
+	public static int getLabelStyleBits(VTViewTemplateProvider viewTemplateProvider, VControl control,
+		ViewModelContext viewModelContext) {
+		final VTControlLabelAlignmentStyleProperty alignmentStyleProperty = RendererUtil.getStyleProperty(
+			viewTemplateProvider,
+			control,
+			viewModelContext,
+			VTControlLabelAlignmentStyleProperty.class);
+
+		int bits = SWT.NONE;
+
+		if (alignmentStyleProperty != null) {
+			switch (alignmentStyleProperty.getType()) {
+			case RIGHT:
+				bits |= SWT.RIGHT;
+				break;
+			default:
+				break;
+			}
+		}
+
+		final VTLabelWrapStyleProperty wrapStyleProperty = RendererUtil.getStyleProperty(
+			viewTemplateProvider,
+			control,
+			viewModelContext,
+			VTLabelWrapStyleProperty.class);
+
+		if (wrapStyleProperty != null) {
+			if (VTLabelWrapStyleProperty.class.cast(wrapStyleProperty).isWrapLabel()) {
+				bits |= SWT.WRAP;
+			}
+		}
+
+		return bits;
+	}
+
+	/**
+	 * The {@link VTMandatoryStyleProperty} property.
+	 *
+	 * @param vtViewTemplateProvider the {@link VTViewTemplateProvider}
+	 * @param control the {@link VControl}
+	 * @param viewModelContext the {@link ViewModelContext}
+	 * @return the property
+	 */
+	public static VTMandatoryStyleProperty getMandatoryStyle(
+		VTViewTemplateProvider vtViewTemplateProvider,
+		VControl control,
+		ViewModelContext viewModelContext) {
+
+		if (vtViewTemplateProvider == null) {
+			return getDefaultMandatoryStyle();
+		}
+		final Set<VTStyleProperty> styleProperties = vtViewTemplateProvider
+			.getStyleProperties(control, viewModelContext);
+		for (final VTStyleProperty styleProperty : styleProperties) {
+			if (VTMandatoryStyleProperty.class.isInstance(styleProperty)) {
+				return (VTMandatoryStyleProperty) styleProperty;
+			}
+		}
+		return getDefaultMandatoryStyle();
+	}
+
+	private static VTMandatoryStyleProperty getDefaultMandatoryStyle() {
+		return VTMandatoryFactory.eINSTANCE.createMandatoryStyleProperty();
+	}
+
+}
diff --git a/bundles/org.eclipse.emf.ecp.view.core.swt/src/org/eclipse/emf/ecp/view/spi/core/swt/SimpleControlSWTRenderer.java b/bundles/org.eclipse.emf.ecp.view.core.swt/src/org/eclipse/emf/ecp/view/spi/core/swt/SimpleControlSWTRenderer.java
index d1e7055..fa45c27 100644
--- a/bundles/org.eclipse.emf.ecp.view.core.swt/src/org/eclipse/emf/ecp/view/spi/core/swt/SimpleControlSWTRenderer.java
+++ b/bundles/org.eclipse.emf.ecp.view.core.swt/src/org/eclipse/emf/ecp/view/spi/core/swt/SimpleControlSWTRenderer.java
@@ -11,14 +11,12 @@
  ******************************************************************************/
 package org.eclipse.emf.ecp.view.spi.core.swt;
 
-import java.text.MessageFormat;
 import java.util.ArrayList;
 import java.util.List;
 
 import org.eclipse.core.databinding.observable.IObserving;
 import org.eclipse.core.databinding.observable.value.IObservableValue;
 import org.eclipse.core.databinding.property.value.IValueProperty;
-import org.eclipse.core.runtime.IStatus;
 import org.eclipse.emf.common.util.Diagnostic;
 import org.eclipse.emf.ecore.EObject;
 import org.eclipse.emf.ecore.EStructuralFeature;
@@ -42,7 +40,6 @@
 import org.eclipse.emf.edit.command.SetCommand;
 import org.eclipse.emf.edit.domain.EditingDomain;
 import org.eclipse.emfforms.common.Optional;
-import org.eclipse.emfforms.spi.common.report.AbstractReport;
 import org.eclipse.emfforms.spi.common.report.ReportService;
 import org.eclipse.emfforms.spi.core.services.databinding.DatabindingFailedException;
 import org.eclipse.emfforms.spi.core.services.databinding.DatabindingFailedReport;
@@ -59,7 +56,6 @@
 import org.eclipse.swt.events.SelectionAdapter;
 import org.eclipse.swt.events.SelectionEvent;
 import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.graphics.Point;
 import org.eclipse.swt.widgets.Button;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Control;
@@ -228,8 +224,6 @@
 	private static final String ICONS_UNSET_FEATURE = "icons/unset_feature.png"; //$NON-NLS-1$
 	private static final String ICONS_SET_FEATURE = "icons/set_feature.png"; //$NON-NLS-1$
 
-	private static final Point VALIDATION_PREFERRED_SIZE = new Point(16, 17);
-
 	/**
 	 * Default constructor.
 	 *
@@ -261,7 +255,8 @@
 	@Override
 	public SWTGridDescription getGridDescription(SWTGridDescription gridDescription) {
 		if (rendererGridDescription == null) {
-			final int columns = showLabel() ? 3 : 2;
+			final int columns = SimpleControlSWTRendererUtil
+				.showLabel(getVElement(), getReportService(), getClass().getName()) ? 3 : 2;
 
 			rendererGridDescription = GridDescriptionFactory.INSTANCE.createEmptyGridDescription();
 			rendererGridDescription.setRows(1);
@@ -285,22 +280,6 @@
 		return rendererGridDescription;
 	}
 
-	private boolean showLabel() {
-		switch (getVElement().getLabelAlignment()) {
-		case DEFAULT:
-		case LEFT:
-			return true;
-		case NONE:
-			return false;
-		default:
-			getReportService().report(new AbstractReport(MessageFormat.format(
-				"Label alignment {0} is not supported by renderer {1}. Label alignment set to default.", //$NON-NLS-1$
-				getVElement().getLabelAlignment().getLiteral(), getClass().getName()), IStatus.INFO));
-			getVElement().setLabelAlignment(LabelAlignment.DEFAULT);
-			return true;
-		}
-	}
-
 	/**
 	 * Creates the label cell if necessary.
 	 *
@@ -309,19 +288,7 @@
 	 * @since 1.9
 	 */
 	protected SWTGridCell createLabelCell(int column) {
-		final SWTGridCell labelCell = new SWTGridCell(0, column, this);
-		labelCell.setHorizontalGrab(false);
-		labelCell.setVerticalGrab(false);
-		labelCell.setHorizontalFill(false);
-		labelCell.setHorizontalAlignment(SWTGridCell.Alignment.BEGINNING);
-		labelCell.setVerticalFill(false);
-		labelCell.setVerticalAlignment(SWTGridCell.Alignment.CENTER);
-		labelCell.setRenderer(this);
-		final Optional<Integer> labelWidth = getLabelWidth();
-		if (labelWidth.isPresent()) {
-			labelCell.setPreferredSize(labelWidth.get(), SWT.DEFAULT);
-		}
-		return labelCell;
+		return SimpleControlSWTRendererUtil.createLabelCell(column, this, getLabelWidth());
 	}
 
 	/**
@@ -348,16 +315,7 @@
 	 * @since 1.9
 	 */
 	protected SWTGridCell createValidationCell(int column) {
-		final SWTGridCell validationCell = new SWTGridCell(0, column, this);
-		validationCell.setHorizontalGrab(false);
-		validationCell.setVerticalGrab(false);
-		validationCell.setHorizontalFill(false);
-		validationCell.setHorizontalAlignment(SWTGridCell.Alignment.CENTER);
-		validationCell.setVerticalFill(false);
-		validationCell.setVerticalAlignment(SWTGridCell.Alignment.CENTER);
-		validationCell.setRenderer(this);
-		validationCell.setPreferredSize(VALIDATION_PREFERRED_SIZE);
-		return validationCell;
+		return SimpleControlSWTRendererUtil.createValidationCell(column, this);
 	}
 
 	/**
@@ -368,14 +326,7 @@
 	 * @since 1.9
 	 */
 	protected SWTGridCell createControlCell(int column) {
-		final SWTGridCell controlCell = new SWTGridCell(0, column, this);
-		controlCell.setHorizontalGrab(true);
-		controlCell.setVerticalGrab(false);
-		controlCell.setHorizontalFill(true);
-		controlCell.setVerticalFill(true);
-		controlCell.setVerticalAlignment(SWTGridCell.Alignment.CENTER);
-		controlCell.setRenderer(this);
-		return controlCell;
+		return SimpleControlSWTRendererUtil.createControlCell(column, this);
 	}
 
 	/**
diff --git a/bundles/org.eclipse.emf.ecp.view.core.swt/src/org/eclipse/emf/ecp/view/spi/core/swt/SimpleControlSWTRendererUtil.java b/bundles/org.eclipse.emf.ecp.view.core.swt/src/org/eclipse/emf/ecp/view/spi/core/swt/SimpleControlSWTRendererUtil.java
new file mode 100644
index 0000000..3baf036
--- /dev/null
+++ b/bundles/org.eclipse.emf.ecp.view.core.swt/src/org/eclipse/emf/ecp/view/spi/core/swt/SimpleControlSWTRendererUtil.java
@@ -0,0 +1,132 @@
+/*******************************************************************************
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * Johannes Faltermeier - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.emf.ecp.view.spi.core.swt;
+
+import java.text.MessageFormat;
+
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.emf.ecp.view.spi.model.LabelAlignment;
+import org.eclipse.emf.ecp.view.spi.model.VControl;
+import org.eclipse.emf.ecp.view.spi.model.VElement;
+import org.eclipse.emfforms.common.Optional;
+import org.eclipse.emfforms.spi.common.report.AbstractReport;
+import org.eclipse.emfforms.spi.common.report.ReportService;
+import org.eclipse.emfforms.spi.swt.core.AbstractSWTRenderer;
+import org.eclipse.emfforms.spi.swt.core.layout.SWTGridCell;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.Point;
+
+/**
+ * Holds some Util methods for the {@link SimpleControlSWTRenderer} which may be reused by renderers which cannot
+ * inherit from {@link SimpleControlSWTRenderer} but want to reuse functionality.
+ *
+ * @author Johannes Faltermeier
+ * @since 1.17
+ *
+ */
+public final class SimpleControlSWTRendererUtil {
+
+	private static final Point VALIDATION_PREFERRED_SIZE = new Point(16, 17);
+
+	private SimpleControlSWTRendererUtil() {
+		/* util */
+	}
+
+	/**
+	 * Whether to create a label cell on the left in the same row.
+	 *
+	 * @param control the rendered {@link VControl}
+	 * @param reportService the {@link ReportService}
+	 * @param rendererName the name of the current renderer for logging
+	 * @return <code>true</code> if label grid cell should be created, <code>false</code> otherwise
+	 */
+	public static boolean showLabel(VControl control, ReportService reportService, String rendererName) {
+		switch (control.getLabelAlignment()) {
+		case DEFAULT:
+		case LEFT:
+			return true;
+		case NONE:
+			return false;
+		default:
+			reportService.report(new AbstractReport(MessageFormat.format(
+				"Label alignment {0} is not supported by renderer {1}. Label alignment set to default.", //$NON-NLS-1$
+				control.getLabelAlignment().getLiteral(), rendererName), IStatus.INFO));
+			control.setLabelAlignment(LabelAlignment.DEFAULT);
+			return true;
+		}
+	}
+
+	/**
+	 * Creates the cell for the label.
+	 *
+	 * @param column the column index
+	 * @param renderer the renderer
+	 * @param labelWidth the width for the label
+	 * @return the grid cell
+	 */
+	public static SWTGridCell createLabelCell(
+		int column,
+		AbstractSWTRenderer<? extends VElement> renderer,
+		Optional<Integer> labelWidth) {
+
+		final SWTGridCell labelCell = new SWTGridCell(0, column, renderer);
+		labelCell.setHorizontalGrab(false);
+		labelCell.setVerticalGrab(false);
+		labelCell.setHorizontalFill(false);
+		labelCell.setHorizontalAlignment(SWTGridCell.Alignment.BEGINNING);
+		labelCell.setVerticalFill(false);
+		labelCell.setVerticalAlignment(SWTGridCell.Alignment.CENTER);
+		labelCell.setRenderer(renderer);
+		if (labelWidth.isPresent()) {
+			labelCell.setPreferredSize(labelWidth.get(), SWT.DEFAULT);
+		}
+		return labelCell;
+	}
+
+	/**
+	 * Creates the validation cell.
+	 *
+	 * @param column the column index.
+	 * @param renderer the renderer
+	 * @return the grid cell
+	 */
+	public static SWTGridCell createValidationCell(int column, AbstractSWTRenderer<? extends VElement> renderer) {
+		final SWTGridCell validationCell = new SWTGridCell(0, column, renderer);
+		validationCell.setHorizontalGrab(false);
+		validationCell.setVerticalGrab(false);
+		validationCell.setHorizontalFill(false);
+		validationCell.setHorizontalAlignment(SWTGridCell.Alignment.CENTER);
+		validationCell.setVerticalFill(false);
+		validationCell.setVerticalAlignment(SWTGridCell.Alignment.CENTER);
+		validationCell.setRenderer(renderer);
+		validationCell.setPreferredSize(VALIDATION_PREFERRED_SIZE);
+		return validationCell;
+	}
+
+	/**
+	 * Creates the control cell.
+	 * 
+	 * @param column the column index
+	 * @param renderer the renderer
+	 * @return the grid cell
+	 */
+	public static SWTGridCell createControlCell(int column, AbstractSWTRenderer<? extends VElement> renderer) {
+		final SWTGridCell controlCell = new SWTGridCell(0, column, renderer);
+		controlCell.setHorizontalGrab(true);
+		controlCell.setVerticalGrab(false);
+		controlCell.setHorizontalFill(true);
+		controlCell.setVerticalFill(true);
+		controlCell.setVerticalAlignment(SWTGridCell.Alignment.CENTER);
+		controlCell.setRenderer(renderer);
+		return controlCell;
+	}
+}
diff --git a/bundles/org.eclipse.emf.ecp.view.custom.model.edit/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.view.custom.model.edit/META-INF/MANIFEST.MF
index 1622ec4..dd3d31d 100644
--- a/bundles/org.eclipse.emf.ecp.view.custom.model.edit/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.view.custom.model.edit/META-INF/MANIFEST.MF
@@ -2,18 +2,19 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.custom.model.edit;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-ClassPath: .
 Bundle-Activator: org.eclipse.emf.ecp.view.spi.custom.model.provider.CustomEditPlugin$Implementation
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
-Export-Package: org.eclipse.emf.ecp.view.spi.custom.model.provider;version="1.16.0"
+Export-Package: org.eclipse.emf.ecp.view.spi.custom.model.provider;version="1.17.0"
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.7.0,4.0.0)",
-  org.eclipse.emf.ecp.view.custom.model;bundle-version="[1.16.0,1.17.0)";visibility:=reexport,
-  org.eclipse.emf.edit;bundle-version="[2.7.0,3.0.0)";visibility:=reexport,
-  org.eclipse.emf.ecore;bundle-version="[2.7.0,3.0.0)";visibility:=reexport,
-  org.eclipse.emf.ecore.edit;bundle-version="[2.7.0,3.0.0)";visibility:=reexport,
-  org.eclipse.emf.ecp.view.model;bundle-version="[1.16.0,1.17.0)";visibility:=reexport,
-  org.eclipse.emf.ecp.view.model.edit;bundle-version="[1.16.0,1.17.0)"
+ org.eclipse.emf.ecp.view.custom.model;bundle-version="[1.17.0,1.18.0]";visibility:=reexport,
+ org.eclipse.emf.edit;bundle-version="[2.7.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.ecore;bundle-version="[2.7.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.ecore.edit;bundle-version="[2.7.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.ecp.view.model;bundle-version="[1.17.0,1.18.0]";visibility:=reexport,
+ org.eclipse.emf.ecp.view.model.edit;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.view.custom.model.edit
diff --git a/bundles/org.eclipse.emf.ecp.view.custom.model.edit/plugin.xml b/bundles/org.eclipse.emf.ecp.view.custom.model.edit/plugin.xml
index deed411..651a047 100644
--- a/bundles/org.eclipse.emf.ecp.view.custom.model.edit/plugin.xml
+++ b/bundles/org.eclipse.emf.ecp.view.custom.model.edit/plugin.xml
@@ -20,6 +20,6 @@
 <extension point="org.eclipse.emf.edit.childCreationExtenders">

       <extender

             class="org.eclipse.emf.ecp.view.spi.custom.model.provider.CustomItemProviderAdapterFactory$ViewChildCreationExtender"

-            uri="http://org/eclipse/emf/ecp/view/model/170"/>

+            uri="http://org/eclipse/emf/ecp/view/model/1170"/>

    </extension>

 org.eclipse.emf.ecp.view.custom.model.provider.CustomItemProviderAdapterFactory$ViewChildCreationExtender</plugin>

diff --git a/bundles/org.eclipse.emf.ecp.view.custom.model.edit/pom.xml b/bundles/org.eclipse.emf.ecp.view.custom.model.edit/pom.xml
index f8dcfad..713a7b3 100644
--- a/bundles/org.eclipse.emf.ecp.view.custom.model.edit/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.view.custom.model.edit/pom.xml
@@ -7,7 +7,7 @@
   <parent>

     <groupId>org.eclipse.emf.ecp</groupId>

     <artifactId>ecp-bundles-parent</artifactId>

-    <version>1.16.0-SNAPSHOT</version>

+    <version>1.17.0-SNAPSHOT</version>

     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>

   </parent>

 

diff --git a/bundles/org.eclipse.emf.ecp.view.custom.model/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.view.custom.model/META-INF/MANIFEST.MF
index dbe193f..a87495e 100644
--- a/bundles/org.eclipse.emf.ecp.view.custom.model/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.view.custom.model/META-INF/MANIFEST.MF
@@ -2,31 +2,32 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.custom.model;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-ClassPath: .
 Bundle-Activator: org.eclipse.emf.ecp.view.spi.custom.model.impl.Activator
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
-Export-Package: org.eclipse.emf.ecp.view.spi.custom.model;version="1.16.0",
-  org.eclipse.emf.ecp.view.spi.custom.model.impl;version="1.16.0",
-  org.eclipse.emf.ecp.view.spi.custom.model.util;version="1.16.0"
+Export-Package: org.eclipse.emf.ecp.view.spi.custom.model;version="1.17.0",
+ org.eclipse.emf.ecp.view.spi.custom.model.impl;version="1.17.0",
+ org.eclipse.emf.ecp.view.spi.custom.model.util;version="1.17.0"
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.7.0,4.0.0)",
-  org.eclipse.emf.ecore;bundle-version="[2.7.0,3.0.0)";visibility:=reexport,
-  org.eclipse.emf.ecp.view.model;bundle-version="[1.16.0,1.17.0)";visibility:=reexport,
-  org.eclipse.emf.ecp.edit;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.localization;bundle-version="[1.16.0,1.17.0)"
+ org.eclipse.emf.ecore;bundle-version="[2.7.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.ecp.view.model;bundle-version="[1.17.0,1.18.0]";visibility:=reexport,
+ org.eclipse.emf.ecp.edit;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.localization;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Bundle-ActivationPolicy: lazy
 Service-Component: OSGI-INF/EMFFormsCustomDMRExpander.xml,OSGI-INF/org.eclipse.emf.ecp.view.spi.custom.model.impl.CustomDMRConverter.xml,OSGI-INF/org.eclipse.emf.ecp.view.spi.custom.model.impl.CustomDMRMappingProvider.xml,OSGI-INF/org.eclipse.emf.ecp.view.spi.custom.model.impl.StructuralChangeCustomDMRTester.xml
 Import-Package: org.eclipse.core.databinding.property.list;version="0.0.0",
-  org.eclipse.core.databinding.property.value;version="0.0.0",
-  org.eclipse.emf.databinding;version="0.0.0",
-  org.eclipse.emf.ecp.common.spi;version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.common.spi.asserts;version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.spi.common.report;version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.spi.core.services.databinding;version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.spi.core.services.databinding.emf;version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.spi.core.services.domainexpander;version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.spi.core.services.mappingprovider;version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.spi.core.services.structuralchange;version="[1.16.0,1.17.0)",
-  org.osgi.service.component.annotations;version="[1.2.0,2.0.0)";resolution:=optional
+ org.eclipse.core.databinding.property.value;version="0.0.0",
+ org.eclipse.emf.databinding;version="0.0.0",
+ org.eclipse.emf.ecp.common.spi;version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.common.spi.asserts;version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.spi.common.report;version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.spi.core.services.databinding;version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.spi.core.services.databinding.emf;version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.spi.core.services.domainexpander;version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.spi.core.services.mappingprovider;version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.spi.core.services.structuralchange;version="[1.17.0,1.18.0]",
+ org.osgi.service.component.annotations;version="[1.2.0,2.0.0)";resolution:=optional
+Automatic-Module-Name: org.eclipse.emf.ecp.view.custom.model
diff --git a/bundles/org.eclipse.emf.ecp.view.custom.model/pom.xml b/bundles/org.eclipse.emf.ecp.view.custom.model/pom.xml
index 86b07bb..7de00b0 100644
--- a/bundles/org.eclipse.emf.ecp.view.custom.model/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.view.custom.model/pom.xml
@@ -7,7 +7,7 @@
   <parent>

     <groupId>org.eclipse.emf.ecp</groupId>

     <artifactId>ecp-bundles-parent</artifactId>

-    <version>1.16.0-SNAPSHOT</version>

+    <version>1.17.0-SNAPSHOT</version>

     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>

   </parent>

 

diff --git a/bundles/org.eclipse.emf.ecp.view.custom.ui.swt.di/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.view.custom.ui.swt.di/META-INF/MANIFEST.MF
index 903d391..0b88f54 100644
--- a/bundles/org.eclipse.emf.ecp.view.custom.ui.swt.di/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.view.custom.ui.swt.di/META-INF/MANIFEST.MF
@@ -2,19 +2,20 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Custom View SWT DI
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.custom.ui.swt.di;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emf.ecp.view.custom.ui.swt.di.renderer;version="1.16.0";x-internal:=true
-Require-Bundle: org.eclipse.emf.ecp.view.custom.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.custom.ui.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.ui.view.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.model.common.di;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.e4.core.contexts;bundle-version="[1.3.100,2.0.0)",
-  org.eclipse.e4.core.di;bundle-version="[1.4.0,2.0.0)",
-  org.eclipse.emf.ecp.ui.view.swt.di;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.osgi;bundle-version="[3.10.0,4.0.0)",
-  org.eclipse.core.runtime;bundle-version="[3.7.0,4.0.0)"
+Export-Package: org.eclipse.emf.ecp.view.custom.ui.swt.di.renderer;version="1.17.0";x-internal:=true
+Require-Bundle: org.eclipse.emf.ecp.view.custom.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.custom.ui.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.ui.view.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.model.common.di;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.e4.core.contexts;bundle-version="[1.3.100,2.0.0)",
+ org.eclipse.e4.core.di;bundle-version="[1.4.0,2.0.0)",
+ org.eclipse.emf.ecp.ui.view.swt.di;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.osgi;bundle-version="[3.10.0,4.0.0)",
+ org.eclipse.core.runtime;bundle-version="[3.7.0,4.0.0)"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
-Import-Package: org.eclipse.emfforms.spi.common.report;version="[1.16.0,1.17.0)",
-  org.eclipse.swt.widgets;version="0.0.0"
+Import-Package: org.eclipse.emfforms.spi.common.report;version="[1.17.0,1.18.0]",
+ org.eclipse.swt.widgets;version="0.0.0"
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.view.custom.ui.swt.di
diff --git a/bundles/org.eclipse.emf.ecp.view.custom.ui.swt.di/pom.xml b/bundles/org.eclipse.emf.ecp.view.custom.ui.swt.di/pom.xml
index 1caf30d..e31ecdc 100644
--- a/bundles/org.eclipse.emf.ecp.view.custom.ui.swt.di/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.view.custom.ui.swt.di/pom.xml
@@ -7,7 +7,7 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
 
diff --git a/bundles/org.eclipse.emf.ecp.view.custom.ui.swt/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.view.custom.ui.swt/META-INF/MANIFEST.MF
index f9fc2f8..a7d1aa7 100644
--- a/bundles/org.eclipse.emf.ecp.view.custom.ui.swt/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.view.custom.ui.swt/META-INF/MANIFEST.MF
@@ -2,34 +2,35 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Custom View SWT
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.custom.ui.swt;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Activator: org.eclipse.emf.ecp.view.internal.custom.swt.Activator
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emf.ecp.view.internal.custom.swt;version="1.16.0";x-friends:="org.eclipse.emf.ecp.view.custom.ui.swt.test",
-  org.eclipse.emf.ecp.view.spi.custom.swt;version="1.16.0"
+Export-Package: org.eclipse.emf.ecp.view.internal.custom.swt;version="1.17.0";x-friends:="org.eclipse.emf.ecp.view.custom.ui.swt.test",
+ org.eclipse.emf.ecp.view.spi.custom.swt;version="1.17.0"
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.7.0,4.0.0)",
-  org.eclipse.emf.ecp.ui.view;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.edit;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.edit.swt;bundle-version="[1.16.0,1.17.0)";visibility:=reexport,
-  org.eclipse.core.databinding.property;bundle-version="[1.4.0,2.0.0)",
-  org.eclipse.emf.ecp.view.custom.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.ui.view.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.edit;bundle-version="[2.8.0,3.0.0)",
-  org.eclipse.emf.databinding.edit;bundle-version="[1.3.0,2.0.0)",
-  org.eclipse.emfforms.localization;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services;bundle-version="[1.16.0,1.17.0)"
+ org.eclipse.emf.ecp.ui.view;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.edit;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.edit.swt;bundle-version="[1.17.0,1.18.0]";visibility:=reexport,
+ org.eclipse.core.databinding.property;bundle-version="[1.4.0,2.0.0)",
+ org.eclipse.emf.ecp.view.custom.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.ui.view.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.edit;bundle-version="[2.8.0,3.0.0)",
+ org.eclipse.emf.databinding.edit;bundle-version="[1.3.0,2.0.0)",
+ org.eclipse.emfforms.localization;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
-Import-Package: org.eclipse.emfforms.spi.common.report;version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.spi.swt.core;version="[1.16.0,1.17.0)",
-  org.eclipse.jface.databinding.swt;version="0.0.0",
-  org.eclipse.jface.databinding.viewers;version="0.0.0",
-  org.eclipse.jface.dialogs;version="0.0.0",
-  org.eclipse.jface.layout;version="0.0.0",
-  org.eclipse.jface.resource;version="0.0.0",
-  org.eclipse.jface.viewers;version="0.0.0",
-  org.eclipse.swt;version="0.0.0",
-  org.eclipse.swt.events;version="0.0.0",
-  org.eclipse.swt.graphics;version="0.0.0",
-  org.eclipse.swt.layout;version="0.0.0",
-  org.eclipse.swt.widgets;version="0.0.0"
+Import-Package: org.eclipse.emfforms.spi.common.report;version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.spi.swt.core;version="[1.17.0,1.18.0]",
+ org.eclipse.jface.databinding.swt;version="0.0.0",
+ org.eclipse.jface.databinding.viewers;version="0.0.0",
+ org.eclipse.jface.dialogs;version="0.0.0",
+ org.eclipse.jface.layout;version="0.0.0",
+ org.eclipse.jface.resource;version="0.0.0",
+ org.eclipse.jface.viewers;version="0.0.0",
+ org.eclipse.swt;version="0.0.0",
+ org.eclipse.swt.events;version="0.0.0",
+ org.eclipse.swt.graphics;version="0.0.0",
+ org.eclipse.swt.layout;version="0.0.0",
+ org.eclipse.swt.widgets;version="0.0.0"
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.view.custom.ui.swt
diff --git a/bundles/org.eclipse.emf.ecp.view.custom.ui.swt/pom.xml b/bundles/org.eclipse.emf.ecp.view.custom.ui.swt/pom.xml
index 965b2b2..d377dd2 100644
--- a/bundles/org.eclipse.emf.ecp.view.custom.ui.swt/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.view.custom.ui.swt/pom.xml
@@ -7,7 +7,7 @@
   <parent>

     <groupId>org.eclipse.emf.ecp</groupId>

     <artifactId>ecp-bundles-parent</artifactId>

-    <version>1.16.0-SNAPSHOT</version>

+    <version>1.17.0-SNAPSHOT</version>

     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>

   </parent>

 

diff --git a/bundles/org.eclipse.emf.ecp.view.edapt/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.view.edapt/META-INF/MANIFEST.MF
index 7b50ef0..9afb3da 100644
--- a/bundles/org.eclipse.emf.ecp.view.edapt/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.view.edapt/META-INF/MANIFEST.MF
@@ -2,12 +2,13 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Edapt
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.edapt;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Activator: org.eclipse.emf.ecp.view.edapt.Activator
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emf.ecp.view.edapt;version="1.16.0"
-Require-Bundle: org.eclipse.emf.ecp.view.migrator;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.edapt.history;bundle-version="[1.0.0,2.0.0)",
-  org.eclipse.emf.ecp.view.model;bundle-version="[1.16.0,1.17.0)"
+Export-Package: org.eclipse.emf.ecp.view.edapt;version="1.17.0"
+Require-Bundle: org.eclipse.emf.ecp.view.migrator;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.edapt.history;bundle-version="[1.0.0,2.0.0)",
+ org.eclipse.emf.ecp.view.model;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.view.edapt
diff --git a/bundles/org.eclipse.emf.ecp.view.edapt/pom.xml b/bundles/org.eclipse.emf.ecp.view.edapt/pom.xml
index 9b2a0d3..ec0fa1c 100644
--- a/bundles/org.eclipse.emf.ecp.view.edapt/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.view.edapt/pom.xml
@@ -5,11 +5,11 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emf.ecp.view.edapt</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 </project>
diff --git a/bundles/org.eclipse.emf.ecp.view.edapt/src/org/eclipse/emf/ecp/view/edapt/EdaptViewModelMigrator.java b/bundles/org.eclipse.emf.ecp.view.edapt/src/org/eclipse/emf/ecp/view/edapt/EdaptViewModelMigrator.java
index e2b43e6..63e90f5 100644
--- a/bundles/org.eclipse.emf.ecp.view.edapt/src/org/eclipse/emf/ecp/view/edapt/EdaptViewModelMigrator.java
+++ b/bundles/org.eclipse.emf.ecp.view.edapt/src/org/eclipse/emf/ecp/view/edapt/EdaptViewModelMigrator.java
@@ -19,6 +19,7 @@
 import java.io.PrintWriter;
 import java.util.ArrayList;
 import java.util.Collections;
+import java.util.Comparator;
 import java.util.Date;
 import java.util.Iterator;
 import java.util.LinkedHashMap;
@@ -27,6 +28,7 @@
 import java.util.Map;
 import java.util.Scanner;
 import java.util.Set;
+import java.util.TreeSet;
 
 import org.eclipse.core.runtime.IConfigurationElement;
 import org.eclipse.core.runtime.IContributor;
@@ -72,6 +74,13 @@
 
 	private static final String ECORE_NS_URI = "http://www.eclipse.org/emf/2002/Ecore"; //$NON-NLS-1$
 
+	private static final Comparator<String> RELEASE_COMPERATOR = new Comparator<String>() {
+		@Override
+		public int compare(String left, String right) {
+			return Integer.valueOf(left).compareTo(Integer.valueOf(right));
+		}
+	};
+
 	/**
 	 *
 	 * {@inheritDoc}
@@ -299,10 +308,11 @@
 	private void fillReleases(final Release sourceRelease, final List<Release> targetReleases,
 		final Map<String, List<Change>> sourceReleaseNameToChangesMap,
 		final Map<String, List<Change>> targetReleaseNameToChangesMap) {
-		final List<String> sourceReleaseNames = new ArrayList<String>(sourceReleaseNameToChangesMap.keySet());
-		final List<String> targetReleaseNames = new ArrayList<String>(targetReleaseNameToChangesMap.keySet());
-		Collections.sort(sourceReleaseNames);
-		Collections.sort(targetReleaseNames);
+
+		final Set<String> sourceReleaseNames = new TreeSet<String>(RELEASE_COMPERATOR);
+		sourceReleaseNames.addAll(sourceReleaseNameToChangesMap.keySet());
+		final Set<String> targetReleaseNames = new TreeSet<String>(RELEASE_COMPERATOR);
+		targetReleaseNames.addAll(targetReleaseNameToChangesMap.keySet());
 
 		for (final String release : sourceReleaseNames) {
 			final List<Change> list = sourceReleaseNameToChangesMap.get(release);
diff --git a/bundles/org.eclipse.emf.ecp.view.group.model.edit/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.view.group.model.edit/META-INF/MANIFEST.MF
index a6fbbc7..bd699d5 100644
--- a/bundles/org.eclipse.emf.ecp.view.group.model.edit/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.view.group.model.edit/META-INF/MANIFEST.MF
@@ -2,18 +2,19 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.group.model.edit;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-ClassPath: .
 Bundle-Activator: org.eclipse.emf.ecp.view.spi.group.model.provider.GroupEditPlugin$Implementation
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
-Export-Package: org.eclipse.emf.ecp.view.spi.group.model.provider;version="1.16.0"
+Export-Package: org.eclipse.emf.ecp.view.spi.group.model.provider;version="1.17.0"
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.7.0,4.0.0)",
-  org.eclipse.emf.ecp.view.group.model;bundle-version="[1.16.0,1.17.0)";visibility:=reexport,
-  org.eclipse.emf.edit;bundle-version="[2.8.0,3.0.0)";visibility:=reexport,
-  org.eclipse.emf.ecore;bundle-version="[2.7.0,3.0.0)";visibility:=reexport,
-  org.eclipse.emf.ecore.edit;bundle-version="[2.7.0,3.0.0)";visibility:=reexport,
-  org.eclipse.emf.ecp.view.model;bundle-version="[1.16.0,1.17.0)";visibility:=reexport,
-  org.eclipse.emf.ecp.view.model.edit;bundle-version="[1.16.0,1.17.0)";visibility:=reexport
+ org.eclipse.emf.ecp.view.group.model;bundle-version="[1.17.0,1.18.0]";visibility:=reexport,
+ org.eclipse.emf.edit;bundle-version="[2.8.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.ecore;bundle-version="[2.7.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.ecore.edit;bundle-version="[2.7.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.ecp.view.model;bundle-version="[1.17.0,1.18.0]";visibility:=reexport,
+ org.eclipse.emf.ecp.view.model.edit;bundle-version="[1.17.0,1.18.0]";visibility:=reexport
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.view.group.model.edit
diff --git a/bundles/org.eclipse.emf.ecp.view.group.model.edit/plugin.xml b/bundles/org.eclipse.emf.ecp.view.group.model.edit/plugin.xml
index f9e2d0a..1059597 100644
--- a/bundles/org.eclipse.emf.ecp.view.group.model.edit/plugin.xml
+++ b/bundles/org.eclipse.emf.ecp.view.group.model.edit/plugin.xml
@@ -20,7 +20,7 @@
 

    <extension point="org.eclipse.emf.edit.childCreationExtenders">

       <extender

-            uri="http://org/eclipse/emf/ecp/view/model/170"

+            uri="http://org/eclipse/emf/ecp/view/model/1170"

             class="org.eclipse.emf.ecp.view.spi.group.model.provider.GroupItemProviderAdapterFactory$ViewChildCreationExtender"/>

    </extension>

 

diff --git a/bundles/org.eclipse.emf.ecp.view.group.model.edit/pom.xml b/bundles/org.eclipse.emf.ecp.view.group.model.edit/pom.xml
index 06249a6..f10ff75 100644
--- a/bundles/org.eclipse.emf.ecp.view.group.model.edit/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.view.group.model.edit/pom.xml
@@ -7,7 +7,7 @@
   <parent>

     <groupId>org.eclipse.emf.ecp</groupId>

     <artifactId>ecp-bundles-parent</artifactId>

-    <version>1.16.0-SNAPSHOT</version>

+    <version>1.17.0-SNAPSHOT</version>

     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>

   </parent>

 

diff --git a/bundles/org.eclipse.emf.ecp.view.group.model/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.view.group.model/META-INF/MANIFEST.MF
index 30b65e1..6f1d09d 100644
--- a/bundles/org.eclipse.emf.ecp.view.group.model/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.view.group.model/META-INF/MANIFEST.MF
@@ -2,15 +2,16 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.group.model;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-ClassPath: .
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
-Export-Package: org.eclipse.emf.ecp.view.spi.group.model;version="1.16.0",
-  org.eclipse.emf.ecp.view.spi.group.model.impl;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.view.spi.group.model.util;version="1.16.0"
+Export-Package: org.eclipse.emf.ecp.view.spi.group.model;version="1.17.0",
+ org.eclipse.emf.ecp.view.spi.group.model.impl;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.spi.group.model.util;version="1.17.0"
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.7.0,4.0.0)",
-  org.eclipse.emf.ecore;bundle-version="[2.7.0,3.0.0)";visibility:=reexport,
-  org.eclipse.emf.ecp.view.model;bundle-version="[1.16.0,1.17.0)";visibility:=reexport
+ org.eclipse.emf.ecore;bundle-version="[2.7.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.ecp.view.model;bundle-version="[1.17.0,1.18.0]";visibility:=reexport
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.view.group.model
diff --git a/bundles/org.eclipse.emf.ecp.view.group.model/pom.xml b/bundles/org.eclipse.emf.ecp.view.group.model/pom.xml
index 28c7e14..c9a1ee4 100644
--- a/bundles/org.eclipse.emf.ecp.view.group.model/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.view.group.model/pom.xml
@@ -7,7 +7,7 @@
   <parent>

     <groupId>org.eclipse.emf.ecp</groupId>

     <artifactId>ecp-bundles-parent</artifactId>

-    <version>1.16.0-SNAPSHOT</version>

+    <version>1.17.0-SNAPSHOT</version>

     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>

   </parent>

 

diff --git a/bundles/org.eclipse.emf.ecp.view.group.swt.collapsable/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.view.group.swt.collapsable/META-INF/MANIFEST.MF
index 7148a83..6a15a3f 100644
--- a/bundles/org.eclipse.emf.ecp.view.group.swt.collapsable/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.view.group.swt.collapsable/META-INF/MANIFEST.MF
@@ -2,30 +2,31 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Collapsable Group
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.group.swt.collapsable
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emf.ecp.view.group.swt.internal.collapsable;version="1.16.0";x-internal:=true
-Require-Bundle: org.eclipse.emf.ecp.view.model.common;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.context;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.group.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.core.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.ui.view.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.swt.core;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.swt.core.di;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.databinding.edit;bundle-version="[1.2.0,2.0.0)",
-  org.eclipse.jface;bundle-version="[3.3.0,4.0.0)"
+Export-Package: org.eclipse.emf.ecp.view.group.swt.internal.collapsable;version="1.17.0";x-internal:=true
+Require-Bundle: org.eclipse.emf.ecp.view.model.common;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.context;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.group.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.core.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.ui.view.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.swt.core;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.swt.core.di;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.databinding.edit;bundle-version="[1.2.0,2.0.0)",
+ org.eclipse.jface;bundle-version="[3.3.0,4.0.0)"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Import-Package: javax.inject;version="1.0.0",
-  org.eclipse.emfforms.spi.common.report;version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.spi.core.services.databinding;version="[1.16.0,1.17.0)",
-  org.eclipse.jface.databinding.swt;version="0.0.0",
-  org.eclipse.jface.layout;version="0.0.0",
-  org.eclipse.swt;version="0.0.0",
-  org.eclipse.swt.events;version="0.0.0",
-  org.eclipse.swt.graphics;version="0.0.0",
-  org.eclipse.swt.layout;version="0.0.0",
-  org.eclipse.swt.widgets;version="0.0.0",
-  org.osgi.framework;version="1.6.0"
+ org.eclipse.emfforms.spi.common.report;version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.spi.core.services.databinding;version="[1.17.0,1.18.0]",
+ org.eclipse.jface.databinding.swt;version="0.0.0",
+ org.eclipse.jface.layout;version="0.0.0",
+ org.eclipse.swt;version="0.0.0",
+ org.eclipse.swt.events;version="0.0.0",
+ org.eclipse.swt.graphics;version="0.0.0",
+ org.eclipse.swt.layout;version="0.0.0",
+ org.eclipse.swt.widgets;version="0.0.0",
+ org.osgi.framework;version="1.6.0"
 Service-Component: OSGI-INF/collapsableGroupRendererService.xml
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.view.group.swt.collapsable
diff --git a/bundles/org.eclipse.emf.ecp.view.group.swt.collapsable/pom.xml b/bundles/org.eclipse.emf.ecp.view.group.swt.collapsable/pom.xml
index 191efa0..f7135c9 100644
--- a/bundles/org.eclipse.emf.ecp.view.group.swt.collapsable/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.view.group.swt.collapsable/pom.xml
@@ -7,7 +7,7 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
 
diff --git a/bundles/org.eclipse.emf.ecp.view.group.swt.collapsible.pgroup/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.view.group.swt.collapsible.pgroup/META-INF/MANIFEST.MF
index e2678cd..2dbff4d 100644
--- a/bundles/org.eclipse.emf.ecp.view.group.swt.collapsible.pgroup/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.view.group.swt.collapsible.pgroup/META-INF/MANIFEST.MF
@@ -2,24 +2,25 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Collapsible Group Renderer using PGroup
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.group.swt.collapsible.pgroup;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emf.ecp.view.group.swt.internal.collapsible.pgroup;version="1.16.0";x-internal:=true
-Require-Bundle: org.eclipse.emf.ecp.view.core.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.group.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.ui.view.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.swt.core;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.swt.core.di;bundle-version="[1.16.0,1.17.0)"
+Export-Package: org.eclipse.emf.ecp.view.group.swt.internal.collapsible.pgroup;version="1.17.0";x-internal:=true
+Require-Bundle: org.eclipse.emf.ecp.view.core.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.group.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.ui.view.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.swt.core;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.swt.core.di;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Import-Package: javax.inject;version="1.0.0",
-  org.eclipse.emfforms.spi.common.report;version="[1.16.0,1.17.0)",
-  org.eclipse.nebula.widgets.pgroup;version="0.0.0",
-  org.eclipse.swt;version="0.0.0",
-  org.eclipse.swt.events;version="0.0.0",
-  org.eclipse.swt.graphics;version="0.0.0",
-  org.eclipse.swt.layout;version="0.0.0",
-  org.eclipse.swt.widgets;version="0.0.0",
-  org.osgi.framework;version="1.6.0"
+ org.eclipse.emfforms.spi.common.report;version="[1.17.0,1.18.0]",
+ org.eclipse.nebula.widgets.pgroup;version="0.0.0",
+ org.eclipse.swt;version="0.0.0",
+ org.eclipse.swt.events;version="0.0.0",
+ org.eclipse.swt.graphics;version="0.0.0",
+ org.eclipse.swt.layout;version="0.0.0",
+ org.eclipse.swt.widgets;version="0.0.0",
+ org.osgi.framework;version="1.6.0"
 Service-Component: OSGI-INF/pGroupRendererService.xml
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.view.group.swt.collapsible.pgroup
diff --git a/bundles/org.eclipse.emf.ecp.view.group.swt.collapsible.pgroup/pom.xml b/bundles/org.eclipse.emf.ecp.view.group.swt.collapsible.pgroup/pom.xml
index 515a9cd..416e215 100644
--- a/bundles/org.eclipse.emf.ecp.view.group.swt.collapsible.pgroup/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.view.group.swt.collapsible.pgroup/pom.xml
@@ -7,7 +7,7 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
 
diff --git a/bundles/org.eclipse.emf.ecp.view.group.swt.embedded/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.view.group.swt.embedded/META-INF/MANIFEST.MF
index 9886cb6..1ab9b59 100644
--- a/bundles/org.eclipse.emf.ecp.view.group.swt.embedded/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.view.group.swt.embedded/META-INF/MANIFEST.MF
@@ -2,23 +2,24 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: AlignmentGroup SWT
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.group.swt.embedded
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emf.ecp.view.alignmentgroup.internal.swt;version="1.16.0";x-internal:=true
-Require-Bundle: org.eclipse.emf.ecp.ui.view.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.core.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.group.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.model.common;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.swt.core;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.swt.core.di;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.databinding.edit;bundle-version="[1.2.0,2.0.0)"
+Export-Package: org.eclipse.emf.ecp.view.alignmentgroup.internal.swt;version="1.17.0";x-internal:=true
+Require-Bundle: org.eclipse.emf.ecp.ui.view.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.core.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.group.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.model.common;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.swt.core;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.swt.core.di;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.databinding.edit;bundle-version="[1.2.0,2.0.0)"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Import-Package: javax.inject;version="1.0.0",
-  org.eclipse.core.runtime;version="3.4.0",
-  org.eclipse.emfforms.spi.common.report;version="[1.16.0,1.17.0)",
-  org.eclipse.jface.databinding.swt;version="0.0.0",
-  org.eclipse.swt;version="0.0.0",
-  org.eclipse.swt.widgets;version="0.0.0",
-  org.osgi.framework;version="1.6.0"
+ org.eclipse.core.runtime;version="3.4.0",
+ org.eclipse.emfforms.spi.common.report;version="[1.17.0,1.18.0]",
+ org.eclipse.jface.databinding.swt;version="0.0.0",
+ org.eclipse.swt;version="0.0.0",
+ org.eclipse.swt.widgets;version="0.0.0",
+ org.osgi.framework;version="1.6.0"
 Service-Component: OSGI-INF/embeddedGroupRendererService.xml
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.view.group.swt.embedded
diff --git a/bundles/org.eclipse.emf.ecp.view.group.swt.embedded/pom.xml b/bundles/org.eclipse.emf.ecp.view.group.swt.embedded/pom.xml
index 428083a..490ad2a 100644
--- a/bundles/org.eclipse.emf.ecp.view.group.swt.embedded/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.view.group.swt.embedded/pom.xml
@@ -7,7 +7,7 @@
   <parent>

     <groupId>org.eclipse.emf.ecp</groupId>

     <artifactId>ecp-bundles-parent</artifactId>

-    <version>1.16.0-SNAPSHOT</version>

+    <version>1.17.0-SNAPSHOT</version>

     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>

   </parent>

 

diff --git a/bundles/org.eclipse.emf.ecp.view.group.ui.swt/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.view.group.ui.swt/META-INF/MANIFEST.MF
index 993f0d3..fca514f 100644
--- a/bundles/org.eclipse.emf.ecp.view.group.ui.swt/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.view.group.ui.swt/META-INF/MANIFEST.MF
@@ -2,29 +2,30 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: View Model Group UI SWT
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.group.ui.swt;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emf.ecp.view.spi.group.swt;version="1.16.0",
-  org.eclipse.emfforms.internal.group.swt;version="1.16.0";x-internal:=true
+Export-Package: org.eclipse.emf.ecp.view.spi.group.swt;version="1.17.0",
+ org.eclipse.emfforms.internal.group.swt;version="1.17.0";x-internal:=true
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.7.0,4.0.0)",
-  org.eclipse.emf.ecp.view.group.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.ui.view.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.ui.view;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.edit;bundle-version="[2.8.0,3.0.0)",
-  org.eclipse.emf.ecp.edit.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.core.swt;bundle-version="[1.16.0,1.17.0)";visibility:=reexport,
-  org.eclipse.emf.databinding.edit;bundle-version="[1.2.0,2.0.0)",
-  org.eclipse.core.databinding.property;bundle-version="[1.3.0,2.0.0)",
-  org.eclipse.emfforms.swt.core;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.swt.core.di;bundle-version="[1.16.0,1.17.0)"
+ org.eclipse.emf.ecp.view.group.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.ui.view.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.ui.view;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.edit;bundle-version="[2.8.0,3.0.0)",
+ org.eclipse.emf.ecp.edit.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.core.swt;bundle-version="[1.17.0,1.18.0]";visibility:=reexport,
+ org.eclipse.emf.databinding.edit;bundle-version="[1.2.0,2.0.0)",
+ org.eclipse.core.databinding.property;bundle-version="[1.3.0,2.0.0)",
+ org.eclipse.emfforms.swt.core;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.swt.core.di;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Import-Package: javax.inject;version="1.0.0",
-  org.eclipse.emfforms.spi.common.report;version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.spi.core.services.databinding;version="[1.16.0,1.17.0)",
-  org.eclipse.jface.databinding.swt;version="0.0.0",
-  org.eclipse.jface.layout;version="0.0.0",
-  org.eclipse.swt;version="0.0.0",
-  org.eclipse.swt.graphics;version="0.0.0",
-  org.eclipse.swt.widgets;version="0.0.0"
+ org.eclipse.emfforms.spi.common.report;version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.spi.core.services.databinding;version="[1.17.0,1.18.0]",
+ org.eclipse.jface.databinding.swt;version="0.0.0",
+ org.eclipse.jface.layout;version="0.0.0",
+ org.eclipse.swt;version="0.0.0",
+ org.eclipse.swt.graphics;version="0.0.0",
+ org.eclipse.swt.widgets;version="0.0.0"
 Service-Component: OSGI-INF/groupRendererService.xml
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.view.group.ui.swt
diff --git a/bundles/org.eclipse.emf.ecp.view.group.ui.swt/pom.xml b/bundles/org.eclipse.emf.ecp.view.group.ui.swt/pom.xml
index 7980a03..141b2ed 100644
--- a/bundles/org.eclipse.emf.ecp.view.group.ui.swt/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.view.group.ui.swt/pom.xml
@@ -7,7 +7,7 @@
   <parent>

     <groupId>org.eclipse.emf.ecp</groupId>

     <artifactId>ecp-bundles-parent</artifactId>

-    <version>1.16.0-SNAPSHOT</version>

+    <version>1.17.0-SNAPSHOT</version>

     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>

   </parent>

 

diff --git a/bundles/org.eclipse.emf.ecp.view.groupedgrid.model.edit/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.view.groupedgrid.model.edit/META-INF/MANIFEST.MF
index a798600..3c0ae20 100644
--- a/bundles/org.eclipse.emf.ecp.view.groupedgrid.model.edit/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.view.groupedgrid.model.edit/META-INF/MANIFEST.MF
@@ -2,18 +2,19 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.groupedgrid.model.edit;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-ClassPath: .
 Bundle-Activator: org.eclipse.emf.ecp.view.spi.groupedgrid.model.provider.GroupedGridEditPlugin$Implementation
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
-Export-Package: org.eclipse.emf.ecp.view.spi.groupedgrid.model.provider;version="1.16.0"
+Export-Package: org.eclipse.emf.ecp.view.spi.groupedgrid.model.provider;version="1.17.0"
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.7.0,4.0.0)",
-  org.eclipse.emf.edit;bundle-version="[2.7.0,3.0.0)";visibility:=reexport,
-  org.eclipse.emf.ecore;bundle-version="[2.7.0,3.0.0)";visibility:=reexport,
-  org.eclipse.emf.ecore.edit;bundle-version="[2.7.0,3.0.0)";visibility:=reexport,
-  org.eclipse.emf.ecp.view.model;bundle-version="[1.16.0,1.17.0)";visibility:=reexport,
-  org.eclipse.emf.ecp.view.groupedgrid.model;bundle-version="[1.16.0,1.17.0)";visibility:=reexport,
-  org.eclipse.emf.ecp.view.model.edit;bundle-version="[1.16.0,1.17.0)"
+ org.eclipse.emf.edit;bundle-version="[2.7.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.ecore;bundle-version="[2.7.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.ecore.edit;bundle-version="[2.7.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.ecp.view.model;bundle-version="[1.17.0,1.18.0]";visibility:=reexport,
+ org.eclipse.emf.ecp.view.groupedgrid.model;bundle-version="[1.17.0,1.18.0]";visibility:=reexport,
+ org.eclipse.emf.ecp.view.model.edit;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.view.groupedgrid.model.edit
diff --git a/bundles/org.eclipse.emf.ecp.view.groupedgrid.model.edit/plugin.xml b/bundles/org.eclipse.emf.ecp.view.groupedgrid.model.edit/plugin.xml
index 4378515..cae6a8e 100644
--- a/bundles/org.eclipse.emf.ecp.view.groupedgrid.model.edit/plugin.xml
+++ b/bundles/org.eclipse.emf.ecp.view.groupedgrid.model.edit/plugin.xml
@@ -29,7 +29,7 @@
 

    <extension point="org.eclipse.emf.edit.childCreationExtenders">

       <extender

-            uri="http://org/eclipse/emf/ecp/view/model/170"

+            uri="http://org/eclipse/emf/ecp/view/model/1170"

             class="org.eclipse.emf.ecp.view.spi.groupedgrid.model.provider.GroupedGridItemProviderAdapterFactory$ViewChildCreationExtender"/>

    </extension>

 

diff --git a/bundles/org.eclipse.emf.ecp.view.groupedgrid.model.edit/pom.xml b/bundles/org.eclipse.emf.ecp.view.groupedgrid.model.edit/pom.xml
index 738611b..b85bed6 100644
--- a/bundles/org.eclipse.emf.ecp.view.groupedgrid.model.edit/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.view.groupedgrid.model.edit/pom.xml
@@ -7,13 +7,13 @@
   <parent>

     <groupId>org.eclipse.emf.ecp</groupId>

     <artifactId>ecp-bundles-parent</artifactId>

-    <version>1.16.0-SNAPSHOT</version>

+    <version>1.17.0-SNAPSHOT</version>

     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>

   </parent>

 

   <artifactId>org.eclipse.emf.ecp.view.groupedgrid.model.edit</artifactId>

   <packaging>eclipse-plugin</packaging>

-  <version>1.16.0-SNAPSHOT</version>

+  <version>1.17.0-SNAPSHOT</version>

 

   <groupId>org.eclipse.emf.ecp</groupId>

 </project>

diff --git a/bundles/org.eclipse.emf.ecp.view.groupedgrid.model/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.view.groupedgrid.model/META-INF/MANIFEST.MF
index d6aac4d..dc7c53f 100644
--- a/bundles/org.eclipse.emf.ecp.view.groupedgrid.model/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.view.groupedgrid.model/META-INF/MANIFEST.MF
@@ -2,15 +2,16 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.groupedgrid.model;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-ClassPath: .
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
-Export-Package: org.eclipse.emf.ecp.view.spi.groupedgrid.model;version="1.16.0",
-  org.eclipse.emf.ecp.view.spi.groupedgrid.model.impl;version="1.16.0",
-  org.eclipse.emf.ecp.view.spi.groupedgrid.model.util;version="1.16.0"
+Export-Package: org.eclipse.emf.ecp.view.spi.groupedgrid.model;version="1.17.0",
+ org.eclipse.emf.ecp.view.spi.groupedgrid.model.impl;version="1.17.0",
+ org.eclipse.emf.ecp.view.spi.groupedgrid.model.util;version="1.17.0"
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.7.0,4.0.0)",
-  org.eclipse.emf.ecore;bundle-version="[2.7.0,3.0.0)";visibility:=reexport,
-  org.eclipse.emf.ecp.view.model;bundle-version="[1.16.0,1.17.0)";visibility:=reexport
+ org.eclipse.emf.ecore;bundle-version="[2.7.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.ecp.view.model;bundle-version="[1.17.0,1.18.0]";visibility:=reexport
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.view.groupedgrid.model
diff --git a/bundles/org.eclipse.emf.ecp.view.groupedgrid.model/pom.xml b/bundles/org.eclipse.emf.ecp.view.groupedgrid.model/pom.xml
index bebd3d3..8fb660d 100644
--- a/bundles/org.eclipse.emf.ecp.view.groupedgrid.model/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.view.groupedgrid.model/pom.xml
@@ -7,13 +7,13 @@
   <parent>

     <groupId>org.eclipse.emf.ecp</groupId>

     <artifactId>ecp-bundles-parent</artifactId>

-    <version>1.16.0-SNAPSHOT</version>

+    <version>1.17.0-SNAPSHOT</version>

     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>

   </parent>

 

   <artifactId>org.eclipse.emf.ecp.view.groupedgrid.model</artifactId>

   <packaging>eclipse-plugin</packaging>

-  <version>1.16.0-SNAPSHOT</version>

+  <version>1.17.0-SNAPSHOT</version>

 

   <groupId>org.eclipse.emf.ecp</groupId>

 </project>

diff --git a/bundles/org.eclipse.emf.ecp.view.groupedgrid.ui.swt/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.view.groupedgrid.ui.swt/META-INF/MANIFEST.MF
index 43232b8..f081800 100644
--- a/bundles/org.eclipse.emf.ecp.view.groupedgrid.ui.swt/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.view.groupedgrid.ui.swt/META-INF/MANIFEST.MF
@@ -2,22 +2,23 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: View Model Grouped Grid UI SWT
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.groupedgrid.ui.swt;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emf.ecp.view.spi.groupedgrid.swt;version="1.16.0"
+Export-Package: org.eclipse.emf.ecp.view.spi.groupedgrid.swt;version="1.17.0"
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.7.0,4.0.0)",
-  org.eclipse.emf.ecp.ui.view.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.groupedgrid.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.edit.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.swt.core;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.swt.core.di;bundle-version="[1.16.0,1.17.0)"
+ org.eclipse.emf.ecp.ui.view.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.groupedgrid.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.edit.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.swt.core;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.swt.core.di;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Import-Package: javax.inject;version="1.0.0",
-  org.eclipse.emfforms.spi.common.report;version="[1.16.0,1.17.0)",
-  org.eclipse.jface.layout;version="0.0.0",
-  org.eclipse.swt;version="0.0.0",
-  org.eclipse.swt.layout;version="0.0.0",
-  org.eclipse.swt.widgets;version="0.0.0",
-  org.osgi.service.component.annotations;version="[1.2.0,2.0.0)";resolution:=optional
+ org.eclipse.emfforms.spi.common.report;version="[1.17.0,1.18.0]",
+ org.eclipse.jface.layout;version="0.0.0",
+ org.eclipse.swt;version="0.0.0",
+ org.eclipse.swt.layout;version="0.0.0",
+ org.eclipse.swt.widgets;version="0.0.0",
+ org.osgi.service.component.annotations;version="[1.2.0,2.0.0)";resolution:=optional
 Service-Component: OSGI-INF/GroupedGridSWTRendererService.xml
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.view.groupedgrid.ui.swt
diff --git a/bundles/org.eclipse.emf.ecp.view.groupedgrid.ui.swt/pom.xml b/bundles/org.eclipse.emf.ecp.view.groupedgrid.ui.swt/pom.xml
index ce31891..78261fb 100644
--- a/bundles/org.eclipse.emf.ecp.view.groupedgrid.ui.swt/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.view.groupedgrid.ui.swt/pom.xml
@@ -7,7 +7,7 @@
   <parent>

     <groupId>org.eclipse.emf.ecp</groupId>

     <artifactId>ecp-bundles-parent</artifactId>

-    <version>1.16.0-SNAPSHOT</version>

+    <version>1.17.0-SNAPSHOT</version>

     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>

   </parent>

 

diff --git a/bundles/org.eclipse.emf.ecp.view.horizontal.model.edit/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.view.horizontal.model.edit/META-INF/MANIFEST.MF
index 9c4feb9..982057a 100644
--- a/bundles/org.eclipse.emf.ecp.view.horizontal.model.edit/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.view.horizontal.model.edit/META-INF/MANIFEST.MF
@@ -2,18 +2,19 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.horizontal.model.edit;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-ClassPath: .
 Bundle-Activator: org.eclipse.emf.ecp.view.spi.horizontal.model.provider.HorizontalEditPlugin$Implementation
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
-Export-Package: org.eclipse.emf.ecp.view.spi.horizontal.model.provider;version="1.16.0"
+Export-Package: org.eclipse.emf.ecp.view.spi.horizontal.model.provider;version="1.17.0"
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.7.0,4.0.0)",
-  org.eclipse.emf.ecp.view.horizontal.model;bundle-version="[1.16.0,1.17.0)";visibility:=reexport,
-  org.eclipse.emf.edit;bundle-version="[2.8.0,3.0.0)";visibility:=reexport,
-  org.eclipse.emf.ecore;bundle-version="[2.8.0,3.0.0)";visibility:=reexport,
-  org.eclipse.emf.ecore.edit;bundle-version="[2.7.0,3.0.0)";visibility:=reexport,
-  org.eclipse.emf.ecp.view.model;bundle-version="[1.16.0,1.17.0)";visibility:=reexport,
-  org.eclipse.emf.ecp.view.model.edit;bundle-version="[1.16.0,1.17.0)";visibility:=reexport
+ org.eclipse.emf.ecp.view.horizontal.model;bundle-version="[1.17.0,1.18.0]";visibility:=reexport,
+ org.eclipse.emf.edit;bundle-version="[2.8.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.ecore;bundle-version="[2.8.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.ecore.edit;bundle-version="[2.7.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.ecp.view.model;bundle-version="[1.17.0,1.18.0]";visibility:=reexport,
+ org.eclipse.emf.ecp.view.model.edit;bundle-version="[1.17.0,1.18.0]";visibility:=reexport
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.view.horizontal.model.edit
diff --git a/bundles/org.eclipse.emf.ecp.view.horizontal.model.edit/plugin.xml b/bundles/org.eclipse.emf.ecp.view.horizontal.model.edit/plugin.xml
index 86038c4..92a3ce1 100644
--- a/bundles/org.eclipse.emf.ecp.view.horizontal.model.edit/plugin.xml
+++ b/bundles/org.eclipse.emf.ecp.view.horizontal.model.edit/plugin.xml
@@ -31,7 +31,7 @@
    <extension point="org.eclipse.emf.edit.childCreationExtenders">
       <!-- @generated horizontal -->
       <extender
-            uri="http://org/eclipse/emf/ecp/view/model/170"
+            uri="http://org/eclipse/emf/ecp/view/model/1170"
             class="org.eclipse.emf.ecp.view.spi.horizontal.model.provider.HorizontalItemProviderAdapterFactory$ViewChildCreationExtender"/>
    </extension>
 
diff --git a/bundles/org.eclipse.emf.ecp.view.horizontal.model.edit/pom.xml b/bundles/org.eclipse.emf.ecp.view.horizontal.model.edit/pom.xml
index 5ddde3b..1c46378 100644
--- a/bundles/org.eclipse.emf.ecp.view.horizontal.model.edit/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.view.horizontal.model.edit/pom.xml
@@ -7,13 +7,13 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
 
   <artifactId>org.eclipse.emf.ecp.view.horizontal.model.edit</artifactId>
   <packaging>eclipse-plugin</packaging>
 
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <groupId>org.eclipse.emf.ecp</groupId>
 </project>
diff --git a/bundles/org.eclipse.emf.ecp.view.horizontal.model/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.view.horizontal.model/META-INF/MANIFEST.MF
index e21f176..bf910ea 100644
--- a/bundles/org.eclipse.emf.ecp.view.horizontal.model/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.view.horizontal.model/META-INF/MANIFEST.MF
@@ -2,15 +2,16 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Horizontal View Model
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.horizontal.model;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-ClassPath: .
 Bundle-Vendor: Eclipse Modeling Project
 Bundle-Localization: plugin
-Export-Package: org.eclipse.emf.ecp.view.spi.horizontal.model;version="1.16.0",
-  org.eclipse.emf.ecp.view.spi.horizontal.model.impl;version="1.16.0",
-  org.eclipse.emf.ecp.view.spi.horizontal.model.util;version="1.16.0"
+Export-Package: org.eclipse.emf.ecp.view.spi.horizontal.model;version="1.17.0",
+ org.eclipse.emf.ecp.view.spi.horizontal.model.impl;version="1.17.0",
+ org.eclipse.emf.ecp.view.spi.horizontal.model.util;version="1.17.0"
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.7.0,4.0.0)",
-  org.eclipse.emf.ecore;bundle-version="[2.7.0,3.0.0)";visibility:=reexport,
-  org.eclipse.emf.ecp.view.model;bundle-version="[1.16.0,1.17.0)";visibility:=reexport
+ org.eclipse.emf.ecore;bundle-version="[2.7.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.ecp.view.model;bundle-version="[1.17.0,1.18.0]";visibility:=reexport
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.view.horizontal.model
diff --git a/bundles/org.eclipse.emf.ecp.view.horizontal.model/pom.xml b/bundles/org.eclipse.emf.ecp.view.horizontal.model/pom.xml
index eb8bdb3..141863e 100644
--- a/bundles/org.eclipse.emf.ecp.view.horizontal.model/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.view.horizontal.model/pom.xml
@@ -7,13 +7,13 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
 
   <artifactId>org.eclipse.emf.ecp.view.horizontal.model</artifactId>
   <packaging>eclipse-plugin</packaging>
 
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <groupId>org.eclipse.emf.ecp</groupId>
 </project>
diff --git a/bundles/org.eclipse.emf.ecp.view.horizontal.ui.swt/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.view.horizontal.ui.swt/META-INF/MANIFEST.MF
index 4bb252d..84099c3 100644
--- a/bundles/org.eclipse.emf.ecp.view.horizontal.ui.swt/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.view.horizontal.ui.swt/META-INF/MANIFEST.MF
@@ -2,23 +2,24 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: View Model Horizontal UI SWT
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.horizontal.ui.swt
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emf.ecp.view.internal.horizontal.swt;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.view.spi.horizontal.swt;version="1.16.0"
+Export-Package: org.eclipse.emf.ecp.view.internal.horizontal.swt;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.spi.horizontal.swt;version="1.17.0"
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.7.0,4.0.0)",
-  org.eclipse.emf.ecp.view.horizontal.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.ui.view.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.edit;bundle-version="[2.8.0,3.0.0)",
-  org.eclipse.emf.ecp.edit;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.swt.core;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.swt.core.di;bundle-version="[1.16.0,1.17.0)"
+ org.eclipse.emf.ecp.view.horizontal.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.ui.view.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.edit;bundle-version="[2.8.0,3.0.0)",
+ org.eclipse.emf.ecp.edit;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.swt.core;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.swt.core.di;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Import-Package: javax.inject;version="1.0.0",
-  org.eclipse.emf.ecp.view.internal.core.swt;version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.spi.common.report;version="[1.16.0,1.17.0)",
-  org.eclipse.jface.layout;version="0.0.0",
-  org.eclipse.swt;version="0.0.0",
-  org.eclipse.swt.widgets;version="0.0.0"
+ org.eclipse.emf.ecp.view.internal.core.swt;version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.spi.common.report;version="[1.17.0,1.18.0]",
+ org.eclipse.jface.layout;version="0.0.0",
+ org.eclipse.swt;version="0.0.0",
+ org.eclipse.swt.widgets;version="0.0.0"
 Service-Component: OSGI-INF/horizontalLayoutRendererService.xml
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.view.horizontal.ui.swt
diff --git a/bundles/org.eclipse.emf.ecp.view.horizontal.ui.swt/pom.xml b/bundles/org.eclipse.emf.ecp.view.horizontal.ui.swt/pom.xml
index 6b921ad..df1b04e 100644
--- a/bundles/org.eclipse.emf.ecp.view.horizontal.ui.swt/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.view.horizontal.ui.swt/pom.xml
@@ -7,7 +7,7 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
 
diff --git a/bundles/org.eclipse.emf.ecp.view.indexdmr.model.edit/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.view.indexdmr.model.edit/META-INF/MANIFEST.MF
index 58ef9f2..00f1308 100644
--- a/bundles/org.eclipse.emf.ecp.view.indexdmr.model.edit/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.view.indexdmr.model.edit/META-INF/MANIFEST.MF
@@ -2,18 +2,19 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.indexdmr.model.edit;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-ClassPath: .
 Bundle-Activator: org.eclipse.emf.ecp.view.spi.indexdmr.model.provider.IndexdmrEditPlugin$Implementation
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
-Export-Package: org.eclipse.emf.ecp.view.spi.indexdmr.model.provider;version="1.16.0";x-internal:=true
+Export-Package: org.eclipse.emf.ecp.view.spi.indexdmr.model.provider;version="1.17.0";x-internal:=true
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.7.0,4.0.0)",
-  org.eclipse.emf.ecp.view.indexdmr.model;bundle-version="[1.16.0,1.17.0)";visibility:=reexport,
-  org.eclipse.emf.edit;bundle-version="[2.8.0,3.0.0)";visibility:=reexport,
-  org.eclipse.emf.ecore;bundle-version="[2.8.0,3.0.0)";visibility:=reexport,
-  org.eclipse.emf.ecore.edit;bundle-version="[2.7.0,3.0.0)";visibility:=reexport,
-  org.eclipse.emf.ecp.view.model;bundle-version="[1.16.0,1.17.0)";visibility:=reexport,
-  org.eclipse.emf.ecp.view.model.edit;bundle-version="[1.16.0,1.17.0)";visibility:=reexport
+ org.eclipse.emf.ecp.view.indexdmr.model;bundle-version="[1.17.0,1.18.0]";visibility:=reexport,
+ org.eclipse.emf.edit;bundle-version="[2.8.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.ecore;bundle-version="[2.8.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.ecore.edit;bundle-version="[2.7.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.ecp.view.model;bundle-version="[1.17.0,1.18.0]";visibility:=reexport,
+ org.eclipse.emf.ecp.view.model.edit;bundle-version="[1.17.0,1.18.0]";visibility:=reexport
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.view.indexdmr.model.edit
diff --git a/bundles/org.eclipse.emf.ecp.view.indexdmr.model.edit/plugin.xml b/bundles/org.eclipse.emf.ecp.view.indexdmr.model.edit/plugin.xml
index 72c5b41..111e116 100644
--- a/bundles/org.eclipse.emf.ecp.view.indexdmr.model.edit/plugin.xml
+++ b/bundles/org.eclipse.emf.ecp.view.indexdmr.model.edit/plugin.xml
@@ -31,7 +31,7 @@
    <extension point="org.eclipse.emf.edit.childCreationExtenders">
       <!-- @generated indexdmr -->
       <extender
-            uri="http://org/eclipse/emf/ecp/view/model/170"
+            uri="http://org/eclipse/emf/ecp/view/model/1170"
             class="org.eclipse.emf.ecp.view.spi.indexdmr.model.provider.IndexdmrItemProviderAdapterFactory$ViewChildCreationExtender"/>
    </extension>
 
diff --git a/bundles/org.eclipse.emf.ecp.view.indexdmr.model.edit/pom.xml b/bundles/org.eclipse.emf.ecp.view.indexdmr.model.edit/pom.xml
index 646dc38..5d9dd7c 100644
--- a/bundles/org.eclipse.emf.ecp.view.indexdmr.model.edit/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.view.indexdmr.model.edit/pom.xml
@@ -7,7 +7,7 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
 
diff --git a/bundles/org.eclipse.emf.ecp.view.indexdmr.model/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.view.indexdmr.model/META-INF/MANIFEST.MF
index 6d752fd..affb22e 100644
--- a/bundles/org.eclipse.emf.ecp.view.indexdmr.model/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.view.indexdmr.model/META-INF/MANIFEST.MF
@@ -2,15 +2,16 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.indexdmr.model;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-ClassPath: .
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
-Export-Package: org.eclipse.emf.ecp.view.spi.indexdmr.model;version="1.16.0",
-  org.eclipse.emf.ecp.view.spi.indexdmr.model.impl;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.view.spi.indexdmr.model.util;version="1.16.0"
+Export-Package: org.eclipse.emf.ecp.view.spi.indexdmr.model;version="1.17.0",
+ org.eclipse.emf.ecp.view.spi.indexdmr.model.impl;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.spi.indexdmr.model.util;version="1.17.0"
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.7.0,4.0.0)",
-  org.eclipse.emf.ecore;bundle-version="[2.8.0,3.0.0)";visibility:=reexport,
-  org.eclipse.emf.ecp.view.model;bundle-version="[1.16.0,1.17.0)";visibility:=reexport
+ org.eclipse.emf.ecore;bundle-version="[2.8.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.ecp.view.model;bundle-version="[1.17.0,1.18.0]";visibility:=reexport
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.view.indexdmr.model
diff --git a/bundles/org.eclipse.emf.ecp.view.indexdmr.model/pom.xml b/bundles/org.eclipse.emf.ecp.view.indexdmr.model/pom.xml
index 455a172..6205eb0 100644
--- a/bundles/org.eclipse.emf.ecp.view.indexdmr.model/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.view.indexdmr.model/pom.xml
@@ -7,7 +7,7 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
 
diff --git a/bundles/org.eclipse.emf.ecp.view.indexdmr.tooling/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.view.indexdmr.tooling/META-INF/MANIFEST.MF
index 7136606..78a7427 100644
--- a/bundles/org.eclipse.emf.ecp.view.indexdmr.tooling/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.view.indexdmr.tooling/META-INF/MANIFEST.MF
@@ -2,31 +2,32 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: EMFForms Index DMR Tooling
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.indexdmr.tooling;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Activator: org.eclipse.emf.ecp.view.indexdmr.tooling.Activator
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emf.ecp.view.indexdmr.tooling;version="1.16.0";x-internal:=true
-Require-Bundle: org.eclipse.emf.ecp.ui.view.editor.controls;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.core.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.ui.view;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.ui.view.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.indexdmr.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.edit;bundle-version="[2.8.0,3.0.0)",
-  org.eclipse.emf.ecp.ui;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.core.databinding;bundle-version="[1.3.0,2.0.0)",
-  org.eclipse.emf.ecp.view.template.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.common.ui;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.core.runtime;bundle-version="[3.8.0,4.0.0)",
-  org.eclipse.core.databinding.property;bundle-version="[1.4.0,2.0.0)",
-  org.eclipse.emf.ecp.edit.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.databinding;bundle-version="[1.3.0,2.0.0)"
+Export-Package: org.eclipse.emf.ecp.view.indexdmr.tooling;version="1.17.0";x-internal:=true
+Require-Bundle: org.eclipse.emf.ecp.ui.view.editor.controls;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.core.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.ui.view;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.ui.view.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.indexdmr.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.edit;bundle-version="[2.8.0,3.0.0)",
+ org.eclipse.emf.ecp.ui;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.core.databinding;bundle-version="[1.3.0,2.0.0)",
+ org.eclipse.emf.ecp.view.template.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.common.ui;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.core.runtime;bundle-version="[3.8.0,4.0.0)",
+ org.eclipse.core.databinding.property;bundle-version="[1.4.0,2.0.0)",
+ org.eclipse.emf.ecp.edit.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.databinding;bundle-version="[1.3.0,2.0.0)"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
-Import-Package: org.eclipse.emfforms.spi.common.report;version="[1.16.0,1.17.0)",
-  org.eclipse.jface.dialogs;version="0.0.0",
-  org.eclipse.jface.resource;version="0.0.0",
-  org.eclipse.jface.viewers;version="0.0.0",
-  org.eclipse.jface.window;version="0.0.0",
-  org.eclipse.jface.wizard;version="0.0.0",
-  org.eclipse.swt.widgets;version="0.0.0"
+Import-Package: org.eclipse.emfforms.spi.common.report;version="[1.17.0,1.18.0]",
+ org.eclipse.jface.dialogs;version="0.0.0",
+ org.eclipse.jface.resource;version="0.0.0",
+ org.eclipse.jface.viewers;version="0.0.0",
+ org.eclipse.jface.window;version="0.0.0",
+ org.eclipse.jface.wizard;version="0.0.0",
+ org.eclipse.swt.widgets;version="0.0.0"
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.view.indexdmr.tooling
diff --git a/bundles/org.eclipse.emf.ecp.view.indexdmr.tooling/pom.xml b/bundles/org.eclipse.emf.ecp.view.indexdmr.tooling/pom.xml
index 4d0d96f..d6cee4b 100644
--- a/bundles/org.eclipse.emf.ecp.view.indexdmr.tooling/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.view.indexdmr.tooling/pom.xml
@@ -7,7 +7,7 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
 
diff --git a/bundles/org.eclipse.emf.ecp.view.keyattributedmr.model.edit/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.view.keyattributedmr.model.edit/META-INF/MANIFEST.MF
index 241d37d..7780c4c 100644
--- a/bundles/org.eclipse.emf.ecp.view.keyattributedmr.model.edit/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.view.keyattributedmr.model.edit/META-INF/MANIFEST.MF
@@ -2,18 +2,19 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.keyattributedmr.model.edit;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-ClassPath: .
 Bundle-Activator: org.eclipse.emf.ecp.view.spi.keyattributedmr.model.provider.KeyattributedmrEditPlugin$Implementation
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
-Export-Package: org.eclipse.emf.ecp.view.spi.keyattributedmr.model.provider;version="1.16.0";x-internal:=true
+Export-Package: org.eclipse.emf.ecp.view.spi.keyattributedmr.model.provider;version="1.17.0";x-internal:=true
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.7.0,4.0.0)",
-  org.eclipse.emf.edit;bundle-version="[2.8.0,3.0.0)";visibility:=reexport,
-  org.eclipse.emf.ecore;bundle-version="[2.8.0,3.0.0)";visibility:=reexport,
-  org.eclipse.emf.ecore.edit;bundle-version="[2.7.0,3.0.0)";visibility:=reexport,
-  org.eclipse.emf.ecp.view.keyattributedmr.model;bundle-version="[1.16.0,1.17.0)";visibility:=reexport,
-  org.eclipse.emf.ecp.view.model;bundle-version="[1.16.0,1.17.0)";visibility:=reexport,
-  org.eclipse.emf.ecp.view.model.edit;bundle-version="[1.16.0,1.17.0)";visibility:=reexport
+ org.eclipse.emf.edit;bundle-version="[2.8.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.ecore;bundle-version="[2.8.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.ecore.edit;bundle-version="[2.7.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.ecp.view.keyattributedmr.model;bundle-version="[1.17.0,1.18.0]";visibility:=reexport,
+ org.eclipse.emf.ecp.view.model;bundle-version="[1.17.0,1.18.0]";visibility:=reexport,
+ org.eclipse.emf.ecp.view.model.edit;bundle-version="[1.17.0,1.18.0]";visibility:=reexport
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.view.keyattributedmr.model.edit
diff --git a/bundles/org.eclipse.emf.ecp.view.keyattributedmr.model.edit/plugin.xml b/bundles/org.eclipse.emf.ecp.view.keyattributedmr.model.edit/plugin.xml
index 22c2e9e..4898009 100644
--- a/bundles/org.eclipse.emf.ecp.view.keyattributedmr.model.edit/plugin.xml
+++ b/bundles/org.eclipse.emf.ecp.view.keyattributedmr.model.edit/plugin.xml
@@ -31,7 +31,7 @@
    <extension point="org.eclipse.emf.edit.childCreationExtenders">
       <!-- @generated keyattributedmr -->
       <extender
-            uri="http://org/eclipse/emf/ecp/view/model/170"
+            uri="http://org/eclipse/emf/ecp/view/model/1170"
             class="org.eclipse.emf.ecp.view.spi.keyattributedmr.model.provider.KeyattributedmrItemProviderAdapterFactory$ViewChildCreationExtender"/>
    </extension>
 
diff --git a/bundles/org.eclipse.emf.ecp.view.keyattributedmr.model.edit/pom.xml b/bundles/org.eclipse.emf.ecp.view.keyattributedmr.model.edit/pom.xml
index 4088b00..f2adc88 100644
--- a/bundles/org.eclipse.emf.ecp.view.keyattributedmr.model.edit/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.view.keyattributedmr.model.edit/pom.xml
@@ -7,7 +7,7 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
 
diff --git a/bundles/org.eclipse.emf.ecp.view.keyattributedmr.model/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.view.keyattributedmr.model/META-INF/MANIFEST.MF
index ac200cd..637dc10 100644
--- a/bundles/org.eclipse.emf.ecp.view.keyattributedmr.model/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.view.keyattributedmr.model/META-INF/MANIFEST.MF
@@ -2,15 +2,16 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.keyattributedmr.model;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-ClassPath: .
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
-Export-Package: org.eclipse.emf.ecp.view.spi.keyattributedmr.model;version="1.16.0",
-  org.eclipse.emf.ecp.view.spi.keyattributedmr.model.impl;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.view.spi.keyattributedmr.model.util;version="1.16.0"
+Export-Package: org.eclipse.emf.ecp.view.spi.keyattributedmr.model;version="1.17.0",
+ org.eclipse.emf.ecp.view.spi.keyattributedmr.model.impl;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.spi.keyattributedmr.model.util;version="1.17.0"
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.7.0,4.0.0)",
-  org.eclipse.emf.ecore;bundle-version="[2.8.0,3.0.0)";visibility:=reexport,
-  org.eclipse.emf.ecp.view.model;bundle-version="[1.16.0,1.17.0)";visibility:=reexport
+ org.eclipse.emf.ecore;bundle-version="[2.8.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.ecp.view.model;bundle-version="[1.17.0,1.18.0]";visibility:=reexport
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.view.keyattributedmr.model
diff --git a/bundles/org.eclipse.emf.ecp.view.keyattributedmr.model/pom.xml b/bundles/org.eclipse.emf.ecp.view.keyattributedmr.model/pom.xml
index 9f92c41..be2312a 100644
--- a/bundles/org.eclipse.emf.ecp.view.keyattributedmr.model/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.view.keyattributedmr.model/pom.xml
@@ -7,7 +7,7 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
 
diff --git a/bundles/org.eclipse.emf.ecp.view.keyattributedmr.tooling/.project b/bundles/org.eclipse.emf.ecp.view.keyattributedmr.tooling/.project
index 516f94c..e0cbf54 100644
--- a/bundles/org.eclipse.emf.ecp.view.keyattributedmr.tooling/.project
+++ b/bundles/org.eclipse.emf.ecp.view.keyattributedmr.tooling/.project
@@ -30,6 +30,11 @@
 			<arguments>
 			</arguments>
 		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ds.core.builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
 	</buildSpec>
 	<natures>
 		<nature>org.eclipse.pde.PluginNature</nature>
diff --git a/bundles/org.eclipse.emf.ecp.view.keyattributedmr.tooling/.settings/org.eclipse.pde.ds.annotations.prefs b/bundles/org.eclipse.emf.ecp.view.keyattributedmr.tooling/.settings/org.eclipse.pde.ds.annotations.prefs
new file mode 100644
index 0000000..73a356b
--- /dev/null
+++ b/bundles/org.eclipse.emf.ecp.view.keyattributedmr.tooling/.settings/org.eclipse.pde.ds.annotations.prefs
@@ -0,0 +1,8 @@
+classpath=true
+dsVersion=V1_3
+eclipse.preferences.version=1
+enabled=true
+generateBundleActivationPolicyLazy=true
+path=OSGI-INF
+validationErrorLevel=error
+validationErrorLevel.missingImplicitUnbindMethod=error
diff --git a/bundles/org.eclipse.emf.ecp.view.keyattributedmr.tooling/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.view.keyattributedmr.tooling/META-INF/MANIFEST.MF
index cf88449..9db231b 100644
--- a/bundles/org.eclipse.emf.ecp.view.keyattributedmr.tooling/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.view.keyattributedmr.tooling/META-INF/MANIFEST.MF
@@ -2,33 +2,37 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: EMF Forms Key Attribute DMR Tooling
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.keyattributedmr.tooling;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Activator: org.eclipse.emf.ecp.view.keyattributedmr.tooling.Activator
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emf.ecp.view.keyattributedmr.tooling;version="1.16.0";x-internal:=true
-Require-Bundle: org.eclipse.emf.ecp.ui.view.editor.controls;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecore;bundle-version="[2.8.0,3.0.0)",
-  org.eclipse.emf.ecp.view.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.edit;bundle-version="[2.8.0,3.0.0)",
-  org.eclipse.emf.ecp.ui;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.core.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.core.databinding;bundle-version="[1.3.0,2.0.0)",
-  org.eclipse.emf.ecp.view.template.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.ui.view;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.ui.view.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.keyattributedmr.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.common.ui;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.core.databinding.property;bundle-version="[1.4.0,2.0.0)",
-  org.eclipse.core.runtime;bundle-version="[3.8.0,4.0.0)",
-  org.eclipse.emf.ecp.edit.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.databinding;bundle-version="[1.3.0,2.0.0)"
+Export-Package: org.eclipse.emf.ecp.view.keyattributedmr.tooling;version="1.17.0";x-internal:=true
+Require-Bundle: org.eclipse.emf.ecp.ui.view.editor.controls;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecore;bundle-version="[2.8.0,3.0.0)",
+ org.eclipse.emf.ecp.view.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.edit;bundle-version="[2.8.0,3.0.0)",
+ org.eclipse.emf.ecp.ui;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.core.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.core.databinding;bundle-version="[1.3.0,2.0.0)",
+ org.eclipse.emf.ecp.view.template.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.ui.view;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.ui.view.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.keyattributedmr.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.common.ui;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.core.databinding.property;bundle-version="[1.4.0,2.0.0)",
+ org.eclipse.core.runtime;bundle-version="[3.8.0,4.0.0)",
+ org.eclipse.emf.ecp.edit.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.databinding;bundle-version="[1.3.0,2.0.0)",
+ org.eclipse.emfforms.swt.core.di;bundle-version="[1.17.0,1.18.0)"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
-Import-Package: org.eclipse.emfforms.spi.common.report;version="[1.16.0,1.17.0)",
-  org.eclipse.jface.dialogs;version="0.0.0",
-  org.eclipse.jface.resource;version="0.0.0",
-  org.eclipse.jface.viewers;version="0.0.0",
-  org.eclipse.jface.window;version="0.0.0",
-  org.eclipse.jface.wizard;version="0.0.0",
-  org.eclipse.swt.widgets;version="0.0.0"
+Import-Package: org.eclipse.emfforms.spi.common.report;version="[1.17.0,1.18.0]",
+ org.eclipse.jface.dialogs;version="0.0.0",
+ org.eclipse.jface.resource;version="0.0.0",
+ org.eclipse.jface.viewers;version="0.0.0",
+ org.eclipse.jface.window;version="0.0.0",
+ org.eclipse.jface.wizard;version="0.0.0",
+ org.eclipse.swt.widgets;version="0.0.0",
+ org.osgi.service.component.annotations;version="[1.2.0,2.0.0)";resolution:=optional
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.view.keyattributedmr.tooling
+Service-Component: OSGI-INF/KeyValueControlRendererService.xml
diff --git a/bundles/org.eclipse.emf.ecp.view.keyattributedmr.tooling/OSGI-INF/KeyValueControlRendererService.xml b/bundles/org.eclipse.emf.ecp.view.keyattributedmr.tooling/OSGI-INF/KeyValueControlRendererService.xml
new file mode 100644
index 0000000..1c92a75
--- /dev/null
+++ b/bundles/org.eclipse.emf.ecp.view.keyattributedmr.tooling/OSGI-INF/KeyValueControlRendererService.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="KeyValueControlRendererService">
+   <service>
+      <provide interface="org.eclipse.emfforms.spi.swt.core.di.EMFFormsDIRendererService"/>
+   </service>
+   <reference bind="setEMFFormsDatabinding" interface="org.eclipse.emfforms.spi.core.services.databinding.EMFFormsDatabinding" name="EMFFormsDatabinding"/>
+   <reference bind="setReportService" interface="org.eclipse.emfforms.spi.common.report.ReportService" name="ReportService"/>
+   <implementation class="org.eclipse.emf.ecp.view.keyattributedmr.tooling.KeyValueControlRendererService"/>
+</scr:component>
\ No newline at end of file
diff --git a/bundles/org.eclipse.emf.ecp.view.keyattributedmr.tooling/build.properties b/bundles/org.eclipse.emf.ecp.view.keyattributedmr.tooling/build.properties
index e9863e2..3e5f9ad 100644
--- a/bundles/org.eclipse.emf.ecp.view.keyattributedmr.tooling/build.properties
+++ b/bundles/org.eclipse.emf.ecp.view.keyattributedmr.tooling/build.properties
@@ -2,4 +2,5 @@
 output.. = bin/
 bin.includes = META-INF/,\
                .,\
-               plugin.xml
+               plugin.xml,\
+               OSGI-INF/
diff --git a/bundles/org.eclipse.emf.ecp.view.keyattributedmr.tooling/plugin.xml b/bundles/org.eclipse.emf.ecp.view.keyattributedmr.tooling/plugin.xml
index dcc1af1..db2f479 100644
--- a/bundles/org.eclipse.emf.ecp.view.keyattributedmr.tooling/plugin.xml
+++ b/bundles/org.eclipse.emf.ecp.view.keyattributedmr.tooling/plugin.xml
@@ -9,12 +9,6 @@
                testClass="org.eclipse.emf.ecp.view.keyattributedmr.tooling.FeaturePathDMRReferenceTester">
          </dynamicTest>
       </renderer>
-      <renderer
-            renderer="org.eclipse.emf.ecp.view.keyattributedmr.tooling.KeyValueControlRenderer">
-         <dynamicTest
-               testClass="org.eclipse.emf.ecp.view.keyattributedmr.tooling.KeyValueControlTester">
-         </dynamicTest>
-      </renderer>
    </extension>
 
 </plugin>
diff --git a/bundles/org.eclipse.emf.ecp.view.keyattributedmr.tooling/pom.xml b/bundles/org.eclipse.emf.ecp.view.keyattributedmr.tooling/pom.xml
index 35d9563..fc1340b 100644
--- a/bundles/org.eclipse.emf.ecp.view.keyattributedmr.tooling/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.view.keyattributedmr.tooling/pom.xml
@@ -7,7 +7,7 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
 
diff --git a/bundles/org.eclipse.emf.ecp.view.keyattributedmr.tooling/src/org/eclipse/emf/ecp/view/keyattributedmr/tooling/KeyValueControlRenderer.java b/bundles/org.eclipse.emf.ecp.view.keyattributedmr.tooling/src/org/eclipse/emf/ecp/view/keyattributedmr/tooling/KeyValueControlRenderer.java
index 3b5c73a..2ad94b4 100644
--- a/bundles/org.eclipse.emf.ecp.view.keyattributedmr.tooling/src/org/eclipse/emf/ecp/view/keyattributedmr/tooling/KeyValueControlRenderer.java
+++ b/bundles/org.eclipse.emf.ecp.view.keyattributedmr.tooling/src/org/eclipse/emf/ecp/view/keyattributedmr/tooling/KeyValueControlRenderer.java
@@ -20,12 +20,15 @@
 import org.eclipse.emf.ecp.view.spi.keyattributedmr.model.VKeyattributedmrPackage;
 import org.eclipse.emf.ecp.view.spi.model.VControl;
 import org.eclipse.emf.ecp.view.spi.model.VFeaturePathDomainModelReference;
+import org.eclipse.emf.ecp.view.template.model.VTViewTemplateProvider;
 import org.eclipse.emf.edit.command.SetCommand;
 import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain;
 import org.eclipse.emf.edit.domain.EditingDomain;
 import org.eclipse.emfforms.spi.common.report.ReportService;
 import org.eclipse.emfforms.spi.core.services.databinding.DatabindingFailedException;
 import org.eclipse.emfforms.spi.core.services.databinding.DatabindingFailedReport;
+import org.eclipse.emfforms.spi.core.services.databinding.EMFFormsDatabinding;
+import org.eclipse.emfforms.spi.core.services.label.EMFFormsLabelProvider;
 import org.eclipse.jface.dialogs.MessageDialog;
 import org.eclipse.swt.widgets.Label;
 
@@ -40,9 +43,14 @@
 	 * @param vElement the view model element to be rendered
 	 * @param viewContext the view context
 	 * @param reportService the {@link ReportService}
+	 * @param databindingService The {@link EMFFormsDatabinding}
+	 * @param labelProvider The {@link EMFFormsLabelProvider}
+	 * @param viewTemplateProvider The {@link VTViewTemplateProvider}
 	 */
-	public KeyValueControlRenderer(VControl vElement, ViewModelContext viewContext, ReportService reportService) {
-		super(vElement, viewContext, reportService);
+	public KeyValueControlRenderer(VControl vElement, ViewModelContext viewContext, ReportService reportService,
+		EMFFormsDatabinding databindingService, EMFFormsLabelProvider labelProvider,
+		VTViewTemplateProvider viewTemplateProvider) {
+		super(vElement, viewContext, reportService, databindingService, labelProvider, viewTemplateProvider);
 	}
 
 	@Override
diff --git a/bundles/org.eclipse.emf.ecp.view.keyattributedmr.tooling/src/org/eclipse/emf/ecp/view/keyattributedmr/tooling/KeyValueControlRendererService.java b/bundles/org.eclipse.emf.ecp.view.keyattributedmr.tooling/src/org/eclipse/emf/ecp/view/keyattributedmr/tooling/KeyValueControlRendererService.java
new file mode 100644
index 0000000..f799bf2
--- /dev/null
+++ b/bundles/org.eclipse.emf.ecp.view.keyattributedmr.tooling/src/org/eclipse/emf/ecp/view/keyattributedmr/tooling/KeyValueControlRendererService.java
@@ -0,0 +1,92 @@
+/*******************************************************************************
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * Lucas Koehler - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.emf.ecp.view.keyattributedmr.tooling;
+
+import org.eclipse.core.databinding.property.value.IValueProperty;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.ecp.view.spi.context.ViewModelContext;
+import org.eclipse.emf.ecp.view.spi.keyattributedmr.model.VKeyattributedmrPackage;
+import org.eclipse.emf.ecp.view.spi.model.VControl;
+import org.eclipse.emf.ecp.view.spi.model.VElement;
+import org.eclipse.emfforms.spi.common.report.ReportService;
+import org.eclipse.emfforms.spi.core.services.databinding.DatabindingFailedException;
+import org.eclipse.emfforms.spi.core.services.databinding.DatabindingFailedReport;
+import org.eclipse.emfforms.spi.core.services.databinding.EMFFormsDatabinding;
+import org.eclipse.emfforms.spi.swt.core.AbstractSWTRenderer;
+import org.eclipse.emfforms.spi.swt.core.di.EMFFormsDIRendererService;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Reference;
+
+/**
+ * DI renderer service for {@link KeyValueControlRenderer}.
+ *
+ * @author Lucas Koehler
+ *
+ */
+@Component(name = "KeyValueControlRendererService")
+public class KeyValueControlRendererService implements EMFFormsDIRendererService<VControl> {
+
+	private EMFFormsDatabinding databindingService;
+	private ReportService reportService;
+
+	/**
+	 * Called by the framework to set the {@link EMFFormsDatabinding}.
+	 *
+	 * @param databindingService The {@link EMFFormsDatabinding}
+	 */
+	@Reference(unbind = "-")
+	protected void setEMFFormsDatabinding(EMFFormsDatabinding databindingService) {
+		this.databindingService = databindingService;
+	}
+
+	/**
+	 * Called by the framework to set the {@link ReportService}.
+	 *
+	 * @param reportService The {@link ReportService}
+	 */
+	@Reference(unbind = "-")
+	protected void setReportService(ReportService reportService) {
+		this.reportService = reportService;
+	}
+
+	@Override
+	public double isApplicable(VElement vElement, ViewModelContext viewModelContext) {
+		if (!VControl.class.isInstance(vElement)) {
+			return NOT_APPLICABLE;
+		}
+		final VControl control = (VControl) vElement;
+		if (control.getDomainModelReference() == null) {
+			return NOT_APPLICABLE;
+		}
+		IValueProperty valueProperty;
+		try {
+			valueProperty = databindingService.getValueProperty(control.getDomainModelReference(),
+				viewModelContext.getDomainModel());
+		} catch (final DatabindingFailedException ex) {
+			reportService.report(new DatabindingFailedReport(ex));
+			return NOT_APPLICABLE;
+		}
+		final EStructuralFeature feature = (EStructuralFeature) valueProperty.getValueType();
+
+		if (VKeyattributedmrPackage.eINSTANCE.getKeyAttributeDomainModelReference_KeyValue() == feature) {
+			return 6;
+		}
+
+		return NOT_APPLICABLE;
+	}
+
+	@Override
+	public Class<? extends AbstractSWTRenderer<VControl>> getRendererClass() {
+		return KeyValueControlRenderer.class;
+	}
+
+}
diff --git a/bundles/org.eclipse.emf.ecp.view.keyattributedmr.tooling/src/org/eclipse/emf/ecp/view/keyattributedmr/tooling/KeyValueControlTester.java b/bundles/org.eclipse.emf.ecp.view.keyattributedmr.tooling/src/org/eclipse/emf/ecp/view/keyattributedmr/tooling/KeyValueControlTester.java
deleted file mode 100644
index 944eef6..0000000
--- a/bundles/org.eclipse.emf.ecp.view.keyattributedmr.tooling/src/org/eclipse/emf/ecp/view/keyattributedmr/tooling/KeyValueControlTester.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2011-2014 EclipseSource Muenchen GmbH 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:
- * Eugen Neufeld - initial API and implementation
- ******************************************************************************/
-package org.eclipse.emf.ecp.view.keyattributedmr.tooling;
-
-import org.eclipse.core.databinding.property.value.IValueProperty;
-import org.eclipse.emf.ecore.EStructuralFeature;
-import org.eclipse.emf.ecp.view.model.common.ECPRendererTester;
-import org.eclipse.emf.ecp.view.spi.context.ViewModelContext;
-import org.eclipse.emf.ecp.view.spi.keyattributedmr.model.VKeyattributedmrPackage;
-import org.eclipse.emf.ecp.view.spi.model.VControl;
-import org.eclipse.emf.ecp.view.spi.model.VElement;
-import org.eclipse.emfforms.spi.core.services.databinding.DatabindingFailedException;
-import org.eclipse.emfforms.spi.core.services.databinding.DatabindingFailedReport;
-
-/**
- * A Tester for the KeyValue Control which is added as a child of a
- * {@link org.eclipse.emf.ecp.view.spi.keyattributedmr.model.VKeyAttributeDomainModelReference
- * VKeyAttributeDomainModelReference}.
- *
- * @author Eugen Neufeld
- *
- */
-public class KeyValueControlTester implements
-	ECPRendererTester {
-
-	@Override
-	public int isApplicable(VElement vElement, ViewModelContext viewModelContext) {
-
-		if (!VControl.class.isInstance(vElement)) {
-			return NOT_APPLICABLE;
-		}
-
-		final VControl control = (VControl) vElement;
-		if (control.getDomainModelReference() == null) {
-			return NOT_APPLICABLE;
-		}
-		IValueProperty valueProperty;
-		try {
-			valueProperty = Activator.getDefault().getEMFFormsDatabinding()
-				.getValueProperty(control.getDomainModelReference(), viewModelContext.getDomainModel());
-		} catch (final DatabindingFailedException ex) {
-			Activator.getDefault().getReportService().report(new DatabindingFailedReport(ex));
-			return NOT_APPLICABLE;
-		}
-		final EStructuralFeature feature = (EStructuralFeature) valueProperty.getValueType();
-
-		if (VKeyattributedmrPackage.eINSTANCE.getKeyAttributeDomainModelReference_KeyValue() == feature) {
-			return 6;
-		}
-
-		return NOT_APPLICABLE;
-	}
-}
diff --git a/bundles/org.eclipse.emf.ecp.view.label.model.edit/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.view.label.model.edit/META-INF/MANIFEST.MF
index 9b61650..99e4ed1 100644
--- a/bundles/org.eclipse.emf.ecp.view.label.model.edit/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.view.label.model.edit/META-INF/MANIFEST.MF
@@ -2,18 +2,19 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.label.model.edit;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-ClassPath: .
 Bundle-Activator: org.eclipse.emf.ecp.view.spi.label.model.provider.LabelEditPlugin$Implementation
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
-Export-Package: org.eclipse.emf.ecp.view.spi.label.model.provider;version="1.16.0"
+Export-Package: org.eclipse.emf.ecp.view.spi.label.model.provider;version="1.17.0"
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.7.0,4.0.0)",
-  org.eclipse.emf.edit;bundle-version="[2.8.0,3.0.0)";visibility:=reexport,
-  org.eclipse.emf.ecore;bundle-version="[2.7.0,3.0.0)";visibility:=reexport,
-  org.eclipse.emf.ecore.edit;bundle-version="[2.7.0,3.0.0)";visibility:=reexport,
-  org.eclipse.emf.ecp.view.model;bundle-version="[1.16.0,1.17.0)";visibility:=reexport,
-  org.eclipse.emf.ecp.view.label.model;bundle-version="[1.16.0,1.17.0)";visibility:=reexport,
-  org.eclipse.emf.ecp.view.model.edit;bundle-version="[1.16.0,1.17.0)";visibility:=reexport
+ org.eclipse.emf.edit;bundle-version="[2.8.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.ecore;bundle-version="[2.7.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.ecore.edit;bundle-version="[2.7.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.ecp.view.model;bundle-version="[1.17.0,1.18.0]";visibility:=reexport,
+ org.eclipse.emf.ecp.view.label.model;bundle-version="[1.17.0,1.18.0]";visibility:=reexport,
+ org.eclipse.emf.ecp.view.model.edit;bundle-version="[1.17.0,1.18.0]";visibility:=reexport
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.view.label.model.edit
diff --git a/bundles/org.eclipse.emf.ecp.view.label.model.edit/plugin.xml b/bundles/org.eclipse.emf.ecp.view.label.model.edit/plugin.xml
index 95b0457..5e0ba13 100644
--- a/bundles/org.eclipse.emf.ecp.view.label.model.edit/plugin.xml
+++ b/bundles/org.eclipse.emf.ecp.view.label.model.edit/plugin.xml
@@ -29,7 +29,7 @@
 

    <extension point="org.eclipse.emf.edit.childCreationExtenders">

       <extender

-            uri="http://org/eclipse/emf/ecp/view/model/170"

+            uri="http://org/eclipse/emf/ecp/view/model/1170"

             class="org.eclipse.emf.ecp.view.spi.label.model.provider.LabelItemProviderAdapterFactory$ViewChildCreationExtender"/>

    </extension>

 

diff --git a/bundles/org.eclipse.emf.ecp.view.label.model.edit/pom.xml b/bundles/org.eclipse.emf.ecp.view.label.model.edit/pom.xml
index 4fddaa9..d54a1a9 100644
--- a/bundles/org.eclipse.emf.ecp.view.label.model.edit/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.view.label.model.edit/pom.xml
@@ -7,13 +7,13 @@
   <parent>

     <groupId>org.eclipse.emf.ecp</groupId>

     <artifactId>ecp-bundles-parent</artifactId>

-    <version>1.16.0-SNAPSHOT</version>

+    <version>1.17.0-SNAPSHOT</version>

     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>

   </parent>

 

   <artifactId>org.eclipse.emf.ecp.view.label.model.edit</artifactId>

   <packaging>eclipse-plugin</packaging>

 

-  <version>1.16.0-SNAPSHOT</version>

+  <version>1.17.0-SNAPSHOT</version>

   <groupId>org.eclipse.emf.ecp</groupId>

 </project>

diff --git a/bundles/org.eclipse.emf.ecp.view.label.model/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.view.label.model/META-INF/MANIFEST.MF
index cf92406..67b3660 100644
--- a/bundles/org.eclipse.emf.ecp.view.label.model/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.view.label.model/META-INF/MANIFEST.MF
@@ -2,15 +2,16 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.label.model;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-ClassPath: .
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
-Export-Package: org.eclipse.emf.ecp.view.spi.label.model;version="1.16.0",
-  org.eclipse.emf.ecp.view.spi.label.model.impl;version="1.16.0",
-  org.eclipse.emf.ecp.view.spi.label.model.util;version="1.16.0"
+Export-Package: org.eclipse.emf.ecp.view.spi.label.model;version="1.17.0",
+ org.eclipse.emf.ecp.view.spi.label.model.impl;version="1.17.0",
+ org.eclipse.emf.ecp.view.spi.label.model.util;version="1.17.0"
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.7.0,4.0.0)",
-  org.eclipse.emf.ecore;bundle-version="[2.7.0,3.0.0)";visibility:=reexport,
-  org.eclipse.emf.ecp.view.model;bundle-version="[1.16.0,1.17.0)";visibility:=reexport
+ org.eclipse.emf.ecore;bundle-version="[2.7.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.ecp.view.model;bundle-version="[1.17.0,1.18.0]";visibility:=reexport
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.view.label.model
diff --git a/bundles/org.eclipse.emf.ecp.view.label.model/pom.xml b/bundles/org.eclipse.emf.ecp.view.label.model/pom.xml
index 1d80e2d..7a6f0c8 100644
--- a/bundles/org.eclipse.emf.ecp.view.label.model/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.view.label.model/pom.xml
@@ -7,13 +7,13 @@
   <parent>

     <groupId>org.eclipse.emf.ecp</groupId>

     <artifactId>ecp-bundles-parent</artifactId>

-    <version>1.16.0-SNAPSHOT</version>

+    <version>1.17.0-SNAPSHOT</version>

     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>

   </parent>

 

   <artifactId>org.eclipse.emf.ecp.view.label.model</artifactId>

   <packaging>eclipse-plugin</packaging>

 

-  <version>1.16.0-SNAPSHOT</version>

+  <version>1.17.0-SNAPSHOT</version>

   <groupId>org.eclipse.emf.ecp</groupId>

 </project>

diff --git a/bundles/org.eclipse.emf.ecp.view.label.ui.rap/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.view.label.ui.rap/META-INF/MANIFEST.MF
index 3e80b12..b1c8bbd 100644
--- a/bundles/org.eclipse.emf.ecp.view.label.ui.rap/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.view.label.ui.rap/META-INF/MANIFEST.MF
@@ -2,21 +2,22 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: View Model Label Rap
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.label.rap
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emf.ecp.view.label.rap;version="1.16.0";x-internal:=true
+Export-Package: org.eclipse.emf.ecp.view.label.rap;version="1.17.0";x-internal:=true
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.4.0,4.0.0)",
-  org.eclipse.emf.ecp.view.label.ui.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.ui.view.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.label.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.template.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.swt.core.di;bundle-version="[1.16.0,1.17.0)"
+ org.eclipse.emf.ecp.view.label.ui.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.ui.view.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.label.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.template.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.swt.core.di;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Import-Package: javax.inject;version="1.0.0",
-  org.eclipse.emfforms.spi.common.report;version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.spi.core.services.databinding;version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.spi.swt.core;version="[1.16.0,1.17.0)",
-  org.eclipse.swt;version="0.0.0",
-  org.eclipse.swt.widgets;version="0.0.0"
+ org.eclipse.emfforms.spi.common.report;version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.spi.core.services.databinding;version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.spi.swt.core;version="[1.17.0,1.18.0]",
+ org.eclipse.swt;version="0.0.0",
+ org.eclipse.swt.widgets;version="0.0.0"
 Service-Component: OSGI-INF/labelRAPRendererService.xml
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.view.label.rap
diff --git a/bundles/org.eclipse.emf.ecp.view.label.ui.rap/pom.xml b/bundles/org.eclipse.emf.ecp.view.label.ui.rap/pom.xml
index 71d7dcd..24e0447 100644
--- a/bundles/org.eclipse.emf.ecp.view.label.ui.rap/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.view.label.ui.rap/pom.xml
@@ -7,13 +7,13 @@
   <parent>

     <groupId>org.eclipse.emf.ecp</groupId>

     <artifactId>ecp-bundles-parent</artifactId>

-    <version>1.16.0-SNAPSHOT</version>

+    <version>1.17.0-SNAPSHOT</version>

     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>

   </parent>

 

   <artifactId>org.eclipse.emf.ecp.view.label.rap</artifactId>

   <packaging>eclipse-plugin</packaging>

 

-  <version>1.16.0-SNAPSHOT</version>

+  <version>1.17.0-SNAPSHOT</version>

   <groupId>org.eclipse.emf.ecp</groupId>

 </project>

diff --git a/bundles/org.eclipse.emf.ecp.view.label.ui.swt/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.view.label.ui.swt/META-INF/MANIFEST.MF
index 5828711..9e5183a 100644
--- a/bundles/org.eclipse.emf.ecp.view.label.ui.swt/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.view.label.ui.swt/META-INF/MANIFEST.MF
@@ -2,29 +2,30 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: View Model Label UI SWT
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.label.ui.swt
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emf.ecp.view.internal.label.swt;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.view.spi.label.swt;version="1.16.0"
+Export-Package: org.eclipse.emf.ecp.view.internal.label.swt;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.spi.label.swt;version="1.17.0"
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.4.0,4.0.0)",
-  org.eclipse.emf.ecp.view.label.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.ui.view.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.edit.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.template.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.databinding;bundle-version="[1.3.0,2.0.0)",
-  org.eclipse.emf.databinding.edit;bundle-version="[1.2.0,2.0.0)",
-  org.eclipse.emfforms.swt.core;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.swt.core.di;bundle-version="[1.16.0,1.17.0)"
+ org.eclipse.emf.ecp.view.label.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.ui.view.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.edit.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.template.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.databinding;bundle-version="[1.3.0,2.0.0)",
+ org.eclipse.emf.databinding.edit;bundle-version="[1.2.0,2.0.0)",
+ org.eclipse.emfforms.swt.core;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.swt.core.di;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Import-Package: javax.inject;version="1.0.0",
-  org.eclipse.core.databinding.property.value;version="0.0.0",
-  org.eclipse.emfforms.spi.common.report;version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.spi.core.services.databinding;version="[1.16.0,1.17.0)",
-  org.eclipse.jface.databinding.swt;version="0.0.0",
-  org.eclipse.jface.layout;version="0.0.0",
-  org.eclipse.swt;version="0.0.0",
-  org.eclipse.swt.events;version="0.0.0",
-  org.eclipse.swt.graphics;version="0.0.0",
-  org.eclipse.swt.widgets;version="0.0.0"
+ org.eclipse.core.databinding.property.value;version="0.0.0",
+ org.eclipse.emfforms.spi.common.report;version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.spi.core.services.databinding;version="[1.17.0,1.18.0]",
+ org.eclipse.jface.databinding.swt;version="0.0.0",
+ org.eclipse.jface.layout;version="0.0.0",
+ org.eclipse.swt;version="0.0.0",
+ org.eclipse.swt.events;version="0.0.0",
+ org.eclipse.swt.graphics;version="0.0.0",
+ org.eclipse.swt.widgets;version="0.0.0"
 Service-Component: OSGI-INF/labelRendererService.xml
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.view.label.ui.swt
diff --git a/bundles/org.eclipse.emf.ecp.view.label.ui.swt/pom.xml b/bundles/org.eclipse.emf.ecp.view.label.ui.swt/pom.xml
index 28c4ebe..4807715 100644
--- a/bundles/org.eclipse.emf.ecp.view.label.ui.swt/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.view.label.ui.swt/pom.xml
@@ -7,7 +7,7 @@
   <parent>

     <groupId>org.eclipse.emf.ecp</groupId>

     <artifactId>ecp-bundles-parent</artifactId>

-    <version>1.16.0-SNAPSHOT</version>

+    <version>1.17.0-SNAPSHOT</version>

     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>

   </parent>

 

diff --git a/bundles/org.eclipse.emf.ecp.view.mappingdmr.model.edit/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.view.mappingdmr.model.edit/META-INF/MANIFEST.MF
index 32534b4..c27e580 100644
--- a/bundles/org.eclipse.emf.ecp.view.mappingdmr.model.edit/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.view.mappingdmr.model.edit/META-INF/MANIFEST.MF
@@ -2,18 +2,19 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.mappingdmr.model.edit;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-ClassPath: .
 Bundle-Activator: org.eclipse.emf.ecp.view.spi.mappingdmr.model.provider.MappingdmrEditPlugin$Implementation
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
-Export-Package: org.eclipse.emf.ecp.view.spi.mappingdmr.model.provider;version="1.16.0";x-internal:=true
+Export-Package: org.eclipse.emf.ecp.view.spi.mappingdmr.model.provider;version="1.17.0";x-internal:=true
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.7.0,4.0.0)",
-  org.eclipse.emf.ecp.view.mappingdmr.model;bundle-version="[1.16.0,1.17.0)";visibility:=reexport,
-  org.eclipse.emf.edit;bundle-version="[2.8.0,3.0.0)";visibility:=reexport,
-  org.eclipse.emf.ecore;bundle-version="[2.9.0,3.0.0)";visibility:=reexport,
-  org.eclipse.emf.ecore.edit;bundle-version="[2.7.0,3.0.0)";visibility:=reexport,
-  org.eclipse.emf.ecp.view.model;bundle-version="[1.16.0,1.17.0)";visibility:=reexport,
-  org.eclipse.emf.ecp.view.model.edit;bundle-version="[1.16.0,1.17.0)";visibility:=reexport
+ org.eclipse.emf.ecp.view.mappingdmr.model;bundle-version="[1.17.0,1.18.0]";visibility:=reexport,
+ org.eclipse.emf.edit;bundle-version="[2.8.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.ecore;bundle-version="[2.9.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.ecore.edit;bundle-version="[2.7.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.ecp.view.model;bundle-version="[1.17.0,1.18.0]";visibility:=reexport,
+ org.eclipse.emf.ecp.view.model.edit;bundle-version="[1.17.0,1.18.0]";visibility:=reexport
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.view.mappingdmr.model.edit
diff --git a/bundles/org.eclipse.emf.ecp.view.mappingdmr.model.edit/plugin.xml b/bundles/org.eclipse.emf.ecp.view.mappingdmr.model.edit/plugin.xml
index d8959e3..1a6305b 100644
--- a/bundles/org.eclipse.emf.ecp.view.mappingdmr.model.edit/plugin.xml
+++ b/bundles/org.eclipse.emf.ecp.view.mappingdmr.model.edit/plugin.xml
@@ -31,7 +31,7 @@
    <extension point="org.eclipse.emf.edit.childCreationExtenders">
       <!-- @generated mappingdmr -->
       <extender
-            uri="http://org/eclipse/emf/ecp/view/model/170"
+            uri="http://org/eclipse/emf/ecp/view/model/1170"
             class="org.eclipse.emf.ecp.view.spi.mappingdmr.model.provider.MappingdmrItemProviderAdapterFactory$ViewChildCreationExtender"/>
    </extension>
 
diff --git a/bundles/org.eclipse.emf.ecp.view.mappingdmr.model.edit/pom.xml b/bundles/org.eclipse.emf.ecp.view.mappingdmr.model.edit/pom.xml
index 916bace..35c9040 100644
--- a/bundles/org.eclipse.emf.ecp.view.mappingdmr.model.edit/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.view.mappingdmr.model.edit/pom.xml
@@ -7,7 +7,7 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
 
diff --git a/bundles/org.eclipse.emf.ecp.view.mappingdmr.model/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.view.mappingdmr.model/META-INF/MANIFEST.MF
index 1c76553..fdee49a 100644
--- a/bundles/org.eclipse.emf.ecp.view.mappingdmr.model/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.view.mappingdmr.model/META-INF/MANIFEST.MF
@@ -2,15 +2,16 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.mappingdmr.model;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-ClassPath: .
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
-Export-Package: org.eclipse.emf.ecp.view.spi.mappingdmr.model;version="1.16.0",
-  org.eclipse.emf.ecp.view.spi.mappingdmr.model.impl;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.view.spi.mappingdmr.model.util;version="1.16.0";x-friends:="org.eclipse.emf.ecp.view.mappingdmr.model.edit"
+Export-Package: org.eclipse.emf.ecp.view.spi.mappingdmr.model;version="1.17.0",
+ org.eclipse.emf.ecp.view.spi.mappingdmr.model.impl;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.spi.mappingdmr.model.util;version="1.17.0";x-friends:="org.eclipse.emf.ecp.view.mappingdmr.model.edit"
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.7.0,4.0.0)",
-  org.eclipse.emf.ecore;bundle-version="[2.9.0,3.0.0)";visibility:=reexport,
-  org.eclipse.emf.ecp.view.model;bundle-version="[1.16.0,1.17.0)";visibility:=reexport
+ org.eclipse.emf.ecore;bundle-version="[2.9.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.ecp.view.model;bundle-version="[1.17.0,1.18.0]";visibility:=reexport
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.view.mappingdmr.model
diff --git a/bundles/org.eclipse.emf.ecp.view.mappingdmr.model/pom.xml b/bundles/org.eclipse.emf.ecp.view.mappingdmr.model/pom.xml
index b6f98d3..4d5de89 100644
--- a/bundles/org.eclipse.emf.ecp.view.mappingdmr.model/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.view.mappingdmr.model/pom.xml
@@ -7,7 +7,7 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
 
diff --git a/bundles/org.eclipse.emf.ecp.view.mappingdmr.tooling/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.view.mappingdmr.tooling/META-INF/MANIFEST.MF
index 4888825..9810e52 100644
--- a/bundles/org.eclipse.emf.ecp.view.mappingdmr.tooling/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.view.mappingdmr.tooling/META-INF/MANIFEST.MF
@@ -2,31 +2,32 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Mapping DMR Tooling
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.mappingdmr.tooling;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Activator: org.eclipse.emf.ecp.view.mappingdmr.tooling.Activator
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emf.ecp.view.mappingdmr.tooling;version="1.16.0";x-internal:=true
-Require-Bundle: org.eclipse.emf.ecp.view.core.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecore;bundle-version="[2.9.0,3.0.0)",
-  org.eclipse.emf.ecp.ui.view.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.core.databinding;bundle-version="[1.4.0,2.0.0)",
-  org.eclipse.emf.ecp.ui.view.editor.controls;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.mappingdmr.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.template.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.edit;bundle-version="[2.8.0,3.0.0)",
-  org.eclipse.core.runtime;bundle-version="[3.7.0,4.0.0)",
-  org.eclipse.emf.ecp.ui;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.common.ui;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.core.databinding.property;bundle-version="[1.4.0,2.0.0)",
-  org.eclipse.emfforms.core.services;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.databinding;bundle-version="[1.3.0,2.0.0)"
+Export-Package: org.eclipse.emf.ecp.view.mappingdmr.tooling;version="1.17.0";x-internal:=true
+Require-Bundle: org.eclipse.emf.ecp.view.core.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecore;bundle-version="[2.9.0,3.0.0)",
+ org.eclipse.emf.ecp.ui.view.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.core.databinding;bundle-version="[1.4.0,2.0.0)",
+ org.eclipse.emf.ecp.ui.view.editor.controls;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.mappingdmr.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.template.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.edit;bundle-version="[2.8.0,3.0.0)",
+ org.eclipse.core.runtime;bundle-version="[3.7.0,4.0.0)",
+ org.eclipse.emf.ecp.ui;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.common.ui;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.core.databinding.property;bundle-version="[1.4.0,2.0.0)",
+ org.eclipse.emfforms.core.services;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.databinding;bundle-version="[1.3.0,2.0.0)"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
-Import-Package: org.eclipse.emf.ecp.edit.spi.swt.util;version="[1.16.0,1.17.0)",
+Import-Package: org.eclipse.emf.ecp.edit.spi.swt.util;version="[1.17.0,1.18.0]",
  org.eclipse.emf.edit.ui.provider;version="0.0.0",
- org.eclipse.emfforms.spi.common.report;version="[1.16.0,1.17.0)",
+ org.eclipse.emfforms.spi.common.report;version="[1.17.0,1.18.0]",
  org.eclipse.jface.viewers;version="0.0.0",
  org.eclipse.jface.window;version="0.0.0",
  org.eclipse.jface.wizard;version="0.0.0",
  org.eclipse.swt.widgets;version="0.0.0",
- org.eclipse.ui.dialogs;ui.workbench=split;version="0.0.0"
+ org.eclipse.ui.dialogs;version="0.0.0";ui.workbench=split
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.view.mappingdmr.tooling
diff --git a/bundles/org.eclipse.emf.ecp.view.mappingdmr.tooling/pom.xml b/bundles/org.eclipse.emf.ecp.view.mappingdmr.tooling/pom.xml
index f2e7811..4e844c45 100644
--- a/bundles/org.eclipse.emf.ecp.view.mappingdmr.tooling/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.view.mappingdmr.tooling/pom.xml
@@ -7,7 +7,7 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
 
diff --git a/bundles/org.eclipse.emf.ecp.view.migrator/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.view.migrator/META-INF/MANIFEST.MF
index 2c16116..7cb7c90 100644
--- a/bundles/org.eclipse.emf.ecp.view.migrator/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.view.migrator/META-INF/MANIFEST.MF
@@ -2,14 +2,15 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Migrator
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.migrator;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emf.ecp.spi.view.migrator;version="1.16.0",
-  org.eclipse.emf.ecp.spi.view.migrator.string;version="1.16.0",
-  org.eclipse.emf.ecp.view.migrator;version="1.16.0"
+Export-Package: org.eclipse.emf.ecp.spi.view.migrator;version="1.17.0",
+ org.eclipse.emf.ecp.spi.view.migrator.string;version="1.17.0",
+ org.eclipse.emf.ecp.view.migrator;version="1.17.0"
 Require-Bundle: org.eclipse.emf.common;bundle-version="[2.7.0,3.0.0)";visibility:=reexport,
-  org.eclipse.core.runtime;bundle-version="[3.4.0,4.0.0)",
-  org.eclipse.emfforms.common;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecore;bundle-version="[2.7.0,3.0.0)"
+ org.eclipse.core.runtime;bundle-version="[3.4.0,4.0.0)",
+ org.eclipse.emfforms.common;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecore;bundle-version="[2.7.0,3.0.0)"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.view.migrator
diff --git a/bundles/org.eclipse.emf.ecp.view.migrator/pom.xml b/bundles/org.eclipse.emf.ecp.view.migrator/pom.xml
index 268f8de..518d161 100644
--- a/bundles/org.eclipse.emf.ecp.view.migrator/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.view.migrator/pom.xml
@@ -5,12 +5,12 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emf.ecp.view.migrator</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
   
   <properties>
diff --git a/bundles/org.eclipse.emf.ecp.view.model.common.di/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.view.model.common.di/META-INF/MANIFEST.MF
index 4bd2de0..1c3423b 100644
--- a/bundles/org.eclipse.emf.ecp.view.model.common.di/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.view.model.common.di/META-INF/MANIFEST.MF
@@ -2,19 +2,20 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Common View Model Classes for Dependency Injection
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.model.common.di;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emf.ecp.view.model.common.di.messages;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.view.model.common.di.renderer;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.view.model.common.di.service;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.view.model.common.di.service.impl;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.view.model.common.di.util;version="1.16.0";x-internal:=true
-Require-Bundle: org.eclipse.emf.ecp.view.model.common;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.context;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.e4.core.contexts;bundle-version="[1.3.100,2.0.0)",
-  org.eclipse.core.runtime;bundle-version="[3.7.0,4.0.0)",
-  org.eclipse.e4.core.di;bundle-version="[1.4.0,2.0.0)",
-  org.eclipse.emfforms.core.services;bundle-version="[1.16.0,1.17.0)"
+Export-Package: org.eclipse.emf.ecp.view.model.common.di.messages;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.model.common.di.renderer;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.model.common.di.service;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.model.common.di.service.impl;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.model.common.di.util;version="1.17.0";x-internal:=true
+Require-Bundle: org.eclipse.emf.ecp.view.model.common;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.context;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.e4.core.contexts;bundle-version="[1.3.100,2.0.0)",
+ org.eclipse.core.runtime;bundle-version="[3.7.0,4.0.0)",
+ org.eclipse.e4.core.di;bundle-version="[1.4.0,2.0.0)",
+ org.eclipse.emfforms.core.services;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.view.model.common.di
diff --git a/bundles/org.eclipse.emf.ecp.view.model.common.di/pom.xml b/bundles/org.eclipse.emf.ecp.view.model.common.di/pom.xml
index 8b2fc1d..23662e1 100644
--- a/bundles/org.eclipse.emf.ecp.view.model.common.di/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.view.model.common.di/pom.xml
@@ -7,7 +7,7 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
 
diff --git a/bundles/org.eclipse.emf.ecp.view.model.common/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.view.model.common/META-INF/MANIFEST.MF
index d7638b5..14d2091 100644
--- a/bundles/org.eclipse.emf.ecp.view.model.common/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.view.model.common/META-INF/MANIFEST.MF
@@ -2,25 +2,26 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Common View Model Classes
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.model.common
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Activator: org.eclipse.emf.ecp.view.internal.model.common.Activator
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emf.ecp.view.internal.model.common;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.view.model.common;version="1.16.0",
-  org.eclipse.emf.ecp.view.model.common.edit.provider;version="1.16.0",
-  org.eclipse.emf.ecp.view.model.common.util;version="1.16.0",
-  org.eclipse.emf.ecp.view.spi.common.callback;version="1.16.0"
+Export-Package: org.eclipse.emf.ecp.view.internal.model.common;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.model.common;version="1.17.0",
+ org.eclipse.emf.ecp.view.model.common.edit.provider;version="1.17.0",
+ org.eclipse.emf.ecp.view.model.common.util;version="1.17.0",
+ org.eclipse.emf.ecp.view.spi.common.callback;version="1.17.0"
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.7.0,4.0.0)",
-  org.eclipse.emf.ecp.view.context;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.edit;bundle-version="[2.8.0,3.0.0)",
-  org.eclipse.core.databinding.observable;bundle-version="[1.3.0,2.0.0)",
-  org.eclipse.core.databinding.property;bundle-version="[1.3.0,2.0.0)",
-  org.eclipse.emf.databinding;bundle-version="[1.3.0,2.0.0)",
-  org.eclipse.emf.databinding.edit;bundle-version="[1.3.0,2.0.0)",
-  org.eclipse.emf.ecp.view.template.model;bundle-version="[1.16.0,1.17.0)"
+ org.eclipse.emf.ecp.view.context;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.edit;bundle-version="[2.8.0,3.0.0)",
+ org.eclipse.core.databinding.observable;bundle-version="[1.3.0,2.0.0)",
+ org.eclipse.core.databinding.property;bundle-version="[1.3.0,2.0.0)",
+ org.eclipse.emf.databinding;bundle-version="[1.3.0,2.0.0)",
+ org.eclipse.emf.databinding.edit;bundle-version="[1.3.0,2.0.0)",
+ org.eclipse.emf.ecp.view.template.model;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
-Import-Package: org.eclipse.emfforms.spi.common.report;version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.spi.core.services.databinding;version="[1.16.0,1.17.0)",
-  org.osgi.framework;version="1.3.0"
+Import-Package: org.eclipse.emfforms.spi.common.report;version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.spi.core.services.databinding;version="[1.17.0,1.18.0]",
+ org.osgi.framework;version="1.3.0"
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.view.model.common
diff --git a/bundles/org.eclipse.emf.ecp.view.model.common/pom.xml b/bundles/org.eclipse.emf.ecp.view.model.common/pom.xml
index 6ecedd9..9b370bb 100644
--- a/bundles/org.eclipse.emf.ecp.view.model.common/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.view.model.common/pom.xml
@@ -7,7 +7,7 @@
   <parent>

     <groupId>org.eclipse.emf.ecp</groupId>

     <artifactId>ecp-bundles-parent</artifactId>

-    <version>1.16.0-SNAPSHOT</version>

+    <version>1.17.0-SNAPSHOT</version>

     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>

   </parent>

 

diff --git a/bundles/org.eclipse.emf.ecp.view.model.edapt/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.view.model.edapt/META-INF/MANIFEST.MF
index 444cf2b..231f321 100644
--- a/bundles/org.eclipse.emf.ecp.view.model.edapt/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.view.model.edapt/META-INF/MANIFEST.MF
@@ -2,9 +2,10 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Edapt Migration for Core View Model
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.model.edapt;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emf.ecp.internal.view.model.edapt._160to170;version="1.16.0";x-internal:=true
+Export-Package: org.eclipse.emf.ecp.internal.view.model.edapt._160to170;version="1.17.0";x-internal:=true
 Require-Bundle: org.eclipse.emf.edapt.migration;bundle-version="[1.1.0,2.0.0)"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.view.model.edapt
diff --git a/bundles/org.eclipse.emf.ecp.view.model.edapt/pom.xml b/bundles/org.eclipse.emf.ecp.view.model.edapt/pom.xml
index 3142a54..ee92b84 100644
--- a/bundles/org.eclipse.emf.ecp.view.model.edapt/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.view.model.edapt/pom.xml
@@ -5,11 +5,11 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emf.ecp.view.model.edapt</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 </project>
diff --git a/bundles/org.eclipse.emf.ecp.view.model.edit/.settings/.api_filters b/bundles/org.eclipse.emf.ecp.view.model.edit/.settings/.api_filters
index 2d25d9c..96a9b64 100644
--- a/bundles/org.eclipse.emf.ecp.view.model.edit/.settings/.api_filters
+++ b/bundles/org.eclipse.emf.ecp.view.model.edit/.settings/.api_filters
@@ -32,4 +32,17 @@
             </message_arguments>
         </filter>
     </resource>
+    <resource path="src/org/eclipse/emf/ecp/view/spi/model/provider/ViewItemProvider.java" type="org.eclipse.emf.ecp.view.spi.model.provider.ViewItemProvider">
+        <filter comment="SPI change 1.17.0" id="338792546">
+            <message_arguments>
+                <message_argument value="org.eclipse.emf.ecp.view.spi.model.provider.ViewItemProvider"/>
+                <message_argument value="addEcorePathPropertyDescriptor(Object)"/>
+            </message_arguments>
+        </filter>
+        <filter comment="SPI change 1.17.0" id="1143996420">
+            <message_arguments>
+                <message_argument value="addEcorePathsPropertyDescriptor(Object)"/>
+            </message_arguments>
+        </filter>
+    </resource>
 </component>
diff --git a/bundles/org.eclipse.emf.ecp.view.model.edit/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.view.model.edit/META-INF/MANIFEST.MF
index 0e59ad0..b7fbd1a 100644
--- a/bundles/org.eclipse.emf.ecp.view.model.edit/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.view.model.edit/META-INF/MANIFEST.MF
@@ -2,16 +2,17 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.model.edit;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-ClassPath: .
 Bundle-Activator: org.eclipse.emf.ecp.view.spi.model.provider.ViewEditPlugin$Implementation
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
-Export-Package: org.eclipse.emf.ecp.view.spi.model.provider;version="1.16.0"
+Export-Package: org.eclipse.emf.ecp.view.spi.model.provider;version="1.17.0"
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.7.0,4.0.0)",
-  org.eclipse.emf.ecp.view.model;bundle-version="[1.16.0,1.17.0)";visibility:=reexport,
-  org.eclipse.emf.edit;bundle-version="[2.8.0,3.0.0)";visibility:=reexport,
-  org.eclipse.emf.ecore;bundle-version="[2.7.0,3.0.0)";visibility:=reexport,
-  org.eclipse.emf.ecore.edit;bundle-version="[2.7.0,3.0.0)";visibility:=reexport
+ org.eclipse.emf.ecp.view.model;bundle-version="[1.17.0,1.18.0]";visibility:=reexport,
+ org.eclipse.emf.edit;bundle-version="[2.8.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.ecore;bundle-version="[2.7.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.ecore.edit;bundle-version="[2.7.0,3.0.0)";visibility:=reexport
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.view.model.edit
diff --git a/bundles/org.eclipse.emf.ecp.view.model.edit/plugin.properties b/bundles/org.eclipse.emf.ecp.view.model.edit/plugin.properties
index 292828e..a7e967e 100644
--- a/bundles/org.eclipse.emf.ecp.view.model.edit/plugin.properties
+++ b/bundles/org.eclipse.emf.ecp.view.model.edit/plugin.properties
@@ -179,3 +179,4 @@
 _UI_Element_uuid_feature = Uuid
 _UI_HasTooltip_type = Has Tooltip
 _UI_HasTooltip_tooltip_feature = Tooltip
+_UI_View_ecorePaths_feature = Ecore Paths
diff --git a/bundles/org.eclipse.emf.ecp.view.model.edit/plugin.xml b/bundles/org.eclipse.emf.ecp.view.model.edit/plugin.xml
index b944893..efbe15b 100644
--- a/bundles/org.eclipse.emf.ecp.view.model.edit/plugin.xml
+++ b/bundles/org.eclipse.emf.ecp.view.model.edit/plugin.xml
@@ -6,7 +6,7 @@
          name=""
          point="org.eclipse.emf.edit.itemProviderAdapterFactories">
       <factory
-            uri="http://org/eclipse/emf/ecp/view/model/170"
+            uri="http://org/eclipse/emf/ecp/view/model/1170"
             supportedTypes="org.eclipse.emf.edit.provider.IEditingDomainItemProvider                org.eclipse.emf.edit.provider.IStructuredItemContentProvider                org.eclipse.emf.edit.provider.ITreeItemContentProvider                org.eclipse.emf.edit.provider.IItemLabelProvider                org.eclipse.emf.edit.provider.IItemPropertySource"
             class="org.eclipse.emf.ecp.view.spi.model.provider.ViewItemProviderAdapterFactory">
       </factory>
diff --git a/bundles/org.eclipse.emf.ecp.view.model.edit/pom.xml b/bundles/org.eclipse.emf.ecp.view.model.edit/pom.xml
index f6dffa4..a8d7ba2 100644
--- a/bundles/org.eclipse.emf.ecp.view.model.edit/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.view.model.edit/pom.xml
@@ -7,7 +7,7 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
 
diff --git a/bundles/org.eclipse.emf.ecp.view.model.edit/src/org/eclipse/emf/ecp/view/spi/model/provider/AttachmentItemProvider.java b/bundles/org.eclipse.emf.ecp.view.model.edit/src/org/eclipse/emf/ecp/view/spi/model/provider/AttachmentItemProvider.java
index 56e5ed0..42d2bfd 100644
--- a/bundles/org.eclipse.emf.ecp.view.model.edit/src/org/eclipse/emf/ecp/view/spi/model/provider/AttachmentItemProvider.java
+++ b/bundles/org.eclipse.emf.ecp.view.model.edit/src/org/eclipse/emf/ecp/view/spi/model/provider/AttachmentItemProvider.java
@@ -29,7 +29,7 @@
 /**
  * This is the item provider adapter for a {@link org.eclipse.emf.ecp.view.spi.model.VAttachment} object.
  * <!-- begin-user-doc -->
- * 
+ *
  * @since 1.2
  *        <!-- end-user-doc -->
  * @generated
@@ -43,7 +43,7 @@
 	 * This constructs an instance from a factory and a notifier.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	public AttachmentItemProvider(AdapterFactory adapterFactory) {
@@ -54,7 +54,7 @@
 	 * This returns the property descriptors for the adapted class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
@@ -70,7 +70,7 @@
 	 * This returns the label text for the adapted class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
@@ -83,7 +83,7 @@
 	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
@@ -97,7 +97,7 @@
 	 * that can be created under this object.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
@@ -109,7 +109,7 @@
 	 * Return the resource locator for this item provider's resources.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
diff --git a/bundles/org.eclipse.emf.ecp.view.model.edit/src/org/eclipse/emf/ecp/view/spi/model/provider/ContainedContainerItemProvider.java b/bundles/org.eclipse.emf.ecp.view.model.edit/src/org/eclipse/emf/ecp/view/spi/model/provider/ContainedContainerItemProvider.java
index 758cce8..089a69e 100644
--- a/bundles/org.eclipse.emf.ecp.view.model.edit/src/org/eclipse/emf/ecp/view/spi/model/provider/ContainedContainerItemProvider.java
+++ b/bundles/org.eclipse.emf.ecp.view.model.edit/src/org/eclipse/emf/ecp/view/spi/model/provider/ContainedContainerItemProvider.java
@@ -26,7 +26,7 @@
 /**
  * This is the item provider adapter for a {@link org.eclipse.emf.ecp.view.spi.model.VContainedContainer} object.
  * <!-- begin-user-doc -->
- * 
+ *
  * @since 1.4
  *        <!-- end-user-doc -->
  * @generated
@@ -37,7 +37,7 @@
 	 * This constructs an instance from a factory and a notifier.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	public ContainedContainerItemProvider(AdapterFactory adapterFactory) {
@@ -48,7 +48,7 @@
 	 * This returns the property descriptors for the adapted class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
@@ -66,7 +66,7 @@
 	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
@@ -81,7 +81,7 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
@@ -96,12 +96,12 @@
 	 * This returns the label text for the adapted class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
 	public String getText(Object object) {
-		String label = ((VContainedContainer) object).getName();
+		final String label = ((VContainedContainer) object).getName();
 		return label == null || label.length() == 0 ? getString("_UI_ContainedContainer_type") : //$NON-NLS-1$
 			getString("_UI_ContainedContainer_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
 	}
@@ -111,7 +111,7 @@
 	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
@@ -131,7 +131,7 @@
 	 * that can be created under this object.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
diff --git a/bundles/org.eclipse.emf.ecp.view.model.edit/src/org/eclipse/emf/ecp/view/spi/model/provider/ContainedElementItemProvider.java b/bundles/org.eclipse.emf.ecp.view.model.edit/src/org/eclipse/emf/ecp/view/spi/model/provider/ContainedElementItemProvider.java
index 913f8c5..5633a4d 100644
--- a/bundles/org.eclipse.emf.ecp.view.model.edit/src/org/eclipse/emf/ecp/view/spi/model/provider/ContainedElementItemProvider.java
+++ b/bundles/org.eclipse.emf.ecp.view.model.edit/src/org/eclipse/emf/ecp/view/spi/model/provider/ContainedElementItemProvider.java
@@ -23,7 +23,7 @@
  * This is the item provider adapter for a {@link org.eclipse.emf.ecp.view.spi.model.VContainedElement} object.
  * <!-- begin-user-doc -->
  * <!-- end-user-doc -->
- * 
+ *
  * @generated
  */
 public class ContainedElementItemProvider
@@ -32,7 +32,7 @@
 	 * This constructs an instance from a factory and a notifier.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	public ContainedElementItemProvider(AdapterFactory adapterFactory) {
@@ -43,7 +43,7 @@
 	 * This returns the property descriptors for the adapted class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
@@ -59,12 +59,12 @@
 	 * This returns the label text for the adapted class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
 	public String getText(Object object) {
-		String label = ((VContainedElement) object).getName();
+		final String label = ((VContainedElement) object).getName();
 		return label == null || label.length() == 0 ? getString("_UI_ContainedElement_type") : //$NON-NLS-1$
 			getString("_UI_ContainedElement_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
 	}
@@ -74,7 +74,7 @@
 	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
@@ -88,7 +88,7 @@
 	 * that can be created under this object.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
diff --git a/bundles/org.eclipse.emf.ecp.view.model.edit/src/org/eclipse/emf/ecp/view/spi/model/provider/ContainerItemProvider.java b/bundles/org.eclipse.emf.ecp.view.model.edit/src/org/eclipse/emf/ecp/view/spi/model/provider/ContainerItemProvider.java
index 921ecbd..e6e5387 100644
--- a/bundles/org.eclipse.emf.ecp.view.model.edit/src/org/eclipse/emf/ecp/view/spi/model/provider/ContainerItemProvider.java
+++ b/bundles/org.eclipse.emf.ecp.view.model.edit/src/org/eclipse/emf/ecp/view/spi/model/provider/ContainerItemProvider.java
@@ -26,7 +26,7 @@
 /**
  * This is the item provider adapter for a {@link org.eclipse.emf.ecp.view.spi.model.VContainer} object.
  * <!-- begin-user-doc -->
- * 
+ *
  * @since 1.2
  *        <!-- end-user-doc -->
  * @generated
@@ -36,7 +36,7 @@
 	 * This constructs an instance from a factory and a notifier.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	public ContainerItemProvider(AdapterFactory adapterFactory) {
@@ -47,7 +47,7 @@
 	 * This returns the property descriptors for the adapted class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
@@ -65,7 +65,7 @@
 	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
@@ -80,7 +80,7 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
@@ -95,12 +95,12 @@
 	 * This returns the label text for the adapted class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
 	public String getText(Object object) {
-		String label = ((VContainer) object).getName();
+		final String label = ((VContainer) object).getName();
 		return label == null || label.length() == 0 ? getString("_UI_Container_type") : //$NON-NLS-1$
 			getString("_UI_Container_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
 	}
@@ -110,7 +110,7 @@
 	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
@@ -130,7 +130,7 @@
 	 * that can be created under this object.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
diff --git a/bundles/org.eclipse.emf.ecp.view.model.edit/src/org/eclipse/emf/ecp/view/spi/model/provider/ControlItemProvider.java b/bundles/org.eclipse.emf.ecp.view.model.edit/src/org/eclipse/emf/ecp/view/spi/model/provider/ControlItemProvider.java
index 9f7f554..4b67bf0 100644
--- a/bundles/org.eclipse.emf.ecp.view.model.edit/src/org/eclipse/emf/ecp/view/spi/model/provider/ControlItemProvider.java
+++ b/bundles/org.eclipse.emf.ecp.view.model.edit/src/org/eclipse/emf/ecp/view/spi/model/provider/ControlItemProvider.java
@@ -39,7 +39,7 @@
 	 * This constructs an instance from a factory and a notifier.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	public ControlItemProvider(AdapterFactory adapterFactory) {
@@ -50,7 +50,7 @@
 	 * This returns the property descriptors for the adapted class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
@@ -68,7 +68,7 @@
 	 * This adds a property descriptor for the Label Alignment feature.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	protected void addLabelAlignmentPropertyDescriptor(Object object) {
@@ -115,7 +115,7 @@
 	 * This returns Control.gif.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
@@ -146,7 +146,7 @@
 	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
@@ -167,7 +167,7 @@
 	 * that can be created under this object.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
diff --git a/bundles/org.eclipse.emf.ecp.view.model.edit/src/org/eclipse/emf/ecp/view/spi/model/provider/DateTimeDisplayAttachmentItemProvider.java b/bundles/org.eclipse.emf.ecp.view.model.edit/src/org/eclipse/emf/ecp/view/spi/model/provider/DateTimeDisplayAttachmentItemProvider.java
index ab6d773..572e66a 100644
--- a/bundles/org.eclipse.emf.ecp.view.model.edit/src/org/eclipse/emf/ecp/view/spi/model/provider/DateTimeDisplayAttachmentItemProvider.java
+++ b/bundles/org.eclipse.emf.ecp.view.model.edit/src/org/eclipse/emf/ecp/view/spi/model/provider/DateTimeDisplayAttachmentItemProvider.java
@@ -27,7 +27,7 @@
 /**
  * This is the item provider adapter for a {@link org.eclipse.emf.ecp.view.spi.model.VDateTimeDisplayAttachment} object.
  * <!-- begin-user-doc -->
- * 
+ *
  * @since 1.8
  *        <!-- end-user-doc -->
  * @generated
@@ -37,7 +37,7 @@
 	 * This constructs an instance from a factory and a notifier.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	public DateTimeDisplayAttachmentItemProvider(AdapterFactory adapterFactory) {
@@ -48,7 +48,7 @@
 	 * This returns the property descriptors for the adapted class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
@@ -65,7 +65,7 @@
 	 * This adds a property descriptor for the Display Type feature.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	protected void addDisplayTypePropertyDescriptor(Object object) {
@@ -88,7 +88,7 @@
 	 * This returns DateTimeDisplayAttachment.gif.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
@@ -100,13 +100,13 @@
 	 * This returns the label text for the adapted class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
 	public String getText(Object object) {
-		DateTimeDisplayType labelValue = ((VDateTimeDisplayAttachment) object).getDisplayType();
-		String label = labelValue == null ? null : labelValue.toString();
+		final DateTimeDisplayType labelValue = ((VDateTimeDisplayAttachment) object).getDisplayType();
+		final String label = labelValue == null ? null : labelValue.toString();
 		return label == null || label.length() == 0 ? getString("_UI_DateTimeDisplayAttachment_type") : //$NON-NLS-1$
 			getString("_UI_DateTimeDisplayAttachment_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
 	}
@@ -116,7 +116,7 @@
 	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
@@ -136,7 +136,7 @@
 	 * that can be created under this object.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
diff --git a/bundles/org.eclipse.emf.ecp.view.model.edit/src/org/eclipse/emf/ecp/view/spi/model/provider/DiagnosticItemProvider.java b/bundles/org.eclipse.emf.ecp.view.model.edit/src/org/eclipse/emf/ecp/view/spi/model/provider/DiagnosticItemProvider.java
index 2769c5e..19b2fc9 100644
--- a/bundles/org.eclipse.emf.ecp.view.model.edit/src/org/eclipse/emf/ecp/view/spi/model/provider/DiagnosticItemProvider.java
+++ b/bundles/org.eclipse.emf.ecp.view.model.edit/src/org/eclipse/emf/ecp/view/spi/model/provider/DiagnosticItemProvider.java
@@ -34,7 +34,7 @@
 /**
  * This is the item provider adapter for a {@link org.eclipse.emf.ecp.view.spi.model.VDiagnostic} object.
  * <!-- begin-user-doc -->
- * 
+ *
  * @since 1.2
  *        <!-- end-user-doc -->
  * @generated
@@ -48,7 +48,7 @@
 	 * This constructs an instance from a factory and a notifier.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	public DiagnosticItemProvider(AdapterFactory adapterFactory) {
@@ -59,7 +59,7 @@
 	 * This returns the property descriptors for the adapted class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
@@ -76,7 +76,7 @@
 	 * This adds a property descriptor for the Diagnostics feature.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	protected void addDiagnosticsPropertyDescriptor(Object object) {
@@ -99,7 +99,7 @@
 	 * This returns Diagnostic.gif.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
@@ -111,7 +111,7 @@
 	 * This returns the label text for the adapted class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
@@ -124,7 +124,7 @@
 	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
@@ -144,7 +144,7 @@
 	 * that can be created under this object.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
@@ -156,7 +156,7 @@
 	 * Return the resource locator for this item provider's resources.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
diff --git a/bundles/org.eclipse.emf.ecp.view.model.edit/src/org/eclipse/emf/ecp/view/spi/model/provider/ElementItemProvider.java b/bundles/org.eclipse.emf.ecp.view.model.edit/src/org/eclipse/emf/ecp/view/spi/model/provider/ElementItemProvider.java
index ade1c91..49605ee 100644
--- a/bundles/org.eclipse.emf.ecp.view.model.edit/src/org/eclipse/emf/ecp/view/spi/model/provider/ElementItemProvider.java
+++ b/bundles/org.eclipse.emf.ecp.view.model.edit/src/org/eclipse/emf/ecp/view/spi/model/provider/ElementItemProvider.java
@@ -51,7 +51,7 @@
 	 * This constructs an instance from a factory and a notifier.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	public ElementItemProvider(AdapterFactory adapterFactory) {
@@ -62,7 +62,7 @@
 	 * This returns the property descriptors for the adapted class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
@@ -84,7 +84,7 @@
 	 * This adds a property descriptor for the Name feature.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	protected void addNamePropertyDescriptor(Object object) {
@@ -129,7 +129,7 @@
 	 * This adds a property descriptor for the Visible feature.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	protected void addVisiblePropertyDescriptor(Object object) {
@@ -151,7 +151,7 @@
 	 * This adds a property descriptor for the Enabled feature.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	protected void addEnabledPropertyDescriptor(Object object) {
@@ -173,7 +173,7 @@
 	 * This adds a property descriptor for the Readonly feature.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	protected void addReadonlyPropertyDescriptor(Object object) {
@@ -220,7 +220,7 @@
 	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
@@ -235,7 +235,7 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
@@ -250,12 +250,12 @@
 	 * This returns the label text for the adapted class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
 	public String getText(Object object) {
-		String label = ((VElement) object).getName();
+		final String label = ((VElement) object).getName();
 		return label == null || label.length() == 0 ? getString("_UI_Element_type") : //$NON-NLS-1$
 			getString("_UI_Element_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
 	}
@@ -302,7 +302,7 @@
 	 * that can be created under this object.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
@@ -317,7 +317,7 @@
 	 * Return the resource locator for this item provider's resources.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
diff --git a/bundles/org.eclipse.emf.ecp.view.model.edit/src/org/eclipse/emf/ecp/view/spi/model/provider/FeaturePathDomainModelReferenceItemProvider.java b/bundles/org.eclipse.emf.ecp.view.model.edit/src/org/eclipse/emf/ecp/view/spi/model/provider/FeaturePathDomainModelReferenceItemProvider.java
index 9de361c..dbeb088 100644
--- a/bundles/org.eclipse.emf.ecp.view.model.edit/src/org/eclipse/emf/ecp/view/spi/model/provider/FeaturePathDomainModelReferenceItemProvider.java
+++ b/bundles/org.eclipse.emf.ecp.view.model.edit/src/org/eclipse/emf/ecp/view/spi/model/provider/FeaturePathDomainModelReferenceItemProvider.java
@@ -47,7 +47,7 @@
 	 * This constructs an instance from a factory and a notifier.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	public FeaturePathDomainModelReferenceItemProvider(AdapterFactory adapterFactory) {
@@ -58,7 +58,7 @@
 	 * This returns the property descriptors for the adapted class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
@@ -75,7 +75,7 @@
 	 * This adds a property descriptor for the Domain Model EFeature feature.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	protected void addDomainModelEFeaturePropertyDescriptor(Object object) {
@@ -99,7 +99,7 @@
 	 * This returns FeaturePathDomainModelReference.gif.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
@@ -109,7 +109,7 @@
 
 	/**
 	 * This returns the label text for the adapted class.
-	 * 
+	 *
 	 * @param object the object instance for which the label is fetched
 	 *
 	 * @return the label
@@ -132,7 +132,7 @@
 	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
@@ -146,7 +146,7 @@
 	 * that can be created under this object.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
@@ -158,7 +158,7 @@
 	 * Return the resource locator for this item provider's resources.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
diff --git a/bundles/org.eclipse.emf.ecp.view.model.edit/src/org/eclipse/emf/ecp/view/spi/model/provider/StringToObjectMapEntryItemProvider.java b/bundles/org.eclipse.emf.ecp.view.model.edit/src/org/eclipse/emf/ecp/view/spi/model/provider/StringToObjectMapEntryItemProvider.java
index 6de2cdf..25f1c7a 100644
--- a/bundles/org.eclipse.emf.ecp.view.model.edit/src/org/eclipse/emf/ecp/view/spi/model/provider/StringToObjectMapEntryItemProvider.java
+++ b/bundles/org.eclipse.emf.ecp.view.model.edit/src/org/eclipse/emf/ecp/view/spi/model/provider/StringToObjectMapEntryItemProvider.java
@@ -51,7 +51,7 @@
 	 * This constructs an instance from a factory and a notifier.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	public StringToObjectMapEntryItemProvider(AdapterFactory adapterFactory) {
@@ -62,7 +62,7 @@
 	 * This returns the property descriptors for the adapted class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
@@ -80,7 +80,7 @@
 	 * This adds a property descriptor for the Key feature.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	protected void addKeyPropertyDescriptor(Object object) {
@@ -103,7 +103,7 @@
 	 * This adds a property descriptor for the Value feature.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	protected void addValuePropertyDescriptor(Object object) {
@@ -126,7 +126,7 @@
 	 * This returns StringToObjectMapEntry.gif.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
@@ -138,12 +138,12 @@
 	 * This returns the label text for the adapted class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
 	public String getText(Object object) {
-		Map.Entry<?, ?> stringToObjectMapEntry = (Map.Entry<?, ?>) object;
+		final Map.Entry<?, ?> stringToObjectMapEntry = (Map.Entry<?, ?>) object;
 		return "" + stringToObjectMapEntry.getKey() + " -> " + stringToObjectMapEntry.getValue(); //$NON-NLS-1$ //$NON-NLS-2$
 	}
 
@@ -152,7 +152,7 @@
 	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
@@ -173,7 +173,7 @@
 	 * that can be created under this object.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
@@ -185,7 +185,7 @@
 	 * Return the resource locator for this item provider's resources.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
diff --git a/bundles/org.eclipse.emf.ecp.view.model.edit/src/org/eclipse/emf/ecp/view/spi/model/provider/ViewEditPlugin.java b/bundles/org.eclipse.emf.ecp.view.model.edit/src/org/eclipse/emf/ecp/view/spi/model/provider/ViewEditPlugin.java
index 2560552..09383d6 100644
--- a/bundles/org.eclipse.emf.ecp.view.model.edit/src/org/eclipse/emf/ecp/view/spi/model/provider/ViewEditPlugin.java
+++ b/bundles/org.eclipse.emf.ecp.view.model.edit/src/org/eclipse/emf/ecp/view/spi/model/provider/ViewEditPlugin.java
@@ -28,7 +28,7 @@
 	 * Keep track of the singleton.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	public static final ViewEditPlugin INSTANCE = new ViewEditPlugin();
@@ -37,7 +37,7 @@
 	 * Keep track of the singleton.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	private static Implementation plugin;
@@ -46,7 +46,7 @@
 	 * Create the instance.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	public ViewEditPlugin() {
@@ -59,7 +59,7 @@
 	 * Returns the singleton instance of the Eclipse plugin.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @return the singleton instance.
 	 * @generated
 	 */
@@ -72,7 +72,7 @@
 	 * Returns the singleton instance of the Eclipse plugin.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @return the singleton instance.
 	 * @generated
 	 */
@@ -84,7 +84,7 @@
 	 * The actual implementation of the Eclipse <b>Plugin</b>.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	public static class Implementation extends EclipsePlugin {
@@ -92,7 +92,7 @@
 		 * Creates an instance.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
-		 * 
+		 *
 		 * @generated
 		 */
 		public Implementation() {
diff --git a/bundles/org.eclipse.emf.ecp.view.model.edit/src/org/eclipse/emf/ecp/view/spi/model/provider/ViewItemProvider.java b/bundles/org.eclipse.emf.ecp.view.model.edit/src/org/eclipse/emf/ecp/view/spi/model/provider/ViewItemProvider.java
index c7c0045..6264adc 100644
--- a/bundles/org.eclipse.emf.ecp.view.model.edit/src/org/eclipse/emf/ecp/view/spi/model/provider/ViewItemProvider.java
+++ b/bundles/org.eclipse.emf.ecp.view.model.edit/src/org/eclipse/emf/ecp/view/spi/model/provider/ViewItemProvider.java
@@ -41,7 +41,7 @@
 	 * This constructs an instance from a factory and a notifier.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	public ViewItemProvider(AdapterFactory adapterFactory) {
@@ -52,7 +52,7 @@
 	 * This returns the property descriptors for the adapted class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
@@ -61,7 +61,7 @@
 			super.getPropertyDescriptors(object);
 
 			addRootEClassPropertyDescriptor(object);
-			addEcorePathPropertyDescriptor(object);
+			addEcorePathsPropertyDescriptor(object);
 		}
 		return itemPropertyDescriptors;
 	}
@@ -70,7 +70,7 @@
 	 * This adds a property descriptor for the Root EClass feature.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	protected void addRootEClassPropertyDescriptor(Object object) {
@@ -89,20 +89,22 @@
 	}
 
 	/**
-	 * This adds a property descriptor for the Ecore Path feature.
+	 * This adds a property descriptor for the Ecore Paths feature.
 	 * <!-- begin-user-doc -->
 	 *
-	 * @since 1.3
+	 * @since 1.17
+	 *
 	 *        <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
-	protected void addEcorePathPropertyDescriptor(Object object) {
+	protected void addEcorePathsPropertyDescriptor(Object object) {
 		itemPropertyDescriptors
 			.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
 				getResourceLocator(),
-				getString("_UI_View_ecorePath_feature"), //$NON-NLS-1$
-				getString("_UI_PropertyDescriptor_description", "_UI_View_ecorePath_feature", "_UI_View_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-				VViewPackage.Literals.VIEW__ECORE_PATH,
+				getString("_UI_View_ecorePaths_feature"), //$NON-NLS-1$
+				getString("_UI_PropertyDescriptor_description", "_UI_View_ecorePaths_feature", "_UI_View_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				VViewPackage.Literals.VIEW__ECORE_PATHS,
 				true,
 				false,
 				false,
@@ -117,7 +119,7 @@
 	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
@@ -132,7 +134,7 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
@@ -147,7 +149,7 @@
 	 * This returns View.gif.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
@@ -178,7 +180,7 @@
 	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
@@ -186,7 +188,7 @@
 		updateChildren(notification);
 
 		switch (notification.getFeatureID(VView.class)) {
-		case VViewPackage.VIEW__ECORE_PATH:
+		case VViewPackage.VIEW__ECORE_PATHS:
 			fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
 			return;
 		case VViewPackage.VIEW__CHILDREN:
@@ -201,7 +203,7 @@
 	 * that can be created under this object.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
diff --git a/bundles/org.eclipse.emf.ecp.view.model.edit/src/org/eclipse/emf/ecp/view/spi/model/provider/ViewItemProviderAdapterFactory.java b/bundles/org.eclipse.emf.ecp.view.model.edit/src/org/eclipse/emf/ecp/view/spi/model/provider/ViewItemProviderAdapterFactory.java
index 8ba9946..3ca2409 100644
--- a/bundles/org.eclipse.emf.ecp.view.model.edit/src/org/eclipse/emf/ecp/view/spi/model/provider/ViewItemProviderAdapterFactory.java
+++ b/bundles/org.eclipse.emf.ecp.view.model.edit/src/org/eclipse/emf/ecp/view/spi/model/provider/ViewItemProviderAdapterFactory.java
@@ -54,7 +54,7 @@
 	 * This keeps track of the root adapter factory that delegates to this adapter factory.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	protected ComposedAdapterFactory parentAdapterFactory;
@@ -63,7 +63,7 @@
 	 * This is used to implement {@link org.eclipse.emf.edit.provider.IChangeNotifier}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	protected IChangeNotifier changeNotifier = new ChangeNotifier();
@@ -72,7 +72,7 @@
 	 * This helps manage the child creation extenders.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	protected ChildCreationExtenderManager childCreationExtenderManager = new ChildCreationExtenderManager(
@@ -82,7 +82,7 @@
 	 * This keeps track of all the supported types checked by {@link #isFactoryForType isFactoryForType}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	protected Collection<Object> supportedTypes = new ArrayList<Object>();
@@ -91,7 +91,7 @@
 	 * This constructs an instance.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	public ViewItemProviderAdapterFactory() {
@@ -107,7 +107,7 @@
 	 * instances.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	protected DiagnosticItemProvider diagnosticItemProvider;
@@ -116,7 +116,7 @@
 	 * This creates an adapter for a {@link org.eclipse.emf.ecp.view.spi.model.VDiagnostic}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
@@ -132,7 +132,7 @@
 	 * This keeps track of the one adapter used for all {@link org.eclipse.emf.ecp.view.spi.model.VView} instances.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	protected ViewItemProvider viewItemProvider;
@@ -141,7 +141,7 @@
 	 * This creates an adapter for a {@link org.eclipse.emf.ecp.view.spi.model.VView}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
@@ -157,7 +157,7 @@
 	 * This keeps track of the one adapter used for all {@link org.eclipse.emf.ecp.view.spi.model.VControl} instances.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	protected ControlItemProvider controlItemProvider;
@@ -166,7 +166,7 @@
 	 * This creates an adapter for a {@link org.eclipse.emf.ecp.view.spi.model.VControl}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
@@ -193,7 +193,7 @@
 	 * This creates an adapter for a {@link org.eclipse.emf.ecp.view.spi.model.VViewModelLoadingProperties}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
@@ -219,7 +219,7 @@
 	 * This creates an adapter for a {@link java.util.Map.Entry}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
@@ -235,7 +235,7 @@
 	 * This keeps track of the one adapter used for all
 	 * {@link org.eclipse.emf.ecp.view.spi.model.VDateTimeDisplayAttachment} instances.
 	 * <!-- begin-user-doc -->
-	 * 
+	 *
 	 * @since 1.8
 	 *        <!-- end-user-doc -->
 	 * @generated
@@ -246,7 +246,7 @@
 	 * This creates an adapter for a {@link org.eclipse.emf.ecp.view.spi.model.VDateTimeDisplayAttachment}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
@@ -263,7 +263,7 @@
 	 * {@link org.eclipse.emf.ecp.view.spi.model.VFeaturePathDomainModelReference} instances.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	protected FeaturePathDomainModelReferenceItemProvider featurePathDomainModelReferenceItemProvider;
@@ -272,7 +272,7 @@
 	 * This creates an adapter for a {@link org.eclipse.emf.ecp.view.spi.model.VFeaturePathDomainModelReference}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
@@ -288,7 +288,7 @@
 	 * This returns the root adapter factory that contains this factory.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
@@ -300,7 +300,7 @@
 	 * This sets the composed adapter factory that contains this factory.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
@@ -311,7 +311,7 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
@@ -323,7 +323,7 @@
 	 * This implementation substitutes the factory itself as the key for the adapter.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
@@ -334,14 +334,14 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
 	public Object adapt(Object object, Object type) {
 		if (isFactoryForType(type)) {
-			Object adapter = super.adapt(object, type);
-			if (!(type instanceof Class<?>) || (((Class<?>) type).isInstance(adapter))) {
+			final Object adapter = super.adapt(object, type);
+			if (!(type instanceof Class<?>) || ((Class<?>) type).isInstance(adapter)) {
 				return adapter;
 			}
 		}
@@ -352,7 +352,7 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	public List<IChildCreationExtender> getChildCreationExtenders() {
@@ -362,7 +362,7 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
@@ -373,7 +373,7 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
@@ -385,7 +385,7 @@
 	 * This adds a listener.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
@@ -397,7 +397,7 @@
 	 * This removes a listener.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
@@ -409,7 +409,7 @@
 	 * This delegates to {@link #changeNotifier} and to {@link #parentAdapterFactory}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
@@ -425,25 +425,32 @@
 	 * This disposes all of the item providers created by this factory.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
 	public void dispose() {
-		if (diagnosticItemProvider != null)
+		if (diagnosticItemProvider != null) {
 			diagnosticItemProvider.dispose();
-		if (featurePathDomainModelReferenceItemProvider != null)
+		}
+		if (featurePathDomainModelReferenceItemProvider != null) {
 			featurePathDomainModelReferenceItemProvider.dispose();
-		if (viewItemProvider != null)
+		}
+		if (viewItemProvider != null) {
 			viewItemProvider.dispose();
-		if (controlItemProvider != null)
+		}
+		if (controlItemProvider != null) {
 			controlItemProvider.dispose();
-		if (viewModelLoadingPropertiesItemProvider != null)
+		}
+		if (viewModelLoadingPropertiesItemProvider != null) {
 			viewModelLoadingPropertiesItemProvider.dispose();
-		if (stringToObjectMapEntryItemProvider != null)
+		}
+		if (stringToObjectMapEntryItemProvider != null) {
 			stringToObjectMapEntryItemProvider.dispose();
-		if (dateTimeDisplayAttachmentItemProvider != null)
+		}
+		if (dateTimeDisplayAttachmentItemProvider != null) {
 			dateTimeDisplayAttachmentItemProvider.dispose();
+		}
 	}
 
 }
diff --git a/bundles/org.eclipse.emf.ecp.view.model.edit/src/org/eclipse/emf/ecp/view/spi/model/provider/ViewModelLoadingPropertiesItemProvider.java b/bundles/org.eclipse.emf.ecp.view.model.edit/src/org/eclipse/emf/ecp/view/spi/model/provider/ViewModelLoadingPropertiesItemProvider.java
index 86526e4..91c4af0 100644
--- a/bundles/org.eclipse.emf.ecp.view.model.edit/src/org/eclipse/emf/ecp/view/spi/model/provider/ViewModelLoadingPropertiesItemProvider.java
+++ b/bundles/org.eclipse.emf.ecp.view.model.edit/src/org/eclipse/emf/ecp/view/spi/model/provider/ViewModelLoadingPropertiesItemProvider.java
@@ -52,7 +52,7 @@
 	 * This constructs an instance from a factory and a notifier.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	public ViewModelLoadingPropertiesItemProvider(AdapterFactory adapterFactory) {
@@ -63,7 +63,7 @@
 	 * This returns the property descriptors for the adapted class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
@@ -81,7 +81,7 @@
 	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
@@ -97,7 +97,7 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
@@ -112,7 +112,7 @@
 	 * This returns ViewModelLoadingProperties.gif.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
@@ -124,7 +124,7 @@
 	 * This returns the label text for the adapted class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
@@ -137,7 +137,7 @@
 	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
@@ -158,7 +158,7 @@
 	 * that can be created under this object.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
@@ -178,15 +178,16 @@
 	 * This returns the label text for {@link org.eclipse.emf.edit.command.CreateChildCommand}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
 	public String getCreateChildText(Object owner, Object feature, Object child, Collection<?> selection) {
-		Object childFeature = feature;
-		Object childObject = child;
+		final Object childFeature = feature;
+		final Object childObject = child;
 
-		boolean qualify = childFeature == VViewPackage.Literals.VIEW_MODEL_LOADING_PROPERTIES__INHERITABLE_PROPERTIES ||
+		final boolean qualify = childFeature == VViewPackage.Literals.VIEW_MODEL_LOADING_PROPERTIES__INHERITABLE_PROPERTIES
+			||
 			childFeature == VViewPackage.Literals.VIEW_MODEL_LOADING_PROPERTIES__NON_INHERITABLE_PROPERTIES;
 
 		if (qualify) {
@@ -200,7 +201,7 @@
 	 * Return the resource locator for this item provider's resources.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
diff --git a/bundles/org.eclipse.emf.ecp.view.model.editor.project.installer/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.view.model.editor.project.installer/META-INF/MANIFEST.MF
index c457368..5dcbd0d 100644
--- a/bundles/org.eclipse.emf.ecp.view.model.editor.project.installer/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.view.model.editor.project.installer/META-INF/MANIFEST.MF
@@ -2,21 +2,22 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: New View Model Project Wizard
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.model.project.installer;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Activator: org.eclipse.emf.ecp.view.model.internal.project.installer.Activator
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emf.ecp.view.model.internal.project.handlers;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.view.model.internal.project.installer;version="1.16.0";x-internal:=true
+Export-Package: org.eclipse.emf.ecp.view.model.internal.project.handlers;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.model.internal.project.installer;version="1.17.0";x-internal:=true
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.4.0,4.0.0)",
-  org.eclipse.emf.ecp.view.model.editor;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.edit.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.core;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.ui.view.editor.controls;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.ide.view.service;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.core.resources;bundle-version="[3.7.0,4.0.0)",
-  org.eclipse.ui.ide;bundle-version="[3.7.0,4.0.0)",
-  org.eclipse.emf.common.ui;bundle-version="[2.5.0,3.0.0)",
-  org.eclipse.emf.ecp.view.model.common;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.ide.util;bundle-version="[1.16.0,1.17.0)"
+ org.eclipse.emf.ecp.view.model.editor;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.edit.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.core;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.ui.view.editor.controls;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.ide.view.service;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.core.resources;bundle-version="[3.7.0,4.0.0)",
+ org.eclipse.ui.ide;bundle-version="[3.7.0,4.0.0)",
+ org.eclipse.emf.common.ui;bundle-version="[2.5.0,3.0.0)",
+ org.eclipse.emf.ecp.view.model.common;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.ide.util;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: J2SE-1.5
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.view.model.project.installer
diff --git a/bundles/org.eclipse.emf.ecp.view.model.editor.project.installer/pom.xml b/bundles/org.eclipse.emf.ecp.view.model.editor.project.installer/pom.xml
index 78226e9..3a402d1 100644
--- a/bundles/org.eclipse.emf.ecp.view.model.editor.project.installer/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.view.model.editor.project.installer/pom.xml
@@ -5,11 +5,11 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emf.ecp.view.model.project.installer</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 </project>
diff --git a/bundles/org.eclipse.emf.ecp.view.model.editor/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.view.model.editor/META-INF/MANIFEST.MF
index 814c457..c89ea12 100644
--- a/bundles/org.eclipse.emf.ecp.view.model.editor/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.view.model.editor/META-INF/MANIFEST.MF
@@ -2,26 +2,27 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.model.editor;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-ClassPath: .
 Bundle-Activator: org.eclipse.emf.ecp.view.model.presentation.ViewEditorPlugin$Implementation
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
-Export-Package: org.eclipse.emf.ecp.view.model.actions;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.view.model.presentation;version="1.16.0";x-friends:="org.eclipse.emf.ecp.view.model.project.installer"
+Export-Package: org.eclipse.emf.ecp.view.model.actions;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.model.presentation;version="1.17.0";x-friends:="org.eclipse.emf.ecp.view.model.project.installer"
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.7.0,4.0.0)",
-  org.eclipse.core.resources;bundle-version="[3.7.0,4.0.0)",
-  org.eclipse.emf.ecp.view.model.edit;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecore.xmi;bundle-version="[2.7.0,3.0.0)",
-  org.eclipse.emf.edit.ui;bundle-version="[2.7.0,3.0.0)",
-  org.eclipse.ui.ide;bundle-version="[3.7.0,4.0.0)",
-  org.eclipse.emf.ecp.core;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.ide.view.service;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecore.edit;bundle-version="[2.7.0,3.0.0)",
-  org.eclipse.emf.ecp.edit.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.ui.view.editor.controls;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.model.common;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.ide.util;bundle-version="[1.16.0,1.17.0)"
+ org.eclipse.core.resources;bundle-version="[3.7.0,4.0.0)",
+ org.eclipse.emf.ecp.view.model.edit;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecore.xmi;bundle-version="[2.7.0,3.0.0)",
+ org.eclipse.emf.edit.ui;bundle-version="[2.7.0,3.0.0)",
+ org.eclipse.ui.ide;bundle-version="[3.7.0,4.0.0)",
+ org.eclipse.emf.ecp.core;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.ide.view.service;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecore.edit;bundle-version="[2.7.0,3.0.0)",
+ org.eclipse.emf.ecp.edit.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.ui.view.editor.controls;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.model.common;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.ide.util;bundle-version="[1.17.0,1.18.0]"
 Import-Package: org.eclipse.jface.wizard;version="0.0.0"
 Bundle-ActivationPolicy: lazy
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Automatic-Module-Name: org.eclipse.emf.ecp.view.model.editor
diff --git a/bundles/org.eclipse.emf.ecp.view.model.editor/pom.xml b/bundles/org.eclipse.emf.ecp.view.model.editor/pom.xml
index 9525f9d..ba0b3b1 100644
--- a/bundles/org.eclipse.emf.ecp.view.model.editor/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.view.model.editor/pom.xml
@@ -7,7 +7,7 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
 
diff --git a/bundles/org.eclipse.emf.ecp.view.model.generator/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.view.model.generator/META-INF/MANIFEST.MF
index b35e06f..aaebb5f 100644
--- a/bundles/org.eclipse.emf.ecp.view.model.generator/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.view.model.generator/META-INF/MANIFEST.MF
@@ -2,12 +2,13 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Generator
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.model.provider.generator;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emf.ecp.view.model.generator;version="1.16.0";x-internal:=true
+Export-Package: org.eclipse.emf.ecp.view.model.generator;version="1.17.0";x-internal:=true
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.7.0,4.0.0)",
-  org.eclipse.emf.edit;bundle-version="[2.8.0,3.0.0)",
-  org.eclipse.emf.ecp.view.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.ui.view;bundle-version="[1.16.0,1.17.0)"
+ org.eclipse.emf.edit;bundle-version="[2.8.0,3.0.0)",
+ org.eclipse.emf.ecp.view.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.ui.view;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.view.model.provider.generator
diff --git a/bundles/org.eclipse.emf.ecp.view.model.generator/pom.xml b/bundles/org.eclipse.emf.ecp.view.model.generator/pom.xml
index 8032360..b397d44 100644
--- a/bundles/org.eclipse.emf.ecp.view.model.generator/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.view.model.generator/pom.xml
@@ -7,7 +7,7 @@
   <parent>

     <groupId>org.eclipse.emf.ecp</groupId>

     <artifactId>ecp-bundles-parent</artifactId>

-    <version>1.16.0-SNAPSHOT</version>

+    <version>1.17.0-SNAPSHOT</version>

     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>

   </parent>

 

diff --git a/bundles/org.eclipse.emf.ecp.view.model.preview.common/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.view.model.preview.common/META-INF/MANIFEST.MF
index cba0367..2b024b3 100644
--- a/bundles/org.eclipse.emf.ecp.view.model.preview.common/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.view.model.preview.common/META-INF/MANIFEST.MF
@@ -2,28 +2,29 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: View Model Preview Common
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.model.preview.common;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Activator: org.eclipse.emf.ecp.view.model.preview.common.Activator
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emf.ecp.view.model.preview.common;version="1.16.0";x-friends:="org.eclipse.emf.ecp.view.model.preview.e3,org.eclipse.emf.ecp.view.model.preview.e4"
+Export-Package: org.eclipse.emf.ecp.view.model.preview.common;version="1.17.0";x-friends:="org.eclipse.emf.ecp.view.model.preview.e3,org.eclipse.emf.ecp.view.model.preview.e4"
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.4.0,4.0.0)",
-  org.eclipse.emf.ecp.ui.view;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.ui.workbench;bundle-version="[3.7.0,4.0.0)",
-  org.eclipse.emf.ecp.edit;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.ui;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.categorization.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.model.common;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.view.model.localization;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.localization;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services;bundle-version="[1.16.0,1.17.0)"
+ org.eclipse.emf.ecp.ui.view;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.ui.workbench;bundle-version="[3.7.0,4.0.0)",
+ org.eclipse.emf.ecp.edit;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.ui;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.categorization.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.model.common;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.view.model.localization;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.localization;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Service-Component: OSGI-INF/org.eclipse.emf.ecp.view.model.preview.common.PreviewWorkspaceViewProvider.xml
 Bundle-ActivationPolicy: lazy
 Import-Package: org.eclipse.core.resources;version="0.0.0",
-  org.eclipse.emf.ecp.ui.view.swt;version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.spi.common.locale;version="[1.16.0,1.17.0)",
-  org.eclipse.jface;version="0.0.0",
-  org.eclipse.jface.layout;version="0.0.0",
-  org.eclipse.swt;version="0.0.0",
-  org.eclipse.swt.widgets;version="0.0.0",
-  org.osgi.service.component.annotations;version="1.2.0"
+ org.eclipse.emf.ecp.ui.view.swt;version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.spi.common.locale;version="[1.17.0,1.18.0]",
+ org.eclipse.jface;version="0.0.0",
+ org.eclipse.jface.layout;version="0.0.0",
+ org.eclipse.swt;version="0.0.0",
+ org.eclipse.swt.widgets;version="0.0.0",
+ org.osgi.service.component.annotations;version="1.2.0"
+Automatic-Module-Name: org.eclipse.emf.ecp.view.model.preview.common
diff --git a/bundles/org.eclipse.emf.ecp.view.model.preview.common/pom.xml b/bundles/org.eclipse.emf.ecp.view.model.preview.common/pom.xml
index ae99344..b23131c 100644
--- a/bundles/org.eclipse.emf.ecp.view.model.preview.common/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.view.model.preview.common/pom.xml
@@ -5,11 +5,11 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emf.ecp.view.model.preview.common</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 </project>
diff --git a/bundles/org.eclipse.emf.ecp.view.model.preview.common/src/org/eclipse/emf/ecp/view/model/preview/common/Preview.java b/bundles/org.eclipse.emf.ecp.view.model.preview.common/src/org/eclipse/emf/ecp/view/model/preview/common/Preview.java
index 6e1dd20..9ab09fc 100644
--- a/bundles/org.eclipse.emf.ecp.view.model.preview.common/src/org/eclipse/emf/ecp/view/model/preview/common/Preview.java
+++ b/bundles/org.eclipse.emf.ecp.view.model.preview.common/src/org/eclipse/emf/ecp/view/model/preview/common/Preview.java
@@ -28,9 +28,7 @@
 import org.eclipse.emf.ecore.util.EContentAdapter;
 import org.eclipse.emf.ecore.util.EcoreUtil;
 import org.eclipse.emf.ecp.edit.spi.EMFDeleteServiceImpl;
-import org.eclipse.emf.ecp.edit.spi.ReferenceService;
 import org.eclipse.emf.ecp.ui.view.ECPRendererException;
-import org.eclipse.emf.ecp.ui.view.swt.DefaultReferenceService;
 import org.eclipse.emf.ecp.ui.view.swt.ECPSWTView;
 import org.eclipse.emf.ecp.ui.view.swt.ECPSWTViewRenderer;
 import org.eclipse.emf.ecp.view.model.common.edit.provider.CustomReflectiveItemProviderAdapterFactory;
@@ -128,6 +126,9 @@
 
 	private void internalRender(VView view) {
 		try {
+			if (view == null) {
+				return;
+			}
 			clear();
 			final EClass myPreviewEClass = view.getRootEClass();
 			if (dummyData == null || dummyData.eClass() != myPreviewEClass) {
@@ -147,7 +148,6 @@
 				resource.getContents().add(dummyData);
 			}
 
-			final ReferenceService previewRefServ = new DefaultReferenceService();
 			final VView copy = EcoreUtil.copy(view);
 			copy.eAdapters().add(new LocalizationAdapter() {
 				@Override
@@ -157,7 +157,7 @@
 			});
 			clearViewDiagnostics(copy);
 			final ViewModelContext viewModelContext = ViewModelContextFactory.INSTANCE.createViewModelContext(
-				copy, dummyData, previewRefServ, new EMFDeleteServiceImpl());
+				copy, dummyData, new EMFDeleteServiceImpl());
 			composite = createComposite(parent);
 			render = ECPSWTViewRenderer.INSTANCE.render(composite, viewModelContext);
 			composite.layout();
@@ -173,6 +173,7 @@
 	}
 
 	// FIXME move to e3 PreviewView
+	@SuppressWarnings("restriction")
 	private void displayError(Exception e) {
 		clear();
 		Activator.getDefault().getLog().log(new Status(IStatus.ERROR, Activator.PLUGIN_ID, e.getMessage(), e));
diff --git a/bundles/org.eclipse.emf.ecp.view.model.preview.e3/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.view.model.preview.e3/META-INF/MANIFEST.MF
index c65715b..0278e11 100644
--- a/bundles/org.eclipse.emf.ecp.view.model.preview.e3/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.view.model.preview.e3/META-INF/MANIFEST.MF
@@ -2,24 +2,24 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Preview View
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.model.preview.e3;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Activator: org.eclipse.emf.ecp.view.model.internal.preview.Activator
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emf.ecp.view.model.internal.preview;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.view.model.internal.preview.actions;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.view.model.internal.preview.e3.views;version="1.16.0";x-internal:=true
+Export-Package: org.eclipse.emf.ecp.view.model.internal.preview;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.model.internal.preview.actions;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.model.internal.preview.e3.views;version="1.17.0";x-internal:=true
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.4.0,4.0.0)",
-  org.eclipse.emf.ecp.view.model.preview.common;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.treemasterdetail.ui.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.ui.workbench;bundle-version="[3.7.0,4.0.0)",
-  org.eclipse.emf.edit;bundle-version="[2.8.0,3.0.0)",
-  org.eclipse.emf.ecp.view.model.common;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.ide.view.service;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.common;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.ide.editor.view;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.editor.viewmodel;bundle-version="[1.16.0,1.17.0)";resolution:=optional,
-  org.eclipse.emfforms.editor;bundle-version="[1.16.0,1.17.0)";resolution:=optional
+ org.eclipse.emf.ecp.view.model.preview.common;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.treemasterdetail.ui.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.ui.workbench;bundle-version="[3.7.0,4.0.0)",
+ org.eclipse.emf.edit;bundle-version="[2.8.0,3.0.0)",
+ org.eclipse.emf.ecp.view.model.common;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.ide.view.service;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.common;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.ide.editor.view;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.editor.viewmodel;bundle-version="[1.17.0,1.18.0]";resolution:=optional,
+ org.eclipse.emfforms.editor;bundle-version="[1.17.0,1.18.0]";resolution:=optional
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Import-Package: org.eclipse.core.commands;version="0.0.0",
   org.eclipse.core.resources;version="0.0.0",
@@ -41,3 +41,4 @@
   org.eclipse.ui.part;ui.workbench=split;version="0.0.0",
   org.eclipse.ui.plugin;version="0.0.0"
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.view.model.preview.e3
diff --git a/bundles/org.eclipse.emf.ecp.view.model.preview.e3/pom.xml b/bundles/org.eclipse.emf.ecp.view.model.preview.e3/pom.xml
index 7482e30..e46d075 100644
--- a/bundles/org.eclipse.emf.ecp.view.model.preview.e3/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.view.model.preview.e3/pom.xml
@@ -7,12 +7,12 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
 
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emf.ecp.view.model.preview.e3</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 </project>
diff --git a/bundles/org.eclipse.emf.ecp.view.model.provider.xmi/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.view.model.provider.xmi/META-INF/MANIFEST.MF
index 47c2914..993d076 100644
--- a/bundles/org.eclipse.emf.ecp.view.model.provider.xmi/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.view.model.provider.xmi/META-INF/MANIFEST.MF
@@ -2,17 +2,18 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: XMI View Model Provider
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.model.provider.xmi;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Activator: org.eclipse.emf.ecp.internal.view.model.provider.xmi.Activator
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emf.ecp.internal.view.model.provider.xmi;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.view.model.provider.xmi;version="1.16.0";x-friends:="org.eclipse.emf.ecp.ui.view.editor.controls"
+Export-Package: org.eclipse.emf.ecp.internal.view.model.provider.xmi;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.model.provider.xmi;version="1.17.0";x-friends:="org.eclipse.emf.ecp.ui.view.editor.controls"
 Require-Bundle: org.eclipse.core.runtime;bundle-version="3.8.0",
-  org.eclipse.emf.ecp.view.model;bundle-version="[1.16.0,1.17.0)";visibility:=reexport,
-  org.eclipse.emf.ecore.xmi;bundle-version="2.8.0",
-  org.eclipse.emf.ecp.ui.view;bundle-version="[1.16.0,1.17.0)";visibility:=reexport,
-  org.eclipse.emfforms.localization;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.migrator;bundle-version="[1.16.0,1.17.0)"
+ org.eclipse.emf.ecp.view.model;bundle-version="[1.17.0,1.18.0]";visibility:=reexport,
+ org.eclipse.emf.ecore.xmi;bundle-version="2.8.0",
+ org.eclipse.emf.ecp.ui.view;bundle-version="[1.17.0,1.18.0]";visibility:=reexport,
+ org.eclipse.emfforms.localization;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.migrator;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
-Import-Package: org.eclipse.emfforms.spi.common.report;version="[1.16.0,1.17.0)"
+Import-Package: org.eclipse.emfforms.spi.common.report;version="[1.17.0,1.18.0]"
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.view.model.provider.xmi
diff --git a/bundles/org.eclipse.emf.ecp.view.model.provider.xmi/pom.xml b/bundles/org.eclipse.emf.ecp.view.model.provider.xmi/pom.xml
index b86d32d..b8bae46 100644
--- a/bundles/org.eclipse.emf.ecp.view.model.provider.xmi/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.view.model.provider.xmi/pom.xml
@@ -7,7 +7,7 @@
   <parent>

     <groupId>org.eclipse.emf.ecp</groupId>

     <artifactId>ecp-bundles-parent</artifactId>

-    <version>1.16.0-SNAPSHOT</version>

+    <version>1.17.0-SNAPSHOT</version>

     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>

   </parent>

 

diff --git a/bundles/org.eclipse.emf.ecp.view.model/.settings/.api_filters b/bundles/org.eclipse.emf.ecp.view.model/.settings/.api_filters
index 0d3ae32..472d7cc 100644
--- a/bundles/org.eclipse.emf.ecp.view.model/.settings/.api_filters
+++ b/bundles/org.eclipse.emf.ecp.view.model/.settings/.api_filters
@@ -102,6 +102,25 @@
             </message_arguments>
         </filter>
     </resource>
+    <resource path="src/org/eclipse/emf/ecp/view/spi/model/VView.java" type="org.eclipse.emf.ecp.view.spi.model.VView">
+        <filter comment="SPI change 1.17.0" id="405901410">
+            <message_arguments>
+                <message_argument value="org.eclipse.emf.ecp.view.spi.model.VView"/>
+                <message_argument value="getEcorePath()"/>
+            </message_arguments>
+        </filter>
+        <filter comment="SPI change 1.17.0" id="405901410">
+            <message_arguments>
+                <message_argument value="org.eclipse.emf.ecp.view.spi.model.VView"/>
+                <message_argument value="setEcorePath(String)"/>
+            </message_arguments>
+        </filter>
+        <filter comment="SPI change 1.17.0" id="1211105284">
+            <message_arguments>
+                <message_argument value="getEcorePaths()"/>
+            </message_arguments>
+        </filter>
+    </resource>
     <resource path="src/org/eclipse/emf/ecp/view/spi/model/VViewFactory.java" type="org.eclipse.emf.ecp.view.spi.model.VViewFactory">
         <filter comment="spi 170" id="403804204">
             <message_arguments>
@@ -629,6 +648,25 @@
                 <message_argument value="http://org/eclipse/emf/ecp/view/model"/>
             </message_arguments>
         </filter>
+        <filter comment="SPI change 1.17.0" id="388194388">
+            <message_arguments>
+                <message_argument value="org.eclipse.emf.ecp.view.spi.model.VViewPackage"/>
+                <message_argument value="eNS_URI"/>
+                <message_argument value="http://org/eclipse/emf/ecp/view/model/170"/>
+            </message_arguments>
+        </filter>
+        <filter comment="SPI change 1.17.0" id="405864542">
+            <message_arguments>
+                <message_argument value="org.eclipse.emf.ecp.view.spi.model.VViewPackage"/>
+                <message_argument value="VIEW__ECORE_PATH"/>
+            </message_arguments>
+        </filter>
+        <filter comment="SPI change 1.17.0" id="405901410">
+            <message_arguments>
+                <message_argument value="org.eclipse.emf.ecp.view.spi.model.VViewPackage"/>
+                <message_argument value="getView_EcorePath()"/>
+            </message_arguments>
+        </filter>
     </resource>
     <resource path="src/org/eclipse/emf/ecp/view/spi/model/VViewPackage.java" type="org.eclipse.emf.ecp.view.spi.model.VViewPackage$Literals">
         <filter comment="SPI" id="403767336">
@@ -745,12 +783,24 @@
                 <message_argument value="VIEW__ECORE_PATH"/>
             </message_arguments>
         </filter>
+        <filter comment="SPI change 1.17.0" id="403767336">
+            <message_arguments>
+                <message_argument value="org.eclipse.emf.ecp.view.spi.model.VViewPackage.Literals"/>
+                <message_argument value="VIEW__ECORE_PATHS"/>
+            </message_arguments>
+        </filter>
         <filter comment="spi 170" id="403767336">
             <message_arguments>
                 <message_argument value="org.eclipse.emf.ecp.view.spi.model.VViewPackage.Literals"/>
                 <message_argument value="VIEW__LOADING_PROPERTIES"/>
             </message_arguments>
         </filter>
+        <filter comment="SPI change 1.17.0" id="405864542">
+            <message_arguments>
+                <message_argument value="org.eclipse.emf.ecp.view.spi.model.VViewPackage.Literals"/>
+                <message_argument value="VIEW__ECORE_PATH"/>
+            </message_arguments>
+        </filter>
     </resource>
     <resource path="src/org/eclipse/emf/ecp/view/spi/model/impl/Activator.java" type="org.eclipse.emf.ecp.view.spi.model.impl.Activator">
         <filter comment="SPI Change in 1.6" id="338792546">
@@ -774,6 +824,63 @@
             </message_arguments>
         </filter>
     </resource>
+    <resource path="src/org/eclipse/emf/ecp/view/spi/model/impl/VViewImpl.java" type="org.eclipse.emf.ecp.view.spi.model.impl.VViewImpl">
+        <filter comment="SPI change 1.17.0" id="336658481">
+            <message_arguments>
+                <message_argument value="org.eclipse.emf.ecp.view.spi.model.impl.VViewImpl"/>
+                <message_argument value="ecorePaths"/>
+            </message_arguments>
+        </filter>
+        <filter comment="SPI change 1.17.0" id="338755678">
+            <message_arguments>
+                <message_argument value="org.eclipse.emf.ecp.view.spi.model.impl.VViewImpl"/>
+                <message_argument value="ECORE_PATH_EDEFAULT"/>
+            </message_arguments>
+        </filter>
+        <filter comment="SPI change 1.17.0" id="338755678">
+            <message_arguments>
+                <message_argument value="org.eclipse.emf.ecp.view.spi.model.impl.VViewImpl"/>
+                <message_argument value="ecorePath"/>
+            </message_arguments>
+        </filter>
+        <filter comment="SPI change 1.17.0" id="338792546">
+            <message_arguments>
+                <message_argument value="org.eclipse.emf.ecp.view.spi.model.impl.VViewImpl"/>
+                <message_argument value="getEcorePath()"/>
+            </message_arguments>
+        </filter>
+        <filter comment="SPI change 1.17.0" id="338792546">
+            <message_arguments>
+                <message_argument value="org.eclipse.emf.ecp.view.spi.model.impl.VViewImpl"/>
+                <message_argument value="setEcorePath(String)"/>
+            </message_arguments>
+        </filter>
+        <filter comment="SPI change 1.17.0" id="576725006">
+            <message_arguments>
+                <message_argument value="VView"/>
+                <message_argument value="VViewImpl"/>
+            </message_arguments>
+        </filter>
+        <filter comment="SPI change 1.17.0" id="1143996420">
+            <message_arguments>
+                <message_argument value="ecorePaths"/>
+            </message_arguments>
+        </filter>
+    </resource>
+    <resource path="src/org/eclipse/emf/ecp/view/spi/model/impl/VViewPackageImpl.java" type="org.eclipse.emf.ecp.view.spi.model.impl.VViewPackageImpl">
+        <filter comment="SPI change 1.17.0" id="338792546">
+            <message_arguments>
+                <message_argument value="org.eclipse.emf.ecp.view.spi.model.impl.VViewPackageImpl"/>
+                <message_argument value="getView_EcorePath()"/>
+            </message_arguments>
+        </filter>
+        <filter id="576725006">
+            <message_arguments>
+                <message_argument value="VViewPackage"/>
+                <message_argument value="VViewPackageImpl"/>
+            </message_arguments>
+        </filter>
+    </resource>
     <resource path="src/org/eclipse/emf/ecp/view/spi/model/reporting/DomainModelReferenceResolutionFailedReport.java" type="org.eclipse.emf.ecp.view.spi.model.reporting.DomainModelReferenceResolutionFailedReport">
         <filter comment="SPI Change in 1.6" id="338849923">
             <message_arguments>
diff --git a/bundles/org.eclipse.emf.ecp.view.model/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.view.model/META-INF/MANIFEST.MF
index 323f866..c181506 100644
--- a/bundles/org.eclipse.emf.ecp.view.model/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.view.model/META-INF/MANIFEST.MF
@@ -2,19 +2,20 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.model;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-ClassPath: .
 Bundle-Activator: org.eclipse.emf.ecp.view.spi.model.impl.Activator
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
-Export-Package: org.eclipse.emf.ecp.view.model.internal.reporting;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.view.spi.model;version="1.16.0",
-  org.eclipse.emf.ecp.view.spi.model.impl;version="1.16.0",
-  org.eclipse.emf.ecp.view.spi.model.reporting;version="1.16.0",
-  org.eclipse.emf.ecp.view.spi.model.util;version="1.16.0"
+Export-Package: org.eclipse.emf.ecp.view.model.internal.reporting;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.spi.model;version="1.17.0",
+ org.eclipse.emf.ecp.view.spi.model.impl;version="1.17.0",
+ org.eclipse.emf.ecp.view.spi.model.reporting;version="1.17.0",
+ org.eclipse.emf.ecp.view.spi.model.util;version="1.17.0"
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.7.0,4.0.0)",
   org.eclipse.emf.ecore;bundle-version="[2.7.0,3.0.0)";visibility:=reexport,
   org.eclipse.emf.ecore.xmi;bundle-version="[2.7.0,3.0.0)";visibility:=reexport
-Import-Package: org.eclipse.emfforms.spi.common.report;version="[1.16.0,1.17.0)"
+Import-Package: org.eclipse.emfforms.spi.common.report;version="[1.17.0,1.18.0]"
 Bundle-ActivationPolicy: lazy
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Automatic-Module-Name: org.eclipse.emf.ecp.view.model
diff --git a/bundles/org.eclipse.emf.ecp.view.model/model/update-nsURIs.sh b/bundles/org.eclipse.emf.ecp.view.model/model/update-nsURIs.sh
new file mode 100755
index 0000000..c28c9fd
--- /dev/null
+++ b/bundles/org.eclipse.emf.ecp.view.model/model/update-nsURIs.sh
@@ -0,0 +1,24 @@
+#!/usr/bin/env bash
+# Script to update all plugin.xml files within a repository using the nsUri of a given ecore file
+# author Mat Hansen <mhansen@eclipsesource.com>
+# date   20180215
+
+ECORE=$1
+XPATH="string(/*[local-name()='EPackage']/@nsURI)"
+GIT_ROOT=$(git rev-parse --show-toplevel)
+if [ ! -f $ECORE ]; then
+  echo "Error: unable to find ECORE"
+  exit 1
+fi
+if [ -z $GIT_ROOT ]; then
+  echo "Error: unable to determine git root level directory. Please execute this script within a git repository."
+  exit 1
+fi
+
+git show HEAD~1:$ECORE > $ECORE.base 2>> /dev/null || git show HEAD~1:./$ECORE > $ECORE.base 2>> /dev/null
+nsuri_old=$(xmllint --XPATH $XPATH $ECORE.base)
+nsuri_new=$(xmllint --XPATH $XPATH $ECORE)
+
+echo -e "Updating nsURI \n \"$nsuri_old\"\nto\n \"$nsuri_new\"\nwithin\n $GIT_ROOT ..."
+
+find $GIT_ROOT -name plugin.xml -exec echo sed -i -e "s!uri=\"${nsuri_old}\"!uri=\"${nsuri_new}\"!g" {} \;
diff --git a/bundles/org.eclipse.emf.ecp.view.model/model/view.ecore b/bundles/org.eclipse.emf.ecp.view.model/model/view.ecore
index 39bbcda..b3362fd 100644
--- a/bundles/org.eclipse.emf.ecp.view.model/model/view.ecore
+++ b/bundles/org.eclipse.emf.ecp.view.model/model/view.ecore
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="model" nsURI="http://org/eclipse/emf/ecp/view/model/170" nsPrefix="org.eclipse.emf.ecp.view.model">
+    xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="model" nsURI="http://org/eclipse/emf/ecp/view/model/1170" nsPrefix="org.eclipse.emf.ecp.view.model">
   <eClassifiers xsi:type="ecore:EClass" name="Diagnostic">
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="diagnostics" upperBound="-1"
         eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"
@@ -43,7 +43,7 @@
         eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EClass"/>
     <eStructuralFeatures xsi:type="ecore:EReference" name="children" upperBound="-1"
         eType="#//ContainedElement" containment="true"/>
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="ecorePath" lowerBound="1"
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="ecorePaths" upperBound="-1"
         eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
     <eStructuralFeatures xsi:type="ecore:EReference" name="loadingProperties" lowerBound="1"
         eType="#//ViewModelProperties" transient="true" containment="true"/>
diff --git a/bundles/org.eclipse.emf.ecp.view.model/model/view.genmodel b/bundles/org.eclipse.emf.ecp.view.model/model/view.genmodel
index c888433..650e757 100644
--- a/bundles/org.eclipse.emf.ecp.view.model/model/view.genmodel
+++ b/bundles/org.eclipse.emf.ecp.view.model/model/view.genmodel
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <genmodel:GenModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
-    xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel" copyrightText="Copyright (c) 2011-2015 EclipseSource Muenchen GmbH and others.&#xD;&#xA;&#xD;&#xA;All rights reserved. This program and the accompanying materials&#xD;&#xA;are made available under the terms of the Eclipse Public License v1.0&#xD;&#xA;which accompanies this distribution, and is available at&#xD;&#xA;http://www.eclipse.org/legal/epl-v10.html&#xD;&#xA;&#xD;&#xA;Contributors:&#xD;&#xA;Eugen Neufeld - initial API and implementation"
+    xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel" copyrightText="Copyright (c) 2011-2018 EclipseSource Muenchen GmbH and others.&#xD;&#xA;&#xD;&#xA;All rights reserved. This program and the accompanying materials&#xD;&#xA;are made available under the terms of the Eclipse Public License v1.0&#xD;&#xA;which accompanies this distribution, and is available at&#xD;&#xA;http://www.eclipse.org/legal/epl-v10.html&#xD;&#xA;&#xD;&#xA;Contributors:&#xD;&#xA;Eugen Neufeld - initial API and implementation"
     modelDirectory="/org.eclipse.emf.ecp.view.model/src" editDirectory="/org.eclipse.emf.ecp.view.model.edit/src"
     editorDirectory="/org.eclipse.emf.ecp.view.model.editor/src" modelPluginID="org.eclipse.emf.ecp.view.model"
     modelName="View" editPluginClass="org.eclipse.emf.ecp.view.spi.model.provider.ViewEditPlugin"
@@ -50,7 +50,7 @@
     <genClasses ecoreClass="view.ecore#//View">
       <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference view.ecore#//View/rootEClass"/>
       <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference view.ecore#//View/children"/>
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute view.ecore#//View/ecorePath"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute view.ecore#//View/ecorePaths"/>
       <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference view.ecore#//View/loadingProperties"/>
     </genClasses>
     <genClasses image="false" ecoreClass="view.ecore#//ContainedElement"/>
diff --git a/bundles/org.eclipse.emf.ecp.view.model/model/view.history b/bundles/org.eclipse.emf.ecp.view.model/model/view.history
index 58a5329..8adbff76 100644
--- a/bundles/org.eclipse.emf.ecp.view.model/model/view.history
+++ b/bundles/org.eclipse.emf.ecp.view.model/model/view.history
@@ -152,12 +152,12 @@
             referenceValue="../../org.eclipse.emf.ecore/model/Ecore.ecore#//EClass"/>
       </changes>
       <changes xsi:type="history:Create" target="view.ecore#//View" referenceName="eStructuralFeatures"
-          element="view.ecore#//View/ecorePath">
-        <changes xsi:type="history:Set" element="view.ecore#//View/ecorePath" featureName="name"
+          element="view.ecore#//View/ecorePaths">
+        <changes xsi:type="history:Set" element="view.ecore#//View/ecorePaths" featureName="name"
             dataValue="ecorePath"/>
-        <changes xsi:type="history:Set" element="view.ecore#//View/ecorePath" featureName="lowerBound"
+        <changes xsi:type="history:Set" element="view.ecore#//View/ecorePaths" featureName="lowerBound"
             dataValue="1" oldDataValue="0"/>
-        <changes xsi:type="history:Set" element="view.ecore#//View/ecorePath" featureName="eType"
+        <changes xsi:type="history:Set" element="view.ecore#//View/ecorePaths" featureName="eType"
             referenceValue="../../org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/>
       </changes>
       <changes xsi:type="history:Create" target="view.ecore#/" referenceName="eClassifiers"
@@ -552,9 +552,7 @@
     <changes xsi:type="history:MigrationChange" migration="org.eclipse.emf.ecp.internal.view.model.edapt._160to170.LabelAlignmentMigration"/>
     <changes xsi:type="history:Set" element="view.ecore#/" featureName="nsURI" dataValue="http://org/eclipse/emf/ecp/view/model/170"
         oldDataValue="http://org/eclipse/emf/ecp/view/model"/>
-  </releases>
-  <releases>
-    <changes xsi:type="history:OperationChange">
+ <changes xsi:type="history:OperationChange">
       <changes xsi:type="history:Create" target="view.ecore#/" referenceName="eClassifiers"
           element="view.ecore#//DateTimeDisplayType">
         <changes xsi:type="history:Set" element="view.ecore#//DateTimeDisplayType"
@@ -682,5 +680,124 @@
     </changes>
     <changes xsi:type="history:Set" element="view.ecore#//Element/uuid" featureName="transient"
         dataValue="true" oldDataValue="false"/>
+    <changes xsi:type="history:OperationChange" xmi:id="_0uersBGJEeiGqtClCQBJBQ">
+      <changes xsi:type="history:Create" xmi:id="_0uersRGJEeiGqtClCQBJBQ" referenceName="eClassifiers">
+        <target href="view.ecore#/"/>
+        <element href="view.ecore#//HasTooltip"/>
+        <changes xsi:type="history:Set" xmi:id="_0uershGJEeiGqtClCQBJBQ" featureName="name" dataValue="HasTooltip">
+          <element href="view.ecore#//HasTooltip"/>
+        </changes>
+        <changes xsi:type="history:Set" xmi:id="_0uersxGJEeiGqtClCQBJBQ" featureName="abstract" dataValue="true" oldDataValue="false">
+          <element href="view.ecore#//HasTooltip"/>
+        </changes>
+      </changes>
+      <operation xmi:id="_0uertBGJEeiGqtClCQBJBQ" name="newClass">
+        <parameters xmi:id="_0uertRGJEeiGqtClCQBJBQ" name="ePackage">
+          <referenceValue xmi:id="_0uerthGJEeiGqtClCQBJBQ">
+            <element href="view.ecore#/"/>
+          </referenceValue>
+        </parameters>
+        <parameters xmi:id="_0uertxGJEeiGqtClCQBJBQ" name="name">
+          <dataValue>HasTooltip</dataValue>
+        </parameters>
+        <parameters xmi:id="_0ueruBGJEeiGqtClCQBJBQ" name="superClasses"/>
+        <parameters xmi:id="_0ueruRGJEeiGqtClCQBJBQ" name="abstr">
+          <dataValue>true</dataValue>
+        </parameters>
+      </operation>
+    </changes>
+    <changes xsi:type="history:OperationChange" xmi:id="_8-FxcBGJEeiGqtClCQBJBQ">
+      <changes xsi:type="history:Create" xmi:id="_8-FxcRGJEeiGqtClCQBJBQ" referenceName="eStructuralFeatures">
+        <target href="view.ecore#//HasTooltip"/>
+        <element href="view.ecore#//HasTooltip/tooltip"/>
+        <changes xsi:type="history:Set" xmi:id="_8-FxchGJEeiGqtClCQBJBQ" featureName="name" dataValue="tooltip">
+          <element href="view.ecore#//HasTooltip/tooltip"/>
+        </changes>
+        <changes xsi:type="history:Set" xmi:id="_8-FxcxGJEeiGqtClCQBJBQ" featureName="eType">
+          <element href="view.ecore#//HasTooltip/tooltip"/>
+          <referenceValue href="../../org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/>
+        </changes>
+      </changes>
+      <operation xmi:id="_8-FxdBGJEeiGqtClCQBJBQ" name="newAttribute">
+        <parameters xmi:id="_8-FxdRGJEeiGqtClCQBJBQ" name="eClass">
+          <referenceValue xmi:id="_8-FxdhGJEeiGqtClCQBJBQ">
+            <element href="view.ecore#//HasTooltip"/>
+          </referenceValue>
+        </parameters>
+        <parameters xmi:id="_8-FxdxGJEeiGqtClCQBJBQ" name="name">
+          <dataValue>tooltip</dataValue>
+        </parameters>
+        <parameters xmi:id="_8-FxeBGJEeiGqtClCQBJBQ" name="type">
+          <referenceValue xmi:id="_8-FxeRGJEeiGqtClCQBJBQ">
+            <element href="../../org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/>
+          </referenceValue>
+        </parameters>
+        <parameters xmi:id="_8-FxehGJEeiGqtClCQBJBQ" name="lowerBound">
+          <dataValue>0</dataValue>
+        </parameters>
+        <parameters xmi:id="_8-FxexGJEeiGqtClCQBJBQ" name="upperBound">
+          <dataValue>1</dataValue>
+        </parameters>
+        <parameters xmi:id="_8-FxfBGJEeiGqtClCQBJBQ" name="defaultValue">
+          <dataValue xsi:nil="true"/>
+        </parameters>
+      </operation>
+    </changes>
+    <changes xsi:type="history:Create" xmi:id="_c5mr0BGKEeiGqtClCQBJBQ" referenceName="eAnnotations">
+      <target href="view.ecore#//Control"/>
+      <element href="view.ecore#//Control/%http:%2F%2Fwww.eclipse.org%2Femf%2F2002%2FEcore%"/>
+    </changes>
+    <changes xsi:type="history:Set" xmi:id="_nZLpEBGKEeiGqtClCQBJBQ" featureName="source" dataValue="http://www.eclipse.org/emf/2002/Ecore">
+      <element href="view.ecore#//Control/%http:%2F%2Fwww.eclipse.org%2Femf%2F2002%2FEcore%"/>
+    </changes>
+    <changes xsi:type="history:Create" xmi:id="_oDg_gBGKEeiGqtClCQBJBQ" referenceName="details">
+      <target href="view.ecore#//Control/%http:%2F%2Fwww.eclipse.org%2Femf%2F2002%2FEcore%"/>
+      <element href="view.ecore#//Control/%http:%2F%2Fwww.eclipse.org%2Femf%2F2002%2FEcore%/@details.0"/>
+    </changes>
+    <changes xsi:type="history:Set" xmi:id="_pJfwIBGKEeiGqtClCQBJBQ" featureName="key" dataValue="constraints">
+      <element href="view.ecore#//Control/%http:%2F%2Fwww.eclipse.org%2Femf%2F2002%2FEcore%/@details.0"/>
+    </changes>
+    <changes xsi:type="history:Set" xmi:id="_qLAQcBGKEeiGqtClCQBJBQ" featureName="value" dataValue="resolveable">
+      <element href="view.ecore#//Control/%http:%2F%2Fwww.eclipse.org%2Femf%2F2002%2FEcore%/@details.0"/>
+    </changes>
   </releases>
+  <releases xmi:id="_JzXWkBGREeiGqtClCQBJBQ" date="2018-02-15T15:42:36.635+0100" label="1170">
+    <changes xsi:type="history:OperationChange" xmi:id="_O174kBGREeiGqtClCQBJBQ">
+      <changes xsi:type="history:Set" xmi:id="_O174kRGREeiGqtClCQBJBQ" featureName="name" dataValue="ecorePaths" oldDataValue="ecorePath">
+        <element href="view.ecore#//View/ecorePaths"/>
+      </changes>
+      <operation xmi:id="_O174khGREeiGqtClCQBJBQ" name="rename">
+        <parameters xmi:id="_O174kxGREeiGqtClCQBJBQ" name="element">
+          <referenceValue xmi:id="_O174lBGREeiGqtClCQBJBQ">
+            <element href="view.ecore#//View/ecorePaths"/>
+          </referenceValue>
+        </parameters>
+        <parameters xmi:id="_O174lRGREeiGqtClCQBJBQ" name="name">
+          <dataValue>ecorePaths</dataValue>
+        </parameters>
+      </operation>
+    </changes>
+    <changes xsi:type="history:OperationChange" xmi:id="_QilAkBGREeiGqtClCQBJBQ">
+      <changes xsi:type="history:Set" xmi:id="_QilAkhGREeiGqtClCQBJBQ" featureName="upperBound" dataValue="-1" oldDataValue="1">
+        <element href="view.ecore#//View/ecorePaths"/>
+      </changes>
+      <operation xmi:id="_QilAkxGREeiGqtClCQBJBQ" name="generalizeAttribute">
+        <parameters xmi:id="_QilAlBGREeiGqtClCQBJBQ" name="attribute">
+          <referenceValue xmi:id="_QilAlRGREeiGqtClCQBJBQ">
+            <element href="view.ecore#//View/ecorePaths"/>
+          </referenceValue>
+        </parameters>
+        <parameters xmi:id="_QilAlhGREeiGqtClCQBJBQ" name="lowerBound">
+          <dataValue>0</dataValue>
+        </parameters>
+        <parameters xmi:id="_QilAlxGREeiGqtClCQBJBQ" name="upperBound">
+          <dataValue>-1</dataValue>
+        </parameters>
+      </operation>
+    </changes>
+    <changes xsi:type="history:Set" xmi:id="_du0pQBJeEeiFxtv3Z8Ad7Q" featureName="nsURI" dataValue="http://org/eclipse/emf/ecp/view/model/1170" oldDataValue="http://org/eclipse/emf/ecp/view/model/170">
+      <element href="view.ecore#/"/>
+    </changes>
+  </releases>
+  <releases xmi:id="_du46sBJeEeiFxtv3Z8Ad7Q"/>
 </history:History>
diff --git a/bundles/org.eclipse.emf.ecp.view.model/plugin.xml b/bundles/org.eclipse.emf.ecp.view.model/plugin.xml
index 67aa4e2..19bb23a 100644
--- a/bundles/org.eclipse.emf.ecp.view.model/plugin.xml
+++ b/bundles/org.eclipse.emf.ecp.view.model/plugin.xml
@@ -7,7 +7,7 @@
          point="org.eclipse.emf.ecore.generated_package">
       <package
             genModel="model/view.genmodel"
-            uri="http://org/eclipse/emf/ecp/view/model/170"
+            uri="http://org/eclipse/emf/ecp/view/model/1170"
             class="org.eclipse.emf.ecp.view.spi.model.VViewPackage">
       </package>
    </extension>
diff --git a/bundles/org.eclipse.emf.ecp.view.model/pom.xml b/bundles/org.eclipse.emf.ecp.view.model/pom.xml
index d2bfe1f..cc30fd9 100644
--- a/bundles/org.eclipse.emf.ecp.view.model/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.view.model/pom.xml
@@ -7,7 +7,7 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
 
diff --git a/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/DateTimeDisplayType.java b/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/DateTimeDisplayType.java
index 8f5303e..b452639 100644
--- a/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/DateTimeDisplayType.java
+++ b/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/DateTimeDisplayType.java
@@ -21,7 +21,7 @@
  * <!-- begin-user-doc -->
  * A representation of the literals of the enumeration '<em><b>Date Time Display Type</b></em>',
  * and utility methods for working with them.
- * 
+ *
  * @since 1.8
  *        <!-- end-user-doc -->
  * @see org.eclipse.emf.ecp.view.spi.model.VViewPackage#getDateTimeDisplayType()
@@ -33,7 +33,7 @@
 	 * The '<em><b>Time And Date</b></em>' literal object.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @see #TIME_AND_DATE_VALUE
 	 * @generated
 	 * @ordered
@@ -44,7 +44,7 @@
 	 * The '<em><b>Time Only</b></em>' literal object.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @see #TIME_ONLY_VALUE
 	 * @generated
 	 * @ordered
@@ -55,7 +55,7 @@
 	 * The '<em><b>Date Only</b></em>' literal object.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @see #DATE_ONLY_VALUE
 	 * @generated
 	 * @ordered
@@ -70,7 +70,7 @@
 	 * there really should be more of a description here...
 	 * </p>
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @see #TIME_AND_DATE
 	 * @model name="TimeAndDate"
 	 * @generated
@@ -86,7 +86,7 @@
 	 * there really should be more of a description here...
 	 * </p>
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @see #TIME_ONLY
 	 * @model name="TimeOnly"
 	 * @generated
@@ -102,7 +102,7 @@
 	 * there really should be more of a description here...
 	 * </p>
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @see #DATE_ONLY
 	 * @model name="DateOnly"
 	 * @generated
@@ -114,7 +114,7 @@
 	 * An array of all the '<em><b>Date Time Display Type</b></em>' enumerators.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	private static final DateTimeDisplayType[] VALUES_ARRAY = new DateTimeDisplayType[] {
@@ -127,7 +127,7 @@
 	 * A public read-only list of all the '<em><b>Date Time Display Type</b></em>' enumerators.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	public static final List<DateTimeDisplayType> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
@@ -136,14 +136,14 @@
 	 * Returns the '<em><b>Date Time Display Type</b></em>' literal with the specified literal value.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @param literal the literal.
 	 * @return the matching enumerator or <code>null</code>.
 	 * @generated
 	 */
 	public static DateTimeDisplayType get(String literal) {
 		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
-			DateTimeDisplayType result = VALUES_ARRAY[i];
+			final DateTimeDisplayType result = VALUES_ARRAY[i];
 			if (result.toString().equals(literal)) {
 				return result;
 			}
@@ -155,14 +155,14 @@
 	 * Returns the '<em><b>Date Time Display Type</b></em>' literal with the specified name.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @param name the name.
 	 * @return the matching enumerator or <code>null</code>.
 	 * @generated
 	 */
 	public static DateTimeDisplayType getByName(String name) {
 		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
-			DateTimeDisplayType result = VALUES_ARRAY[i];
+			final DateTimeDisplayType result = VALUES_ARRAY[i];
 			if (result.getName().equals(name)) {
 				return result;
 			}
@@ -174,7 +174,7 @@
 	 * Returns the '<em><b>Date Time Display Type</b></em>' literal with the specified integer value.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @param value the integer value.
 	 * @return the matching enumerator or <code>null</code>.
 	 * @generated
@@ -194,7 +194,7 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	private final int value;
@@ -202,7 +202,7 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	private final String name;
@@ -210,7 +210,7 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	private final String literal;
@@ -219,7 +219,7 @@
 	 * Only this class can construct instances.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	private DateTimeDisplayType(int value, String name, String literal) {
@@ -231,7 +231,7 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
@@ -242,7 +242,7 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
@@ -253,7 +253,7 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
@@ -265,7 +265,7 @@
 	 * Returns the literal value of the enumerator, which is its string representation.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
diff --git a/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/LabelAlignment.java b/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/LabelAlignment.java
index eb401ec..e77fef1 100644
--- a/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/LabelAlignment.java
+++ b/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/LabelAlignment.java
@@ -45,7 +45,7 @@
 	 * The '<em><b>Left</b></em>' literal object.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @see #LEFT_VALUE
 	 * @generated
 	 * @ordered
@@ -68,7 +68,7 @@
 	 * The '<em><b>None</b></em>' literal object.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @see #NONE_VALUE
 	 * @generated
 	 * @ordered
@@ -100,7 +100,7 @@
 	 * here...
 	 * </p>
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @see #LEFT
 	 * @model name="Left"
 	 * @generated
@@ -133,7 +133,7 @@
 	 * here...
 	 * </p>
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @see #NONE
 	 * @model name="None"
 	 * @generated
@@ -145,7 +145,7 @@
 	 * An array of all the '<em><b>Label Alignment</b></em>' enumerators.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	private static final LabelAlignment[] VALUES_ARRAY = new LabelAlignment[] {
@@ -159,7 +159,7 @@
 	 * A public read-only list of all the '<em><b>Label Alignment</b></em>' enumerators.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	public static final List<LabelAlignment> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
@@ -168,14 +168,14 @@
 	 * Returns the '<em><b>Label Alignment</b></em>' literal with the specified literal value.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @param literal the literal.
 	 * @return the matching enumerator or <code>null</code>.
 	 * @generated
 	 */
 	public static LabelAlignment get(String literal) {
 		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
-			LabelAlignment result = VALUES_ARRAY[i];
+			final LabelAlignment result = VALUES_ARRAY[i];
 			if (result.toString().equals(literal)) {
 				return result;
 			}
@@ -187,14 +187,14 @@
 	 * Returns the '<em><b>Label Alignment</b></em>' literal with the specified name.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @param name the name.
 	 * @return the matching enumerator or <code>null</code>.
 	 * @generated
 	 */
 	public static LabelAlignment getByName(String name) {
 		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
-			LabelAlignment result = VALUES_ARRAY[i];
+			final LabelAlignment result = VALUES_ARRAY[i];
 			if (result.getName().equals(name)) {
 				return result;
 			}
@@ -206,7 +206,7 @@
 	 * Returns the '<em><b>Label Alignment</b></em>' literal with the specified integer value.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @param value the integer value.
 	 * @return the matching enumerator or <code>null</code>.
 	 * @generated
@@ -228,7 +228,7 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	private final int value;
@@ -236,7 +236,7 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	private final String name;
@@ -244,7 +244,7 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	private final String literal;
@@ -253,7 +253,7 @@
 	 * Only this class can construct instances.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	private LabelAlignment(int value, String name, String literal) {
@@ -265,7 +265,7 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
@@ -276,7 +276,7 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
@@ -287,7 +287,7 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
@@ -299,7 +299,7 @@
 	 * Returns the literal value of the enumerator, which is its string representation.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
diff --git a/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/VAttachment.java b/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/VAttachment.java
index 698196c..87d41bf 100644
--- a/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/VAttachment.java
+++ b/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/VAttachment.java
@@ -16,7 +16,7 @@
 /**
  * <!-- begin-user-doc -->
  * A representation of the model object '<em><b>Attachment</b></em>'.
- * 
+ *
  * @since 1.2
  *        <!-- end-user-doc -->
  *
diff --git a/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/VContainedContainer.java b/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/VContainedContainer.java
index 3add75b..03ac089 100644
--- a/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/VContainedContainer.java
+++ b/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/VContainedContainer.java
@@ -14,7 +14,7 @@
 /**
  * <!-- begin-user-doc -->
  * A representation of the model object '<em><b>Composite Collection</b></em>'.
- * 
+ *
  * @since 1.4
  *        <!-- end-user-doc -->
  *
diff --git a/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/VContainedElement.java b/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/VContainedElement.java
index b28d2cf..1d90999 100644
--- a/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/VContainedElement.java
+++ b/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/VContainedElement.java
@@ -14,7 +14,7 @@
 /**
  * <!-- begin-user-doc -->
  * A representation of the model object '<em><b>Composite</b></em>'.
- * 
+ *
  * @since 1.2
  *        <!-- end-user-doc -->
  *
diff --git a/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/VContainer.java b/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/VContainer.java
index 55e8f4f..a254590 100644
--- a/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/VContainer.java
+++ b/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/VContainer.java
@@ -16,7 +16,7 @@
 /**
  * <!-- begin-user-doc -->
  * A representation of the model object '<em><b>Container</b></em>'.
- * 
+ *
  * @since 1.2
  *        <!-- end-user-doc -->
  *
@@ -41,7 +41,7 @@
 	 * a description here...
 	 * </p>
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @return the value of the '<em>Children</em>' containment reference list.
 	 * @see org.eclipse.emf.ecp.view.spi.model.VViewPackage#getContainer_Children()
 	 * @model containment="true"
diff --git a/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/VControl.java b/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/VControl.java
index fd5cc08..dffc72d 100644
--- a/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/VControl.java
+++ b/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/VControl.java
@@ -45,7 +45,7 @@
 	 * more of a description here...
 	 * </p>
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @return the value of the '<em>Domain Model Reference</em>' containment reference.
 	 * @see #setDomainModelReference(VDomainModelReference)
 	 * @see org.eclipse.emf.ecp.view.spi.model.VViewPackage#getControl_DomainModelReference()
@@ -59,7 +59,7 @@
 	 * Model Reference</em>}' containment reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @param value the new value of the '<em>Domain Model Reference</em>' containment reference.
 	 * @see #getDomainModelReference()
 	 * @generated
@@ -76,7 +76,7 @@
 	 * description here...
 	 * </p>
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @return the value of the '<em>Label Alignment</em>' attribute.
 	 * @see org.eclipse.emf.ecp.view.spi.model.LabelAlignment
 	 * @see #setLabelAlignment(LabelAlignment)
@@ -91,7 +91,7 @@
 	 * Alignment</em>}' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @param value the new value of the '<em>Label Alignment</em>' attribute.
 	 * @see org.eclipse.emf.ecp.view.spi.model.LabelAlignment
 	 * @see #getLabelAlignment()
diff --git a/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/VDateTimeDisplayAttachment.java b/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/VDateTimeDisplayAttachment.java
index 2ec6124..24b823d 100644
--- a/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/VDateTimeDisplayAttachment.java
+++ b/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/VDateTimeDisplayAttachment.java
@@ -14,7 +14,7 @@
 /**
  * <!-- begin-user-doc -->
  * A representation of the model object '<em><b>Date Time Display Attachment</b></em>'.
- * 
+ *
  * @since 1.8
  *        <!-- end-user-doc -->
  *
@@ -40,7 +40,7 @@
 	 * there really should be more of a description here...
 	 * </p>
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @return the value of the '<em>Display Type</em>' attribute.
 	 * @see org.eclipse.emf.ecp.view.spi.model.DateTimeDisplayType
 	 * @see #setDisplayType(DateTimeDisplayType)
@@ -55,7 +55,7 @@
 	 * <em>Display Type</em>}' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @param value the new value of the '<em>Display Type</em>' attribute.
 	 * @see org.eclipse.emf.ecp.view.spi.model.DateTimeDisplayType
 	 * @see #getDisplayType()
diff --git a/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/VDiagnostic.java b/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/VDiagnostic.java
index cb2d59c..fa24ac7 100644
--- a/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/VDiagnostic.java
+++ b/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/VDiagnostic.java
@@ -21,7 +21,7 @@
 /**
  * <!-- begin-user-doc -->
  * A representation of the model object '<em><b>VDiagnostic</b></em>'.
- * 
+ *
  * @since 1.2
  * @noimplement This interface is not intended to be implemented by clients.
  *              <!-- end-user-doc -->
@@ -47,7 +47,7 @@
 	 * description here...
 	 * </p>
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @return the value of the '<em>Diagnostics</em>' attribute list.
 	 * @see org.eclipse.emf.ecp.view.spi.model.VViewPackage#getDiagnostic_Diagnostics()
 	 * @model transient="true"
diff --git a/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/VElement.java b/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/VElement.java
index 7482e7f..689d137 100644
--- a/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/VElement.java
+++ b/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/VElement.java
@@ -49,7 +49,7 @@
 	 * If the meaning of the '<em>Name</em>' attribute isn't clear, there really should be more of a description here...
 	 * </p>
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @return the value of the '<em>Name</em>' attribute.
 	 * @see #setName(String)
 	 * @see org.eclipse.emf.ecp.view.spi.model.VViewPackage#getElement_Name()
@@ -62,7 +62,7 @@
 	 * Sets the value of the '{@link org.eclipse.emf.ecp.view.spi.model.VElement#getName <em>Name</em>}' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @param value the new value of the '<em>Name</em>' attribute.
 	 * @see #getName()
 	 * @generated
@@ -108,7 +108,7 @@
 	 * here...
 	 * </p>
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @return the value of the '<em>Visible</em>' attribute.
 	 * @see #setVisible(boolean)
 	 * @see org.eclipse.emf.ecp.view.spi.model.VViewPackage#getElement_Visible()
@@ -121,7 +121,7 @@
 	 * Sets the value of the '{@link org.eclipse.emf.ecp.view.spi.model.VElement#isVisible <em>Visible</em>}' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @param value the new value of the '<em>Visible</em>' attribute.
 	 * @see #isVisible()
 	 * @generated
@@ -137,7 +137,7 @@
 	 * here...
 	 * </p>
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @return the value of the '<em>Enabled</em>' attribute.
 	 * @see #setEnabled(boolean)
 	 * @see org.eclipse.emf.ecp.view.spi.model.VViewPackage#getElement_Enabled()
@@ -150,7 +150,7 @@
 	 * Sets the value of the '{@link org.eclipse.emf.ecp.view.spi.model.VElement#isEnabled <em>Enabled</em>}' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @param value the new value of the '<em>Enabled</em>' attribute.
 	 * @see #isEnabled()
 	 * @generated
@@ -166,7 +166,7 @@
 	 * here...
 	 * </p>
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @return the value of the '<em>Readonly</em>' attribute.
 	 * @see #setReadonly(boolean)
 	 * @see org.eclipse.emf.ecp.view.spi.model.VViewPackage#getElement_Readonly()
@@ -180,7 +180,7 @@
 	 * attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @param value the new value of the '<em>Readonly</em>' attribute.
 	 * @see #isReadonly()
 	 * @generated
@@ -195,7 +195,7 @@
 	 * description here...
 	 * </p>
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @return the value of the '<em>Diagnostic</em>' containment reference.
 	 * @see #setDiagnostic(VDiagnostic)
 	 * @see org.eclipse.emf.ecp.view.spi.model.VViewPackage#getElement_Diagnostic()
@@ -209,7 +209,7 @@
 	 * containment reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @param value the new value of the '<em>Diagnostic</em>' containment reference.
 	 * @see #getDiagnostic()
 	 * @generated
@@ -225,7 +225,7 @@
 	 * of a description here...
 	 * </p>
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @return the value of the '<em>Attachments</em>' containment reference list.
 	 * @see org.eclipse.emf.ecp.view.spi.model.VViewPackage#getElement_Attachments()
 	 * @model containment="true"
@@ -265,7 +265,7 @@
 
 	/**
 	 * Returns true if this element and all parent elements are visible.
-	 * 
+	 *
 	 * @since 1.12
 	 * @return true if this element and all parent elements are visible
 	 */
@@ -273,7 +273,7 @@
 
 	/**
 	 * Returns true if this element and all parent elements are enabled.
-	 * 
+	 *
 	 * @since 1.12
 	 * @return true if this element and all parent elements are enabled
 	 */
@@ -281,7 +281,7 @@
 
 	/**
 	 * Returns true if this element or any parent element is readonly.
-	 * 
+	 *
 	 * @since 1.12
 	 * @return true if this element or any parent element is readonly
 	 */
diff --git a/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/VFeaturePathDomainModelReference.java b/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/VFeaturePathDomainModelReference.java
index 2633533..e1c702f 100644
--- a/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/VFeaturePathDomainModelReference.java
+++ b/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/VFeaturePathDomainModelReference.java
@@ -18,7 +18,7 @@
 /**
  * <!-- begin-user-doc -->
  * A representation of the model object '<em><b>VFeature Path Domain Model Reference</b></em>'.
- * 
+ *
  * @since 1.2
  *        <!-- end-user-doc -->
  *
@@ -46,7 +46,7 @@
 	 * description here...
 	 * </p>
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @return the value of the '<em>Domain Model EFeature</em>' reference.
 	 * @see #setDomainModelEFeature(EStructuralFeature)
 	 * @see org.eclipse.emf.ecp.view.spi.model.VViewPackage#getFeaturePathDomainModelReference_DomainModelEFeature()
@@ -61,7 +61,7 @@
 	 * Model EFeature</em>}' reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @param value the new value of the '<em>Domain Model EFeature</em>' reference.
 	 * @see #getDomainModelEFeature()
 	 * @generated
@@ -77,7 +77,7 @@
 	 * more of a description here...
 	 * </p>
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @return the value of the '<em>Domain Model EReference Path</em>' reference list.
 	 * @see org.eclipse.emf.ecp.view.spi.model.VViewPackage#getFeaturePathDomainModelReference_DomainModelEReferencePath()
 	 * @model
diff --git a/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/VHasTooltip.java b/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/VHasTooltip.java
index 529e861..5f6a7a6 100644
--- a/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/VHasTooltip.java
+++ b/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/VHasTooltip.java
@@ -16,19 +16,21 @@
 /**
  * <!-- begin-user-doc -->
  * A representation of the model object '<em><b>Has Tooltip</b></em>'.
- * <!-- end-user-doc -->
  *
- * <p>
- * The following features are supported:
- * </p>
- * <ul>
- * <li>{@link org.eclipse.emf.ecp.view.spi.model.VHasTooltip#getTooltip <em>Tooltip</em>}</li>
- * </ul>
+ * @since 1.13
+ *
+ *        <!-- end-user-doc -->
+ *
+ *        <p>
+ *        The following features are supported:
+ *        </p>
+ *        <ul>
+ *        <li>{@link org.eclipse.emf.ecp.view.spi.model.VHasTooltip#getTooltip <em>Tooltip</em>}</li>
+ *        </ul>
  *
  * @see org.eclipse.emf.ecp.view.spi.model.VViewPackage#getHasTooltip()
  * @model interface="true" abstract="true"
  * @generated
- * @since 1.13
  */
 public interface VHasTooltip extends EObject {
 	/**
diff --git a/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/VView.java b/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/VView.java
index e25dad9..0088665 100644
--- a/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/VView.java
+++ b/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/VView.java
@@ -1,5 +1,5 @@
 /**
- * Copyright (c) 2011-2013 EclipseSource Muenchen GmbH and others.
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH and others.
  *
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
@@ -28,7 +28,7 @@
  *        <ul>
  *        <li>{@link org.eclipse.emf.ecp.view.spi.model.VView#getRootEClass <em>Root EClass</em>}</li>
  *        <li>{@link org.eclipse.emf.ecp.view.spi.model.VView#getChildren <em>Children</em>}</li>
- *        <li>{@link org.eclipse.emf.ecp.view.spi.model.VView#getEcorePath <em>Ecore Path</em>}</li>
+ *        <li>{@link org.eclipse.emf.ecp.view.spi.model.VView#getEcorePaths <em>Ecore Paths</em>}</li>
  *        <li>{@link org.eclipse.emf.ecp.view.spi.model.VView#getLoadingProperties <em>Loading Properties</em>}</li>
  *        </ul>
  *
@@ -45,7 +45,7 @@
 	 * here...
 	 * </p>
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @return the value of the '<em>Root EClass</em>' reference.
 	 * @see #setRootEClass(EClass)
 	 * @see org.eclipse.emf.ecp.view.spi.model.VViewPackage#getView_RootEClass()
@@ -59,7 +59,7 @@
 	 * reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @param value the new value of the '<em>Root EClass</em>' reference.
 	 * @see #getRootEClass()
 	 * @generated
@@ -75,7 +75,7 @@
 	 * a description here...
 	 * </p>
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @return the value of the '<em>Children</em>' containment reference list.
 	 * @see org.eclipse.emf.ecp.view.spi.model.VViewPackage#getView_Children()
 	 * @model containment="true"
@@ -84,35 +84,21 @@
 	EList<VContainedElement> getChildren();
 
 	/**
-	 * Returns the value of the '<em><b>Ecore Path</b></em>' attribute.
+	 * Returns the value of the '<em><b>Ecore Paths</b></em>' attribute list.
+	 * The list contents are of type {@link java.lang.String}.
 	 * <!-- begin-user-doc -->
 	 * <p>
-	 * If the meaning of the '<em>Ecore Path</em>' attribute isn't clear, there really should be more of a description
-	 * here...
+	 * If the meaning of the '<em>Ecore Paths</em>' attribute list isn't clear,
+	 * there really should be more of a description here...
 	 * </p>
+	 * <!-- end-user-doc -->
 	 *
-	 * @since 1.3
-	 *        <!-- end-user-doc -->
-	 * @return the value of the '<em>Ecore Path</em>' attribute.
-	 * @see #setEcorePath(String)
-	 * @see org.eclipse.emf.ecp.view.spi.model.VViewPackage#getView_EcorePath()
-	 * @model required="true"
+	 * @return the value of the '<em>Ecore Paths</em>' attribute list.
+	 * @see org.eclipse.emf.ecp.view.spi.model.VViewPackage#getView_EcorePaths()
+	 * @model
 	 * @generated
 	 */
-	String getEcorePath();
-
-	/**
-	 * Sets the value of the '{@link org.eclipse.emf.ecp.view.spi.model.VView#getEcorePath <em>Ecore Path</em>}'
-	 * attribute.
-	 * <!-- begin-user-doc -->
-	 *
-	 * @since 1.3
-	 *        <!-- end-user-doc -->
-	 * @param value the new value of the '<em>Ecore Path</em>' attribute.
-	 * @see #getEcorePath()
-	 * @generated
-	 */
-	void setEcorePath(String value);
+	EList<String> getEcorePaths();
 
 	/**
 	 * Returns the value of the '<em><b>Loading Properties</b></em>' containment reference.
diff --git a/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/VViewFactory.java b/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/VViewFactory.java
index 09d4ebb..53f87f2 100644
--- a/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/VViewFactory.java
+++ b/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/VViewFactory.java
@@ -29,7 +29,7 @@
 	 * The singleton instance of the factory.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	VViewFactory eINSTANCE = org.eclipse.emf.ecp.view.spi.model.impl.VViewFactoryImpl.init();
@@ -38,7 +38,7 @@
 	 * Returns a new object of class '<em>Diagnostic</em>'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @return a new object of class '<em>Diagnostic</em>'.
 	 * @generated
 	 */
@@ -48,7 +48,7 @@
 	 * Returns a new object of class '<em>View</em>'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @return a new object of class '<em>View</em>'.
 	 * @generated
 	 */
@@ -58,7 +58,7 @@
 	 * Returns a new object of class '<em>Control</em>'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @return a new object of class '<em>Control</em>'.
 	 * @generated
 	 */
@@ -90,7 +90,7 @@
 	 * Returns a new object of class '<em>Feature Path Domain Model Reference</em>'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @return a new object of class '<em>Feature Path Domain Model Reference</em>'.
 	 * @generated
 	 */
@@ -100,7 +100,7 @@
 	 * Returns the package supported by this factory.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @return the package supported by this factory.
 	 * @generated
 	 */
diff --git a/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/VViewModelLoadingProperties.java b/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/VViewModelLoadingProperties.java
index e68242d..106ed02 100644
--- a/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/VViewModelLoadingProperties.java
+++ b/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/VViewModelLoadingProperties.java
@@ -45,11 +45,11 @@
 	 * there really should be more of a description here...
 	 * </p>
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @return the value of the '<em>Inheritable Properties</em>' map.
 	 * @see org.eclipse.emf.ecp.view.spi.model.VViewPackage#getViewModelLoadingProperties_InheritableProperties()
-	 * @model mapType="org.eclipse.emf.ecp.view.spi.model.StringToObjectMapEntry<org.eclipse.emf.ecore.EString,
-	 *        org.eclipse.emf.ecore.EJavaObject>"
+	 * @model mapType="org.eclipse.emf.ecp.view.spi.model.StringToObjectMapEntry&lt;org.eclipse.emf.ecore.EString,
+	 *        org.eclipse.emf.ecore.EJavaObject&gt;"
 	 * @generated
 	 */
 	EMap<String, Object> getInheritableProperties();
@@ -64,11 +64,11 @@
 	 * there really should be more of a description here...
 	 * </p>
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @return the value of the '<em>Non Inheritable Properties</em>' map.
 	 * @see org.eclipse.emf.ecp.view.spi.model.VViewPackage#getViewModelLoadingProperties_NonInheritableProperties()
-	 * @model mapType="org.eclipse.emf.ecp.view.spi.model.StringToObjectMapEntry<org.eclipse.emf.ecore.EString,
-	 *        org.eclipse.emf.ecore.EJavaObject>"
+	 * @model mapType="org.eclipse.emf.ecp.view.spi.model.StringToObjectMapEntry&lt;org.eclipse.emf.ecore.EString,
+	 *        org.eclipse.emf.ecore.EJavaObject&gt;"
 	 * @generated
 	 */
 	EMap<String, Object> getNonInheritableProperties();
diff --git a/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/VViewPackage.java b/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/VViewPackage.java
index 4c8511c..6b40c33 100644
--- a/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/VViewPackage.java
+++ b/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/VViewPackage.java
@@ -1,4 +1,3 @@
-// CHECKSTYLE.OFF: FileLength|RegexpHeader
 /**
  * Copyright (c) 2011-2015 EclipseSource Muenchen GmbH and others.
  *
@@ -10,6 +9,7 @@
  * Contributors:
  * Eugen Neufeld - initial API and implementation
  */
+// CHECKSTYLE.OFF: FileLength
 package org.eclipse.emf.ecp.view.spi.model;
 
 import org.eclipse.emf.ecore.EAttribute;
@@ -55,7 +55,17 @@
 	 *
 	 * @generated
 	 */
-	String eNS_URI = "http://org/eclipse/emf/ecp/view/model/170"; //$NON-NLS-1$
+	String eNS_URI = "http://org/eclipse/emf/ecp/view/model/1170"; //$NON-NLS-1$
+
+	/**
+	 * The package namespace URI of releases [1.7.0,1.17.0[.
+	 *
+	 * @since 1.17
+	 *
+	 * @generated NOT
+	 */
+	String NS_URI_170 = "http://org/eclipse/emf/ecp/view/model/170"; //$NON-NLS-1$
+	// end of custom code
 
 	/**
 	 * The package namespace name.
@@ -443,15 +453,16 @@
 	int VIEW__CHILDREN = ELEMENT_FEATURE_COUNT + 1;
 
 	/**
-	 * The feature id for the '<em><b>Ecore Path</b></em>' attribute.
+	 * The feature id for the '<em><b>Ecore Paths</b></em>' attribute list.
 	 * <!-- begin-user-doc -->
 	 *
-	 * @since 1.3
+	 * @since 1.17
 	 *        <!-- end-user-doc -->
+	 *
 	 * @generated
 	 * @ordered
 	 */
-	int VIEW__ECORE_PATH = ELEMENT_FEATURE_COUNT + 2;
+	int VIEW__ECORE_PATHS = ELEMENT_FEATURE_COUNT + 2;
 
 	/**
 	 * The feature id for the '<em><b>Loading Properties</b></em>' containment reference.
@@ -1082,10 +1093,9 @@
 	/**
 	 * The meta object id for the '{@link org.eclipse.emf.ecp.view.spi.model.VHasTooltip <em>Has Tooltip</em>}' class.
 	 * <!-- begin-user-doc -->
-	 * 
+	 *
 	 * @since 1.13
 	 *        <!-- end-user-doc -->
-	 *
 	 * @see org.eclipse.emf.ecp.view.spi.model.VHasTooltip
 	 * @see org.eclipse.emf.ecp.view.spi.model.impl.VViewPackageImpl#getHasTooltip()
 	 * @generated
@@ -1095,10 +1105,9 @@
 	/**
 	 * The feature id for the '<em><b>Tooltip</b></em>' attribute.
 	 * <!-- begin-user-doc -->
-	 * 
+	 *
 	 * @since 1.13
 	 *        <!-- end-user-doc -->
-	 *
 	 * @generated
 	 * @ordered
 	 */
@@ -1107,10 +1116,9 @@
 	/**
 	 * The number of structural features of the '<em>Has Tooltip</em>' class.
 	 * <!-- begin-user-doc -->
-	 * 
+	 *
 	 * @since 1.13
 	 *        <!-- end-user-doc -->
-	 *
 	 * @generated
 	 * @ordered
 	 */
@@ -1332,18 +1340,20 @@
 	EReference getView_Children();
 
 	/**
-	 * Returns the meta object for the attribute '{@link org.eclipse.emf.ecp.view.spi.model.VView#getEcorePath <em>Ecore
-	 * Path</em>}'.
+	 * Returns the meta object for the attribute list '{@link org.eclipse.emf.ecp.view.spi.model.VView#getEcorePaths
+	 * <em>Ecore Paths</em>}'.
 	 * <!-- begin-user-doc -->
 	 *
-	 * @since 1.3
+	 * @since 1.17
 	 *        <!-- end-user-doc -->
-	 * @return the meta object for the attribute '<em>Ecore Path</em>'.
-	 * @see org.eclipse.emf.ecp.view.spi.model.VView#getEcorePath()
+	 *
+	 * @return the meta object for the attribute list '<em>Ecore Paths</em>'.
+	 * @see org.eclipse.emf.ecp.view.spi.model.VView#getEcorePaths()
 	 * @see #getView()
 	 * @generated
+	 *
 	 */
-	EAttribute getView_EcorePath();
+	EAttribute getView_EcorePaths();
 
 	/**
 	 * Returns the meta object for the containment reference
@@ -1481,10 +1491,9 @@
 	/**
 	 * Returns the meta object for class '{@link org.eclipse.emf.ecp.view.spi.model.VHasTooltip <em>Has Tooltip</em>}'.
 	 * <!-- begin-user-doc -->
-	 * 
+	 *
 	 * @since 1.13
 	 *        <!-- end-user-doc -->
-	 *
 	 * @return the meta object for class '<em>Has Tooltip</em>'.
 	 * @see org.eclipse.emf.ecp.view.spi.model.VHasTooltip
 	 * @generated
@@ -1495,10 +1504,9 @@
 	 * Returns the meta object for the attribute '{@link org.eclipse.emf.ecp.view.spi.model.VHasTooltip#getTooltip
 	 * <em>Tooltip</em>}'.
 	 * <!-- begin-user-doc -->
-	 * 
+	 *
 	 * @since 1.13
 	 *        <!-- end-user-doc -->
-	 *
 	 * @return the meta object for the attribute '<em>Tooltip</em>'.
 	 * @see org.eclipse.emf.ecp.view.spi.model.VHasTooltip#getTooltip()
 	 * @see #getHasTooltip()
@@ -1877,14 +1885,15 @@
 		EReference VIEW__CHILDREN = eINSTANCE.getView_Children();
 
 		/**
-		 * The meta object literal for the '<em><b>Ecore Path</b></em>' attribute feature.
+		 * The meta object literal for the '<em><b>Ecore Paths</b></em>' attribute list feature.
 		 * <!-- begin-user-doc -->
 		 *
-		 * @since 1.3
+		 * @since 1.17
 		 *        <!-- end-user-doc -->
+		 *
 		 * @generated
 		 */
-		EAttribute VIEW__ECORE_PATH = eINSTANCE.getView_EcorePath();
+		EAttribute VIEW__ECORE_PATHS = eINSTANCE.getView_EcorePaths();
 
 		/**
 		 * The meta object literal for the '<em><b>Loading Properties</b></em>' containment reference feature.
@@ -2006,10 +2015,9 @@
 		 * The meta object literal for the '{@link org.eclipse.emf.ecp.view.spi.model.VHasTooltip <em>Has Tooltip</em>}'
 		 * class.
 		 * <!-- begin-user-doc -->
-		 * 
+		 *
 		 * @since 1.13
 		 *        <!-- end-user-doc -->
-		 *
 		 * @see org.eclipse.emf.ecp.view.spi.model.VHasTooltip
 		 * @see org.eclipse.emf.ecp.view.spi.model.impl.VViewPackageImpl#getHasTooltip()
 		 * @generated
@@ -2019,10 +2027,9 @@
 		/**
 		 * The meta object literal for the '<em><b>Tooltip</b></em>' attribute feature.
 		 * <!-- begin-user-doc -->
-		 * 
+		 *
 		 * @since 1.13
 		 *        <!-- end-user-doc -->
-		 *
 		 * @generated
 		 */
 		EAttribute HAS_TOOLTIP__TOOLTIP = eINSTANCE.getHasTooltip_Tooltip();
diff --git a/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/impl/VAttachmentImpl.java b/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/impl/VAttachmentImpl.java
index 729ed96..7c3c665 100644
--- a/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/impl/VAttachmentImpl.java
+++ b/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/impl/VAttachmentImpl.java
@@ -19,7 +19,7 @@
 /**
  * <!-- begin-user-doc -->
  * An implementation of the model object '<em><b>Attachment</b></em>'.
- * 
+ *
  * @since 1.2
  *        <!-- end-user-doc -->
  *
@@ -29,7 +29,7 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	protected VAttachmentImpl() {
@@ -39,7 +39,7 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
diff --git a/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/impl/VContainedContainerImpl.java b/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/impl/VContainedContainerImpl.java
index 7ce5d47..bb29471 100644
--- a/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/impl/VContainedContainerImpl.java
+++ b/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/impl/VContainedContainerImpl.java
@@ -27,7 +27,7 @@
 /**
  * <!-- begin-user-doc -->
  * An implementation of the model object '<em><b>Composite Collection</b></em>'.
- * 
+ *
  * @since 1.4
  *        <!-- end-user-doc -->
  *        <p>
@@ -44,7 +44,7 @@
 	 * The cached value of the '{@link #getChildren() <em>Children</em>}' containment reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @see #getChildren()
 	 * @generated
 	 * @ordered
@@ -54,7 +54,7 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	protected VContainedContainerImpl() {
@@ -64,7 +64,7 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
@@ -75,7 +75,7 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
@@ -90,7 +90,7 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
@@ -105,7 +105,7 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
@@ -120,7 +120,7 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@SuppressWarnings("unchecked")
@@ -138,7 +138,7 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
@@ -154,7 +154,7 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
@@ -169,7 +169,7 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
@@ -188,7 +188,7 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
diff --git a/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/impl/VContainedElementImpl.java b/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/impl/VContainedElementImpl.java
index d7e8b6e..1114df0 100644
--- a/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/impl/VContainedElementImpl.java
+++ b/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/impl/VContainedElementImpl.java
@@ -28,7 +28,7 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	protected VContainedElementImpl() {
@@ -38,7 +38,7 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
diff --git a/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/impl/VContainerImpl.java b/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/impl/VContainerImpl.java
index 3ffae10..394dc33 100644
--- a/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/impl/VContainerImpl.java
+++ b/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/impl/VContainerImpl.java
@@ -26,7 +26,7 @@
 /**
  * <!-- begin-user-doc -->
  * An implementation of the model object '<em><b>Container</b></em>'.
- * 
+ *
  * @since 1.2
  *        <!-- end-user-doc -->
  *        <p>
@@ -43,7 +43,7 @@
 	 * The cached value of the '{@link #getChildren() <em>Children</em>}' containment reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @see #getChildren()
 	 * @generated
 	 * @ordered
@@ -53,7 +53,7 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	protected VContainerImpl() {
@@ -63,7 +63,7 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
@@ -74,7 +74,7 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
@@ -89,7 +89,7 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
@@ -104,7 +104,7 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
@@ -119,7 +119,7 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@SuppressWarnings("unchecked")
@@ -137,7 +137,7 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
@@ -153,7 +153,7 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
diff --git a/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/impl/VControlImpl.java b/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/impl/VControlImpl.java
index 349c18f..9166c2d 100644
--- a/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/impl/VControlImpl.java
+++ b/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/impl/VControlImpl.java
@@ -49,7 +49,7 @@
 	 * The default value of the '{@link #getLabelAlignment() <em>Label Alignment</em>}' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @see #getLabelAlignment()
 	 * @generated
 	 * @ordered
@@ -60,7 +60,7 @@
 	 * The cached value of the '{@link #getLabelAlignment() <em>Label Alignment</em>}' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @see #getLabelAlignment()
 	 * @generated
 	 * @ordered
@@ -72,7 +72,7 @@
 	 * reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @see #getDomainModelReference()
 	 * @generated
 	 * @ordered
@@ -82,7 +82,7 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	protected VControlImpl() {
@@ -92,7 +92,7 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
@@ -103,7 +103,7 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
@@ -114,20 +114,21 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	public NotificationChain basicSetDomainModelReference(VDomainModelReference newDomainModelReference,
 		NotificationChain msgs) {
-		VDomainModelReference oldDomainModelReference = domainModelReference;
+		final VDomainModelReference oldDomainModelReference = domainModelReference;
 		domainModelReference = newDomainModelReference;
 		if (eNotificationRequired()) {
-			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET,
+			final ENotificationImpl notification = new ENotificationImpl(this, Notification.SET,
 				VViewPackage.CONTROL__DOMAIN_MODEL_REFERENCE, oldDomainModelReference, newDomainModelReference);
-			if (msgs == null)
+			if (msgs == null) {
 				msgs = notification;
-			else
+			} else {
 				msgs.add(notification);
+			}
 		}
 		return msgs;
 	}
@@ -135,31 +136,35 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
 	public void setDomainModelReference(VDomainModelReference newDomainModelReference) {
 		if (newDomainModelReference != domainModelReference) {
 			NotificationChain msgs = null;
-			if (domainModelReference != null)
+			if (domainModelReference != null) {
 				msgs = ((InternalEObject) domainModelReference).eInverseRemove(this,
 					EOPPOSITE_FEATURE_BASE - VViewPackage.CONTROL__DOMAIN_MODEL_REFERENCE, null, msgs);
-			if (newDomainModelReference != null)
+			}
+			if (newDomainModelReference != null) {
 				msgs = ((InternalEObject) newDomainModelReference).eInverseAdd(this,
 					EOPPOSITE_FEATURE_BASE - VViewPackage.CONTROL__DOMAIN_MODEL_REFERENCE, null, msgs);
+			}
 			msgs = basicSetDomainModelReference(newDomainModelReference, msgs);
-			if (msgs != null)
+			if (msgs != null) {
 				msgs.dispatch();
-		} else if (eNotificationRequired())
+			}
+		} else if (eNotificationRequired()) {
 			eNotify(new ENotificationImpl(this, Notification.SET, VViewPackage.CONTROL__DOMAIN_MODEL_REFERENCE,
 				newDomainModelReference, newDomainModelReference));
+		}
 	}
 
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
@@ -174,7 +179,7 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
@@ -185,22 +190,23 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
 	public void setLabelAlignment(LabelAlignment newLabelAlignment) {
-		LabelAlignment oldLabelAlignment = labelAlignment;
+		final LabelAlignment oldLabelAlignment = labelAlignment;
 		labelAlignment = newLabelAlignment == null ? LABEL_ALIGNMENT_EDEFAULT : newLabelAlignment;
-		if (eNotificationRequired())
+		if (eNotificationRequired()) {
 			eNotify(new ENotificationImpl(this, Notification.SET, VViewPackage.CONTROL__LABEL_ALIGNMENT,
 				oldLabelAlignment, labelAlignment));
+		}
 	}
 
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
@@ -217,7 +223,7 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
@@ -236,7 +242,7 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
@@ -255,7 +261,7 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
@@ -272,15 +278,16 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
 	public String toString() {
-		if (eIsProxy())
+		if (eIsProxy()) {
 			return super.toString();
+		}
 
-		StringBuffer result = new StringBuffer(super.toString());
+		final StringBuffer result = new StringBuffer(super.toString());
 		result.append(" (labelAlignment: "); //$NON-NLS-1$
 		result.append(labelAlignment);
 		result.append(')');
diff --git a/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/impl/VDateTimeDisplayAttachmentImpl.java b/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/impl/VDateTimeDisplayAttachmentImpl.java
index deaf346..c56a1ca 100644
--- a/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/impl/VDateTimeDisplayAttachmentImpl.java
+++ b/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/impl/VDateTimeDisplayAttachmentImpl.java
@@ -21,7 +21,7 @@
 /**
  * <!-- begin-user-doc -->
  * An implementation of the model object '<em><b>Date Time Display Attachment</b></em>'.
- * 
+ *
  * @since 1.8
  *        <!-- end-user-doc -->
  *        <p>
@@ -39,7 +39,7 @@
 	 * The default value of the '{@link #getDisplayType() <em>Display Type</em>}' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @see #getDisplayType()
 	 * @generated
 	 * @ordered
@@ -50,7 +50,7 @@
 	 * The cached value of the '{@link #getDisplayType() <em>Display Type</em>}' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @see #getDisplayType()
 	 * @generated
 	 * @ordered
@@ -60,7 +60,7 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	protected VDateTimeDisplayAttachmentImpl() {
@@ -70,7 +70,7 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
@@ -81,7 +81,7 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
@@ -92,22 +92,23 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
 	public void setDisplayType(DateTimeDisplayType newDisplayType) {
-		DateTimeDisplayType oldDisplayType = displayType;
+		final DateTimeDisplayType oldDisplayType = displayType;
 		displayType = newDisplayType == null ? DISPLAY_TYPE_EDEFAULT : newDisplayType;
-		if (eNotificationRequired())
+		if (eNotificationRequired()) {
 			eNotify(new ENotificationImpl(this, Notification.SET,
 				VViewPackage.DATE_TIME_DISPLAY_ATTACHMENT__DISPLAY_TYPE, oldDisplayType, displayType));
+		}
 	}
 
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
@@ -122,7 +123,7 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
@@ -138,7 +139,7 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
@@ -154,7 +155,7 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
@@ -169,15 +170,16 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
 	public String toString() {
-		if (eIsProxy())
+		if (eIsProxy()) {
 			return super.toString();
+		}
 
-		StringBuffer result = new StringBuffer(super.toString());
+		final StringBuffer result = new StringBuffer(super.toString());
 		result.append(" (displayType: "); //$NON-NLS-1$
 		result.append(displayType);
 		result.append(')');
diff --git a/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/impl/VDiagnosticImpl.java b/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/impl/VDiagnosticImpl.java
index 5bd96f6..176c162 100644
--- a/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/impl/VDiagnosticImpl.java
+++ b/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/impl/VDiagnosticImpl.java
@@ -54,6 +54,44 @@
 // TODO performance
 public class VDiagnosticImpl extends EObjectImpl implements VDiagnostic {
 	/**
+	 * @generated NOT
+	 */
+	private final class DiagnosticAdapter extends AdapterImpl {
+		@SuppressWarnings("unchecked")
+		@Override
+		public void notifyChanged(Notification msg) {
+			super.notifyChanged(msg);
+			if (msg.getFeature() != VViewPackage.eINSTANCE.getDiagnostic_Diagnostics()) {
+				return;
+			}
+			switch (msg.getEventType()) {
+			case Notification.ADD:
+				addNewDiagnostic((Diagnostic) msg.getNewValue());
+				break;
+			case Notification.ADD_MANY:
+				if (msg.getNewValue() != null) {
+					for (final Diagnostic diagnostic : (Collection<Diagnostic>) msg.getNewValue()) {
+						addNewDiagnostic(diagnostic);
+					}
+				}
+				break;
+			case Notification.REMOVE:
+				removeOldDiagnostic((Diagnostic) msg.getOldValue());
+				break;
+			case Notification.REMOVE_MANY:
+				if (msg.getOldValue() != null) {
+					for (final Diagnostic diagnostic : (Collection<Diagnostic>) msg.getOldValue()) {
+						removeOldDiagnostic(diagnostic);
+					}
+				}
+				break;
+			default:
+				break;
+			}
+		}
+	}
+
+	/**
 	 * The cached value of the '{@link #getDiagnostics() <em>Diagnostics</em>}' attribute list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -69,50 +107,11 @@
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 *
-	 * @generated
+	 * @generated NOT
 	 */
 	protected VDiagnosticImpl() {
 		super();
-		eAdapters().add(new AdapterImpl() {
-
-			/**
-			 * {@inheritDoc}
-			 *
-			 * @see
-			 * 		org.eclipse.emf.common.notify.impl.AdapterImpl#notifyChanged(org.eclipse.emf.common.notify.Notification)
-			 */
-			@SuppressWarnings("unchecked")
-			@Override
-			public void notifyChanged(Notification msg) {
-				super.notifyChanged(msg);
-				if (msg.getFeature() != VViewPackage.eINSTANCE.getDiagnostic_Diagnostics()) {
-					return;
-				}
-				switch (msg.getEventType()) {
-				case Notification.ADD:
-					addNewDiagnostic((Diagnostic) msg.getNewValue());
-					break;
-				case Notification.ADD_MANY:
-					if (msg.getNewValue() != null) {
-						for (final Diagnostic diagnostic : (Collection<Diagnostic>) msg.getNewValue()) {
-							addNewDiagnostic(diagnostic);
-						}
-					}
-					break;
-				case Notification.REMOVE:
-					removeOldDiagnostic((Diagnostic) msg.getOldValue());
-					break;
-				case Notification.REMOVE_MANY:
-					if (msg.getOldValue() != null) {
-						for (final Diagnostic diagnostic : (Collection<Diagnostic>) msg.getOldValue()) {
-							removeOldDiagnostic(diagnostic);
-						}
-					}
-					break;
-				}
-			}
-
-		});
+		eAdapters().add(new DiagnosticAdapter());
 	}
 
 	private void removeOldDiagnostic(Diagnostic diagnostic) {
diff --git a/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/impl/VElementImpl.java b/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/impl/VElementImpl.java
index 6f4f599..a87d679 100644
--- a/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/impl/VElementImpl.java
+++ b/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/impl/VElementImpl.java
@@ -56,7 +56,7 @@
 	 * The default value of the '{@link #getName() <em>Name</em>}' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @see #getName()
 	 * @generated
 	 * @ordered
@@ -67,7 +67,7 @@
 	 * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @see #getName()
 	 * @generated
 	 * @ordered
@@ -102,7 +102,7 @@
 	 * The default value of the '{@link #isVisible() <em>Visible</em>}' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @see #isVisible()
 	 * @generated
 	 * @ordered
@@ -113,7 +113,7 @@
 	 * The cached value of the '{@link #isVisible() <em>Visible</em>}' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @see #isVisible()
 	 * @generated
 	 * @ordered
@@ -124,7 +124,7 @@
 	 * The default value of the '{@link #isEnabled() <em>Enabled</em>}' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @see #isEnabled()
 	 * @generated
 	 * @ordered
@@ -135,7 +135,7 @@
 	 * The cached value of the '{@link #isEnabled() <em>Enabled</em>}' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @see #isEnabled()
 	 * @generated
 	 * @ordered
@@ -146,7 +146,7 @@
 	 * The default value of the '{@link #isReadonly() <em>Readonly</em>}' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @see #isReadonly()
 	 * @generated
 	 * @ordered
@@ -157,7 +157,7 @@
 	 * The cached value of the '{@link #isReadonly() <em>Readonly</em>}' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @see #isReadonly()
 	 * @generated
 	 * @ordered
@@ -168,7 +168,7 @@
 	 * The cached value of the '{@link #getDiagnostic() <em>Diagnostic</em>}' containment reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @see #getDiagnostic()
 	 * @generated
 	 * @ordered
@@ -179,7 +179,7 @@
 	 * The cached value of the '{@link #getAttachments() <em>Attachments</em>}' containment reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @see #getAttachments()
 	 * @generated
 	 * @ordered
@@ -213,7 +213,7 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	protected VElementImpl() {
@@ -223,7 +223,7 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
@@ -234,7 +234,7 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
@@ -245,15 +245,16 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
 	public void setName(String newName) {
-		String oldName = name;
+		final String oldName = name;
 		name = newName;
-		if (eNotificationRequired())
+		if (eNotificationRequired()) {
 			eNotify(new ENotificationImpl(this, Notification.SET, VViewPackage.ELEMENT__NAME, oldName, name));
+		}
 	}
 
 	/**
@@ -277,16 +278,17 @@
 	 */
 	@Override
 	public void setLabel(String newLabel) {
-		String oldLabel = label;
+		final String oldLabel = label;
 		label = newLabel;
-		if (eNotificationRequired())
+		if (eNotificationRequired()) {
 			eNotify(new ENotificationImpl(this, Notification.SET, VViewPackage.ELEMENT__LABEL, oldLabel, label));
+		}
 	}
 
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
@@ -297,21 +299,22 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
 	public void setVisible(boolean newVisible) {
-		boolean oldVisible = visible;
+		final boolean oldVisible = visible;
 		visible = newVisible;
-		if (eNotificationRequired())
+		if (eNotificationRequired()) {
 			eNotify(new ENotificationImpl(this, Notification.SET, VViewPackage.ELEMENT__VISIBLE, oldVisible, visible));
+		}
 	}
 
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
@@ -322,21 +325,22 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
 	public void setEnabled(boolean newEnabled) {
-		boolean oldEnabled = enabled;
+		final boolean oldEnabled = enabled;
 		enabled = newEnabled;
-		if (eNotificationRequired())
+		if (eNotificationRequired()) {
 			eNotify(new ENotificationImpl(this, Notification.SET, VViewPackage.ELEMENT__ENABLED, oldEnabled, enabled));
+		}
 	}
 
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
@@ -347,22 +351,23 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
 	public void setReadonly(boolean newReadonly) {
-		boolean oldReadonly = readonly;
+		final boolean oldReadonly = readonly;
 		readonly = newReadonly;
-		if (eNotificationRequired())
+		if (eNotificationRequired()) {
 			eNotify(
 				new ENotificationImpl(this, Notification.SET, VViewPackage.ELEMENT__READONLY, oldReadonly, readonly));
+		}
 	}
 
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
@@ -373,19 +378,20 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	public NotificationChain basicSetDiagnostic(VDiagnostic newDiagnostic, NotificationChain msgs) {
-		VDiagnostic oldDiagnostic = diagnostic;
+		final VDiagnostic oldDiagnostic = diagnostic;
 		diagnostic = newDiagnostic;
 		if (eNotificationRequired()) {
-			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET,
+			final ENotificationImpl notification = new ENotificationImpl(this, Notification.SET,
 				VViewPackage.ELEMENT__DIAGNOSTIC, oldDiagnostic, newDiagnostic);
-			if (msgs == null)
+			if (msgs == null) {
 				msgs = notification;
-			else
+			} else {
 				msgs.add(notification);
+			}
 		}
 		return msgs;
 	}
@@ -393,31 +399,35 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
 	public void setDiagnostic(VDiagnostic newDiagnostic) {
 		if (newDiagnostic != diagnostic) {
 			NotificationChain msgs = null;
-			if (diagnostic != null)
+			if (diagnostic != null) {
 				msgs = ((InternalEObject) diagnostic).eInverseRemove(this,
 					EOPPOSITE_FEATURE_BASE - VViewPackage.ELEMENT__DIAGNOSTIC, null, msgs);
-			if (newDiagnostic != null)
+			}
+			if (newDiagnostic != null) {
 				msgs = ((InternalEObject) newDiagnostic).eInverseAdd(this,
 					EOPPOSITE_FEATURE_BASE - VViewPackage.ELEMENT__DIAGNOSTIC, null, msgs);
+			}
 			msgs = basicSetDiagnostic(newDiagnostic, msgs);
-			if (msgs != null)
+			if (msgs != null) {
 				msgs.dispatch();
-		} else if (eNotificationRequired())
+			}
+		} else if (eNotificationRequired()) {
 			eNotify(new ENotificationImpl(this, Notification.SET, VViewPackage.ELEMENT__DIAGNOSTIC, newDiagnostic,
 				newDiagnostic));
+		}
 	}
 
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
@@ -450,16 +460,17 @@
 	 */
 	@Override
 	public void setUuid(String newUuid) {
-		String oldUuid = uuid;
+		final String oldUuid = uuid;
 		uuid = newUuid;
-		if (eNotificationRequired())
+		if (eNotificationRequired()) {
 			eNotify(new ENotificationImpl(this, Notification.SET, VViewPackage.ELEMENT__UUID, oldUuid, uuid));
+		}
 	}
 
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
@@ -476,7 +487,7 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
@@ -505,7 +516,7 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@SuppressWarnings("unchecked")
@@ -544,7 +555,7 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
@@ -581,7 +592,7 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
@@ -610,15 +621,16 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
 	public String toString() {
-		if (eIsProxy())
+		if (eIsProxy()) {
 			return super.toString();
+		}
 
-		StringBuffer result = new StringBuffer(super.toString());
+		final StringBuffer result = new StringBuffer(super.toString());
 		result.append(" (name: "); //$NON-NLS-1$
 		result.append(name);
 		result.append(", label: "); //$NON-NLS-1$
diff --git a/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/impl/VStringToObjectMapEntryImpl.java b/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/impl/VStringToObjectMapEntryImpl.java
index fddc3a6..384c8e7 100644
--- a/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/impl/VStringToObjectMapEntryImpl.java
+++ b/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/impl/VStringToObjectMapEntryImpl.java
@@ -42,7 +42,7 @@
 	 * The default value of the '{@link #getTypedKey() <em>Key</em>}' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @see #getTypedKey()
 	 * @generated
 	 * @ordered
@@ -53,7 +53,7 @@
 	 * The cached value of the '{@link #getTypedKey() <em>Key</em>}' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @see #getTypedKey()
 	 * @generated
 	 * @ordered
@@ -64,7 +64,7 @@
 	 * The default value of the '{@link #getTypedValue() <em>Value</em>}' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @see #getTypedValue()
 	 * @generated
 	 * @ordered
@@ -75,7 +75,7 @@
 	 * The cached value of the '{@link #getTypedValue() <em>Value</em>}' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @see #getTypedValue()
 	 * @generated
 	 * @ordered
@@ -85,7 +85,7 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	protected VStringToObjectMapEntryImpl() {
@@ -95,7 +95,7 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
@@ -106,7 +106,7 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	public String getTypedKey() {
@@ -116,21 +116,22 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	public void setTypedKey(String newKey) {
-		String oldKey = key;
+		final String oldKey = key;
 		key = newKey;
-		if (eNotificationRequired())
+		if (eNotificationRequired()) {
 			eNotify(new ENotificationImpl(this, Notification.SET, VViewPackage.STRING_TO_OBJECT_MAP_ENTRY__KEY, oldKey,
 				key));
+		}
 	}
 
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	public Object getTypedValue() {
@@ -140,21 +141,22 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	public void setTypedValue(Object newValue) {
-		Object oldValue = value;
+		final Object oldValue = value;
 		value = newValue;
-		if (eNotificationRequired())
+		if (eNotificationRequired()) {
 			eNotify(new ENotificationImpl(this, Notification.SET, VViewPackage.STRING_TO_OBJECT_MAP_ENTRY__VALUE,
 				oldValue, value));
+		}
 	}
 
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
@@ -171,7 +173,7 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
@@ -190,7 +192,7 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
@@ -209,7 +211,7 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
@@ -226,15 +228,16 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
 	public String toString() {
-		if (eIsProxy())
+		if (eIsProxy()) {
 			return super.toString();
+		}
 
-		StringBuffer result = new StringBuffer(super.toString());
+		final StringBuffer result = new StringBuffer(super.toString());
 		result.append(" (key: "); //$NON-NLS-1$
 		result.append(key);
 		result.append(", value: "); //$NON-NLS-1$
@@ -246,7 +249,7 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	protected int hash = -1;
@@ -254,14 +257,14 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
 	public int getHash() {
 		if (hash == -1) {
-			Object theKey = getKey();
-			hash = (theKey == null ? 0 : theKey.hashCode());
+			final Object theKey = getKey();
+			hash = theKey == null ? 0 : theKey.hashCode();
 		}
 		return hash;
 	}
@@ -269,7 +272,7 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
@@ -280,7 +283,7 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
@@ -291,7 +294,7 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
@@ -302,7 +305,7 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
@@ -313,12 +316,12 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
 	public Object setValue(Object value) {
-		Object oldValue = getValue();
+		final Object oldValue = getValue();
 		setTypedValue(value);
 		return oldValue;
 	}
@@ -326,12 +329,12 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@SuppressWarnings("unchecked")
 	public EMap<String, Object> getEMap() {
-		EObject container = eContainer();
+		final EObject container = eContainer();
 		return container == null ? null : (EMap<String, Object>) container.eGet(eContainmentFeature());
 	}
 
diff --git a/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/impl/VViewFactoryImpl.java b/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/impl/VViewFactoryImpl.java
index 62423b0..3067672 100644
--- a/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/impl/VViewFactoryImpl.java
+++ b/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/impl/VViewFactoryImpl.java
@@ -43,16 +43,17 @@
 	 * Creates the default factory implementation.
 	 * <!-- begin-user-doc --> <!--
 	 * end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	public static VViewFactory init() {
 		try {
-			VViewFactory theViewFactory = (VViewFactory) EPackage.Registry.INSTANCE.getEFactory(VViewPackage.eNS_URI);
+			final VViewFactory theViewFactory = (VViewFactory) EPackage.Registry.INSTANCE
+				.getEFactory(VViewPackage.eNS_URI);
 			if (theViewFactory != null) {
 				return theViewFactory;
 			}
-		} catch (Exception exception) {
+		} catch (final Exception exception) {
 			EcorePlugin.INSTANCE.log(exception);
 		}
 		return new VViewFactoryImpl();
@@ -62,7 +63,7 @@
 	 * Creates an instance of the factory.
 	 * <!-- begin-user-doc --> <!--
 	 * end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	public VViewFactoryImpl() {
@@ -71,7 +72,7 @@
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
@@ -99,7 +100,7 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
@@ -119,7 +120,7 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
@@ -139,34 +140,34 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
 	public VDiagnostic createDiagnostic() {
-		VDiagnosticImpl diagnostic = new VDiagnosticImpl();
+		final VDiagnosticImpl diagnostic = new VDiagnosticImpl();
 		return diagnostic;
 	}
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
 	public VView createView() {
-		VViewImpl view = new VViewImpl();
+		final VViewImpl view = new VViewImpl();
 		return view;
 	}
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
 	public VControl createControl() {
-		VControlImpl control = new VControlImpl();
+		final VControlImpl control = new VControlImpl();
 		return control;
 	}
 
@@ -179,7 +180,7 @@
 	 */
 	@Override
 	public VViewModelLoadingProperties createViewModelLoadingProperties() {
-		VViewModelLoadingPropertiesImpl viewModelLoadingProperties = new VViewModelLoadingPropertiesImpl();
+		final VViewModelLoadingPropertiesImpl viewModelLoadingProperties = new VViewModelLoadingPropertiesImpl();
 		return viewModelLoadingProperties;
 	}
 
@@ -191,41 +192,42 @@
 	 * @generated
 	 */
 	public Map.Entry<String, Object> createStringToObjectMapEntry() {
-		VStringToObjectMapEntryImpl stringToObjectMapEntry = new VStringToObjectMapEntryImpl();
+		final VStringToObjectMapEntryImpl stringToObjectMapEntry = new VStringToObjectMapEntryImpl();
 		return stringToObjectMapEntry;
 	}
 
 	/**
 	 * <!-- begin-user-doc -->
-	 * 
+	 *
 	 * @since 1.8
 	 *        <!-- end-user-doc -->
 	 * @generated
 	 */
 	@Override
 	public VDateTimeDisplayAttachment createDateTimeDisplayAttachment() {
-		VDateTimeDisplayAttachmentImpl dateTimeDisplayAttachment = new VDateTimeDisplayAttachmentImpl();
+		final VDateTimeDisplayAttachmentImpl dateTimeDisplayAttachment = new VDateTimeDisplayAttachmentImpl();
 		return dateTimeDisplayAttachment;
 	}
 
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	public LabelAlignment createLabelAlignmentFromString(EDataType eDataType, String initialValue) {
-		LabelAlignment result = LabelAlignment.get(initialValue);
-		if (result == null)
+		final LabelAlignment result = LabelAlignment.get(initialValue);
+		if (result == null) {
 			throw new IllegalArgumentException(
 				"The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+		}
 		return result;
 	}
 
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	public String convertLabelAlignmentToString(EDataType eDataType, Object instanceValue) {
@@ -240,10 +242,11 @@
 	 * @generated
 	 */
 	public DateTimeDisplayType createDateTimeDisplayTypeFromString(EDataType eDataType, String initialValue) {
-		DateTimeDisplayType result = DateTimeDisplayType.get(initialValue);
-		if (result == null)
+		final DateTimeDisplayType result = DateTimeDisplayType.get(initialValue);
+		if (result == null) {
 			throw new IllegalArgumentException(
 				"The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+		}
 		return result;
 	}
 
@@ -284,18 +287,18 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
 	public VFeaturePathDomainModelReference createFeaturePathDomainModelReference() {
-		VFeaturePathDomainModelReferenceImpl featurePathDomainModelReference = new VFeaturePathDomainModelReferenceImpl();
+		final VFeaturePathDomainModelReferenceImpl featurePathDomainModelReference = new VFeaturePathDomainModelReferenceImpl();
 		return featurePathDomainModelReference;
 	}
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
@@ -305,7 +308,7 @@
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
-	 * 
+	 *
 	 * @deprecated
 	 * @generated
 	 */
diff --git a/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/impl/VViewImpl.java b/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/impl/VViewImpl.java
index e56de73..dd4af2a 100644
--- a/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/impl/VViewImpl.java
+++ b/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/impl/VViewImpl.java
@@ -1,5 +1,5 @@
 /**
- * Copyright (c) 2011-2013 EclipseSource Muenchen GmbH and others.
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH and others.
  *
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
@@ -21,6 +21,7 @@
 import org.eclipse.emf.ecore.EObject;
 import org.eclipse.emf.ecore.InternalEObject;
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.util.EDataTypeUniqueEList;
 import org.eclipse.emf.ecore.util.EObjectContainmentEList;
 import org.eclipse.emf.ecore.util.InternalEList;
 import org.eclipse.emf.ecp.view.spi.model.VContainedElement;
@@ -41,7 +42,7 @@
  *        <ul>
  *        <li>{@link org.eclipse.emf.ecp.view.spi.model.impl.VViewImpl#getRootEClass <em>Root EClass</em>}</li>
  *        <li>{@link org.eclipse.emf.ecp.view.spi.model.impl.VViewImpl#getChildren <em>Children</em>}</li>
- *        <li>{@link org.eclipse.emf.ecp.view.spi.model.impl.VViewImpl#getEcorePath <em>Ecore Path</em>}</li>
+ *        <li>{@link org.eclipse.emf.ecp.view.spi.model.impl.VViewImpl#getEcorePaths <em>Ecore Paths</em>}</li>
  *        <li>{@link org.eclipse.emf.ecp.view.spi.model.impl.VViewImpl#getLoadingProperties <em>Loading
  *        Properties</em>}</li>
  *        </ul>
@@ -53,7 +54,7 @@
 	 * The cached value of the '{@link #getRootEClass() <em>Root EClass</em>}' reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @see #getRootEClass()
 	 * @generated
 	 * @ordered
@@ -64,7 +65,7 @@
 	 * The cached value of the '{@link #getChildren() <em>Children</em>}' containment reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @see #getChildren()
 	 * @generated
 	 * @ordered
@@ -72,28 +73,18 @@
 	protected EList<VContainedElement> children;
 
 	/**
-	 * The default value of the '{@link #getEcorePath() <em>Ecore Path</em>}' attribute.
+	 * The cached value of the '{@link #getEcorePaths() <em>Ecore Paths</em>}' attribute list.
 	 * <!-- begin-user-doc -->
 	 *
-	 * @since 1.3
+	 * @since 1.17
 	 *        <!-- end-user-doc -->
-	 * @see #getEcorePath()
-	 * @generated
-	 * @ordered
-	 */
-	protected static final String ECORE_PATH_EDEFAULT = null;
-
-	/**
-	 * The cached value of the '{@link #getEcorePath() <em>Ecore Path</em>}' attribute.
-	 * <!-- begin-user-doc -->
 	 *
-	 * @since 1.3
-	 *        <!-- end-user-doc -->
-	 * @see #getEcorePath()
+	 * @see #getEcorePaths()
 	 * @generated
 	 * @ordered
+	 *
 	 */
-	protected String ecorePath = ECORE_PATH_EDEFAULT;
+	protected EList<String> ecorePaths;
 
 	/**
 	 * The cached value of the '{@link #getLoadingProperties() <em>Loading Properties</em>}' containment reference.
@@ -110,7 +101,7 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	protected VViewImpl() {
@@ -120,7 +111,7 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
@@ -131,18 +122,19 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
 	public EClass getRootEClass() {
 		if (rootEClass != null && rootEClass.eIsProxy()) {
-			InternalEObject oldRootEClass = (InternalEObject) rootEClass;
+			final InternalEObject oldRootEClass = (InternalEObject) rootEClass;
 			rootEClass = (EClass) eResolveProxy(oldRootEClass);
 			if (rootEClass != oldRootEClass) {
-				if (eNotificationRequired())
+				if (eNotificationRequired()) {
 					eNotify(new ENotificationImpl(this, Notification.RESOLVE, VViewPackage.VIEW__ROOT_ECLASS,
 						oldRootEClass, rootEClass));
+				}
 			}
 		}
 		return rootEClass;
@@ -151,7 +143,7 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	public EClass basicGetRootEClass() {
@@ -161,22 +153,23 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
 	public void setRootEClass(EClass newRootEClass) {
-		EClass oldRootEClass = rootEClass;
+		final EClass oldRootEClass = rootEClass;
 		rootEClass = newRootEClass;
-		if (eNotificationRequired())
+		if (eNotificationRequired()) {
 			eNotify(new ENotificationImpl(this, Notification.SET, VViewPackage.VIEW__ROOT_ECLASS, oldRootEClass,
 				rootEClass));
+		}
 	}
 
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
@@ -190,30 +183,16 @@
 
 	/**
 	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
 	 *
-	 * @since 1.3
-	 *        <!-- end-user-doc -->
 	 * @generated
 	 */
 	@Override
-	public String getEcorePath() {
-		return ecorePath;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 *
-	 * @since 1.3
-	 *        <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public void setEcorePath(String newEcorePath) {
-		String oldEcorePath = ecorePath;
-		ecorePath = newEcorePath;
-		if (eNotificationRequired())
-			eNotify(
-				new ENotificationImpl(this, Notification.SET, VViewPackage.VIEW__ECORE_PATH, oldEcorePath, ecorePath));
+	public EList<String> getEcorePaths() {
+		if (ecorePaths == null) {
+			ecorePaths = new EDataTypeUniqueEList<String>(String.class, this, VViewPackage.VIEW__ECORE_PATHS);
+		}
+		return ecorePaths;
 	}
 
 	/**
@@ -237,15 +216,16 @@
 	 */
 	public NotificationChain basicSetLoadingProperties(VViewModelProperties newLoadingProperties,
 		NotificationChain msgs) {
-		VViewModelProperties oldLoadingProperties = loadingProperties;
+		final VViewModelProperties oldLoadingProperties = loadingProperties;
 		loadingProperties = newLoadingProperties;
 		if (eNotificationRequired()) {
-			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET,
+			final ENotificationImpl notification = new ENotificationImpl(this, Notification.SET,
 				VViewPackage.VIEW__LOADING_PROPERTIES, oldLoadingProperties, newLoadingProperties);
-			if (msgs == null)
+			if (msgs == null) {
 				msgs = notification;
-			else
+			} else {
 				msgs.add(notification);
+			}
 		}
 		return msgs;
 	}
@@ -261,24 +241,28 @@
 	public void setLoadingProperties(VViewModelProperties newLoadingProperties) {
 		if (newLoadingProperties != loadingProperties) {
 			NotificationChain msgs = null;
-			if (loadingProperties != null)
+			if (loadingProperties != null) {
 				msgs = ((InternalEObject) loadingProperties).eInverseRemove(this,
 					EOPPOSITE_FEATURE_BASE - VViewPackage.VIEW__LOADING_PROPERTIES, null, msgs);
-			if (newLoadingProperties != null)
+			}
+			if (newLoadingProperties != null) {
 				msgs = ((InternalEObject) newLoadingProperties).eInverseAdd(this,
 					EOPPOSITE_FEATURE_BASE - VViewPackage.VIEW__LOADING_PROPERTIES, null, msgs);
+			}
 			msgs = basicSetLoadingProperties(newLoadingProperties, msgs);
-			if (msgs != null)
+			if (msgs != null) {
 				msgs.dispatch();
-		} else if (eNotificationRequired())
+			}
+		} else if (eNotificationRequired()) {
 			eNotify(new ENotificationImpl(this, Notification.SET, VViewPackage.VIEW__LOADING_PROPERTIES,
 				newLoadingProperties, newLoadingProperties));
+		}
 	}
 
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
@@ -295,20 +279,21 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 		case VViewPackage.VIEW__ROOT_ECLASS:
-			if (resolve)
+			if (resolve) {
 				return getRootEClass();
+			}
 			return basicGetRootEClass();
 		case VViewPackage.VIEW__CHILDREN:
 			return getChildren();
-		case VViewPackage.VIEW__ECORE_PATH:
-			return getEcorePath();
+		case VViewPackage.VIEW__ECORE_PATHS:
+			return getEcorePaths();
 		case VViewPackage.VIEW__LOADING_PROPERTIES:
 			return getLoadingProperties();
 		}
@@ -318,7 +303,7 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@SuppressWarnings("unchecked")
@@ -332,8 +317,9 @@
 			getChildren().clear();
 			getChildren().addAll((Collection<? extends VContainedElement>) newValue);
 			return;
-		case VViewPackage.VIEW__ECORE_PATH:
-			setEcorePath((String) newValue);
+		case VViewPackage.VIEW__ECORE_PATHS:
+			getEcorePaths().clear();
+			getEcorePaths().addAll((Collection<? extends String>) newValue);
 			return;
 		case VViewPackage.VIEW__LOADING_PROPERTIES:
 			setLoadingProperties((VViewModelProperties) newValue);
@@ -345,7 +331,7 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
@@ -357,8 +343,8 @@
 		case VViewPackage.VIEW__CHILDREN:
 			getChildren().clear();
 			return;
-		case VViewPackage.VIEW__ECORE_PATH:
-			setEcorePath(ECORE_PATH_EDEFAULT);
+		case VViewPackage.VIEW__ECORE_PATHS:
+			getEcorePaths().clear();
 			return;
 		case VViewPackage.VIEW__LOADING_PROPERTIES:
 			setLoadingProperties((VViewModelProperties) null);
@@ -370,7 +356,7 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
@@ -380,8 +366,8 @@
 			return rootEClass != null;
 		case VViewPackage.VIEW__CHILDREN:
 			return children != null && !children.isEmpty();
-		case VViewPackage.VIEW__ECORE_PATH:
-			return ECORE_PATH_EDEFAULT == null ? ecorePath != null : !ECORE_PATH_EDEFAULT.equals(ecorePath);
+		case VViewPackage.VIEW__ECORE_PATHS:
+			return ecorePaths != null && !ecorePaths.isEmpty();
 		case VViewPackage.VIEW__LOADING_PROPERTIES:
 			return loadingProperties != null;
 		}
@@ -391,17 +377,18 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
 	public String toString() {
-		if (eIsProxy())
+		if (eIsProxy()) {
 			return super.toString();
+		}
 
-		StringBuffer result = new StringBuffer(super.toString());
-		result.append(" (ecorePath: "); //$NON-NLS-1$
-		result.append(ecorePath);
+		final StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (ecorePaths: "); //$NON-NLS-1$
+		result.append(ecorePaths);
 		result.append(')');
 		return result.toString();
 	}
diff --git a/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/impl/VViewModelLoadingPropertiesImpl.java b/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/impl/VViewModelLoadingPropertiesImpl.java
index f83c4b6..e0d717d 100644
--- a/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/impl/VViewModelLoadingPropertiesImpl.java
+++ b/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/impl/VViewModelLoadingPropertiesImpl.java
@@ -151,6 +151,7 @@
 				return getInheritableProperties();
 			}
 			return getInheritableProperties().map();
+
 		case VViewPackage.VIEW_MODEL_LOADING_PROPERTIES__NON_INHERITABLE_PROPERTIES:
 			if (coreType) {
 				return getNonInheritableProperties();
diff --git a/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/impl/VViewPackageImpl.java b/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/impl/VViewPackageImpl.java
index 0ced3fb..4f5222b 100644
--- a/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/impl/VViewPackageImpl.java
+++ b/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/impl/VViewPackageImpl.java
@@ -425,13 +425,14 @@
 
 	/**
 	 * <!-- begin-user-doc -->
-	 *
-	 * @since 1.3
+	 * 
+	 * @since 1.16
 	 *        <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
-	public EAttribute getView_EcorePath() {
+	public EAttribute getView_EcorePaths() {
 		return (EAttribute) viewEClass.getEStructuralFeatures().get(2);
 	}
 
@@ -553,10 +554,9 @@
 
 	/**
 	 * <!-- begin-user-doc -->
-	 * 
+	 *
 	 * @since 1.13
 	 *        <!-- end-user-doc -->
-	 *
 	 * @generated
 	 */
 	@Override
@@ -566,10 +566,9 @@
 
 	/**
 	 * <!-- begin-user-doc -->
-	 * 
+	 *
 	 * @since 1.13
 	 *        <!-- end-user-doc -->
-	 *
 	 * @generated
 	 */
 	@Override
@@ -821,7 +820,7 @@
 		viewEClass = createEClass(VIEW);
 		createEReference(viewEClass, VIEW__ROOT_ECLASS);
 		createEReference(viewEClass, VIEW__CHILDREN);
-		createEAttribute(viewEClass, VIEW__ECORE_PATH);
+		createEAttribute(viewEClass, VIEW__ECORE_PATHS);
 		createEReference(viewEClass, VIEW__LOADING_PROPERTIES);
 
 		containedElementEClass = createEClass(CONTAINED_ELEMENT);
@@ -953,7 +952,7 @@
 		initEReference(getView_Children(), getContainedElement(), null, "children", null, 0, -1, VView.class, //$NON-NLS-1$
 			!IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE,
 			!IS_DERIVED, IS_ORDERED);
-		initEAttribute(getView_EcorePath(), ecorePackage.getEString(), "ecorePath", null, 1, 1, VView.class, //$NON-NLS-1$
+		initEAttribute(getView_EcorePaths(), ecorePackage.getEString(), "ecorePaths", null, 0, -1, VView.class, //$NON-NLS-1$
 			!IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 		initEReference(getView_LoadingProperties(), getViewModelProperties(), null, "loadingProperties", null, 1, //$NON-NLS-1$
 			1, VView.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES,
diff --git a/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/util/VViewResourceFactoryImpl.java b/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/util/VViewResourceFactoryImpl.java
index 30a23c6..8f0fccd 100644
--- a/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/util/VViewResourceFactoryImpl.java
+++ b/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/util/VViewResourceFactoryImpl.java
@@ -29,7 +29,7 @@
 	 * Creates an instance of the resource factory.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	public VViewResourceFactoryImpl() {
@@ -40,12 +40,12 @@
 	 * Creates an instance of the resource.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
 	public Resource createResource(URI uri) {
-		Resource result = new VViewResourceImpl(uri);
+		final Resource result = new VViewResourceImpl(uri);
 		return result;
 	}
 
diff --git a/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/util/VViewResourceImpl.java b/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/util/VViewResourceImpl.java
index 72a122e..52d97ec 100644
--- a/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/util/VViewResourceImpl.java
+++ b/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/util/VViewResourceImpl.java
@@ -28,7 +28,7 @@
 	 * Creates an instance of the resource.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @param uri the URI of the new resource.
 	 * @generated
 	 */
diff --git a/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/util/ViewAdapterFactory.java b/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/util/ViewAdapterFactory.java
index 059a9f3..461f85e 100644
--- a/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/util/ViewAdapterFactory.java
+++ b/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/util/ViewAdapterFactory.java
@@ -322,12 +322,13 @@
 	 * <!-- 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 -->
+	 * 
+	 * @since 1.13
+	 *        <!-- end-user-doc -->
 	 *
 	 * @return the new adapter.
 	 * @see org.eclipse.emf.ecp.view.spi.model.VHasTooltip
 	 * @generated
-	 * @since 1.13
 	 */
 	public Adapter createHasTooltipAdapter() {
 		return null;
diff --git a/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/util/ViewSwitch.java b/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/util/ViewSwitch.java
index 0dfa704..2885475 100644
--- a/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/util/ViewSwitch.java
+++ b/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/util/ViewSwitch.java
@@ -436,13 +436,14 @@
 	 * <!-- begin-user-doc -->
 	 * This implementation returns null;
 	 * returning a non-null result will terminate the switch.
-	 * <!-- end-user-doc -->
+	 * 
+	 * @since 1.13
+	 *        <!-- end-user-doc -->
 	 *
 	 * @param object the target of the switch.
 	 * @return the result of interpreting the object as an instance of '<em>Has Tooltip</em>'.
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
-	 * @since 1.13
 	 */
 	public T caseHasTooltip(VHasTooltip object) {
 		return null;
diff --git a/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/util/ViewValidator.java b/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/util/ViewValidator.java
index 405eecf..e7ab379 100644
--- a/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/util/ViewValidator.java
+++ b/bundles/org.eclipse.emf.ecp.view.model/src/org/eclipse/emf/ecp/view/spi/model/util/ViewValidator.java
@@ -554,10 +554,11 @@
 
 	/**
 	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
+	 * 
+	 * @since 1.13
+	 *        <!-- end-user-doc -->
 	 *
 	 * @generated
-	 * @since 1.13
 	 */
 	public boolean validateHasTooltip(VHasTooltip hasTooltip, DiagnosticChain diagnostics,
 		Map<Object, Object> context) {
diff --git a/bundles/org.eclipse.emf.ecp.view.rule.model.edit/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.view.rule.model.edit/META-INF/MANIFEST.MF
index d355e59..9619282 100644
--- a/bundles/org.eclipse.emf.ecp.view.rule.model.edit/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.view.rule.model.edit/META-INF/MANIFEST.MF
@@ -2,18 +2,19 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Rule Model Edit Plugin
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.rule.model.edit;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-ClassPath: .
 Bundle-Activator: org.eclipse.emf.ecp.view.spi.rule.model.provider.RuleEditPlugin$Implementation
 Bundle-Vendor: Eclipse Modeling Project
 Bundle-Localization: plugin
-Export-Package: org.eclipse.emf.ecp.view.spi.rule.model.provider;version="1.16.0"
+Export-Package: org.eclipse.emf.ecp.view.spi.rule.model.provider;version="1.17.0"
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.7.0,4.0.0)",
- org.eclipse.emf.ecp.view.rule.model;bundle-version="[1.16.0,1.17.0)";visibility:=reexport,
+ org.eclipse.emf.ecp.view.rule.model;bundle-version="[1.17.0,1.18.0]";visibility:=reexport,
  org.eclipse.emf.edit;bundle-version="[2.8.0,3.0.0)";visibility:=reexport,
  org.eclipse.emf.ecore;bundle-version="[2.8.0,3.0.0)";visibility:=reexport,
  org.eclipse.emf.ecore.edit;bundle-version="[2.7.0,3.0.0)";visibility:=reexport,
- org.eclipse.emf.ecp.view.model;bundle-version="[1.16.0,1.17.0)";visibility:=reexport,
- org.eclipse.emf.ecp.view.model.edit;bundle-version="[1.16.0,1.17.0)";visibility:=reexport
+ org.eclipse.emf.ecp.view.model;bundle-version="[1.17.0,1.18.0]";visibility:=reexport,
+ org.eclipse.emf.ecp.view.model.edit;bundle-version="[1.17.0,1.18.0]";visibility:=reexport
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.view.rule.model.edit
diff --git a/bundles/org.eclipse.emf.ecp.view.rule.model.edit/plugin.xml b/bundles/org.eclipse.emf.ecp.view.rule.model.edit/plugin.xml
index a5da344..0c069d3 100644
--- a/bundles/org.eclipse.emf.ecp.view.rule.model.edit/plugin.xml
+++ b/bundles/org.eclipse.emf.ecp.view.rule.model.edit/plugin.xml
@@ -29,7 +29,7 @@
 
    <extension point="org.eclipse.emf.edit.childCreationExtenders">
       <extender
-            uri="http://org/eclipse/emf/ecp/view/model/170"
+            uri="http://org/eclipse/emf/ecp/view/model/1170"
             class="org.eclipse.emf.ecp.view.spi.rule.model.provider.RuleItemProviderAdapterFactory$ViewChildCreationExtender"/>
    </extension>
 
diff --git a/bundles/org.eclipse.emf.ecp.view.rule.model.edit/pom.xml b/bundles/org.eclipse.emf.ecp.view.rule.model.edit/pom.xml
index 7585cc4..ea3b616 100644
--- a/bundles/org.eclipse.emf.ecp.view.rule.model.edit/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.view.rule.model.edit/pom.xml
@@ -7,13 +7,13 @@
   <parent>

     <groupId>org.eclipse.emf.ecp</groupId>

     <artifactId>ecp-bundles-parent</artifactId>

-    <version>1.16.0-SNAPSHOT</version>

+    <version>1.17.0-SNAPSHOT</version>

     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>

   </parent>

 

   <artifactId>org.eclipse.emf.ecp.view.rule.model.edit</artifactId>

   <packaging>eclipse-plugin</packaging>

-  <version>1.16.0-SNAPSHOT</version>

+  <version>1.17.0-SNAPSHOT</version>

 

   <groupId>org.eclipse.emf.ecp</groupId>

 </project>

diff --git a/bundles/org.eclipse.emf.ecp.view.rule.model/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.view.rule.model/META-INF/MANIFEST.MF
index 25fc132..c5a3f2e 100644
--- a/bundles/org.eclipse.emf.ecp.view.rule.model/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.view.rule.model/META-INF/MANIFEST.MF
@@ -2,21 +2,22 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Rule Model Plugin
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.rule.model;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-ClassPath: .
 Bundle-Activator: org.eclipse.emf.ecp.view.spi.rule.model.Activator
 Bundle-Vendor: Eclipse Modeling Project
 Bundle-Localization: plugin
-Export-Package: org.eclipse.emf.ecp.view.spi.rule.model;version="1.16.0",
- org.eclipse.emf.ecp.view.spi.rule.model.impl;version="1.16.0",
- org.eclipse.emf.ecp.view.spi.rule.model.util;version="1.16.0"
+Export-Package: org.eclipse.emf.ecp.view.spi.rule.model;version="1.17.0",
+ org.eclipse.emf.ecp.view.spi.rule.model.impl;version="1.17.0",
+ org.eclipse.emf.ecp.view.spi.rule.model.util;version="1.17.0"
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.7.0,4.0.0)",
  org.eclipse.emf.ecore;bundle-version="[2.8.0,3.0.0)";visibility:=reexport,
- org.eclipse.emf.ecp.view.model;bundle-version="[1.16.0,1.17.0)";visibility:=reexport,
- org.eclipse.emf.ecp.common;bundle-version="[1.16.0,1.17.0)",
+ org.eclipse.emf.ecp.view.model;bundle-version="[1.17.0,1.18.0]";visibility:=reexport,
+ org.eclipse.emf.ecp.common;bundle-version="[1.17.0,1.18.0]",
  org.eclipse.core.databinding.observable;bundle-version="[1.4.0,2.0.0)"
-Import-Package: org.eclipse.emfforms.spi.common.report;version="[1.16.0,1.17.0)",
- org.eclipse.emfforms.spi.core.services.databinding;version="[1.16.0,1.17.0)",
- org.eclipse.emfforms.spi.core.services.databinding.emf;version="[1.16.0,1.17.0)"
+Import-Package: org.eclipse.emfforms.spi.common.report;version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.spi.core.services.databinding;version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.spi.core.services.databinding.emf;version="[1.17.0,1.18.0]"
 Bundle-ActivationPolicy: lazy
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Automatic-Module-Name: org.eclipse.emf.ecp.view.rule.model
diff --git a/bundles/org.eclipse.emf.ecp.view.rule.model/pom.xml b/bundles/org.eclipse.emf.ecp.view.rule.model/pom.xml
index f855ee9..d377bc3 100644
--- a/bundles/org.eclipse.emf.ecp.view.rule.model/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.view.rule.model/pom.xml
@@ -7,13 +7,13 @@
   <parent>

     <groupId>org.eclipse.emf.ecp</groupId>

     <artifactId>ecp-bundles-parent</artifactId>

-    <version>1.16.0-SNAPSHOT</version>

+    <version>1.17.0-SNAPSHOT</version>

     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>

   </parent>

 

   <artifactId>org.eclipse.emf.ecp.view.rule.model</artifactId>

   <packaging>eclipse-plugin</packaging>

-  <version>1.16.0-SNAPSHOT</version>

+  <version>1.17.0-SNAPSHOT</version>

 

   <groupId>org.eclipse.emf.ecp</groupId>

 </project>

diff --git a/bundles/org.eclipse.emf.ecp.view.rule/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.view.rule/META-INF/MANIFEST.MF
index f1025ef..18a3c52 100644
--- a/bundles/org.eclipse.emf.ecp.view.rule/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.view.rule/META-INF/MANIFEST.MF
@@ -2,21 +2,24 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: View Model Rule
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.rule;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emf.ecp.view.internal.rule;version="1.16.0";x-friends:="org.eclipse.emf.ecp.view.rule.test,org.eclipse.emf.ecp.view.model.integrationtest,org.eclipse.emf.ecp.view.unset.test",
-  org.eclipse.emf.ecp.view.spi.rule;version="1.16.0"
+Export-Package: org.eclipse.emf.ecp.view.internal.rule;version="1.17.0";
+  x-friends:="org.eclipse.emf.ecp.view.rule.test,
+   org.eclipse.emf.ecp.view.model.integrationtest,
+   org.eclipse.emf.ecp.view.unset.test",
+ org.eclipse.emf.ecp.view.spi.rule;version="1.17.0"
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.7.0,4.0.0)",
-  org.eclipse.emf.ecore;bundle-version="[2.8.0,3.0.0)",
-  org.eclipse.emf.ecp.view.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.context;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.rule.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.common;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services.emf;bundle-version="[1.16.0,1.17.0)"
+ org.eclipse.emf.ecore;bundle-version="[2.8.0,3.0.0)",
+ org.eclipse.emf.ecp.view.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.context;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.rule.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.common;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services.emf;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
-Import-Package: org.eclipse.emfforms.spi.common.report;version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.spi.core.services.view;version="[1.16.0,1.17.0)",
-  org.osgi.service.component.annotations;version="1.2.0"
+Import-Package: org.eclipse.emfforms.spi.common.report;version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.spi.core.services.view;version="[1.17.0,1.18.0]",
+ org.osgi.service.component.annotations;version="1.2.0"
 Service-Component: OSGI-INF/org.eclipse.emf.ecp.view.internal.rule.OrConditionService.xml,
  OSGI-INF/org.eclipse.emf.ecp.view.internal.rule.LeafConditionService.xml,
  OSGI-INF/org.eclipse.emf.ecp.view.internal.rule.AndConditionService.xml,
@@ -27,3 +30,4 @@
  OSGI-INF/org.eclipse.emf.ecp.view.internal.rule.TrueConditionService.xml,
  OSGI-INF/org.eclipse.emf.ecp.view.internal.rule.IsProxyConditionService.xml
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.view.rule
diff --git a/bundles/org.eclipse.emf.ecp.view.rule/pom.xml b/bundles/org.eclipse.emf.ecp.view.rule/pom.xml
index 8167531..cc2a0d0 100644
--- a/bundles/org.eclipse.emf.ecp.view.rule/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.view.rule/pom.xml
@@ -7,13 +7,13 @@
   <parent>

     <groupId>org.eclipse.emf.ecp</groupId>

     <artifactId>ecp-bundles-parent</artifactId>

-    <version>1.16.0-SNAPSHOT</version>

+    <version>1.17.0-SNAPSHOT</version>

     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>

   </parent>

 

   <artifactId>org.eclipse.emf.ecp.view.rule</artifactId>

   <packaging>eclipse-plugin</packaging>

-  <version>1.16.0-SNAPSHOT</version>

+  <version>1.17.0-SNAPSHOT</version>

 

   <groupId>org.eclipse.emf.ecp</groupId>

   

diff --git a/bundles/org.eclipse.emf.ecp.view.section.model.edit/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.view.section.model.edit/META-INF/MANIFEST.MF
index fce01e2..a5b307f 100644
--- a/bundles/org.eclipse.emf.ecp.view.section.model.edit/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.view.section.model.edit/META-INF/MANIFEST.MF
@@ -2,18 +2,19 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.section.model.edit;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-ClassPath: .
 Bundle-Activator: org.eclipse.emf.ecp.view.spi.section.model.provider.SectionEditPlugin$Implementation
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
-Export-Package: org.eclipse.emf.ecp.view.spi.section.model.provider;version="1.16.0"
+Export-Package: org.eclipse.emf.ecp.view.spi.section.model.provider;version="1.17.0"
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.7.0,4.0.0)",
-  org.eclipse.emf.ecp.view.section.model;bundle-version="[1.16.0,1.17.0)";visibility:=reexport,
-  org.eclipse.emf.edit;bundle-version="[2.7.0,3.0.0)";visibility:=reexport,
-  org.eclipse.emf.ecore;bundle-version="[2.7.0,3.0.0)";visibility:=reexport,
-  org.eclipse.emf.ecore.edit;bundle-version="[2.7.0,3.0.0)";visibility:=reexport,
-  org.eclipse.emf.ecp.view.model;bundle-version="[1.16.0,1.17.0)";visibility:=reexport,
-  org.eclipse.emf.ecp.view.model.edit;bundle-version="[1.16.0,1.17.0)";visibility:=reexport
+ org.eclipse.emf.ecp.view.section.model;bundle-version="[1.17.0,1.18.0]";visibility:=reexport,
+ org.eclipse.emf.edit;bundle-version="[2.7.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.ecore;bundle-version="[2.7.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.ecore.edit;bundle-version="[2.7.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.ecp.view.model;bundle-version="[1.17.0,1.18.0]";visibility:=reexport,
+ org.eclipse.emf.ecp.view.model.edit;bundle-version="[1.17.0,1.18.0]";visibility:=reexport
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.view.section.model.edit
diff --git a/bundles/org.eclipse.emf.ecp.view.section.model.edit/plugin.xml b/bundles/org.eclipse.emf.ecp.view.section.model.edit/plugin.xml
index 1307abe..bfe63ae 100644
--- a/bundles/org.eclipse.emf.ecp.view.section.model.edit/plugin.xml
+++ b/bundles/org.eclipse.emf.ecp.view.section.model.edit/plugin.xml
@@ -31,7 +31,7 @@
    <extension point="org.eclipse.emf.edit.childCreationExtenders">
       <!-- @generated section -->
       <extender
-            uri="http://org/eclipse/emf/ecp/view/model/170"
+            uri="http://org/eclipse/emf/ecp/view/model/1170"
             class="org.eclipse.emf.ecp.view.spi.section.model.provider.SectionItemProviderAdapterFactory$ViewChildCreationExtender"/>
    </extension>
 
diff --git a/bundles/org.eclipse.emf.ecp.view.section.model.edit/pom.xml b/bundles/org.eclipse.emf.ecp.view.section.model.edit/pom.xml
index 4d958b2..a7ca6db 100644
--- a/bundles/org.eclipse.emf.ecp.view.section.model.edit/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.view.section.model.edit/pom.xml
@@ -7,7 +7,7 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
 
diff --git a/bundles/org.eclipse.emf.ecp.view.section.model/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.view.section.model/META-INF/MANIFEST.MF
index 1654ef1..cb1164e 100644
--- a/bundles/org.eclipse.emf.ecp.view.section.model/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.view.section.model/META-INF/MANIFEST.MF
@@ -2,15 +2,16 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.section.model;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-ClassPath: .
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
-Export-Package: org.eclipse.emf.ecp.view.spi.section.model;version="1.16.0",
-  org.eclipse.emf.ecp.view.spi.section.model.impl;version="1.16.0",
-  org.eclipse.emf.ecp.view.spi.section.model.util;version="1.16.0"
+Export-Package: org.eclipse.emf.ecp.view.spi.section.model;version="1.17.0",
+ org.eclipse.emf.ecp.view.spi.section.model.impl;version="1.17.0",
+ org.eclipse.emf.ecp.view.spi.section.model.util;version="1.17.0"
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.7.0,4.0.0)",
-  org.eclipse.emf.ecore;bundle-version="[2.7.0,3.0.0)";visibility:=reexport,
-  org.eclipse.emf.ecp.view.model;bundle-version="[1.16.0,1.17.0)";visibility:=reexport
+ org.eclipse.emf.ecore;bundle-version="[2.7.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.ecp.view.model;bundle-version="[1.17.0,1.18.0]";visibility:=reexport
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.view.section.model
diff --git a/bundles/org.eclipse.emf.ecp.view.section.model/pom.xml b/bundles/org.eclipse.emf.ecp.view.section.model/pom.xml
index 69c8315..8819533 100644
--- a/bundles/org.eclipse.emf.ecp.view.section.model/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.view.section.model/pom.xml
@@ -7,7 +7,7 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
 
diff --git a/bundles/org.eclipse.emf.ecp.view.section.ui.swt/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.view.section.ui.swt/META-INF/MANIFEST.MF
index f0a1e29..2efa819 100644
--- a/bundles/org.eclipse.emf.ecp.view.section.ui.swt/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.view.section.ui.swt/META-INF/MANIFEST.MF
@@ -2,33 +2,34 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: View Model Section UI SWT
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.section.ui.swt;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Activator: org.eclipse.emf.ecp.view.internal.section.ui.swt.Activator
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emf.ecp.view.internal.section.swt;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.view.internal.section.ui.swt;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.view.spi.section.swt;version="1.16.0"
-Require-Bundle: org.eclipse.emf.ecp.view.section.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.ui.view.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.core.runtime;bundle-version="[3.8.0,4.0.0)",
-  org.eclipse.emfforms.core.services;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.core.databinding.property;bundle-version="[1.4.0,2.0.0)",
-  org.eclipse.emfforms.swt.core;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.swt.core.di;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.view.annotation.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.databinding.edit;bundle-version="[1.3.0,2.0.0)",
-  org.eclipse.emf.edit;bundle-version="[2.8.0,3.0.0)"
+Export-Package: org.eclipse.emf.ecp.view.internal.section.swt;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.internal.section.ui.swt;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.spi.section.swt;version="1.17.0"
+Require-Bundle: org.eclipse.emf.ecp.view.section.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.ui.view.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.core.runtime;bundle-version="[3.8.0,4.0.0)",
+ org.eclipse.emfforms.core.services;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.core.databinding.property;bundle-version="[1.4.0,2.0.0)",
+ org.eclipse.emfforms.swt.core;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.swt.core.di;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.view.annotation.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.databinding.edit;bundle-version="[1.3.0,2.0.0)",
+ org.eclipse.emf.edit;bundle-version="[2.8.0,3.0.0)"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Service-Component: OSGI-INF/SectionLeafSWTRendererService.xml,OSGI-INF/SectionNodeSWTRendererService.xml,OSGI-INF/SectionedAreaSWTRendererService.xml
 Bundle-ActivationPolicy: lazy
 Import-Package: javax.inject;version="1.0.0",
-  org.eclipse.emfforms.spi.common.report;version="[1.16.0,1.17.0)",
-  org.eclipse.jface.databinding.swt;version="0.0.0",
-  org.eclipse.jface.layout;version="0.0.0",
-  org.eclipse.swt;version="0.0.0",
-  org.eclipse.swt.graphics;version="0.0.0",
-  org.eclipse.swt.layout;version="0.0.0",
-  org.eclipse.swt.widgets;version="0.0.0",
-  org.eclipse.ui.forms.events;version="0.0.0",
-  org.eclipse.ui.forms.widgets;version="0.0.0",
-  org.osgi.service.component.annotations;version="[1.2.0,2.0.0)";resolution:=optional
+ org.eclipse.emfforms.spi.common.report;version="[1.17.0,1.18.0]",
+ org.eclipse.jface.databinding.swt;version="0.0.0",
+ org.eclipse.jface.layout;version="0.0.0",
+ org.eclipse.swt;version="0.0.0",
+ org.eclipse.swt.graphics;version="0.0.0",
+ org.eclipse.swt.layout;version="0.0.0",
+ org.eclipse.swt.widgets;version="0.0.0",
+ org.eclipse.ui.forms.events;version="0.0.0",
+ org.eclipse.ui.forms.widgets;version="0.0.0",
+ org.osgi.service.component.annotations;version="[1.2.0,2.0.0)";resolution:=optional
+Automatic-Module-Name: org.eclipse.emf.ecp.view.section.ui.swt
diff --git a/bundles/org.eclipse.emf.ecp.view.section.ui.swt/pom.xml b/bundles/org.eclipse.emf.ecp.view.section.ui.swt/pom.xml
index 22bd29e..b547dc2 100644
--- a/bundles/org.eclipse.emf.ecp.view.section.ui.swt/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.view.section.ui.swt/pom.xml
@@ -7,7 +7,7 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
 
diff --git a/bundles/org.eclipse.emf.ecp.view.stack.model.edit/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.view.stack.model.edit/META-INF/MANIFEST.MF
index 00ab722..24c1801 100644
--- a/bundles/org.eclipse.emf.ecp.view.stack.model.edit/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.view.stack.model.edit/META-INF/MANIFEST.MF
@@ -2,18 +2,19 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.stack.model.edit;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-ClassPath: .
 Bundle-Activator: org.eclipse.emf.ecp.view.spi.stack.model.provider.StackEditPlugin$Implementation
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
 Export-Package: org.eclipse.emf.ecp.view.spi.stack.model.provider;version="0.1.0"
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.7.0,4.0.0)",
-  org.eclipse.emf.ecp.view.stack.model;bundle-version="[1.16.0,1.17.0)";visibility:=reexport,
-  org.eclipse.emf.edit;bundle-version="[2.8.0,3.0.0)";visibility:=reexport,
-  org.eclipse.emf.ecore;bundle-version="[2.7.0,3.0.0)";visibility:=reexport,
-  org.eclipse.emf.ecore.edit;bundle-version="[2.6.0,3.0.0)";visibility:=reexport,
-  org.eclipse.emf.ecp.view.model;bundle-version="[1.16.0,1.17.0)";visibility:=reexport,
-  org.eclipse.emf.ecp.view.model.edit;bundle-version="[1.16.0,1.17.0)";visibility:=reexport
+ org.eclipse.emf.ecp.view.stack.model;bundle-version="[1.17.0,1.18.0]";visibility:=reexport,
+ org.eclipse.emf.edit;bundle-version="[2.8.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.ecore;bundle-version="[2.7.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.ecore.edit;bundle-version="[2.6.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.ecp.view.model;bundle-version="[1.17.0,1.18.0]";visibility:=reexport,
+ org.eclipse.emf.ecp.view.model.edit;bundle-version="[1.17.0,1.18.0]";visibility:=reexport
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.view.stack.model.edit
diff --git a/bundles/org.eclipse.emf.ecp.view.stack.model.edit/plugin.xml b/bundles/org.eclipse.emf.ecp.view.stack.model.edit/plugin.xml
index 1d7b5fe..39a7284 100644
--- a/bundles/org.eclipse.emf.ecp.view.stack.model.edit/plugin.xml
+++ b/bundles/org.eclipse.emf.ecp.view.stack.model.edit/plugin.xml
@@ -32,7 +32,7 @@
    <extension point="org.eclipse.emf.edit.childCreationExtenders">
       <!-- @generated stack -->
       <extender
-            uri="http://org/eclipse/emf/ecp/view/model/170"
+            uri="http://org/eclipse/emf/ecp/view/model/1170"
             class="org.eclipse.emf.ecp.view.spi.stack.model.provider.StackItemProviderAdapterFactory$ViewChildCreationExtender"/>
    </extension>
 </plugin>
diff --git a/bundles/org.eclipse.emf.ecp.view.stack.model.edit/pom.xml b/bundles/org.eclipse.emf.ecp.view.stack.model.edit/pom.xml
index 0d93d64..56c612d 100644
--- a/bundles/org.eclipse.emf.ecp.view.stack.model.edit/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.view.stack.model.edit/pom.xml
@@ -7,7 +7,7 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
 
diff --git a/bundles/org.eclipse.emf.ecp.view.stack.model/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.view.stack.model/META-INF/MANIFEST.MF
index f2c2078..0cd5b93 100644
--- a/bundles/org.eclipse.emf.ecp.view.stack.model/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.view.stack.model/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.stack.model;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-ClassPath: .
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
@@ -10,7 +10,8 @@
   org.eclipse.emf.ecp.view.spi.stack.model.impl;version="0.1.0",
   org.eclipse.emf.ecp.view.spi.stack.model.util;version="0.1.0"
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.7.0,4.0.0)",
-  org.eclipse.emf.ecore;bundle-version="[2.7.0,3.0.0)";visibility:=reexport,
-  org.eclipse.emf.ecp.view.model;bundle-version="[1.16.0,1.17.0)";visibility:=reexport
+ org.eclipse.emf.ecore;bundle-version="[2.7.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.ecp.view.model;bundle-version="[1.17.0,1.18.0]";visibility:=reexport
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.view.stack.model
diff --git a/bundles/org.eclipse.emf.ecp.view.stack.model/pom.xml b/bundles/org.eclipse.emf.ecp.view.stack.model/pom.xml
index e3179ee..f9783d7 100644
--- a/bundles/org.eclipse.emf.ecp.view.stack.model/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.view.stack.model/pom.xml
@@ -7,7 +7,7 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
 
diff --git a/bundles/org.eclipse.emf.ecp.view.stack.ui.swt/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.view.stack.ui.swt/META-INF/MANIFEST.MF
index 737a5a3..90f86fb 100644
--- a/bundles/org.eclipse.emf.ecp.view.stack.ui.swt/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.view.stack.ui.swt/META-INF/MANIFEST.MF
@@ -2,27 +2,28 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.stack.ui.swt;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Activator: org.eclipse.emf.ecp.view.internal.stack.ui.swt.Activator
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
-Export-Package: org.eclipse.emf.ecp.view.internal.stack.ui.swt;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.view.spi.stack.ui.swt;version="1.16.0"
-Require-Bundle: org.eclipse.emf.ecp.view.stack.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.ui.view.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.core.runtime;bundle-version="[3.7.0,4.0.0)",
-  org.eclipse.emf.ecp.view.core.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.localization;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.core.databinding.observable;bundle-version="[1.4.0,2.0.0)",
-  org.eclipse.emfforms.swt.core;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.swt.core.di;bundle-version="[1.16.0,1.17.0)"
+Export-Package: org.eclipse.emf.ecp.view.internal.stack.ui.swt;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.spi.stack.ui.swt;version="1.17.0"
+Require-Bundle: org.eclipse.emf.ecp.view.stack.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.ui.view.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.core.runtime;bundle-version="[3.7.0,4.0.0)",
+ org.eclipse.emf.ecp.view.core.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.localization;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.core.databinding.observable;bundle-version="[1.4.0,2.0.0)",
+ org.eclipse.emfforms.swt.core;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.swt.core.di;bundle-version="[1.17.0,1.18.0]"
 Import-Package: javax.inject;version="1.0.0",
-  org.eclipse.emfforms.spi.common.report;version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.spi.core.services.databinding;version="[1.16.0,1.17.0)",
-  org.eclipse.swt;version="0.0.0",
-  org.eclipse.swt.custom;version="0.0.0",
-  org.eclipse.swt.widgets;version="0.0.0",
-  org.osgi.service.component.annotations;version="[1.2.0,2.0.0)";resolution:=optional
+ org.eclipse.emfforms.spi.common.report;version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.spi.core.services.databinding;version="[1.17.0,1.18.0]",
+ org.eclipse.swt;version="0.0.0",
+ org.eclipse.swt.custom;version="0.0.0",
+ org.eclipse.swt.widgets;version="0.0.0",
+ org.osgi.service.component.annotations;version="[1.2.0,2.0.0)";resolution:=optional
 Service-Component: OSGI-INF/SWTStackLayoutRendererService.xml,OSGI-INF/stackItemRendererService.xml
 Bundle-ActivationPolicy: lazy
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Automatic-Module-Name: org.eclipse.emf.ecp.view.stack.ui.swt
diff --git a/bundles/org.eclipse.emf.ecp.view.stack.ui.swt/pom.xml b/bundles/org.eclipse.emf.ecp.view.stack.ui.swt/pom.xml
index efd3f5a..4c26b8d 100644
--- a/bundles/org.eclipse.emf.ecp.view.stack.ui.swt/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.view.stack.ui.swt/pom.xml
@@ -7,7 +7,7 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
 
diff --git a/bundles/org.eclipse.emf.ecp.view.stack.viewmodel/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.view.stack.viewmodel/META-INF/MANIFEST.MF
index c2cfe29..8addccf 100644
--- a/bundles/org.eclipse.emf.ecp.view.stack.viewmodel/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.view.stack.viewmodel/META-INF/MANIFEST.MF
@@ -2,7 +2,8 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Stack Layout Viewmodel
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.stack.viewmodel;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Require-Bundle: org.eclipse.emf.ecp.view.model.provider.xmi;bundle-version="[1.16.0,1.17.0)"
+Require-Bundle: org.eclipse.emf.ecp.view.model.provider.xmi;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Automatic-Module-Name: org.eclipse.emf.ecp.view.stack.viewmodel
diff --git a/bundles/org.eclipse.emf.ecp.view.stack.viewmodel/pom.xml b/bundles/org.eclipse.emf.ecp.view.stack.viewmodel/pom.xml
index d09adfe..e156e87 100644
--- a/bundles/org.eclipse.emf.ecp.view.stack.viewmodel/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.view.stack.viewmodel/pom.xml
@@ -7,7 +7,7 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
 
diff --git a/bundles/org.eclipse.emf.ecp.view.stack.viewmodel/viewmodel/StackLayout.view b/bundles/org.eclipse.emf.ecp.view.stack.viewmodel/viewmodel/StackLayout.view
index ada4e4a..5b5d4fa 100644
--- a/bundles/org.eclipse.emf.ecp.view.stack.viewmodel/viewmodel/StackLayout.view
+++ b/bundles/org.eclipse.emf.ecp.view.stack.viewmodel/viewmodel/StackLayout.view
@@ -1,14 +1,14 @@
 <?xml version="1.0" encoding="ASCII"?>
-<org.eclipse.emf.ecp.view.model:View xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:org.eclipse.emf.ecp.view.model="http://org/eclipse/emf/ecp/view/model/170" xmi:id="_oSkxcEWAEeWfKJaajyNdyA">
+<org.eclipse.emf.ecp.view.model:View xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:org.eclipse.emf.ecp.view.model="http://org/eclipse/emf/ecp/view/model/1170" xmi:id="_oSkxcEWAEeWfKJaajyNdyA">
   <rootEClass href="http://org/eclipse/emf/ecp/view/stack/model#//StackLayout"/>
   <children xsi:type="org.eclipse.emf.ecp.view.model:Control" xmi:id="_oSlYgEWAEeWfKJaajyNdyA" name="Control name">
     <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_oSlYgUWAEeWfKJaajyNdyA">
-      <domainModelEFeature xsi:type="ecore:EAttribute" href="http://org/eclipse/emf/ecp/view/model/170#//Element/name"/>
+      <domainModelEFeature xsi:type="ecore:EAttribute" href="http://org/eclipse/emf/ecp/view/model/1170#//Element/name"/>
     </domainModelReference>
   </children>
   <children xsi:type="org.eclipse.emf.ecp.view.model:Control" xmi:id="_oSlYgkWAEeWfKJaajyNdyA" name="Control readonly">
     <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_oSlYg0WAEeWfKJaajyNdyA">
-      <domainModelEFeature xsi:type="ecore:EAttribute" href="http://org/eclipse/emf/ecp/view/model/170#//Element/readonly"/>
+      <domainModelEFeature xsi:type="ecore:EAttribute" href="http://org/eclipse/emf/ecp/view/model/1170#//Element/readonly"/>
     </domainModelReference>
   </children>
   <children xsi:type="org.eclipse.emf.ecp.view.model:Control" xmi:id="_oSlYhEWAEeWfKJaajyNdyA" name="dmr">
diff --git a/bundles/org.eclipse.emf.ecp.view.swt.layout/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.view.swt.layout/META-INF/MANIFEST.MF
index db1a44d..f586fd7 100644
--- a/bundles/org.eclipse.emf.ecp.view.swt.layout/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.view.swt.layout/META-INF/MANIFEST.MF
@@ -2,10 +2,10 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Default LayoutProvider
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.swt.layout;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emf.ecp.view.swt.internal.layout;version="1.16.0";x-internal:=true
-Require-Bundle: org.eclipse.emf.ecp.ui.view.swt;bundle-version="[1.16.0,1.17.0)"
+Export-Package: org.eclipse.emf.ecp.view.swt.internal.layout;version="1.17.0";x-internal:=true
+Require-Bundle: org.eclipse.emf.ecp.ui.view.swt;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Import-Package: org.eclipse.jface.layout;version="0.0.0",
   org.eclipse.swt;version="0.0.0",
@@ -15,3 +15,4 @@
   org.osgi.service.component.annotations;version="1.2.0"
 Service-Component: OSGI-INF/org.eclipse.emf.ecp.view.swt.internal.layout.ECPLayoutProvider.xml
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.view.swt.layout
diff --git a/bundles/org.eclipse.emf.ecp.view.swt.layout/pom.xml b/bundles/org.eclipse.emf.ecp.view.swt.layout/pom.xml
index b4b0a6e..c7107bd 100644
--- a/bundles/org.eclipse.emf.ecp.view.swt.layout/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.view.swt.layout/pom.xml
@@ -7,12 +7,12 @@
   <parent>

     <groupId>org.eclipse.emf.ecp</groupId>

     <artifactId>ecp-bundles-parent</artifactId>

-    <version>1.16.0-SNAPSHOT</version>

+    <version>1.17.0-SNAPSHOT</version>

     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>

   </parent>

 

   <artifactId>org.eclipse.emf.ecp.view.swt.layout</artifactId>

   <packaging>eclipse-plugin</packaging>

-  <version>1.16.0-SNAPSHOT</version>

+  <version>1.17.0-SNAPSHOT</version>

 

 </project>

diff --git a/bundles/org.eclipse.emf.ecp.view.table.celleditor.rcp/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.view.table.celleditor.rcp/META-INF/MANIFEST.MF
index 2b44de7..4939389 100644
--- a/bundles/org.eclipse.emf.ecp.view.table.celleditor.rcp/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.view.table.celleditor.rcp/META-INF/MANIFEST.MF
@@ -2,17 +2,18 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Table UI SWT Additional Cell Editors for Non-RAP Applications
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.table.celleditor.rcp;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emf.ecp.view.internal.table.celleditor.rcp;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.view.spi.table.celleditor.rcp;version="1.16.0";x-internal:=true
+Export-Package: org.eclipse.emf.ecp.view.internal.table.celleditor.rcp;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.spi.table.celleditor.rcp;version="1.17.0";x-internal:=true
 Require-Bundle: org.eclipse.jface;bundle-version="[3.7.0,4.0.0)",
-  org.eclipse.emf.ecp.edit.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.core.databinding.property;bundle-version="[1.4.0,2.0.0)",
-  org.eclipse.emf.ecp.view.context;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.core.runtime;bundle-version="[3.4.0,4.0.0)",
-  org.eclipse.jface.databinding;bundle-version="[1.4.0,2.0.0)",
-  org.eclipse.emf.ecp.view.util.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.databinding;bundle-version="[1.3.0,2.0.0)"
+ org.eclipse.emf.ecp.edit.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.core.databinding.property;bundle-version="[1.4.0,2.0.0)",
+ org.eclipse.emf.ecp.view.context;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.core.runtime;bundle-version="[3.4.0,4.0.0)",
+ org.eclipse.jface.databinding;bundle-version="[1.4.0,2.0.0)",
+ org.eclipse.emf.ecp.view.util.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.databinding;bundle-version="[1.3.0,2.0.0)"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.view.table.celleditor.rcp
diff --git a/bundles/org.eclipse.emf.ecp.view.table.celleditor.rcp/pom.xml b/bundles/org.eclipse.emf.ecp.view.table.celleditor.rcp/pom.xml
index 38f4c08..8ae46fd 100644
--- a/bundles/org.eclipse.emf.ecp.view.table.celleditor.rcp/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.view.table.celleditor.rcp/pom.xml
@@ -5,11 +5,11 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emf.ecp.view.table.celleditor.rcp</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 </project>
diff --git a/bundles/org.eclipse.emf.ecp.view.table.columnservice/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.view.table.columnservice/META-INF/MANIFEST.MF
index c1abe62..641a49e 100644
--- a/bundles/org.eclipse.emf.ecp.view.table.columnservice/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.view.table.columnservice/META-INF/MANIFEST.MF
@@ -2,15 +2,16 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: ECP View Table Column Service
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.table.columnservice;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Activator: org.eclipse.emf.ecp.view.internal.table.columnservice.Activator
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emf.ecp.view.internal.table.columnservice;version="1.16.0";x-friends:="org.eclipse.emf.ecp.view.table.ui.swt.test"
-Require-Bundle: org.eclipse.emf.ecp.view.context;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.table.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.core.runtime;bundle-version="[3.8.0,4.0.0)",
-  org.eclipse.emfforms.core.services;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.core.databinding.property;bundle-version="[1.4.0,2.0.0)"
+Export-Package: org.eclipse.emf.ecp.view.internal.table.columnservice;version="1.17.0";x-friends:="org.eclipse.emf.ecp.view.table.ui.swt.test"
+Require-Bundle: org.eclipse.emf.ecp.view.context;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.table.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.core.runtime;bundle-version="[3.8.0,4.0.0)",
+ org.eclipse.emfforms.core.services;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.core.databinding.property;bundle-version="[1.4.0,2.0.0)"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
-Import-Package: org.eclipse.emfforms.spi.common.report;version="[1.16.0,1.17.0)"
+Import-Package: org.eclipse.emfforms.spi.common.report;version="[1.17.0,1.18.0]"
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.view.table.columnservice
diff --git a/bundles/org.eclipse.emf.ecp.view.table.columnservice/pom.xml b/bundles/org.eclipse.emf.ecp.view.table.columnservice/pom.xml
index bd4c7cf..4f1ec9d 100644
--- a/bundles/org.eclipse.emf.ecp.view.table.columnservice/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.view.table.columnservice/pom.xml
@@ -7,12 +7,12 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
 
   <artifactId>org.eclipse.emf.ecp.view.table.columnservice</artifactId>
   <packaging>eclipse-plugin</packaging>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
 
 </project>
diff --git a/bundles/org.eclipse.emf.ecp.view.table.edapt/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.view.table.edapt/META-INF/MANIFEST.MF
index c615d21..b63ab52 100644
--- a/bundles/org.eclipse.emf.ecp.view.table.edapt/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.view.table.edapt/META-INF/MANIFEST.MF
@@ -2,9 +2,10 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Edapt Migration for Table View Model
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.table.edapt;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emf.ecp.view.table.edapt._140to150;version="1.16.0";x-internal:=true
+Export-Package: org.eclipse.emf.ecp.view.table.edapt._140to150;version="1.17.0";x-internal:=true
 Require-Bundle: org.eclipse.emf.edapt.migration;bundle-version="[1.0.0,2.0.0)"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.view.table.edapt
diff --git a/bundles/org.eclipse.emf.ecp.view.table.edapt/pom.xml b/bundles/org.eclipse.emf.ecp.view.table.edapt/pom.xml
index def9c64..1f9d490 100644
--- a/bundles/org.eclipse.emf.ecp.view.table.edapt/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.view.table.edapt/pom.xml
@@ -5,11 +5,11 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emf.ecp.view.table.edapt</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 </project>
diff --git a/bundles/org.eclipse.emf.ecp.view.table.model.edit/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.view.table.model.edit/META-INF/MANIFEST.MF
index 8a8819a..bc0af81 100644
--- a/bundles/org.eclipse.emf.ecp.view.table.model.edit/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.view.table.model.edit/META-INF/MANIFEST.MF
@@ -2,18 +2,19 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.table.model.edit;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-ClassPath: .
 Bundle-Activator: org.eclipse.emf.ecp.view.spi.table.model.provider.TableEditPlugin$Implementation
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
-Export-Package: org.eclipse.emf.ecp.view.spi.table.model.provider;version="1.16.0"
+Export-Package: org.eclipse.emf.ecp.view.spi.table.model.provider;version="1.17.0"
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.7.0,4.0.0)",
-  org.eclipse.emf.ecp.view.table.model;bundle-version="[1.16.0,1.17.0)";visibility:=reexport,
-  org.eclipse.emf.edit;bundle-version="[2.8.0,3.0.0)";visibility:=reexport,
-  org.eclipse.emf.ecore;bundle-version="[2.7.0,3.0.0)";visibility:=reexport,
-  org.eclipse.emf.ecore.edit;bundle-version="[2.7.0,3.0.0)";visibility:=reexport,
-  org.eclipse.emf.ecp.view.model;bundle-version="[1.16.0,1.17.0)";visibility:=reexport,
-  org.eclipse.emf.ecp.view.model.edit;bundle-version="[1.16.0,1.17.0)";visibility:=reexport
+ org.eclipse.emf.ecp.view.table.model;bundle-version="[1.17.0,1.18.0]";visibility:=reexport,
+ org.eclipse.emf.edit;bundle-version="[2.8.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.ecore;bundle-version="[2.7.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.ecore.edit;bundle-version="[2.7.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.ecp.view.model;bundle-version="[1.17.0,1.18.0]";visibility:=reexport,
+ org.eclipse.emf.ecp.view.model.edit;bundle-version="[1.17.0,1.18.0]";visibility:=reexport
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.view.table.model.edit
diff --git a/bundles/org.eclipse.emf.ecp.view.table.model.edit/plugin.xml b/bundles/org.eclipse.emf.ecp.view.table.model.edit/plugin.xml
index e034794..37fdaa2 100644
--- a/bundles/org.eclipse.emf.ecp.view.table.model.edit/plugin.xml
+++ b/bundles/org.eclipse.emf.ecp.view.table.model.edit/plugin.xml
@@ -29,7 +29,7 @@
 

    <extension point="org.eclipse.emf.edit.childCreationExtenders">

       <extender

-            uri="http://org/eclipse/emf/ecp/view/model/170"

+            uri="http://org/eclipse/emf/ecp/view/model/1170"

             class="org.eclipse.emf.ecp.view.spi.table.model.provider.TableItemProviderAdapterFactory$ViewChildCreationExtender"/>

    </extension>

 

diff --git a/bundles/org.eclipse.emf.ecp.view.table.model.edit/pom.xml b/bundles/org.eclipse.emf.ecp.view.table.model.edit/pom.xml
index 75e0af2..f882a6f 100644
--- a/bundles/org.eclipse.emf.ecp.view.table.model.edit/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.view.table.model.edit/pom.xml
@@ -7,12 +7,12 @@
   <parent>

     <groupId>org.eclipse.emf.ecp</groupId>

     <artifactId>ecp-bundles-parent</artifactId>

-    <version>1.16.0-SNAPSHOT</version>

+    <version>1.17.0-SNAPSHOT</version>

     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>

   </parent>

 

   <artifactId>org.eclipse.emf.ecp.view.table.model.edit</artifactId>

   <packaging>eclipse-plugin</packaging>

-  <version>1.16.0-SNAPSHOT</version>

+  <version>1.17.0-SNAPSHOT</version>

 

 </project>

diff --git a/bundles/org.eclipse.emf.ecp.view.table.model/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.view.table.model/META-INF/MANIFEST.MF
index 697ab44..7e24527 100644
--- a/bundles/org.eclipse.emf.ecp.view.table.model/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.view.table.model/META-INF/MANIFEST.MF
@@ -2,25 +2,26 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.table.model;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-ClassPath: .
 Bundle-Activator: org.eclipse.emf.ecp.view.internal.table.model.Activator
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
-Export-Package: org.eclipse.emf.ecp.view.internal.table.generator;version="1.16.0";x-friends:="org.eclipse.emf.ecp.view.table.columnservice,org.eclipse.emf.ecp.view.table.editor",
-  org.eclipse.emf.ecp.view.internal.table.model;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.view.spi.table.model;version="1.16.0",
-  org.eclipse.emf.ecp.view.spi.table.model.impl;version="1.16.0",
-  org.eclipse.emf.ecp.view.spi.table.model.util;version="1.16.0"
+Export-Package: org.eclipse.emf.ecp.view.internal.table.generator;version="1.17.0";x-friends:="org.eclipse.emf.ecp.view.table.columnservice,org.eclipse.emf.ecp.view.table.editor",
+ org.eclipse.emf.ecp.view.internal.table.model;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.spi.table.model;version="1.17.0",
+ org.eclipse.emf.ecp.view.spi.table.model.impl;version="1.17.0",
+ org.eclipse.emf.ecp.view.spi.table.model.util;version="1.17.0"
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.7.0,4.0.0)",
-  org.eclipse.emf.ecore;bundle-version="[2.7.0,3.0.0)";visibility:=reexport,
-  org.eclipse.emf.ecp.view.model;bundle-version="[1.16.0,1.17.0)";visibility:=reexport,
-  org.eclipse.emfforms.core.services;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.core.databinding.property;bundle-version="[1.4.0,2.0.0)"
+ org.eclipse.emf.ecore;bundle-version="[2.7.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.ecp.view.model;bundle-version="[1.17.0,1.18.0]";visibility:=reexport,
+ org.eclipse.emfforms.core.services;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.core.databinding.property;bundle-version="[1.4.0,2.0.0)"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Bundle-ActivationPolicy: lazy
 Service-Component: OSGI-INF/org.eclipse.emf.ecp.view.internal.table.model.TableDMRConverter.xml
 Import-Package: org.eclipse.emf.databinding;version="0.0.0",
-  org.eclipse.emfforms.spi.common.report;version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.spi.core.services.databinding.emf;version="[1.16.0,1.17.0)",
-  org.osgi.service.component.annotations;version="1.2.0"
+ org.eclipse.emfforms.spi.common.report;version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.spi.core.services.databinding.emf;version="[1.17.0,1.18.0]",
+ org.osgi.service.component.annotations;version="1.2.0"
+Automatic-Module-Name: org.eclipse.emf.ecp.view.table.model
diff --git a/bundles/org.eclipse.emf.ecp.view.table.model/pom.xml b/bundles/org.eclipse.emf.ecp.view.table.model/pom.xml
index 32c53cc..da8edd8 100644
--- a/bundles/org.eclipse.emf.ecp.view.table.model/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.view.table.model/pom.xml
@@ -7,12 +7,12 @@
   <parent>

     <groupId>org.eclipse.emf.ecp</groupId>

     <artifactId>ecp-bundles-parent</artifactId>

-    <version>1.16.0-SNAPSHOT</version>

+    <version>1.17.0-SNAPSHOT</version>

     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>

   </parent>

 

   <artifactId>org.eclipse.emf.ecp.view.table.model</artifactId>

   <packaging>eclipse-plugin</packaging>

-  <version>1.16.0-SNAPSHOT</version>

+  <version>1.17.0-SNAPSHOT</version>

 

 </project>

diff --git a/bundles/org.eclipse.emf.ecp.view.table.model/src/org/eclipse/emf/ecp/view/internal/table/generator/TableColumnGenerator.java b/bundles/org.eclipse.emf.ecp.view.table.model/src/org/eclipse/emf/ecp/view/internal/table/generator/TableColumnGenerator.java
index 2a4e765..a234a2f 100644
--- a/bundles/org.eclipse.emf.ecp.view.table.model/src/org/eclipse/emf/ecp/view/internal/table/generator/TableColumnGenerator.java
+++ b/bundles/org.eclipse.emf.ecp.view.table.model/src/org/eclipse/emf/ecp/view/internal/table/generator/TableColumnGenerator.java
@@ -39,7 +39,7 @@
 	 * @param vTableControl the table control to use
 	 */
 	public static void generateColumns(EClass clazz, VTableControl vTableControl) {
-		final EList<EAttribute> attributes = clazz.getEAttributes();
+		final EList<EAttribute> attributes = clazz.getEAllAttributes();
 		for (final EAttribute a : attributes) {
 			addColumn(a, vTableControl);
 		}
diff --git a/bundles/org.eclipse.emf.ecp.view.table.ui.nebula.grid/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.view.table.ui.nebula.grid/META-INF/MANIFEST.MF
index 8bf39e67..e0bbfba 100644
--- a/bundles/org.eclipse.emf.ecp.view.table.ui.nebula.grid/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.view.table.ui.nebula.grid/META-INF/MANIFEST.MF
@@ -2,56 +2,57 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: EMF Forms Nebula Grid Table UI
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.table.ui.nebula.grid;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
 Bundle-Localization: OSGI-INF/l10n/bundle
-Export-Package: org.eclipse.emf.ecp.view.internal.table.nebula.grid;version="1.16.0",
-  org.eclipse.emf.ecp.view.spi.table.nebula.grid;version="1.16.0"
-Require-Bundle: org.eclipse.emf.ecp.edit.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.databinding.edit;bundle-version="[1.3.0,2.0.0)",
-  org.eclipse.emfforms.common;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.core.databinding.property;bundle-version="[1.4.0,2.0.0)",
-  org.eclipse.emfforms.core.services;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.core.commands;bundle-version="[3.5.0,4.0.0)",
-  org.eclipse.emfforms.swt.core.di;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.table.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.context;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.swt.core;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.swt.table;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.template.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.table.ui.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.util.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services.editsupport;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.core.swt;bundle-version="[1.16.0,1.17.0)";visibility:=reexport,
-  org.eclipse.emf.ecp.ui.view.swt;bundle-version="[1.16.0,1.17.0)"
+Export-Package: org.eclipse.emf.ecp.view.internal.table.nebula.grid;version="1.17.0",
+ org.eclipse.emf.ecp.view.spi.table.nebula.grid;version="1.17.0"
+Require-Bundle: org.eclipse.emf.ecp.edit.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.databinding.edit;bundle-version="[1.3.0,2.0.0)",
+ org.eclipse.emfforms.common;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.core.databinding.property;bundle-version="[1.4.0,2.0.0)",
+ org.eclipse.emfforms.core.services;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.core.commands;bundle-version="[3.5.0,4.0.0)",
+ org.eclipse.emfforms.swt.core.di;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.table.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.context;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.swt.core;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.swt.table;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.template.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.table.ui.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.util.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services.editsupport;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.core.swt;bundle-version="[1.17.0,1.18.0]";visibility:=reexport,
+ org.eclipse.emf.ecp.ui.view.swt;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Service-Component: OSGI-INF/GridControlSWTRendererService.xml,OSGI-INF/org.eclipse.emf.ecp.view.internal.table.nebula.grid.GridControlDetailPanelSWTRendererService.xml
 Bundle-ActivationPolicy: lazy
 Import-Package: javax.inject;version="1.0.0",
-  org.eclipse.emf.ecp.view.spi.table.model;version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.spi.table.swt;version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.spi.common.report;version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.spi.core.services.databinding.emf;version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.spi.localization;version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.spi.swt.core.di;version="[1.16.0,1.17.0)",
-  org.eclipse.jface.action;version="0.0.0",
-  org.eclipse.jface.databinding.swt;version="0.0.0",
-  org.eclipse.jface.databinding.viewers;version="0.0.0",
-  org.eclipse.jface.dialogs;version="0.0.0",
-  org.eclipse.jface.layout;version="0.0.0",
-  org.eclipse.jface.resource;version="0.0.0",
-  org.eclipse.jface.viewers;version="0.0.0",
-  org.eclipse.jface.window;version="0.0.0",
-  org.eclipse.nebula.jface.gridviewer;version="0.0.0",
-  org.eclipse.nebula.widgets.grid;version="0.0.0",
-  org.eclipse.nebula.widgets.grid.internal;version="0.0.0",
-  org.eclipse.osgi.util;version="1.1.0",
-  org.eclipse.swt;version="0.0.0",
-  org.eclipse.swt.custom;version="0.0.0",
-  org.eclipse.swt.dnd;version="0.0.0",
-  org.eclipse.swt.events;version="0.0.0",
-  org.eclipse.swt.graphics;version="0.0.0",
-  org.eclipse.swt.layout;version="0.0.0",
-  org.eclipse.swt.widgets;version="0.0.0",
-  org.osgi.framework;version="1.8.0",
-  org.osgi.service.component.annotations;version="1.2.0";resolution:=optional
+ org.eclipse.emf.ecp.view.spi.table.model;version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.spi.table.swt;version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.spi.common.report;version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.spi.core.services.databinding.emf;version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.spi.localization;version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.spi.swt.core.di;version="[1.17.0,1.18.0]",
+ org.eclipse.jface.action;version="0.0.0",
+ org.eclipse.jface.databinding.swt;version="0.0.0",
+ org.eclipse.jface.databinding.viewers;version="0.0.0",
+ org.eclipse.jface.dialogs;version="0.0.0",
+ org.eclipse.jface.layout;version="0.0.0",
+ org.eclipse.jface.resource;version="0.0.0",
+ org.eclipse.jface.viewers;version="0.0.0",
+ org.eclipse.jface.window;version="0.0.0",
+ org.eclipse.nebula.jface.gridviewer;version="0.0.0",
+ org.eclipse.nebula.widgets.grid;version="0.0.0",
+ org.eclipse.nebula.widgets.grid.internal;version="0.0.0",
+ org.eclipse.osgi.util;version="1.1.0",
+ org.eclipse.swt;version="0.0.0",
+ org.eclipse.swt.custom;version="0.0.0",
+ org.eclipse.swt.dnd;version="0.0.0",
+ org.eclipse.swt.events;version="0.0.0",
+ org.eclipse.swt.graphics;version="0.0.0",
+ org.eclipse.swt.layout;version="0.0.0",
+ org.eclipse.swt.widgets;version="0.0.0",
+ org.osgi.framework;version="1.8.0",
+ org.osgi.service.component.annotations;version="1.2.0";resolution:=optional
+Automatic-Module-Name: org.eclipse.emf.ecp.view.table.ui.nebula.grid
diff --git a/bundles/org.eclipse.emf.ecp.view.table.ui.nebula.grid/pom.xml b/bundles/org.eclipse.emf.ecp.view.table.ui.nebula.grid/pom.xml
index 3b85d51..93689e0 100644
--- a/bundles/org.eclipse.emf.ecp.view.table.ui.nebula.grid/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.view.table.ui.nebula.grid/pom.xml
@@ -7,12 +7,12 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
 
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emf.ecp.view.table.ui.nebula.grid</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 </project>
diff --git a/bundles/org.eclipse.emf.ecp.view.table.ui.nebula.grid/src/org/eclipse/emf/ecp/view/internal/table/nebula/grid/GridPasteKeyListener.java b/bundles/org.eclipse.emf.ecp.view.table.ui.nebula.grid/src/org/eclipse/emf/ecp/view/internal/table/nebula/grid/GridPasteKeyListener.java
index ffda02f..671187c 100644
--- a/bundles/org.eclipse.emf.ecp.view.table.ui.nebula.grid/src/org/eclipse/emf/ecp/view/internal/table/nebula/grid/GridPasteKeyListener.java
+++ b/bundles/org.eclipse.emf.ecp.view.table.ui.nebula.grid/src/org/eclipse/emf/ecp/view/internal/table/nebula/grid/GridPasteKeyListener.java
@@ -448,7 +448,7 @@
 
 		final EEnum eEnum = (EEnum) feature.getEType();
 		for (final EEnumLiteral literal : eEnum.getELiterals()) {
-			final String isInputtable = EcoreUtil.getAnnotation(literal, VViewPackage.eNS_URI,
+			final String isInputtable = EcoreUtil.getAnnotation(literal, VViewPackage.NS_URI_170,
 				IS_INPUTTABLE);
 
 			if (literal.getLiteral().equals(cellValue) && isInputtable != null) {
diff --git a/bundles/org.eclipse.emf.ecp.view.table.ui.nebula.grid/src/org/eclipse/emf/ecp/view/spi/table/nebula/grid/GridViewerColumnBuilder.java b/bundles/org.eclipse.emf.ecp.view.table.ui.nebula.grid/src/org/eclipse/emf/ecp/view/spi/table/nebula/grid/GridViewerColumnBuilder.java
index 89d00cb..9a91191 100644
--- a/bundles/org.eclipse.emf.ecp.view.table.ui.nebula.grid/src/org/eclipse/emf/ecp/view/spi/table/nebula/grid/GridViewerColumnBuilder.java
+++ b/bundles/org.eclipse.emf.ecp.view.table.ui.nebula.grid/src/org/eclipse/emf/ecp/view/spi/table/nebula/grid/GridViewerColumnBuilder.java
@@ -16,6 +16,7 @@
 import org.eclipse.emfforms.common.Property.ChangeListener;
 import org.eclipse.emfforms.spi.swt.table.AbstractTableViewerColumnBuilder;
 import org.eclipse.emfforms.spi.swt.table.ColumnConfiguration;
+import org.eclipse.jface.databinding.swt.WidgetValueProperty;
 import org.eclipse.jface.layout.GridDataFactory;
 import org.eclipse.jface.layout.GridLayoutFactory;
 import org.eclipse.jface.viewers.EditingSupport;
@@ -36,6 +37,7 @@
 import org.eclipse.swt.widgets.Item;
 import org.eclipse.swt.widgets.Listener;
 import org.eclipse.swt.widgets.Text;
+import org.eclipse.swt.widgets.Widget;
 
 /**
  * Nebula Grid viewer configuration helper class.
@@ -70,6 +72,12 @@
 	}
 
 	@Override
+	protected void configureDatabinding(Widget column) {
+		super.configureDatabinding(column);
+		bindValue(column, new GridColumnTooltipTextProperty(), getConfig().getColumnTooltip());
+	}
+
+	@Override
 	protected Item getTableColumn(GridViewerColumn viewerColumn) {
 		return viewerColumn.getColumn();
 	}
@@ -226,4 +234,32 @@
 		return filterComposite;
 	}
 
+	/**
+	 * Internal class to bind the GridColumn's TooltipText using JFace Databinding.
+	 *
+	 * @author Eugen Neufeld
+	 *
+	 */
+	class GridColumnTooltipTextProperty extends WidgetValueProperty {
+
+		@Override
+		public String toString() {
+			return "GridColumn.toolTipText <String>"; //$NON-NLS-1$
+		}
+
+		@Override
+		public Object getValueType() {
+			return String.class;
+		}
+
+		@Override
+		protected Object doGetValue(Object source) {
+			return ((GridColumn) source).getHeaderTooltip();
+		}
+
+		@Override
+		protected void doSetValue(Object source, Object value) {
+			((GridColumn) source).setHeaderTooltip((String) value);
+		}
+	}
 }
diff --git a/bundles/org.eclipse.emf.ecp.view.table.ui.rcp/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.view.table.ui.rcp/META-INF/MANIFEST.MF
index d5b10b0..2b76af8 100644
--- a/bundles/org.eclipse.emf.ecp.view.table.ui.rcp/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.view.table.ui.rcp/META-INF/MANIFEST.MF
@@ -2,29 +2,30 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Table UI RCP
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.table.ui.rcp
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emf.ecp.view.internal.table.ui.rcp;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.view.spi.table.ui.rcp;version="1.16.0"
+Export-Package: org.eclipse.emf.ecp.view.internal.table.ui.rcp;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.spi.table.ui.rcp;version="1.17.0"
 Require-Bundle: org.eclipse.swt;bundle-version="[3.0.0,4.0.0)",
-  org.eclipse.jface;bundle-version="[3.0.0,4.0.0)",
-  org.eclipse.emf.edit.ui;bundle-version="[2.7.0,3.0.0)",
-  org.eclipse.emf.ecp.view.table.ui.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.table.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.context;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services.emf;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.template.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.util.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services.editsupport;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.core.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.ui.view.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.core.databinding;bundle-version="[1.5.0,2.0.0)",
-  org.eclipse.emf.databinding.edit;bundle-version="[1.3.0,2.0.0)",
-  org.eclipse.emfforms.swt.table;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.swt.core.di;bundle-version="[1.16.0,1.17.0)"
+ org.eclipse.jface;bundle-version="[3.0.0,4.0.0)",
+ org.eclipse.emf.edit.ui;bundle-version="[2.7.0,3.0.0)",
+ org.eclipse.emf.ecp.view.table.ui.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.table.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.context;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services.emf;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.template.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.util.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services.editsupport;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.core.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.ui.view.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.core.databinding;bundle-version="[1.5.0,2.0.0)",
+ org.eclipse.emf.databinding.edit;bundle-version="[1.3.0,2.0.0)",
+ org.eclipse.emfforms.swt.table;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.swt.core.di;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Import-Package: javax.inject;version="1.0.0",
- org.eclipse.emf.ecp.edit.spi.swt.util;version="[1.16.0,1.17.0)",
+ org.eclipse.emf.ecp.edit.spi.swt.util;version="[1.17.0,1.18.0]",
  org.osgi.service.component.annotations;version="1.2.0";resolution:=optional
 Service-Component: OSGI-INF/TableControlRCPRendererService.xml,OSGI-INF/TableControlDetailDialogRCPRendererService.xml,OSGI-INF/TableControlDetailPanelRCPRendererService.xml
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.view.table.ui.rcp
diff --git a/bundles/org.eclipse.emf.ecp.view.table.ui.rcp/pom.xml b/bundles/org.eclipse.emf.ecp.view.table.ui.rcp/pom.xml
index c736066..248f98b 100644
--- a/bundles/org.eclipse.emf.ecp.view.table.ui.rcp/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.view.table.ui.rcp/pom.xml
@@ -7,12 +7,12 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
 
   <artifactId>org.eclipse.emf.ecp.view.table.ui.rcp</artifactId>
   <packaging>eclipse-plugin</packaging>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
 
 </project>
diff --git a/bundles/org.eclipse.emf.ecp.view.table.ui.swt.persistedstate/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.view.table.ui.swt.persistedstate/META-INF/MANIFEST.MF
index b83fb60..e171e53 100644
--- a/bundles/org.eclipse.emf.ecp.view.table.ui.swt.persistedstate/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.view.table.ui.swt.persistedstate/META-INF/MANIFEST.MF
@@ -2,15 +2,16 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Table UI SWT Service for Persisting State
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.table.ui.swt.persistedstate
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Activator: org.eclipse.emf.ecp.internal.view.table.ui.swt.persistedstate.Activator
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emf.ecp.internal.view.table.ui.swt.persistedstate;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.spi.view.table.ui.swt.persistedstate;version="1.16.0"
-Require-Bundle: org.eclipse.emf.ecp.view.context;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.table.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.core.runtime;bundle-version="[3.4.0,4.0.0)"
+Export-Package: org.eclipse.emf.ecp.internal.view.table.ui.swt.persistedstate;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.spi.view.table.ui.swt.persistedstate;version="1.17.0"
+Require-Bundle: org.eclipse.emf.ecp.view.context;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.table.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.core.runtime;bundle-version="[3.4.0,4.0.0)"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Service-Component: OSGI-INF/PersistTableStateServiceFactory.xml
 Bundle-ActivationPolicy: lazy
 Import-Package: org.osgi.service.component.annotations;version="1.2.0";resolution:=optional
+Automatic-Module-Name: org.eclipse.emf.ecp.view.table.ui.swt.persistedstate
diff --git a/bundles/org.eclipse.emf.ecp.view.table.ui.swt.persistedstate/pom.xml b/bundles/org.eclipse.emf.ecp.view.table.ui.swt.persistedstate/pom.xml
index a4cdb67..e0d5940 100644
--- a/bundles/org.eclipse.emf.ecp.view.table.ui.swt.persistedstate/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.view.table.ui.swt.persistedstate/pom.xml
@@ -7,12 +7,12 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
 
   <artifactId>org.eclipse.emf.ecp.view.table.ui.swt.persistedstate</artifactId>
   <packaging>eclipse-plugin</packaging>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
 
 </project>
diff --git a/bundles/org.eclipse.emf.ecp.view.table.ui.swt/.settings/.api_filters b/bundles/org.eclipse.emf.ecp.view.table.ui.swt/.settings/.api_filters
index 9d928c8..3e9a7b1 100644
--- a/bundles/org.eclipse.emf.ecp.view.table.ui.swt/.settings/.api_filters
+++ b/bundles/org.eclipse.emf.ecp.view.table.ui.swt/.settings/.api_filters
@@ -1,6 +1,12 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
 <component id="org.eclipse.emf.ecp.view.table.ui.swt" version="2">
     <resource path="META-INF/MANIFEST.MF">
+        <filter comment="SPI Changes in 1.17" id="923795461">
+            <message_arguments>
+                <message_argument value="1.17.0"/>
+                <message_argument value="1.16.0"/>
+            </message_arguments>
+        </filter>
         <filter comment="SPI Change in 1.6" id="923795461">
             <message_arguments>
                 <message_argument value="1.6.0"/>
@@ -51,6 +57,12 @@
         </filter>
     </resource>
     <resource path="src/org/eclipse/emf/ecp/view/spi/table/swt/TableControlSWTRenderer.java" type="org.eclipse.emf.ecp.view.spi.table.swt.TableControlSWTRenderer">
+        <filter comment="SPI Changes in 1.17" id="336658481">
+            <message_arguments>
+                <message_argument value="org.eclipse.emf.ecp.view.spi.table.swt.TableControlSWTRenderer"/>
+                <message_argument value="VALIDATION_PREFERRED_SIZE"/>
+            </message_arguments>
+        </filter>
         <filter comment="SPI Change 1.8.0" id="338722907">
             <message_arguments>
                 <message_argument value="org.eclipse.emf.ecp.view.spi.table.swt.TableControlSWTRenderer"/>
diff --git a/bundles/org.eclipse.emf.ecp.view.table.ui.swt/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.view.table.ui.swt/META-INF/MANIFEST.MF
index 50ac551..955fd50 100644
--- a/bundles/org.eclipse.emf.ecp.view.table.ui.swt/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.view.table.ui.swt/META-INF/MANIFEST.MF
@@ -2,48 +2,49 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Table UI SWT
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.table.ui.swt;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Activator: org.eclipse.emf.ecp.view.internal.table.swt.Activator
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emf.ecp.view.internal.table.swt;version="1.16.0";x-friends:="org.eclipse.emf.ecp.view.ui.editor.test,org.eclipse.emf.ecp.view.table.ui.swt.test",
-  org.eclipse.emf.ecp.view.spi.table.swt;version="1.16.0"
+Export-Package: org.eclipse.emf.ecp.view.internal.table.swt;version="1.17.0";x-friends:="org.eclipse.emf.ecp.view.ui.editor.test,org.eclipse.emf.ecp.view.table.ui.swt.test",
+ org.eclipse.emf.ecp.view.spi.table.swt;version="1.17.0"
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.7.0,4.0.0)",
-  org.eclipse.emf.ecp.ui.view.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.table.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.ui.view;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.edit;bundle-version="[2.8.0,3.0.0)",
-  org.eclipse.emf.ecp.edit.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.core.databinding.property;bundle-version="[1.4.0,2.0.0)",
-  org.eclipse.core.commands;bundle-version="[3.5.0,4.0.0)",
-  org.eclipse.emf.ecp.view.core.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.template.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.util.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.localization;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.swt.core;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.databinding;bundle-version="[1.3.0,2.0.0)",
-  org.eclipse.emfforms.core.services.editsupport;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.swt.core.di;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.swt.table;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.common;bundle-version="[1.16.0,1.17.0)"
+ org.eclipse.emf.ecp.ui.view.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.table.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.ui.view;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.edit;bundle-version="[2.8.0,3.0.0)",
+ org.eclipse.emf.ecp.edit.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.core.databinding.property;bundle-version="[1.4.0,2.0.0)",
+ org.eclipse.core.commands;bundle-version="[3.5.0,4.0.0)",
+ org.eclipse.emf.ecp.view.core.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.template.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.util.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.localization;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.swt.core;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.databinding;bundle-version="[1.3.0,2.0.0)",
+ org.eclipse.emfforms.core.services.editsupport;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.swt.core.di;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.swt.table;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.common;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Service-Component: OSGI-INF/tableDetailDialogRendererService.xml,OSGI-INF/tableDetailPanelRendererService.xml,OSGI-INF/tableRendererService.xml
 Bundle-ActivationPolicy: lazy
 Import-Package: javax.inject;version="1.0.0",
-  org.eclipse.emf.edit.ui.dnd;version="0.0.0",
-  org.eclipse.emfforms.spi.common.report;version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.spi.core.services.databinding.emf;version="[1.16.0,1.17.0)",
-  org.eclipse.jface.databinding.swt;version="0.0.0",
-  org.eclipse.jface.databinding.viewers;version="0.0.0",
-  org.eclipse.jface.dialogs;version="0.0.0",
-  org.eclipse.jface.layout;version="0.0.0",
-  org.eclipse.jface.resource;version="0.0.0",
-  org.eclipse.jface.viewers;version="0.0.0",
-  org.eclipse.jface.window;version="0.0.0",
-  org.eclipse.swt;version="0.0.0",
-  org.eclipse.swt.custom;version="0.0.0",
-  org.eclipse.swt.dnd;version="0.0.0",
-  org.eclipse.swt.events;version="0.0.0",
-  org.eclipse.swt.graphics;version="0.0.0",
-  org.eclipse.swt.layout;version="0.0.0",
-  org.eclipse.swt.widgets;version="0.0.0"
+ org.eclipse.emf.edit.ui.dnd;version="0.0.0",
+ org.eclipse.emfforms.spi.common.report;version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.spi.core.services.databinding.emf;version="[1.17.0,1.18.0]",
+ org.eclipse.jface.databinding.swt;version="0.0.0",
+ org.eclipse.jface.databinding.viewers;version="0.0.0",
+ org.eclipse.jface.dialogs;version="0.0.0",
+ org.eclipse.jface.layout;version="0.0.0",
+ org.eclipse.jface.resource;version="0.0.0",
+ org.eclipse.jface.viewers;version="0.0.0",
+ org.eclipse.jface.window;version="0.0.0",
+ org.eclipse.swt;version="0.0.0",
+ org.eclipse.swt.custom;version="0.0.0",
+ org.eclipse.swt.dnd;version="0.0.0",
+ org.eclipse.swt.events;version="0.0.0",
+ org.eclipse.swt.graphics;version="0.0.0",
+ org.eclipse.swt.layout;version="0.0.0",
+ org.eclipse.swt.widgets;version="0.0.0"
+Automatic-Module-Name: org.eclipse.emf.ecp.view.table.ui.swt
diff --git a/bundles/org.eclipse.emf.ecp.view.table.ui.swt/pom.xml b/bundles/org.eclipse.emf.ecp.view.table.ui.swt/pom.xml
index 7b69ac6..fdad9f6 100644
--- a/bundles/org.eclipse.emf.ecp.view.table.ui.swt/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.view.table.ui.swt/pom.xml
@@ -7,12 +7,12 @@
   <parent>

     <groupId>org.eclipse.emf.ecp</groupId>

     <artifactId>ecp-bundles-parent</artifactId>

-    <version>1.16.0-SNAPSHOT</version>

+    <version>1.17.0-SNAPSHOT</version>

     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>

   </parent>

 

   <artifactId>org.eclipse.emf.ecp.view.table.ui.swt</artifactId>

   <packaging>eclipse-plugin</packaging>

-  <version>1.16.0-SNAPSHOT</version>

+  <version>1.17.0-SNAPSHOT</version>

 

 </project>

diff --git a/bundles/org.eclipse.emf.ecp.view.table.ui.swt/src/org/eclipse/emf/ecp/view/internal/table/swt/Activator.java b/bundles/org.eclipse.emf.ecp.view.table.ui.swt/src/org/eclipse/emf/ecp/view/internal/table/swt/Activator.java
index fd49727..edbef95 100644
--- a/bundles/org.eclipse.emf.ecp.view.table.ui.swt/src/org/eclipse/emf/ecp/view/internal/table/swt/Activator.java
+++ b/bundles/org.eclipse.emf.ecp.view.table.ui.swt/src/org/eclipse/emf/ecp/view/internal/table/swt/Activator.java
@@ -27,7 +27,15 @@
 	private static final String PLUGIN_ID = "org.eclipse.emf.ecp.view.table.ui.swt"; //$NON-NLS-1$
 	private static Activator instance;
 
-	// BEGIN SUPRESS CATCH EXCEPTION
+	/**
+	 * Returns the instance.
+	 *
+	 * @return the {@link Activator} instance.
+	 */
+	public static Activator getInstance() {
+		return instance;
+	}
+
 	@Override
 	public void start(BundleContext bundleContext) throws Exception {
 		instance = this;
@@ -40,127 +48,23 @@
 		super.stop(bundleContext);
 	}
 
-	// END SUPRESS CATCH EXCEPTION
-
-	// /**
-	// * Finds and returns an image for the provided path.
-	// *
-	// * @param path the path to get the image from
-	// * @return the image or null if nothing could be found
-	// */
-	// public static Image getImage(String path) {
-	//
-	// final Image image = instance.getImageRegistryService().getImage(instance.getBundle(), path);
-	//
-	// instance.getBundle().getBundleContext().ungetService(instance.imageRegistryServiceReference);
-	//
-	// return image;
-	// }
-	//
-	// /**
-	// * Finds and returns an image for the provided {@link URL}.
-	// *
-	// * @param url the {@link URL} to get the image from
-	// * @return the image or null if nothing could be found
-	// */
-	// public static Image getImage(URL url) {
-	// final Image image = instance.getImageRegistryService().getImage(url);
-	//
-	// instance.getBundle().getBundleContext().ungetService(instance.imageRegistryServiceReference);
-	//
-	// return image;
-	// }
-	//
-	// private ServiceReference<ImageRegistryService> imageRegistryServiceReference;
-	//
-	// private ImageRegistryService getImageRegistryService() {
-	// if (imageRegistryServiceReference == null) {
-	// imageRegistryServiceReference = getBundle().getBundleContext()
-	// .getServiceReference(ImageRegistryService.class);
-	// }
-	// return getBundle().getBundleContext().getService(imageRegistryServiceReference);
-	// }
-	//
 	/**
 	 * Logs a {@link Throwable}.
 	 *
 	 * @param t the {@link Throwable} to log
 	 */
-	public static void log(Throwable t) {
-		instance.getLog().log(new Status(IStatus.ERROR, PLUGIN_ID, t.getMessage(), t));
+	public void log(Throwable t) {
+		getLog().log(new Status(IStatus.ERROR, PLUGIN_ID, t.getMessage(), t));
 	}
-	//
-	// private VTViewTemplateProvider viewTemplate;
-	// private ServiceReference<ReportService> reportServiceReference;
-	//
-	// /**
-	// * Returns the current Instance of the {@link VTViewTemplateProvider}.
-	// *
-	// * @return the {@link VTViewTemplateProvider}
-	// */
-	// public VTViewTemplateProvider getVTViewTemplateProvider() {
-	// if (viewTemplate == null) {
-	// final ServiceReference<VTViewTemplateProvider> viewTemplateReference = instance.getBundle()
-	// .getBundleContext()
-	// .getServiceReference(VTViewTemplateProvider.class);
-	// if (viewTemplateReference != null) {
-	// viewTemplate = instance.getBundle().getBundleContext().getService(viewTemplateReference);
-	// }
-	// }
-	// return viewTemplate;
-	// }
-	//
-	// /**
-	// * The current instance.
-	// *
-	// * @return the current {@link Activator} instance
-	// */
-	// public static Activator getInstance() {
-	// return instance;
-	// }
-	//
-	// /**
-	// * Returns the {@link ReportService}.
-	// *
-	// * @return the {@link ReportService}
-	// */
-	// public ReportService getReportService() {
-	// if (reportServiceReference == null) {
-	// reportServiceReference = instance.getBundle().getBundleContext()
-	// .getServiceReference(ReportService.class);
-	// }
-	// return instance.getBundle().getBundleContext().getService(reportServiceReference);
-	// }
-	//
-	// /**
-	// * Returns the {@link EMFFormsDatabinding} service.
-	// *
-	// * @return The {@link EMFFormsDatabinding}
-	// */
-	// public EMFFormsDatabinding getEMFFormsDatabinding() {
-	// final ServiceReference<EMFFormsDatabinding> serviceReference = instance.getBundle().getBundleContext()
-	// .getServiceReference(EMFFormsDatabinding.class);
-	//
-	// final EMFFormsDatabinding service = instance.getBundle().getBundleContext()
-	// .getService(serviceReference);
-	// instance.getBundle().getBundleContext().ungetService(serviceReference);
-	//
-	// return service;
-	// }
-	//
-	// /**
-	// * Returns the {@link EMFFormsLabelProvider} service.
-	// *
-	// * @return The {@link EMFFormsLabelProvider}
-	// */
-	// public EMFFormsLabelProvider getEMFFormsLabelProvider() {
-	// final ServiceReference<EMFFormsLabelProvider> serviceReference = instance.getBundle().getBundleContext()
-	// .getServiceReference(EMFFormsLabelProvider.class);
-	//
-	// final EMFFormsLabelProvider service = instance.getBundle().getBundleContext()
-	// .getService(serviceReference);
-	// instance.getBundle().getBundleContext().ungetService(serviceReference);
-	//
-	// return service;
-	// }
+
+	/**
+	 * Logs a message with the given {@link IStatus}.
+	 *
+	 * @param severity the {@link IStatus} severity to log
+	 * @param message the message to log
+	 */
+	public void log(int severity, String message) {
+		getLog().log(new Status(severity, PLUGIN_ID, message));
+	}
+
 }
diff --git a/bundles/org.eclipse.emf.ecp.view.table.ui.swt/src/org/eclipse/emf/ecp/view/internal/table/swt/CellReadOnlyTesterHelper.java b/bundles/org.eclipse.emf.ecp.view.table.ui.swt/src/org/eclipse/emf/ecp/view/internal/table/swt/CellReadOnlyTesterHelper.java
index 0152726..48e0fb1 100644
--- a/bundles/org.eclipse.emf.ecp.view.table.ui.swt/src/org/eclipse/emf/ecp/view/internal/table/swt/CellReadOnlyTesterHelper.java
+++ b/bundles/org.eclipse.emf.ecp.view.table.ui.swt/src/org/eclipse/emf/ecp/view/internal/table/swt/CellReadOnlyTesterHelper.java
@@ -64,7 +64,7 @@
 				final ECPCellReadOnlyTester tester = (ECPCellReadOnlyTester) e.createExecutableExtension("class"); //$NON-NLS-1$
 				testers.add(tester);
 			} catch (final CoreException e1) {
-				Activator.log(e1);
+				Activator.getInstance().log(e1);
 			}
 		}
 	}
diff --git a/bundles/org.eclipse.emf.ecp.view.table.ui.swt/src/org/eclipse/emf/ecp/view/spi/table/swt/DetailDialog.java b/bundles/org.eclipse.emf.ecp.view.table.ui.swt/src/org/eclipse/emf/ecp/view/spi/table/swt/DetailDialog.java
index 0c328da..f8bc45f 100644
--- a/bundles/org.eclipse.emf.ecp.view.table.ui.swt/src/org/eclipse/emf/ecp/view/spi/table/swt/DetailDialog.java
+++ b/bundles/org.eclipse.emf.ecp.view.table.ui.swt/src/org/eclipse/emf/ecp/view/spi/table/swt/DetailDialog.java
@@ -123,7 +123,7 @@
 					selection, view);
 			}
 		} catch (final ECPRendererException ex) {
-			Activator.log(ex);
+			Activator.getInstance().log(ex);
 		}
 
 		scrolledComposite.setContent(content);
diff --git a/bundles/org.eclipse.emf.ecp.view.table.ui.swt/src/org/eclipse/emf/ecp/view/spi/table/swt/Messages.java b/bundles/org.eclipse.emf.ecp.view.table.ui.swt/src/org/eclipse/emf/ecp/view/spi/table/swt/Messages.java
new file mode 100644
index 0000000..dfd0039
--- /dev/null
+++ b/bundles/org.eclipse.emf.ecp.view.table.ui.swt/src/org/eclipse/emf/ecp/view/spi/table/swt/Messages.java
@@ -0,0 +1,32 @@
+/*******************************************************************************
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * stefan - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.emf.ecp.view.spi.table.swt;
+
+import org.eclipse.osgi.util.NLS;
+
+/**
+ * @author Stefan Dirix
+ * @generated
+ * @since 1.17
+ *
+ */
+public class Messages extends NLS {
+	private static final String BUNDLE_NAME = "org.eclipse.emf.ecp.view.spi.table.swt.messages"; //$NON-NLS-1$
+	public static String TableControlSWTRenderer_LabelAlignmentTopNotSupportForRenderModeCompactVertically;
+	static {
+		// initialize resource bundle
+		NLS.initializeMessages(BUNDLE_NAME, Messages.class);
+	}
+
+	private Messages() {
+	}
+}
diff --git a/bundles/org.eclipse.emf.ecp.view.table.ui.swt/src/org/eclipse/emf/ecp/view/spi/table/swt/TableControlSWTRenderer.java b/bundles/org.eclipse.emf.ecp.view.table.ui.swt/src/org/eclipse/emf/ecp/view/spi/table/swt/TableControlSWTRenderer.java
index 9a654d5..4ca2fb0 100644
--- a/bundles/org.eclipse.emf.ecp.view.table.ui.swt/src/org/eclipse/emf/ecp/view/spi/table/swt/TableControlSWTRenderer.java
+++ b/bundles/org.eclipse.emf.ecp.view.table.ui.swt/src/org/eclipse/emf/ecp/view/spi/table/swt/TableControlSWTRenderer.java
@@ -15,6 +15,7 @@
 import java.io.File;
 import java.net.MalformedURLException;
 import java.net.URL;
+import java.text.MessageFormat;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
@@ -37,7 +38,6 @@
 import org.eclipse.core.databinding.property.value.IValueProperty;
 import org.eclipse.core.runtime.Assert;
 import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
 import org.eclipse.emf.common.command.Command;
 import org.eclipse.emf.common.command.CompoundCommand;
 import org.eclipse.emf.common.util.Diagnostic;
@@ -50,11 +50,13 @@
 import org.eclipse.emf.ecore.InternalEObject;
 import org.eclipse.emf.ecp.edit.spi.DeleteService;
 import org.eclipse.emf.ecp.edit.spi.EMFDeleteServiceImpl;
+import org.eclipse.emf.ecp.edit.spi.ReferenceService;
 import org.eclipse.emf.ecp.edit.spi.swt.table.ECPCellEditor;
 import org.eclipse.emf.ecp.edit.spi.swt.table.ECPCellEditorComparator;
 import org.eclipse.emf.ecp.edit.spi.swt.table.ECPCustomUpdateCellEditor;
 import org.eclipse.emf.ecp.edit.spi.swt.table.ECPElementAwareCellEditor;
 import org.eclipse.emf.ecp.edit.spi.swt.util.ECPDialogExecutor;
+import org.eclipse.emf.ecp.view.internal.table.swt.Activator;
 import org.eclipse.emf.ecp.view.internal.table.swt.CellReadOnlyTesterHelper;
 import org.eclipse.emf.ecp.view.internal.table.swt.MessageKeys;
 import org.eclipse.emf.ecp.view.internal.table.swt.RunnableManager;
@@ -62,11 +64,11 @@
 import org.eclipse.emf.ecp.view.model.common.util.RendererUtil;
 import org.eclipse.emf.ecp.view.spi.context.ViewModelContext;
 import org.eclipse.emf.ecp.view.spi.core.swt.AbstractControlSWTRenderer;
+import org.eclipse.emf.ecp.view.spi.core.swt.AbstractControlSWTRendererUtil;
 import org.eclipse.emf.ecp.view.spi.model.DiagnosticMessageExtractor;
 import org.eclipse.emf.ecp.view.spi.model.LabelAlignment;
 import org.eclipse.emf.ecp.view.spi.model.VDiagnostic;
 import org.eclipse.emf.ecp.view.spi.model.VDomainModelReference;
-import org.eclipse.emf.ecp.view.spi.model.reporting.StatusReport;
 import org.eclipse.emf.ecp.view.spi.provider.ECPTooltipModifierHelper;
 import org.eclipse.emf.ecp.view.spi.renderer.NoPropertyDescriptorFoundExeption;
 import org.eclipse.emf.ecp.view.spi.renderer.NoRendererFoundException;
@@ -172,6 +174,7 @@
 import org.eclipse.swt.events.SelectionEvent;
 import org.eclipse.swt.graphics.Color;
 import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.graphics.Point;
 import org.eclipse.swt.layout.GridData;
 import org.eclipse.swt.widgets.Button;
 import org.eclipse.swt.widgets.Composite;
@@ -202,6 +205,10 @@
 	 * @since 1.10
 	 */
 	protected static final String TABLE_CUSTOM_VARIANT = "org_eclipse_emf_ecp_control_table"; //$NON-NLS-1$
+	/**
+	 * @since 1.17
+	 */
+	protected static final Point VALIDATION_PREFERRED_SIZE = new Point(16, 17);
 
 	private static final String ICON_ADD = "icons/add.png"; //$NON-NLS-1$
 	private static final String ICON_DELETE = "icons/delete.png"; //$NON-NLS-1$
@@ -273,13 +280,14 @@
 	@Override
 	public SWTGridDescription getGridDescription(SWTGridDescription gridDescription) {
 		if (rendererGridDescription == null) {
-			// create special grid for compact mode
 			if (getTableStyleProperty().getRenderMode() == RenderMode.COMPACT_VERTICALLY) {
-				if (getVElement().getLabelAlignment() == LabelAlignment.NONE) {
-					rendererGridDescription = GridDescriptionFactory.INSTANCE.createSimpleGrid(1, 2, this);
-				} else {
-					rendererGridDescription = GridDescriptionFactory.INSTANCE.createSimpleGrid(1, 3, this);
+				final boolean includeLabel = getVElement().getLabelAlignment() != LabelAlignment.NONE;
+				if (getVElement().getLabelAlignment() == LabelAlignment.TOP) {
+					Activator.getInstance().log(IStatus.WARNING, MessageFormat.format(
+						Messages.TableControlSWTRenderer_LabelAlignmentTopNotSupportForRenderModeCompactVertically,
+						getVElement().getName()));
 				}
+				rendererGridDescription = GridDescriptionFactory.INSTANCE.createCompactGrid(includeLabel, true, this);
 			} else {
 				rendererGridDescription = GridDescriptionFactory.INSTANCE.createSimpleGrid(1, 1, this);
 			}
@@ -296,10 +304,11 @@
 	@Override
 	protected Control renderControl(SWTGridCell gridCell, final Composite parent) throws NoRendererFoundException,
 		NoPropertyDescriptorFoundExeption {
-		// Compact
+		// compact label
 		if (gridCell.getColumn() == 0 && rendererGridDescription.getColumns() == 3) {
 			return createLabel(parent);
 		}
+		// compact validation
 		if (gridCell.getColumn() == 0 && rendererGridDescription.getColumns() == 2
 			|| gridCell.getColumn() == 1 && rendererGridDescription.getColumns() == 3) {
 			validationIcon = createValidationIcon(parent);
@@ -315,7 +324,8 @@
 		final IObservableValue labelText = getLabelText(dmrToCheck, false);
 		final IObservableValue labelTooltipText = getLabelTooltipText(dmrToCheck, false);
 
-		final Label titleLabel = new Label(parent, SWT.NONE);
+		final Label titleLabel = new Label(parent, AbstractControlSWTRendererUtil
+			.getLabelStyleBits(getVTViewTemplateProvider(), getVElement(), getViewModelContext()));
 		titleLabel.setData(CUSTOM_VARIANT, "org_eclipse_emf_ecp_control_label"); //$NON-NLS-1$
 		titleLabel.setBackground(parent.getBackground());
 
@@ -362,7 +372,8 @@
 			final ObservableListContentProvider cp = new ObservableListContentProvider();
 
 			final ECPTableViewerComparator comparator = getVElement().isMoveUpDownDisabled()
-				? new ECPTableViewerComparator() : null;
+				? new ECPTableViewerComparator()
+				: null;
 
 			/* render */
 			final TableViewerCompositeBuilder compositeBuilder = createTableViewerCompositeBuilder();
@@ -1328,25 +1339,20 @@
 	 * @since 1.6
 	 */
 	protected void addRow(EClass clazz, EObject eObject, EStructuralFeature structuralFeature) {
-		Optional<EObject> eObjectToAdd;
+		Optional<EObject> eObjectToAdd = null;
 
-		/* no table service available, fall back to default */
-		if (!getViewModelContext().hasService(TableControlService.class)) {
-			if (clazz.isAbstract() || clazz.isInterface()) {
-				getReportService().report(new StatusReport(
-					new Status(IStatus.WARNING, "org.eclipse.emf.ecp.view.table.ui.swt", //$NON-NLS-1$
-						String.format("The class %1$s is abstract or an interface.", clazz.getName())))); //$NON-NLS-1$
-				eObjectToAdd = Optional.empty();
-			} else {
-				eObjectToAdd = Optional.of(clazz.getEPackage().getEFactoryInstance().create(clazz));
-			}
-		}
-		/* table service available */
-		else {
+		/* table service available => use specific behavior to create row */
+		if (getViewModelContext().hasService(TableControlService.class)) {
 			final TableControlService tableService = getViewModelContext()
 				.getService(TableControlService.class);
 			eObjectToAdd = tableService.createNewElement(clazz, eObject, structuralFeature);
 		}
+		/* no table service available, fall back to default */
+		if (eObjectToAdd == null) {
+			final ReferenceService referenceService = getViewModelContext().getService(ReferenceService.class);
+			eObjectToAdd = referenceService.addNewModelElements(eObject, EReference.class.cast(structuralFeature),
+				false);
+		}
 
 		if (!eObjectToAdd.isPresent()) {
 			return;
@@ -1388,6 +1394,43 @@
 	}
 
 	/**
+	 * Helper method which uses an EMFForms observable value to get the setting for the given
+	 * {@link VDomainModelReference}.
+	 *
+	 * @param dmr the {@link VDomainModelReference}
+	 * @param eObject the {@link EObject} to get the setting for
+	 * @return an Optional<Setting>
+	 *
+	 * @since 1.17
+	 */
+	protected Optional<Setting> getSettingFromObservable(VDomainModelReference dmr, EObject eObject) {
+		@SuppressWarnings("rawtypes")
+		IObservableValue observableValue = null;
+		try {
+			observableValue = getEMFFormsDatabinding().getObservableValue(dmr, eObject);
+
+			final EStructuralFeature feature = (EStructuralFeature) observableValue.getValueType();
+			final EObject observed = (EObject) ((IObserving) observableValue).getObserved();
+
+			// Given EClass has no such feature
+			if (observed == null || observed.eClass().getFeatureID(feature) == -1) {
+				return Optional.empty();
+			}
+
+			return Optional.of(((InternalEObject) observed).eSetting(feature));
+
+		} catch (final DatabindingFailedException ex) {
+			getReportService().report(new DatabindingFailedReport(ex));
+			return Optional.empty();
+		} finally {
+			if (observableValue != null) {
+				observableValue.dispose();
+			}
+		}
+
+	}
+
+	/**
 	 * {@inheritDoc}
 	 *
 	 * @see org.eclipse.emfforms.spi.swt.core.AbstractSWTRenderer#applyEnable()
@@ -1461,8 +1504,8 @@
 	 * Get called by the {@link ECPTableViewerComparator} in order to compare the given objects.
 	 *
 	 * @param viewer the tavle viewer
-	 * @param e1 the first object of the comparison
-	 * @param e2 the second object of the comparison
+	 * @param left the first object of the comparison
+	 * @param right the second object of the comparison
 	 * @param propertyIndex index of the selection column. the index is aligned with the index of the associated column
 	 *            domain model reference
 	 * @param direction {@link SWT#NONE}, {@link SWT#UP} or {@link SWT#DOWN} according to the indication displayed at
@@ -1473,53 +1516,34 @@
 	 *         element is greater than the second element
 	 * @since 1.8
 	 */
-	protected int compare(Viewer viewer, Object e1, Object e2, int direction, int propertyIndex) {
+	protected int compare(Viewer viewer, Object left, Object right, int direction, int propertyIndex) {
 		if (direction == 0) {
 			return 0;
 		}
+
 		// We might have ignored columns at the beginning
 		propertyIndex = propertyIndex - regularColumnsStartIndex;
 		int rc = 0;
-		final EObject object1 = (EObject) e1;
-		final EObject object2 = (EObject) e2;
-
-		Object value1;
-		Object value2;
 
 		final VDomainModelReference dmr = ((VTableDomainModelReference) getVElement().getDomainModelReference())
 			.getColumnDomainModelReferences().get(propertyIndex);
-		final EMFFormsDatabinding emfFormsDatabinding = getEMFFormsDatabinding();
 
-		try {
-			final IObservableValue observableValue1 = emfFormsDatabinding.getObservableValue(dmr, object1);
-			final EStructuralFeature structuralFeature1 = (EStructuralFeature) observableValue1.getValueType();
-			final EObject observed1 = (EObject) ((IObserving) observableValue1).getObserved();
-			value1 = observed1.eGet(structuralFeature1, true);
-			observableValue1.dispose();
-		} catch (final DatabindingFailedException ex) {
-			value1 = null;
-		}
+		final Optional<Setting> leftSetting = getSettingFromObservable(dmr, (EObject) left);
+		final Optional<Setting> rightSetting = getSettingFromObservable(dmr, (EObject) right);
 
-		try {
-			final IObservableValue observableValue2 = emfFormsDatabinding.getObservableValue(dmr, object2);
-			final EStructuralFeature structuralFeature2 = (EStructuralFeature) observableValue2.getValueType();
-			final EObject observed2 = (EObject) ((IObserving) observableValue2).getObserved();
-			value2 = observed2.eGet(structuralFeature2, true);
-			observableValue2.dispose();
-		} catch (final DatabindingFailedException ex) {
-			value2 = null;
-		}
+		final Object leftValue = leftSetting.isPresent() ? leftSetting.get().get(true) : null;
+		final Object rightValue = rightSetting.isPresent() ? rightSetting.get().get(true) : null;
 
 		if (columnIndexToComparatorMap.containsKey(propertyIndex)) {
-			return columnIndexToComparatorMap.get(propertyIndex).compare(value1, value2, direction);
+			return columnIndexToComparatorMap.get(propertyIndex).compare(leftValue, rightValue, direction);
 		}
 
-		if (value1 == null) {
+		if (leftValue == null) {
 			rc = 1;
-		} else if (value2 == null) {
+		} else if (rightValue == null) {
 			rc = -1;
 		} else {
-			rc = value1.toString().compareTo(value2.toString());
+			rc = leftValue.toString().compareTo(rightValue.toString());
 		}
 		// If descending order, flip the direction
 		if (direction == 2) {
@@ -1814,40 +1838,49 @@
 
 			final VTableDomainModelReference tableDMR = (VTableDomainModelReference) getVElement()
 				.getDomainModelReference();
-			IObservableValue observableValue;
-			try {
-				if (tableDMR.getDomainModelReference() != null) {
-					observableValue = getEMFFormsDatabinding().getObservableValue(
-						tableDMR.getDomainModelReference(), getViewModelContext().getDomainModel());
-				} else {
-					observableValue = getEMFFormsDatabinding().getObservableValue(tableDMR,
-						getViewModelContext().getDomainModel());
-				}
-			} catch (final DatabindingFailedException ex) {
-				getReportService().report(new DatabindingFailedReport(ex));
+			Optional<Setting> setting;
+
+			if (tableDMR.getDomainModelReference() != null) {
+				setting = getSettingFromObservable(tableDMR.getDomainModelReference(),
+					getViewModelContext().getDomainModel());
+			} else {
+				setting = getSettingFromObservable(tableDMR, getViewModelContext().getDomainModel());
+			}
+
+			if (!setting.isPresent()) {
 				return;
 			}
-			final EStructuralFeature structuralFeature = (EStructuralFeature) observableValue.getValueType();
-			final EObject eObject = (EObject) ((IObserving) observableValue).getObserved();
-			observableValue.dispose();
 
 			validationIcon.setImage(getValidationIcon(getVElement().getDiagnostic().getHighestSeverity()));
-			showValidationSummaryTooltip(showValidationSummaryTooltip);
+			showValidationSummaryTooltip(setting.get(), showValidationSummaryTooltip);
 
-			final Collection<?> collection = (Collection<?>) eObject.eGet(structuralFeature, true);
+			final Collection<?> collection = (Collection<?>) setting.get().get(true);
 			if (!collection.isEmpty()) {
 				for (final Object object : collection) {
-					tableViewer.update(object, null);
+					getTableViewer().update(object, null);
 				}
 			}
 		}
 
 		// extracted in order to avoid checkstyle complexity warning
-		private void showValidationSummaryTooltip(boolean doShow) {
+		private void showValidationSummaryTooltip(Setting tableSetting, boolean doShow) {
 			if (doShow) {
 				validationIcon.setToolTipText(ECPTooltipModifierHelper.modifyString(getVElement().getDiagnostic()
 					.getMessage(), null));
+				return;
 			}
+
+			// Even if the display of a validation summary tooltip is disabled, we still show validation errors directly
+			// related to the table feature (e.g. multiplicity errors)
+			final StringBuilder builder = new StringBuilder();
+			final List<Diagnostic> tableDiagnostics = getVElement().getDiagnostic()
+				.getDiagnostic(tableSetting.getEObject(), tableSetting.getEStructuralFeature());
+			for (final Diagnostic diagnostic : tableDiagnostics) {
+				builder.append(diagnostic.getMessage());
+				builder.append("\n"); //$NON-NLS-1$
+			}
+			final String toolTipText = ECPTooltipModifierHelper.modifyString(builder.toString().trim(), null);
+			validationIcon.setToolTipText(toolTipText);
 		}
 	}
 
@@ -2300,44 +2333,33 @@
 			this.table = table;
 		}
 
-		/**
-		 * {@inheritDoc}
-		 *
-		 * @see org.eclipse.jface.viewers.CellLabelProvider#getToolTipText(java.lang.Object)
-		 */
 		@Override
 		public String getToolTipText(Object element) {
 			final EObject domainObject = (EObject) element;
-			IObservableValue observableValue;
-			try {
-				observableValue = getEMFFormsDatabinding()
-					.getObservableValue(dmr, domainObject);
-			} catch (final DatabindingFailedException ex) {
-				getReportService().report(new DatabindingFailedReport(ex));
+
+			final Optional<Setting> setting = getSettingFromObservable(dmr, domainObject);
+			if (!setting.isPresent()) {
 				return null;
 			}
-			final EStructuralFeature structuralFeature = (EStructuralFeature) observableValue.getValueType();
-			final EObject eObject = (EObject) ((IObserving) observableValue).getObserved();
-			final Setting setting = ((InternalEObject) eObject).eSetting(structuralFeature);
-			observableValue.dispose();
 
 			final VDiagnostic vDiagnostic = vTableControl.getDiagnostic();
 			if (vDiagnostic != null) {
 				final String message = DiagnosticMessageExtractor.getMessage(vDiagnostic.getDiagnostic(domainObject,
 					feature));
 				if (message != null && !message.isEmpty()) {
-					return ECPTooltipModifierHelper.modifyString(message, setting);
+					return ECPTooltipModifierHelper.modifyString(message, setting.get());
 				}
 			}
-			final Object value = eObject.eGet(structuralFeature, true);
+			final Object value = setting.get().get(true);
 			if (value == null) {
 				return null;
 			}
-			final String tooltip = ECPTooltipModifierHelper.modifyString(String.valueOf(value), setting);
+			final String tooltip = ECPTooltipModifierHelper.modifyString(String.valueOf(value), setting.get());
 			if (tooltip == null || tooltip.isEmpty()) {
 				return null;
 			}
 			return tooltip;
+
 		}
 
 		@Override
@@ -2448,9 +2470,18 @@
 			if (!shouldCreateCellEditor(element)) {
 				return false;
 			}
+
+			// TODO: use getSettingFromObservable(dmr, eObject) instead?
 			final IObservableValue observableValue = valueProperty.observe(element);
 			final EObject eObject = (EObject) ((IObserving) observableValue).getObserved();
+
 			final EStructuralFeature structuralFeature = (EStructuralFeature) observableValue.getValueType();
+
+			// Given EClass has no such feature
+			if (eObject == null || eObject.eClass().getFeatureID(structuralFeature) == -1) {
+				return false;
+			}
+
 			final Setting setting = ((InternalEObject) eObject).eSetting(structuralFeature);
 
 			if (isDisabled(eObject, domainModelReference)
diff --git a/bundles/org.eclipse.emf.ecp.view.table.ui.swt/src/org/eclipse/emf/ecp/view/spi/table/swt/messages.properties b/bundles/org.eclipse.emf.ecp.view.table.ui.swt/src/org/eclipse/emf/ecp/view/spi/table/swt/messages.properties
new file mode 100644
index 0000000..de42501
--- /dev/null
+++ b/bundles/org.eclipse.emf.ecp.view.table.ui.swt/src/org/eclipse/emf/ecp/view/spi/table/swt/messages.properties
@@ -0,0 +1 @@
+TableControlSWTRenderer_LabelAlignmentTopNotSupportForRenderModeCompactVertically=LabelAlignment.TOP is not supported for RenderMode.COMPACT_VERTICALLY. The label will be rendered with LabelAlignment.LEFT. Affected VElement: {0}
diff --git a/bundles/org.eclipse.emf.ecp.view.table.validation/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.view.table.validation/META-INF/MANIFEST.MF
index 18ff0b8..319d73a 100644
--- a/bundles/org.eclipse.emf.ecp.view.table.validation/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.view.table.validation/META-INF/MANIFEST.MF
@@ -2,14 +2,15 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Services
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.table.validation;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emf.ecp.view.table.internal.validation;version="1.16.0";x-internal:=true
-Require-Bundle: org.eclipse.emf.ecp.view.context;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.table.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.ui.view;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.core.runtime;bundle-version="[3.8.0,4.0.0)",
-  org.eclipse.emfforms.core.services;bundle-version="[1.16.0,1.17.0)"
+Export-Package: org.eclipse.emf.ecp.view.table.internal.validation;version="1.17.0";x-internal:=true
+Require-Bundle: org.eclipse.emf.ecp.view.context;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.table.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.ui.view;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.core.runtime;bundle-version="[3.8.0,4.0.0)",
+ org.eclipse.emfforms.core.services;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
-Import-Package: org.eclipse.emfforms.spi.common.report;version="[1.16.0,1.17.0)"
+Import-Package: org.eclipse.emfforms.spi.common.report;version="[1.17.0,1.18.0]"
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.view.table.validation
diff --git a/bundles/org.eclipse.emf.ecp.view.table.validation/pom.xml b/bundles/org.eclipse.emf.ecp.view.table.validation/pom.xml
index 699b5a0..0ade81c 100644
--- a/bundles/org.eclipse.emf.ecp.view.table.validation/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.view.table.validation/pom.xml
@@ -7,12 +7,12 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
 
   <artifactId>org.eclipse.emf.ecp.view.table.validation</artifactId>
   <packaging>eclipse-plugin</packaging>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
 
 </project>
diff --git a/bundles/org.eclipse.emf.ecp.view.template.annotation.model.edit/.checkstyle b/bundles/org.eclipse.emf.ecp.view.template.annotation.model.edit/.checkstyle
new file mode 100644
index 0000000..19c5477
--- /dev/null
+++ b/bundles/org.eclipse.emf.ecp.view.template.annotation.model.edit/.checkstyle
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<fileset-config file-format-version="1.2.0" simple-config="false" sync-formatter="false">
+  <local-check-config name="ESMCheckstyle" location="/org.eclipse.emf.ecp.releng/checkstyle/esmCheckstyle.xml" type="project" description="">
+    <additional-data name="protect-config-file" value="false"/>
+  </local-check-config>
+  <fileset name="Java Files" enabled="true" check-config-name="ESMCheckstyle" local="true">
+    <file-match-pattern match-pattern=".java" include-pattern="true"/>
+  </fileset>
+</fileset-config>
diff --git a/bundles/org.eclipse.emf.ecp.view.template.annotation.model.edit/.classpath b/bundles/org.eclipse.emf.ecp.view.template.annotation.model.edit/.classpath
new file mode 100644
index 0000000..ad32c83
--- /dev/null
+++ b/bundles/org.eclipse.emf.ecp.view.template.annotation.model.edit/.classpath
@@ -0,0 +1,7 @@
+<?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.6"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/bundles/org.eclipse.emf.ecp.view.template.annotation.model.edit/.project b/bundles/org.eclipse.emf.ecp.view.template.annotation.model.edit/.project
new file mode 100644
index 0000000..45c68f6
--- /dev/null
+++ b/bundles/org.eclipse.emf.ecp.view.template.annotation.model.edit/.project
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.emf.ecp.view.template.annotation.model.edit</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>net.sf.eclipsecs.core.CheckstyleBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>net.sf.eclipsecs.core.CheckstyleNature</nature>
+		<nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
+	</natures>
+</projectDescription>
diff --git a/bundles/org.eclipse.emf.ecp.view.template.annotation.model.edit/.settings/org.eclipse.core.resources.prefs b/bundles/org.eclipse.emf.ecp.view.template.annotation.model.edit/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..f548abb
--- /dev/null
+++ b/bundles/org.eclipse.emf.ecp.view.template.annotation.model.edit/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,6 @@
+eclipse.preferences.version=1
+
+encoding//model/etypes.ecore=UTF-8
+
+
+encoding/<project>=UTF-8
diff --git a/bundles/org.eclipse.emf.ecp.view.template.annotation.model.edit/.settings/org.eclipse.core.runtime.prefs b/bundles/org.eclipse.emf.ecp.view.template.annotation.model.edit/.settings/org.eclipse.core.runtime.prefs
new file mode 100644
index 0000000..5a0ad22
--- /dev/null
+++ b/bundles/org.eclipse.emf.ecp.view.template.annotation.model.edit/.settings/org.eclipse.core.runtime.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+line.separator=\n
diff --git a/bundles/org.eclipse.emf.ecp.view.template.annotation.model.edit/.settings/org.eclipse.jdt.core.prefs b/bundles/org.eclipse.emf.ecp.view.template.annotation.model.edit/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..c948297
--- /dev/null
+++ b/bundles/org.eclipse.emf.ecp.view.template.annotation.model.edit/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,418 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.builder.cleanOutputFolder=clean
+org.eclipse.jdt.core.builder.duplicateResourceTask=warning
+org.eclipse.jdt.core.builder.invalidClasspath=abort
+org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
+org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=
+org.eclipse.jdt.core.circularClasspath=error
+org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
+org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
+org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error
+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.annotation.inheritNullAnnotations=disabled
+org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
+org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
+org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
+org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.6
+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.doc.comment.support=enabled
+org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
+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=enabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
+org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=disabled
+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.invalidJavadoc=warning
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=disabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=public
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
+org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=warning
+org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
+org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=public
+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=warning
+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.nonnullParameterAnnotationDropped=warning
+org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
+org.eclipse.jdt.core.compiler.problem.nullReference=warning
+org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
+org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
+org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
+org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
+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.syntacticNullAnalysisForFields=disabled
+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.unclosedCloseable=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=warning
+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.unusedTypeParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.source=1.6
+org.eclipse.jdt.core.compiler.taskCaseSensitive=enabled
+org.eclipse.jdt.core.compiler.taskPriorities=NORMAL,HIGH,HIGH,LOW,LOW,LOW,LOW,LOW,NORMAL
+org.eclipse.jdt.core.compiler.taskTags=TODO,FIXME,XXX,PERF,MEM,POLISH,@generated NOT,@ADDED,APITODO
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+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_binary_expression=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_method_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=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_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=false
+org.eclipse.jdt.core.formatter.comment.format_block_comments=true
+org.eclipse.jdt.core.formatter.comment.format_header=true
+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=do not 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=1
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=1
+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=do not 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_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_binary_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_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_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_unary_operator=do not 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_binary_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_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_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_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=false
+org.eclipse.jdt.core.formatter.join_wrapped_lines=false
+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=120
+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_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
+org.eclipse.jdt.core.incompatibleJDKLevel=ignore
+org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/bundles/org.eclipse.emf.ecp.view.template.annotation.model.edit/.settings/org.eclipse.jdt.launching.prefs b/bundles/org.eclipse.emf.ecp.view.template.annotation.model.edit/.settings/org.eclipse.jdt.launching.prefs
new file mode 100644
index 0000000..3bb2352
--- /dev/null
+++ b/bundles/org.eclipse.emf.ecp.view.template.annotation.model.edit/.settings/org.eclipse.jdt.launching.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.launching.PREF_STRICTLY_COMPATIBLE_JRE_NOT_AVAILABLE=ignore
diff --git a/bundles/org.eclipse.emf.ecp.view.template.annotation.model.edit/.settings/org.eclipse.jdt.ui.prefs b/bundles/org.eclipse.emf.ecp.view.template.annotation.model.edit/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 0000000..8bc4bb4
--- /dev/null
+++ b/bundles/org.eclipse.emf.ecp.view.template.annotation.model.edit/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,127 @@
+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_functional_interfaces=false
+cleanup.convert_to_enhanced_for_loop=false
+cleanup.correct_indentation=false
+cleanup.format_source_code=true
+cleanup.format_source_code_changes_only=false
+cleanup.insert_inferred_type_arguments=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=true
+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=true
+cleanup.remove_redundant_type_arguments=true
+cleanup.remove_trailing_whitespaces=true
+cleanup.remove_trailing_whitespaces_all=true
+cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_casts=false
+cleanup.remove_unnecessary_nls_tags=false
+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=true
+cleanup.remove_unused_private_types=true
+cleanup.sort_members=false
+cleanup.sort_members_all=false
+cleanup.use_anonymous_class_creation=false
+cleanup.use_blocks=true
+cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_lambda=true
+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.use_type_arguments=false
+cleanup_profile=_esmCleanUp
+cleanup_settings_version=2
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+formatter_profile=_esmFormatter
+formatter_settings_version=12
+org.eclipse.jdt.ui.exception.name=ex
+org.eclipse.jdt.ui.gettersetter.use.is=true
+org.eclipse.jdt.ui.javadoc=true
+org.eclipse.jdt.ui.keywordthis=false
+org.eclipse.jdt.ui.overrideannotation=true
+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 * Copyright (c) 2011-${year} EclipseSource Muenchen GmbH and others.\r\n * \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 * ${user} - initial API and implementation\r\n ******************************************************************************/</template><template autoinsert\="true" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * @author ${user}\r\n *\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment"/><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 * {@inheritDoc}\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">\t\t\t// TODO Auto-generated catch block\r\n\t\t\t// Do NOT catch all Exceptions ("catch (Exception e)")\r\n\t\t\t// Log AND handle Exceptions if possible \r\n            //\r\n            // You can just uncomment one of the lines below to log an exception\:\r\n\t\t\t// logException will show the logged excpetion to the user\r\n\t\t\t// ModelUtil.logException(${exception_var});\r\n\t\t\t// ModelUtil.logException("YOUR MESSAGE HERE", ${exception_var});\r\n\t\t\t// logWarning will only add the message to the error log\r\n\t\t\t// ModelUtil.logWarning("YOUR MESSAGE HERE", ${exception_var});\r\n\t\t\t// ModelUtil.logWarning("YOUR MESSAGE HERE");\r\n\t\t\t//\t\t\t\r\n\t\t\t// If handling is not possible declare and rethrow Exception</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_functional_interfaces=false
+sp_cleanup.convert_to_enhanced_for_loop=false
+sp_cleanup.correct_indentation=false
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.insert_inferred_type_arguments=false
+sp_cleanup.make_local_variable_final=true
+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=true
+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=true
+sp_cleanup.remove_redundant_type_arguments=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=false
+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=true
+sp_cleanup.remove_unused_private_types=true
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.use_anonymous_class_creation=false
+sp_cleanup.use_blocks=true
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_lambda=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
+sp_cleanup.use_type_arguments=false
diff --git a/bundles/org.eclipse.emf.ecp.view.template.annotation.model.edit/.settings/org.eclipse.ltk.core.refactoring.prefs b/bundles/org.eclipse.emf.ecp.view.template.annotation.model.edit/.settings/org.eclipse.ltk.core.refactoring.prefs
new file mode 100644
index 0000000..864e30f
--- /dev/null
+++ b/bundles/org.eclipse.emf.ecp.view.template.annotation.model.edit/.settings/org.eclipse.ltk.core.refactoring.prefs
@@ -0,0 +1,3 @@
+#Thu Feb 04 09:44:24 CET 2010
+eclipse.preferences.version=1
+org.eclipse.ltk.core.refactoring.enable.project.refactoring.history=false
diff --git a/bundles/org.eclipse.emf.ecp.view.template.annotation.model.edit/.settings/org.eclipse.pde.api.tools.prefs b/bundles/org.eclipse.emf.ecp.view.template.annotation.model.edit/.settings/org.eclipse.pde.api.tools.prefs
new file mode 100644
index 0000000..e4e3c00
--- /dev/null
+++ b/bundles/org.eclipse.emf.ecp.view.template.annotation.model.edit/.settings/org.eclipse.pde.api.tools.prefs
@@ -0,0 +1,97 @@
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_TYPE=Error
+API_USE_SCAN_FIELD_SEVERITY=Error
+API_USE_SCAN_METHOD_SEVERITY=Error
+API_USE_SCAN_TYPE_SEVERITY=Error
+CLASS_ELEMENT_TYPE_ADDED_METHOD=Error
+CLASS_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CLASS_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+CLASS_ELEMENT_TYPE_REMOVED_CONSTRUCTOR=Error
+CLASS_ELEMENT_TYPE_REMOVED_FIELD=Error
+CLASS_ELEMENT_TYPE_REMOVED_METHOD=Error
+CLASS_ELEMENT_TYPE_REMOVED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+ENUM_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ENUM_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ENUM_ELEMENT_TYPE_REMOVED_ENUM_CONSTANT=Error
+ENUM_ELEMENT_TYPE_REMOVED_FIELD=Error
+ENUM_ELEMENT_TYPE_REMOVED_METHOD=Error
+ENUM_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+FIELD_ELEMENT_TYPE_ADDED_VALUE=Error
+FIELD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+FIELD_ELEMENT_TYPE_CHANGED_FINAL_TO_NON_FINAL_STATIC_CONSTANT=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_TYPE=Error
+FIELD_ELEMENT_TYPE_CHANGED_VALUE=Error
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENT=Error
+FIELD_ELEMENT_TYPE_REMOVED_VALUE=Error
+ILLEGAL_EXTEND=Warning
+ILLEGAL_IMPLEMENT=Warning
+ILLEGAL_INSTANTIATE=Warning
+ILLEGAL_OVERRIDE=Warning
+ILLEGAL_REFERENCE=Warning
+INTERFACE_ELEMENT_TYPE_ADDED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_SUPER_INTERFACE_WITH_METHODS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+INVALID_JAVADOC_TAG=Warning
+INVALID_REFERENCE_IN_SYSTEM_LIBRARIES=Error
+LEAK_EXTEND=Warning
+LEAK_FIELD_DECL=Warning
+LEAK_IMPLEMENT=Warning
+LEAK_METHOD_PARAM=Warning
+LEAK_METHOD_RETURN_TYPE=Warning
+METHOD_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+METHOD_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+METHOD_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+MISSING_EE_DESCRIPTIONS=Error
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+UNUSED_PROBLEM_FILTERS=Ignore
+automatically_removed_unused_problem_filters=Disabled
+eclipse.preferences.version=1
+incompatible_api_component_version=Error
+incompatible_api_component_version_include_major_without_breaking_change=Disabled
+incompatible_api_component_version_include_minor_without_api_change=Disabled
+invalid_since_tag_version=Error
+malformed_since_tag=Error
+missing_since_tag=Error
+report_api_breakage_when_major_version_incremented=Disabled
+report_resolution_errors_api_component=Warning
diff --git a/bundles/org.eclipse.emf.ecp.view.template.annotation.model.edit/.settings/org.eclipse.pde.prefs b/bundles/org.eclipse.emf.ecp.view.template.annotation.model.edit/.settings/org.eclipse.pde.prefs
new file mode 100644
index 0000000..0bbee3c
--- /dev/null
+++ b/bundles/org.eclipse.emf.ecp.view.template.annotation.model.edit/.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=1
+compilers.p.missing-version-import-package=1
+compilers.p.missing-version-require-bundle=1
+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/bundles/org.eclipse.emf.ecp.view.template.annotation.model.edit/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.view.template.annotation.model.edit/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..e3e4e41
--- /dev/null
+++ b/bundles/org.eclipse.emf.ecp.view.template.annotation.model.edit/META-INF/MANIFEST.MF
@@ -0,0 +1,18 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.emf.ecp.view.template.annotation.model.edit;singleton:=true
+Bundle-Version: 1.17.0.qualifier
+Bundle-ClassPath: .
+Bundle-Activator: org.eclipse.emf.ecp.view.template.selector.annotation.model.provider.AnnotationSelectorEditPlugin$Implementation
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Export-Package: org.eclipse.emf.ecp.view.template.selector.annotation.model.provider;version="1.17.0";x-internal:=true
+Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.7.0,4.0.0)",
+ org.eclipse.emf.ecp.view.template.annotation.model;bundle-version="[1.17.0,1.18.0)";visibility:=reexport,
+ org.eclipse.emf.edit;bundle-version="[2.8.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.ecp.view.template.model;bundle-version="[1.17.0,1.18.0)";visibility:=reexport,
+ org.eclipse.emf.ecp.view.template.model.edit;bundle-version="[1.17.0,1.18.0)";visibility:=reexport
+Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.view.template.annotation.model.edit
diff --git a/bundles/org.eclipse.emf.ecp.view.template.annotation.model.edit/about.html b/bundles/org.eclipse.emf.ecp.view.template.annotation.model.edit/about.html
new file mode 100644
index 0000000..d35d5ae
--- /dev/null
+++ b/bundles/org.eclipse.emf.ecp.view.template.annotation.model.edit/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, 2007</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>
diff --git a/bundles/org.eclipse.emf.ecp.view.template.annotation.model.edit/build.properties b/bundles/org.eclipse.emf.ecp.view.template.annotation.model.edit/build.properties
new file mode 100644
index 0000000..1494b0a
--- /dev/null
+++ b/bundles/org.eclipse.emf.ecp.view.template.annotation.model.edit/build.properties
@@ -0,0 +1,19 @@
+# Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+# Johannes Faltermeier - initial API and implementation
+
+bin.includes = .,\
+               icons/,\
+               META-INF/,\
+               plugin.xml,\
+               plugin.properties,\
+               about.html
+jars.compile.order = .
+source.. = src/
+output.. = bin/
diff --git a/bundles/org.eclipse.emf.ecp.view.template.annotation.model.edit/icons/full/ctool16/CreateMultiStyleSelectorContainer_selectors_AnnotationSelector.gif b/bundles/org.eclipse.emf.ecp.view.template.annotation.model.edit/icons/full/ctool16/CreateMultiStyleSelectorContainer_selectors_AnnotationSelector.gif
new file mode 100644
index 0000000..ca96637
--- /dev/null
+++ b/bundles/org.eclipse.emf.ecp.view.template.annotation.model.edit/icons/full/ctool16/CreateMultiStyleSelectorContainer_selectors_AnnotationSelector.gif
Binary files differ
diff --git a/bundles/org.eclipse.emf.ecp.view.template.annotation.model.edit/icons/full/ctool16/CreateStyleSelectorContainer_selector_AnnotationSelector.gif b/bundles/org.eclipse.emf.ecp.view.template.annotation.model.edit/icons/full/ctool16/CreateStyleSelectorContainer_selector_AnnotationSelector.gif
new file mode 100644
index 0000000..ca96637
--- /dev/null
+++ b/bundles/org.eclipse.emf.ecp.view.template.annotation.model.edit/icons/full/ctool16/CreateStyleSelectorContainer_selector_AnnotationSelector.gif
Binary files differ
diff --git a/bundles/org.eclipse.emf.ecp.view.template.annotation.model.edit/icons/full/obj16/AnnotationSelector.png b/bundles/org.eclipse.emf.ecp.view.template.annotation.model.edit/icons/full/obj16/AnnotationSelector.png
new file mode 100644
index 0000000..ea897cc
--- /dev/null
+++ b/bundles/org.eclipse.emf.ecp.view.template.annotation.model.edit/icons/full/obj16/AnnotationSelector.png
Binary files differ
diff --git a/bundles/org.eclipse.emf.ecp.view.template.annotation.model.edit/plugin.properties b/bundles/org.eclipse.emf.ecp.view.template.annotation.model.edit/plugin.properties
new file mode 100644
index 0000000..016275a
--- /dev/null
+++ b/bundles/org.eclipse.emf.ecp.view.template.annotation.model.edit/plugin.properties
@@ -0,0 +1,33 @@
+# Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+# Johannes Faltermeier - initial API and implementation
+
+pluginName = AnnotationSelector Edit Support
+providerName = Eclipse Modeling Project
+
+_UI_CreateChild_text = {0}
+_UI_CreateChild_text2 = {1} {0}
+_UI_CreateChild_text3 = {1}
+_UI_CreateChild_tooltip = Create New {0} Under {1} Feature
+_UI_CreateChild_description = Create a new child of type {0} for the {1} feature of the selected {2}.
+_UI_CreateSibling_description = Create a new sibling of type {0} for the selected {2}, under the {1} feature of their parent.
+
+_UI_PropertyDescriptor_description = The {0} of the {1}
+
+_UI_AnnotationSelector_type = Annotation Selector
+_UI_Unknown_type = Object
+
+_UI_Unknown_datatype= Value
+
+_UI_AnnotationSelector_key_feature = Key
+_UI_AnnotationSelector_value_feature = Value
+_UI_Unknown_feature = Unspecified
+
+_UI_AnnotationSelector_label = Annotation Selector [{0}, {1}]
+
diff --git a/bundles/org.eclipse.emf.ecp.view.template.annotation.model.edit/plugin.xml b/bundles/org.eclipse.emf.ecp.view.template.annotation.model.edit/plugin.xml
new file mode 100644
index 0000000..c84d4bf
--- /dev/null
+++ b/bundles/org.eclipse.emf.ecp.view.template.annotation.model.edit/plugin.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<!--
+ Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ Johannes Faltermeier - initial API and implementation
+-->
+
+<plugin>
+
+   <extension point="org.eclipse.emf.edit.itemProviderAdapterFactories">
+      <!-- @generated annotationSelector -->
+      <factory
+            uri="http://www.eclipse.org/emf/ecp/view/template/selector/annotation/model"
+            class="org.eclipse.emf.ecp.view.template.selector.annotation.model.provider.AnnotationItemProviderAdapterFactory"
+            supportedTypes=
+              "org.eclipse.emf.edit.provider.IEditingDomainItemProvider
+               org.eclipse.emf.edit.provider.IStructuredItemContentProvider
+               org.eclipse.emf.edit.provider.ITreeItemContentProvider
+               org.eclipse.emf.edit.provider.IItemLabelProvider
+               org.eclipse.emf.edit.provider.IItemPropertySource"/>
+   </extension>
+
+   <extension point="org.eclipse.emf.edit.childCreationExtenders">
+      <!-- @generated annotationSelector -->
+      <extender
+            uri="http://org/eclipse/emf/ecp/view/template/model"
+            class="org.eclipse.emf.ecp.view.template.selector.annotation.model.provider.AnnotationItemProviderAdapterFactory$TemplateChildCreationExtender"/>
+   </extension>
+
+</plugin>
diff --git a/bundles/org.eclipse.emf.ecp.view.template.annotation.model.edit/pom.xml b/bundles/org.eclipse.emf.ecp.view.template.annotation.model.edit/pom.xml
new file mode 100644
index 0000000..f57c30e
--- /dev/null
+++ b/bundles/org.eclipse.emf.ecp.view.template.annotation.model.edit/pom.xml
@@ -0,0 +1,18 @@
+<?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.emf.ecp</groupId>
+    <artifactId>ecp-bundles-parent</artifactId>
+    <version>1.17.0-SNAPSHOT</version>
+    <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
+  </parent>
+
+  <artifactId>org.eclipse.emf.ecp.view.template.annotation.model.edit</artifactId>
+  <packaging>eclipse-plugin</packaging>
+  <version>1.17.0-SNAPSHOT</version>
+
+</project>
diff --git a/bundles/org.eclipse.emf.ecp.view.template.annotation.model.edit/src/org/eclipse/emf/ecp/view/template/selector/annotation/model/provider/AnnotationItemProviderAdapterFactory.java b/bundles/org.eclipse.emf.ecp.view.template.annotation.model.edit/src/org/eclipse/emf/ecp/view/template/selector/annotation/model/provider/AnnotationItemProviderAdapterFactory.java
new file mode 100644
index 0000000..33fd1c3
--- /dev/null
+++ b/bundles/org.eclipse.emf.ecp.view.template.annotation.model.edit/src/org/eclipse/emf/ecp/view/template/selector/annotation/model/provider/AnnotationItemProviderAdapterFactory.java
@@ -0,0 +1,402 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * Johannes Faltermeier - initial API and implementation
+ */
+package org.eclipse.emf.ecp.view.template.selector.annotation.model.provider;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.Notifier;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecp.view.template.model.VTMultiStyleSelectorContainer;
+import org.eclipse.emf.ecp.view.template.model.VTStyleSelectorContainer;
+import org.eclipse.emf.ecp.view.template.model.VTTemplatePackage;
+import org.eclipse.emf.ecp.view.template.model.util.TemplateSwitch;
+import org.eclipse.emf.ecp.view.template.selector.annotation.model.VTAnnotationFactory;
+import org.eclipse.emf.ecp.view.template.selector.annotation.model.VTAnnotationPackage;
+import org.eclipse.emf.ecp.view.template.selector.annotation.model.util.AnnotationAdapterFactory;
+import org.eclipse.emf.edit.command.CommandParameter;
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.emf.edit.provider.ChangeNotifier;
+import org.eclipse.emf.edit.provider.ChildCreationExtenderManager;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
+import org.eclipse.emf.edit.provider.IChangeNotifier;
+import org.eclipse.emf.edit.provider.IChildCreationExtender;
+import org.eclipse.emf.edit.provider.IDisposable;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.INotifyChangedListener;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+/**
+ * This is the factory that is used to provide the interfaces needed to support Viewers.
+ * The adapters generated by this factory convert EMF adapter notifications into calls to {@link #fireNotifyChanged
+ * fireNotifyChanged}.
+ * The adapters also support Eclipse property sheets.
+ * Note that most of the adapters are shared among multiple instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class AnnotationItemProviderAdapterFactory extends AnnotationAdapterFactory
+	implements ComposeableAdapterFactory, IChangeNotifier, IDisposable, IChildCreationExtender {
+	/**
+	 * This keeps track of the root adapter factory that delegates to this adapter factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected ComposedAdapterFactory parentAdapterFactory;
+
+	/**
+	 * This is used to implement {@link org.eclipse.emf.edit.provider.IChangeNotifier}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected IChangeNotifier changeNotifier = new ChangeNotifier();
+
+	/**
+	 * This helps manage the child creation extenders.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected ChildCreationExtenderManager childCreationExtenderManager = new ChildCreationExtenderManager(
+		AnnotationSelectorEditPlugin.INSTANCE, VTAnnotationPackage.eNS_URI);
+
+	/**
+	 * This keeps track of all the supported types checked by {@link #isFactoryForType isFactoryForType}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected Collection<Object> supportedTypes = new ArrayList<Object>();
+
+	/**
+	 * This constructs an instance.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public AnnotationItemProviderAdapterFactory() {
+		supportedTypes.add(IEditingDomainItemProvider.class);
+		supportedTypes.add(IStructuredItemContentProvider.class);
+		supportedTypes.add(ITreeItemContentProvider.class);
+		supportedTypes.add(IItemLabelProvider.class);
+		supportedTypes.add(IItemPropertySource.class);
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all
+	 * {@link org.eclipse.emf.ecp.view.template.selector.annotation.model.VTAnnotationSelector} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected AnnotationSelectorItemProvider annotationSelectorItemProvider;
+
+	/**
+	 * This creates an adapter for a
+	 * {@link org.eclipse.emf.ecp.view.template.selector.annotation.model.VTAnnotationSelector}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Adapter createAnnotationSelectorAdapter() {
+		if (annotationSelectorItemProvider == null) {
+			annotationSelectorItemProvider = new AnnotationSelectorItemProvider(this);
+		}
+
+		return annotationSelectorItemProvider;
+	}
+
+	/**
+	 * This returns the root adapter factory that contains this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public ComposeableAdapterFactory getRootAdapterFactory() {
+		return parentAdapterFactory == null ? this : parentAdapterFactory.getRootAdapterFactory();
+	}
+
+	/**
+	 * This sets the composed adapter factory that contains this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setParentAdapterFactory(ComposedAdapterFactory parentAdapterFactory) {
+		this.parentAdapterFactory = parentAdapterFactory;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public boolean isFactoryForType(Object type) {
+		return supportedTypes.contains(type) || super.isFactoryForType(type);
+	}
+
+	/**
+	 * This implementation substitutes the factory itself as the key for the adapter.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Adapter adapt(Notifier notifier, Object type) {
+		return super.adapt(notifier, this);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object adapt(Object object, Object type) {
+		if (isFactoryForType(type)) {
+			final Object adapter = super.adapt(object, type);
+			if (!(type instanceof Class<?>) || ((Class<?>) type).isInstance(adapter)) {
+				return adapter;
+			}
+		}
+
+		return null;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public List<IChildCreationExtender> getChildCreationExtenders() {
+		return childCreationExtenderManager.getChildCreationExtenders();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Collection<?> getNewChildDescriptors(Object object, EditingDomain editingDomain) {
+		return childCreationExtenderManager.getNewChildDescriptors(object, editingDomain);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return childCreationExtenderManager;
+	}
+
+	/**
+	 * This adds a listener.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void addListener(INotifyChangedListener notifyChangedListener) {
+		changeNotifier.addListener(notifyChangedListener);
+	}
+
+	/**
+	 * This removes a listener.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void removeListener(INotifyChangedListener notifyChangedListener) {
+		changeNotifier.removeListener(notifyChangedListener);
+	}
+
+	/**
+	 * This delegates to {@link #changeNotifier} and to {@link #parentAdapterFactory}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void fireNotifyChanged(Notification notification) {
+		changeNotifier.fireNotifyChanged(notification);
+
+		if (parentAdapterFactory != null) {
+			parentAdapterFactory.fireNotifyChanged(notification);
+		}
+	}
+
+	/**
+	 * This disposes all of the item providers created by this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void dispose() {
+		if (annotationSelectorItemProvider != null) {
+			annotationSelectorItemProvider.dispose();
+		}
+	}
+
+	/**
+	 * A child creation extender for the {@link VTTemplatePackage}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public static class TemplateChildCreationExtender implements IChildCreationExtender {
+		/**
+		 * The switch for creating child descriptors specific to each extended class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		protected static class CreationSwitch extends TemplateSwitch<Object> {
+			/**
+			 * The child descriptors being populated.
+			 * <!-- begin-user-doc -->
+			 * <!-- end-user-doc -->
+			 *
+			 * @generated
+			 */
+			protected List<Object> newChildDescriptors;
+
+			/**
+			 * The domain in which to create the children.
+			 * <!-- begin-user-doc -->
+			 * <!-- end-user-doc -->
+			 *
+			 * @generated
+			 */
+			protected EditingDomain editingDomain;
+
+			/**
+			 * Creates the a switch for populating child descriptors in the given domain.
+			 * <!-- begin-user-doc -->
+			 * <!-- end-user-doc -->
+			 *
+			 * @generated
+			 */
+			CreationSwitch(List<Object> newChildDescriptors, EditingDomain editingDomain) {
+				this.newChildDescriptors = newChildDescriptors;
+				this.editingDomain = editingDomain;
+			}
+
+			/**
+			 * <!-- begin-user-doc -->
+			 * <!-- end-user-doc -->
+			 *
+			 * @generated
+			 */
+			@Override
+			public Object caseStyleSelectorContainer(VTStyleSelectorContainer object) {
+				newChildDescriptors
+					.add(createChildParameter(VTTemplatePackage.Literals.STYLE_SELECTOR_CONTAINER__SELECTOR,
+						VTAnnotationFactory.eINSTANCE.createAnnotationSelector()));
+
+				return null;
+			}
+
+			/**
+			 * <!-- begin-user-doc -->
+			 * <!-- end-user-doc -->
+			 *
+			 * @generated
+			 */
+			@Override
+			public Object caseMultiStyleSelectorContainer(VTMultiStyleSelectorContainer object) {
+				newChildDescriptors
+					.add(createChildParameter(VTTemplatePackage.Literals.MULTI_STYLE_SELECTOR_CONTAINER__SELECTORS,
+						VTAnnotationFactory.eINSTANCE.createAnnotationSelector()));
+
+				return null;
+			}
+
+			/**
+			 * <!-- begin-user-doc -->
+			 * <!-- end-user-doc -->
+			 *
+			 * @generated
+			 */
+			protected CommandParameter createChildParameter(Object feature, Object child) {
+				return new CommandParameter(null, feature, child);
+			}
+
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		@Override
+		public Collection<Object> getNewChildDescriptors(Object object, EditingDomain editingDomain) {
+			final ArrayList<Object> result = new ArrayList<Object>();
+			new CreationSwitch(result, editingDomain).doSwitch((EObject) object);
+			return result;
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		@Override
+		public ResourceLocator getResourceLocator() {
+			return AnnotationSelectorEditPlugin.INSTANCE;
+		}
+	}
+
+}
diff --git a/bundles/org.eclipse.emf.ecp.view.template.annotation.model.edit/src/org/eclipse/emf/ecp/view/template/selector/annotation/model/provider/AnnotationSelectorEditPlugin.java b/bundles/org.eclipse.emf.ecp.view.template.annotation.model.edit/src/org/eclipse/emf/ecp/view/template/selector/annotation/model/provider/AnnotationSelectorEditPlugin.java
new file mode 100644
index 0000000..fb05b57
--- /dev/null
+++ b/bundles/org.eclipse.emf.ecp.view.template.annotation.model.edit/src/org/eclipse/emf/ecp/view/template/selector/annotation/model/provider/AnnotationSelectorEditPlugin.java
@@ -0,0 +1,106 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * Johannes Faltermeier - initial API and implementation
+ */
+package org.eclipse.emf.ecp.view.template.selector.annotation.model.provider;
+
+import org.eclipse.emf.common.EMFPlugin;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.ecp.view.template.model.provider.TemplateEditPlugin;
+
+/**
+ * This is the central singleton for the AnnotationInHierarchySelector edit plugin.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public final class AnnotationSelectorEditPlugin extends EMFPlugin {
+	/**
+	 * Keep track of the singleton.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public static final AnnotationSelectorEditPlugin INSTANCE = new AnnotationSelectorEditPlugin();
+
+	/**
+	 * Keep track of the singleton.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private static Implementation plugin;
+
+	/**
+	 * Create the instance.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public AnnotationSelectorEditPlugin() {
+		super(new ResourceLocator[] {
+			TemplateEditPlugin.INSTANCE,
+		});
+	}
+
+	/**
+	 * Returns the singleton instance of the Eclipse plugin.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the singleton instance.
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getPluginResourceLocator() {
+		return plugin;
+	}
+
+	/**
+	 * Returns the singleton instance of the Eclipse plugin.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the singleton instance.
+	 * @generated
+	 */
+	public static Implementation getPlugin() {
+		return plugin;
+	}
+
+	/**
+	 * The actual implementation of the Eclipse <b>Plugin</b>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public static class Implementation extends EclipsePlugin {
+		/**
+		 * Creates an instance.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		public Implementation() {
+			super();
+
+			// Remember the static instance.
+			//
+			plugin = this;
+		}
+	}
+
+}
diff --git a/bundles/org.eclipse.emf.ecp.view.template.annotation.model.edit/src/org/eclipse/emf/ecp/view/template/selector/annotation/model/provider/AnnotationSelectorItemProvider.java b/bundles/org.eclipse.emf.ecp.view.template.annotation.model.edit/src/org/eclipse/emf/ecp/view/template/selector/annotation/model/provider/AnnotationSelectorItemProvider.java
new file mode 100644
index 0000000..a88e5d8
--- /dev/null
+++ b/bundles/org.eclipse.emf.ecp.view.template.annotation.model.edit/src/org/eclipse/emf/ecp/view/template/selector/annotation/model/provider/AnnotationSelectorItemProvider.java
@@ -0,0 +1,197 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * Johannes Faltermeier - initial API and implementation
+ */
+package org.eclipse.emf.ecp.view.template.selector.annotation.model.provider;
+
+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.common.util.ResourceLocator;
+import org.eclipse.emf.ecp.view.template.selector.annotation.model.VTAnnotationPackage;
+import org.eclipse.emf.ecp.view.template.selector.annotation.model.VTAnnotationSelector;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IChildCreationExtender;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a
+ * {@link org.eclipse.emf.ecp.view.template.selector.annotation.model.VTAnnotationSelector} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class AnnotationSelectorItemProvider
+	extends ItemProviderAdapter
+	implements
+	IEditingDomainItemProvider,
+	ITreeItemContentProvider,
+	IItemLabelProvider,
+	IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public AnnotationSelectorItemProvider(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);
+
+			addKeyPropertyDescriptor(object);
+			addValuePropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Key feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void addKeyPropertyDescriptor(Object object) {
+		itemPropertyDescriptors
+			.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+				getResourceLocator(),
+				getString("_UI_AnnotationSelector_key_feature"), //$NON-NLS-1$
+				getString("_UI_PropertyDescriptor_description", "_UI_AnnotationSelector_key_feature", //$NON-NLS-1$ //$NON-NLS-2$
+					"_UI_AnnotationSelector_type"), //$NON-NLS-1$
+				VTAnnotationPackage.Literals.ANNOTATION_SELECTOR__KEY,
+				true,
+				false,
+				false,
+				ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				null,
+				null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Value feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void addValuePropertyDescriptor(Object object) {
+		itemPropertyDescriptors
+			.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+				getResourceLocator(),
+				getString("_UI_AnnotationSelector_value_feature"), //$NON-NLS-1$
+				getString("_UI_PropertyDescriptor_description", "_UI_AnnotationSelector_value_feature", //$NON-NLS-1$ //$NON-NLS-2$
+					"_UI_AnnotationSelector_type"), //$NON-NLS-1$
+				VTAnnotationPackage.Literals.ANNOTATION_SELECTOR__VALUE,
+				true,
+				false,
+				false,
+				ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				null,
+				null));
+	}
+
+	/**
+	 * This returns AnnotationSelector.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/AnnotationSelector.png")); //$NON-NLS-1$
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	@Override
+	public String getText(Object object) {
+		final VTAnnotationSelector annotation = (VTAnnotationSelector) object;
+		final String key = annotation.getKey() != null ? "\"" + annotation.getKey() + "\"" : annotation.getKey(); //$NON-NLS-1$ //$NON-NLS-2$
+		final String value = annotation.getValue() != null ? "\"" + annotation.getValue() + "\"" //$NON-NLS-1$ //$NON-NLS-2$
+			: annotation.getValue();
+		return getString("_UI_AnnotationSelector_label", new String[] { key, value }); //$NON-NLS-1$
+	}
+
+	/**
+	 * 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);
+
+		switch (notification.getFeatureID(VTAnnotationSelector.class)) {
+		case VTAnnotationPackage.ANNOTATION_SELECTOR__KEY:
+		case VTAnnotationPackage.ANNOTATION_SELECTOR__VALUE:
+			fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+			return;
+		}
+		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);
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return ((IChildCreationExtender) adapterFactory).getResourceLocator();
+	}
+
+}
diff --git a/bundles/org.eclipse.emf.ecp.view.template.annotation.model/.checkstyle b/bundles/org.eclipse.emf.ecp.view.template.annotation.model/.checkstyle
new file mode 100644
index 0000000..19c5477
--- /dev/null
+++ b/bundles/org.eclipse.emf.ecp.view.template.annotation.model/.checkstyle
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<fileset-config file-format-version="1.2.0" simple-config="false" sync-formatter="false">
+  <local-check-config name="ESMCheckstyle" location="/org.eclipse.emf.ecp.releng/checkstyle/esmCheckstyle.xml" type="project" description="">
+    <additional-data name="protect-config-file" value="false"/>
+  </local-check-config>
+  <fileset name="Java Files" enabled="true" check-config-name="ESMCheckstyle" local="true">
+    <file-match-pattern match-pattern=".java" include-pattern="true"/>
+  </fileset>
+</fileset-config>
diff --git a/bundles/org.eclipse.emf.ecp.view.template.annotation.model/.classpath b/bundles/org.eclipse.emf.ecp.view.template.annotation.model/.classpath
new file mode 100644
index 0000000..ad32c83
--- /dev/null
+++ b/bundles/org.eclipse.emf.ecp.view.template.annotation.model/.classpath
@@ -0,0 +1,7 @@
+<?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.6"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/bundles/org.eclipse.emf.ecp.view.template.annotation.model/.project b/bundles/org.eclipse.emf.ecp.view.template.annotation.model/.project
new file mode 100644
index 0000000..04cf7d5
--- /dev/null
+++ b/bundles/org.eclipse.emf.ecp.view.template.annotation.model/.project
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.emf.ecp.view.template.annotation.model</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.pde.api.tools.apiAnalysisBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>net.sf.eclipsecs.core.CheckstyleBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
+		<nature>net.sf.eclipsecs.core.CheckstyleNature</nature>
+	</natures>
+</projectDescription>
diff --git a/bundles/org.eclipse.emf.ecp.view.template.annotation.model/.settings/org.eclipse.core.resources.prefs b/bundles/org.eclipse.emf.ecp.view.template.annotation.model/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..f548abb
--- /dev/null
+++ b/bundles/org.eclipse.emf.ecp.view.template.annotation.model/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,6 @@
+eclipse.preferences.version=1
+
+encoding//model/etypes.ecore=UTF-8
+
+
+encoding/<project>=UTF-8
diff --git a/bundles/org.eclipse.emf.ecp.view.template.annotation.model/.settings/org.eclipse.core.runtime.prefs b/bundles/org.eclipse.emf.ecp.view.template.annotation.model/.settings/org.eclipse.core.runtime.prefs
new file mode 100644
index 0000000..5a0ad22
--- /dev/null
+++ b/bundles/org.eclipse.emf.ecp.view.template.annotation.model/.settings/org.eclipse.core.runtime.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+line.separator=\n
diff --git a/bundles/org.eclipse.emf.ecp.view.template.annotation.model/.settings/org.eclipse.jdt.core.prefs b/bundles/org.eclipse.emf.ecp.view.template.annotation.model/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..c948297
--- /dev/null
+++ b/bundles/org.eclipse.emf.ecp.view.template.annotation.model/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,418 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.builder.cleanOutputFolder=clean
+org.eclipse.jdt.core.builder.duplicateResourceTask=warning
+org.eclipse.jdt.core.builder.invalidClasspath=abort
+org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
+org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=
+org.eclipse.jdt.core.circularClasspath=error
+org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
+org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
+org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error
+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.annotation.inheritNullAnnotations=disabled
+org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
+org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
+org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
+org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.6
+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.doc.comment.support=enabled
+org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
+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=enabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
+org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=disabled
+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.invalidJavadoc=warning
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=disabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=public
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
+org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=warning
+org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
+org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=public
+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=warning
+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.nonnullParameterAnnotationDropped=warning
+org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
+org.eclipse.jdt.core.compiler.problem.nullReference=warning
+org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
+org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
+org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
+org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
+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.syntacticNullAnalysisForFields=disabled
+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.unclosedCloseable=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=warning
+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.unusedTypeParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.source=1.6
+org.eclipse.jdt.core.compiler.taskCaseSensitive=enabled
+org.eclipse.jdt.core.compiler.taskPriorities=NORMAL,HIGH,HIGH,LOW,LOW,LOW,LOW,LOW,NORMAL
+org.eclipse.jdt.core.compiler.taskTags=TODO,FIXME,XXX,PERF,MEM,POLISH,@generated NOT,@ADDED,APITODO
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+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_binary_expression=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_method_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=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_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=false
+org.eclipse.jdt.core.formatter.comment.format_block_comments=true
+org.eclipse.jdt.core.formatter.comment.format_header=true
+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=do not 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=1
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=1
+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=do not 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_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_binary_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_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_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_unary_operator=do not 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_binary_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_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_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_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=false
+org.eclipse.jdt.core.formatter.join_wrapped_lines=false
+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=120
+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_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
+org.eclipse.jdt.core.incompatibleJDKLevel=ignore
+org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/bundles/org.eclipse.emf.ecp.view.template.annotation.model/.settings/org.eclipse.jdt.launching.prefs b/bundles/org.eclipse.emf.ecp.view.template.annotation.model/.settings/org.eclipse.jdt.launching.prefs
new file mode 100644
index 0000000..3bb2352
--- /dev/null
+++ b/bundles/org.eclipse.emf.ecp.view.template.annotation.model/.settings/org.eclipse.jdt.launching.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.launching.PREF_STRICTLY_COMPATIBLE_JRE_NOT_AVAILABLE=ignore
diff --git a/bundles/org.eclipse.emf.ecp.view.template.annotation.model/.settings/org.eclipse.jdt.ui.prefs b/bundles/org.eclipse.emf.ecp.view.template.annotation.model/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 0000000..8bc4bb4
--- /dev/null
+++ b/bundles/org.eclipse.emf.ecp.view.template.annotation.model/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,127 @@
+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_functional_interfaces=false
+cleanup.convert_to_enhanced_for_loop=false
+cleanup.correct_indentation=false
+cleanup.format_source_code=true
+cleanup.format_source_code_changes_only=false
+cleanup.insert_inferred_type_arguments=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=true
+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=true
+cleanup.remove_redundant_type_arguments=true
+cleanup.remove_trailing_whitespaces=true
+cleanup.remove_trailing_whitespaces_all=true
+cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_casts=false
+cleanup.remove_unnecessary_nls_tags=false
+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=true
+cleanup.remove_unused_private_types=true
+cleanup.sort_members=false
+cleanup.sort_members_all=false
+cleanup.use_anonymous_class_creation=false
+cleanup.use_blocks=true
+cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_lambda=true
+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.use_type_arguments=false
+cleanup_profile=_esmCleanUp
+cleanup_settings_version=2
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+formatter_profile=_esmFormatter
+formatter_settings_version=12
+org.eclipse.jdt.ui.exception.name=ex
+org.eclipse.jdt.ui.gettersetter.use.is=true
+org.eclipse.jdt.ui.javadoc=true
+org.eclipse.jdt.ui.keywordthis=false
+org.eclipse.jdt.ui.overrideannotation=true
+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 * Copyright (c) 2011-${year} EclipseSource Muenchen GmbH and others.\r\n * \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 * ${user} - initial API and implementation\r\n ******************************************************************************/</template><template autoinsert\="true" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * @author ${user}\r\n *\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment"/><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 * {@inheritDoc}\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">\t\t\t// TODO Auto-generated catch block\r\n\t\t\t// Do NOT catch all Exceptions ("catch (Exception e)")\r\n\t\t\t// Log AND handle Exceptions if possible \r\n            //\r\n            // You can just uncomment one of the lines below to log an exception\:\r\n\t\t\t// logException will show the logged excpetion to the user\r\n\t\t\t// ModelUtil.logException(${exception_var});\r\n\t\t\t// ModelUtil.logException("YOUR MESSAGE HERE", ${exception_var});\r\n\t\t\t// logWarning will only add the message to the error log\r\n\t\t\t// ModelUtil.logWarning("YOUR MESSAGE HERE", ${exception_var});\r\n\t\t\t// ModelUtil.logWarning("YOUR MESSAGE HERE");\r\n\t\t\t//\t\t\t\r\n\t\t\t// If handling is not possible declare and rethrow Exception</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_functional_interfaces=false
+sp_cleanup.convert_to_enhanced_for_loop=false
+sp_cleanup.correct_indentation=false
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.insert_inferred_type_arguments=false
+sp_cleanup.make_local_variable_final=true
+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=true
+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=true
+sp_cleanup.remove_redundant_type_arguments=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=false
+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=true
+sp_cleanup.remove_unused_private_types=true
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.use_anonymous_class_creation=false
+sp_cleanup.use_blocks=true
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_lambda=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
+sp_cleanup.use_type_arguments=false
diff --git a/bundles/org.eclipse.emf.ecp.view.template.annotation.model/.settings/org.eclipse.ltk.core.refactoring.prefs b/bundles/org.eclipse.emf.ecp.view.template.annotation.model/.settings/org.eclipse.ltk.core.refactoring.prefs
new file mode 100644
index 0000000..864e30f
--- /dev/null
+++ b/bundles/org.eclipse.emf.ecp.view.template.annotation.model/.settings/org.eclipse.ltk.core.refactoring.prefs
@@ -0,0 +1,3 @@
+#Thu Feb 04 09:44:24 CET 2010
+eclipse.preferences.version=1
+org.eclipse.ltk.core.refactoring.enable.project.refactoring.history=false
diff --git a/bundles/org.eclipse.emf.ecp.view.template.annotation.model/.settings/org.eclipse.pde.api.tools.prefs b/bundles/org.eclipse.emf.ecp.view.template.annotation.model/.settings/org.eclipse.pde.api.tools.prefs
new file mode 100644
index 0000000..e4e3c00
--- /dev/null
+++ b/bundles/org.eclipse.emf.ecp.view.template.annotation.model/.settings/org.eclipse.pde.api.tools.prefs
@@ -0,0 +1,97 @@
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_TYPE=Error
+API_USE_SCAN_FIELD_SEVERITY=Error
+API_USE_SCAN_METHOD_SEVERITY=Error
+API_USE_SCAN_TYPE_SEVERITY=Error
+CLASS_ELEMENT_TYPE_ADDED_METHOD=Error
+CLASS_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CLASS_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+CLASS_ELEMENT_TYPE_REMOVED_CONSTRUCTOR=Error
+CLASS_ELEMENT_TYPE_REMOVED_FIELD=Error
+CLASS_ELEMENT_TYPE_REMOVED_METHOD=Error
+CLASS_ELEMENT_TYPE_REMOVED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+ENUM_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ENUM_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ENUM_ELEMENT_TYPE_REMOVED_ENUM_CONSTANT=Error
+ENUM_ELEMENT_TYPE_REMOVED_FIELD=Error
+ENUM_ELEMENT_TYPE_REMOVED_METHOD=Error
+ENUM_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+FIELD_ELEMENT_TYPE_ADDED_VALUE=Error
+FIELD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+FIELD_ELEMENT_TYPE_CHANGED_FINAL_TO_NON_FINAL_STATIC_CONSTANT=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_TYPE=Error
+FIELD_ELEMENT_TYPE_CHANGED_VALUE=Error
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENT=Error
+FIELD_ELEMENT_TYPE_REMOVED_VALUE=Error
+ILLEGAL_EXTEND=Warning
+ILLEGAL_IMPLEMENT=Warning
+ILLEGAL_INSTANTIATE=Warning
+ILLEGAL_OVERRIDE=Warning
+ILLEGAL_REFERENCE=Warning
+INTERFACE_ELEMENT_TYPE_ADDED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_SUPER_INTERFACE_WITH_METHODS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+INVALID_JAVADOC_TAG=Warning
+INVALID_REFERENCE_IN_SYSTEM_LIBRARIES=Error
+LEAK_EXTEND=Warning
+LEAK_FIELD_DECL=Warning
+LEAK_IMPLEMENT=Warning
+LEAK_METHOD_PARAM=Warning
+LEAK_METHOD_RETURN_TYPE=Warning
+METHOD_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+METHOD_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+METHOD_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+MISSING_EE_DESCRIPTIONS=Error
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+UNUSED_PROBLEM_FILTERS=Ignore
+automatically_removed_unused_problem_filters=Disabled
+eclipse.preferences.version=1
+incompatible_api_component_version=Error
+incompatible_api_component_version_include_major_without_breaking_change=Disabled
+incompatible_api_component_version_include_minor_without_api_change=Disabled
+invalid_since_tag_version=Error
+malformed_since_tag=Error
+missing_since_tag=Error
+report_api_breakage_when_major_version_incremented=Disabled
+report_resolution_errors_api_component=Warning
diff --git a/bundles/org.eclipse.emf.ecp.view.template.annotation.model/.settings/org.eclipse.pde.prefs b/bundles/org.eclipse.emf.ecp.view.template.annotation.model/.settings/org.eclipse.pde.prefs
new file mode 100644
index 0000000..0bbee3c
--- /dev/null
+++ b/bundles/org.eclipse.emf.ecp.view.template.annotation.model/.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=1
+compilers.p.missing-version-import-package=1
+compilers.p.missing-version-require-bundle=1
+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/bundles/org.eclipse.emf.ecp.view.template.annotation.model/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.view.template.annotation.model/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..8b9b2fe
--- /dev/null
+++ b/bundles/org.eclipse.emf.ecp.view.template.annotation.model/META-INF/MANIFEST.MF
@@ -0,0 +1,19 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.emf.ecp.view.template.annotation.model;singleton:=true
+Bundle-Version: 1.17.0.qualifier
+Bundle-ClassPath: .
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Automatic-Module-Name: org.eclipse.emf.ecp.view.template.annotation.model
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Export-Package: org.eclipse.emf.ecp.view.template.selector.annotation.model;version="1.17.0",
+ org.eclipse.emf.ecp.view.template.selector.annotation.model.impl;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.template.selector.annotation.model.util;version="1.17.0";x-friends:="org.eclipse.emf.ecp.view.template.annotation.model.edit"
+Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.7.0,4.0.0)",
+ org.eclipse.emf.ecore;bundle-version="[2.7.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.ecp.view.template.model;bundle-version="[1.17.0,1.18.0)";visibility:=reexport,
+ org.eclipse.emf.ecp.view.context;bundle-version="[1.17.0,1.18.0)",
+ org.eclipse.emfforms.view.annotation.model;bundle-version="[1.17.0,1.18.0)"
+Bundle-ActivationPolicy: lazy
diff --git a/bundles/org.eclipse.emf.ecp.view.template.annotation.model/about.html b/bundles/org.eclipse.emf.ecp.view.template.annotation.model/about.html
new file mode 100644
index 0000000..d35d5ae
--- /dev/null
+++ b/bundles/org.eclipse.emf.ecp.view.template.annotation.model/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, 2007</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>
diff --git a/bundles/org.eclipse.emf.ecp.view.template.annotation.model/build.properties b/bundles/org.eclipse.emf.ecp.view.template.annotation.model/build.properties
new file mode 100644
index 0000000..7cdd08c
--- /dev/null
+++ b/bundles/org.eclipse.emf.ecp.view.template.annotation.model/build.properties
@@ -0,0 +1,19 @@
+# Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+# Johannes Faltermeier - initial API and implementation
+
+bin.includes = .,\
+               model/,\
+               META-INF/,\
+               plugin.xml,\
+               plugin.properties,\
+               about.html
+jars.compile.order = .
+source.. = src/
+output.. = bin/
diff --git a/bundles/org.eclipse.emf.ecp.view.template.annotation.model/model/annotationSelector.ecore b/bundles/org.eclipse.emf.ecp.view.template.annotation.model/model/annotationSelector.ecore
new file mode 100644
index 0000000..bbd5089
--- /dev/null
+++ b/bundles/org.eclipse.emf.ecp.view.template.annotation.model/model/annotationSelector.ecore
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="annotation" nsURI="http://www.eclipse.org/emf/ecp/view/template/selector/annotation/model"
+    nsPrefix="org.eclipse.emf.ecp.view.template.selector.annotation.model">
+  <eClassifiers xsi:type="ecore:EClass" name="AnnotationSelector" eSuperTypes="../../org.eclipse.emf.ecp.view.template.model/model/template.ecore#//StyleSelector">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="key" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+  </eClassifiers>
+</ecore:EPackage>
diff --git a/bundles/org.eclipse.emf.ecp.view.template.annotation.model/model/annotationSelector.genmodel b/bundles/org.eclipse.emf.ecp.view.template.annotation.model/model/annotationSelector.genmodel
new file mode 100644
index 0000000..7c9776a
--- /dev/null
+++ b/bundles/org.eclipse.emf.ecp.view.template.annotation.model/model/annotationSelector.genmodel
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<genmodel:GenModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
+    xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel" copyrightText="Copyright (c) 2011-2018 EclipseSource Muenchen GmbH and others.&#xA;&#xA;All rights reserved. This program and the accompanying materials&#xA;are made available under the terms of the Eclipse Public License v1.0&#xA;which accompanies this distribution, and is available at&#xA;http://www.eclipse.org/legal/epl-v10.html&#xA;&#xA;Contributors:&#xA;Johannes Faltermeier - initial API and implementation"
+    modelDirectory="/org.eclipse.emf.ecp.view.template.annotation.model/src" modelPluginID="org.eclipse.emf.ecp.view.template.annotation.model"
+    modelName="AnnotationSelector" nonNLSMarkers="true" rootExtendsClass="org.eclipse.emf.ecore.impl.MinimalEObjectImpl$Container"
+    codeFormatting="true" commentFormatting="true" importerID="org.eclipse.emf.importer.ecore"
+    complianceLevel="6.0" copyrightFields="false" usedGenPackages="../../org.eclipse.emf.ecp.view.template.model/model/template.genmodel#//template"
+    interfaceNamePattern="VT{0}" classNamePattern="VT{0}Impl" operationReflection="true"
+    importOrganizing="true">
+  <foreignModel>annotationSelector.ecore</foreignModel>
+  <genPackages prefix="Annotation" basePackage="org.eclipse.emf.ecp.view.template.selector"
+      disposableProviderFactory="true" interfacePackageSuffix="model" metaDataPackageSuffix="model"
+      classPackageSuffix="model.impl" utilityPackageSuffix="model.util" providerPackageSuffix="model.provider"
+      presentationPackageSuffix="model.presentation" testsPackageSuffix="model.tests"
+      extensibleProviderFactory="true" childCreationExtenders="true" ecorePackage="annotationSelector.ecore#/">
+    <genClasses ecoreClass="annotationSelector.ecore#//AnnotationSelector">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute annotationSelector.ecore#//AnnotationSelector/key"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute annotationSelector.ecore#//AnnotationSelector/value"/>
+    </genClasses>
+  </genPackages>
+</genmodel:GenModel>
diff --git a/bundles/org.eclipse.emf.ecp.view.template.annotation.model/plugin.properties b/bundles/org.eclipse.emf.ecp.view.template.annotation.model/plugin.properties
new file mode 100644
index 0000000..9afdcc0
--- /dev/null
+++ b/bundles/org.eclipse.emf.ecp.view.template.annotation.model/plugin.properties
@@ -0,0 +1,12 @@
+# Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+# Johannes Faltermeier - initial API and implementation
+
+pluginName = Annotation Template Model
+providerName = Eclipse Modeling Project
diff --git a/bundles/org.eclipse.emf.ecp.view.template.annotation.model/plugin.xml b/bundles/org.eclipse.emf.ecp.view.template.annotation.model/plugin.xml
new file mode 100644
index 0000000..7b5c8a4
--- /dev/null
+++ b/bundles/org.eclipse.emf.ecp.view.template.annotation.model/plugin.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<!--
+ Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ Johannes Faltermeier - initial API and implementation
+-->
+
+<plugin>
+
+   <extension point="org.eclipse.emf.ecore.generated_package">
+      <!-- @generated annotationSelector -->
+      <package
+            uri="http://www.eclipse.org/emf/ecp/view/template/selector/annotation/model"
+            class="org.eclipse.emf.ecp.view.template.selector.annotation.model.VTAnnotationPackage"
+            genModel="model/annotationSelector.genmodel"/>
+   </extension>
+
+</plugin>
diff --git a/bundles/org.eclipse.emf.ecp.view.template.annotation.model/pom.xml b/bundles/org.eclipse.emf.ecp.view.template.annotation.model/pom.xml
new file mode 100644
index 0000000..2fb0431
--- /dev/null
+++ b/bundles/org.eclipse.emf.ecp.view.template.annotation.model/pom.xml
@@ -0,0 +1,18 @@
+<?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.emf.ecp</groupId>
+    <artifactId>ecp-bundles-parent</artifactId>
+    <version>1.17.0-SNAPSHOT</version>
+    <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
+  </parent>
+
+  <artifactId>org.eclipse.emf.ecp.view.template.annotation.model</artifactId>
+  <packaging>eclipse-plugin</packaging>
+  <version>1.17.0-SNAPSHOT</version>
+
+</project>
diff --git a/bundles/org.eclipse.emf.ecp.view.template.annotation.model/src/org/eclipse/emf/ecp/view/template/selector/annotation/model/VTAnnotationFactory.java b/bundles/org.eclipse.emf.ecp.view.template.annotation.model/src/org/eclipse/emf/ecp/view/template/selector/annotation/model/VTAnnotationFactory.java
new file mode 100644
index 0000000..c79a8ec
--- /dev/null
+++ b/bundles/org.eclipse.emf.ecp.view.template.annotation.model/src/org/eclipse/emf/ecp/view/template/selector/annotation/model/VTAnnotationFactory.java
@@ -0,0 +1,57 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * Johannes Faltermeier - initial API and implementation
+ */
+package org.eclipse.emf.ecp.view.template.selector.annotation.model;
+
+import org.eclipse.emf.ecore.EFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Factory</b> for the model.
+ * It provides a create method for each non-abstract class of the model.
+ *
+ * @since 1.17
+ *        <!-- end-user-doc -->
+ * @see org.eclipse.emf.ecp.view.template.selector.annotation.model.VTAnnotationPackage
+ * @generated
+ */
+public interface VTAnnotationFactory extends EFactory {
+	/**
+	 * The singleton instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	VTAnnotationFactory eINSTANCE = org.eclipse.emf.ecp.view.template.selector.annotation.model.impl.VTAnnotationFactoryImpl
+		.init();
+
+	/**
+	 * Returns a new object of class '<em>Selector</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return a new object of class '<em>Selector</em>'.
+	 * @generated
+	 */
+	VTAnnotationSelector createAnnotationSelector();
+
+	/**
+	 * Returns the package supported by this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the package supported by this factory.
+	 * @generated
+	 */
+	VTAnnotationPackage getAnnotationPackage();
+
+} // VTAnnotationInHierarchyFactory
diff --git a/bundles/org.eclipse.emf.ecp.view.template.annotation.model/src/org/eclipse/emf/ecp/view/template/selector/annotation/model/VTAnnotationPackage.java b/bundles/org.eclipse.emf.ecp.view.template.annotation.model/src/org/eclipse/emf/ecp/view/template/selector/annotation/model/VTAnnotationPackage.java
new file mode 100644
index 0000000..c2cc7cc
--- /dev/null
+++ b/bundles/org.eclipse.emf.ecp.view.template.annotation.model/src/org/eclipse/emf/ecp/view/template/selector/annotation/model/VTAnnotationPackage.java
@@ -0,0 +1,225 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * Johannes Faltermeier - initial API and implementation
+ */
+package org.eclipse.emf.ecp.view.template.selector.annotation.model;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecp.view.template.model.VTTemplatePackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Package</b> for the model.
+ * It contains accessors for the meta objects to represent
+ * <ul>
+ * <li>each class,</li>
+ * <li>each feature of each class,</li>
+ * <li>each operation of each class,</li>
+ * <li>each enum,</li>
+ * <li>and each data type</li>
+ * </ul>
+ *
+ * @since 1.17
+ *        <!-- end-user-doc -->
+ * @see org.eclipse.emf.ecp.view.template.selector.annotation.model.VTAnnotationFactory
+ * @model kind="package"
+ * @generated
+ */
+public interface VTAnnotationPackage extends EPackage {
+	/**
+	 * The package name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	String eNAME = "annotation"; //$NON-NLS-1$
+
+	/**
+	 * The package namespace URI.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	String eNS_URI = "http://www.eclipse.org/emf/ecp/view/template/selector/annotation/model"; //$NON-NLS-1$
+
+	/**
+	 * The package namespace name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	String eNS_PREFIX = "org.eclipse.emf.ecp.view.template.selector.annotation.model"; //$NON-NLS-1$
+
+	/**
+	 * The singleton instance of the package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	VTAnnotationPackage eINSTANCE = org.eclipse.emf.ecp.view.template.selector.annotation.model.impl.VTAnnotationPackageImpl
+		.init();
+
+	/**
+	 * The meta object id for the
+	 * '{@link org.eclipse.emf.ecp.view.template.selector.annotation.model.impl.VTAnnotationSelectorImpl
+	 * <em>Selector</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.emf.ecp.view.template.selector.annotation.model.impl.VTAnnotationSelectorImpl
+	 * @see org.eclipse.emf.ecp.view.template.selector.annotation.model.impl.VTAnnotationPackageImpl#getAnnotationSelector()
+	 * @generated
+	 */
+	int ANNOTATION_SELECTOR = 0;
+
+	/**
+	 * The feature id for the '<em><b>Key</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int ANNOTATION_SELECTOR__KEY = VTTemplatePackage.STYLE_SELECTOR_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int ANNOTATION_SELECTOR__VALUE = VTTemplatePackage.STYLE_SELECTOR_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of structural features of the '<em>Selector</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int ANNOTATION_SELECTOR_FEATURE_COUNT = VTTemplatePackage.STYLE_SELECTOR_FEATURE_COUNT + 2;
+
+	/**
+	 * The number of operations of the '<em>Selector</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int ANNOTATION_SELECTOR_OPERATION_COUNT = VTTemplatePackage.STYLE_SELECTOR_OPERATION_COUNT + 0;
+
+	/**
+	 * Returns the meta object for class
+	 * '{@link org.eclipse.emf.ecp.view.template.selector.annotation.model.VTAnnotationSelector <em>Selector</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for class '<em>Selector</em>'.
+	 * @see org.eclipse.emf.ecp.view.template.selector.annotation.model.VTAnnotationSelector
+	 * @generated
+	 */
+	EClass getAnnotationSelector();
+
+	/**
+	 * Returns the meta object for the attribute
+	 * '{@link org.eclipse.emf.ecp.view.template.selector.annotation.model.VTAnnotationSelector#getKey <em>Key</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the attribute '<em>Key</em>'.
+	 * @see org.eclipse.emf.ecp.view.template.selector.annotation.model.VTAnnotationSelector#getKey()
+	 * @see #getAnnotationSelector()
+	 * @generated
+	 */
+	EAttribute getAnnotationSelector_Key();
+
+	/**
+	 * Returns the meta object for the attribute
+	 * '{@link org.eclipse.emf.ecp.view.template.selector.annotation.model.VTAnnotationSelector#getValue
+	 * <em>Value</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the attribute '<em>Value</em>'.
+	 * @see org.eclipse.emf.ecp.view.template.selector.annotation.model.VTAnnotationSelector#getValue()
+	 * @see #getAnnotationSelector()
+	 * @generated
+	 */
+	EAttribute getAnnotationSelector_Value();
+
+	/**
+	 * 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.
+	 * @generated
+	 */
+	VTAnnotationFactory getAnnotationFactory();
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * Defines literals for the meta objects that represent
+	 * <ul>
+	 * <li>each class,</li>
+	 * <li>each feature of each class,</li>
+	 * <li>each operation of each class,</li>
+	 * <li>each enum,</li>
+	 * <li>and each data type</li>
+	 * </ul>
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	interface Literals {
+		/**
+		 * The meta object literal for the
+		 * '{@link org.eclipse.emf.ecp.view.template.selector.annotation.model.impl.VTAnnotationSelectorImpl
+		 * <em>Selector</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @see org.eclipse.emf.ecp.view.template.selector.annotation.model.impl.VTAnnotationSelectorImpl
+		 * @see org.eclipse.emf.ecp.view.template.selector.annotation.model.impl.VTAnnotationPackageImpl#getAnnotationSelector()
+		 * @generated
+		 */
+		EClass ANNOTATION_SELECTOR = eINSTANCE.getAnnotationSelector();
+
+		/**
+		 * The meta object literal for the '<em><b>Key</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EAttribute ANNOTATION_SELECTOR__KEY = eINSTANCE.getAnnotationSelector_Key();
+
+		/**
+		 * The meta object literal for the '<em><b>Value</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EAttribute ANNOTATION_SELECTOR__VALUE = eINSTANCE.getAnnotationSelector_Value();
+
+	}
+
+} // VTAnnotationInHierarchyPackage
diff --git a/bundles/org.eclipse.emf.ecp.view.template.annotation.model/src/org/eclipse/emf/ecp/view/template/selector/annotation/model/VTAnnotationSelector.java b/bundles/org.eclipse.emf.ecp.view.template.annotation.model/src/org/eclipse/emf/ecp/view/template/selector/annotation/model/VTAnnotationSelector.java
new file mode 100644
index 0000000..1b8b831
--- /dev/null
+++ b/bundles/org.eclipse.emf.ecp.view.template.annotation.model/src/org/eclipse/emf/ecp/view/template/selector/annotation/model/VTAnnotationSelector.java
@@ -0,0 +1,98 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * Johannes Faltermeier - initial API and implementation
+ */
+package org.eclipse.emf.ecp.view.template.selector.annotation.model;
+
+import org.eclipse.emf.ecp.view.template.model.VTStyleSelector;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Selector</b></em>'.
+ *
+ * @since 1.17
+ *        <!-- end-user-doc -->
+ *
+ *        <p>
+ *        The following features are supported:
+ *        </p>
+ *        <ul>
+ *        <li>{@link org.eclipse.emf.ecp.view.template.selector.annotation.model.VTAnnotationSelector#getKey
+ *        <em>Key</em>}</li>
+ *        <li>{@link org.eclipse.emf.ecp.view.template.selector.annotation.model.VTAnnotationSelector#getValue
+ *        <em>Value</em>}</li>
+ *        </ul>
+ *
+ * @see org.eclipse.emf.ecp.view.template.selector.annotation.model.VTAnnotationPackage#getAnnotationSelector()
+ * @model
+ * @generated
+ */
+public interface VTAnnotationSelector extends VTStyleSelector {
+	/**
+	 * Returns the value of the '<em><b>Key</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Key</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Key</em>' attribute.
+	 * @see #setKey(String)
+	 * @see org.eclipse.emf.ecp.view.template.selector.annotation.model.VTAnnotationPackage#getAnnotationSelector_Key()
+	 * @model required="true"
+	 * @generated
+	 */
+	String getKey();
+
+	/**
+	 * Sets the value of the
+	 * '{@link org.eclipse.emf.ecp.view.template.selector.annotation.model.VTAnnotationSelector#getKey <em>Key</em>}'
+	 * attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value the new value of the '<em>Key</em>' attribute.
+	 * @see #getKey()
+	 * @generated
+	 */
+	void setKey(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Value</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Value</em>' attribute.
+	 * @see #setValue(String)
+	 * @see org.eclipse.emf.ecp.view.template.selector.annotation.model.VTAnnotationPackage#getAnnotationSelector_Value()
+	 * @model
+	 * @generated
+	 */
+	String getValue();
+
+	/**
+	 * Sets the value of the
+	 * '{@link org.eclipse.emf.ecp.view.template.selector.annotation.model.VTAnnotationSelector#getValue
+	 * <em>Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value the new value of the '<em>Value</em>' attribute.
+	 * @see #getValue()
+	 * @generated
+	 */
+	void setValue(String value);
+
+} // VTAnnotationInHierarchySelector
diff --git a/bundles/org.eclipse.emf.ecp.view.template.annotation.model/src/org/eclipse/emf/ecp/view/template/selector/annotation/model/impl/VTAnnotationFactoryImpl.java b/bundles/org.eclipse.emf.ecp.view.template.annotation.model/src/org/eclipse/emf/ecp/view/template/selector/annotation/model/impl/VTAnnotationFactoryImpl.java
new file mode 100644
index 0000000..2590154
--- /dev/null
+++ b/bundles/org.eclipse.emf.ecp.view.template.annotation.model/src/org/eclipse/emf/ecp/view/template/selector/annotation/model/impl/VTAnnotationFactoryImpl.java
@@ -0,0 +1,113 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * Johannes Faltermeier - initial API and implementation
+ */
+package org.eclipse.emf.ecp.view.template.selector.annotation.model.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+import org.eclipse.emf.ecp.view.template.selector.annotation.model.VTAnnotationFactory;
+import org.eclipse.emf.ecp.view.template.selector.annotation.model.VTAnnotationPackage;
+import org.eclipse.emf.ecp.view.template.selector.annotation.model.VTAnnotationSelector;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class VTAnnotationFactoryImpl extends EFactoryImpl implements VTAnnotationFactory {
+	/**
+	 * Creates the default factory implementation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public static VTAnnotationFactory init() {
+		try {
+			final VTAnnotationFactory theAnnotationFactory = (VTAnnotationFactory) EPackage.Registry.INSTANCE
+				.getEFactory(VTAnnotationPackage.eNS_URI);
+			if (theAnnotationFactory != null) {
+				return theAnnotationFactory;
+			}
+		} catch (final Exception exception) {
+			EcorePlugin.INSTANCE.log(exception);
+		}
+		return new VTAnnotationFactoryImpl();
+	}
+
+	/**
+	 * Creates an instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public VTAnnotationFactoryImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EObject create(EClass eClass) {
+		switch (eClass.getClassifierID()) {
+		case VTAnnotationPackage.ANNOTATION_SELECTOR:
+			return createAnnotationSelector();
+		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
+	public VTAnnotationSelector createAnnotationSelector() {
+		final VTAnnotationSelectorImpl annotationSelector = new VTAnnotationSelectorImpl();
+		return annotationSelector;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public VTAnnotationPackage getAnnotationPackage() {
+		return (VTAnnotationPackage) getEPackage();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @deprecated
+	 * @generated
+	 */
+	@Deprecated
+	public static VTAnnotationPackage getPackage() {
+		return VTAnnotationPackage.eINSTANCE;
+	}
+
+} // VTAnnotationInHierarchyFactoryImpl
diff --git a/bundles/org.eclipse.emf.ecp.view.template.annotation.model/src/org/eclipse/emf/ecp/view/template/selector/annotation/model/impl/VTAnnotationPackageImpl.java b/bundles/org.eclipse.emf.ecp.view.template.annotation.model/src/org/eclipse/emf/ecp/view/template/selector/annotation/model/impl/VTAnnotationPackageImpl.java
new file mode 100644
index 0000000..b296954
--- /dev/null
+++ b/bundles/org.eclipse.emf.ecp.view.template.annotation.model/src/org/eclipse/emf/ecp/view/template/selector/annotation/model/impl/VTAnnotationPackageImpl.java
@@ -0,0 +1,235 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * Johannes Faltermeier - initial API and implementation
+ */
+package org.eclipse.emf.ecp.view.template.selector.annotation.model.impl;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+import org.eclipse.emf.ecp.view.template.model.VTTemplatePackage;
+import org.eclipse.emf.ecp.view.template.selector.annotation.model.VTAnnotationFactory;
+import org.eclipse.emf.ecp.view.template.selector.annotation.model.VTAnnotationPackage;
+import org.eclipse.emf.ecp.view.template.selector.annotation.model.VTAnnotationSelector;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Package</b>.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class VTAnnotationPackageImpl extends EPackageImpl implements VTAnnotationPackage {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EClass annotationSelectorEClass = 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>
+	 * Note: the correct way to create the package is via the static
+	 * factory method {@link #init init()}, which also performs
+	 * initialization of the package, or returns the registered package,
+	 * if one already exists.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.emf.ecore.EPackage.Registry
+	 * @see org.eclipse.emf.ecp.view.template.selector.annotation.model.VTAnnotationPackage#eNS_URI
+	 * @see #init()
+	 * @generated
+	 */
+	private VTAnnotationPackageImpl() {
+		super(eNS_URI, VTAnnotationFactory.eINSTANCE);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private static boolean isInited = false;
+
+	/**
+	 * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
+	 *
+	 * <p>
+	 * This method is used to initialize {@link VTAnnotationPackage#eINSTANCE} when that field is accessed.
+	 * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #eNS_URI
+	 * @see #createPackageContents()
+	 * @see #initializePackageContents()
+	 * @generated
+	 */
+	public static VTAnnotationPackage init() {
+		if (isInited) {
+			return (VTAnnotationPackage) EPackage.Registry.INSTANCE.getEPackage(VTAnnotationPackage.eNS_URI);
+		}
+
+		// Obtain or create and register package
+		final VTAnnotationPackageImpl theAnnotationPackage = (VTAnnotationPackageImpl) (EPackage.Registry.INSTANCE
+			.get(eNS_URI) instanceof VTAnnotationPackageImpl ? EPackage.Registry.INSTANCE.get(eNS_URI)
+				: new VTAnnotationPackageImpl());
+
+		isInited = true;
+
+		// Initialize simple dependencies
+		VTTemplatePackage.eINSTANCE.eClass();
+
+		// Create package meta-data objects
+		theAnnotationPackage.createPackageContents();
+
+		// Initialize created meta-data
+		theAnnotationPackage.initializePackageContents();
+
+		// Mark meta-data to indicate it can't be changed
+		theAnnotationPackage.freeze();
+
+		// Update the registry and return the package
+		EPackage.Registry.INSTANCE.put(VTAnnotationPackage.eNS_URI, theAnnotationPackage);
+		return theAnnotationPackage;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EClass getAnnotationSelector() {
+		return annotationSelectorEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EAttribute getAnnotationSelector_Key() {
+		return (EAttribute) annotationSelectorEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EAttribute getAnnotationSelector_Value() {
+		return (EAttribute) annotationSelectorEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public VTAnnotationFactory getAnnotationFactory() {
+		return (VTAnnotationFactory) getEFactoryInstance();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private boolean isCreated = false;
+
+	/**
+	 * Creates the meta-model objects for the package. This method is
+	 * guarded to have no affect on any invocation but its first.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public void createPackageContents() {
+		if (isCreated) {
+			return;
+		}
+		isCreated = true;
+
+		// Create classes and their features
+		annotationSelectorEClass = createEClass(ANNOTATION_SELECTOR);
+		createEAttribute(annotationSelectorEClass, ANNOTATION_SELECTOR__KEY);
+		createEAttribute(annotationSelectorEClass, ANNOTATION_SELECTOR__VALUE);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private boolean isInitialized = false;
+
+	/**
+	 * Complete the initialization of the package and its meta-model. This
+	 * method is guarded to have no affect on any invocation but its first.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public void initializePackageContents() {
+		if (isInitialized) {
+			return;
+		}
+		isInitialized = true;
+
+		// Initialize package
+		setName(eNAME);
+		setNsPrefix(eNS_PREFIX);
+		setNsURI(eNS_URI);
+
+		// Obtain other dependent packages
+		final VTTemplatePackage theTemplatePackage = (VTTemplatePackage) EPackage.Registry.INSTANCE
+			.getEPackage(VTTemplatePackage.eNS_URI);
+
+		// Create type parameters
+
+		// Set bounds for type parameters
+
+		// Add supertypes to classes
+		annotationSelectorEClass.getESuperTypes().add(theTemplatePackage.getStyleSelector());
+
+		// Initialize classes, features, and operations; add parameters
+		initEClass(annotationSelectorEClass, VTAnnotationSelector.class, "AnnotationSelector", !IS_ABSTRACT, //$NON-NLS-1$
+			!IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getAnnotationSelector_Key(), ecorePackage.getEString(), "key", null, 1, 1, //$NON-NLS-1$
+			VTAnnotationSelector.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+			!IS_DERIVED, IS_ORDERED);
+		initEAttribute(getAnnotationSelector_Value(), ecorePackage.getEString(), "value", null, 0, 1, //$NON-NLS-1$
+			VTAnnotationSelector.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+			!IS_DERIVED, IS_ORDERED);
+
+		// Create resource
+		createResource(eNS_URI);
+	}
+
+} // VTAnnotationInHierarchyPackageImpl
diff --git a/bundles/org.eclipse.emf.ecp.view.template.annotation.model/src/org/eclipse/emf/ecp/view/template/selector/annotation/model/impl/VTAnnotationSelectorImpl.java b/bundles/org.eclipse.emf.ecp.view.template.annotation.model/src/org/eclipse/emf/ecp/view/template/selector/annotation/model/impl/VTAnnotationSelectorImpl.java
new file mode 100644
index 0000000..24a1ab9
--- /dev/null
+++ b/bundles/org.eclipse.emf.ecp.view.template.annotation.model/src/org/eclipse/emf/ecp/view/template/selector/annotation/model/impl/VTAnnotationSelectorImpl.java
@@ -0,0 +1,287 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * Johannes Faltermeier - initial API and implementation
+ */
+package org.eclipse.emf.ecp.view.template.selector.annotation.model.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+import org.eclipse.emf.ecp.view.spi.context.ViewModelContext;
+import org.eclipse.emf.ecp.view.spi.model.VAttachment;
+import org.eclipse.emf.ecp.view.spi.model.VElement;
+import org.eclipse.emf.ecp.view.template.selector.annotation.model.VTAnnotationPackage;
+import org.eclipse.emf.ecp.view.template.selector.annotation.model.VTAnnotationSelector;
+import org.eclipse.emf.emfforms.spi.view.annotation.model.VAnnotation;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Selector</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.emf.ecp.view.template.selector.annotation.model.impl.VTAnnotationSelectorImpl#getKey
+ * <em>Key</em>}</li>
+ * <li>{@link org.eclipse.emf.ecp.view.template.selector.annotation.model.impl.VTAnnotationSelectorImpl#getValue
+ * <em>Value</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class VTAnnotationSelectorImpl extends MinimalEObjectImpl.Container
+	implements VTAnnotationSelector {
+	/**
+	 * The default value of the '{@link #getKey() <em>Key</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getKey()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String KEY_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getKey() <em>Key</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getKey()
+	 * @generated
+	 * @ordered
+	 */
+	protected String key = KEY_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getValue() <em>Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getValue()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String VALUE_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getValue() <em>Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getValue()
+	 * @generated
+	 * @ordered
+	 */
+	protected String value = VALUE_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected VTAnnotationSelectorImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return VTAnnotationPackage.Literals.ANNOTATION_SELECTOR;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getKey() {
+		return key;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setKey(String newKey) {
+		final String oldKey = key;
+		key = newKey;
+		if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, VTAnnotationPackage.ANNOTATION_SELECTOR__KEY, oldKey,
+				key));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getValue() {
+		return value;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setValue(String newValue) {
+		final String oldValue = value;
+		value = newValue;
+		if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, VTAnnotationPackage.ANNOTATION_SELECTOR__VALUE,
+				oldValue, value));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case VTAnnotationPackage.ANNOTATION_SELECTOR__KEY:
+			return getKey();
+		case VTAnnotationPackage.ANNOTATION_SELECTOR__VALUE:
+			return getValue();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case VTAnnotationPackage.ANNOTATION_SELECTOR__KEY:
+			setKey((String) newValue);
+			return;
+		case VTAnnotationPackage.ANNOTATION_SELECTOR__VALUE:
+			setValue((String) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case VTAnnotationPackage.ANNOTATION_SELECTOR__KEY:
+			setKey(KEY_EDEFAULT);
+			return;
+		case VTAnnotationPackage.ANNOTATION_SELECTOR__VALUE:
+			setValue(VALUE_EDEFAULT);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case VTAnnotationPackage.ANNOTATION_SELECTOR__KEY:
+			return KEY_EDEFAULT == null ? key != null : !KEY_EDEFAULT.equals(key);
+		case VTAnnotationPackage.ANNOTATION_SELECTOR__VALUE:
+			return VALUE_EDEFAULT == null ? value != null : !VALUE_EDEFAULT.equals(value);
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) {
+			return super.toString();
+		}
+
+		final StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (key: "); //$NON-NLS-1$
+		result.append(key);
+		result.append(", value: "); //$NON-NLS-1$
+		result.append(value);
+		result.append(')');
+		return result.toString();
+	}
+
+	@Override
+	public double isApplicable(VElement vElement, ViewModelContext viewModelContext) {
+		for (final VAttachment vAttachment : vElement.getAttachments()) {
+			if (!VAnnotation.class.isInstance(vAttachment)) {
+				continue;
+			}
+			final VAnnotation annotation = VAnnotation.class.cast(vAttachment);
+			if (getKey() == null) {
+				if (annotation.getKey() != null) {
+					continue;
+				}
+			} else {
+				if (!getKey().equals(annotation.getKey())) {
+					continue;
+				}
+			}
+			/* matching keys */
+			if (getValue() == null) {
+				if (annotation.getValue() != null) {
+					return NOT_APPLICABLE;
+				}
+			} else {
+				if (!getValue().equals(annotation.getValue())) {
+					return NOT_APPLICABLE;
+				}
+			}
+			/* matching key value */
+			return 15;
+		}
+		return NOT_APPLICABLE;
+	}
+
+} // VTAnnotationInHierarchySelectorImpl
diff --git a/bundles/org.eclipse.emf.ecp.view.template.annotation.model/src/org/eclipse/emf/ecp/view/template/selector/annotation/model/util/AnnotationAdapterFactory.java b/bundles/org.eclipse.emf.ecp.view.template.annotation.model/src/org/eclipse/emf/ecp/view/template/selector/annotation/model/util/AnnotationAdapterFactory.java
new file mode 100644
index 0000000..05a7ef7
--- /dev/null
+++ b/bundles/org.eclipse.emf.ecp.view.template.annotation.model/src/org/eclipse/emf/ecp/view/template/selector/annotation/model/util/AnnotationAdapterFactory.java
@@ -0,0 +1,158 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * Johannes Faltermeier - initial API and implementation
+ */
+package org.eclipse.emf.ecp.view.template.selector.annotation.model.util;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notifier;
+import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecp.view.template.model.VTStyleSelector;
+import org.eclipse.emf.ecp.view.template.selector.annotation.model.VTAnnotationPackage;
+import org.eclipse.emf.ecp.view.template.selector.annotation.model.VTAnnotationSelector;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Adapter Factory</b> for the model.
+ * It provides an adapter <code>createXXX</code> method for each class of the model.
+ * <!-- end-user-doc -->
+ *
+ * @see org.eclipse.emf.ecp.view.template.selector.annotation.model.VTAnnotationPackage
+ * @generated
+ */
+public class AnnotationAdapterFactory extends AdapterFactoryImpl {
+	/**
+	 * The cached model package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected static VTAnnotationPackage modelPackage;
+
+	/**
+	 * Creates an instance of the adapter factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public AnnotationAdapterFactory() {
+		if (modelPackage == null) {
+			modelPackage = VTAnnotationPackage.eINSTANCE;
+		}
+	}
+
+	/**
+	 * Returns whether this factory is applicable for the type of the object.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns <code>true</code> if the object is either the model's package or is an instance
+	 * object of the model.
+	 * <!-- end-user-doc -->
+	 *
+	 * @return whether this factory is applicable for the type of the object.
+	 * @generated
+	 */
+	@Override
+	public boolean isFactoryForType(Object object) {
+		if (object == modelPackage) {
+			return true;
+		}
+		if (object instanceof EObject) {
+			return ((EObject) object).eClass().getEPackage() == modelPackage;
+		}
+		return false;
+	}
+
+	/**
+	 * The switch that delegates to the <code>createXXX</code> methods.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected AnnotationSwitch<Adapter> modelSwitch = new AnnotationSwitch<Adapter>() {
+		@Override
+		public Adapter caseAnnotationSelector(VTAnnotationSelector object) {
+			return createAnnotationSelectorAdapter();
+		}
+
+		@Override
+		public Adapter caseStyleSelector(VTStyleSelector object) {
+			return createStyleSelectorAdapter();
+		}
+
+		@Override
+		public Adapter defaultCase(EObject object) {
+			return createEObjectAdapter();
+		}
+	};
+
+	/**
+	 * Creates an adapter for the <code>target</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param target the object to adapt.
+	 * @return the adapter for the <code>target</code>.
+	 * @generated
+	 */
+	@Override
+	public Adapter createAdapter(Notifier target) {
+		return modelSwitch.doSwitch((EObject) target);
+	}
+
+	/**
+	 * Creates a new adapter for an object of class
+	 * '{@link org.eclipse.emf.ecp.view.template.selector.annotation.model.VTAnnotationSelector <em>Selector</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.emf.ecp.view.template.selector.annotation.model.VTAnnotationSelector
+	 * @generated
+	 */
+	public Adapter createAnnotationSelectorAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.emf.ecp.view.template.model.VTStyleSelector
+	 * <em>Style Selector</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.emf.ecp.view.template.model.VTStyleSelector
+	 * @generated
+	 */
+	public Adapter createStyleSelectorAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for the default case.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null.
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the new adapter.
+	 * @generated
+	 */
+	public Adapter createEObjectAdapter() {
+		return null;
+	}
+
+} // AnnotationInHierarchyAdapterFactory
diff --git a/bundles/org.eclipse.emf.ecp.view.template.annotation.model/src/org/eclipse/emf/ecp/view/template/selector/annotation/model/util/AnnotationSwitch.java b/bundles/org.eclipse.emf.ecp.view.template.annotation.model/src/org/eclipse/emf/ecp/view/template/selector/annotation/model/util/AnnotationSwitch.java
new file mode 100644
index 0000000..60ee58b
--- /dev/null
+++ b/bundles/org.eclipse.emf.ecp.view.template.annotation.model/src/org/eclipse/emf/ecp/view/template/selector/annotation/model/util/AnnotationSwitch.java
@@ -0,0 +1,149 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * Johannes Faltermeier - initial API and implementation
+ */
+package org.eclipse.emf.ecp.view.template.selector.annotation.model.util;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.util.Switch;
+import org.eclipse.emf.ecp.view.template.model.VTStyleSelector;
+import org.eclipse.emf.ecp.view.template.selector.annotation.model.VTAnnotationPackage;
+import org.eclipse.emf.ecp.view.template.selector.annotation.model.VTAnnotationSelector;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Switch</b> for the model's inheritance hierarchy.
+ * It supports the call {@link #doSwitch(EObject) doSwitch(object)}
+ * to invoke the <code>caseXXX</code> method for each class of the model,
+ * starting with the actual class of the object
+ * and proceeding up the inheritance hierarchy
+ * until a non-null result is returned,
+ * which is the result of the switch.
+ * <!-- end-user-doc -->
+ *
+ * @see org.eclipse.emf.ecp.view.template.selector.annotation.model.VTAnnotationPackage
+ * @generated
+ */
+public class AnnotationSwitch<T> extends Switch<T> {
+	/**
+	 * The cached model package
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected static VTAnnotationPackage modelPackage;
+
+	/**
+	 * Creates an instance of the switch.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public AnnotationSwitch() {
+		if (modelPackage == null) {
+			modelPackage = VTAnnotationPackage.eINSTANCE;
+		}
+	}
+
+	/**
+	 * Checks whether this is a switch for the given package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param ePackage the package in question.
+	 * @return whether this is a switch for the given package.
+	 * @generated
+	 */
+	@Override
+	protected boolean isSwitchFor(EPackage ePackage) {
+		return ePackage == modelPackage;
+	}
+
+	/**
+	 * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that
+	 * result.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the first non-null result returned by a <code>caseXXX</code> call.
+	 * @generated
+	 */
+	@Override
+	protected T doSwitch(int classifierID, EObject theEObject) {
+		switch (classifierID) {
+		case VTAnnotationPackage.ANNOTATION_SELECTOR: {
+			final VTAnnotationSelector annotationSelector = (VTAnnotationSelector) theEObject;
+			T result = caseAnnotationSelector(annotationSelector);
+			if (result == null) {
+				result = caseStyleSelector(annotationSelector);
+			}
+			if (result == null) {
+				result = defaultCase(theEObject);
+			}
+			return result;
+		}
+		default:
+			return defaultCase(theEObject);
+		}
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Selector</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>Selector</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseAnnotationSelector(VTAnnotationSelector object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Style Selector</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>Style Selector</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseStyleSelector(VTStyleSelector object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch, but this is the last case anyway.
+	 * <!-- end-user-doc -->
+	 *
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject)
+	 * @generated
+	 */
+	@Override
+	public T defaultCase(EObject object) {
+		return null;
+	}
+
+} // AnnotationInHierarchySwitch
diff --git a/bundles/org.eclipse.emf.ecp.view.template.model.edit/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.view.template.model.edit/META-INF/MANIFEST.MF
index 38936c5..a169ba0 100644
--- a/bundles/org.eclipse.emf.ecp.view.template.model.edit/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.view.template.model.edit/META-INF/MANIFEST.MF
@@ -2,31 +2,35 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.template.model.edit;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-ClassPath: .
 Bundle-Activator: org.eclipse.emf.ecp.view.template.model.provider.TemplateEditPlugin$Implementation
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
-Export-Package: org.eclipse.emf.ecp.view.template.model.provider;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.view.template.selector.domainmodelreference.model.provider;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.view.template.selector.viewModelElement.model.provider;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.view.template.style.alignment.model.provider;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.view.template.style.background.model.provider;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.view.template.style.fontProperties.model.provider;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.view.template.style.labelwidth.model.provider;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.view.template.style.mandatory.model.provider;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.view.template.style.tab.model.provider;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.view.template.style.tableStyleProperty.model.provider;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.view.template.style.tableValidation.model.provider;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.view.template.style.textControlEnablement.model.provider;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.view.template.style.unsettable.model.provider;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.view.template.style.validation.model.provider;version="1.16.0";x-internal:=true
+Export-Package: org.eclipse.emf.ecp.view.template.model.provider;version="1.17.0";x-friends:="org.eclipse.emf.ecp.view.template.annotation.model.edit",
+ org.eclipse.emf.ecp.view.template.selector.bool.model.provider;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.template.selector.domainmodelreference.model.provider;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.template.selector.hierarchy.model.provider;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.template.selector.viewModelElement.model.provider;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.template.style.alignment.model.provider;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.template.style.background.model.provider;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.template.style.fontProperties.model.provider;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.template.style.labelwidth.model.provider;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.template.style.mandatory.model.provider;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.template.style.tab.model.provider;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.template.style.tableStyleProperty.model.provider;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.template.style.tableValidation.model.provider;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.template.style.textControlEnablement.model.provider;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.template.style.unsettable.model.provider;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.template.style.validation.model.provider;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.template.style.wrap.model.provider;version="1.17.0";x-internal:=true
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.7.0,4.0.0)",
-  org.eclipse.emf.ecp.view.template.model;bundle-version="[1.16.0,1.17.0)";visibility:=reexport,
-  org.eclipse.emf.edit;bundle-version="[2.8.0,3.0.0)";visibility:=reexport,
-  org.eclipse.emf.ecore;bundle-version="[2.7.0,3.0.0)";visibility:=reexport,
-  org.eclipse.emf.ecore.edit;bundle-version="[2.7.0,3.0.0)";visibility:=reexport,
-  org.eclipse.emf.ecp.view.model;bundle-version="[1.16.0,1.17.0)";visibility:=reexport,
-  org.eclipse.emf.ecp.view.model.edit;bundle-version="[1.16.0,1.17.0)";visibility:=reexport
+ org.eclipse.emf.ecp.view.template.model;bundle-version="[1.17.0,1.18.0]";visibility:=reexport,
+ org.eclipse.emf.edit;bundle-version="[2.8.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.ecore;bundle-version="[2.7.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.ecore.edit;bundle-version="[2.7.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.ecp.view.model;bundle-version="[1.17.0,1.18.0]";visibility:=reexport,
+ org.eclipse.emf.ecp.view.model.edit;bundle-version="[1.17.0,1.18.0]";visibility:=reexport
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.view.template.model.edit
diff --git a/bundles/org.eclipse.emf.ecp.view.template.model.edit/icons/full/ctool16/CreateMultiStyleSelectorContainer_selectors_AndSelector.gif b/bundles/org.eclipse.emf.ecp.view.template.model.edit/icons/full/ctool16/CreateMultiStyleSelectorContainer_selectors_AndSelector.gif
new file mode 100644
index 0000000..8887df6
--- /dev/null
+++ b/bundles/org.eclipse.emf.ecp.view.template.model.edit/icons/full/ctool16/CreateMultiStyleSelectorContainer_selectors_AndSelector.gif
Binary files differ
diff --git a/bundles/org.eclipse.emf.ecp.view.template.model.edit/icons/full/ctool16/CreateStyle_selector_DomainModelReferenceSelector.gif b/bundles/org.eclipse.emf.ecp.view.template.model.edit/icons/full/ctool16/CreateMultiStyleSelectorContainer_selectors_DomainModelReferenceSelector.gif
similarity index 100%
copy from bundles/org.eclipse.emf.ecp.view.template.model.edit/icons/full/ctool16/CreateStyle_selector_DomainModelReferenceSelector.gif
copy to bundles/org.eclipse.emf.ecp.view.template.model.edit/icons/full/ctool16/CreateMultiStyleSelectorContainer_selectors_DomainModelReferenceSelector.gif
Binary files differ
diff --git a/bundles/org.eclipse.emf.ecp.view.template.model.edit/icons/full/ctool16/CreateMultiStyleSelectorContainer_selectors_HierarchySelector.gif b/bundles/org.eclipse.emf.ecp.view.template.model.edit/icons/full/ctool16/CreateMultiStyleSelectorContainer_selectors_HierarchySelector.gif
new file mode 100644
index 0000000..12ac8d9
--- /dev/null
+++ b/bundles/org.eclipse.emf.ecp.view.template.model.edit/icons/full/ctool16/CreateMultiStyleSelectorContainer_selectors_HierarchySelector.gif
Binary files differ
diff --git a/bundles/org.eclipse.emf.ecp.view.template.model.edit/icons/full/ctool16/CreateStyle_selector_ViewModelElementSelector.gif b/bundles/org.eclipse.emf.ecp.view.template.model.edit/icons/full/ctool16/CreateMultiStyleSelectorContainer_selectors_ViewModelElementSelector.gif
similarity index 100%
copy from bundles/org.eclipse.emf.ecp.view.template.model.edit/icons/full/ctool16/CreateStyle_selector_ViewModelElementSelector.gif
copy to bundles/org.eclipse.emf.ecp.view.template.model.edit/icons/full/ctool16/CreateMultiStyleSelectorContainer_selectors_ViewModelElementSelector.gif
Binary files differ
diff --git a/bundles/org.eclipse.emf.ecp.view.template.model.edit/icons/full/ctool16/CreateStyleSelectorContainer_selector_AndSelector.gif b/bundles/org.eclipse.emf.ecp.view.template.model.edit/icons/full/ctool16/CreateStyleSelectorContainer_selector_AndSelector.gif
new file mode 100644
index 0000000..8887df6
--- /dev/null
+++ b/bundles/org.eclipse.emf.ecp.view.template.model.edit/icons/full/ctool16/CreateStyleSelectorContainer_selector_AndSelector.gif
Binary files differ
diff --git a/bundles/org.eclipse.emf.ecp.view.template.model.edit/icons/full/ctool16/CreateStyle_selector_DomainModelReferenceSelector.gif b/bundles/org.eclipse.emf.ecp.view.template.model.edit/icons/full/ctool16/CreateStyleSelectorContainer_selector_DomainModelReferenceSelector.gif
similarity index 100%
rename from bundles/org.eclipse.emf.ecp.view.template.model.edit/icons/full/ctool16/CreateStyle_selector_DomainModelReferenceSelector.gif
rename to bundles/org.eclipse.emf.ecp.view.template.model.edit/icons/full/ctool16/CreateStyleSelectorContainer_selector_DomainModelReferenceSelector.gif
Binary files differ
diff --git a/bundles/org.eclipse.emf.ecp.view.template.model.edit/icons/full/ctool16/CreateStyleSelectorContainer_selector_HierarchySelector.gif b/bundles/org.eclipse.emf.ecp.view.template.model.edit/icons/full/ctool16/CreateStyleSelectorContainer_selector_HierarchySelector.gif
new file mode 100644
index 0000000..12ac8d9
--- /dev/null
+++ b/bundles/org.eclipse.emf.ecp.view.template.model.edit/icons/full/ctool16/CreateStyleSelectorContainer_selector_HierarchySelector.gif
Binary files differ
diff --git a/bundles/org.eclipse.emf.ecp.view.template.model.edit/icons/full/ctool16/CreateStyle_selector_ViewModelElementSelector.gif b/bundles/org.eclipse.emf.ecp.view.template.model.edit/icons/full/ctool16/CreateStyleSelectorContainer_selector_ViewModelElementSelector.gif
similarity index 100%
rename from bundles/org.eclipse.emf.ecp.view.template.model.edit/icons/full/ctool16/CreateStyle_selector_ViewModelElementSelector.gif
rename to bundles/org.eclipse.emf.ecp.view.template.model.edit/icons/full/ctool16/CreateStyleSelectorContainer_selector_ViewModelElementSelector.gif
Binary files differ
diff --git a/bundles/org.eclipse.emf.ecp.view.template.model.edit/icons/full/ctool16/CreateStyle_properties_LabelWrapStyleProperty.gif b/bundles/org.eclipse.emf.ecp.view.template.model.edit/icons/full/ctool16/CreateStyle_properties_LabelWrapStyleProperty.gif
new file mode 100644
index 0000000..0df7881
--- /dev/null
+++ b/bundles/org.eclipse.emf.ecp.view.template.model.edit/icons/full/ctool16/CreateStyle_properties_LabelWrapStyleProperty.gif
Binary files differ
diff --git a/bundles/org.eclipse.emf.ecp.view.template.model.edit/icons/full/obj16/AndSelector.gif b/bundles/org.eclipse.emf.ecp.view.template.model.edit/icons/full/obj16/AndSelector.gif
new file mode 100644
index 0000000..a128413
--- /dev/null
+++ b/bundles/org.eclipse.emf.ecp.view.template.model.edit/icons/full/obj16/AndSelector.gif
Binary files differ
diff --git a/bundles/org.eclipse.emf.ecp.view.template.model.edit/icons/full/obj16/HierarchySelector.png b/bundles/org.eclipse.emf.ecp.view.template.model.edit/icons/full/obj16/HierarchySelector.png
new file mode 100644
index 0000000..bf004b5
--- /dev/null
+++ b/bundles/org.eclipse.emf.ecp.view.template.model.edit/icons/full/obj16/HierarchySelector.png
Binary files differ
diff --git a/bundles/org.eclipse.emf.ecp.view.template.model.edit/icons/full/obj16/LabelWrapStyleProperty.png b/bundles/org.eclipse.emf.ecp.view.template.model.edit/icons/full/obj16/LabelWrapStyleProperty.png
new file mode 100644
index 0000000..4880c43
--- /dev/null
+++ b/bundles/org.eclipse.emf.ecp.view.template.model.edit/icons/full/obj16/LabelWrapStyleProperty.png
Binary files differ
diff --git a/bundles/org.eclipse.emf.ecp.view.template.model.edit/plugin.properties b/bundles/org.eclipse.emf.ecp.view.template.model.edit/plugin.properties
index 1a116eb..1a6e293 100644
--- a/bundles/org.eclipse.emf.ecp.view.template.model.edit/plugin.properties
+++ b/bundles/org.eclipse.emf.ecp.view.template.model.edit/plugin.properties
@@ -239,3 +239,13 @@
 _UI_LabelWidthStyleProperty_width_feature = Width
 _UI_ControlLabelAlignmentStyleProperty_type = Control Label Alignment Style Property
 _UI_ControlLabelAlignmentStyleProperty_type_feature = Type
+_UI_HierarchySelector_type = Hierarchy Selector
+_UI_HierarchySelector_selector_feature = Selector
+_UI_StyleSelectorContainer_type = Style Selector Container
+_UI_StyleSelectorContainer_selector_feature = Selector
+_UI_MultiStyleSelectorContainer_type = Multi Style Selector Container
+_UI_MultiStyleSelectorContainer_selector_feature = Selector
+_UI_AndSelector_type = And Selector
+_UI_MultiStyleSelectorContainer_selectors_feature = Selectors
+_UI_LabelWrapStyleProperty_type = Label Wrap Style Property
+_UI_LabelWrapStyleProperty_wrapLabel_feature = Wrap Label
diff --git a/bundles/org.eclipse.emf.ecp.view.template.model.edit/plugin.xml b/bundles/org.eclipse.emf.ecp.view.template.model.edit/plugin.xml
index 68d98d6..37d11bd 100644
--- a/bundles/org.eclipse.emf.ecp.view.template.model.edit/plugin.xml
+++ b/bundles/org.eclipse.emf.ecp.view.template.model.edit/plugin.xml
@@ -233,4 +233,61 @@
       </extender>
    </extension>
 
+   <extension point="org.eclipse.emf.edit.itemProviderAdapterFactories">
+      <!-- @generated hierarchySelector -->
+      <factory
+            uri="http://www.eclipse.org/emf/ecp/view/template/selector/hierarchy/model"
+            class="org.eclipse.emf.ecp.view.template.selector.hierarchy.model.provider.HierarchyItemProviderAdapterFactory"
+            supportedTypes=
+              "org.eclipse.emf.edit.provider.IEditingDomainItemProvider
+               org.eclipse.emf.edit.provider.IStructuredItemContentProvider
+               org.eclipse.emf.edit.provider.ITreeItemContentProvider
+               org.eclipse.emf.edit.provider.IItemLabelProvider
+               org.eclipse.emf.edit.provider.IItemPropertySource"/>
+   </extension>
+
+   <extension point="org.eclipse.emf.edit.childCreationExtenders">
+      <!-- @generated hierarchySelector -->
+      <extender
+            uri="http://org/eclipse/emf/ecp/view/template/model"
+            class="org.eclipse.emf.ecp.view.template.selector.hierarchy.model.provider.HierarchyItemProviderAdapterFactory$TemplateChildCreationExtender"/>
+   </extension>
+   <extension point="org.eclipse.emf.edit.itemProviderAdapterFactories">
+      <!-- @generated boolSelector -->
+      <factory
+            uri="http://www.eclipse.org/emf/ecp/view/template/selector/bool/model"
+            class="org.eclipse.emf.ecp.view.template.selector.bool.model.provider.BoolItemProviderAdapterFactory"
+            supportedTypes=
+              "org.eclipse.emf.edit.provider.IEditingDomainItemProvider
+               org.eclipse.emf.edit.provider.IStructuredItemContentProvider
+               org.eclipse.emf.edit.provider.ITreeItemContentProvider
+               org.eclipse.emf.edit.provider.IItemLabelProvider
+               org.eclipse.emf.edit.provider.IItemPropertySource"/>
+   </extension>
+
+   <extension point="org.eclipse.emf.edit.childCreationExtenders">
+      <!-- @generated boolSelector -->
+      <extender
+            uri="http://org/eclipse/emf/ecp/view/template/model"
+            class="org.eclipse.emf.ecp.view.template.selector.bool.model.provider.BoolItemProviderAdapterFactory$TemplateChildCreationExtender"/>
+   </extension>
+   <extension point="org.eclipse.emf.edit.itemProviderAdapterFactories">
+      <!-- @generated wrapStyle -->
+      <factory
+            uri="http://www.eclipse.org/emf/ecp/view/template/style/wrap/model"
+            class="org.eclipse.emf.ecp.view.template.style.wrap.model.provider.WrapItemProviderAdapterFactory"
+            supportedTypes=
+              "org.eclipse.emf.edit.provider.IEditingDomainItemProvider
+               org.eclipse.emf.edit.provider.IStructuredItemContentProvider
+               org.eclipse.emf.edit.provider.ITreeItemContentProvider
+               org.eclipse.emf.edit.provider.IItemLabelProvider
+               org.eclipse.emf.edit.provider.IItemPropertySource"/>
+   </extension>
+
+   <extension point="org.eclipse.emf.edit.childCreationExtenders">
+      <!-- @generated wrapStyle -->
+      <extender
+            uri="http://org/eclipse/emf/ecp/view/template/model"
+            class="org.eclipse.emf.ecp.view.template.style.wrap.model.provider.WrapItemProviderAdapterFactory$TemplateChildCreationExtender"/>
+   </extension>
 </plugin>
diff --git a/bundles/org.eclipse.emf.ecp.view.template.model.edit/pom.xml b/bundles/org.eclipse.emf.ecp.view.template.model.edit/pom.xml
index 1836f49..46ed2c7 100644
--- a/bundles/org.eclipse.emf.ecp.view.template.model.edit/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.view.template.model.edit/pom.xml
@@ -7,12 +7,12 @@
   <parent>

     <groupId>org.eclipse.emf.ecp</groupId>

     <artifactId>ecp-bundles-parent</artifactId>

-    <version>1.16.0-SNAPSHOT</version>

+    <version>1.17.0-SNAPSHOT</version>

     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>

   </parent>

 

   <artifactId>org.eclipse.emf.ecp.view.template.model.edit</artifactId>

   <packaging>eclipse-plugin</packaging>

-  <version>1.16.0-SNAPSHOT</version>

+  <version>1.17.0-SNAPSHOT</version>

 

 </project>

diff --git a/bundles/org.eclipse.emf.ecp.view.template.model.edit/src/org/eclipse/emf/ecp/view/template/model/provider/ControlValidationTemplateItemProvider.java b/bundles/org.eclipse.emf.ecp.view.template.model.edit/src/org/eclipse/emf/ecp/view/template/model/provider/ControlValidationTemplateItemProvider.java
index 23d5887..48a429b 100644
--- a/bundles/org.eclipse.emf.ecp.view.template.model.edit/src/org/eclipse/emf/ecp/view/template/model/provider/ControlValidationTemplateItemProvider.java
+++ b/bundles/org.eclipse.emf.ecp.view.template.model.edit/src/org/eclipse/emf/ecp/view/template/model/provider/ControlValidationTemplateItemProvider.java
@@ -46,8 +46,7 @@
 	IStructuredItemContentProvider,
 	ITreeItemContentProvider,
 	IItemLabelProvider,
-	IItemPropertySource
-{
+	IItemPropertySource {
 	/**
 	 * This constructs an instance from a factory and a notifier.
 	 * <!-- begin-user-doc -->
@@ -55,8 +54,7 @@
 	 *
 	 * @generated
 	 */
-	public ControlValidationTemplateItemProvider(AdapterFactory adapterFactory)
-	{
+	public ControlValidationTemplateItemProvider(AdapterFactory adapterFactory) {
 		super(adapterFactory);
 	}
 
@@ -68,10 +66,8 @@
 	 * @generated
 	 */
 	@Override
-	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object)
-	{
-		if (itemPropertyDescriptors == null)
-		{
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
 			super.getPropertyDescriptors(object);
 
 			addOkColorHEXPropertyDescriptor(object);
@@ -105,16 +101,13 @@
 	 *
 	 * @generated
 	 */
-	protected void addOkColorHEXPropertyDescriptor(Object object)
-	{
+	protected void addOkColorHEXPropertyDescriptor(Object object) {
 		itemPropertyDescriptors
-			.add
-			(createItemPropertyDescriptor
-			(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+			.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
 				getResourceLocator(),
 				getString("_UI_ControlValidationTemplate_okColorHEX_feature"), //$NON-NLS-1$
-				getString(
-					"_UI_PropertyDescriptor_description", "_UI_ControlValidationTemplate_okColorHEX_feature", "_UI_ControlValidationTemplate_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				getString("_UI_PropertyDescriptor_description", "_UI_ControlValidationTemplate_okColorHEX_feature", //$NON-NLS-1$ //$NON-NLS-2$
+					"_UI_ControlValidationTemplate_type"), //$NON-NLS-1$
 				VTTemplatePackage.Literals.CONTROL_VALIDATION_TEMPLATE__OK_COLOR_HEX,
 				true,
 				false,
@@ -133,8 +126,7 @@
 	 */
 	protected void addOkForegroundColorHEXPropertyDescriptor(Object object) {
 		itemPropertyDescriptors
-			.add(createItemPropertyDescriptor(
-				((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+			.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
 				getResourceLocator(),
 				getString("_UI_ControlValidationTemplate_okForegroundColorHEX_feature"), //$NON-NLS-1$
 				getString("_UI_PropertyDescriptor_description", //$NON-NLS-1$
@@ -155,16 +147,13 @@
 	 *
 	 * @generated
 	 */
-	protected void addOkImageURLPropertyDescriptor(Object object)
-	{
+	protected void addOkImageURLPropertyDescriptor(Object object) {
 		itemPropertyDescriptors
-			.add
-			(createItemPropertyDescriptor
-			(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+			.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
 				getResourceLocator(),
 				getString("_UI_ControlValidationTemplate_okImageURL_feature"), //$NON-NLS-1$
-				getString(
-					"_UI_PropertyDescriptor_description", "_UI_ControlValidationTemplate_okImageURL_feature", "_UI_ControlValidationTemplate_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				getString("_UI_PropertyDescriptor_description", "_UI_ControlValidationTemplate_okImageURL_feature", //$NON-NLS-1$ //$NON-NLS-2$
+					"_UI_ControlValidationTemplate_type"), //$NON-NLS-1$
 				VTTemplatePackage.Literals.CONTROL_VALIDATION_TEMPLATE__OK_IMAGE_URL,
 				true,
 				false,
@@ -181,16 +170,13 @@
 	 *
 	 * @generated
 	 */
-	protected void addOkOverlayURLPropertyDescriptor(Object object)
-	{
+	protected void addOkOverlayURLPropertyDescriptor(Object object) {
 		itemPropertyDescriptors
-			.add
-			(createItemPropertyDescriptor
-			(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+			.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
 				getResourceLocator(),
 				getString("_UI_ControlValidationTemplate_okOverlayURL_feature"), //$NON-NLS-1$
-				getString(
-					"_UI_PropertyDescriptor_description", "_UI_ControlValidationTemplate_okOverlayURL_feature", "_UI_ControlValidationTemplate_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				getString("_UI_PropertyDescriptor_description", "_UI_ControlValidationTemplate_okOverlayURL_feature", //$NON-NLS-1$ //$NON-NLS-2$
+					"_UI_ControlValidationTemplate_type"), //$NON-NLS-1$
 				VTTemplatePackage.Literals.CONTROL_VALIDATION_TEMPLATE__OK_OVERLAY_URL,
 				true,
 				false,
@@ -207,16 +193,13 @@
 	 *
 	 * @generated
 	 */
-	protected void addInfoColorHEXPropertyDescriptor(Object object)
-	{
+	protected void addInfoColorHEXPropertyDescriptor(Object object) {
 		itemPropertyDescriptors
-			.add
-			(createItemPropertyDescriptor
-			(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+			.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
 				getResourceLocator(),
 				getString("_UI_ControlValidationTemplate_infoColorHEX_feature"), //$NON-NLS-1$
-				getString(
-					"_UI_PropertyDescriptor_description", "_UI_ControlValidationTemplate_infoColorHEX_feature", "_UI_ControlValidationTemplate_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				getString("_UI_PropertyDescriptor_description", "_UI_ControlValidationTemplate_infoColorHEX_feature", //$NON-NLS-1$ //$NON-NLS-2$
+					"_UI_ControlValidationTemplate_type"), //$NON-NLS-1$
 				VTTemplatePackage.Literals.CONTROL_VALIDATION_TEMPLATE__INFO_COLOR_HEX,
 				true,
 				false,
@@ -234,20 +217,19 @@
 	 * @generated
 	 */
 	protected void addInfoForegroundColorHEXPropertyDescriptor(Object object) {
-		itemPropertyDescriptors
-			.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
-				getResourceLocator(),
-				getString("_UI_ControlValidationTemplate_infoForegroundColorHEX_feature"), //$NON-NLS-1$
-				getString("_UI_PropertyDescriptor_description", //$NON-NLS-1$
-					"_UI_ControlValidationTemplate_infoForegroundColorHEX_feature", //$NON-NLS-1$
-					"_UI_ControlValidationTemplate_type"), //$NON-NLS-1$
-				VTTemplatePackage.Literals.CONTROL_VALIDATION_TEMPLATE__INFO_FOREGROUND_COLOR_HEX,
-				true,
-				false,
-				false,
-				ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
-				null,
-				null));
+		itemPropertyDescriptors.add(createItemPropertyDescriptor(
+			((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+			getResourceLocator(),
+			getString("_UI_ControlValidationTemplate_infoForegroundColorHEX_feature"), //$NON-NLS-1$
+			getString("_UI_PropertyDescriptor_description", //$NON-NLS-1$
+				"_UI_ControlValidationTemplate_infoForegroundColorHEX_feature", "_UI_ControlValidationTemplate_type"), //$NON-NLS-1$ //$NON-NLS-2$
+			VTTemplatePackage.Literals.CONTROL_VALIDATION_TEMPLATE__INFO_FOREGROUND_COLOR_HEX,
+			true,
+			false,
+			false,
+			ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+			null,
+			null));
 	}
 
 	/**
@@ -257,16 +239,13 @@
 	 *
 	 * @generated
 	 */
-	protected void addInfoImageURLPropertyDescriptor(Object object)
-	{
+	protected void addInfoImageURLPropertyDescriptor(Object object) {
 		itemPropertyDescriptors
-			.add
-			(createItemPropertyDescriptor
-			(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+			.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
 				getResourceLocator(),
 				getString("_UI_ControlValidationTemplate_infoImageURL_feature"), //$NON-NLS-1$
-				getString(
-					"_UI_PropertyDescriptor_description", "_UI_ControlValidationTemplate_infoImageURL_feature", "_UI_ControlValidationTemplate_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				getString("_UI_PropertyDescriptor_description", "_UI_ControlValidationTemplate_infoImageURL_feature", //$NON-NLS-1$ //$NON-NLS-2$
+					"_UI_ControlValidationTemplate_type"), //$NON-NLS-1$
 				VTTemplatePackage.Literals.CONTROL_VALIDATION_TEMPLATE__INFO_IMAGE_URL,
 				true,
 				false,
@@ -283,16 +262,13 @@
 	 *
 	 * @generated
 	 */
-	protected void addInfoOverlayURLPropertyDescriptor(Object object)
-	{
+	protected void addInfoOverlayURLPropertyDescriptor(Object object) {
 		itemPropertyDescriptors
-			.add
-			(createItemPropertyDescriptor
-			(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+			.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
 				getResourceLocator(),
 				getString("_UI_ControlValidationTemplate_infoOverlayURL_feature"), //$NON-NLS-1$
-				getString(
-					"_UI_PropertyDescriptor_description", "_UI_ControlValidationTemplate_infoOverlayURL_feature", "_UI_ControlValidationTemplate_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				getString("_UI_PropertyDescriptor_description", "_UI_ControlValidationTemplate_infoOverlayURL_feature", //$NON-NLS-1$ //$NON-NLS-2$
+					"_UI_ControlValidationTemplate_type"), //$NON-NLS-1$
 				VTTemplatePackage.Literals.CONTROL_VALIDATION_TEMPLATE__INFO_OVERLAY_URL,
 				true,
 				false,
@@ -309,16 +285,13 @@
 	 *
 	 * @generated
 	 */
-	protected void addWarningColorHEXPropertyDescriptor(Object object)
-	{
+	protected void addWarningColorHEXPropertyDescriptor(Object object) {
 		itemPropertyDescriptors
-			.add
-			(createItemPropertyDescriptor
-			(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+			.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
 				getResourceLocator(),
 				getString("_UI_ControlValidationTemplate_warningColorHEX_feature"), //$NON-NLS-1$
-				getString(
-					"_UI_PropertyDescriptor_description", "_UI_ControlValidationTemplate_warningColorHEX_feature", "_UI_ControlValidationTemplate_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				getString("_UI_PropertyDescriptor_description", "_UI_ControlValidationTemplate_warningColorHEX_feature", //$NON-NLS-1$ //$NON-NLS-2$
+					"_UI_ControlValidationTemplate_type"), //$NON-NLS-1$
 				VTTemplatePackage.Literals.CONTROL_VALIDATION_TEMPLATE__WARNING_COLOR_HEX,
 				true,
 				false,
@@ -359,16 +332,13 @@
 	 *
 	 * @generated
 	 */
-	protected void addWarningImageURLPropertyDescriptor(Object object)
-	{
+	protected void addWarningImageURLPropertyDescriptor(Object object) {
 		itemPropertyDescriptors
-			.add
-			(createItemPropertyDescriptor
-			(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+			.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
 				getResourceLocator(),
 				getString("_UI_ControlValidationTemplate_warningImageURL_feature"), //$NON-NLS-1$
-				getString(
-					"_UI_PropertyDescriptor_description", "_UI_ControlValidationTemplate_warningImageURL_feature", "_UI_ControlValidationTemplate_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				getString("_UI_PropertyDescriptor_description", "_UI_ControlValidationTemplate_warningImageURL_feature", //$NON-NLS-1$ //$NON-NLS-2$
+					"_UI_ControlValidationTemplate_type"), //$NON-NLS-1$
 				VTTemplatePackage.Literals.CONTROL_VALIDATION_TEMPLATE__WARNING_IMAGE_URL,
 				true,
 				false,
@@ -385,16 +355,13 @@
 	 *
 	 * @generated
 	 */
-	protected void addWarningOverlayURLPropertyDescriptor(Object object)
-	{
+	protected void addWarningOverlayURLPropertyDescriptor(Object object) {
 		itemPropertyDescriptors
-			.add
-			(createItemPropertyDescriptor
-			(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+			.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
 				getResourceLocator(),
 				getString("_UI_ControlValidationTemplate_warningOverlayURL_feature"), //$NON-NLS-1$
-				getString(
-					"_UI_PropertyDescriptor_description", "_UI_ControlValidationTemplate_warningOverlayURL_feature", "_UI_ControlValidationTemplate_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				getString("_UI_PropertyDescriptor_description", //$NON-NLS-1$
+					"_UI_ControlValidationTemplate_warningOverlayURL_feature", "_UI_ControlValidationTemplate_type"), //$NON-NLS-1$ //$NON-NLS-2$
 				VTTemplatePackage.Literals.CONTROL_VALIDATION_TEMPLATE__WARNING_OVERLAY_URL,
 				true,
 				false,
@@ -411,16 +378,13 @@
 	 *
 	 * @generated
 	 */
-	protected void addErrorColorHEXPropertyDescriptor(Object object)
-	{
+	protected void addErrorColorHEXPropertyDescriptor(Object object) {
 		itemPropertyDescriptors
-			.add
-			(createItemPropertyDescriptor
-			(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+			.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
 				getResourceLocator(),
 				getString("_UI_ControlValidationTemplate_errorColorHEX_feature"), //$NON-NLS-1$
-				getString(
-					"_UI_PropertyDescriptor_description", "_UI_ControlValidationTemplate_errorColorHEX_feature", "_UI_ControlValidationTemplate_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				getString("_UI_PropertyDescriptor_description", "_UI_ControlValidationTemplate_errorColorHEX_feature", //$NON-NLS-1$ //$NON-NLS-2$
+					"_UI_ControlValidationTemplate_type"), //$NON-NLS-1$
 				VTTemplatePackage.Literals.CONTROL_VALIDATION_TEMPLATE__ERROR_COLOR_HEX,
 				true,
 				false,
@@ -438,20 +402,19 @@
 	 * @generated
 	 */
 	protected void addErrorForegroundColorHEXPropertyDescriptor(Object object) {
-		itemPropertyDescriptors
-			.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
-				getResourceLocator(),
-				getString("_UI_ControlValidationTemplate_errorForegroundColorHEX_feature"), //$NON-NLS-1$
-				getString("_UI_PropertyDescriptor_description", //$NON-NLS-1$
-					"_UI_ControlValidationTemplate_errorForegroundColorHEX_feature", //$NON-NLS-1$
-					"_UI_ControlValidationTemplate_type"), //$NON-NLS-1$
-				VTTemplatePackage.Literals.CONTROL_VALIDATION_TEMPLATE__ERROR_FOREGROUND_COLOR_HEX,
-				true,
-				false,
-				false,
-				ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
-				null,
-				null));
+		itemPropertyDescriptors.add(createItemPropertyDescriptor(
+			((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+			getResourceLocator(),
+			getString("_UI_ControlValidationTemplate_errorForegroundColorHEX_feature"), //$NON-NLS-1$
+			getString("_UI_PropertyDescriptor_description", //$NON-NLS-1$
+				"_UI_ControlValidationTemplate_errorForegroundColorHEX_feature", "_UI_ControlValidationTemplate_type"), //$NON-NLS-1$ //$NON-NLS-2$
+			VTTemplatePackage.Literals.CONTROL_VALIDATION_TEMPLATE__ERROR_FOREGROUND_COLOR_HEX,
+			true,
+			false,
+			false,
+			ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+			null,
+			null));
 	}
 
 	/**
@@ -461,16 +424,13 @@
 	 *
 	 * @generated
 	 */
-	protected void addErrorImageURLPropertyDescriptor(Object object)
-	{
+	protected void addErrorImageURLPropertyDescriptor(Object object) {
 		itemPropertyDescriptors
-			.add
-			(createItemPropertyDescriptor
-			(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+			.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
 				getResourceLocator(),
 				getString("_UI_ControlValidationTemplate_errorImageURL_feature"), //$NON-NLS-1$
-				getString(
-					"_UI_PropertyDescriptor_description", "_UI_ControlValidationTemplate_errorImageURL_feature", "_UI_ControlValidationTemplate_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				getString("_UI_PropertyDescriptor_description", "_UI_ControlValidationTemplate_errorImageURL_feature", //$NON-NLS-1$ //$NON-NLS-2$
+					"_UI_ControlValidationTemplate_type"), //$NON-NLS-1$
 				VTTemplatePackage.Literals.CONTROL_VALIDATION_TEMPLATE__ERROR_IMAGE_URL,
 				true,
 				false,
@@ -487,16 +447,13 @@
 	 *
 	 * @generated
 	 */
-	protected void addErrorOverlayURLPropertyDescriptor(Object object)
-	{
+	protected void addErrorOverlayURLPropertyDescriptor(Object object) {
 		itemPropertyDescriptors
-			.add
-			(createItemPropertyDescriptor
-			(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+			.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
 				getResourceLocator(),
 				getString("_UI_ControlValidationTemplate_errorOverlayURL_feature"), //$NON-NLS-1$
-				getString(
-					"_UI_PropertyDescriptor_description", "_UI_ControlValidationTemplate_errorOverlayURL_feature", "_UI_ControlValidationTemplate_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				getString("_UI_PropertyDescriptor_description", "_UI_ControlValidationTemplate_errorOverlayURL_feature", //$NON-NLS-1$ //$NON-NLS-2$
+					"_UI_ControlValidationTemplate_type"), //$NON-NLS-1$
 				VTTemplatePackage.Literals.CONTROL_VALIDATION_TEMPLATE__ERROR_OVERLAY_URL,
 				true,
 				false,
@@ -513,16 +470,13 @@
 	 *
 	 * @generated
 	 */
-	protected void addCancelColorHEXPropertyDescriptor(Object object)
-	{
+	protected void addCancelColorHEXPropertyDescriptor(Object object) {
 		itemPropertyDescriptors
-			.add
-			(createItemPropertyDescriptor
-			(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+			.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
 				getResourceLocator(),
 				getString("_UI_ControlValidationTemplate_cancelColorHEX_feature"), //$NON-NLS-1$
-				getString(
-					"_UI_PropertyDescriptor_description", "_UI_ControlValidationTemplate_cancelColorHEX_feature", "_UI_ControlValidationTemplate_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				getString("_UI_PropertyDescriptor_description", "_UI_ControlValidationTemplate_cancelColorHEX_feature", //$NON-NLS-1$ //$NON-NLS-2$
+					"_UI_ControlValidationTemplate_type"), //$NON-NLS-1$
 				VTTemplatePackage.Literals.CONTROL_VALIDATION_TEMPLATE__CANCEL_COLOR_HEX,
 				true,
 				false,
@@ -540,20 +494,19 @@
 	 * @generated
 	 */
 	protected void addCancelForegroundColorHEXPropertyDescriptor(Object object) {
-		itemPropertyDescriptors
-			.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
-				getResourceLocator(),
-				getString("_UI_ControlValidationTemplate_cancelForegroundColorHEX_feature"), //$NON-NLS-1$
-				getString("_UI_PropertyDescriptor_description", //$NON-NLS-1$
-					"_UI_ControlValidationTemplate_cancelForegroundColorHEX_feature", //$NON-NLS-1$
-					"_UI_ControlValidationTemplate_type"), //$NON-NLS-1$
-				VTTemplatePackage.Literals.CONTROL_VALIDATION_TEMPLATE__CANCEL_FOREGROUND_COLOR_HEX,
-				true,
-				false,
-				false,
-				ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
-				null,
-				null));
+		itemPropertyDescriptors.add(createItemPropertyDescriptor(
+			((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+			getResourceLocator(),
+			getString("_UI_ControlValidationTemplate_cancelForegroundColorHEX_feature"), //$NON-NLS-1$
+			getString("_UI_PropertyDescriptor_description", //$NON-NLS-1$
+				"_UI_ControlValidationTemplate_cancelForegroundColorHEX_feature", "_UI_ControlValidationTemplate_type"), //$NON-NLS-1$ //$NON-NLS-2$
+			VTTemplatePackage.Literals.CONTROL_VALIDATION_TEMPLATE__CANCEL_FOREGROUND_COLOR_HEX,
+			true,
+			false,
+			false,
+			ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+			null,
+			null));
 	}
 
 	/**
@@ -563,16 +516,13 @@
 	 *
 	 * @generated
 	 */
-	protected void addCancelImageURLPropertyDescriptor(Object object)
-	{
+	protected void addCancelImageURLPropertyDescriptor(Object object) {
 		itemPropertyDescriptors
-			.add
-			(createItemPropertyDescriptor
-			(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+			.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
 				getResourceLocator(),
 				getString("_UI_ControlValidationTemplate_cancelImageURL_feature"), //$NON-NLS-1$
-				getString(
-					"_UI_PropertyDescriptor_description", "_UI_ControlValidationTemplate_cancelImageURL_feature", "_UI_ControlValidationTemplate_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				getString("_UI_PropertyDescriptor_description", "_UI_ControlValidationTemplate_cancelImageURL_feature", //$NON-NLS-1$ //$NON-NLS-2$
+					"_UI_ControlValidationTemplate_type"), //$NON-NLS-1$
 				VTTemplatePackage.Literals.CONTROL_VALIDATION_TEMPLATE__CANCEL_IMAGE_URL,
 				true,
 				false,
@@ -589,16 +539,13 @@
 	 *
 	 * @generated
 	 */
-	protected void addCancelOverlayURLPropertyDescriptor(Object object)
-	{
+	protected void addCancelOverlayURLPropertyDescriptor(Object object) {
 		itemPropertyDescriptors
-			.add
-			(createItemPropertyDescriptor
-			(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+			.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
 				getResourceLocator(),
 				getString("_UI_ControlValidationTemplate_cancelOverlayURL_feature"), //$NON-NLS-1$
-				getString(
-					"_UI_PropertyDescriptor_description", "_UI_ControlValidationTemplate_cancelOverlayURL_feature", "_UI_ControlValidationTemplate_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				getString("_UI_PropertyDescriptor_description", //$NON-NLS-1$
+					"_UI_ControlValidationTemplate_cancelOverlayURL_feature", "_UI_ControlValidationTemplate_type"), //$NON-NLS-1$ //$NON-NLS-2$
 				VTTemplatePackage.Literals.CONTROL_VALIDATION_TEMPLATE__CANCEL_OVERLAY_URL,
 				true,
 				false,
@@ -616,8 +563,7 @@
 	 * @generated
 	 */
 	@Override
-	public Object getImage(Object object)
-	{
+	public Object getImage(Object object) {
 		return overlayImage(object, getResourceLocator().getImage("full/obj16/ControlValidationTemplate")); //$NON-NLS-1$
 	}
 
@@ -629,11 +575,9 @@
 	 * @generated
 	 */
 	@Override
-	public String getText(Object object)
-	{
+	public String getText(Object object) {
 		final String label = ((VTControlValidationTemplate) object).getOkColorHEX();
-		return label == null || label.length() == 0 ?
-			getString("_UI_ControlValidationTemplate_type") : //$NON-NLS-1$
+		return label == null || label.length() == 0 ? getString("_UI_ControlValidationTemplate_type") : //$NON-NLS-1$
 			getString("_UI_ControlValidationTemplate_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
 	}
 
@@ -646,12 +590,10 @@
 	 * @generated
 	 */
 	@Override
-	public void notifyChanged(Notification notification)
-	{
+	public void notifyChanged(Notification notification) {
 		updateChildren(notification);
 
-		switch (notification.getFeatureID(VTControlValidationTemplate.class))
-		{
+		switch (notification.getFeatureID(VTControlValidationTemplate.class)) {
 		case VTTemplatePackage.CONTROL_VALIDATION_TEMPLATE__OK_COLOR_HEX:
 		case VTTemplatePackage.CONTROL_VALIDATION_TEMPLATE__OK_FOREGROUND_COLOR_HEX:
 		case VTTemplatePackage.CONTROL_VALIDATION_TEMPLATE__OK_IMAGE_URL:
@@ -687,8 +629,7 @@
 	 * @generated
 	 */
 	@Override
-	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object)
-	{
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
 		super.collectNewChildDescriptors(newChildDescriptors, object);
 	}
 
@@ -700,8 +641,7 @@
 	 * @generated
 	 */
 	@Override
-	public ResourceLocator getResourceLocator()
-	{
+	public ResourceLocator getResourceLocator() {
 		return ((IChildCreationExtender) adapterFactory).getResourceLocator();
 	}
 
diff --git a/bundles/org.eclipse.emf.ecp.view.template.model.edit/src/org/eclipse/emf/ecp/view/template/model/provider/MultiStyleSelectorContainerItemProvider.java b/bundles/org.eclipse.emf.ecp.view.template.model.edit/src/org/eclipse/emf/ecp/view/template/model/provider/MultiStyleSelectorContainerItemProvider.java
new file mode 100644
index 0000000..0b48650
--- /dev/null
+++ b/bundles/org.eclipse.emf.ecp.view.template.model.edit/src/org/eclipse/emf/ecp/view/template/model/provider/MultiStyleSelectorContainerItemProvider.java
@@ -0,0 +1,190 @@
+/**
+ * Copyright (c) 2011-2014 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
+ */
+package org.eclipse.emf.ecp.view.template.model.provider;
+
+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.common.util.ResourceLocator;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.ecp.view.template.model.VTMultiStyleSelectorContainer;
+import org.eclipse.emf.ecp.view.template.model.VTTemplatePackage;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IChildCreationExtender;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.emf.ecp.view.template.model.VTMultiStyleSelectorContainer}
+ * object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class MultiStyleSelectorContainerItemProvider
+	extends ItemProviderAdapter
+	implements
+	IEditingDomainItemProvider,
+	IStructuredItemContentProvider,
+	ITreeItemContentProvider,
+	IItemLabelProvider,
+	IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public MultiStyleSelectorContainerItemProvider(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);
+
+			addSelectorsPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Selectors feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void addSelectorsPropertyDescriptor(Object object) {
+		itemPropertyDescriptors
+			.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+				getResourceLocator(),
+				getString("_UI_MultiStyleSelectorContainer_selectors_feature"), //$NON-NLS-1$
+				getString("_UI_PropertyDescriptor_description", "_UI_MultiStyleSelectorContainer_selectors_feature", //$NON-NLS-1$ //$NON-NLS-2$
+					"_UI_MultiStyleSelectorContainer_type"), //$NON-NLS-1$
+				VTTemplatePackage.Literals.MULTI_STYLE_SELECTOR_CONTAINER__SELECTORS,
+				true,
+				false,
+				false,
+				null,
+				null,
+				null));
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(VTTemplatePackage.Literals.MULTI_STYLE_SELECTOR_CONTAINER__SELECTORS);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		return getString("_UI_MultiStyleSelectorContainer_type"); //$NON-NLS-1$
+	}
+
+	/**
+	 * 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);
+
+		switch (notification.getFeatureID(VTMultiStyleSelectorContainer.class)) {
+		case VTTemplatePackage.MULTI_STYLE_SELECTOR_CONTAINER__SELECTORS:
+			fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+			return;
+		}
+		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);
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return ((IChildCreationExtender) adapterFactory).getResourceLocator();
+	}
+
+}
diff --git a/bundles/org.eclipse.emf.ecp.view.template.model.edit/src/org/eclipse/emf/ecp/view/template/model/provider/StyleItemProvider.java b/bundles/org.eclipse.emf.ecp.view.template.model.edit/src/org/eclipse/emf/ecp/view/template/model/provider/StyleItemProvider.java
index 1be52a8..7e01f08 100644
--- a/bundles/org.eclipse.emf.ecp.view.template.model.edit/src/org/eclipse/emf/ecp/view/template/model/provider/StyleItemProvider.java
+++ b/bundles/org.eclipse.emf.ecp.view.template.model.edit/src/org/eclipse/emf/ecp/view/template/model/provider/StyleItemProvider.java
@@ -16,19 +16,11 @@
 
 import org.eclipse.emf.common.notify.AdapterFactory;
 import org.eclipse.emf.common.notify.Notification;
-import org.eclipse.emf.common.util.ResourceLocator;
 import org.eclipse.emf.ecore.EStructuralFeature;
 import org.eclipse.emf.ecp.view.template.model.VTStyle;
 import org.eclipse.emf.ecp.view.template.model.VTTemplatePackage;
 import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
-import org.eclipse.emf.edit.provider.IChildCreationExtender;
-import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
-import org.eclipse.emf.edit.provider.IItemLabelProvider;
 import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
-import org.eclipse.emf.edit.provider.IItemPropertySource;
-import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
-import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
-import org.eclipse.emf.edit.provider.ItemProviderAdapter;
 import org.eclipse.emf.edit.provider.ViewerNotification;
 
 /**
@@ -39,14 +31,7 @@
  * @generated
  */
 public class StyleItemProvider
-	extends ItemProviderAdapter
-	implements
-	IEditingDomainItemProvider,
-	IStructuredItemContentProvider,
-	ITreeItemContentProvider,
-	IItemLabelProvider,
-	IItemPropertySource
-{
+	extends StyleSelectorContainerItemProvider {
 	/**
 	 * This constructs an instance from a factory and a notifier.
 	 * <!-- begin-user-doc -->
@@ -54,8 +39,7 @@
 	 *
 	 * @generated
 	 */
-	public StyleItemProvider(AdapterFactory adapterFactory)
-	{
+	public StyleItemProvider(AdapterFactory adapterFactory) {
 		super(adapterFactory);
 	}
 
@@ -67,54 +51,25 @@
 	 * @generated
 	 */
 	@Override
-	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object)
-	{
-		if (itemPropertyDescriptors == null)
-		{
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
 			super.getPropertyDescriptors(object);
 
-			addSelectorPropertyDescriptor(object);
 			addPropertiesPropertyDescriptor(object);
 		}
 		return itemPropertyDescriptors;
 	}
 
 	/**
-	 * This adds a property descriptor for the Selector feature.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 *
-	 * @generated
-	 */
-	protected void addSelectorPropertyDescriptor(Object object)
-	{
-		itemPropertyDescriptors.add
-			(createItemPropertyDescriptor
-			(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
-				getResourceLocator(),
-				getString("_UI_Style_selector_feature"), //$NON-NLS-1$
-				getString("_UI_PropertyDescriptor_description", "_UI_Style_selector_feature", "_UI_Style_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-				VTTemplatePackage.Literals.STYLE__SELECTOR,
-				true,
-				false,
-				false,
-				null,
-				null,
-				null));
-	}
-
-	/**
 	 * This adds a property descriptor for the Properties feature.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 *
 	 * @generated
 	 */
-	protected void addPropertiesPropertyDescriptor(Object object)
-	{
-		itemPropertyDescriptors.add
-			(createItemPropertyDescriptor
-			(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+	protected void addPropertiesPropertyDescriptor(Object object) {
+		itemPropertyDescriptors
+			.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
 				getResourceLocator(),
 				getString("_UI_Style_properties_feature"), //$NON-NLS-1$
 				getString("_UI_PropertyDescriptor_description", "_UI_Style_properties_feature", "_UI_Style_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
@@ -137,12 +92,9 @@
 	 * @generated
 	 */
 	@Override
-	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object)
-	{
-		if (childrenFeatures == null)
-		{
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
 			super.getChildrenFeatures(object);
-			childrenFeatures.add(VTTemplatePackage.Literals.STYLE__SELECTOR);
 			childrenFeatures.add(VTTemplatePackage.Literals.STYLE__PROPERTIES);
 		}
 		return childrenFeatures;
@@ -155,8 +107,7 @@
 	 * @generated
 	 */
 	@Override
-	protected EStructuralFeature getChildFeature(Object object, Object child)
-	{
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
 		// Check the type of the specified child object and return the proper feature to use for
 		// adding (see {@link AddCommand}) it as a child.
 
@@ -171,8 +122,7 @@
 	 * @generated
 	 */
 	@Override
-	public Object getImage(Object object)
-	{
+	public Object getImage(Object object) {
 		return overlayImage(object, getResourceLocator().getImage("full/obj16/Style")); //$NON-NLS-1$
 	}
 
@@ -184,8 +134,7 @@
 	 * @generated
 	 */
 	@Override
-	public String getText(Object object)
-	{
+	public String getText(Object object) {
 		return getString("_UI_Style_type"); //$NON-NLS-1$
 	}
 
@@ -198,13 +147,10 @@
 	 * @generated
 	 */
 	@Override
-	public void notifyChanged(Notification notification)
-	{
+	public void notifyChanged(Notification notification) {
 		updateChildren(notification);
 
-		switch (notification.getFeatureID(VTStyle.class))
-		{
-		case VTTemplatePackage.STYLE__SELECTOR:
+		switch (notification.getFeatureID(VTStyle.class)) {
 		case VTTemplatePackage.STYLE__PROPERTIES:
 			fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
 			return;
@@ -221,22 +167,8 @@
 	 * @generated
 	 */
 	@Override
-	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object)
-	{
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
 		super.collectNewChildDescriptors(newChildDescriptors, object);
 	}
 
-	/**
-	 * Return the resource locator for this item provider's resources.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 *
-	 * @generated
-	 */
-	@Override
-	public ResourceLocator getResourceLocator()
-	{
-		return ((IChildCreationExtender) adapterFactory).getResourceLocator();
-	}
-
 }
diff --git a/bundles/org.eclipse.emf.ecp.view.template.model.edit/src/org/eclipse/emf/ecp/view/template/model/provider/StyleSelectorContainerItemProvider.java b/bundles/org.eclipse.emf.ecp.view.template.model.edit/src/org/eclipse/emf/ecp/view/template/model/provider/StyleSelectorContainerItemProvider.java
new file mode 100644
index 0000000..3f6dac4
--- /dev/null
+++ b/bundles/org.eclipse.emf.ecp.view.template.model.edit/src/org/eclipse/emf/ecp/view/template/model/provider/StyleSelectorContainerItemProvider.java
@@ -0,0 +1,190 @@
+/**
+ * Copyright (c) 2011-2014 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
+ */
+package org.eclipse.emf.ecp.view.template.model.provider;
+
+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.common.util.ResourceLocator;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.ecp.view.template.model.VTStyleSelectorContainer;
+import org.eclipse.emf.ecp.view.template.model.VTTemplatePackage;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IChildCreationExtender;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.emf.ecp.view.template.model.VTStyleSelectorContainer}
+ * object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class StyleSelectorContainerItemProvider
+	extends ItemProviderAdapter
+	implements
+	IEditingDomainItemProvider,
+	IStructuredItemContentProvider,
+	ITreeItemContentProvider,
+	IItemLabelProvider,
+	IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public StyleSelectorContainerItemProvider(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);
+
+			addSelectorPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Selector feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void addSelectorPropertyDescriptor(Object object) {
+		itemPropertyDescriptors
+			.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+				getResourceLocator(),
+				getString("_UI_StyleSelectorContainer_selector_feature"), //$NON-NLS-1$
+				getString("_UI_PropertyDescriptor_description", "_UI_StyleSelectorContainer_selector_feature", //$NON-NLS-1$ //$NON-NLS-2$
+					"_UI_StyleSelectorContainer_type"), //$NON-NLS-1$
+				VTTemplatePackage.Literals.STYLE_SELECTOR_CONTAINER__SELECTOR,
+				true,
+				false,
+				false,
+				null,
+				null,
+				null));
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(VTTemplatePackage.Literals.STYLE_SELECTOR_CONTAINER__SELECTOR);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		return getString("_UI_StyleSelectorContainer_type"); //$NON-NLS-1$
+	}
+
+	/**
+	 * 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);
+
+		switch (notification.getFeatureID(VTStyleSelectorContainer.class)) {
+		case VTTemplatePackage.STYLE_SELECTOR_CONTAINER__SELECTOR:
+			fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+			return;
+		}
+		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);
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return ((IChildCreationExtender) adapterFactory).getResourceLocator();
+	}
+
+}
diff --git a/bundles/org.eclipse.emf.ecp.view.template.model.edit/src/org/eclipse/emf/ecp/view/template/model/provider/TemplateEditPlugin.java b/bundles/org.eclipse.emf.ecp.view.template.model.edit/src/org/eclipse/emf/ecp/view/template/model/provider/TemplateEditPlugin.java
index 7f36670..51fd9c1 100644
--- a/bundles/org.eclipse.emf.ecp.view.template.model.edit/src/org/eclipse/emf/ecp/view/template/model/provider/TemplateEditPlugin.java
+++ b/bundles/org.eclipse.emf.ecp.view.template.model.edit/src/org/eclipse/emf/ecp/view/template/model/provider/TemplateEditPlugin.java
@@ -21,8 +21,7 @@
  *
  * @generated
  */
-public final class TemplateEditPlugin extends EMFPlugin
-{
+public final class TemplateEditPlugin extends EMFPlugin {
 	/**
 	 * Keep track of the singleton.
 	 * <!-- begin-user-doc -->
@@ -48,11 +47,9 @@
 	 *
 	 * @generated
 	 */
-	public TemplateEditPlugin()
-	{
-		super(new ResourceLocator[]
-		{
-			});
+	public TemplateEditPlugin() {
+		super(new ResourceLocator[] {
+		});
 	}
 
 	/**
@@ -64,8 +61,7 @@
 	 * @generated
 	 */
 	@Override
-	public ResourceLocator getPluginResourceLocator()
-	{
+	public ResourceLocator getPluginResourceLocator() {
 		return plugin;
 	}
 
@@ -77,8 +73,7 @@
 	 * @return the singleton instance.
 	 * @generated
 	 */
-	public static Implementation getPlugin()
-	{
+	public static Implementation getPlugin() {
 		return plugin;
 	}
 
@@ -89,8 +84,7 @@
 	 *
 	 * @generated
 	 */
-	public static class Implementation extends EclipsePlugin
-	{
+	public static class Implementation extends EclipsePlugin {
 		/**
 		 * Creates an instance.
 		 * <!-- begin-user-doc -->
@@ -98,8 +92,7 @@
 		 *
 		 * @generated
 		 */
-		public Implementation()
-		{
+		public Implementation() {
 			super();
 
 			// Remember the static instance.
diff --git a/bundles/org.eclipse.emf.ecp.view.template.model.edit/src/org/eclipse/emf/ecp/view/template/model/provider/TemplateItemProviderAdapterFactory.java b/bundles/org.eclipse.emf.ecp.view.template.model.edit/src/org/eclipse/emf/ecp/view/template/model/provider/TemplateItemProviderAdapterFactory.java
index 6bca7d8..9aa0db6 100644
--- a/bundles/org.eclipse.emf.ecp.view.template.model.edit/src/org/eclipse/emf/ecp/view/template/model/provider/TemplateItemProviderAdapterFactory.java
+++ b/bundles/org.eclipse.emf.ecp.view.template.model.edit/src/org/eclipse/emf/ecp/view/template/model/provider/TemplateItemProviderAdapterFactory.java
@@ -48,8 +48,7 @@
  * @generated
  */
 public class TemplateItemProviderAdapterFactory extends TemplateAdapterFactory implements ComposeableAdapterFactory,
-	IChangeNotifier, IDisposable, IChildCreationExtender
-{
+	IChangeNotifier, IDisposable, IChildCreationExtender {
 	/**
 	 * This keeps track of the root adapter factory that delegates to this adapter factory.
 	 * <!-- begin-user-doc -->
@@ -94,8 +93,7 @@
 	 *
 	 * @generated
 	 */
-	public TemplateItemProviderAdapterFactory()
-	{
+	public TemplateItemProviderAdapterFactory() {
 		supportedTypes.add(IEditingDomainItemProvider.class);
 		supportedTypes.add(IStructuredItemContentProvider.class);
 		supportedTypes.add(ITreeItemContentProvider.class);
@@ -121,10 +119,8 @@
 	 * @generated
 	 */
 	@Override
-	public Adapter createViewTemplateAdapter()
-	{
-		if (viewTemplateItemProvider == null)
-		{
+	public Adapter createViewTemplateAdapter() {
+		if (viewTemplateItemProvider == null) {
 			viewTemplateItemProvider = new ViewTemplateItemProvider(this);
 		}
 
@@ -149,10 +145,8 @@
 	 * @generated
 	 */
 	@Override
-	public Adapter createControlValidationTemplateAdapter()
-	{
-		if (controlValidationTemplateItemProvider == null)
-		{
+	public Adapter createControlValidationTemplateAdapter() {
+		if (controlValidationTemplateItemProvider == null) {
 			controlValidationTemplateItemProvider = new ControlValidationTemplateItemProvider(this);
 		}
 
@@ -177,10 +171,8 @@
 	 * @generated
 	 */
 	@Override
-	public Adapter createStyleAdapter()
-	{
-		if (styleItemProvider == null)
-		{
+	public Adapter createStyleAdapter() {
+		if (styleItemProvider == null) {
 			styleItemProvider = new StyleItemProvider(this);
 		}
 
@@ -195,8 +187,7 @@
 	 * @generated
 	 */
 	@Override
-	public ComposeableAdapterFactory getRootAdapterFactory()
-	{
+	public ComposeableAdapterFactory getRootAdapterFactory() {
 		return parentAdapterFactory == null ? this : parentAdapterFactory.getRootAdapterFactory();
 	}
 
@@ -208,8 +199,7 @@
 	 * @generated
 	 */
 	@Override
-	public void setParentAdapterFactory(ComposedAdapterFactory parentAdapterFactory)
-	{
+	public void setParentAdapterFactory(ComposedAdapterFactory parentAdapterFactory) {
 		this.parentAdapterFactory = parentAdapterFactory;
 	}
 
@@ -220,8 +210,7 @@
 	 * @generated
 	 */
 	@Override
-	public boolean isFactoryForType(Object type)
-	{
+	public boolean isFactoryForType(Object type) {
 		return supportedTypes.contains(type) || super.isFactoryForType(type);
 	}
 
@@ -233,8 +222,7 @@
 	 * @generated
 	 */
 	@Override
-	public Adapter adapt(Notifier notifier, Object type)
-	{
+	public Adapter adapt(Notifier notifier, Object type) {
 		return super.adapt(notifier, this);
 	}
 
@@ -245,13 +233,10 @@
 	 * @generated
 	 */
 	@Override
-	public Object adapt(Object object, Object type)
-	{
-		if (isFactoryForType(type))
-		{
+	public Object adapt(Object object, Object type) {
+		if (isFactoryForType(type)) {
 			final Object adapter = super.adapt(object, type);
-			if (!(type instanceof Class<?>) || ((Class<?>) type).isInstance(adapter))
-			{
+			if (!(type instanceof Class<?>) || ((Class<?>) type).isInstance(adapter)) {
 				return adapter;
 			}
 		}
@@ -265,8 +250,7 @@
 	 *
 	 * @generated
 	 */
-	public List<IChildCreationExtender> getChildCreationExtenders()
-	{
+	public List<IChildCreationExtender> getChildCreationExtenders() {
 		return childCreationExtenderManager.getChildCreationExtenders();
 	}
 
@@ -277,8 +261,7 @@
 	 * @generated
 	 */
 	@Override
-	public Collection<?> getNewChildDescriptors(Object object, EditingDomain editingDomain)
-	{
+	public Collection<?> getNewChildDescriptors(Object object, EditingDomain editingDomain) {
 		return childCreationExtenderManager.getNewChildDescriptors(object, editingDomain);
 	}
 
@@ -289,8 +272,7 @@
 	 * @generated
 	 */
 	@Override
-	public ResourceLocator getResourceLocator()
-	{
+	public ResourceLocator getResourceLocator() {
 		return childCreationExtenderManager;
 	}
 
@@ -302,8 +284,7 @@
 	 * @generated
 	 */
 	@Override
-	public void addListener(INotifyChangedListener notifyChangedListener)
-	{
+	public void addListener(INotifyChangedListener notifyChangedListener) {
 		changeNotifier.addListener(notifyChangedListener);
 	}
 
@@ -315,8 +296,7 @@
 	 * @generated
 	 */
 	@Override
-	public void removeListener(INotifyChangedListener notifyChangedListener)
-	{
+	public void removeListener(INotifyChangedListener notifyChangedListener) {
 		changeNotifier.removeListener(notifyChangedListener);
 	}
 
@@ -328,12 +308,10 @@
 	 * @generated
 	 */
 	@Override
-	public void fireNotifyChanged(Notification notification)
-	{
+	public void fireNotifyChanged(Notification notification) {
 		changeNotifier.fireNotifyChanged(notification);
 
-		if (parentAdapterFactory != null)
-		{
+		if (parentAdapterFactory != null) {
 			parentAdapterFactory.fireNotifyChanged(notification);
 		}
 	}
@@ -346,8 +324,7 @@
 	 * @generated
 	 */
 	@Override
-	public void dispose()
-	{
+	public void dispose() {
 		if (viewTemplateItemProvider != null) {
 			viewTemplateItemProvider.dispose();
 		}
diff --git a/bundles/org.eclipse.emf.ecp.view.template.model.edit/src/org/eclipse/emf/ecp/view/template/model/provider/ViewTemplateItemProvider.java b/bundles/org.eclipse.emf.ecp.view.template.model.edit/src/org/eclipse/emf/ecp/view/template/model/provider/ViewTemplateItemProvider.java
index 774e2da..6c79ced 100644
--- a/bundles/org.eclipse.emf.ecp.view.template.model.edit/src/org/eclipse/emf/ecp/view/template/model/provider/ViewTemplateItemProvider.java
+++ b/bundles/org.eclipse.emf.ecp.view.template.model.edit/src/org/eclipse/emf/ecp/view/template/model/provider/ViewTemplateItemProvider.java
@@ -46,8 +46,7 @@
 	IStructuredItemContentProvider,
 	ITreeItemContentProvider,
 	IItemLabelProvider,
-	IItemPropertySource
-{
+	IItemPropertySource {
 	/**
 	 * This constructs an instance from a factory and a notifier.
 	 * <!-- begin-user-doc -->
@@ -55,8 +54,7 @@
 	 *
 	 * @generated
 	 */
-	public ViewTemplateItemProvider(AdapterFactory adapterFactory)
-	{
+	public ViewTemplateItemProvider(AdapterFactory adapterFactory) {
 		super(adapterFactory);
 	}
 
@@ -68,10 +66,8 @@
 	 * @generated
 	 */
 	@Override
-	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object)
-	{
-		if (itemPropertyDescriptors == null)
-		{
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
 			super.getPropertyDescriptors(object);
 
 			addStylesPropertyDescriptor(object);
@@ -86,15 +82,13 @@
 	 *
 	 * @generated
 	 */
-	protected void addStylesPropertyDescriptor(Object object)
-	{
-		itemPropertyDescriptors.add
-			(createItemPropertyDescriptor
-			(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+	protected void addStylesPropertyDescriptor(Object object) {
+		itemPropertyDescriptors
+			.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
 				getResourceLocator(),
 				getString("_UI_ViewTemplate_styles_feature"), //$NON-NLS-1$
-				getString(
-					"_UI_PropertyDescriptor_description", "_UI_ViewTemplate_styles_feature", "_UI_ViewTemplate_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				getString("_UI_PropertyDescriptor_description", "_UI_ViewTemplate_styles_feature", //$NON-NLS-1$ //$NON-NLS-2$
+					"_UI_ViewTemplate_type"), //$NON-NLS-1$
 				VTTemplatePackage.Literals.VIEW_TEMPLATE__STYLES,
 				true,
 				false,
@@ -114,10 +108,8 @@
 	 * @generated
 	 */
 	@Override
-	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object)
-	{
-		if (childrenFeatures == null)
-		{
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
 			super.getChildrenFeatures(object);
 			childrenFeatures.add(VTTemplatePackage.Literals.VIEW_TEMPLATE__CONTROL_VALIDATION_CONFIGURATION);
 			childrenFeatures.add(VTTemplatePackage.Literals.VIEW_TEMPLATE__STYLES);
@@ -132,8 +124,7 @@
 	 * @generated
 	 */
 	@Override
-	protected EStructuralFeature getChildFeature(Object object, Object child)
-	{
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
 		// Check the type of the specified child object and return the proper feature to use for
 		// adding (see {@link AddCommand}) it as a child.
 
@@ -148,8 +139,7 @@
 	 * @generated
 	 */
 	@Override
-	public Object getImage(Object object)
-	{
+	public Object getImage(Object object) {
 		return overlayImage(object, getResourceLocator().getImage("full/obj16/ViewTemplate")); //$NON-NLS-1$
 	}
 
@@ -161,8 +151,7 @@
 	 * @generated
 	 */
 	@Override
-	public String getText(Object object)
-	{
+	public String getText(Object object) {
 		return getString("_UI_ViewTemplate_type"); //$NON-NLS-1$
 	}
 
@@ -175,12 +164,10 @@
 	 * @generated
 	 */
 	@Override
-	public void notifyChanged(Notification notification)
-	{
+	public void notifyChanged(Notification notification) {
 		updateChildren(notification);
 
-		switch (notification.getFeatureID(VTViewTemplate.class))
-		{
+		switch (notification.getFeatureID(VTViewTemplate.class)) {
 		case VTTemplatePackage.VIEW_TEMPLATE__CONTROL_VALIDATION_CONFIGURATION:
 		case VTTemplatePackage.VIEW_TEMPLATE__STYLES:
 			fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
@@ -198,19 +185,15 @@
 	 * @generated
 	 */
 	@Override
-	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object)
-	{
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
 		super.collectNewChildDescriptors(newChildDescriptors, object);
 
-		newChildDescriptors.add
-			(createChildParameter
-			(VTTemplatePackage.Literals.VIEW_TEMPLATE__CONTROL_VALIDATION_CONFIGURATION,
+		newChildDescriptors
+			.add(createChildParameter(VTTemplatePackage.Literals.VIEW_TEMPLATE__CONTROL_VALIDATION_CONFIGURATION,
 				VTTemplateFactory.eINSTANCE.createControlValidationTemplate()));
 
-		newChildDescriptors.add
-			(createChildParameter
-			(VTTemplatePackage.Literals.VIEW_TEMPLATE__STYLES,
-				VTTemplateFactory.eINSTANCE.createStyle()));
+		newChildDescriptors.add(createChildParameter(VTTemplatePackage.Literals.VIEW_TEMPLATE__STYLES,
+			VTTemplateFactory.eINSTANCE.createStyle()));
 	}
 
 	/**
@@ -221,8 +204,7 @@
 	 * @generated
 	 */
 	@Override
-	public ResourceLocator getResourceLocator()
-	{
+	public ResourceLocator getResourceLocator() {
 		return ((IChildCreationExtender) adapterFactory).getResourceLocator();
 	}
 
diff --git a/bundles/org.eclipse.emf.ecp.view.template.model.edit/src/org/eclipse/emf/ecp/view/template/selector/bool/model/provider/AndSelectorItemProvider.java b/bundles/org.eclipse.emf.ecp.view.template.model.edit/src/org/eclipse/emf/ecp/view/template/selector/bool/model/provider/AndSelectorItemProvider.java
new file mode 100644
index 0000000..4bb44cc
--- /dev/null
+++ b/bundles/org.eclipse.emf.ecp.view.template.model.edit/src/org/eclipse/emf/ecp/view/template/selector/bool/model/provider/AndSelectorItemProvider.java
@@ -0,0 +1,115 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * Johannes Faltermeier - initial API and implementation
+ */
+package org.eclipse.emf.ecp.view.template.selector.bool.model.provider;
+
+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.ecp.view.template.model.VTTemplatePackage;
+import org.eclipse.emf.ecp.view.template.model.provider.MultiStyleSelectorContainerItemProvider;
+import org.eclipse.emf.ecp.view.template.selector.bool.model.VTBoolFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.emf.ecp.view.template.selector.bool.model.VTAndSelector}
+ * object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class AndSelectorItemProvider extends MultiStyleSelectorContainerItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public AndSelectorItemProvider(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 AndSelector.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/AndSelector")); //$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 getString("_UI_AndSelector_type"); //$NON-NLS-1$
+	}
+
+	/**
+	 * 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);
+
+		newChildDescriptors
+			.add(createChildParameter(VTTemplatePackage.Literals.MULTI_STYLE_SELECTOR_CONTAINER__SELECTORS,
+				VTBoolFactory.eINSTANCE.createAndSelector()));
+	}
+
+}
diff --git a/bundles/org.eclipse.emf.ecp.view.template.model.edit/src/org/eclipse/emf/ecp/view/template/selector/bool/model/provider/BoolItemProviderAdapterFactory.java b/bundles/org.eclipse.emf.ecp.view.template.model.edit/src/org/eclipse/emf/ecp/view/template/selector/bool/model/provider/BoolItemProviderAdapterFactory.java
new file mode 100644
index 0000000..e1ec608
--- /dev/null
+++ b/bundles/org.eclipse.emf.ecp.view.template.model.edit/src/org/eclipse/emf/ecp/view/template/selector/bool/model/provider/BoolItemProviderAdapterFactory.java
@@ -0,0 +1,401 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * Johannes Faltermeier - initial API and implementation
+ */
+package org.eclipse.emf.ecp.view.template.selector.bool.model.provider;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.Notifier;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecp.view.template.model.VTMultiStyleSelectorContainer;
+import org.eclipse.emf.ecp.view.template.model.VTStyleSelectorContainer;
+import org.eclipse.emf.ecp.view.template.model.VTTemplatePackage;
+import org.eclipse.emf.ecp.view.template.model.util.TemplateSwitch;
+import org.eclipse.emf.ecp.view.template.selector.bool.model.VTBoolFactory;
+import org.eclipse.emf.ecp.view.template.selector.bool.model.VTBoolPackage;
+import org.eclipse.emf.ecp.view.template.selector.bool.model.util.BoolAdapterFactory;
+import org.eclipse.emf.edit.command.CommandParameter;
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.emf.edit.provider.ChangeNotifier;
+import org.eclipse.emf.edit.provider.ChildCreationExtenderManager;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
+import org.eclipse.emf.edit.provider.IChangeNotifier;
+import org.eclipse.emf.edit.provider.IChildCreationExtender;
+import org.eclipse.emf.edit.provider.IDisposable;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.INotifyChangedListener;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+/**
+ * This is the factory that is used to provide the interfaces needed to support Viewers.
+ * The adapters generated by this factory convert EMF adapter notifications into calls to {@link #fireNotifyChanged
+ * fireNotifyChanged}.
+ * The adapters also support Eclipse property sheets.
+ * Note that most of the adapters are shared among multiple instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class BoolItemProviderAdapterFactory extends BoolAdapterFactory
+	implements ComposeableAdapterFactory, IChangeNotifier, IDisposable, IChildCreationExtender {
+	/**
+	 * This keeps track of the root adapter factory that delegates to this adapter factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected ComposedAdapterFactory parentAdapterFactory;
+
+	/**
+	 * This is used to implement {@link org.eclipse.emf.edit.provider.IChangeNotifier}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected IChangeNotifier changeNotifier = new ChangeNotifier();
+
+	/**
+	 * This helps manage the child creation extenders.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected ChildCreationExtenderManager childCreationExtenderManager = new ChildCreationExtenderManager(
+		BoolSelectorEditPlugin.INSTANCE, VTBoolPackage.eNS_URI);
+
+	/**
+	 * This keeps track of all the supported types checked by {@link #isFactoryForType isFactoryForType}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected Collection<Object> supportedTypes = new ArrayList<Object>();
+
+	/**
+	 * This constructs an instance.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public BoolItemProviderAdapterFactory() {
+		supportedTypes.add(IEditingDomainItemProvider.class);
+		supportedTypes.add(IStructuredItemContentProvider.class);
+		supportedTypes.add(ITreeItemContentProvider.class);
+		supportedTypes.add(IItemLabelProvider.class);
+		supportedTypes.add(IItemPropertySource.class);
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all
+	 * {@link org.eclipse.emf.ecp.view.template.selector.bool.model.VTAndSelector} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected AndSelectorItemProvider andSelectorItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.emf.ecp.view.template.selector.bool.model.VTAndSelector}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Adapter createAndSelectorAdapter() {
+		if (andSelectorItemProvider == null) {
+			andSelectorItemProvider = new AndSelectorItemProvider(this);
+		}
+
+		return andSelectorItemProvider;
+	}
+
+	/**
+	 * This returns the root adapter factory that contains this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public ComposeableAdapterFactory getRootAdapterFactory() {
+		return parentAdapterFactory == null ? this : parentAdapterFactory.getRootAdapterFactory();
+	}
+
+	/**
+	 * This sets the composed adapter factory that contains this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setParentAdapterFactory(ComposedAdapterFactory parentAdapterFactory) {
+		this.parentAdapterFactory = parentAdapterFactory;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public boolean isFactoryForType(Object type) {
+		return supportedTypes.contains(type) || super.isFactoryForType(type);
+	}
+
+	/**
+	 * This implementation substitutes the factory itself as the key for the adapter.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Adapter adapt(Notifier notifier, Object type) {
+		return super.adapt(notifier, this);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object adapt(Object object, Object type) {
+		if (isFactoryForType(type)) {
+			final Object adapter = super.adapt(object, type);
+			if (!(type instanceof Class<?>) || ((Class<?>) type).isInstance(adapter)) {
+				return adapter;
+			}
+		}
+
+		return null;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public List<IChildCreationExtender> getChildCreationExtenders() {
+		return childCreationExtenderManager.getChildCreationExtenders();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Collection<?> getNewChildDescriptors(Object object, EditingDomain editingDomain) {
+		return childCreationExtenderManager.getNewChildDescriptors(object, editingDomain);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return childCreationExtenderManager;
+	}
+
+	/**
+	 * This adds a listener.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void addListener(INotifyChangedListener notifyChangedListener) {
+		changeNotifier.addListener(notifyChangedListener);
+	}
+
+	/**
+	 * This removes a listener.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void removeListener(INotifyChangedListener notifyChangedListener) {
+		changeNotifier.removeListener(notifyChangedListener);
+	}
+
+	/**
+	 * This delegates to {@link #changeNotifier} and to {@link #parentAdapterFactory}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void fireNotifyChanged(Notification notification) {
+		changeNotifier.fireNotifyChanged(notification);
+
+		if (parentAdapterFactory != null) {
+			parentAdapterFactory.fireNotifyChanged(notification);
+		}
+	}
+
+	/**
+	 * This disposes all of the item providers created by this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void dispose() {
+		if (andSelectorItemProvider != null) {
+			andSelectorItemProvider.dispose();
+		}
+	}
+
+	/**
+	 * A child creation extender for the {@link VTTemplatePackage}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public static class TemplateChildCreationExtender implements IChildCreationExtender {
+		/**
+		 * The switch for creating child descriptors specific to each extended class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		protected static class CreationSwitch extends TemplateSwitch<Object> {
+			/**
+			 * The child descriptors being populated.
+			 * <!-- begin-user-doc -->
+			 * <!-- end-user-doc -->
+			 *
+			 * @generated
+			 */
+			protected List<Object> newChildDescriptors;
+
+			/**
+			 * The domain in which to create the children.
+			 * <!-- begin-user-doc -->
+			 * <!-- end-user-doc -->
+			 *
+			 * @generated
+			 */
+			protected EditingDomain editingDomain;
+
+			/**
+			 * Creates the a switch for populating child descriptors in the given domain.
+			 * <!-- begin-user-doc -->
+			 * <!-- end-user-doc -->
+			 *
+			 * @generated
+			 */
+			CreationSwitch(List<Object> newChildDescriptors, EditingDomain editingDomain) {
+				this.newChildDescriptors = newChildDescriptors;
+				this.editingDomain = editingDomain;
+			}
+
+			/**
+			 * <!-- begin-user-doc -->
+			 * <!-- end-user-doc -->
+			 *
+			 * @generated
+			 */
+			@Override
+			public Object caseStyleSelectorContainer(VTStyleSelectorContainer object) {
+				newChildDescriptors
+					.add(createChildParameter(VTTemplatePackage.Literals.STYLE_SELECTOR_CONTAINER__SELECTOR,
+						VTBoolFactory.eINSTANCE.createAndSelector()));
+
+				return null;
+			}
+
+			/**
+			 * <!-- begin-user-doc -->
+			 * <!-- end-user-doc -->
+			 *
+			 * @generated
+			 */
+			@Override
+			public Object caseMultiStyleSelectorContainer(VTMultiStyleSelectorContainer object) {
+				newChildDescriptors
+					.add(createChildParameter(VTTemplatePackage.Literals.MULTI_STYLE_SELECTOR_CONTAINER__SELECTORS,
+						VTBoolFactory.eINSTANCE.createAndSelector()));
+
+				return null;
+			}
+
+			/**
+			 * <!-- begin-user-doc -->
+			 * <!-- end-user-doc -->
+			 *
+			 * @generated
+			 */
+			protected CommandParameter createChildParameter(Object feature, Object child) {
+				return new CommandParameter(null, feature, child);
+			}
+
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		@Override
+		public Collection<Object> getNewChildDescriptors(Object object, EditingDomain editingDomain) {
+			final ArrayList<Object> result = new ArrayList<Object>();
+			new CreationSwitch(result, editingDomain).doSwitch((EObject) object);
+			return result;
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		@Override
+		public ResourceLocator getResourceLocator() {
+			return BoolSelectorEditPlugin.INSTANCE;
+		}
+	}
+
+}
diff --git a/bundles/org.eclipse.emf.ecp.view.template.model.edit/src/org/eclipse/emf/ecp/view/template/selector/bool/model/provider/BoolSelectorEditPlugin.java b/bundles/org.eclipse.emf.ecp.view.template.model.edit/src/org/eclipse/emf/ecp/view/template/selector/bool/model/provider/BoolSelectorEditPlugin.java
new file mode 100644
index 0000000..445d4a2
--- /dev/null
+++ b/bundles/org.eclipse.emf.ecp.view.template.model.edit/src/org/eclipse/emf/ecp/view/template/selector/bool/model/provider/BoolSelectorEditPlugin.java
@@ -0,0 +1,106 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * Johannes Faltermeier - initial API and implementation
+ */
+package org.eclipse.emf.ecp.view.template.selector.bool.model.provider;
+
+import org.eclipse.emf.common.EMFPlugin;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.ecp.view.template.model.provider.TemplateEditPlugin;
+
+/**
+ * This is the central singleton for the BoolSelector edit plugin.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public final class BoolSelectorEditPlugin extends EMFPlugin {
+	/**
+	 * Keep track of the singleton.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public static final BoolSelectorEditPlugin INSTANCE = new BoolSelectorEditPlugin();
+
+	/**
+	 * Keep track of the singleton.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private static Implementation plugin;
+
+	/**
+	 * Create the instance.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public BoolSelectorEditPlugin() {
+		super(new ResourceLocator[] {
+			TemplateEditPlugin.INSTANCE,
+		});
+	}
+
+	/**
+	 * Returns the singleton instance of the Eclipse plugin.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the singleton instance.
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getPluginResourceLocator() {
+		return plugin;
+	}
+
+	/**
+	 * Returns the singleton instance of the Eclipse plugin.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the singleton instance.
+	 * @generated
+	 */
+	public static Implementation getPlugin() {
+		return plugin;
+	}
+
+	/**
+	 * The actual implementation of the Eclipse <b>Plugin</b>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public static class Implementation extends EclipsePlugin {
+		/**
+		 * Creates an instance.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		public Implementation() {
+			super();
+
+			// Remember the static instance.
+			//
+			plugin = this;
+		}
+	}
+
+}
diff --git a/bundles/org.eclipse.emf.ecp.view.template.model.edit/src/org/eclipse/emf/ecp/view/template/selector/domainmodelreference/model/provider/DomainModelReferenceSelectorEditPlugin.java b/bundles/org.eclipse.emf.ecp.view.template.model.edit/src/org/eclipse/emf/ecp/view/template/selector/domainmodelreference/model/provider/DomainModelReferenceSelectorEditPlugin.java
index 8674c08..16a62c8 100644
--- a/bundles/org.eclipse.emf.ecp.view.template.model.edit/src/org/eclipse/emf/ecp/view/template/selector/domainmodelreference/model/provider/DomainModelReferenceSelectorEditPlugin.java
+++ b/bundles/org.eclipse.emf.ecp.view.template.model.edit/src/org/eclipse/emf/ecp/view/template/selector/domainmodelreference/model/provider/DomainModelReferenceSelectorEditPlugin.java
@@ -24,8 +24,7 @@
  *
  * @generated
  */
-public final class DomainModelReferenceSelectorEditPlugin extends EMFPlugin
-{
+public final class DomainModelReferenceSelectorEditPlugin extends EMFPlugin {
 	/**
 	 * Keep track of the singleton.
 	 * <!-- begin-user-doc -->
@@ -51,10 +50,8 @@
 	 *
 	 * @generated
 	 */
-	public DomainModelReferenceSelectorEditPlugin()
-	{
-		super(new ResourceLocator[]
-		{
+	public DomainModelReferenceSelectorEditPlugin() {
+		super(new ResourceLocator[] {
 			EcoreEditPlugin.INSTANCE,
 			TemplateEditPlugin.INSTANCE,
 			ViewEditPlugin.INSTANCE,
@@ -70,8 +67,7 @@
 	 * @generated
 	 */
 	@Override
-	public ResourceLocator getPluginResourceLocator()
-	{
+	public ResourceLocator getPluginResourceLocator() {
 		return plugin;
 	}
 
@@ -83,8 +79,7 @@
 	 * @return the singleton instance.
 	 * @generated
 	 */
-	public static Implementation getPlugin()
-	{
+	public static Implementation getPlugin() {
 		return plugin;
 	}
 
@@ -95,8 +90,7 @@
 	 *
 	 * @generated
 	 */
-	public static class Implementation extends EclipsePlugin
-	{
+	public static class Implementation extends EclipsePlugin {
 		/**
 		 * Creates an instance.
 		 * <!-- begin-user-doc -->
@@ -104,8 +98,7 @@
 		 *
 		 * @generated
 		 */
-		public Implementation()
-		{
+		public Implementation() {
 			super();
 
 			// Remember the static instance.
diff --git a/bundles/org.eclipse.emf.ecp.view.template.model.edit/src/org/eclipse/emf/ecp/view/template/selector/domainmodelreference/model/provider/DomainModelReferenceSelectorItemProvider.java b/bundles/org.eclipse.emf.ecp.view.template.model.edit/src/org/eclipse/emf/ecp/view/template/selector/domainmodelreference/model/provider/DomainModelReferenceSelectorItemProvider.java
index e0885b2..e8519b6 100644
--- a/bundles/org.eclipse.emf.ecp.view.template.model.edit/src/org/eclipse/emf/ecp/view/template/selector/domainmodelreference/model/provider/DomainModelReferenceSelectorItemProvider.java
+++ b/bundles/org.eclipse.emf.ecp.view.template.model.edit/src/org/eclipse/emf/ecp/view/template/selector/domainmodelreference/model/provider/DomainModelReferenceSelectorItemProvider.java
@@ -46,8 +46,7 @@
 	IStructuredItemContentProvider,
 	ITreeItemContentProvider,
 	IItemLabelProvider,
-	IItemPropertySource
-{
+	IItemPropertySource {
 	/**
 	 * This constructs an instance from a factory and a notifier.
 	 * <!-- begin-user-doc -->
@@ -55,8 +54,7 @@
 	 *
 	 * @generated
 	 */
-	public DomainModelReferenceSelectorItemProvider(AdapterFactory adapterFactory)
-	{
+	public DomainModelReferenceSelectorItemProvider(AdapterFactory adapterFactory) {
 		super(adapterFactory);
 	}
 
@@ -68,10 +66,8 @@
 	 * @generated
 	 */
 	@Override
-	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object)
-	{
-		if (itemPropertyDescriptors == null)
-		{
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
 			super.getPropertyDescriptors(object);
 
 			addDomainModelReferencePropertyDescriptor(object);
@@ -86,16 +82,14 @@
 	 *
 	 * @generated
 	 */
-	protected void addDomainModelReferencePropertyDescriptor(Object object)
-	{
+	protected void addDomainModelReferencePropertyDescriptor(Object object) {
 		itemPropertyDescriptors
-			.add
-			(createItemPropertyDescriptor
-			(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+			.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
 				getResourceLocator(),
 				getString("_UI_DomainModelReferenceSelector_domainModelReference_feature"), //$NON-NLS-1$
-				getString(
-					"_UI_PropertyDescriptor_description", "_UI_DomainModelReferenceSelector_domainModelReference_feature", "_UI_DomainModelReferenceSelector_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				getString("_UI_PropertyDescriptor_description", //$NON-NLS-1$
+					"_UI_DomainModelReferenceSelector_domainModelReference_feature", //$NON-NLS-1$
+					"_UI_DomainModelReferenceSelector_type"), //$NON-NLS-1$
 				VTDomainmodelreferencePackage.Literals.DOMAIN_MODEL_REFERENCE_SELECTOR__DOMAIN_MODEL_REFERENCE,
 				true,
 				false,
@@ -113,8 +107,7 @@
 	 * @generated
 	 */
 	@Override
-	public Object getImage(Object object)
-	{
+	public Object getImage(Object object) {
 		return overlayImage(object, getResourceLocator().getImage("full/obj16/DomainModelReferenceSelector")); //$NON-NLS-1$
 	}
 
@@ -126,8 +119,7 @@
 	 * @generated
 	 */
 	@Override
-	public String getText(Object object)
-	{
+	public String getText(Object object) {
 		return getString("_UI_DomainModelReferenceSelector_type"); //$NON-NLS-1$
 	}
 
@@ -140,12 +132,10 @@
 	 * @generated
 	 */
 	@Override
-	public void notifyChanged(Notification notification)
-	{
+	public void notifyChanged(Notification notification) {
 		updateChildren(notification);
 
-		switch (notification.getFeatureID(VTDomainModelReferenceSelector.class))
-		{
+		switch (notification.getFeatureID(VTDomainModelReferenceSelector.class)) {
 		case VTDomainmodelreferencePackage.DOMAIN_MODEL_REFERENCE_SELECTOR__DOMAIN_MODEL_REFERENCE:
 			fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
 			return;
@@ -162,14 +152,12 @@
 	 * @generated
 	 */
 	@Override
-	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object)
-	{
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
 		super.collectNewChildDescriptors(newChildDescriptors, object);
 
-		newChildDescriptors.add
-			(createChildParameter
-			(VTDomainmodelreferencePackage.Literals.DOMAIN_MODEL_REFERENCE_SELECTOR__DOMAIN_MODEL_REFERENCE,
-				VViewFactory.eINSTANCE.createFeaturePathDomainModelReference()));
+		newChildDescriptors.add(createChildParameter(
+			VTDomainmodelreferencePackage.Literals.DOMAIN_MODEL_REFERENCE_SELECTOR__DOMAIN_MODEL_REFERENCE,
+			VViewFactory.eINSTANCE.createFeaturePathDomainModelReference()));
 	}
 
 	/**
@@ -180,8 +168,7 @@
 	 * @generated
 	 */
 	@Override
-	public ResourceLocator getResourceLocator()
-	{
+	public ResourceLocator getResourceLocator() {
 		return ((IChildCreationExtender) adapterFactory).getResourceLocator();
 	}
 
diff --git a/bundles/org.eclipse.emf.ecp.view.template.model.edit/src/org/eclipse/emf/ecp/view/template/selector/domainmodelreference/model/provider/DomainmodelreferenceItemProviderAdapterFactory.java b/bundles/org.eclipse.emf.ecp.view.template.model.edit/src/org/eclipse/emf/ecp/view/template/selector/domainmodelreference/model/provider/DomainmodelreferenceItemProviderAdapterFactory.java
index fca7c8d..a8db822 100644
--- a/bundles/org.eclipse.emf.ecp.view.template.model.edit/src/org/eclipse/emf/ecp/view/template/selector/domainmodelreference/model/provider/DomainmodelreferenceItemProviderAdapterFactory.java
+++ b/bundles/org.eclipse.emf.ecp.view.template.model.edit/src/org/eclipse/emf/ecp/view/template/selector/domainmodelreference/model/provider/DomainmodelreferenceItemProviderAdapterFactory.java
@@ -20,7 +20,8 @@
 import org.eclipse.emf.common.notify.Notifier;
 import org.eclipse.emf.common.util.ResourceLocator;
 import org.eclipse.emf.ecore.EObject;
-import org.eclipse.emf.ecp.view.template.model.VTStyle;
+import org.eclipse.emf.ecp.view.template.model.VTMultiStyleSelectorContainer;
+import org.eclipse.emf.ecp.view.template.model.VTStyleSelectorContainer;
 import org.eclipse.emf.ecp.view.template.model.VTTemplatePackage;
 import org.eclipse.emf.ecp.view.template.model.util.TemplateSwitch;
 import org.eclipse.emf.ecp.view.template.selector.domainmodelreference.model.VTDomainmodelreferenceFactory;
@@ -54,8 +55,7 @@
  * @generated
  */
 public class DomainmodelreferenceItemProviderAdapterFactory extends DomainmodelreferenceAdapterFactory implements
-	ComposeableAdapterFactory, IChangeNotifier, IDisposable, IChildCreationExtender
-{
+	ComposeableAdapterFactory, IChangeNotifier, IDisposable, IChildCreationExtender {
 	/**
 	 * This keeps track of the root adapter factory that delegates to this adapter factory.
 	 * <!-- begin-user-doc -->
@@ -100,8 +100,7 @@
 	 *
 	 * @generated
 	 */
-	public DomainmodelreferenceItemProviderAdapterFactory()
-	{
+	public DomainmodelreferenceItemProviderAdapterFactory() {
 		supportedTypes.add(IEditingDomainItemProvider.class);
 		supportedTypes.add(IStructuredItemContentProvider.class);
 		supportedTypes.add(ITreeItemContentProvider.class);
@@ -129,10 +128,8 @@
 	 * @generated
 	 */
 	@Override
-	public Adapter createDomainModelReferenceSelectorAdapter()
-	{
-		if (domainModelReferenceSelectorItemProvider == null)
-		{
+	public Adapter createDomainModelReferenceSelectorAdapter() {
+		if (domainModelReferenceSelectorItemProvider == null) {
 			domainModelReferenceSelectorItemProvider = new DomainModelReferenceSelectorItemProvider(this);
 		}
 
@@ -147,8 +144,7 @@
 	 * @generated
 	 */
 	@Override
-	public ComposeableAdapterFactory getRootAdapterFactory()
-	{
+	public ComposeableAdapterFactory getRootAdapterFactory() {
 		return parentAdapterFactory == null ? this : parentAdapterFactory.getRootAdapterFactory();
 	}
 
@@ -160,8 +156,7 @@
 	 * @generated
 	 */
 	@Override
-	public void setParentAdapterFactory(ComposedAdapterFactory parentAdapterFactory)
-	{
+	public void setParentAdapterFactory(ComposedAdapterFactory parentAdapterFactory) {
 		this.parentAdapterFactory = parentAdapterFactory;
 	}
 
@@ -172,8 +167,7 @@
 	 * @generated
 	 */
 	@Override
-	public boolean isFactoryForType(Object type)
-	{
+	public boolean isFactoryForType(Object type) {
 		return supportedTypes.contains(type) || super.isFactoryForType(type);
 	}
 
@@ -185,8 +179,7 @@
 	 * @generated
 	 */
 	@Override
-	public Adapter adapt(Notifier notifier, Object type)
-	{
+	public Adapter adapt(Notifier notifier, Object type) {
 		return super.adapt(notifier, this);
 	}
 
@@ -197,13 +190,10 @@
 	 * @generated
 	 */
 	@Override
-	public Object adapt(Object object, Object type)
-	{
-		if (isFactoryForType(type))
-		{
+	public Object adapt(Object object, Object type) {
+		if (isFactoryForType(type)) {
 			final Object adapter = super.adapt(object, type);
-			if (!(type instanceof Class<?>) || ((Class<?>) type).isInstance(adapter))
-			{
+			if (!(type instanceof Class<?>) || ((Class<?>) type).isInstance(adapter)) {
 				return adapter;
 			}
 		}
@@ -217,8 +207,7 @@
 	 *
 	 * @generated
 	 */
-	public List<IChildCreationExtender> getChildCreationExtenders()
-	{
+	public List<IChildCreationExtender> getChildCreationExtenders() {
 		return childCreationExtenderManager.getChildCreationExtenders();
 	}
 
@@ -229,8 +218,7 @@
 	 * @generated
 	 */
 	@Override
-	public Collection<?> getNewChildDescriptors(Object object, EditingDomain editingDomain)
-	{
+	public Collection<?> getNewChildDescriptors(Object object, EditingDomain editingDomain) {
 		return childCreationExtenderManager.getNewChildDescriptors(object, editingDomain);
 	}
 
@@ -241,8 +229,7 @@
 	 * @generated
 	 */
 	@Override
-	public ResourceLocator getResourceLocator()
-	{
+	public ResourceLocator getResourceLocator() {
 		return childCreationExtenderManager;
 	}
 
@@ -254,8 +241,7 @@
 	 * @generated
 	 */
 	@Override
-	public void addListener(INotifyChangedListener notifyChangedListener)
-	{
+	public void addListener(INotifyChangedListener notifyChangedListener) {
 		changeNotifier.addListener(notifyChangedListener);
 	}
 
@@ -267,8 +253,7 @@
 	 * @generated
 	 */
 	@Override
-	public void removeListener(INotifyChangedListener notifyChangedListener)
-	{
+	public void removeListener(INotifyChangedListener notifyChangedListener) {
 		changeNotifier.removeListener(notifyChangedListener);
 	}
 
@@ -280,12 +265,10 @@
 	 * @generated
 	 */
 	@Override
-	public void fireNotifyChanged(Notification notification)
-	{
+	public void fireNotifyChanged(Notification notification) {
 		changeNotifier.fireNotifyChanged(notification);
 
-		if (parentAdapterFactory != null)
-		{
+		if (parentAdapterFactory != null) {
 			parentAdapterFactory.fireNotifyChanged(notification);
 		}
 	}
@@ -298,8 +281,7 @@
 	 * @generated
 	 */
 	@Override
-	public void dispose()
-	{
+	public void dispose() {
 		if (domainModelReferenceSelectorItemProvider != null) {
 			domainModelReferenceSelectorItemProvider.dispose();
 		}
@@ -312,8 +294,7 @@
 	 *
 	 * @generated
 	 */
-	public static class TemplateChildCreationExtender implements IChildCreationExtender
-	{
+	public static class TemplateChildCreationExtender implements IChildCreationExtender {
 		/**
 		 * The switch for creating child descriptors specific to each extended class.
 		 * <!-- begin-user-doc -->
@@ -321,8 +302,7 @@
 		 *
 		 * @generated
 		 */
-		protected static class CreationSwitch extends TemplateSwitch<Object>
-		{
+		protected static class CreationSwitch extends TemplateSwitch<Object> {
 			/**
 			 * The child descriptors being populated.
 			 * <!-- begin-user-doc -->
@@ -348,8 +328,7 @@
 			 *
 			 * @generated
 			 */
-			CreationSwitch(List<Object> newChildDescriptors, EditingDomain editingDomain)
-			{
+			CreationSwitch(List<Object> newChildDescriptors, EditingDomain editingDomain) {
 				this.newChildDescriptors = newChildDescriptors;
 				this.editingDomain = editingDomain;
 			}
@@ -361,11 +340,9 @@
 			 * @generated
 			 */
 			@Override
-			public Object caseStyle(VTStyle object)
-			{
-				newChildDescriptors.add
-					(createChildParameter
-					(VTTemplatePackage.Literals.STYLE__SELECTOR,
+			public Object caseStyleSelectorContainer(VTStyleSelectorContainer object) {
+				newChildDescriptors
+					.add(createChildParameter(VTTemplatePackage.Literals.STYLE_SELECTOR_CONTAINER__SELECTOR,
 						VTDomainmodelreferenceFactory.eINSTANCE.createDomainModelReferenceSelector()));
 
 				return null;
@@ -377,8 +354,22 @@
 			 *
 			 * @generated
 			 */
-			protected CommandParameter createChildParameter(Object feature, Object child)
-			{
+			@Override
+			public Object caseMultiStyleSelectorContainer(VTMultiStyleSelectorContainer object) {
+				newChildDescriptors
+					.add(createChildParameter(VTTemplatePackage.Literals.MULTI_STYLE_SELECTOR_CONTAINER__SELECTORS,
+						VTDomainmodelreferenceFactory.eINSTANCE.createDomainModelReferenceSelector()));
+
+				return null;
+			}
+
+			/**
+			 * <!-- begin-user-doc -->
+			 * <!-- end-user-doc -->
+			 *
+			 * @generated
+			 */
+			protected CommandParameter createChildParameter(Object feature, Object child) {
 				return new CommandParameter(null, feature, child);
 			}
 
@@ -391,8 +382,7 @@
 		 * @generated
 		 */
 		@Override
-		public Collection<Object> getNewChildDescriptors(Object object, EditingDomain editingDomain)
-		{
+		public Collection<Object> getNewChildDescriptors(Object object, EditingDomain editingDomain) {
 			final ArrayList<Object> result = new ArrayList<Object>();
 			new CreationSwitch(result, editingDomain).doSwitch((EObject) object);
 			return result;
@@ -405,8 +395,7 @@
 		 * @generated
 		 */
 		@Override
-		public ResourceLocator getResourceLocator()
-		{
+		public ResourceLocator getResourceLocator() {
 			return DomainModelReferenceSelectorEditPlugin.INSTANCE;
 		}
 	}
diff --git a/bundles/org.eclipse.emf.ecp.view.template.model.edit/src/org/eclipse/emf/ecp/view/template/selector/hierarchy/model/provider/HierarchyItemProviderAdapterFactory.java b/bundles/org.eclipse.emf.ecp.view.template.model.edit/src/org/eclipse/emf/ecp/view/template/selector/hierarchy/model/provider/HierarchyItemProviderAdapterFactory.java
new file mode 100644
index 0000000..775bfa0
--- /dev/null
+++ b/bundles/org.eclipse.emf.ecp.view.template.model.edit/src/org/eclipse/emf/ecp/view/template/selector/hierarchy/model/provider/HierarchyItemProviderAdapterFactory.java
@@ -0,0 +1,402 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * Johannes Faltermeier - initial API and implementation
+ */
+package org.eclipse.emf.ecp.view.template.selector.hierarchy.model.provider;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.Notifier;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecp.view.template.model.VTMultiStyleSelectorContainer;
+import org.eclipse.emf.ecp.view.template.model.VTStyleSelectorContainer;
+import org.eclipse.emf.ecp.view.template.model.VTTemplatePackage;
+import org.eclipse.emf.ecp.view.template.model.util.TemplateSwitch;
+import org.eclipse.emf.ecp.view.template.selector.hierarchy.model.VTHierarchyFactory;
+import org.eclipse.emf.ecp.view.template.selector.hierarchy.model.VTHierarchyPackage;
+import org.eclipse.emf.ecp.view.template.selector.hierarchy.model.util.HierarchyAdapterFactory;
+import org.eclipse.emf.edit.command.CommandParameter;
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.emf.edit.provider.ChangeNotifier;
+import org.eclipse.emf.edit.provider.ChildCreationExtenderManager;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
+import org.eclipse.emf.edit.provider.IChangeNotifier;
+import org.eclipse.emf.edit.provider.IChildCreationExtender;
+import org.eclipse.emf.edit.provider.IDisposable;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.INotifyChangedListener;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+/**
+ * This is the factory that is used to provide the interfaces needed to support Viewers.
+ * The adapters generated by this factory convert EMF adapter notifications into calls to {@link #fireNotifyChanged
+ * fireNotifyChanged}.
+ * The adapters also support Eclipse property sheets.
+ * Note that most of the adapters are shared among multiple instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class HierarchyItemProviderAdapterFactory extends HierarchyAdapterFactory
+	implements ComposeableAdapterFactory, IChangeNotifier, IDisposable, IChildCreationExtender {
+	/**
+	 * This keeps track of the root adapter factory that delegates to this adapter factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected ComposedAdapterFactory parentAdapterFactory;
+
+	/**
+	 * This is used to implement {@link org.eclipse.emf.edit.provider.IChangeNotifier}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected IChangeNotifier changeNotifier = new ChangeNotifier();
+
+	/**
+	 * This helps manage the child creation extenders.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected ChildCreationExtenderManager childCreationExtenderManager = new ChildCreationExtenderManager(
+		HierarchySelectorEditPlugin.INSTANCE, VTHierarchyPackage.eNS_URI);
+
+	/**
+	 * This keeps track of all the supported types checked by {@link #isFactoryForType isFactoryForType}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected Collection<Object> supportedTypes = new ArrayList<Object>();
+
+	/**
+	 * This constructs an instance.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public HierarchyItemProviderAdapterFactory() {
+		supportedTypes.add(IEditingDomainItemProvider.class);
+		supportedTypes.add(IStructuredItemContentProvider.class);
+		supportedTypes.add(ITreeItemContentProvider.class);
+		supportedTypes.add(IItemLabelProvider.class);
+		supportedTypes.add(IItemPropertySource.class);
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all
+	 * {@link org.eclipse.emf.ecp.view.template.selector.hierarchy.model.VTHierarchySelector} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected HierarchySelectorItemProvider hierarchySelectorItemProvider;
+
+	/**
+	 * This creates an adapter for a
+	 * {@link org.eclipse.emf.ecp.view.template.selector.hierarchy.model.VTHierarchySelector}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Adapter createHierarchySelectorAdapter() {
+		if (hierarchySelectorItemProvider == null) {
+			hierarchySelectorItemProvider = new HierarchySelectorItemProvider(this);
+		}
+
+		return hierarchySelectorItemProvider;
+	}
+
+	/**
+	 * This returns the root adapter factory that contains this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public ComposeableAdapterFactory getRootAdapterFactory() {
+		return parentAdapterFactory == null ? this : parentAdapterFactory.getRootAdapterFactory();
+	}
+
+	/**
+	 * This sets the composed adapter factory that contains this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setParentAdapterFactory(ComposedAdapterFactory parentAdapterFactory) {
+		this.parentAdapterFactory = parentAdapterFactory;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public boolean isFactoryForType(Object type) {
+		return supportedTypes.contains(type) || super.isFactoryForType(type);
+	}
+
+	/**
+	 * This implementation substitutes the factory itself as the key for the adapter.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Adapter adapt(Notifier notifier, Object type) {
+		return super.adapt(notifier, this);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object adapt(Object object, Object type) {
+		if (isFactoryForType(type)) {
+			final Object adapter = super.adapt(object, type);
+			if (!(type instanceof Class<?>) || ((Class<?>) type).isInstance(adapter)) {
+				return adapter;
+			}
+		}
+
+		return null;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public List<IChildCreationExtender> getChildCreationExtenders() {
+		return childCreationExtenderManager.getChildCreationExtenders();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Collection<?> getNewChildDescriptors(Object object, EditingDomain editingDomain) {
+		return childCreationExtenderManager.getNewChildDescriptors(object, editingDomain);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return childCreationExtenderManager;
+	}
+
+	/**
+	 * This adds a listener.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void addListener(INotifyChangedListener notifyChangedListener) {
+		changeNotifier.addListener(notifyChangedListener);
+	}
+
+	/**
+	 * This removes a listener.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void removeListener(INotifyChangedListener notifyChangedListener) {
+		changeNotifier.removeListener(notifyChangedListener);
+	}
+
+	/**
+	 * This delegates to {@link #changeNotifier} and to {@link #parentAdapterFactory}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void fireNotifyChanged(Notification notification) {
+		changeNotifier.fireNotifyChanged(notification);
+
+		if (parentAdapterFactory != null) {
+			parentAdapterFactory.fireNotifyChanged(notification);
+		}
+	}
+
+	/**
+	 * This disposes all of the item providers created by this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void dispose() {
+		if (hierarchySelectorItemProvider != null) {
+			hierarchySelectorItemProvider.dispose();
+		}
+	}
+
+	/**
+	 * A child creation extender for the {@link VTTemplatePackage}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public static class TemplateChildCreationExtender implements IChildCreationExtender {
+		/**
+		 * The switch for creating child descriptors specific to each extended class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		protected static class CreationSwitch extends TemplateSwitch<Object> {
+			/**
+			 * The child descriptors being populated.
+			 * <!-- begin-user-doc -->
+			 * <!-- end-user-doc -->
+			 *
+			 * @generated
+			 */
+			protected List<Object> newChildDescriptors;
+
+			/**
+			 * The domain in which to create the children.
+			 * <!-- begin-user-doc -->
+			 * <!-- end-user-doc -->
+			 *
+			 * @generated
+			 */
+			protected EditingDomain editingDomain;
+
+			/**
+			 * Creates the a switch for populating child descriptors in the given domain.
+			 * <!-- begin-user-doc -->
+			 * <!-- end-user-doc -->
+			 *
+			 * @generated
+			 */
+			CreationSwitch(List<Object> newChildDescriptors, EditingDomain editingDomain) {
+				this.newChildDescriptors = newChildDescriptors;
+				this.editingDomain = editingDomain;
+			}
+
+			/**
+			 * <!-- begin-user-doc -->
+			 * <!-- end-user-doc -->
+			 *
+			 * @generated
+			 */
+			@Override
+			public Object caseStyleSelectorContainer(VTStyleSelectorContainer object) {
+				newChildDescriptors
+					.add(createChildParameter(VTTemplatePackage.Literals.STYLE_SELECTOR_CONTAINER__SELECTOR,
+						VTHierarchyFactory.eINSTANCE.createHierarchySelector()));
+
+				return null;
+			}
+
+			/**
+			 * <!-- begin-user-doc -->
+			 * <!-- end-user-doc -->
+			 *
+			 * @generated
+			 */
+			@Override
+			public Object caseMultiStyleSelectorContainer(VTMultiStyleSelectorContainer object) {
+				newChildDescriptors
+					.add(createChildParameter(VTTemplatePackage.Literals.MULTI_STYLE_SELECTOR_CONTAINER__SELECTORS,
+						VTHierarchyFactory.eINSTANCE.createHierarchySelector()));
+
+				return null;
+			}
+
+			/**
+			 * <!-- begin-user-doc -->
+			 * <!-- end-user-doc -->
+			 *
+			 * @generated
+			 */
+			protected CommandParameter createChildParameter(Object feature, Object child) {
+				return new CommandParameter(null, feature, child);
+			}
+
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		@Override
+		public Collection<Object> getNewChildDescriptors(Object object, EditingDomain editingDomain) {
+			final ArrayList<Object> result = new ArrayList<Object>();
+			new CreationSwitch(result, editingDomain).doSwitch((EObject) object);
+			return result;
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		@Override
+		public ResourceLocator getResourceLocator() {
+			return HierarchySelectorEditPlugin.INSTANCE;
+		}
+	}
+
+}
diff --git a/bundles/org.eclipse.emf.ecp.view.template.model.edit/src/org/eclipse/emf/ecp/view/template/selector/hierarchy/model/provider/HierarchySelectorEditPlugin.java b/bundles/org.eclipse.emf.ecp.view.template.model.edit/src/org/eclipse/emf/ecp/view/template/selector/hierarchy/model/provider/HierarchySelectorEditPlugin.java
new file mode 100644
index 0000000..e17c94d
--- /dev/null
+++ b/bundles/org.eclipse.emf.ecp.view.template.model.edit/src/org/eclipse/emf/ecp/view/template/selector/hierarchy/model/provider/HierarchySelectorEditPlugin.java
@@ -0,0 +1,106 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * Johannes Faltermeier - initial API and implementation
+ */
+package org.eclipse.emf.ecp.view.template.selector.hierarchy.model.provider;
+
+import org.eclipse.emf.common.EMFPlugin;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.ecp.view.template.model.provider.TemplateEditPlugin;
+
+/**
+ * This is the central singleton for the HierarchySelector edit plugin.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public final class HierarchySelectorEditPlugin extends EMFPlugin {
+	/**
+	 * Keep track of the singleton.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public static final HierarchySelectorEditPlugin INSTANCE = new HierarchySelectorEditPlugin();
+
+	/**
+	 * Keep track of the singleton.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private static Implementation plugin;
+
+	/**
+	 * Create the instance.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public HierarchySelectorEditPlugin() {
+		super(new ResourceLocator[] {
+			TemplateEditPlugin.INSTANCE,
+		});
+	}
+
+	/**
+	 * Returns the singleton instance of the Eclipse plugin.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the singleton instance.
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getPluginResourceLocator() {
+		return plugin;
+	}
+
+	/**
+	 * Returns the singleton instance of the Eclipse plugin.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the singleton instance.
+	 * @generated
+	 */
+	public static Implementation getPlugin() {
+		return plugin;
+	}
+
+	/**
+	 * The actual implementation of the Eclipse <b>Plugin</b>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public static class Implementation extends EclipsePlugin {
+		/**
+		 * Creates an instance.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		public Implementation() {
+			super();
+
+			// Remember the static instance.
+			//
+			plugin = this;
+		}
+	}
+
+}
diff --git a/bundles/org.eclipse.emf.ecp.view.template.model.edit/src/org/eclipse/emf/ecp/view/template/selector/hierarchy/model/provider/HierarchySelectorItemProvider.java b/bundles/org.eclipse.emf.ecp.view.template.model.edit/src/org/eclipse/emf/ecp/view/template/selector/hierarchy/model/provider/HierarchySelectorItemProvider.java
new file mode 100644
index 0000000..bcdff39
--- /dev/null
+++ b/bundles/org.eclipse.emf.ecp.view.template.model.edit/src/org/eclipse/emf/ecp/view/template/selector/hierarchy/model/provider/HierarchySelectorItemProvider.java
@@ -0,0 +1,115 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * Johannes Faltermeier - initial API and implementation
+ */
+package org.eclipse.emf.ecp.view.template.selector.hierarchy.model.provider;
+
+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.ecp.view.template.model.VTTemplatePackage;
+import org.eclipse.emf.ecp.view.template.model.provider.StyleSelectorContainerItemProvider;
+import org.eclipse.emf.ecp.view.template.selector.hierarchy.model.VTHierarchyFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+
+/**
+ * This is the item provider adapter for a
+ * {@link org.eclipse.emf.ecp.view.template.selector.hierarchy.model.VTHierarchySelector} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class HierarchySelectorItemProvider
+	extends StyleSelectorContainerItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public HierarchySelectorItemProvider(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 HierarchySelector.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/HierarchySelector.png")); //$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 getString("_UI_HierarchySelector_type"); //$NON-NLS-1$
+	}
+
+	/**
+	 * 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);
+
+		newChildDescriptors.add(createChildParameter(VTTemplatePackage.Literals.STYLE_SELECTOR_CONTAINER__SELECTOR,
+			VTHierarchyFactory.eINSTANCE.createHierarchySelector()));
+	}
+
+}
diff --git a/bundles/org.eclipse.emf.ecp.view.template.model.edit/src/org/eclipse/emf/ecp/view/template/selector/viewModelElement/model/provider/ViewModelElementItemProviderAdapterFactory.java b/bundles/org.eclipse.emf.ecp.view.template.model.edit/src/org/eclipse/emf/ecp/view/template/selector/viewModelElement/model/provider/ViewModelElementItemProviderAdapterFactory.java
index 9c27d3c..576dc18 100644
--- a/bundles/org.eclipse.emf.ecp.view.template.model.edit/src/org/eclipse/emf/ecp/view/template/selector/viewModelElement/model/provider/ViewModelElementItemProviderAdapterFactory.java
+++ b/bundles/org.eclipse.emf.ecp.view.template.model.edit/src/org/eclipse/emf/ecp/view/template/selector/viewModelElement/model/provider/ViewModelElementItemProviderAdapterFactory.java
@@ -20,7 +20,8 @@
 import org.eclipse.emf.common.notify.Notifier;
 import org.eclipse.emf.common.util.ResourceLocator;
 import org.eclipse.emf.ecore.EObject;
-import org.eclipse.emf.ecp.view.template.model.VTStyle;
+import org.eclipse.emf.ecp.view.template.model.VTMultiStyleSelectorContainer;
+import org.eclipse.emf.ecp.view.template.model.VTStyleSelectorContainer;
 import org.eclipse.emf.ecp.view.template.model.VTTemplatePackage;
 import org.eclipse.emf.ecp.view.template.model.util.TemplateSwitch;
 import org.eclipse.emf.ecp.view.template.selector.viewModelElement.model.VTViewModelElementFactory;
@@ -127,8 +128,7 @@
 	 */
 	@Override
 	public Adapter createViewModelElementSelectorAdapter() {
-		if (viewModelElementSelectorItemProvider == null)
-		{
+		if (viewModelElementSelectorItemProvider == null) {
 			viewModelElementSelectorItemProvider = new ViewModelElementSelectorItemProvider(this);
 		}
 
@@ -190,11 +190,9 @@
 	 */
 	@Override
 	public Object adapt(Object object, Object type) {
-		if (isFactoryForType(type))
-		{
+		if (isFactoryForType(type)) {
 			final Object adapter = super.adapt(object, type);
-			if (!(type instanceof Class<?>) || ((Class<?>) type).isInstance(adapter))
-			{
+			if (!(type instanceof Class<?>) || ((Class<?>) type).isInstance(adapter)) {
 				return adapter;
 			}
 		}
@@ -269,8 +267,7 @@
 	public void fireNotifyChanged(Notification notification) {
 		changeNotifier.fireNotifyChanged(notification);
 
-		if (parentAdapterFactory != null)
-		{
+		if (parentAdapterFactory != null) {
 			parentAdapterFactory.fireNotifyChanged(notification);
 		}
 	}
@@ -342,10 +339,24 @@
 			 * @generated
 			 */
 			@Override
-			public Object caseStyle(VTStyle object) {
-				newChildDescriptors.add
-					(createChildParameter
-					(VTTemplatePackage.Literals.STYLE__SELECTOR,
+			public Object caseStyleSelectorContainer(VTStyleSelectorContainer object) {
+				newChildDescriptors
+					.add(createChildParameter(VTTemplatePackage.Literals.STYLE_SELECTOR_CONTAINER__SELECTOR,
+						VTViewModelElementFactory.eINSTANCE.createViewModelElementSelector()));
+
+				return null;
+			}
+
+			/**
+			 * <!-- begin-user-doc -->
+			 * <!-- end-user-doc -->
+			 *
+			 * @generated
+			 */
+			@Override
+			public Object caseMultiStyleSelectorContainer(VTMultiStyleSelectorContainer object) {
+				newChildDescriptors
+					.add(createChildParameter(VTTemplatePackage.Literals.MULTI_STYLE_SELECTOR_CONTAINER__SELECTORS,
 						VTViewModelElementFactory.eINSTANCE.createViewModelElementSelector()));
 
 				return null;
diff --git a/bundles/org.eclipse.emf.ecp.view.template.model.edit/src/org/eclipse/emf/ecp/view/template/selector/viewModelElement/model/provider/ViewModelElementSelectorEditPlugin.java b/bundles/org.eclipse.emf.ecp.view.template.model.edit/src/org/eclipse/emf/ecp/view/template/selector/viewModelElement/model/provider/ViewModelElementSelectorEditPlugin.java
index f9d05fe..c605488 100644
--- a/bundles/org.eclipse.emf.ecp.view.template.model.edit/src/org/eclipse/emf/ecp/view/template/selector/viewModelElement/model/provider/ViewModelElementSelectorEditPlugin.java
+++ b/bundles/org.eclipse.emf.ecp.view.template.model.edit/src/org/eclipse/emf/ecp/view/template/selector/viewModelElement/model/provider/ViewModelElementSelectorEditPlugin.java
@@ -50,8 +50,7 @@
 	 * @generated
 	 */
 	public ViewModelElementSelectorEditPlugin() {
-		super(new ResourceLocator[]
-		{
+		super(new ResourceLocator[] {
 			EcoreEditPlugin.INSTANCE,
 			TemplateEditPlugin.INSTANCE,
 		});
diff --git a/bundles/org.eclipse.emf.ecp.view.template.model.edit/src/org/eclipse/emf/ecp/view/template/selector/viewModelElement/model/provider/ViewModelElementSelectorItemProvider.java b/bundles/org.eclipse.emf.ecp.view.template.model.edit/src/org/eclipse/emf/ecp/view/template/selector/viewModelElement/model/provider/ViewModelElementSelectorItemProvider.java
index c6416a7..cbe32b4 100644
--- a/bundles/org.eclipse.emf.ecp.view.template.model.edit/src/org/eclipse/emf/ecp/view/template/selector/viewModelElement/model/provider/ViewModelElementSelectorItemProvider.java
+++ b/bundles/org.eclipse.emf.ecp.view.template.model.edit/src/org/eclipse/emf/ecp/view/template/selector/viewModelElement/model/provider/ViewModelElementSelectorItemProvider.java
@@ -67,8 +67,7 @@
 	 */
 	@Override
 	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
-		if (itemPropertyDescriptors == null)
-		{
+		if (itemPropertyDescriptors == null) {
 			super.getPropertyDescriptors(object);
 
 			addSelectSubclassesPropertyDescriptor(object);
@@ -88,13 +87,11 @@
 	 */
 	protected void addClassTypePropertyDescriptor(Object object) {
 		itemPropertyDescriptors
-			.add
-			(createItemPropertyDescriptor
-			(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+			.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
 				getResourceLocator(),
 				getString("_UI_ViewModelElementSelector_classType_feature"), //$NON-NLS-1$
-				getString(
-					"_UI_PropertyDescriptor_description", "_UI_ViewModelElementSelector_classType_feature", "_UI_ViewModelElementSelector_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				getString("_UI_PropertyDescriptor_description", "_UI_ViewModelElementSelector_classType_feature", //$NON-NLS-1$ //$NON-NLS-2$
+					"_UI_ViewModelElementSelector_type"), //$NON-NLS-1$
 				VTViewModelElementPackage.Literals.VIEW_MODEL_ELEMENT_SELECTOR__CLASS_TYPE,
 				true,
 				false,
@@ -111,16 +108,13 @@
 	 *
 	 * @generated
 	 */
-	protected void addAttributePropertyDescriptor(Object object)
-	{
+	protected void addAttributePropertyDescriptor(Object object) {
 		itemPropertyDescriptors
-			.add
-			(createItemPropertyDescriptor
-			(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+			.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
 				getResourceLocator(),
 				getString("_UI_ViewModelElementSelector_attribute_feature"), //$NON-NLS-1$
-				getString(
-					"_UI_PropertyDescriptor_description", "_UI_ViewModelElementSelector_attribute_feature", "_UI_ViewModelElementSelector_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				getString("_UI_PropertyDescriptor_description", "_UI_ViewModelElementSelector_attribute_feature", //$NON-NLS-1$ //$NON-NLS-2$
+					"_UI_ViewModelElementSelector_type"), //$NON-NLS-1$
 				VTViewModelElementPackage.Literals.VIEW_MODEL_ELEMENT_SELECTOR__ATTRIBUTE,
 				true,
 				false,
@@ -137,16 +131,13 @@
 	 *
 	 * @generated
 	 */
-	protected void addAttributeValuePropertyDescriptor(Object object)
-	{
+	protected void addAttributeValuePropertyDescriptor(Object object) {
 		itemPropertyDescriptors
-			.add
-			(createItemPropertyDescriptor
-			(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+			.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
 				getResourceLocator(),
 				getString("_UI_ViewModelElementSelector_attributeValue_feature"), //$NON-NLS-1$
-				getString(
-					"_UI_PropertyDescriptor_description", "_UI_ViewModelElementSelector_attributeValue_feature", "_UI_ViewModelElementSelector_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				getString("_UI_PropertyDescriptor_description", "_UI_ViewModelElementSelector_attributeValue_feature", //$NON-NLS-1$ //$NON-NLS-2$
+					"_UI_ViewModelElementSelector_type"), //$NON-NLS-1$
 				VTViewModelElementPackage.Literals.VIEW_MODEL_ELEMENT_SELECTOR__ATTRIBUTE_VALUE,
 				true,
 				false,
@@ -165,13 +156,11 @@
 	 */
 	protected void addSelectSubclassesPropertyDescriptor(Object object) {
 		itemPropertyDescriptors
-			.add
-			(createItemPropertyDescriptor
-			(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+			.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
 				getResourceLocator(),
 				getString("_UI_ViewModelElementSelector_selectSubclasses_feature"), //$NON-NLS-1$
-				getString(
-					"_UI_PropertyDescriptor_description", "_UI_ViewModelElementSelector_selectSubclasses_feature", "_UI_ViewModelElementSelector_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				getString("_UI_PropertyDescriptor_description", "_UI_ViewModelElementSelector_selectSubclasses_feature", //$NON-NLS-1$ //$NON-NLS-2$
+					"_UI_ViewModelElementSelector_type"), //$NON-NLS-1$
 				VTViewModelElementPackage.Literals.VIEW_MODEL_ELEMENT_SELECTOR__SELECT_SUBCLASSES,
 				true,
 				false,
@@ -218,8 +207,7 @@
 	public void notifyChanged(Notification notification) {
 		updateChildren(notification);
 
-		switch (notification.getFeatureID(VTViewModelElementSelector.class))
-		{
+		switch (notification.getFeatureID(VTViewModelElementSelector.class)) {
 		case VTViewModelElementPackage.VIEW_MODEL_ELEMENT_SELECTOR__SELECT_SUBCLASSES:
 		case VTViewModelElementPackage.VIEW_MODEL_ELEMENT_SELECTOR__CLASS_TYPE:
 		case VTViewModelElementPackage.VIEW_MODEL_ELEMENT_SELECTOR__ATTRIBUTE_VALUE:
diff --git a/bundles/org.eclipse.emf.ecp.view.template.model.edit/src/org/eclipse/emf/ecp/view/template/style/wrap/model/provider/LabelWrapStylePropertyItemProvider.java b/bundles/org.eclipse.emf.ecp.view.template.model.edit/src/org/eclipse/emf/ecp/view/template/style/wrap/model/provider/LabelWrapStylePropertyItemProvider.java
new file mode 100644
index 0000000..c1e6adf
--- /dev/null
+++ b/bundles/org.eclipse.emf.ecp.view.template.model.edit/src/org/eclipse/emf/ecp/view/template/style/wrap/model/provider/LabelWrapStylePropertyItemProvider.java
@@ -0,0 +1,171 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * Johannes Faltermeier - initial API and implementation
+ */
+package org.eclipse.emf.ecp.view.template.style.wrap.model.provider;
+
+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.common.util.ResourceLocator;
+import org.eclipse.emf.ecp.view.template.style.wrap.model.VTLabelWrapStyleProperty;
+import org.eclipse.emf.ecp.view.template.style.wrap.model.VTWrapPackage;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IChildCreationExtender;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a
+ * {@link org.eclipse.emf.ecp.view.template.style.wrap.model.VTLabelWrapStyleProperty} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class LabelWrapStylePropertyItemProvider
+	extends ItemProviderAdapter
+	implements
+	IEditingDomainItemProvider,
+	IStructuredItemContentProvider,
+	ITreeItemContentProvider,
+	IItemLabelProvider,
+	IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public LabelWrapStylePropertyItemProvider(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);
+
+			addWrapLabelPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Wrap Label feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void addWrapLabelPropertyDescriptor(Object object) {
+		itemPropertyDescriptors
+			.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+				getResourceLocator(),
+				getString("_UI_LabelWrapStyleProperty_wrapLabel_feature"), //$NON-NLS-1$
+				getString("_UI_PropertyDescriptor_description", "_UI_LabelWrapStyleProperty_wrapLabel_feature", //$NON-NLS-1$ //$NON-NLS-2$
+					"_UI_LabelWrapStyleProperty_type"), //$NON-NLS-1$
+				VTWrapPackage.Literals.LABEL_WRAP_STYLE_PROPERTY__WRAP_LABEL,
+				true,
+				false,
+				false,
+				ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+				null,
+				null));
+	}
+
+	/**
+	 * This returns LabelWrapStyleProperty.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/LabelWrapStyleProperty.png")); //$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) {
+		final VTLabelWrapStyleProperty labelWrapStyleProperty = (VTLabelWrapStyleProperty) object;
+		return getString("_UI_LabelWrapStyleProperty_type") + " " + labelWrapStyleProperty.isWrapLabel(); //$NON-NLS-1$ //$NON-NLS-2$
+	}
+
+	/**
+	 * 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);
+
+		switch (notification.getFeatureID(VTLabelWrapStyleProperty.class)) {
+		case VTWrapPackage.LABEL_WRAP_STYLE_PROPERTY__WRAP_LABEL:
+			fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+			return;
+		}
+		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);
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return ((IChildCreationExtender) adapterFactory).getResourceLocator();
+	}
+
+}
diff --git a/bundles/org.eclipse.emf.ecp.view.template.model.edit/src/org/eclipse/emf/ecp/view/template/style/wrap/model/provider/WrapItemProviderAdapterFactory.java b/bundles/org.eclipse.emf.ecp.view.template.model.edit/src/org/eclipse/emf/ecp/view/template/style/wrap/model/provider/WrapItemProviderAdapterFactory.java
new file mode 100644
index 0000000..6fa1c29
--- /dev/null
+++ b/bundles/org.eclipse.emf.ecp.view.template.model.edit/src/org/eclipse/emf/ecp/view/template/style/wrap/model/provider/WrapItemProviderAdapterFactory.java
@@ -0,0 +1,385 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * Johannes Faltermeier - initial API and implementation
+ */
+package org.eclipse.emf.ecp.view.template.style.wrap.model.provider;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.Notifier;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecp.view.template.model.VTStyle;
+import org.eclipse.emf.ecp.view.template.model.VTTemplatePackage;
+import org.eclipse.emf.ecp.view.template.model.util.TemplateSwitch;
+import org.eclipse.emf.ecp.view.template.style.wrap.model.VTWrapFactory;
+import org.eclipse.emf.ecp.view.template.style.wrap.model.VTWrapPackage;
+import org.eclipse.emf.ecp.view.template.style.wrap.model.util.WrapAdapterFactory;
+import org.eclipse.emf.edit.command.CommandParameter;
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.emf.edit.provider.ChangeNotifier;
+import org.eclipse.emf.edit.provider.ChildCreationExtenderManager;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
+import org.eclipse.emf.edit.provider.IChangeNotifier;
+import org.eclipse.emf.edit.provider.IChildCreationExtender;
+import org.eclipse.emf.edit.provider.IDisposable;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.INotifyChangedListener;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+/**
+ * This is the factory that is used to provide the interfaces needed to support Viewers.
+ * The adapters generated by this factory convert EMF adapter notifications into calls to {@link #fireNotifyChanged
+ * fireNotifyChanged}.
+ * The adapters also support Eclipse property sheets.
+ * Note that most of the adapters are shared among multiple instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class WrapItemProviderAdapterFactory extends WrapAdapterFactory
+	implements ComposeableAdapterFactory, IChangeNotifier, IDisposable, IChildCreationExtender {
+	/**
+	 * This keeps track of the root adapter factory that delegates to this adapter factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected ComposedAdapterFactory parentAdapterFactory;
+
+	/**
+	 * This is used to implement {@link org.eclipse.emf.edit.provider.IChangeNotifier}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected IChangeNotifier changeNotifier = new ChangeNotifier();
+
+	/**
+	 * This helps manage the child creation extenders.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected ChildCreationExtenderManager childCreationExtenderManager = new ChildCreationExtenderManager(
+		WrapStyleEditPlugin.INSTANCE, VTWrapPackage.eNS_URI);
+
+	/**
+	 * This keeps track of all the supported types checked by {@link #isFactoryForType isFactoryForType}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected Collection<Object> supportedTypes = new ArrayList<Object>();
+
+	/**
+	 * This constructs an instance.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public WrapItemProviderAdapterFactory() {
+		supportedTypes.add(IEditingDomainItemProvider.class);
+		supportedTypes.add(IStructuredItemContentProvider.class);
+		supportedTypes.add(ITreeItemContentProvider.class);
+		supportedTypes.add(IItemLabelProvider.class);
+		supportedTypes.add(IItemPropertySource.class);
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all
+	 * {@link org.eclipse.emf.ecp.view.template.style.wrap.model.VTLabelWrapStyleProperty} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected LabelWrapStylePropertyItemProvider labelWrapStylePropertyItemProvider;
+
+	/**
+	 * This creates an adapter for a
+	 * {@link org.eclipse.emf.ecp.view.template.style.wrap.model.VTLabelWrapStyleProperty}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Adapter createLabelWrapStylePropertyAdapter() {
+		if (labelWrapStylePropertyItemProvider == null) {
+			labelWrapStylePropertyItemProvider = new LabelWrapStylePropertyItemProvider(this);
+		}
+
+		return labelWrapStylePropertyItemProvider;
+	}
+
+	/**
+	 * This returns the root adapter factory that contains this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public ComposeableAdapterFactory getRootAdapterFactory() {
+		return parentAdapterFactory == null ? this : parentAdapterFactory.getRootAdapterFactory();
+	}
+
+	/**
+	 * This sets the composed adapter factory that contains this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setParentAdapterFactory(ComposedAdapterFactory parentAdapterFactory) {
+		this.parentAdapterFactory = parentAdapterFactory;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public boolean isFactoryForType(Object type) {
+		return supportedTypes.contains(type) || super.isFactoryForType(type);
+	}
+
+	/**
+	 * This implementation substitutes the factory itself as the key for the adapter.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Adapter adapt(Notifier notifier, Object type) {
+		return super.adapt(notifier, this);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object adapt(Object object, Object type) {
+		if (isFactoryForType(type)) {
+			final Object adapter = super.adapt(object, type);
+			if (!(type instanceof Class<?>) || ((Class<?>) type).isInstance(adapter)) {
+				return adapter;
+			}
+		}
+
+		return null;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public List<IChildCreationExtender> getChildCreationExtenders() {
+		return childCreationExtenderManager.getChildCreationExtenders();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Collection<?> getNewChildDescriptors(Object object, EditingDomain editingDomain) {
+		return childCreationExtenderManager.getNewChildDescriptors(object, editingDomain);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return childCreationExtenderManager;
+	}
+
+	/**
+	 * This adds a listener.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void addListener(INotifyChangedListener notifyChangedListener) {
+		changeNotifier.addListener(notifyChangedListener);
+	}
+
+	/**
+	 * This removes a listener.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void removeListener(INotifyChangedListener notifyChangedListener) {
+		changeNotifier.removeListener(notifyChangedListener);
+	}
+
+	/**
+	 * This delegates to {@link #changeNotifier} and to {@link #parentAdapterFactory}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void fireNotifyChanged(Notification notification) {
+		changeNotifier.fireNotifyChanged(notification);
+
+		if (parentAdapterFactory != null) {
+			parentAdapterFactory.fireNotifyChanged(notification);
+		}
+	}
+
+	/**
+	 * This disposes all of the item providers created by this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void dispose() {
+		if (labelWrapStylePropertyItemProvider != null) {
+			labelWrapStylePropertyItemProvider.dispose();
+		}
+	}
+
+	/**
+	 * A child creation extender for the {@link VTTemplatePackage}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public static class TemplateChildCreationExtender implements IChildCreationExtender {
+		/**
+		 * The switch for creating child descriptors specific to each extended class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		protected static class CreationSwitch extends TemplateSwitch<Object> {
+			/**
+			 * The child descriptors being populated.
+			 * <!-- begin-user-doc -->
+			 * <!-- end-user-doc -->
+			 *
+			 * @generated
+			 */
+			protected List<Object> newChildDescriptors;
+
+			/**
+			 * The domain in which to create the children.
+			 * <!-- begin-user-doc -->
+			 * <!-- end-user-doc -->
+			 *
+			 * @generated
+			 */
+			protected EditingDomain editingDomain;
+
+			/**
+			 * Creates the a switch for populating child descriptors in the given domain.
+			 * <!-- begin-user-doc -->
+			 * <!-- end-user-doc -->
+			 *
+			 * @generated
+			 */
+			CreationSwitch(List<Object> newChildDescriptors, EditingDomain editingDomain) {
+				this.newChildDescriptors = newChildDescriptors;
+				this.editingDomain = editingDomain;
+			}
+
+			/**
+			 * <!-- begin-user-doc -->
+			 * <!-- end-user-doc -->
+			 *
+			 * @generated
+			 */
+			@Override
+			public Object caseStyle(VTStyle object) {
+				newChildDescriptors.add(createChildParameter(VTTemplatePackage.Literals.STYLE__PROPERTIES,
+					VTWrapFactory.eINSTANCE.createLabelWrapStyleProperty()));
+
+				return null;
+			}
+
+			/**
+			 * <!-- begin-user-doc -->
+			 * <!-- end-user-doc -->
+			 *
+			 * @generated
+			 */
+			protected CommandParameter createChildParameter(Object feature, Object child) {
+				return new CommandParameter(null, feature, child);
+			}
+
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		@Override
+		public Collection<Object> getNewChildDescriptors(Object object, EditingDomain editingDomain) {
+			final ArrayList<Object> result = new ArrayList<Object>();
+			new CreationSwitch(result, editingDomain).doSwitch((EObject) object);
+			return result;
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		@Override
+		public ResourceLocator getResourceLocator() {
+			return WrapStyleEditPlugin.INSTANCE;
+		}
+	}
+
+}
diff --git a/bundles/org.eclipse.emf.ecp.view.template.model.edit/src/org/eclipse/emf/ecp/view/template/style/wrap/model/provider/WrapStyleEditPlugin.java b/bundles/org.eclipse.emf.ecp.view.template.model.edit/src/org/eclipse/emf/ecp/view/template/style/wrap/model/provider/WrapStyleEditPlugin.java
new file mode 100644
index 0000000..16eea44
--- /dev/null
+++ b/bundles/org.eclipse.emf.ecp.view.template.model.edit/src/org/eclipse/emf/ecp/view/template/style/wrap/model/provider/WrapStyleEditPlugin.java
@@ -0,0 +1,106 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * Johannes Faltermeier - initial API and implementation
+ */
+package org.eclipse.emf.ecp.view.template.style.wrap.model.provider;
+
+import org.eclipse.emf.common.EMFPlugin;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.ecp.view.template.model.provider.TemplateEditPlugin;
+
+/**
+ * This is the central singleton for the WrapStyle edit plugin.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public final class WrapStyleEditPlugin extends EMFPlugin {
+	/**
+	 * Keep track of the singleton.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public static final WrapStyleEditPlugin INSTANCE = new WrapStyleEditPlugin();
+
+	/**
+	 * Keep track of the singleton.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private static Implementation plugin;
+
+	/**
+	 * Create the instance.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public WrapStyleEditPlugin() {
+		super(new ResourceLocator[] {
+			TemplateEditPlugin.INSTANCE,
+		});
+	}
+
+	/**
+	 * Returns the singleton instance of the Eclipse plugin.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the singleton instance.
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getPluginResourceLocator() {
+		return plugin;
+	}
+
+	/**
+	 * Returns the singleton instance of the Eclipse plugin.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the singleton instance.
+	 * @generated
+	 */
+	public static Implementation getPlugin() {
+		return plugin;
+	}
+
+	/**
+	 * The actual implementation of the Eclipse <b>Plugin</b>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public static class Implementation extends EclipsePlugin {
+		/**
+		 * Creates an instance.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		public Implementation() {
+			super();
+
+			// Remember the static instance.
+			//
+			plugin = this;
+		}
+	}
+
+}
diff --git a/bundles/org.eclipse.emf.ecp.view.template.model/.settings/.api_filters b/bundles/org.eclipse.emf.ecp.view.template.model/.settings/.api_filters
index f314763..8eff930 100644
--- a/bundles/org.eclipse.emf.ecp.view.template.model/.settings/.api_filters
+++ b/bundles/org.eclipse.emf.ecp.view.template.model/.settings/.api_filters
@@ -254,6 +254,60 @@
                 <message_argument value="CONTROL_VALIDATION_TEMPLATE__WARNING_FOREGROUND_COLOR_HEX"/>
             </message_arguments>
         </filter>
+        <filter id="403767336">
+            <message_arguments>
+                <message_argument value="org.eclipse.emf.ecp.view.template.model.VTTemplatePackage"/>
+                <message_argument value="MULTI_STYLE_SELECTOR_CONTAINER"/>
+            </message_arguments>
+        </filter>
+        <filter comment="SPI Change 1.17.0" id="403767336">
+            <message_arguments>
+                <message_argument value="org.eclipse.emf.ecp.view.template.model.VTTemplatePackage"/>
+                <message_argument value="MULTI_STYLE_SELECTOR_CONTAINER_FEATURE_COUNT"/>
+            </message_arguments>
+        </filter>
+        <filter comment="SPI Change 1.17.0" id="403767336">
+            <message_arguments>
+                <message_argument value="org.eclipse.emf.ecp.view.template.model.VTTemplatePackage"/>
+                <message_argument value="MULTI_STYLE_SELECTOR_CONTAINER_OPERATION_COUNT"/>
+            </message_arguments>
+        </filter>
+        <filter comment="SPI Change 1.17.0" id="403767336">
+            <message_arguments>
+                <message_argument value="org.eclipse.emf.ecp.view.template.model.VTTemplatePackage"/>
+                <message_argument value="MULTI_STYLE_SELECTOR_CONTAINER__SELECTOR"/>
+            </message_arguments>
+        </filter>
+        <filter comment="SPI Change 1.17.0" id="403767336">
+            <message_arguments>
+                <message_argument value="org.eclipse.emf.ecp.view.template.model.VTTemplatePackage"/>
+                <message_argument value="MULTI_STYLE_SELECTOR_CONTAINER__SELECTORS"/>
+            </message_arguments>
+        </filter>
+        <filter comment="SPI Change 1.17.0" id="403767336">
+            <message_arguments>
+                <message_argument value="org.eclipse.emf.ecp.view.template.model.VTTemplatePackage"/>
+                <message_argument value="STYLE_SELECTOR_CONTAINER"/>
+            </message_arguments>
+        </filter>
+        <filter comment="SPI Change 1.17.0" id="403767336">
+            <message_arguments>
+                <message_argument value="org.eclipse.emf.ecp.view.template.model.VTTemplatePackage"/>
+                <message_argument value="STYLE_SELECTOR_CONTAINER_FEATURE_COUNT"/>
+            </message_arguments>
+        </filter>
+        <filter comment="SPI Change 1.17.0" id="403767336">
+            <message_arguments>
+                <message_argument value="org.eclipse.emf.ecp.view.template.model.VTTemplatePackage"/>
+                <message_argument value="STYLE_SELECTOR_CONTAINER_OPERATION_COUNT"/>
+            </message_arguments>
+        </filter>
+        <filter comment="SPI Change 1.17.0" id="403767336">
+            <message_arguments>
+                <message_argument value="org.eclipse.emf.ecp.view.template.model.VTTemplatePackage"/>
+                <message_argument value="STYLE_SELECTOR_CONTAINER__SELECTOR"/>
+            </message_arguments>
+        </filter>
         <filter comment="spi change" id="403804204">
             <message_arguments>
                 <message_argument value="org.eclipse.emf.ecp.view.template.model.VTTemplatePackage"/>
@@ -284,6 +338,42 @@
                 <message_argument value="getControlValidationTemplate_WarningForegroundColorHEX()"/>
             </message_arguments>
         </filter>
+        <filter comment="SPI Change 1.17.0" id="403804204">
+            <message_arguments>
+                <message_argument value="org.eclipse.emf.ecp.view.template.model.VTTemplatePackage"/>
+                <message_argument value="getMultiStyleSelectorContainer()"/>
+            </message_arguments>
+        </filter>
+        <filter comment="SPI Change 1.17.0" id="403804204">
+            <message_arguments>
+                <message_argument value="org.eclipse.emf.ecp.view.template.model.VTTemplatePackage"/>
+                <message_argument value="getMultiStyleSelectorContainer_Selector()"/>
+            </message_arguments>
+        </filter>
+        <filter comment="SPI Change 1.17.0" id="403804204">
+            <message_arguments>
+                <message_argument value="org.eclipse.emf.ecp.view.template.model.VTTemplatePackage"/>
+                <message_argument value="getMultiStyleSelectorContainer_Selectors()"/>
+            </message_arguments>
+        </filter>
+        <filter comment="SPI Change 1.17.0" id="403804204">
+            <message_arguments>
+                <message_argument value="org.eclipse.emf.ecp.view.template.model.VTTemplatePackage"/>
+                <message_argument value="getStyleSelectorContainer()"/>
+            </message_arguments>
+        </filter>
+        <filter comment="SPI Change 1.17.0" id="403804204">
+            <message_arguments>
+                <message_argument value="org.eclipse.emf.ecp.view.template.model.VTTemplatePackage"/>
+                <message_argument value="getStyleSelectorContainer_Selector()"/>
+            </message_arguments>
+        </filter>
+        <filter comment="SPI Change 1.17.0" id="405901410">
+            <message_arguments>
+                <message_argument value="org.eclipse.emf.ecp.view.template.model.VTTemplatePackage"/>
+                <message_argument value="getStyle_Selector()"/>
+            </message_arguments>
+        </filter>
     </resource>
     <resource path="src/org/eclipse/emf/ecp/view/template/model/VTTemplatePackage.java" type="org.eclipse.emf.ecp.view.template.model.VTTemplatePackage$Literals">
         <filter comment="spi change" id="403767336">
@@ -316,6 +406,52 @@
                 <message_argument value="CONTROL_VALIDATION_TEMPLATE__WARNING_FOREGROUND_COLOR_HEX"/>
             </message_arguments>
         </filter>
+        <filter comment="SPI Change 1.17.0" id="403767336">
+            <message_arguments>
+                <message_argument value="org.eclipse.emf.ecp.view.template.model.VTTemplatePackage.Literals"/>
+                <message_argument value="MULTI_STYLE_SELECTOR_CONTAINER"/>
+            </message_arguments>
+        </filter>
+        <filter comment="SPI Change 1.17.0" id="403767336">
+            <message_arguments>
+                <message_argument value="org.eclipse.emf.ecp.view.template.model.VTTemplatePackage.Literals"/>
+                <message_argument value="MULTI_STYLE_SELECTOR_CONTAINER__SELECTOR"/>
+            </message_arguments>
+        </filter>
+        <filter comment="SPI Change 1.17.0" id="403767336">
+            <message_arguments>
+                <message_argument value="org.eclipse.emf.ecp.view.template.model.VTTemplatePackage.Literals"/>
+                <message_argument value="MULTI_STYLE_SELECTOR_CONTAINER__SELECTORS"/>
+            </message_arguments>
+        </filter>
+        <filter comment="SPI Change 1.17.0" id="403767336">
+            <message_arguments>
+                <message_argument value="org.eclipse.emf.ecp.view.template.model.VTTemplatePackage.Literals"/>
+                <message_argument value="STYLE_SELECTOR_CONTAINER"/>
+            </message_arguments>
+        </filter>
+        <filter comment="SPI Change 1.17.0" id="403767336">
+            <message_arguments>
+                <message_argument value="org.eclipse.emf.ecp.view.template.model.VTTemplatePackage.Literals"/>
+                <message_argument value="STYLE_SELECTOR_CONTAINER__SELECTOR"/>
+            </message_arguments>
+        </filter>
+        <filter comment="SPI Change 1.17.0" id="405864542">
+            <message_arguments>
+                <message_argument value="org.eclipse.emf.ecp.view.template.model.VTTemplatePackage.Literals"/>
+                <message_argument value="STYLE__SELECTOR"/>
+            </message_arguments>
+        </filter>
+        <filter id="1211105284">
+            <message_arguments>
+                <message_argument value="STYLE_SELECTOR_CONTAINER"/>
+            </message_arguments>
+        </filter>
+        <filter comment="SPI Change 1.17.0" id="1211105284">
+            <message_arguments>
+                <message_argument value="STYLE_SELECTOR_CONTAINER__SELECTOR"/>
+            </message_arguments>
+        </filter>
     </resource>
     <resource path="src/org/eclipse/emf/ecp/view/template/selector/viewModelElement/model/impl/VTViewModelElementFactoryImpl.java" type="org.eclipse.emf.ecp.view.template.selector.viewModelElement.model.impl.VTViewModelElementFactoryImpl">
         <filter comment="Removed Impl packages from export" id="305365105">
diff --git a/bundles/org.eclipse.emf.ecp.view.template.model/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.view.template.model/META-INF/MANIFEST.MF
index 2a6c0e0..5522596 100644
--- a/bundles/org.eclipse.emf.ecp.view.template.model/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.view.template.model/META-INF/MANIFEST.MF
@@ -2,59 +2,69 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.template.model;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-ClassPath: .
 Bundle-Activator: org.eclipse.emf.ecp.internal.view.template.model.Activator
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
-Export-Package: org.eclipse.emf.ecp.internal.view.template.model;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.view.template.model;version="1.16.0",
-  org.eclipse.emf.ecp.view.template.model.impl;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.view.template.model.util;version="1.16.0";x-friends:="org.eclipse.emf.ecp.view.template.model.edit",
-  org.eclipse.emf.ecp.view.template.selector.domainmodelreference.model;version="1.16.0",
-  org.eclipse.emf.ecp.view.template.selector.domainmodelreference.model.impl;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.view.template.selector.domainmodelreference.model.util;version="1.16.0";x-friends:="org.eclipse.emf.ecp.view.template.model.edit",
-  org.eclipse.emf.ecp.view.template.selector.viewModelElement.model;version="1.16.0",
-  org.eclipse.emf.ecp.view.template.selector.viewModelElement.model.impl;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.view.template.selector.viewModelElement.model.util;version="1.16.0",
-  org.eclipse.emf.ecp.view.template.style.alignment.model;version="1.16.0",
-  org.eclipse.emf.ecp.view.template.style.alignment.model.impl;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.view.template.style.alignment.model.util;version="1.16.0";x-friends:="org.eclipse.emf.ecp.view.template.model.edit",
-  org.eclipse.emf.ecp.view.template.style.background.model;version="1.16.0",
-  org.eclipse.emf.ecp.view.template.style.background.model.impl;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.view.template.style.background.model.util;version="1.16.0";x-friends:="org.eclipse.emf.ecp.view.template.model.edit",
-  org.eclipse.emf.ecp.view.template.style.fontProperties.model;version="1.16.0",
-  org.eclipse.emf.ecp.view.template.style.fontProperties.model.impl;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.view.template.style.fontProperties.model.util;version="1.16.0",
-  org.eclipse.emf.ecp.view.template.style.labelwidth.model;version="1.16.0",
-  org.eclipse.emf.ecp.view.template.style.labelwidth.model.impl;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.view.template.style.labelwidth.model.util;version="1.16.0";x-friends:="org.eclipse.emf.ecp.view.template.model.edit",
-  org.eclipse.emf.ecp.view.template.style.mandatory.model;version="1.16.0",
-  org.eclipse.emf.ecp.view.template.style.mandatory.model.impl;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.view.template.style.mandatory.model.util;version="1.16.0";x-friends:="org.eclipse.emf.ecp.view.template.model.edit",
-  org.eclipse.emf.ecp.view.template.style.tab.model;version="1.16.0",
-  org.eclipse.emf.ecp.view.template.style.tab.model.impl;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.view.template.style.tab.model.util;version="1.16.0",
-  org.eclipse.emf.ecp.view.template.style.tableStyleProperty.model;version="1.16.0",
-  org.eclipse.emf.ecp.view.template.style.tableStyleProperty.model.impl;version="1.16.0";x-friends:="org.eclipse.emf.ecp.view.template.model.edit",
-  org.eclipse.emf.ecp.view.template.style.tableStyleProperty.model.util;version="1.16.0";x-friends:="org.eclipse.emf.ecp.view.template.model.edit",
-  org.eclipse.emf.ecp.view.template.style.tableValidation.model;version="1.16.0",
-  org.eclipse.emf.ecp.view.template.style.tableValidation.model.impl;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.view.template.style.tableValidation.model.util;version="1.16.0",
-  org.eclipse.emf.ecp.view.template.style.textControlEnablement.model;version="1.16.0",
-  org.eclipse.emf.ecp.view.template.style.textControlEnablement.model.impl;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.view.template.style.textControlEnablement.model.util;version="1.16.0";x-friends:="org.eclipse.emf.ecp.view.template.model.edit",
-  org.eclipse.emf.ecp.view.template.style.unsettable.model;version="1.16.0",
-  org.eclipse.emf.ecp.view.template.style.unsettable.model.impl;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.view.template.style.unsettable.model.util;version="1.16.0",
-  org.eclipse.emf.ecp.view.template.style.validation.model;version="1.16.0",
-  org.eclipse.emf.ecp.view.template.style.validation.model.impl;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.view.template.style.validation.model.util;version="1.16.0";x-friends:="org.eclipse.emf.ecp.view.template.model.edit"
+Export-Package: org.eclipse.emf.ecp.internal.view.template.model;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.template.model;version="1.17.0",
+ org.eclipse.emf.ecp.view.template.model.impl;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.template.model.util;version="1.17.0";x-friends:="org.eclipse.emf.ecp.view.template.model.edit,org.eclipse.emf.ecp.view.template.annotation.model.edit",
+ org.eclipse.emf.ecp.view.template.selector.bool.model;version="1.17.0",
+ org.eclipse.emf.ecp.view.template.selector.bool.model.impl;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.template.selector.bool.model.util;version="1.17.0";x-friends:="org.eclipse.emf.ecp.view.template.model.edit",
+ org.eclipse.emf.ecp.view.template.selector.domainmodelreference.model;version="1.17.0",
+ org.eclipse.emf.ecp.view.template.selector.domainmodelreference.model.impl;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.template.selector.domainmodelreference.model.util;version="1.17.0";x-friends:="org.eclipse.emf.ecp.view.template.model.edit",
+ org.eclipse.emf.ecp.view.template.selector.hierarchy.model;version="1.17.0",
+ org.eclipse.emf.ecp.view.template.selector.hierarchy.model.impl;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.template.selector.hierarchy.model.util;version="1.17.0";x-friends:="org.eclipse.emf.ecp.view.template.model.edit",
+ org.eclipse.emf.ecp.view.template.selector.viewModelElement.model;version="1.17.0",
+ org.eclipse.emf.ecp.view.template.selector.viewModelElement.model.impl;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.template.selector.viewModelElement.model.util;version="1.17.0",
+ org.eclipse.emf.ecp.view.template.style.alignment.model;version="1.17.0",
+ org.eclipse.emf.ecp.view.template.style.alignment.model.impl;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.template.style.alignment.model.util;version="1.17.0";x-friends:="org.eclipse.emf.ecp.view.template.model.edit",
+ org.eclipse.emf.ecp.view.template.style.background.model;version="1.17.0",
+ org.eclipse.emf.ecp.view.template.style.background.model.impl;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.template.style.background.model.util;version="1.17.0";x-friends:="org.eclipse.emf.ecp.view.template.model.edit",
+ org.eclipse.emf.ecp.view.template.style.fontProperties.model;version="1.17.0",
+ org.eclipse.emf.ecp.view.template.style.fontProperties.model.impl;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.template.style.fontProperties.model.util;version="1.17.0",
+ org.eclipse.emf.ecp.view.template.style.labelwidth.model;version="1.17.0",
+ org.eclipse.emf.ecp.view.template.style.labelwidth.model.impl;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.template.style.labelwidth.model.util;version="1.17.0";x-friends:="org.eclipse.emf.ecp.view.template.model.edit",
+ org.eclipse.emf.ecp.view.template.style.mandatory.model;version="1.17.0",
+ org.eclipse.emf.ecp.view.template.style.mandatory.model.impl;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.template.style.mandatory.model.util;version="1.17.0";x-friends:="org.eclipse.emf.ecp.view.template.model.edit",
+ org.eclipse.emf.ecp.view.template.style.tab.model;version="1.17.0",
+ org.eclipse.emf.ecp.view.template.style.tab.model.impl;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.template.style.tab.model.util;version="1.17.0",
+ org.eclipse.emf.ecp.view.template.style.tableStyleProperty.model;version="1.17.0",
+ org.eclipse.emf.ecp.view.template.style.tableStyleProperty.model.impl;version="1.17.0";x-friends:="org.eclipse.emf.ecp.view.template.model.edit",
+ org.eclipse.emf.ecp.view.template.style.tableStyleProperty.model.util;version="1.17.0";x-friends:="org.eclipse.emf.ecp.view.template.model.edit",
+ org.eclipse.emf.ecp.view.template.style.tableValidation.model;version="1.17.0",
+ org.eclipse.emf.ecp.view.template.style.tableValidation.model.impl;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.template.style.tableValidation.model.util;version="1.17.0",
+ org.eclipse.emf.ecp.view.template.style.textControlEnablement.model;version="1.17.0",
+ org.eclipse.emf.ecp.view.template.style.textControlEnablement.model.impl;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.template.style.textControlEnablement.model.util;version="1.17.0";x-friends:="org.eclipse.emf.ecp.view.template.model.edit",
+ org.eclipse.emf.ecp.view.template.style.unsettable.model;version="1.17.0",
+ org.eclipse.emf.ecp.view.template.style.unsettable.model.impl;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.template.style.unsettable.model.util;version="1.17.0",
+ org.eclipse.emf.ecp.view.template.style.validation.model;version="1.17.0",
+ org.eclipse.emf.ecp.view.template.style.validation.model.impl;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.template.style.validation.model.util;version="1.17.0";x-friends:="org.eclipse.emf.ecp.view.template.model.edit",
+ org.eclipse.emf.ecp.view.template.style.wrap.model;version="1.17.0",
+ org.eclipse.emf.ecp.view.template.style.wrap.model.impl;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.template.style.wrap.model.util;version="1.17.0";x-friends:="org.eclipse.emf.ecp.view.template.model.edit"
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.7.0,4.0.0)",
-  org.eclipse.emf.ecore;bundle-version="[2.7.0,3.0.0)";visibility:=reexport,
-  org.eclipse.emf.ecp.view.model;bundle-version="[1.16.0,1.17.0)";visibility:=reexport,
-  org.eclipse.emf.ecp.view.context;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services;bundle-version="[1.16.0,1.17.0)"
-Import-Package: org.eclipse.emfforms.spi.common.report;version="[1.16.0,1.17.0)"
+ org.eclipse.emf.ecore;bundle-version="[2.7.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.ecp.view.model;bundle-version="[1.17.0,1.18.0]";visibility:=reexport,
+ org.eclipse.emf.ecp.view.context;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services;bundle-version="[1.17.0,1.18.0]"
+Import-Package: org.eclipse.emfforms.spi.common.report;version="[1.17.0,1.18.0]"
 Bundle-ActivationPolicy: lazy
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Automatic-Module-Name: org.eclipse.emf.ecp.view.template.model
diff --git a/bundles/org.eclipse.emf.ecp.view.template.model/model/boolSelector.ecore b/bundles/org.eclipse.emf.ecp.view.template.model/model/boolSelector.ecore
new file mode 100644
index 0000000..948afdd
--- /dev/null
+++ b/bundles/org.eclipse.emf.ecp.view.template.model/model/boolSelector.ecore
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="bool" nsURI="http://www.eclipse.org/emf/ecp/view/template/selector/bool/model"
+    nsPrefix="org.eclipse.emf.ecp.view.template.selector.bool.model">
+  <eClassifiers xsi:type="ecore:EClass" name="AndSelector" eSuperTypes="template.ecore#//MultiStyleSelectorContainer template.ecore#//StyleSelector"/>
+</ecore:EPackage>
diff --git a/bundles/org.eclipse.emf.ecp.view.template.model/model/boolSelector.genmodel b/bundles/org.eclipse.emf.ecp.view.template.model/model/boolSelector.genmodel
new file mode 100644
index 0000000..e1283ae
--- /dev/null
+++ b/bundles/org.eclipse.emf.ecp.view.template.model/model/boolSelector.genmodel
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<genmodel:GenModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel"
+    copyrightText="Copyright (c) 2011-2018 EclipseSource Muenchen GmbH and others.&#xA;&#xA;All rights reserved. This program and the accompanying materials&#xA;are made available under the terms of the Eclipse Public License v1.0&#xA;which accompanies this distribution, and is available at&#xA;http://www.eclipse.org/legal/epl-v10.html&#xA;&#xA;Contributors:&#xA;Johannes Faltermeier - initial API and implementation"
+    modelDirectory="/org.eclipse.emf.ecp.view.template.model/src" modelPluginID="org.eclipse.emf.ecp.view.template.model"
+    modelName="BoolSelector" nonNLSMarkers="true" rootExtendsClass="org.eclipse.emf.ecore.impl.MinimalEObjectImpl$Container"
+    codeFormatting="true" commentFormatting="true" importerID="org.eclipse.emf.importer.ecore"
+    complianceLevel="6.0" copyrightFields="false" usedGenPackages="template.genmodel#//template"
+    interfaceNamePattern="VT{0}" classNamePattern="VT{0}Impl" operationReflection="true"
+    importOrganizing="true">
+  <foreignModel>boolSelector.ecore</foreignModel>
+  <genPackages prefix="Bool" basePackage="org.eclipse.emf.ecp.view.template.selector"
+      disposableProviderFactory="true" interfacePackageSuffix="model" metaDataPackageSuffix="model"
+      classPackageSuffix="model.impl" utilityPackageSuffix="model.util" providerPackageSuffix="model.provider"
+      presentationPackageSuffix="model.presentation" testsPackageSuffix="model.tests"
+      extensibleProviderFactory="true" childCreationExtenders="true" ecorePackage="boolSelector.ecore#/">
+    <genClasses ecoreClass="boolSelector.ecore#//AndSelector"/>
+  </genPackages>
+</genmodel:GenModel>
diff --git a/bundles/org.eclipse.emf.ecp.view.template.model/model/hierarchySelector.ecore b/bundles/org.eclipse.emf.ecp.view.template.model/model/hierarchySelector.ecore
new file mode 100644
index 0000000..7a0c808
--- /dev/null
+++ b/bundles/org.eclipse.emf.ecp.view.template.model/model/hierarchySelector.ecore
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="hierarchy" nsURI="http://www.eclipse.org/emf/ecp/view/template/selector/hierarchy/model"
+    nsPrefix="org.eclipse.emf.ecp.view.template.selector.hierarchy.model">
+  <eClassifiers xsi:type="ecore:EClass" name="HierarchySelector" eSuperTypes="template.ecore#//StyleSelectorContainer template.ecore#//StyleSelector"/>
+</ecore:EPackage>
diff --git a/bundles/org.eclipse.emf.ecp.view.template.model/model/hierarchySelector.genmodel b/bundles/org.eclipse.emf.ecp.view.template.model/model/hierarchySelector.genmodel
new file mode 100644
index 0000000..c2dedb9
--- /dev/null
+++ b/bundles/org.eclipse.emf.ecp.view.template.model/model/hierarchySelector.genmodel
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<genmodel:GenModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
+    xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel" copyrightText="Copyright (c) 2011-2018 EclipseSource Muenchen GmbH and others.&#xA;&#xA;All rights reserved. This program and the accompanying materials&#xA;are made available under the terms of the Eclipse Public License v1.0&#xA;which accompanies this distribution, and is available at&#xA;http://www.eclipse.org/legal/epl-v10.html&#xA;&#xA;Contributors:&#xA;Johannes Faltermeier - initial API and implementation"
+    modelDirectory="/org.eclipse.emf.ecp.view.template.model/src" modelPluginID="org.eclipse.emf.ecp.view.template.model"
+    modelName="HierarchySelector" nonNLSMarkers="true" rootExtendsClass="org.eclipse.emf.ecore.impl.MinimalEObjectImpl$Container"
+    codeFormatting="true" commentFormatting="true" importerID="org.eclipse.emf.importer.ecore"
+    complianceLevel="6.0" copyrightFields="false" usedGenPackages="template.genmodel#//template"
+    interfaceNamePattern="VT{0}" classNamePattern="VT{0}Impl" operationReflection="true"
+    importOrganizing="true">
+  <foreignModel>hierarchySelector.ecore</foreignModel>
+  <genPackages prefix="Hierarchy" basePackage="org.eclipse.emf.ecp.view.template.selector"
+      disposableProviderFactory="true" interfacePackageSuffix="model" metaDataPackageSuffix="model"
+      classPackageSuffix="model.impl" utilityPackageSuffix="model.util" providerPackageSuffix="model.provider"
+      presentationPackageSuffix="model.presentation" testsPackageSuffix="model.tests"
+      extensibleProviderFactory="true" childCreationExtenders="true" ecorePackage="hierarchySelector.ecore#/">
+    <genClasses ecoreClass="hierarchySelector.ecore#//HierarchySelector">
+      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference hierarchySelector.ecore#//HierarchySelector/selector"/>
+    </genClasses>
+  </genPackages>
+</genmodel:GenModel>
diff --git a/bundles/org.eclipse.emf.ecp.view.template.model/model/template.ecore b/bundles/org.eclipse.emf.ecp.view.template.model/model/template.ecore
index 090e8f5..761f299 100644
--- a/bundles/org.eclipse.emf.ecp.view.template.model/model/template.ecore
+++ b/bundles/org.eclipse.emf.ecp.view.template.model/model/template.ecore
@@ -36,12 +36,18 @@
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="cancelImageURL" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>

     <eStructuralFeatures xsi:type="ecore:EAttribute" name="cancelOverlayURL" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>

   </eClassifiers>

-  <eClassifiers xsi:type="ecore:EClass" name="Style">

-    <eStructuralFeatures xsi:type="ecore:EReference" name="selector" lowerBound="1"

-        eType="#//StyleSelector" containment="true"/>

+  <eClassifiers xsi:type="ecore:EClass" name="Style" eSuperTypes="#//StyleSelectorContainer">

     <eStructuralFeatures xsi:type="ecore:EReference" name="properties" upperBound="-1"

         eType="#//StyleProperty" containment="true"/>

   </eClassifiers>

   <eClassifiers xsi:type="ecore:EClass" name="StyleProperty" abstract="true" interface="true"/>

   <eClassifiers xsi:type="ecore:EClass" name="StyleSelector" abstract="true" interface="true"/>

+  <eClassifiers xsi:type="ecore:EClass" name="StyleSelectorContainer" abstract="true">

+    <eStructuralFeatures xsi:type="ecore:EReference" name="selector" lowerBound="1"

+        eType="#//StyleSelector" containment="true"/>

+  </eClassifiers>

+  <eClassifiers xsi:type="ecore:EClass" name="MultiStyleSelectorContainer" abstract="true">

+    <eStructuralFeatures xsi:type="ecore:EReference" name="selectors" lowerBound="2"

+        upperBound="-1" eType="#//StyleSelector" containment="true"/>

+  </eClassifiers>

 </ecore:EPackage>

diff --git a/bundles/org.eclipse.emf.ecp.view.template.model/model/template.genmodel b/bundles/org.eclipse.emf.ecp.view.template.model/model/template.genmodel
index d550e73..83d52cc 100644
--- a/bundles/org.eclipse.emf.ecp.view.template.model/model/template.genmodel
+++ b/bundles/org.eclipse.emf.ecp.view.template.model/model/template.genmodel
@@ -20,26 +20,36 @@
     </genClasses>
     <genClasses ecoreClass="template.ecore#//ControlValidationTemplate">
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute template.ecore#//ControlValidationTemplate/okColorHEX"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute template.ecore#//ControlValidationTemplate/okForegroundColorHEX"/>
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute template.ecore#//ControlValidationTemplate/okImageURL"/>
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute template.ecore#//ControlValidationTemplate/okOverlayURL"/>
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute template.ecore#//ControlValidationTemplate/infoColorHEX"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute template.ecore#//ControlValidationTemplate/infoForegroundColorHEX"/>
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute template.ecore#//ControlValidationTemplate/infoImageURL"/>
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute template.ecore#//ControlValidationTemplate/infoOverlayURL"/>
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute template.ecore#//ControlValidationTemplate/warningColorHEX"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute template.ecore#//ControlValidationTemplate/warningForegroundColorHEX"/>
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute template.ecore#//ControlValidationTemplate/warningImageURL"/>
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute template.ecore#//ControlValidationTemplate/warningOverlayURL"/>
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute template.ecore#//ControlValidationTemplate/errorColorHEX"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute template.ecore#//ControlValidationTemplate/errorForegroundColorHEX"/>
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute template.ecore#//ControlValidationTemplate/errorImageURL"/>
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute template.ecore#//ControlValidationTemplate/errorOverlayURL"/>
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute template.ecore#//ControlValidationTemplate/cancelColorHEX"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute template.ecore#//ControlValidationTemplate/cancelForegroundColorHEX"/>
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute template.ecore#//ControlValidationTemplate/cancelImageURL"/>
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute template.ecore#//ControlValidationTemplate/cancelOverlayURL"/>
     </genClasses>
     <genClasses ecoreClass="template.ecore#//Style">
-      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference template.ecore#//Style/selector"/>
       <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference template.ecore#//Style/properties"/>
     </genClasses>
     <genClasses image="false" ecoreClass="template.ecore#//StyleProperty"/>
     <genClasses image="false" ecoreClass="template.ecore#//StyleSelector"/>
+    <genClasses image="false" ecoreClass="template.ecore#//StyleSelectorContainer">
+      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference template.ecore#//StyleSelectorContainer/selector"/>
+    </genClasses>
+    <genClasses image="false" ecoreClass="template.ecore#//MultiStyleSelectorContainer">
+      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference template.ecore#//MultiStyleSelectorContainer/selectors"/>
+    </genClasses>
   </genPackages>
 </genmodel:GenModel>
diff --git a/bundles/org.eclipse.emf.ecp.view.template.model/model/wrapStyle.ecore b/bundles/org.eclipse.emf.ecp.view.template.model/model/wrapStyle.ecore
new file mode 100644
index 0000000..e976520
--- /dev/null
+++ b/bundles/org.eclipse.emf.ecp.view.template.model/model/wrapStyle.ecore
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="wrap" nsURI="http://www.eclipse.org/emf/ecp/view/template/style/wrap/model"
+    nsPrefix="org.eclipse.emf.ecp.view.template.style.wrap.model">
+  <eClassifiers xsi:type="ecore:EClass" name="LabelWrapStyleProperty" eSuperTypes="template.ecore#//StyleProperty">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="wrapLabel" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+  </eClassifiers>
+</ecore:EPackage>
diff --git a/bundles/org.eclipse.emf.ecp.view.template.model/model/wrapStyle.genmodel b/bundles/org.eclipse.emf.ecp.view.template.model/model/wrapStyle.genmodel
new file mode 100644
index 0000000..d8c7b9d
--- /dev/null
+++ b/bundles/org.eclipse.emf.ecp.view.template.model/model/wrapStyle.genmodel
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<genmodel:GenModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
+    xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel" copyrightText="Copyright (c) 2011-2018 EclipseSource Muenchen GmbH and others.&#xA;&#xA;All rights reserved. This program and the accompanying materials&#xA;are made available under the terms of the Eclipse Public License v1.0&#xA;which accompanies this distribution, and is available at&#xA;http://www.eclipse.org/legal/epl-v10.html&#xA;&#xA;Contributors:&#xA;Johannes Faltermeier - initial API and implementation"
+    modelDirectory="/org.eclipse.emf.ecp.view.template.model/src" modelPluginID="org.eclipse.emf.ecp.view.template.model"
+    modelName="WrapStyle" nonNLSMarkers="true" rootExtendsClass="org.eclipse.emf.ecore.impl.MinimalEObjectImpl$Container"
+    codeFormatting="true" commentFormatting="true" importerID="org.eclipse.emf.importer.ecore"
+    complianceLevel="6.0" copyrightFields="false" usedGenPackages="template.genmodel#//template"
+    interfaceNamePattern="VT{0}" classNamePattern="VT{0}Impl" operationReflection="true"
+    importOrganizing="true">
+  <foreignModel>wrapStyle.ecore</foreignModel>
+  <genPackages prefix="Wrap" basePackage="org.eclipse.emf.ecp.view.template.style"
+      disposableProviderFactory="true" interfacePackageSuffix="model" metaDataPackageSuffix="model"
+      classPackageSuffix="model.impl" utilityPackageSuffix="model.util" providerPackageSuffix="model.provider"
+      presentationPackageSuffix="model.presentation" testsPackageSuffix="model.tests"
+      extensibleProviderFactory="true" childCreationExtenders="true" ecorePackage="wrapStyle.ecore#/">
+    <genClasses ecoreClass="wrapStyle.ecore#//LabelWrapStyleProperty">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute wrapStyle.ecore#//LabelWrapStyleProperty/wrapLabel"/>
+    </genClasses>
+  </genPackages>
+</genmodel:GenModel>
diff --git a/bundles/org.eclipse.emf.ecp.view.template.model/plugin.xml b/bundles/org.eclipse.emf.ecp.view.template.model/plugin.xml
index 0cd1b78..d267d48 100644
--- a/bundles/org.eclipse.emf.ecp.view.template.model/plugin.xml
+++ b/bundles/org.eclipse.emf.ecp.view.template.model/plugin.xml
@@ -129,4 +129,28 @@
       </package>
    </extension>
 
+   <extension point="org.eclipse.emf.ecore.generated_package">
+      <!-- @generated hierarchySelector -->
+      <package
+            uri="http://www.eclipse.org/emf/ecp/view/template/selector/hierarchy/model"
+            class="org.eclipse.emf.ecp.view.template.selector.hierarchy.model.VTHierarchyPackage"
+            genModel="model/hierarchySelector.genmodel"/>
+   </extension>
+
+   <extension point="org.eclipse.emf.ecore.generated_package">
+      <!-- @generated boolSelector -->
+      <package
+            uri="http://www.eclipse.org/emf/ecp/view/template/selector/bool/model"
+            class="org.eclipse.emf.ecp.view.template.selector.bool.model.VTBoolPackage"
+            genModel="model/boolSelector.genmodel"/>
+   </extension>
+
+   <extension point="org.eclipse.emf.ecore.generated_package">
+      <!-- @generated wrapStyle -->
+      <package
+            uri="http://www.eclipse.org/emf/ecp/view/template/style/wrap/model"
+            class="org.eclipse.emf.ecp.view.template.style.wrap.model.VTWrapPackage"
+            genModel="model/wrapStyle.genmodel"/>
+   </extension>
+
 </plugin>
diff --git a/bundles/org.eclipse.emf.ecp.view.template.model/pom.xml b/bundles/org.eclipse.emf.ecp.view.template.model/pom.xml
index 2345294..7bd7943 100644
--- a/bundles/org.eclipse.emf.ecp.view.template.model/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.view.template.model/pom.xml
@@ -7,12 +7,12 @@
   <parent>

     <groupId>org.eclipse.emf.ecp</groupId>

     <artifactId>ecp-bundles-parent</artifactId>

-    <version>1.16.0-SNAPSHOT</version>

+    <version>1.17.0-SNAPSHOT</version>

     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>

   </parent>

 

   <artifactId>org.eclipse.emf.ecp.view.template.model</artifactId>

   <packaging>eclipse-plugin</packaging>

-  <version>1.16.0-SNAPSHOT</version>

+  <version>1.17.0-SNAPSHOT</version>

 

 </project>

diff --git a/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/model/VTControlValidationTemplate.java b/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/model/VTControlValidationTemplate.java
index df40a10..4f0579e 100644
--- a/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/model/VTControlValidationTemplate.java
+++ b/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/model/VTControlValidationTemplate.java
@@ -20,49 +20,49 @@
  *
  * <p>
  * The following features are supported:
+ * </p>
  * <ul>
- * <li>{@link org.eclipse.emf.ecp.view.template.model.VTControlValidationTemplate#getOkColorHEX <em>Ok Color HEX</em>}
- * </li>
- * <li>{@link org.eclipse.emf.ecp.view.template.model.VTControlValidationTemplate#getOkForegroundColorHEX
- * <em>Ok Foreground Color HEX</em>}</li>
- * <li>{@link org.eclipse.emf.ecp.view.template.model.VTControlValidationTemplate#getOkImageURL <em>Ok Image URL</em>}
- * </li>
- * <li>{@link org.eclipse.emf.ecp.view.template.model.VTControlValidationTemplate#getOkOverlayURL
- * <em>Ok Overlay URL</em>}</li>
- * <li>{@link org.eclipse.emf.ecp.view.template.model.VTControlValidationTemplate#getInfoColorHEX
- * <em>Info Color HEX</em>}</li>
- * <li>{@link org.eclipse.emf.ecp.view.template.model.VTControlValidationTemplate#getInfoForegroundColorHEX
- * <em>Info Foreground Color HEX</em>}</li>
- * <li>{@link org.eclipse.emf.ecp.view.template.model.VTControlValidationTemplate#getInfoImageURL
- * <em>Info Image URL</em>}</li>
- * <li>{@link org.eclipse.emf.ecp.view.template.model.VTControlValidationTemplate#getInfoOverlayURL
- * <em>Info Overlay URL</em>}</li>
- * <li>{@link org.eclipse.emf.ecp.view.template.model.VTControlValidationTemplate#getWarningColorHEX
- * <em>Warning Color HEX</em>}</li>
+ * <li>{@link org.eclipse.emf.ecp.view.template.model.VTControlValidationTemplate#getOkColorHEX <em>Ok Color
+ * HEX</em>}</li>
+ * <li>{@link org.eclipse.emf.ecp.view.template.model.VTControlValidationTemplate#getOkForegroundColorHEX <em>Ok
+ * Foreground Color HEX</em>}</li>
+ * <li>{@link org.eclipse.emf.ecp.view.template.model.VTControlValidationTemplate#getOkImageURL <em>Ok Image
+ * URL</em>}</li>
+ * <li>{@link org.eclipse.emf.ecp.view.template.model.VTControlValidationTemplate#getOkOverlayURL <em>Ok Overlay
+ * URL</em>}</li>
+ * <li>{@link org.eclipse.emf.ecp.view.template.model.VTControlValidationTemplate#getInfoColorHEX <em>Info Color
+ * HEX</em>}</li>
+ * <li>{@link org.eclipse.emf.ecp.view.template.model.VTControlValidationTemplate#getInfoForegroundColorHEX <em>Info
+ * Foreground Color HEX</em>}</li>
+ * <li>{@link org.eclipse.emf.ecp.view.template.model.VTControlValidationTemplate#getInfoImageURL <em>Info Image
+ * URL</em>}</li>
+ * <li>{@link org.eclipse.emf.ecp.view.template.model.VTControlValidationTemplate#getInfoOverlayURL <em>Info Overlay
+ * URL</em>}</li>
+ * <li>{@link org.eclipse.emf.ecp.view.template.model.VTControlValidationTemplate#getWarningColorHEX <em>Warning Color
+ * HEX</em>}</li>
  * <li>{@link org.eclipse.emf.ecp.view.template.model.VTControlValidationTemplate#getWarningForegroundColorHEX
  * <em>Warning Foreground Color HEX</em>}</li>
- * <li>{@link org.eclipse.emf.ecp.view.template.model.VTControlValidationTemplate#getWarningImageURL
- * <em>Warning Image URL</em>}</li>
- * <li>{@link org.eclipse.emf.ecp.view.template.model.VTControlValidationTemplate#getWarningOverlayURL
- * <em>Warning Overlay URL</em>}</li>
- * <li>{@link org.eclipse.emf.ecp.view.template.model.VTControlValidationTemplate#getErrorColorHEX
- * <em>Error Color HEX</em>}</li>
- * <li>{@link org.eclipse.emf.ecp.view.template.model.VTControlValidationTemplate#getErrorForegroundColorHEX
- * <em>Error Foreground Color HEX</em>}</li>
- * <li>{@link org.eclipse.emf.ecp.view.template.model.VTControlValidationTemplate#getErrorImageURL
- * <em>Error Image URL</em>}</li>
- * <li>{@link org.eclipse.emf.ecp.view.template.model.VTControlValidationTemplate#getErrorOverlayURL
- * <em>Error Overlay URL</em>}</li>
- * <li>{@link org.eclipse.emf.ecp.view.template.model.VTControlValidationTemplate#getCancelColorHEX
- * <em>Cancel Color HEX</em>}</li>
- * <li>{@link org.eclipse.emf.ecp.view.template.model.VTControlValidationTemplate#getCancelForegroundColorHEX
- * <em>Cancel Foreground Color HEX</em>}</li>
- * <li>{@link org.eclipse.emf.ecp.view.template.model.VTControlValidationTemplate#getCancelImageURL
- * <em>Cancel Image URL</em>}</li>
- * <li>{@link org.eclipse.emf.ecp.view.template.model.VTControlValidationTemplate#getCancelOverlayURL
- * <em>Cancel Overlay URL</em>}</li>
+ * <li>{@link org.eclipse.emf.ecp.view.template.model.VTControlValidationTemplate#getWarningImageURL <em>Warning Image
+ * URL</em>}</li>
+ * <li>{@link org.eclipse.emf.ecp.view.template.model.VTControlValidationTemplate#getWarningOverlayURL <em>Warning
+ * Overlay URL</em>}</li>
+ * <li>{@link org.eclipse.emf.ecp.view.template.model.VTControlValidationTemplate#getErrorColorHEX <em>Error Color
+ * HEX</em>}</li>
+ * <li>{@link org.eclipse.emf.ecp.view.template.model.VTControlValidationTemplate#getErrorForegroundColorHEX <em>Error
+ * Foreground Color HEX</em>}</li>
+ * <li>{@link org.eclipse.emf.ecp.view.template.model.VTControlValidationTemplate#getErrorImageURL <em>Error Image
+ * URL</em>}</li>
+ * <li>{@link org.eclipse.emf.ecp.view.template.model.VTControlValidationTemplate#getErrorOverlayURL <em>Error Overlay
+ * URL</em>}</li>
+ * <li>{@link org.eclipse.emf.ecp.view.template.model.VTControlValidationTemplate#getCancelColorHEX <em>Cancel Color
+ * HEX</em>}</li>
+ * <li>{@link org.eclipse.emf.ecp.view.template.model.VTControlValidationTemplate#getCancelForegroundColorHEX <em>Cancel
+ * Foreground Color HEX</em>}</li>
+ * <li>{@link org.eclipse.emf.ecp.view.template.model.VTControlValidationTemplate#getCancelImageURL <em>Cancel Image
+ * URL</em>}</li>
+ * <li>{@link org.eclipse.emf.ecp.view.template.model.VTControlValidationTemplate#getCancelOverlayURL <em>Cancel Overlay
+ * URL</em>}</li>
  * </ul>
- * </p>
  *
  * @see org.eclipse.emf.ecp.view.template.model.VTTemplatePackage#getControlValidationTemplate()
  * @model
@@ -108,7 +108,6 @@
 	 *
 	 * @since 1.10
 	 *        <!-- end-user-doc -->
-	 *
 	 * @return the value of the '<em>Ok Foreground Color HEX</em>' attribute.
 	 * @see #setOkForegroundColorHEX(String)
 	 * @see org.eclipse.emf.ecp.view.template.model.VTTemplatePackage#getControlValidationTemplate_OkForegroundColorHEX()
@@ -118,14 +117,13 @@
 	String getOkForegroundColorHEX();
 
 	/**
-	 * Sets the value of the '
-	 * {@link org.eclipse.emf.ecp.view.template.model.VTControlValidationTemplate#getOkForegroundColorHEX
-	 * <em>Ok Foreground Color HEX</em>}' attribute.
+	 * Sets the value of the
+	 * '{@link org.eclipse.emf.ecp.view.template.model.VTControlValidationTemplate#getOkForegroundColorHEX <em>Ok
+	 * Foreground Color HEX</em>}' attribute.
 	 * <!-- begin-user-doc -->
 	 *
 	 * @since 1.10
 	 *        <!-- end-user-doc -->
-	 *
 	 * @param value the new value of the '<em>Ok Foreground Color HEX</em>' attribute.
 	 * @see #getOkForegroundColorHEX()
 	 * @generated
@@ -179,8 +177,7 @@
 	String getOkOverlayURL();
 
 	/**
-	 * Sets the value of the '
-	 * {@link org.eclipse.emf.ecp.view.template.model.VTControlValidationTemplate#getOkOverlayURL
+	 * Sets the value of the '{@link org.eclipse.emf.ecp.view.template.model.VTControlValidationTemplate#getOkOverlayURL
 	 * <em>Ok Overlay URL</em>}' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -209,8 +206,7 @@
 	String getInfoColorHEX();
 
 	/**
-	 * Sets the value of the '
-	 * {@link org.eclipse.emf.ecp.view.template.model.VTControlValidationTemplate#getInfoColorHEX
+	 * Sets the value of the '{@link org.eclipse.emf.ecp.view.template.model.VTControlValidationTemplate#getInfoColorHEX
 	 * <em>Info Color HEX</em>}' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -231,7 +227,6 @@
 	 *
 	 * @since 1.10
 	 *        <!-- end-user-doc -->
-	 *
 	 * @return the value of the '<em>Info Foreground Color HEX</em>' attribute.
 	 * @see #setInfoForegroundColorHEX(String)
 	 * @see org.eclipse.emf.ecp.view.template.model.VTTemplatePackage#getControlValidationTemplate_InfoForegroundColorHEX()
@@ -241,14 +236,13 @@
 	String getInfoForegroundColorHEX();
 
 	/**
-	 * Sets the value of the '
-	 * {@link org.eclipse.emf.ecp.view.template.model.VTControlValidationTemplate#getInfoForegroundColorHEX
-	 * <em>Info Foreground Color HEX</em>}' attribute.
+	 * Sets the value of the
+	 * '{@link org.eclipse.emf.ecp.view.template.model.VTControlValidationTemplate#getInfoForegroundColorHEX <em>Info
+	 * Foreground Color HEX</em>}' attribute.
 	 * <!-- begin-user-doc -->
 	 *
 	 * @since 1.10
 	 *        <!-- end-user-doc -->
-	 *
 	 * @param value the new value of the '<em>Info Foreground Color HEX</em>' attribute.
 	 * @see #getInfoForegroundColorHEX()
 	 * @generated
@@ -273,8 +267,7 @@
 	String getInfoImageURL();
 
 	/**
-	 * Sets the value of the '
-	 * {@link org.eclipse.emf.ecp.view.template.model.VTControlValidationTemplate#getInfoImageURL
+	 * Sets the value of the '{@link org.eclipse.emf.ecp.view.template.model.VTControlValidationTemplate#getInfoImageURL
 	 * <em>Info Image URL</em>}' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -303,9 +296,9 @@
 	String getInfoOverlayURL();
 
 	/**
-	 * Sets the value of the '
-	 * {@link org.eclipse.emf.ecp.view.template.model.VTControlValidationTemplate#getInfoOverlayURL
-	 * <em>Info Overlay URL</em>}' attribute.
+	 * Sets the value of the
+	 * '{@link org.eclipse.emf.ecp.view.template.model.VTControlValidationTemplate#getInfoOverlayURL <em>Info Overlay
+	 * URL</em>}' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 *
@@ -333,9 +326,9 @@
 	String getWarningColorHEX();
 
 	/**
-	 * Sets the value of the '
-	 * {@link org.eclipse.emf.ecp.view.template.model.VTControlValidationTemplate#getWarningColorHEX
-	 * <em>Warning Color HEX</em>}' attribute.
+	 * Sets the value of the
+	 * '{@link org.eclipse.emf.ecp.view.template.model.VTControlValidationTemplate#getWarningColorHEX <em>Warning Color
+	 * HEX</em>}' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 *
@@ -355,7 +348,6 @@
 	 *
 	 * @since 1.10
 	 *        <!-- end-user-doc -->
-	 *
 	 * @return the value of the '<em>Warning Foreground Color HEX</em>' attribute.
 	 * @see #setWarningForegroundColorHEX(String)
 	 * @see org.eclipse.emf.ecp.view.template.model.VTTemplatePackage#getControlValidationTemplate_WarningForegroundColorHEX()
@@ -365,14 +357,13 @@
 	String getWarningForegroundColorHEX();
 
 	/**
-	 * Sets the value of the '
-	 * {@link org.eclipse.emf.ecp.view.template.model.VTControlValidationTemplate#getWarningForegroundColorHEX
+	 * Sets the value of the
+	 * '{@link org.eclipse.emf.ecp.view.template.model.VTControlValidationTemplate#getWarningForegroundColorHEX
 	 * <em>Warning Foreground Color HEX</em>}' attribute.
 	 * <!-- begin-user-doc -->
 	 *
 	 * @since 1.10
 	 *        <!-- end-user-doc -->
-	 *
 	 * @param value the new value of the '<em>Warning Foreground Color HEX</em>' attribute.
 	 * @see #getWarningForegroundColorHEX()
 	 * @generated
@@ -397,9 +388,9 @@
 	String getWarningImageURL();
 
 	/**
-	 * Sets the value of the '
-	 * {@link org.eclipse.emf.ecp.view.template.model.VTControlValidationTemplate#getWarningImageURL
-	 * <em>Warning Image URL</em>}' attribute.
+	 * Sets the value of the
+	 * '{@link org.eclipse.emf.ecp.view.template.model.VTControlValidationTemplate#getWarningImageURL <em>Warning Image
+	 * URL</em>}' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 *
@@ -427,9 +418,9 @@
 	String getWarningOverlayURL();
 
 	/**
-	 * Sets the value of the '
-	 * {@link org.eclipse.emf.ecp.view.template.model.VTControlValidationTemplate#getWarningOverlayURL
-	 * <em>Warning Overlay URL</em>}' attribute.
+	 * Sets the value of the
+	 * '{@link org.eclipse.emf.ecp.view.template.model.VTControlValidationTemplate#getWarningOverlayURL <em>Warning
+	 * Overlay URL</em>}' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 *
@@ -457,9 +448,9 @@
 	String getErrorColorHEX();
 
 	/**
-	 * Sets the value of the '
-	 * {@link org.eclipse.emf.ecp.view.template.model.VTControlValidationTemplate#getErrorColorHEX
-	 * <em>Error Color HEX</em>}' attribute.
+	 * Sets the value of the
+	 * '{@link org.eclipse.emf.ecp.view.template.model.VTControlValidationTemplate#getErrorColorHEX <em>Error Color
+	 * HEX</em>}' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 *
@@ -479,7 +470,6 @@
 	 *
 	 * @since 1.10
 	 *        <!-- end-user-doc -->
-	 *
 	 * @return the value of the '<em>Error Foreground Color HEX</em>' attribute.
 	 * @see #setErrorForegroundColorHEX(String)
 	 * @see org.eclipse.emf.ecp.view.template.model.VTTemplatePackage#getControlValidationTemplate_ErrorForegroundColorHEX()
@@ -489,14 +479,13 @@
 	String getErrorForegroundColorHEX();
 
 	/**
-	 * Sets the value of the '
-	 * {@link org.eclipse.emf.ecp.view.template.model.VTControlValidationTemplate#getErrorForegroundColorHEX
-	 * <em>Error Foreground Color HEX</em>}' attribute.
+	 * Sets the value of the
+	 * '{@link org.eclipse.emf.ecp.view.template.model.VTControlValidationTemplate#getErrorForegroundColorHEX <em>Error
+	 * Foreground Color HEX</em>}' attribute.
 	 * <!-- begin-user-doc -->
 	 *
 	 * @since 1.10
 	 *        <!-- end-user-doc -->
-	 *
 	 * @param value the new value of the '<em>Error Foreground Color HEX</em>' attribute.
 	 * @see #getErrorForegroundColorHEX()
 	 * @generated
@@ -521,9 +510,9 @@
 	String getErrorImageURL();
 
 	/**
-	 * Sets the value of the '
-	 * {@link org.eclipse.emf.ecp.view.template.model.VTControlValidationTemplate#getErrorImageURL
-	 * <em>Error Image URL</em>}' attribute.
+	 * Sets the value of the
+	 * '{@link org.eclipse.emf.ecp.view.template.model.VTControlValidationTemplate#getErrorImageURL <em>Error Image
+	 * URL</em>}' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 *
@@ -551,9 +540,9 @@
 	String getErrorOverlayURL();
 
 	/**
-	 * Sets the value of the '
-	 * {@link org.eclipse.emf.ecp.view.template.model.VTControlValidationTemplate#getErrorOverlayURL
-	 * <em>Error Overlay URL</em>}' attribute.
+	 * Sets the value of the
+	 * '{@link org.eclipse.emf.ecp.view.template.model.VTControlValidationTemplate#getErrorOverlayURL <em>Error Overlay
+	 * URL</em>}' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 *
@@ -581,9 +570,9 @@
 	String getCancelColorHEX();
 
 	/**
-	 * Sets the value of the '
-	 * {@link org.eclipse.emf.ecp.view.template.model.VTControlValidationTemplate#getCancelColorHEX
-	 * <em>Cancel Color HEX</em>}' attribute.
+	 * Sets the value of the
+	 * '{@link org.eclipse.emf.ecp.view.template.model.VTControlValidationTemplate#getCancelColorHEX <em>Cancel Color
+	 * HEX</em>}' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 *
@@ -603,7 +592,6 @@
 	 *
 	 * @since 1.10
 	 *        <!-- end-user-doc -->
-	 *
 	 * @return the value of the '<em>Cancel Foreground Color HEX</em>' attribute.
 	 * @see #setCancelForegroundColorHEX(String)
 	 * @see org.eclipse.emf.ecp.view.template.model.VTTemplatePackage#getControlValidationTemplate_CancelForegroundColorHEX()
@@ -613,14 +601,13 @@
 	String getCancelForegroundColorHEX();
 
 	/**
-	 * Sets the value of the '
-	 * {@link org.eclipse.emf.ecp.view.template.model.VTControlValidationTemplate#getCancelForegroundColorHEX
+	 * Sets the value of the
+	 * '{@link org.eclipse.emf.ecp.view.template.model.VTControlValidationTemplate#getCancelForegroundColorHEX
 	 * <em>Cancel Foreground Color HEX</em>}' attribute.
 	 * <!-- begin-user-doc -->
-	 * 
+	 *
 	 * @since 1.10
 	 *        <!-- end-user-doc -->
-	 *
 	 * @param value the new value of the '<em>Cancel Foreground Color HEX</em>' attribute.
 	 * @see #getCancelForegroundColorHEX()
 	 * @generated
@@ -645,9 +632,9 @@
 	String getCancelImageURL();
 
 	/**
-	 * Sets the value of the '
-	 * {@link org.eclipse.emf.ecp.view.template.model.VTControlValidationTemplate#getCancelImageURL
-	 * <em>Cancel Image URL</em>}' attribute.
+	 * Sets the value of the
+	 * '{@link org.eclipse.emf.ecp.view.template.model.VTControlValidationTemplate#getCancelImageURL <em>Cancel Image
+	 * URL</em>}' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 *
@@ -675,9 +662,9 @@
 	String getCancelOverlayURL();
 
 	/**
-	 * Sets the value of the '
-	 * {@link org.eclipse.emf.ecp.view.template.model.VTControlValidationTemplate#getCancelOverlayURL
-	 * <em>Cancel Overlay URL</em>}' attribute.
+	 * Sets the value of the
+	 * '{@link org.eclipse.emf.ecp.view.template.model.VTControlValidationTemplate#getCancelOverlayURL <em>Cancel
+	 * Overlay URL</em>}' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 *
diff --git a/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/model/VTMultiStyleSelectorContainer.java b/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/model/VTMultiStyleSelectorContainer.java
new file mode 100644
index 0000000..678e9ac
--- /dev/null
+++ b/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/model/VTMultiStyleSelectorContainer.java
@@ -0,0 +1,54 @@
+/**
+ * Copyright (c) 2011-2014 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
+ */
+package org.eclipse.emf.ecp.view.template.model;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Multi Style Selector Container</b></em>'.
+ *
+ * @since 1.17
+ *        <!-- end-user-doc -->
+ *
+ *        <p>
+ *        The following features are supported:
+ *        </p>
+ *        <ul>
+ *        <li>{@link org.eclipse.emf.ecp.view.template.model.VTMultiStyleSelectorContainer#getSelectors
+ *        <em>Selectors</em>}</li>
+ *        </ul>
+ *
+ * @see org.eclipse.emf.ecp.view.template.model.VTTemplatePackage#getMultiStyleSelectorContainer()
+ * @model abstract="true"
+ * @generated
+ */
+public interface VTMultiStyleSelectorContainer extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Selectors</b></em>' containment reference list.
+	 * The list contents are of type {@link org.eclipse.emf.ecp.view.template.model.VTStyleSelector}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Selectors</em>' containment reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Selectors</em>' containment reference list.
+	 * @see org.eclipse.emf.ecp.view.template.model.VTTemplatePackage#getMultiStyleSelectorContainer_Selectors()
+	 * @model containment="true" lower="2"
+	 * @generated
+	 */
+	EList<VTStyleSelector> getSelectors();
+
+} // VTMultiStyleSelectorContainer
diff --git a/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/model/VTStyle.java b/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/model/VTStyle.java
index f5d6d4c..eb2eb63 100644
--- a/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/model/VTStyle.java
+++ b/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/model/VTStyle.java
@@ -12,7 +12,6 @@
 package org.eclipse.emf.ecp.view.template.model;
 
 import org.eclipse.emf.common.util.EList;
-import org.eclipse.emf.ecore.EObject;
 
 /**
  * <!-- begin-user-doc -->
@@ -21,47 +20,16 @@
  *
  * <p>
  * The following features are supported:
+ * </p>
  * <ul>
- * <li>{@link org.eclipse.emf.ecp.view.template.model.VTStyle#getSelector <em>Selector</em>}</li>
  * <li>{@link org.eclipse.emf.ecp.view.template.model.VTStyle#getProperties <em>Properties</em>}</li>
  * </ul>
- * </p>
  *
  * @see org.eclipse.emf.ecp.view.template.model.VTTemplatePackage#getStyle()
  * @model
  * @generated
  */
-public interface VTStyle extends EObject
-{
-	/**
-	 * Returns the value of the '<em><b>Selector</b></em>' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <p>
-	 * If the meaning of the '<em>Selector</em>' containment reference isn't clear, there really should be more of a
-	 * description here...
-	 * </p>
-	 * <!-- end-user-doc -->
-	 *
-	 * @return the value of the '<em>Selector</em>' containment reference.
-	 * @see #setSelector(VTStyleSelector)
-	 * @see org.eclipse.emf.ecp.view.template.model.VTTemplatePackage#getStyle_Selector()
-	 * @model containment="true" required="true"
-	 * @generated
-	 */
-	VTStyleSelector getSelector();
-
-	/**
-	 * Sets the value of the '{@link org.eclipse.emf.ecp.view.template.model.VTStyle#getSelector <em>Selector</em>}'
-	 * containment reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 *
-	 * @param value the new value of the '<em>Selector</em>' containment reference.
-	 * @see #getSelector()
-	 * @generated
-	 */
-	void setSelector(VTStyleSelector value);
-
+public interface VTStyle extends VTStyleSelectorContainer {
 	/**
 	 * Returns the value of the '<em><b>Properties</b></em>' containment reference list.
 	 * The list contents are of type {@link org.eclipse.emf.ecp.view.template.model.VTStyleProperty}.
diff --git a/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/model/VTStyleProperty.java b/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/model/VTStyleProperty.java
index 121281e..0722eae 100644
--- a/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/model/VTStyleProperty.java
+++ b/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/model/VTStyleProperty.java
@@ -23,8 +23,7 @@
  * @model interface="true" abstract="true"
  * @generated
  */
-public interface VTStyleProperty extends EObject
-{
+public interface VTStyleProperty extends EObject {
 
 	/**
 	 * Compare this {@link VTStyleProperty} with another.
diff --git a/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/model/VTStyleSelector.java b/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/model/VTStyleSelector.java
index 41704a1..2f5adeb 100644
--- a/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/model/VTStyleSelector.java
+++ b/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/model/VTStyleSelector.java
@@ -25,8 +25,7 @@
  * @model interface="true" abstract="true"
  * @generated
  */
-public interface VTStyleSelector extends EObject
-{
+public interface VTStyleSelector extends EObject {
 
 	/**
 	 * Return this constant if the selector is not applicable.
diff --git a/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/model/VTStyleSelectorContainer.java b/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/model/VTStyleSelectorContainer.java
new file mode 100644
index 0000000..d51e639
--- /dev/null
+++ b/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/model/VTStyleSelectorContainer.java
@@ -0,0 +1,65 @@
+/**
+ * Copyright (c) 2011-2014 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
+ */
+package org.eclipse.emf.ecp.view.template.model;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Style Selector Container</b></em>'.
+ *
+ * @since 1.17
+ *        <!-- end-user-doc -->
+ *
+ *        <p>
+ *        The following features are supported:
+ *        </p>
+ *        <ul>
+ *        <li>{@link org.eclipse.emf.ecp.view.template.model.VTStyleSelectorContainer#getSelector
+ *        <em>Selector</em>}</li>
+ *        </ul>
+ *
+ * @see org.eclipse.emf.ecp.view.template.model.VTTemplatePackage#getStyleSelectorContainer()
+ * @model abstract="true"
+ * @generated
+ */
+public interface VTStyleSelectorContainer extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Selector</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Selector</em>' containment reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Selector</em>' containment reference.
+	 * @see #setSelector(VTStyleSelector)
+	 * @see org.eclipse.emf.ecp.view.template.model.VTTemplatePackage#getStyleSelectorContainer_Selector()
+	 * @model containment="true" required="true"
+	 * @generated
+	 */
+	VTStyleSelector getSelector();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.emf.ecp.view.template.model.VTStyleSelectorContainer#getSelector
+	 * <em>Selector</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value the new value of the '<em>Selector</em>' containment reference.
+	 * @see #getSelector()
+	 * @generated
+	 */
+	void setSelector(VTStyleSelector value);
+
+} // VTStyleSelectorContainer
diff --git a/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/model/VTTemplateFactory.java b/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/model/VTTemplateFactory.java
index 58eceb9..12834d6 100644
--- a/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/model/VTTemplateFactory.java
+++ b/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/model/VTTemplateFactory.java
@@ -22,8 +22,7 @@
  * @see org.eclipse.emf.ecp.view.template.model.VTTemplatePackage
  * @generated
  */
-public interface VTTemplateFactory extends EFactory
-{
+public interface VTTemplateFactory extends EFactory {
 	/**
 	 * The singleton instance of the factory.
 	 * <!-- begin-user-doc -->
diff --git a/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/model/VTTemplatePackage.java b/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/model/VTTemplatePackage.java
index 727af0b..ae017fb 100644
--- a/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/model/VTTemplatePackage.java
+++ b/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/model/VTTemplatePackage.java
@@ -71,8 +71,8 @@
 	VTTemplatePackage eINSTANCE = org.eclipse.emf.ecp.view.template.model.impl.VTTemplatePackageImpl.init();
 
 	/**
-	 * The meta object id for the '{@link org.eclipse.emf.ecp.view.template.model.impl.VTViewTemplateImpl
-	 * <em>View Template</em>}' class.
+	 * The meta object id for the '{@link org.eclipse.emf.ecp.view.template.model.impl.VTViewTemplateImpl <em>View
+	 * Template</em>}' class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 *
@@ -160,7 +160,6 @@
 	 *
 	 * @since 1.10
 	 *        <!-- end-user-doc -->
-	 *
 	 * @generated
 	 * @ordered
 	 */
@@ -199,10 +198,9 @@
 	/**
 	 * The feature id for the '<em><b>Info Foreground Color HEX</b></em>' attribute.
 	 * <!-- begin-user-doc -->
-	 * 
+	 *
 	 * @since 1.10
 	 *        <!-- end-user-doc -->
-	 *
 	 * @generated
 	 * @ordered
 	 */
@@ -241,10 +239,9 @@
 	/**
 	 * The feature id for the '<em><b>Warning Foreground Color HEX</b></em>' attribute.
 	 * <!-- begin-user-doc -->
-	 * 
+	 *
 	 * @since 1.10
 	 *        <!-- end-user-doc -->
-	 *
 	 * @generated
 	 * @ordered
 	 */
@@ -283,10 +280,9 @@
 	/**
 	 * The feature id for the '<em><b>Error Foreground Color HEX</b></em>' attribute.
 	 * <!-- begin-user-doc -->
-	 * 
+	 *
 	 * @since 1.10
 	 *        <!-- end-user-doc -->
-	 *
 	 * @generated
 	 * @ordered
 	 */
@@ -325,10 +321,9 @@
 	/**
 	 * The feature id for the '<em><b>Cancel Foreground Color HEX</b></em>' attribute.
 	 * <!-- begin-user-doc -->
-	 * 
+	 *
 	 * @since 1.10
 	 *        <!-- end-user-doc -->
-	 *
 	 * @generated
 	 * @ordered
 	 */
@@ -375,6 +370,52 @@
 	int CONTROL_VALIDATION_TEMPLATE_OPERATION_COUNT = 0;
 
 	/**
+	 * The meta object id for the '{@link org.eclipse.emf.ecp.view.template.model.impl.VTStyleSelectorContainerImpl
+	 * <em>Style Selector Container</em>}' class.
+	 * <!-- begin-user-doc -->
+	 *
+	 * @since 1.17
+	 *        <!-- end-user-doc -->
+	 * @see org.eclipse.emf.ecp.view.template.model.impl.VTStyleSelectorContainerImpl
+	 * @see org.eclipse.emf.ecp.view.template.model.impl.VTTemplatePackageImpl#getStyleSelectorContainer()
+	 * @generated
+	 */
+	int STYLE_SELECTOR_CONTAINER = 5;
+
+	/**
+	 * The feature id for the '<em><b>Selector</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 *
+	 * @since 1.17
+	 *        <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STYLE_SELECTOR_CONTAINER__SELECTOR = 0;
+
+	/**
+	 * The number of structural features of the '<em>Style Selector Container</em>' class.
+	 * <!-- begin-user-doc -->
+	 *
+	 * @since 1.17
+	 *        <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STYLE_SELECTOR_CONTAINER_FEATURE_COUNT = 1;
+
+	/**
+	 * The number of operations of the '<em>Style Selector Container</em>' class.
+	 * <!-- begin-user-doc -->
+	 *
+	 * @since 1.17
+	 *        <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STYLE_SELECTOR_CONTAINER_OPERATION_COUNT = 0;
+
+	/**
 	 * The meta object id for the '{@link org.eclipse.emf.ecp.view.template.model.impl.VTStyleImpl <em>Style</em>}'
 	 * class.
 	 * <!-- begin-user-doc -->
@@ -394,7 +435,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int STYLE__SELECTOR = 0;
+	int STYLE__SELECTOR = STYLE_SELECTOR_CONTAINER__SELECTOR;
 
 	/**
 	 * The feature id for the '<em><b>Properties</b></em>' containment reference list.
@@ -404,7 +445,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int STYLE__PROPERTIES = 1;
+	int STYLE__PROPERTIES = STYLE_SELECTOR_CONTAINER_FEATURE_COUNT + 0;
 
 	/**
 	 * The number of structural features of the '<em>Style</em>' class.
@@ -414,7 +455,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int STYLE_FEATURE_COUNT = 2;
+	int STYLE_FEATURE_COUNT = STYLE_SELECTOR_CONTAINER_FEATURE_COUNT + 1;
 
 	/**
 	 * The number of operations of the '<em>Style</em>' class.
@@ -424,11 +465,11 @@
 	 * @generated
 	 * @ordered
 	 */
-	int STYLE_OPERATION_COUNT = 0;
+	int STYLE_OPERATION_COUNT = STYLE_SELECTOR_CONTAINER_OPERATION_COUNT + 0;
 
 	/**
-	 * The meta object id for the '{@link org.eclipse.emf.ecp.view.template.model.VTStyleProperty
-	 * <em>Style Property</em>}' class.
+	 * The meta object id for the '{@link org.eclipse.emf.ecp.view.template.model.VTStyleProperty <em>Style
+	 * Property</em>}' class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 *
@@ -459,8 +500,8 @@
 	int STYLE_PROPERTY_OPERATION_COUNT = 0;
 
 	/**
-	 * The meta object id for the '{@link org.eclipse.emf.ecp.view.template.model.VTStyleSelector
-	 * <em>Style Selector</em>}' class.
+	 * The meta object id for the '{@link org.eclipse.emf.ecp.view.template.model.VTStyleSelector <em>Style
+	 * Selector</em>}' class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 *
@@ -491,8 +532,55 @@
 	int STYLE_SELECTOR_OPERATION_COUNT = 0;
 
 	/**
-	 * Returns the meta object for class '{@link org.eclipse.emf.ecp.view.template.model.VTViewTemplate
-	 * <em>View Template</em>}'.
+	 * The meta object id for the '{@link org.eclipse.emf.ecp.view.template.model.impl.VTMultiStyleSelectorContainerImpl
+	 * <em>Multi Style Selector Container</em>}' class.
+	 * <!-- begin-user-doc -->
+	 *
+	 * @since 1.17
+	 *        <!-- end-user-doc -->
+	 * @see org.eclipse.emf.ecp.view.template.model.impl.VTMultiStyleSelectorContainerImpl
+	 * @see org.eclipse.emf.ecp.view.template.model.impl.VTTemplatePackageImpl#getMultiStyleSelectorContainer()
+	 * @generated
+	 */
+	int MULTI_STYLE_SELECTOR_CONTAINER = 6;
+
+	/**
+	 * The feature id for the '<em><b>Selectors</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 *
+	 * @since 1.17
+	 *        <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int MULTI_STYLE_SELECTOR_CONTAINER__SELECTORS = 0;
+
+	/**
+	 * The number of structural features of the '<em>Multi Style Selector Container</em>' class.
+	 * <!-- begin-user-doc -->
+	 *
+	 * @since 1.17
+	 *        <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MULTI_STYLE_SELECTOR_CONTAINER_FEATURE_COUNT = 1;
+
+	/**
+	 * The number of operations of the '<em>Multi Style Selector Container</em>' class.
+	 * <!-- begin-user-doc -->
+	 *
+	 * @since 1.17
+	 *        <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MULTI_STYLE_SELECTOR_CONTAINER_OPERATION_COUNT = 0;
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.emf.ecp.view.template.model.VTViewTemplate <em>View
+	 * Template</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 *
@@ -503,9 +591,9 @@
 	EClass getViewTemplate();
 
 	/**
-	 * Returns the meta object for the containment reference '
-	 * {@link org.eclipse.emf.ecp.view.template.model.VTViewTemplate#getControlValidationConfiguration
-	 * <em>Control Validation Configuration</em>}'.
+	 * Returns the meta object for the containment reference
+	 * '{@link org.eclipse.emf.ecp.view.template.model.VTViewTemplate#getControlValidationConfiguration <em>Control
+	 * Validation Configuration</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 *
@@ -517,8 +605,8 @@
 	EReference getViewTemplate_ControlValidationConfiguration();
 
 	/**
-	 * Returns the meta object for the containment reference list '
-	 * {@link org.eclipse.emf.ecp.view.template.model.VTViewTemplate#getStyles <em>Styles</em>}'.
+	 * Returns the meta object for the containment reference list
+	 * '{@link org.eclipse.emf.ecp.view.template.model.VTViewTemplate#getStyles <em>Styles</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 *
@@ -530,8 +618,8 @@
 	EReference getViewTemplate_Styles();
 
 	/**
-	 * Returns the meta object for the attribute list '
-	 * {@link org.eclipse.emf.ecp.view.template.model.VTViewTemplate#getReferencedEcores <em>Referenced Ecores</em>}'.
+	 * Returns the meta object for the attribute list
+	 * '{@link org.eclipse.emf.ecp.view.template.model.VTViewTemplate#getReferencedEcores <em>Referenced Ecores</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 *
@@ -555,8 +643,9 @@
 	EClass getControlValidationTemplate();
 
 	/**
-	 * Returns the meta object for the attribute '
-	 * {@link org.eclipse.emf.ecp.view.template.model.VTControlValidationTemplate#getOkColorHEX <em>Ok Color HEX</em>}'.
+	 * Returns the meta object for the attribute
+	 * '{@link org.eclipse.emf.ecp.view.template.model.VTControlValidationTemplate#getOkColorHEX <em>Ok Color
+	 * HEX</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 *
@@ -568,14 +657,13 @@
 	EAttribute getControlValidationTemplate_OkColorHEX();
 
 	/**
-	 * Returns the meta object for the attribute '
-	 * {@link org.eclipse.emf.ecp.view.template.model.VTControlValidationTemplate#getOkForegroundColorHEX
-	 * <em>Ok Foreground Color HEX</em>}'.
+	 * Returns the meta object for the attribute
+	 * '{@link org.eclipse.emf.ecp.view.template.model.VTControlValidationTemplate#getOkForegroundColorHEX <em>Ok
+	 * Foreground Color HEX</em>}'.
 	 * <!-- begin-user-doc -->
-	 * 
+	 *
 	 * @since 1.10
 	 *        <!-- end-user-doc -->
-	 *
 	 * @return the meta object for the attribute '<em>Ok Foreground Color HEX</em>'.
 	 * @see org.eclipse.emf.ecp.view.template.model.VTControlValidationTemplate#getOkForegroundColorHEX()
 	 * @see #getControlValidationTemplate()
@@ -584,8 +672,9 @@
 	EAttribute getControlValidationTemplate_OkForegroundColorHEX();
 
 	/**
-	 * Returns the meta object for the attribute '
-	 * {@link org.eclipse.emf.ecp.view.template.model.VTControlValidationTemplate#getOkImageURL <em>Ok Image URL</em>}'.
+	 * Returns the meta object for the attribute
+	 * '{@link org.eclipse.emf.ecp.view.template.model.VTControlValidationTemplate#getOkImageURL <em>Ok Image
+	 * URL</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 *
@@ -597,9 +686,9 @@
 	EAttribute getControlValidationTemplate_OkImageURL();
 
 	/**
-	 * Returns the meta object for the attribute '
-	 * {@link org.eclipse.emf.ecp.view.template.model.VTControlValidationTemplate#getOkOverlayURL
-	 * <em>Ok Overlay URL</em>}'.
+	 * Returns the meta object for the attribute
+	 * '{@link org.eclipse.emf.ecp.view.template.model.VTControlValidationTemplate#getOkOverlayURL <em>Ok Overlay
+	 * URL</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 *
@@ -611,9 +700,9 @@
 	EAttribute getControlValidationTemplate_OkOverlayURL();
 
 	/**
-	 * Returns the meta object for the attribute '
-	 * {@link org.eclipse.emf.ecp.view.template.model.VTControlValidationTemplate#getInfoColorHEX
-	 * <em>Info Color HEX</em>}'.
+	 * Returns the meta object for the attribute
+	 * '{@link org.eclipse.emf.ecp.view.template.model.VTControlValidationTemplate#getInfoColorHEX <em>Info Color
+	 * HEX</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 *
@@ -625,14 +714,13 @@
 	EAttribute getControlValidationTemplate_InfoColorHEX();
 
 	/**
-	 * Returns the meta object for the attribute '
-	 * {@link org.eclipse.emf.ecp.view.template.model.VTControlValidationTemplate#getInfoForegroundColorHEX
-	 * <em>Info Foreground Color HEX</em>}'.
+	 * Returns the meta object for the attribute
+	 * '{@link org.eclipse.emf.ecp.view.template.model.VTControlValidationTemplate#getInfoForegroundColorHEX <em>Info
+	 * Foreground Color HEX</em>}'.
 	 * <!-- begin-user-doc -->
-	 * 
+	 *
 	 * @since 1.10
 	 *        <!-- end-user-doc -->
-	 *
 	 * @return the meta object for the attribute '<em>Info Foreground Color HEX</em>'.
 	 * @see org.eclipse.emf.ecp.view.template.model.VTControlValidationTemplate#getInfoForegroundColorHEX()
 	 * @see #getControlValidationTemplate()
@@ -641,9 +729,9 @@
 	EAttribute getControlValidationTemplate_InfoForegroundColorHEX();
 
 	/**
-	 * Returns the meta object for the attribute '
-	 * {@link org.eclipse.emf.ecp.view.template.model.VTControlValidationTemplate#getInfoImageURL
-	 * <em>Info Image URL</em>}'.
+	 * Returns the meta object for the attribute
+	 * '{@link org.eclipse.emf.ecp.view.template.model.VTControlValidationTemplate#getInfoImageURL <em>Info Image
+	 * URL</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 *
@@ -655,9 +743,9 @@
 	EAttribute getControlValidationTemplate_InfoImageURL();
 
 	/**
-	 * Returns the meta object for the attribute '
-	 * {@link org.eclipse.emf.ecp.view.template.model.VTControlValidationTemplate#getInfoOverlayURL
-	 * <em>Info Overlay URL</em>}'.
+	 * Returns the meta object for the attribute
+	 * '{@link org.eclipse.emf.ecp.view.template.model.VTControlValidationTemplate#getInfoOverlayURL <em>Info Overlay
+	 * URL</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 *
@@ -669,9 +757,9 @@
 	EAttribute getControlValidationTemplate_InfoOverlayURL();
 
 	/**
-	 * Returns the meta object for the attribute '
-	 * {@link org.eclipse.emf.ecp.view.template.model.VTControlValidationTemplate#getWarningColorHEX
-	 * <em>Warning Color HEX</em>}'.
+	 * Returns the meta object for the attribute
+	 * '{@link org.eclipse.emf.ecp.view.template.model.VTControlValidationTemplate#getWarningColorHEX <em>Warning Color
+	 * HEX</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 *
@@ -683,14 +771,13 @@
 	EAttribute getControlValidationTemplate_WarningColorHEX();
 
 	/**
-	 * Returns the meta object for the attribute '
-	 * {@link org.eclipse.emf.ecp.view.template.model.VTControlValidationTemplate#getWarningForegroundColorHEX
+	 * Returns the meta object for the attribute
+	 * '{@link org.eclipse.emf.ecp.view.template.model.VTControlValidationTemplate#getWarningForegroundColorHEX
 	 * <em>Warning Foreground Color HEX</em>}'.
 	 * <!-- begin-user-doc -->
-	 * 
+	 *
 	 * @since 1.10
 	 *        <!-- end-user-doc -->
-	 *
 	 * @return the meta object for the attribute '<em>Warning Foreground Color HEX</em>'.
 	 * @see org.eclipse.emf.ecp.view.template.model.VTControlValidationTemplate#getWarningForegroundColorHEX()
 	 * @see #getControlValidationTemplate()
@@ -699,9 +786,9 @@
 	EAttribute getControlValidationTemplate_WarningForegroundColorHEX();
 
 	/**
-	 * Returns the meta object for the attribute '
-	 * {@link org.eclipse.emf.ecp.view.template.model.VTControlValidationTemplate#getWarningImageURL
-	 * <em>Warning Image URL</em>}'.
+	 * Returns the meta object for the attribute
+	 * '{@link org.eclipse.emf.ecp.view.template.model.VTControlValidationTemplate#getWarningImageURL <em>Warning Image
+	 * URL</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 *
@@ -713,9 +800,9 @@
 	EAttribute getControlValidationTemplate_WarningImageURL();
 
 	/**
-	 * Returns the meta object for the attribute '
-	 * {@link org.eclipse.emf.ecp.view.template.model.VTControlValidationTemplate#getWarningOverlayURL
-	 * <em>Warning Overlay URL</em>}'.
+	 * Returns the meta object for the attribute
+	 * '{@link org.eclipse.emf.ecp.view.template.model.VTControlValidationTemplate#getWarningOverlayURL <em>Warning
+	 * Overlay URL</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 *
@@ -727,9 +814,9 @@
 	EAttribute getControlValidationTemplate_WarningOverlayURL();
 
 	/**
-	 * Returns the meta object for the attribute '
-	 * {@link org.eclipse.emf.ecp.view.template.model.VTControlValidationTemplate#getErrorColorHEX
-	 * <em>Error Color HEX</em>}'.
+	 * Returns the meta object for the attribute
+	 * '{@link org.eclipse.emf.ecp.view.template.model.VTControlValidationTemplate#getErrorColorHEX <em>Error Color
+	 * HEX</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 *
@@ -741,14 +828,13 @@
 	EAttribute getControlValidationTemplate_ErrorColorHEX();
 
 	/**
-	 * Returns the meta object for the attribute '
-	 * {@link org.eclipse.emf.ecp.view.template.model.VTControlValidationTemplate#getErrorForegroundColorHEX
-	 * <em>Error Foreground Color HEX</em>}'.
+	 * Returns the meta object for the attribute
+	 * '{@link org.eclipse.emf.ecp.view.template.model.VTControlValidationTemplate#getErrorForegroundColorHEX <em>Error
+	 * Foreground Color HEX</em>}'.
 	 * <!-- begin-user-doc -->
-	 * 
+	 *
 	 * @since 1.10
 	 *        <!-- end-user-doc -->
-	 *
 	 * @return the meta object for the attribute '<em>Error Foreground Color HEX</em>'.
 	 * @see org.eclipse.emf.ecp.view.template.model.VTControlValidationTemplate#getErrorForegroundColorHEX()
 	 * @see #getControlValidationTemplate()
@@ -757,9 +843,9 @@
 	EAttribute getControlValidationTemplate_ErrorForegroundColorHEX();
 
 	/**
-	 * Returns the meta object for the attribute '
-	 * {@link org.eclipse.emf.ecp.view.template.model.VTControlValidationTemplate#getErrorImageURL
-	 * <em>Error Image URL</em>}'.
+	 * Returns the meta object for the attribute
+	 * '{@link org.eclipse.emf.ecp.view.template.model.VTControlValidationTemplate#getErrorImageURL <em>Error Image
+	 * URL</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 *
@@ -771,9 +857,9 @@
 	EAttribute getControlValidationTemplate_ErrorImageURL();
 
 	/**
-	 * Returns the meta object for the attribute '
-	 * {@link org.eclipse.emf.ecp.view.template.model.VTControlValidationTemplate#getErrorOverlayURL
-	 * <em>Error Overlay URL</em>}'.
+	 * Returns the meta object for the attribute
+	 * '{@link org.eclipse.emf.ecp.view.template.model.VTControlValidationTemplate#getErrorOverlayURL <em>Error Overlay
+	 * URL</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 *
@@ -785,9 +871,9 @@
 	EAttribute getControlValidationTemplate_ErrorOverlayURL();
 
 	/**
-	 * Returns the meta object for the attribute '
-	 * {@link org.eclipse.emf.ecp.view.template.model.VTControlValidationTemplate#getCancelColorHEX
-	 * <em>Cancel Color HEX</em>}'.
+	 * Returns the meta object for the attribute
+	 * '{@link org.eclipse.emf.ecp.view.template.model.VTControlValidationTemplate#getCancelColorHEX <em>Cancel Color
+	 * HEX</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 *
@@ -799,14 +885,13 @@
 	EAttribute getControlValidationTemplate_CancelColorHEX();
 
 	/**
-	 * Returns the meta object for the attribute '
-	 * {@link org.eclipse.emf.ecp.view.template.model.VTControlValidationTemplate#getCancelForegroundColorHEX
+	 * Returns the meta object for the attribute
+	 * '{@link org.eclipse.emf.ecp.view.template.model.VTControlValidationTemplate#getCancelForegroundColorHEX
 	 * <em>Cancel Foreground Color HEX</em>}'.
 	 * <!-- begin-user-doc -->
-	 * 
+	 *
 	 * @since 1.10
 	 *        <!-- end-user-doc -->
-	 *
 	 * @return the meta object for the attribute '<em>Cancel Foreground Color HEX</em>'.
 	 * @see org.eclipse.emf.ecp.view.template.model.VTControlValidationTemplate#getCancelForegroundColorHEX()
 	 * @see #getControlValidationTemplate()
@@ -815,9 +900,9 @@
 	EAttribute getControlValidationTemplate_CancelForegroundColorHEX();
 
 	/**
-	 * Returns the meta object for the attribute '
-	 * {@link org.eclipse.emf.ecp.view.template.model.VTControlValidationTemplate#getCancelImageURL
-	 * <em>Cancel Image URL</em>}'.
+	 * Returns the meta object for the attribute
+	 * '{@link org.eclipse.emf.ecp.view.template.model.VTControlValidationTemplate#getCancelImageURL <em>Cancel Image
+	 * URL</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 *
@@ -829,9 +914,9 @@
 	EAttribute getControlValidationTemplate_CancelImageURL();
 
 	/**
-	 * Returns the meta object for the attribute '
-	 * {@link org.eclipse.emf.ecp.view.template.model.VTControlValidationTemplate#getCancelOverlayURL
-	 * <em>Cancel Overlay URL</em>}'.
+	 * Returns the meta object for the attribute
+	 * '{@link org.eclipse.emf.ecp.view.template.model.VTControlValidationTemplate#getCancelOverlayURL <em>Cancel
+	 * Overlay URL</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 *
@@ -854,21 +939,8 @@
 	EClass getStyle();
 
 	/**
-	 * Returns the meta object for the containment reference '
-	 * {@link org.eclipse.emf.ecp.view.template.model.VTStyle#getSelector <em>Selector</em>}'.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 *
-	 * @return the meta object for the containment reference '<em>Selector</em>'.
-	 * @see org.eclipse.emf.ecp.view.template.model.VTStyle#getSelector()
-	 * @see #getStyle()
-	 * @generated
-	 */
-	EReference getStyle_Selector();
-
-	/**
-	 * Returns the meta object for the containment reference list '
-	 * {@link org.eclipse.emf.ecp.view.template.model.VTStyle#getProperties <em>Properties</em>}'.
+	 * Returns the meta object for the containment reference list
+	 * '{@link org.eclipse.emf.ecp.view.template.model.VTStyle#getProperties <em>Properties</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 *
@@ -880,8 +952,8 @@
 	EReference getStyle_Properties();
 
 	/**
-	 * Returns the meta object for class '{@link org.eclipse.emf.ecp.view.template.model.VTStyleProperty
-	 * <em>Style Property</em>}'.
+	 * Returns the meta object for class '{@link org.eclipse.emf.ecp.view.template.model.VTStyleProperty <em>Style
+	 * Property</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 *
@@ -892,8 +964,8 @@
 	EClass getStyleProperty();
 
 	/**
-	 * Returns the meta object for class '{@link org.eclipse.emf.ecp.view.template.model.VTStyleSelector
-	 * <em>Style Selector</em>}'.
+	 * Returns the meta object for class '{@link org.eclipse.emf.ecp.view.template.model.VTStyleSelector <em>Style
+	 * Selector</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 *
@@ -904,6 +976,61 @@
 	EClass getStyleSelector();
 
 	/**
+	 * Returns the meta object for class '{@link org.eclipse.emf.ecp.view.template.model.VTStyleSelectorContainer
+	 * <em>Style Selector Container</em>}'.
+	 * <!-- begin-user-doc -->
+	 *
+	 * @since 1.17
+	 *        <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Style Selector Container</em>'.
+	 * @see org.eclipse.emf.ecp.view.template.model.VTStyleSelectorContainer
+	 * @generated
+	 */
+	EClass getStyleSelectorContainer();
+
+	/**
+	 * Returns the meta object for the containment reference
+	 * '{@link org.eclipse.emf.ecp.view.template.model.VTStyleSelectorContainer#getSelector <em>Selector</em>}'.
+	 * <!-- begin-user-doc -->
+	 *
+	 * @since 1.17
+	 *        <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Selector</em>'.
+	 * @see org.eclipse.emf.ecp.view.template.model.VTStyleSelectorContainer#getSelector()
+	 * @see #getStyleSelectorContainer()
+	 * @generated
+	 */
+	EReference getStyleSelectorContainer_Selector();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.emf.ecp.view.template.model.VTMultiStyleSelectorContainer
+	 * <em>Multi Style Selector Container</em>}'.
+	 * <!-- begin-user-doc -->
+	 *
+	 * @since 1.17
+	 *        <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Multi Style Selector Container</em>'.
+	 * @see org.eclipse.emf.ecp.view.template.model.VTMultiStyleSelectorContainer
+	 * @generated
+	 */
+	EClass getMultiStyleSelectorContainer();
+
+	/**
+	 * Returns the meta object for the containment reference list
+	 * '{@link org.eclipse.emf.ecp.view.template.model.VTMultiStyleSelectorContainer#getSelectors <em>Selectors</em>}'.
+	 * <!-- begin-user-doc -->
+	 *
+	 * @since 1.17
+	 *        <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the containment reference list '<em>Selectors</em>'.
+	 * @see org.eclipse.emf.ecp.view.template.model.VTMultiStyleSelectorContainer#getSelectors()
+	 * @see #getMultiStyleSelectorContainer()
+	 * @generated
+	 */
+	EReference getMultiStyleSelectorContainer_Selectors();
+
+	/**
 	 * Returns the factory that creates the instances of the model.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -970,9 +1097,9 @@
 		EAttribute VIEW_TEMPLATE__REFERENCED_ECORES = eINSTANCE.getViewTemplate_ReferencedEcores();
 
 		/**
-		 * The meta object literal for the '
-		 * {@link org.eclipse.emf.ecp.view.template.model.impl.VTControlValidationTemplateImpl
-		 * <em>Control Validation Template</em>}' class.
+		 * The meta object literal for the
+		 * '{@link org.eclipse.emf.ecp.view.template.model.impl.VTControlValidationTemplateImpl <em>Control Validation
+		 * Template</em>}' class.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
 		 *
@@ -994,10 +1121,9 @@
 		/**
 		 * The meta object literal for the '<em><b>Ok Foreground Color HEX</b></em>' attribute feature.
 		 * <!-- begin-user-doc -->
-		 * 
+		 *
 		 * @since 1.10
 		 *        <!-- end-user-doc -->
-		 *
 		 * @generated
 		 */
 		EAttribute CONTROL_VALIDATION_TEMPLATE__OK_FOREGROUND_COLOR_HEX = eINSTANCE
@@ -1033,10 +1159,9 @@
 		/**
 		 * The meta object literal for the '<em><b>Info Foreground Color HEX</b></em>' attribute feature.
 		 * <!-- begin-user-doc -->
-		 * 
+		 *
 		 * @since 1.10
 		 *        <!-- end-user-doc -->
-		 *
 		 * @generated
 		 */
 		EAttribute CONTROL_VALIDATION_TEMPLATE__INFO_FOREGROUND_COLOR_HEX = eINSTANCE
@@ -1074,10 +1199,9 @@
 		/**
 		 * The meta object literal for the '<em><b>Warning Foreground Color HEX</b></em>' attribute feature.
 		 * <!-- begin-user-doc -->
-		 * 
+		 *
 		 * @since 1.10
 		 *        <!-- end-user-doc -->
-		 *
 		 * @generated
 		 */
 		EAttribute CONTROL_VALIDATION_TEMPLATE__WARNING_FOREGROUND_COLOR_HEX = eINSTANCE
@@ -1116,10 +1240,9 @@
 		/**
 		 * The meta object literal for the '<em><b>Error Foreground Color HEX</b></em>' attribute feature.
 		 * <!-- begin-user-doc -->
-		 * 
+		 *
 		 * @since 1.10
 		 *        <!-- end-user-doc -->
-		 *
 		 * @generated
 		 */
 		EAttribute CONTROL_VALIDATION_TEMPLATE__ERROR_FOREGROUND_COLOR_HEX = eINSTANCE
@@ -1158,10 +1281,9 @@
 		/**
 		 * The meta object literal for the '<em><b>Cancel Foreground Color HEX</b></em>' attribute feature.
 		 * <!-- begin-user-doc -->
-		 * 
+		 *
 		 * @since 1.10
 		 *        <!-- end-user-doc -->
-		 *
 		 * @generated
 		 */
 		EAttribute CONTROL_VALIDATION_TEMPLATE__CANCEL_FOREGROUND_COLOR_HEX = eINSTANCE
@@ -1200,15 +1322,6 @@
 		EClass STYLE = eINSTANCE.getStyle();
 
 		/**
-		 * The meta object literal for the '<em><b>Selector</b></em>' containment reference feature.
-		 * <!-- begin-user-doc -->
-		 * <!-- end-user-doc -->
-		 *
-		 * @generated
-		 */
-		EReference STYLE__SELECTOR = eINSTANCE.getStyle_Selector();
-
-		/**
 		 * The meta object literal for the '<em><b>Properties</b></em>' containment reference list feature.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
@@ -1218,8 +1331,8 @@
 		EReference STYLE__PROPERTIES = eINSTANCE.getStyle_Properties();
 
 		/**
-		 * The meta object literal for the '{@link org.eclipse.emf.ecp.view.template.model.VTStyleProperty
-		 * <em>Style Property</em>}' class.
+		 * The meta object literal for the '{@link org.eclipse.emf.ecp.view.template.model.VTStyleProperty <em>Style
+		 * Property</em>}' class.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
 		 *
@@ -1230,8 +1343,8 @@
 		EClass STYLE_PROPERTY = eINSTANCE.getStyleProperty();
 
 		/**
-		 * The meta object literal for the '{@link org.eclipse.emf.ecp.view.template.model.VTStyleSelector
-		 * <em>Style Selector</em>}' class.
+		 * The meta object literal for the '{@link org.eclipse.emf.ecp.view.template.model.VTStyleSelector <em>Style
+		 * Selector</em>}' class.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
 		 *
@@ -1241,6 +1354,55 @@
 		 */
 		EClass STYLE_SELECTOR = eINSTANCE.getStyleSelector();
 
+		/**
+		 * The meta object literal for the
+		 * '{@link org.eclipse.emf.ecp.view.template.model.impl.VTStyleSelectorContainerImpl <em>Style Selector
+		 * Container</em>}' class.
+		 * <!-- begin-user-doc -->
+		 *
+		 * @since 1.17
+		 *        <!-- end-user-doc -->
+		 * @see org.eclipse.emf.ecp.view.template.model.impl.VTStyleSelectorContainerImpl
+		 * @see org.eclipse.emf.ecp.view.template.model.impl.VTTemplatePackageImpl#getStyleSelectorContainer()
+		 * @generated
+		 */
+		EClass STYLE_SELECTOR_CONTAINER = eINSTANCE.getStyleSelectorContainer();
+
+		/**
+		 * The meta object literal for the '<em><b>Selector</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 *
+		 * @since 1.17
+		 *        <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference STYLE_SELECTOR_CONTAINER__SELECTOR = eINSTANCE.getStyleSelectorContainer_Selector();
+
+		/**
+		 * The meta object literal for the
+		 * '{@link org.eclipse.emf.ecp.view.template.model.impl.VTMultiStyleSelectorContainerImpl <em>Multi Style
+		 * Selector Container</em>}' class.
+		 * <!-- begin-user-doc -->
+		 *
+		 * @since 1.17
+		 *        <!-- end-user-doc -->
+		 * @see org.eclipse.emf.ecp.view.template.model.impl.VTMultiStyleSelectorContainerImpl
+		 * @see org.eclipse.emf.ecp.view.template.model.impl.VTTemplatePackageImpl#getMultiStyleSelectorContainer()
+		 * @generated
+		 */
+		EClass MULTI_STYLE_SELECTOR_CONTAINER = eINSTANCE.getMultiStyleSelectorContainer();
+
+		/**
+		 * The meta object literal for the '<em><b>Selectors</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 *
+		 * @since 1.17
+		 *        <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EReference MULTI_STYLE_SELECTOR_CONTAINER__SELECTORS = eINSTANCE.getMultiStyleSelectorContainer_Selectors();
+
 	}
 
 } // VTTemplatePackage
diff --git a/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/model/VTViewTemplate.java b/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/model/VTViewTemplate.java
index e795719..0f907e8 100644
--- a/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/model/VTViewTemplate.java
+++ b/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/model/VTViewTemplate.java
@@ -21,20 +21,20 @@
  *
  * <p>
  * The following features are supported:
+ * </p>
  * <ul>
  * <li>{@link org.eclipse.emf.ecp.view.template.model.VTViewTemplate#getControlValidationConfiguration <em>Control
  * Validation Configuration</em>}</li>
  * <li>{@link org.eclipse.emf.ecp.view.template.model.VTViewTemplate#getStyles <em>Styles</em>}</li>
- * <li>{@link org.eclipse.emf.ecp.view.template.model.VTViewTemplate#getReferencedEcores <em>Referenced Ecores</em>}</li>
+ * <li>{@link org.eclipse.emf.ecp.view.template.model.VTViewTemplate#getReferencedEcores <em>Referenced
+ * Ecores</em>}</li>
  * </ul>
- * </p>
  *
  * @see org.eclipse.emf.ecp.view.template.model.VTTemplatePackage#getViewTemplate()
  * @model
  * @generated
  */
-public interface VTViewTemplate extends EObject
-{
+public interface VTViewTemplate extends EObject {
 	/**
 	 * Returns the value of the '<em><b>Control Validation Configuration</b></em>' containment reference.
 	 * <!-- begin-user-doc -->
@@ -53,9 +53,9 @@
 	VTControlValidationTemplate getControlValidationConfiguration();
 
 	/**
-	 * Sets the value of the '
-	 * {@link org.eclipse.emf.ecp.view.template.model.VTViewTemplate#getControlValidationConfiguration
-	 * <em>Control Validation Configuration</em>}' containment reference.
+	 * Sets the value of the
+	 * '{@link org.eclipse.emf.ecp.view.template.model.VTViewTemplate#getControlValidationConfiguration <em>Control
+	 * Validation Configuration</em>}' containment reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 *
diff --git a/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/model/impl/VTControlValidationTemplateImpl.java b/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/model/impl/VTControlValidationTemplateImpl.java
index 52aaae0..aea658e 100644
--- a/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/model/impl/VTControlValidationTemplateImpl.java
+++ b/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/model/impl/VTControlValidationTemplateImpl.java
@@ -24,23 +24,24 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
- * <li>{@link org.eclipse.emf.ecp.view.template.model.impl.VTControlValidationTemplateImpl#getOkColorHEX
- * <em>Ok Color HEX</em>}</li>
+ * <li>{@link org.eclipse.emf.ecp.view.template.model.impl.VTControlValidationTemplateImpl#getOkColorHEX <em>Ok Color
+ * HEX</em>}</li>
  * <li>{@link org.eclipse.emf.ecp.view.template.model.impl.VTControlValidationTemplateImpl#getOkForegroundColorHEX
  * <em>Ok Foreground Color HEX</em>}</li>
- * <li>{@link org.eclipse.emf.ecp.view.template.model.impl.VTControlValidationTemplateImpl#getOkImageURL
- * <em>Ok Image URL</em>}</li>
- * <li>{@link org.eclipse.emf.ecp.view.template.model.impl.VTControlValidationTemplateImpl#getOkOverlayURL
- * <em>Ok Overlay URL</em>}</li>
- * <li>{@link org.eclipse.emf.ecp.view.template.model.impl.VTControlValidationTemplateImpl#getInfoColorHEX
- * <em>Info Color HEX</em>}</li>
+ * <li>{@link org.eclipse.emf.ecp.view.template.model.impl.VTControlValidationTemplateImpl#getOkImageURL <em>Ok Image
+ * URL</em>}</li>
+ * <li>{@link org.eclipse.emf.ecp.view.template.model.impl.VTControlValidationTemplateImpl#getOkOverlayURL <em>Ok
+ * Overlay URL</em>}</li>
+ * <li>{@link org.eclipse.emf.ecp.view.template.model.impl.VTControlValidationTemplateImpl#getInfoColorHEX <em>Info
+ * Color HEX</em>}</li>
  * <li>{@link org.eclipse.emf.ecp.view.template.model.impl.VTControlValidationTemplateImpl#getInfoForegroundColorHEX
  * <em>Info Foreground Color HEX</em>}</li>
- * <li>{@link org.eclipse.emf.ecp.view.template.model.impl.VTControlValidationTemplateImpl#getInfoImageURL
- * <em>Info Image URL</em>}</li>
- * <li>{@link org.eclipse.emf.ecp.view.template.model.impl.VTControlValidationTemplateImpl#getInfoOverlayURL
- * <em>Info Overlay URL</em>}</li>
+ * <li>{@link org.eclipse.emf.ecp.view.template.model.impl.VTControlValidationTemplateImpl#getInfoImageURL <em>Info
+ * Image URL</em>}</li>
+ * <li>{@link org.eclipse.emf.ecp.view.template.model.impl.VTControlValidationTemplateImpl#getInfoOverlayURL <em>Info
+ * Overlay URL</em>}</li>
  * <li>{@link org.eclipse.emf.ecp.view.template.model.impl.VTControlValidationTemplateImpl#getWarningColorHEX
  * <em>Warning Color HEX</em>}</li>
  * <li>{@link org.eclipse.emf.ecp.view.template.model.impl.VTControlValidationTemplateImpl#getWarningForegroundColorHEX
@@ -49,30 +50,28 @@
  * <em>Warning Image URL</em>}</li>
  * <li>{@link org.eclipse.emf.ecp.view.template.model.impl.VTControlValidationTemplateImpl#getWarningOverlayURL
  * <em>Warning Overlay URL</em>}</li>
- * <li>{@link org.eclipse.emf.ecp.view.template.model.impl.VTControlValidationTemplateImpl#getErrorColorHEX
- * <em>Error Color HEX</em>}</li>
+ * <li>{@link org.eclipse.emf.ecp.view.template.model.impl.VTControlValidationTemplateImpl#getErrorColorHEX <em>Error
+ * Color HEX</em>}</li>
  * <li>{@link org.eclipse.emf.ecp.view.template.model.impl.VTControlValidationTemplateImpl#getErrorForegroundColorHEX
  * <em>Error Foreground Color HEX</em>}</li>
- * <li>{@link org.eclipse.emf.ecp.view.template.model.impl.VTControlValidationTemplateImpl#getErrorImageURL
- * <em>Error Image URL</em>}</li>
- * <li>{@link org.eclipse.emf.ecp.view.template.model.impl.VTControlValidationTemplateImpl#getErrorOverlayURL
- * <em>Error Overlay URL</em>}</li>
- * <li>{@link org.eclipse.emf.ecp.view.template.model.impl.VTControlValidationTemplateImpl#getCancelColorHEX
- * <em>Cancel Color HEX</em>}</li>
+ * <li>{@link org.eclipse.emf.ecp.view.template.model.impl.VTControlValidationTemplateImpl#getErrorImageURL <em>Error
+ * Image URL</em>}</li>
+ * <li>{@link org.eclipse.emf.ecp.view.template.model.impl.VTControlValidationTemplateImpl#getErrorOverlayURL <em>Error
+ * Overlay URL</em>}</li>
+ * <li>{@link org.eclipse.emf.ecp.view.template.model.impl.VTControlValidationTemplateImpl#getCancelColorHEX <em>Cancel
+ * Color HEX</em>}</li>
  * <li>{@link org.eclipse.emf.ecp.view.template.model.impl.VTControlValidationTemplateImpl#getCancelForegroundColorHEX
  * <em>Cancel Foreground Color HEX</em>}</li>
- * <li>{@link org.eclipse.emf.ecp.view.template.model.impl.VTControlValidationTemplateImpl#getCancelImageURL
- * <em>Cancel Image URL</em>}</li>
+ * <li>{@link org.eclipse.emf.ecp.view.template.model.impl.VTControlValidationTemplateImpl#getCancelImageURL <em>Cancel
+ * Image URL</em>}</li>
  * <li>{@link org.eclipse.emf.ecp.view.template.model.impl.VTControlValidationTemplateImpl#getCancelOverlayURL
  * <em>Cancel Overlay URL</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
 public class VTControlValidationTemplateImpl extends MinimalEObjectImpl.Container implements
-	VTControlValidationTemplate
-{
+	VTControlValidationTemplate {
 	/**
 	 * The default value of the '{@link #getOkColorHEX() <em>Ok Color HEX</em>}' attribute.
 	 * <!-- begin-user-doc -->
@@ -521,8 +520,7 @@
 	 *
 	 * @generated
 	 */
-	protected VTControlValidationTemplateImpl()
-	{
+	protected VTControlValidationTemplateImpl() {
 		super();
 	}
 
@@ -533,8 +531,7 @@
 	 * @generated
 	 */
 	@Override
-	protected EClass eStaticClass()
-	{
+	protected EClass eStaticClass() {
 		return VTTemplatePackage.Literals.CONTROL_VALIDATION_TEMPLATE;
 	}
 
@@ -545,8 +542,7 @@
 	 * @generated
 	 */
 	@Override
-	public String getOkColorHEX()
-	{
+	public String getOkColorHEX() {
 		return okColorHEX;
 	}
 
@@ -557,8 +553,7 @@
 	 * @generated
 	 */
 	@Override
-	public void setOkColorHEX(String newOkColorHEX)
-	{
+	public void setOkColorHEX(String newOkColorHEX) {
 		final String oldOkColorHEX = okColorHEX;
 		okColorHEX = newOkColorHEX;
 		if (eNotificationRequired()) {
@@ -613,8 +608,7 @@
 	 * @generated
 	 */
 	@Override
-	public void setOkImageURL(String newOkImageURL)
-	{
+	public void setOkImageURL(String newOkImageURL) {
 		final String oldOkImageURL = okImageURL;
 		okImageURL = newOkImageURL;
 		if (eNotificationRequired()) {
@@ -630,8 +624,7 @@
 	 * @generated
 	 */
 	@Override
-	public String getOkOverlayURL()
-	{
+	public String getOkOverlayURL() {
 		return okOverlayURL;
 	}
 
@@ -642,8 +635,7 @@
 	 * @generated
 	 */
 	@Override
-	public void setOkOverlayURL(String newOkOverlayURL)
-	{
+	public void setOkOverlayURL(String newOkOverlayURL) {
 		final String oldOkOverlayURL = okOverlayURL;
 		okOverlayURL = newOkOverlayURL;
 		if (eNotificationRequired()) {
@@ -659,8 +651,7 @@
 	 * @generated
 	 */
 	@Override
-	public String getInfoColorHEX()
-	{
+	public String getInfoColorHEX() {
 		return infoColorHEX;
 	}
 
@@ -671,8 +662,7 @@
 	 * @generated
 	 */
 	@Override
-	public void setInfoColorHEX(String newInfoColorHEX)
-	{
+	public void setInfoColorHEX(String newInfoColorHEX) {
 		final String oldInfoColorHEX = infoColorHEX;
 		infoColorHEX = newInfoColorHEX;
 		if (eNotificationRequired()) {
@@ -727,8 +717,7 @@
 	 * @generated
 	 */
 	@Override
-	public void setInfoImageURL(String newInfoImageURL)
-	{
+	public void setInfoImageURL(String newInfoImageURL) {
 		final String oldInfoImageURL = infoImageURL;
 		infoImageURL = newInfoImageURL;
 		if (eNotificationRequired()) {
@@ -744,8 +733,7 @@
 	 * @generated
 	 */
 	@Override
-	public String getInfoOverlayURL()
-	{
+	public String getInfoOverlayURL() {
 		return infoOverlayURL;
 	}
 
@@ -756,8 +744,7 @@
 	 * @generated
 	 */
 	@Override
-	public void setInfoOverlayURL(String newInfoOverlayURL)
-	{
+	public void setInfoOverlayURL(String newInfoOverlayURL) {
 		final String oldInfoOverlayURL = infoOverlayURL;
 		infoOverlayURL = newInfoOverlayURL;
 		if (eNotificationRequired()) {
@@ -773,8 +760,7 @@
 	 * @generated
 	 */
 	@Override
-	public String getWarningColorHEX()
-	{
+	public String getWarningColorHEX() {
 		return warningColorHEX;
 	}
 
@@ -785,8 +771,7 @@
 	 * @generated
 	 */
 	@Override
-	public void setWarningColorHEX(String newWarningColorHEX)
-	{
+	public void setWarningColorHEX(String newWarningColorHEX) {
 		final String oldWarningColorHEX = warningColorHEX;
 		warningColorHEX = newWarningColorHEX;
 		if (eNotificationRequired()) {
@@ -841,8 +826,7 @@
 	 * @generated
 	 */
 	@Override
-	public void setWarningImageURL(String newWarningImageURL)
-	{
+	public void setWarningImageURL(String newWarningImageURL) {
 		final String oldWarningImageURL = warningImageURL;
 		warningImageURL = newWarningImageURL;
 		if (eNotificationRequired()) {
@@ -858,8 +842,7 @@
 	 * @generated
 	 */
 	@Override
-	public String getWarningOverlayURL()
-	{
+	public String getWarningOverlayURL() {
 		return warningOverlayURL;
 	}
 
@@ -870,8 +853,7 @@
 	 * @generated
 	 */
 	@Override
-	public void setWarningOverlayURL(String newWarningOverlayURL)
-	{
+	public void setWarningOverlayURL(String newWarningOverlayURL) {
 		final String oldWarningOverlayURL = warningOverlayURL;
 		warningOverlayURL = newWarningOverlayURL;
 		if (eNotificationRequired()) {
@@ -888,8 +870,7 @@
 	 * @generated
 	 */
 	@Override
-	public String getErrorColorHEX()
-	{
+	public String getErrorColorHEX() {
 		return errorColorHEX;
 	}
 
@@ -900,8 +881,7 @@
 	 * @generated
 	 */
 	@Override
-	public void setErrorColorHEX(String newErrorColorHEX)
-	{
+	public void setErrorColorHEX(String newErrorColorHEX) {
 		final String oldErrorColorHEX = errorColorHEX;
 		errorColorHEX = newErrorColorHEX;
 		if (eNotificationRequired()) {
@@ -956,8 +936,7 @@
 	 * @generated
 	 */
 	@Override
-	public void setErrorImageURL(String newErrorImageURL)
-	{
+	public void setErrorImageURL(String newErrorImageURL) {
 		final String oldErrorImageURL = errorImageURL;
 		errorImageURL = newErrorImageURL;
 		if (eNotificationRequired()) {
@@ -973,8 +952,7 @@
 	 * @generated
 	 */
 	@Override
-	public String getErrorOverlayURL()
-	{
+	public String getErrorOverlayURL() {
 		return errorOverlayURL;
 	}
 
@@ -985,8 +963,7 @@
 	 * @generated
 	 */
 	@Override
-	public void setErrorOverlayURL(String newErrorOverlayURL)
-	{
+	public void setErrorOverlayURL(String newErrorOverlayURL) {
 		final String oldErrorOverlayURL = errorOverlayURL;
 		errorOverlayURL = newErrorOverlayURL;
 		if (eNotificationRequired()) {
@@ -1002,8 +979,7 @@
 	 * @generated
 	 */
 	@Override
-	public String getCancelColorHEX()
-	{
+	public String getCancelColorHEX() {
 		return cancelColorHEX;
 	}
 
@@ -1014,8 +990,7 @@
 	 * @generated
 	 */
 	@Override
-	public void setCancelColorHEX(String newCancelColorHEX)
-	{
+	public void setCancelColorHEX(String newCancelColorHEX) {
 		final String oldCancelColorHEX = cancelColorHEX;
 		cancelColorHEX = newCancelColorHEX;
 		if (eNotificationRequired()) {
@@ -1070,8 +1045,7 @@
 	 * @generated
 	 */
 	@Override
-	public void setCancelImageURL(String newCancelImageURL)
-	{
+	public void setCancelImageURL(String newCancelImageURL) {
 		final String oldCancelImageURL = cancelImageURL;
 		cancelImageURL = newCancelImageURL;
 		if (eNotificationRequired()) {
@@ -1087,8 +1061,7 @@
 	 * @generated
 	 */
 	@Override
-	public String getCancelOverlayURL()
-	{
+	public String getCancelOverlayURL() {
 		return cancelOverlayURL;
 	}
 
@@ -1099,8 +1072,7 @@
 	 * @generated
 	 */
 	@Override
-	public void setCancelOverlayURL(String newCancelOverlayURL)
-	{
+	public void setCancelOverlayURL(String newCancelOverlayURL) {
 		final String oldCancelOverlayURL = cancelOverlayURL;
 		cancelOverlayURL = newCancelOverlayURL;
 		if (eNotificationRequired()) {
@@ -1117,10 +1089,8 @@
 	 * @generated
 	 */
 	@Override
-	public Object eGet(int featureID, boolean resolve, boolean coreType)
-	{
-		switch (featureID)
-		{
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
 		case VTTemplatePackage.CONTROL_VALIDATION_TEMPLATE__OK_COLOR_HEX:
 			return getOkColorHEX();
 		case VTTemplatePackage.CONTROL_VALIDATION_TEMPLATE__OK_FOREGROUND_COLOR_HEX:
@@ -1172,10 +1142,8 @@
 	 * @generated
 	 */
 	@Override
-	public void eSet(int featureID, Object newValue)
-	{
-		switch (featureID)
-		{
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
 		case VTTemplatePackage.CONTROL_VALIDATION_TEMPLATE__OK_COLOR_HEX:
 			setOkColorHEX((String) newValue);
 			return;
@@ -1247,10 +1215,8 @@
 	 * @generated
 	 */
 	@Override
-	public void eUnset(int featureID)
-	{
-		switch (featureID)
-		{
+	public void eUnset(int featureID) {
+		switch (featureID) {
 		case VTTemplatePackage.CONTROL_VALIDATION_TEMPLATE__OK_COLOR_HEX:
 			setOkColorHEX(OK_COLOR_HEX_EDEFAULT);
 			return;
@@ -1322,10 +1288,8 @@
 	 * @generated
 	 */
 	@Override
-	public boolean eIsSet(int featureID)
-	{
-		switch (featureID)
-		{
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
 		case VTTemplatePackage.CONTROL_VALIDATION_TEMPLATE__OK_COLOR_HEX:
 			return OK_COLOR_HEX_EDEFAULT == null ? okColorHEX != null : !OK_COLOR_HEX_EDEFAULT.equals(okColorHEX);
 		case VTTemplatePackage.CONTROL_VALIDATION_TEMPLATE__OK_FOREGROUND_COLOR_HEX:
@@ -1334,8 +1298,8 @@
 		case VTTemplatePackage.CONTROL_VALIDATION_TEMPLATE__OK_IMAGE_URL:
 			return OK_IMAGE_URL_EDEFAULT == null ? okImageURL != null : !OK_IMAGE_URL_EDEFAULT.equals(okImageURL);
 		case VTTemplatePackage.CONTROL_VALIDATION_TEMPLATE__OK_OVERLAY_URL:
-			return OK_OVERLAY_URL_EDEFAULT == null ? okOverlayURL != null : !OK_OVERLAY_URL_EDEFAULT
-				.equals(okOverlayURL);
+			return OK_OVERLAY_URL_EDEFAULT == null ? okOverlayURL != null
+				: !OK_OVERLAY_URL_EDEFAULT.equals(okOverlayURL);
 		case VTTemplatePackage.CONTROL_VALIDATION_TEMPLATE__INFO_COLOR_HEX:
 			return INFO_COLOR_HEX_EDEFAULT == null ? infoColorHEX != null
 				: !INFO_COLOR_HEX_EDEFAULT.equals(infoColorHEX);
@@ -1343,11 +1307,11 @@
 			return INFO_FOREGROUND_COLOR_HEX_EDEFAULT == null ? infoForegroundColorHEX != null
 				: !INFO_FOREGROUND_COLOR_HEX_EDEFAULT.equals(infoForegroundColorHEX);
 		case VTTemplatePackage.CONTROL_VALIDATION_TEMPLATE__INFO_IMAGE_URL:
-			return INFO_IMAGE_URL_EDEFAULT == null ? infoImageURL != null : !INFO_IMAGE_URL_EDEFAULT
-				.equals(infoImageURL);
+			return INFO_IMAGE_URL_EDEFAULT == null ? infoImageURL != null
+				: !INFO_IMAGE_URL_EDEFAULT.equals(infoImageURL);
 		case VTTemplatePackage.CONTROL_VALIDATION_TEMPLATE__INFO_OVERLAY_URL:
-			return INFO_OVERLAY_URL_EDEFAULT == null ? infoOverlayURL != null : !INFO_OVERLAY_URL_EDEFAULT
-				.equals(infoOverlayURL);
+			return INFO_OVERLAY_URL_EDEFAULT == null ? infoOverlayURL != null
+				: !INFO_OVERLAY_URL_EDEFAULT.equals(infoOverlayURL);
 		case VTTemplatePackage.CONTROL_VALIDATION_TEMPLATE__WARNING_COLOR_HEX:
 			return WARNING_COLOR_HEX_EDEFAULT == null ? warningColorHEX != null
 				: !WARNING_COLOR_HEX_EDEFAULT.equals(warningColorHEX);
@@ -1355,11 +1319,11 @@
 			return WARNING_FOREGROUND_COLOR_HEX_EDEFAULT == null ? warningForegroundColorHEX != null
 				: !WARNING_FOREGROUND_COLOR_HEX_EDEFAULT.equals(warningForegroundColorHEX);
 		case VTTemplatePackage.CONTROL_VALIDATION_TEMPLATE__WARNING_IMAGE_URL:
-			return WARNING_IMAGE_URL_EDEFAULT == null ? warningImageURL != null : !WARNING_IMAGE_URL_EDEFAULT
-				.equals(warningImageURL);
+			return WARNING_IMAGE_URL_EDEFAULT == null ? warningImageURL != null
+				: !WARNING_IMAGE_URL_EDEFAULT.equals(warningImageURL);
 		case VTTemplatePackage.CONTROL_VALIDATION_TEMPLATE__WARNING_OVERLAY_URL:
-			return WARNING_OVERLAY_URL_EDEFAULT == null ? warningOverlayURL != null : !WARNING_OVERLAY_URL_EDEFAULT
-				.equals(warningOverlayURL);
+			return WARNING_OVERLAY_URL_EDEFAULT == null ? warningOverlayURL != null
+				: !WARNING_OVERLAY_URL_EDEFAULT.equals(warningOverlayURL);
 		case VTTemplatePackage.CONTROL_VALIDATION_TEMPLATE__ERROR_COLOR_HEX:
 			return ERROR_COLOR_HEX_EDEFAULT == null ? errorColorHEX != null
 				: !ERROR_COLOR_HEX_EDEFAULT.equals(errorColorHEX);
@@ -1367,11 +1331,11 @@
 			return ERROR_FOREGROUND_COLOR_HEX_EDEFAULT == null ? errorForegroundColorHEX != null
 				: !ERROR_FOREGROUND_COLOR_HEX_EDEFAULT.equals(errorForegroundColorHEX);
 		case VTTemplatePackage.CONTROL_VALIDATION_TEMPLATE__ERROR_IMAGE_URL:
-			return ERROR_IMAGE_URL_EDEFAULT == null ? errorImageURL != null : !ERROR_IMAGE_URL_EDEFAULT
-				.equals(errorImageURL);
+			return ERROR_IMAGE_URL_EDEFAULT == null ? errorImageURL != null
+				: !ERROR_IMAGE_URL_EDEFAULT.equals(errorImageURL);
 		case VTTemplatePackage.CONTROL_VALIDATION_TEMPLATE__ERROR_OVERLAY_URL:
-			return ERROR_OVERLAY_URL_EDEFAULT == null ? errorOverlayURL != null : !ERROR_OVERLAY_URL_EDEFAULT
-				.equals(errorOverlayURL);
+			return ERROR_OVERLAY_URL_EDEFAULT == null ? errorOverlayURL != null
+				: !ERROR_OVERLAY_URL_EDEFAULT.equals(errorOverlayURL);
 		case VTTemplatePackage.CONTROL_VALIDATION_TEMPLATE__CANCEL_COLOR_HEX:
 			return CANCEL_COLOR_HEX_EDEFAULT == null ? cancelColorHEX != null
 				: !CANCEL_COLOR_HEX_EDEFAULT.equals(cancelColorHEX);
@@ -1379,11 +1343,11 @@
 			return CANCEL_FOREGROUND_COLOR_HEX_EDEFAULT == null ? cancelForegroundColorHEX != null
 				: !CANCEL_FOREGROUND_COLOR_HEX_EDEFAULT.equals(cancelForegroundColorHEX);
 		case VTTemplatePackage.CONTROL_VALIDATION_TEMPLATE__CANCEL_IMAGE_URL:
-			return CANCEL_IMAGE_URL_EDEFAULT == null ? cancelImageURL != null : !CANCEL_IMAGE_URL_EDEFAULT
-				.equals(cancelImageURL);
+			return CANCEL_IMAGE_URL_EDEFAULT == null ? cancelImageURL != null
+				: !CANCEL_IMAGE_URL_EDEFAULT.equals(cancelImageURL);
 		case VTTemplatePackage.CONTROL_VALIDATION_TEMPLATE__CANCEL_OVERLAY_URL:
-			return CANCEL_OVERLAY_URL_EDEFAULT == null ? cancelOverlayURL != null : !CANCEL_OVERLAY_URL_EDEFAULT
-				.equals(cancelOverlayURL);
+			return CANCEL_OVERLAY_URL_EDEFAULT == null ? cancelOverlayURL != null
+				: !CANCEL_OVERLAY_URL_EDEFAULT.equals(cancelOverlayURL);
 		}
 		return super.eIsSet(featureID);
 	}
@@ -1395,8 +1359,7 @@
 	 * @generated
 	 */
 	@Override
-	public String toString()
-	{
+	public String toString() {
 		if (eIsProxy()) {
 			return super.toString();
 		}
diff --git a/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/model/impl/VTMultiStyleSelectorContainerImpl.java b/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/model/impl/VTMultiStyleSelectorContainerImpl.java
new file mode 100644
index 0000000..7981565
--- /dev/null
+++ b/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/model/impl/VTMultiStyleSelectorContainerImpl.java
@@ -0,0 +1,169 @@
+/**
+ * Copyright (c) 2011-2014 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
+ */
+package org.eclipse.emf.ecp.view.template.model.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+import org.eclipse.emf.ecp.view.template.model.VTMultiStyleSelectorContainer;
+import org.eclipse.emf.ecp.view.template.model.VTStyleSelector;
+import org.eclipse.emf.ecp.view.template.model.VTTemplatePackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Multi Style Selector Container</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.emf.ecp.view.template.model.impl.VTMultiStyleSelectorContainerImpl#getSelectors
+ * <em>Selectors</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public abstract class VTMultiStyleSelectorContainerImpl extends MinimalEObjectImpl.Container
+	implements VTMultiStyleSelectorContainer {
+	/**
+	 * The cached value of the '{@link #getSelectors() <em>Selectors</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getSelectors()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<VTStyleSelector> selectors;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected VTMultiStyleSelectorContainerImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return VTTemplatePackage.Literals.MULTI_STYLE_SELECTOR_CONTAINER;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EList<VTStyleSelector> getSelectors() {
+		if (selectors == null) {
+			selectors = new EObjectContainmentEList<VTStyleSelector>(VTStyleSelector.class, this,
+				VTTemplatePackage.MULTI_STYLE_SELECTOR_CONTAINER__SELECTORS);
+		}
+		return selectors;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+		case VTTemplatePackage.MULTI_STYLE_SELECTOR_CONTAINER__SELECTORS:
+			return ((InternalEList<?>) getSelectors()).basicRemove(otherEnd, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case VTTemplatePackage.MULTI_STYLE_SELECTOR_CONTAINER__SELECTORS:
+			return getSelectors();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case VTTemplatePackage.MULTI_STYLE_SELECTOR_CONTAINER__SELECTORS:
+			getSelectors().clear();
+			getSelectors().addAll((Collection<? extends VTStyleSelector>) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case VTTemplatePackage.MULTI_STYLE_SELECTOR_CONTAINER__SELECTORS:
+			getSelectors().clear();
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case VTTemplatePackage.MULTI_STYLE_SELECTOR_CONTAINER__SELECTORS:
+			return selectors != null && !selectors.isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+
+} // VTMultiStyleSelectorContainerImpl
diff --git a/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/model/impl/VTStyleImpl.java b/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/model/impl/VTStyleImpl.java
index 44cd520..380bae3 100644
--- a/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/model/impl/VTStyleImpl.java
+++ b/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/model/impl/VTStyleImpl.java
@@ -13,18 +13,14 @@
 
 import java.util.Collection;
 
-import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.common.notify.NotificationChain;
 import org.eclipse.emf.common.util.EList;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
-import org.eclipse.emf.ecore.impl.ENotificationImpl;
-import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
 import org.eclipse.emf.ecore.util.EObjectContainmentEList;
 import org.eclipse.emf.ecore.util.InternalEList;
 import org.eclipse.emf.ecp.view.template.model.VTStyle;
 import org.eclipse.emf.ecp.view.template.model.VTStyleProperty;
-import org.eclipse.emf.ecp.view.template.model.VTStyleSelector;
 import org.eclipse.emf.ecp.view.template.model.VTTemplatePackage;
 
 /**
@@ -33,27 +29,14 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
- * <li>{@link org.eclipse.emf.ecp.view.template.model.impl.VTStyleImpl#getSelector <em>Selector</em>}</li>
  * <li>{@link org.eclipse.emf.ecp.view.template.model.impl.VTStyleImpl#getProperties <em>Properties</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
-public class VTStyleImpl extends MinimalEObjectImpl.Container implements VTStyle
-{
-	/**
-	 * The cached value of the '{@link #getSelector() <em>Selector</em>}' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 *
-	 * @see #getSelector()
-	 * @generated
-	 * @ordered
-	 */
-	protected VTStyleSelector selector;
-
+public class VTStyleImpl extends VTStyleSelectorContainerImpl implements VTStyle {
 	/**
 	 * The cached value of the '{@link #getProperties() <em>Properties</em>}' containment reference list.
 	 * <!-- begin-user-doc -->
@@ -71,8 +54,7 @@
 	 *
 	 * @generated
 	 */
-	protected VTStyleImpl()
-	{
+	protected VTStyleImpl() {
 		super();
 	}
 
@@ -83,8 +65,7 @@
 	 * @generated
 	 */
 	@Override
-	protected EClass eStaticClass()
-	{
+	protected EClass eStaticClass() {
 		return VTTemplatePackage.Literals.STYLE;
 	}
 
@@ -95,76 +76,8 @@
 	 * @generated
 	 */
 	@Override
-	public VTStyleSelector getSelector()
-	{
-		return selector;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 *
-	 * @generated
-	 */
-	public NotificationChain basicSetSelector(VTStyleSelector newSelector, NotificationChain msgs)
-	{
-		final VTStyleSelector oldSelector = selector;
-		selector = newSelector;
-		if (eNotificationRequired())
-		{
-			final ENotificationImpl notification = new ENotificationImpl(this, Notification.SET,
-				VTTemplatePackage.STYLE__SELECTOR, oldSelector, newSelector);
-			if (msgs == null) {
-				msgs = notification;
-			} else {
-				msgs.add(notification);
-			}
-		}
-		return msgs;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 *
-	 * @generated
-	 */
-	@Override
-	public void setSelector(VTStyleSelector newSelector)
-	{
-		if (newSelector != selector)
-		{
-			NotificationChain msgs = null;
-			if (selector != null) {
-				msgs = ((InternalEObject) selector).eInverseRemove(this, EOPPOSITE_FEATURE_BASE
-					- VTTemplatePackage.STYLE__SELECTOR, null, msgs);
-			}
-			if (newSelector != null) {
-				msgs = ((InternalEObject) newSelector).eInverseAdd(this, EOPPOSITE_FEATURE_BASE
-					- VTTemplatePackage.STYLE__SELECTOR, null, msgs);
-			}
-			msgs = basicSetSelector(newSelector, msgs);
-			if (msgs != null) {
-				msgs.dispatch();
-			}
-		}
-		else if (eNotificationRequired()) {
-			eNotify(new ENotificationImpl(this, Notification.SET, VTTemplatePackage.STYLE__SELECTOR, newSelector,
-				newSelector));
-		}
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 *
-	 * @generated
-	 */
-	@Override
-	public EList<VTStyleProperty> getProperties()
-	{
-		if (properties == null)
-		{
+	public EList<VTStyleProperty> getProperties() {
+		if (properties == null) {
 			properties = new EObjectContainmentEList<VTStyleProperty>(VTStyleProperty.class, this,
 				VTTemplatePackage.STYLE__PROPERTIES);
 		}
@@ -178,12 +91,8 @@
 	 * @generated
 	 */
 	@Override
-	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
-	{
-		switch (featureID)
-		{
-		case VTTemplatePackage.STYLE__SELECTOR:
-			return basicSetSelector(null, msgs);
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
 		case VTTemplatePackage.STYLE__PROPERTIES:
 			return ((InternalEList<?>) getProperties()).basicRemove(otherEnd, msgs);
 		}
@@ -197,12 +106,8 @@
 	 * @generated
 	 */
 	@Override
-	public Object eGet(int featureID, boolean resolve, boolean coreType)
-	{
-		switch (featureID)
-		{
-		case VTTemplatePackage.STYLE__SELECTOR:
-			return getSelector();
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
 		case VTTemplatePackage.STYLE__PROPERTIES:
 			return getProperties();
 		}
@@ -217,13 +122,8 @@
 	 */
 	@SuppressWarnings("unchecked")
 	@Override
-	public void eSet(int featureID, Object newValue)
-	{
-		switch (featureID)
-		{
-		case VTTemplatePackage.STYLE__SELECTOR:
-			setSelector((VTStyleSelector) newValue);
-			return;
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
 		case VTTemplatePackage.STYLE__PROPERTIES:
 			getProperties().clear();
 			getProperties().addAll((Collection<? extends VTStyleProperty>) newValue);
@@ -239,13 +139,8 @@
 	 * @generated
 	 */
 	@Override
-	public void eUnset(int featureID)
-	{
-		switch (featureID)
-		{
-		case VTTemplatePackage.STYLE__SELECTOR:
-			setSelector((VTStyleSelector) null);
-			return;
+	public void eUnset(int featureID) {
+		switch (featureID) {
 		case VTTemplatePackage.STYLE__PROPERTIES:
 			getProperties().clear();
 			return;
@@ -260,12 +155,8 @@
 	 * @generated
 	 */
 	@Override
-	public boolean eIsSet(int featureID)
-	{
-		switch (featureID)
-		{
-		case VTTemplatePackage.STYLE__SELECTOR:
-			return selector != null;
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
 		case VTTemplatePackage.STYLE__PROPERTIES:
 			return properties != null && !properties.isEmpty();
 		}
diff --git a/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/model/impl/VTStyleSelectorContainerImpl.java b/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/model/impl/VTStyleSelectorContainerImpl.java
new file mode 100644
index 0000000..9d49c5a
--- /dev/null
+++ b/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/model/impl/VTStyleSelectorContainerImpl.java
@@ -0,0 +1,209 @@
+/**
+ * Copyright (c) 2011-2014 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
+ */
+package org.eclipse.emf.ecp.view.template.model.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+import org.eclipse.emf.ecp.view.template.model.VTStyleSelector;
+import org.eclipse.emf.ecp.view.template.model.VTStyleSelectorContainer;
+import org.eclipse.emf.ecp.view.template.model.VTTemplatePackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Style Selector Container</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.emf.ecp.view.template.model.impl.VTStyleSelectorContainerImpl#getSelector
+ * <em>Selector</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public abstract class VTStyleSelectorContainerImpl extends MinimalEObjectImpl.Container
+	implements VTStyleSelectorContainer {
+	/**
+	 * The cached value of the '{@link #getSelector() <em>Selector</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getSelector()
+	 * @generated
+	 * @ordered
+	 */
+	protected VTStyleSelector selector;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected VTStyleSelectorContainerImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return VTTemplatePackage.Literals.STYLE_SELECTOR_CONTAINER;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public VTStyleSelector getSelector() {
+		return selector;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public NotificationChain basicSetSelector(VTStyleSelector newSelector, NotificationChain msgs) {
+		final VTStyleSelector oldSelector = selector;
+		selector = newSelector;
+		if (eNotificationRequired()) {
+			final ENotificationImpl notification = new ENotificationImpl(this, Notification.SET,
+				VTTemplatePackage.STYLE_SELECTOR_CONTAINER__SELECTOR, oldSelector, newSelector);
+			if (msgs == null) {
+				msgs = notification;
+			} else {
+				msgs.add(notification);
+			}
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setSelector(VTStyleSelector newSelector) {
+		if (newSelector != selector) {
+			NotificationChain msgs = null;
+			if (selector != null) {
+				msgs = ((InternalEObject) selector).eInverseRemove(this,
+					EOPPOSITE_FEATURE_BASE - VTTemplatePackage.STYLE_SELECTOR_CONTAINER__SELECTOR, null, msgs);
+			}
+			if (newSelector != null) {
+				msgs = ((InternalEObject) newSelector).eInverseAdd(this,
+					EOPPOSITE_FEATURE_BASE - VTTemplatePackage.STYLE_SELECTOR_CONTAINER__SELECTOR, null, msgs);
+			}
+			msgs = basicSetSelector(newSelector, msgs);
+			if (msgs != null) {
+				msgs.dispatch();
+			}
+		} else if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, VTTemplatePackage.STYLE_SELECTOR_CONTAINER__SELECTOR,
+				newSelector, newSelector));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+		case VTTemplatePackage.STYLE_SELECTOR_CONTAINER__SELECTOR:
+			return basicSetSelector(null, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case VTTemplatePackage.STYLE_SELECTOR_CONTAINER__SELECTOR:
+			return getSelector();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case VTTemplatePackage.STYLE_SELECTOR_CONTAINER__SELECTOR:
+			setSelector((VTStyleSelector) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case VTTemplatePackage.STYLE_SELECTOR_CONTAINER__SELECTOR:
+			setSelector((VTStyleSelector) null);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case VTTemplatePackage.STYLE_SELECTOR_CONTAINER__SELECTOR:
+			return selector != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+} // VTStyleSelectorContainerImpl
diff --git a/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/model/impl/VTTemplateFactoryImpl.java b/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/model/impl/VTTemplateFactoryImpl.java
index a5c854c..4ff3c9d 100644
--- a/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/model/impl/VTTemplateFactoryImpl.java
+++ b/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/model/impl/VTTemplateFactoryImpl.java
@@ -29,8 +29,7 @@
  *
  * @generated
  */
-public class VTTemplateFactoryImpl extends EFactoryImpl implements VTTemplateFactory
-{
+public class VTTemplateFactoryImpl extends EFactoryImpl implements VTTemplateFactory {
 	/**
 	 * Creates the default factory implementation.
 	 * <!-- begin-user-doc -->
@@ -38,18 +37,14 @@
 	 *
 	 * @generated
 	 */
-	public static VTTemplateFactory init()
-	{
-		try
-		{
+	public static VTTemplateFactory init() {
+		try {
 			final VTTemplateFactory theTemplateFactory = (VTTemplateFactory) EPackage.Registry.INSTANCE
 				.getEFactory(VTTemplatePackage.eNS_URI);
-			if (theTemplateFactory != null)
-			{
+			if (theTemplateFactory != null) {
 				return theTemplateFactory;
 			}
-		} catch (final Exception exception)
-		{
+		} catch (final Exception exception) {
 			EcorePlugin.INSTANCE.log(exception);
 		}
 		return new VTTemplateFactoryImpl();
@@ -62,8 +57,7 @@
 	 *
 	 * @generated
 	 */
-	public VTTemplateFactoryImpl()
-	{
+	public VTTemplateFactoryImpl() {
 		super();
 	}
 
@@ -74,10 +68,8 @@
 	 * @generated
 	 */
 	@Override
-	public EObject create(EClass eClass)
-	{
-		switch (eClass.getClassifierID())
-		{
+	public EObject create(EClass eClass) {
+		switch (eClass.getClassifierID()) {
 		case VTTemplatePackage.VIEW_TEMPLATE:
 			return createViewTemplate();
 		case VTTemplatePackage.CONTROL_VALIDATION_TEMPLATE:
@@ -96,8 +88,7 @@
 	 * @generated
 	 */
 	@Override
-	public VTViewTemplate createViewTemplate()
-	{
+	public VTViewTemplate createViewTemplate() {
 		final VTViewTemplateImpl viewTemplate = new VTViewTemplateImpl();
 		return viewTemplate;
 	}
@@ -109,8 +100,7 @@
 	 * @generated
 	 */
 	@Override
-	public VTControlValidationTemplate createControlValidationTemplate()
-	{
+	public VTControlValidationTemplate createControlValidationTemplate() {
 		final VTControlValidationTemplateImpl controlValidationTemplate = new VTControlValidationTemplateImpl();
 		return controlValidationTemplate;
 	}
@@ -122,8 +112,7 @@
 	 * @generated
 	 */
 	@Override
-	public VTStyle createStyle()
-	{
+	public VTStyle createStyle() {
 		final VTStyleImpl style = new VTStyleImpl();
 		return style;
 	}
@@ -135,8 +124,7 @@
 	 * @generated
 	 */
 	@Override
-	public VTTemplatePackage getTemplatePackage()
-	{
+	public VTTemplatePackage getTemplatePackage() {
 		return (VTTemplatePackage) getEPackage();
 	}
 
@@ -148,8 +136,7 @@
 	 * @generated
 	 */
 	@Deprecated
-	public static VTTemplatePackage getPackage()
-	{
+	public static VTTemplatePackage getPackage() {
 		return VTTemplatePackage.eINSTANCE;
 	}
 
diff --git a/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/model/impl/VTTemplatePackageImpl.java b/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/model/impl/VTTemplatePackageImpl.java
index 0706f56..bbad396 100644
--- a/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/model/impl/VTTemplatePackageImpl.java
+++ b/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/model/impl/VTTemplatePackageImpl.java
@@ -17,9 +17,11 @@
 import org.eclipse.emf.ecore.EReference;
 import org.eclipse.emf.ecore.impl.EPackageImpl;
 import org.eclipse.emf.ecp.view.template.model.VTControlValidationTemplate;
+import org.eclipse.emf.ecp.view.template.model.VTMultiStyleSelectorContainer;
 import org.eclipse.emf.ecp.view.template.model.VTStyle;
 import org.eclipse.emf.ecp.view.template.model.VTStyleProperty;
 import org.eclipse.emf.ecp.view.template.model.VTStyleSelector;
+import org.eclipse.emf.ecp.view.template.model.VTStyleSelectorContainer;
 import org.eclipse.emf.ecp.view.template.model.VTTemplateFactory;
 import org.eclipse.emf.ecp.view.template.model.VTTemplatePackage;
 import org.eclipse.emf.ecp.view.template.model.VTViewTemplate;
@@ -73,6 +75,22 @@
 	private EClass styleSelectorEClass = null;
 
 	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EClass styleSelectorContainerEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EClass multiStyleSelectorContainerEClass = 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.
@@ -431,7 +449,7 @@
 	 * @generated
 	 */
 	@Override
-	public EReference getStyle_Selector() {
+	public EReference getStyle_Properties() {
 		return (EReference) styleEClass.getEStructuralFeatures().get(0);
 	}
 
@@ -442,20 +460,7 @@
 	 * @generated
 	 */
 	@Override
-	public EReference getStyle_Properties()
-	{
-		return (EReference) styleEClass.getEStructuralFeatures().get(1);
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 *
-	 * @generated
-	 */
-	@Override
-	public EClass getStyleProperty()
-	{
+	public EClass getStyleProperty() {
 		return stylePropertyEClass;
 	}
 
@@ -466,8 +471,7 @@
 	 * @generated
 	 */
 	@Override
-	public EClass getStyleSelector()
-	{
+	public EClass getStyleSelector() {
 		return styleSelectorEClass;
 	}
 
@@ -478,8 +482,51 @@
 	 * @generated
 	 */
 	@Override
-	public VTTemplateFactory getTemplateFactory()
-	{
+	public EClass getStyleSelectorContainer() {
+		return styleSelectorContainerEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EReference getStyleSelectorContainer_Selector() {
+		return (EReference) styleSelectorContainerEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EClass getMultiStyleSelectorContainer() {
+		return multiStyleSelectorContainerEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EReference getMultiStyleSelectorContainer_Selectors() {
+		return (EReference) multiStyleSelectorContainerEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public VTTemplateFactory getTemplateFactory() {
 		return (VTTemplateFactory) getEFactoryInstance();
 	}
 
@@ -499,8 +546,7 @@
 	 *
 	 * @generated
 	 */
-	public void createPackageContents()
-	{
+	public void createPackageContents() {
 		if (isCreated) {
 			return;
 		}
@@ -535,12 +581,17 @@
 		createEAttribute(controlValidationTemplateEClass, CONTROL_VALIDATION_TEMPLATE__CANCEL_OVERLAY_URL);
 
 		styleEClass = createEClass(STYLE);
-		createEReference(styleEClass, STYLE__SELECTOR);
 		createEReference(styleEClass, STYLE__PROPERTIES);
 
 		stylePropertyEClass = createEClass(STYLE_PROPERTY);
 
 		styleSelectorEClass = createEClass(STYLE_SELECTOR);
+
+		styleSelectorContainerEClass = createEClass(STYLE_SELECTOR_CONTAINER);
+		createEReference(styleSelectorContainerEClass, STYLE_SELECTOR_CONTAINER__SELECTOR);
+
+		multiStyleSelectorContainerEClass = createEClass(MULTI_STYLE_SELECTOR_CONTAINER);
+		createEReference(multiStyleSelectorContainerEClass, MULTI_STYLE_SELECTOR_CONTAINER__SELECTORS);
 	}
 
 	/**
@@ -559,8 +610,7 @@
 	 *
 	 * @generated
 	 */
-	public void initializePackageContents()
-	{
+	public void initializePackageContents() {
 		if (isInitialized) {
 			return;
 		}
@@ -576,6 +626,7 @@
 		// Set bounds for type parameters
 
 		// Add supertypes to classes
+		styleEClass.getESuperTypes().add(getStyleSelectorContainer());
 
 		// Initialize classes, features, and operations; add parameters
 		initEClass(viewTemplateEClass, VTViewTemplate.class, "ViewTemplate", !IS_ABSTRACT, !IS_INTERFACE, //$NON-NLS-1$
@@ -654,9 +705,6 @@
 			!IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 
 		initEClass(styleEClass, VTStyle.class, "Style", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
-		initEReference(getStyle_Selector(), getStyleSelector(), null, "selector", null, 1, 1, VTStyle.class, //$NON-NLS-1$
-			!IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE,
-			!IS_DERIVED, IS_ORDERED);
 		initEReference(getStyle_Properties(), getStyleProperty(), null, "properties", null, 0, -1, VTStyle.class, //$NON-NLS-1$
 			!IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE,
 			!IS_DERIVED, IS_ORDERED);
@@ -667,6 +715,18 @@
 		initEClass(styleSelectorEClass, VTStyleSelector.class, "StyleSelector", IS_ABSTRACT, IS_INTERFACE, //$NON-NLS-1$
 			IS_GENERATED_INSTANCE_CLASS);
 
+		initEClass(styleSelectorContainerEClass, VTStyleSelectorContainer.class, "StyleSelectorContainer", IS_ABSTRACT, //$NON-NLS-1$
+			!IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getStyleSelectorContainer_Selector(), getStyleSelector(), null, "selector", null, 1, 1, //$NON-NLS-1$
+			VTStyleSelectorContainer.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE,
+			!IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(multiStyleSelectorContainerEClass, VTMultiStyleSelectorContainer.class,
+			"MultiStyleSelectorContainer", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+		initEReference(getMultiStyleSelectorContainer_Selectors(), getStyleSelector(), null, "selectors", null, 2, //$NON-NLS-1$
+			-1, VTMultiStyleSelectorContainer.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE,
+			!IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
 		// Create resource
 		createResource(eNS_URI);
 	}
diff --git a/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/model/impl/VTViewTemplateImpl.java b/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/model/impl/VTViewTemplateImpl.java
index ab598e1..c69f3c1 100644
--- a/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/model/impl/VTViewTemplateImpl.java
+++ b/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/model/impl/VTViewTemplateImpl.java
@@ -34,19 +34,18 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
- * <ul>
- * <li>{@link org.eclipse.emf.ecp.view.template.model.impl.VTViewTemplateImpl#getControlValidationConfiguration <em>
- * Control Validation Configuration</em>}</li>
- * <li>{@link org.eclipse.emf.ecp.view.template.model.impl.VTViewTemplateImpl#getStyles <em>Styles</em>}</li>
- * <li>{@link org.eclipse.emf.ecp.view.template.model.impl.VTViewTemplateImpl#getReferencedEcores <em>Referenced Ecores
- * </em>}</li>
- * </ul>
  * </p>
+ * <ul>
+ * <li>{@link org.eclipse.emf.ecp.view.template.model.impl.VTViewTemplateImpl#getControlValidationConfiguration
+ * <em>Control Validation Configuration</em>}</li>
+ * <li>{@link org.eclipse.emf.ecp.view.template.model.impl.VTViewTemplateImpl#getStyles <em>Styles</em>}</li>
+ * <li>{@link org.eclipse.emf.ecp.view.template.model.impl.VTViewTemplateImpl#getReferencedEcores <em>Referenced
+ * Ecores</em>}</li>
+ * </ul>
  *
  * @generated
  */
-public class VTViewTemplateImpl extends MinimalEObjectImpl.Container implements VTViewTemplate
-{
+public class VTViewTemplateImpl extends MinimalEObjectImpl.Container implements VTViewTemplate {
 	/**
 	 * The cached value of the '{@link #getControlValidationConfiguration() <em>Control Validation Configuration</em>}'
 	 * containment reference.
@@ -87,8 +86,7 @@
 	 *
 	 * @generated
 	 */
-	protected VTViewTemplateImpl()
-	{
+	protected VTViewTemplateImpl() {
 		super();
 	}
 
@@ -99,8 +97,7 @@
 	 * @generated
 	 */
 	@Override
-	protected EClass eStaticClass()
-	{
+	protected EClass eStaticClass() {
 		return VTTemplatePackage.Literals.VIEW_TEMPLATE;
 	}
 
@@ -111,8 +108,7 @@
 	 * @generated
 	 */
 	@Override
-	public VTControlValidationTemplate getControlValidationConfiguration()
-	{
+	public VTControlValidationTemplate getControlValidationConfiguration() {
 		return controlValidationConfiguration;
 	}
 
@@ -123,12 +119,10 @@
 	 * @generated
 	 */
 	public NotificationChain basicSetControlValidationConfiguration(
-		VTControlValidationTemplate newControlValidationConfiguration, NotificationChain msgs)
-	{
+		VTControlValidationTemplate newControlValidationConfiguration, NotificationChain msgs) {
 		final VTControlValidationTemplate oldControlValidationConfiguration = controlValidationConfiguration;
 		controlValidationConfiguration = newControlValidationConfiguration;
-		if (eNotificationRequired())
-		{
+		if (eNotificationRequired()) {
 			final ENotificationImpl notification = new ENotificationImpl(this, Notification.SET,
 				VTTemplatePackage.VIEW_TEMPLATE__CONTROL_VALIDATION_CONFIGURATION, oldControlValidationConfiguration,
 				newControlValidationConfiguration);
@@ -148,25 +142,24 @@
 	 * @generated
 	 */
 	@Override
-	public void setControlValidationConfiguration(VTControlValidationTemplate newControlValidationConfiguration)
-	{
-		if (newControlValidationConfiguration != controlValidationConfiguration)
-		{
+	public void setControlValidationConfiguration(VTControlValidationTemplate newControlValidationConfiguration) {
+		if (newControlValidationConfiguration != controlValidationConfiguration) {
 			NotificationChain msgs = null;
 			if (controlValidationConfiguration != null) {
-				msgs = ((InternalEObject) controlValidationConfiguration).eInverseRemove(this, EOPPOSITE_FEATURE_BASE
-					- VTTemplatePackage.VIEW_TEMPLATE__CONTROL_VALIDATION_CONFIGURATION, null, msgs);
+				msgs = ((InternalEObject) controlValidationConfiguration).eInverseRemove(this,
+					EOPPOSITE_FEATURE_BASE - VTTemplatePackage.VIEW_TEMPLATE__CONTROL_VALIDATION_CONFIGURATION, null,
+					msgs);
 			}
 			if (newControlValidationConfiguration != null) {
-				msgs = ((InternalEObject) newControlValidationConfiguration).eInverseAdd(this, EOPPOSITE_FEATURE_BASE
-					- VTTemplatePackage.VIEW_TEMPLATE__CONTROL_VALIDATION_CONFIGURATION, null, msgs);
+				msgs = ((InternalEObject) newControlValidationConfiguration).eInverseAdd(this,
+					EOPPOSITE_FEATURE_BASE - VTTemplatePackage.VIEW_TEMPLATE__CONTROL_VALIDATION_CONFIGURATION, null,
+					msgs);
 			}
 			msgs = basicSetControlValidationConfiguration(newControlValidationConfiguration, msgs);
 			if (msgs != null) {
 				msgs.dispatch();
 			}
-		}
-		else if (eNotificationRequired()) {
+		} else if (eNotificationRequired()) {
 			eNotify(new ENotificationImpl(this, Notification.SET,
 				VTTemplatePackage.VIEW_TEMPLATE__CONTROL_VALIDATION_CONFIGURATION, newControlValidationConfiguration,
 				newControlValidationConfiguration));
@@ -180,10 +173,8 @@
 	 * @generated
 	 */
 	@Override
-	public EList<VTStyle> getStyles()
-	{
-		if (styles == null)
-		{
+	public EList<VTStyle> getStyles() {
+		if (styles == null) {
 			styles = new EObjectContainmentEList<VTStyle>(VTStyle.class, this, VTTemplatePackage.VIEW_TEMPLATE__STYLES);
 		}
 		return styles;
@@ -196,10 +187,8 @@
 	 * @generated
 	 */
 	@Override
-	public EList<String> getReferencedEcores()
-	{
-		if (referencedEcores == null)
-		{
+	public EList<String> getReferencedEcores() {
+		if (referencedEcores == null) {
 			referencedEcores = new EDataTypeUniqueEList<String>(String.class, this,
 				VTTemplatePackage.VIEW_TEMPLATE__REFERENCED_ECORES);
 		}
@@ -213,10 +202,8 @@
 	 * @generated
 	 */
 	@Override
-	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
-	{
-		switch (featureID)
-		{
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
 		case VTTemplatePackage.VIEW_TEMPLATE__CONTROL_VALIDATION_CONFIGURATION:
 			return basicSetControlValidationConfiguration(null, msgs);
 		case VTTemplatePackage.VIEW_TEMPLATE__STYLES:
@@ -232,10 +219,8 @@
 	 * @generated
 	 */
 	@Override
-	public Object eGet(int featureID, boolean resolve, boolean coreType)
-	{
-		switch (featureID)
-		{
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
 		case VTTemplatePackage.VIEW_TEMPLATE__CONTROL_VALIDATION_CONFIGURATION:
 			return getControlValidationConfiguration();
 		case VTTemplatePackage.VIEW_TEMPLATE__STYLES:
@@ -254,10 +239,8 @@
 	 */
 	@SuppressWarnings("unchecked")
 	@Override
-	public void eSet(int featureID, Object newValue)
-	{
-		switch (featureID)
-		{
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
 		case VTTemplatePackage.VIEW_TEMPLATE__CONTROL_VALIDATION_CONFIGURATION:
 			setControlValidationConfiguration((VTControlValidationTemplate) newValue);
 			return;
@@ -280,10 +263,8 @@
 	 * @generated
 	 */
 	@Override
-	public void eUnset(int featureID)
-	{
-		switch (featureID)
-		{
+	public void eUnset(int featureID) {
+		switch (featureID) {
 		case VTTemplatePackage.VIEW_TEMPLATE__CONTROL_VALIDATION_CONFIGURATION:
 			setControlValidationConfiguration((VTControlValidationTemplate) null);
 			return;
@@ -304,10 +285,8 @@
 	 * @generated
 	 */
 	@Override
-	public boolean eIsSet(int featureID)
-	{
-		switch (featureID)
-		{
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
 		case VTTemplatePackage.VIEW_TEMPLATE__CONTROL_VALIDATION_CONFIGURATION:
 			return controlValidationConfiguration != null;
 		case VTTemplatePackage.VIEW_TEMPLATE__STYLES:
@@ -325,8 +304,7 @@
 	 * @generated
 	 */
 	@Override
-	public String toString()
-	{
+	public String toString() {
 		if (eIsProxy()) {
 			return super.toString();
 		}
diff --git a/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/model/util/TemplateAdapterFactory.java b/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/model/util/TemplateAdapterFactory.java
index da30c3c..8d57201 100644
--- a/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/model/util/TemplateAdapterFactory.java
+++ b/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/model/util/TemplateAdapterFactory.java
@@ -16,9 +16,11 @@
 import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
 import org.eclipse.emf.ecore.EObject;
 import org.eclipse.emf.ecp.view.template.model.VTControlValidationTemplate;
+import org.eclipse.emf.ecp.view.template.model.VTMultiStyleSelectorContainer;
 import org.eclipse.emf.ecp.view.template.model.VTStyle;
 import org.eclipse.emf.ecp.view.template.model.VTStyleProperty;
 import org.eclipse.emf.ecp.view.template.model.VTStyleSelector;
+import org.eclipse.emf.ecp.view.template.model.VTStyleSelectorContainer;
 import org.eclipse.emf.ecp.view.template.model.VTTemplatePackage;
 import org.eclipse.emf.ecp.view.template.model.VTViewTemplate;
 
@@ -31,8 +33,7 @@
  * @see org.eclipse.emf.ecp.view.template.model.VTTemplatePackage
  * @generated
  */
-public class TemplateAdapterFactory extends AdapterFactoryImpl
-{
+public class TemplateAdapterFactory extends AdapterFactoryImpl {
 	/**
 	 * The cached model package.
 	 * <!-- begin-user-doc -->
@@ -49,10 +50,8 @@
 	 *
 	 * @generated
 	 */
-	public TemplateAdapterFactory()
-	{
-		if (modelPackage == null)
-		{
+	public TemplateAdapterFactory() {
+		if (modelPackage == null) {
 			modelPackage = VTTemplatePackage.eINSTANCE;
 		}
 	}
@@ -68,14 +67,11 @@
 	 * @generated
 	 */
 	@Override
-	public boolean isFactoryForType(Object object)
-	{
-		if (object == modelPackage)
-		{
+	public boolean isFactoryForType(Object object) {
+		if (object == modelPackage) {
 			return true;
 		}
-		if (object instanceof EObject)
-		{
+		if (object instanceof EObject) {
 			return ((EObject) object).eClass().getEPackage() == modelPackage;
 		}
 		return false;
@@ -88,45 +84,47 @@
 	 *
 	 * @generated
 	 */
-	protected TemplateSwitch<Adapter> modelSwitch =
-		new TemplateSwitch<Adapter>()
-		{
-			@Override
-			public Adapter caseViewTemplate(VTViewTemplate object)
-			{
-				return createViewTemplateAdapter();
-			}
+	protected TemplateSwitch<Adapter> modelSwitch = new TemplateSwitch<Adapter>() {
+		@Override
+		public Adapter caseViewTemplate(VTViewTemplate object) {
+			return createViewTemplateAdapter();
+		}
 
-			@Override
-			public Adapter caseControlValidationTemplate(VTControlValidationTemplate object)
-			{
-				return createControlValidationTemplateAdapter();
-			}
+		@Override
+		public Adapter caseControlValidationTemplate(VTControlValidationTemplate object) {
+			return createControlValidationTemplateAdapter();
+		}
 
-			@Override
-			public Adapter caseStyle(VTStyle object)
-			{
-				return createStyleAdapter();
-			}
+		@Override
+		public Adapter caseStyle(VTStyle object) {
+			return createStyleAdapter();
+		}
 
-			@Override
-			public Adapter caseStyleProperty(VTStyleProperty object)
-			{
-				return createStylePropertyAdapter();
-			}
+		@Override
+		public Adapter caseStyleProperty(VTStyleProperty object) {
+			return createStylePropertyAdapter();
+		}
 
-			@Override
-			public Adapter caseStyleSelector(VTStyleSelector object)
-			{
-				return createStyleSelectorAdapter();
-			}
+		@Override
+		public Adapter caseStyleSelector(VTStyleSelector object) {
+			return createStyleSelectorAdapter();
+		}
 
-			@Override
-			public Adapter defaultCase(EObject object)
-			{
-				return createEObjectAdapter();
-			}
-		};
+		@Override
+		public Adapter caseStyleSelectorContainer(VTStyleSelectorContainer object) {
+			return createStyleSelectorContainerAdapter();
+		}
+
+		@Override
+		public Adapter caseMultiStyleSelectorContainer(VTMultiStyleSelectorContainer object) {
+			return createMultiStyleSelectorContainerAdapter();
+		}
+
+		@Override
+		public Adapter defaultCase(EObject object) {
+			return createEObjectAdapter();
+		}
+	};
 
 	/**
 	 * Creates an adapter for the <code>target</code>.
@@ -138,8 +136,7 @@
 	 * @generated
 	 */
 	@Override
-	public Adapter createAdapter(Notifier target)
-	{
+	public Adapter createAdapter(Notifier target) {
 		return modelSwitch.doSwitch((EObject) target);
 	}
 
@@ -155,15 +152,14 @@
 	 * @see org.eclipse.emf.ecp.view.template.model.VTViewTemplate
 	 * @generated
 	 */
-	public Adapter createViewTemplateAdapter()
-	{
+	public Adapter createViewTemplateAdapter() {
 		return null;
 	}
 
 	/**
-	 * Creates a new adapter for an object of class '
-	 * {@link org.eclipse.emf.ecp.view.template.model.VTControlValidationTemplate <em>Control Validation Template</em>}
-	 * '.
+	 * Creates a new adapter for an object of class
+	 * '{@link org.eclipse.emf.ecp.view.template.model.VTControlValidationTemplate <em>Control Validation
+	 * Template</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.
@@ -173,8 +169,7 @@
 	 * @see org.eclipse.emf.ecp.view.template.model.VTControlValidationTemplate
 	 * @generated
 	 */
-	public Adapter createControlValidationTemplateAdapter()
-	{
+	public Adapter createControlValidationTemplateAdapter() {
 		return null;
 	}
 
@@ -190,8 +185,7 @@
 	 * @see org.eclipse.emf.ecp.view.template.model.VTStyle
 	 * @generated
 	 */
-	public Adapter createStyleAdapter()
-	{
+	public Adapter createStyleAdapter() {
 		return null;
 	}
 
@@ -207,8 +201,7 @@
 	 * @see org.eclipse.emf.ecp.view.template.model.VTStyleProperty
 	 * @generated
 	 */
-	public Adapter createStylePropertyAdapter()
-	{
+	public Adapter createStylePropertyAdapter() {
 		return null;
 	}
 
@@ -224,8 +217,40 @@
 	 * @see org.eclipse.emf.ecp.view.template.model.VTStyleSelector
 	 * @generated
 	 */
-	public Adapter createStyleSelectorAdapter()
-	{
+	public Adapter createStyleSelectorAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class
+	 * '{@link org.eclipse.emf.ecp.view.template.model.VTStyleSelectorContainer <em>Style Selector Container</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.emf.ecp.view.template.model.VTStyleSelectorContainer
+	 * @generated
+	 */
+	public Adapter createStyleSelectorContainerAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class
+	 * '{@link org.eclipse.emf.ecp.view.template.model.VTMultiStyleSelectorContainer <em>Multi Style Selector
+	 * Container</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.emf.ecp.view.template.model.VTMultiStyleSelectorContainer
+	 * @generated
+	 */
+	public Adapter createMultiStyleSelectorContainerAdapter() {
 		return null;
 	}
 
@@ -238,8 +263,7 @@
 	 * @return the new adapter.
 	 * @generated
 	 */
-	public Adapter createEObjectAdapter()
-	{
+	public Adapter createEObjectAdapter() {
 		return null;
 	}
 
diff --git a/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/model/util/TemplateSwitch.java b/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/model/util/TemplateSwitch.java
index 7f0fdb2..4d9177e 100644
--- a/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/model/util/TemplateSwitch.java
+++ b/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/model/util/TemplateSwitch.java
@@ -15,9 +15,11 @@
 import org.eclipse.emf.ecore.EPackage;
 import org.eclipse.emf.ecore.util.Switch;
 import org.eclipse.emf.ecp.view.template.model.VTControlValidationTemplate;
+import org.eclipse.emf.ecp.view.template.model.VTMultiStyleSelectorContainer;
 import org.eclipse.emf.ecp.view.template.model.VTStyle;
 import org.eclipse.emf.ecp.view.template.model.VTStyleProperty;
 import org.eclipse.emf.ecp.view.template.model.VTStyleSelector;
+import org.eclipse.emf.ecp.view.template.model.VTStyleSelectorContainer;
 import org.eclipse.emf.ecp.view.template.model.VTTemplatePackage;
 import org.eclipse.emf.ecp.view.template.model.VTViewTemplate;
 
@@ -35,8 +37,7 @@
  * @see org.eclipse.emf.ecp.view.template.model.VTTemplatePackage
  * @generated
  */
-public class TemplateSwitch<T> extends Switch<T>
-{
+public class TemplateSwitch<T> extends Switch<T> {
 	/**
 	 * The cached model package
 	 * <!-- begin-user-doc -->
@@ -53,10 +54,8 @@
 	 *
 	 * @generated
 	 */
-	public TemplateSwitch()
-	{
-		if (modelPackage == null)
-		{
+	public TemplateSwitch() {
+		if (modelPackage == null) {
 			modelPackage = VTTemplatePackage.eINSTANCE;
 		}
 	}
@@ -66,13 +65,12 @@
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 *
-	 * @parameter ePackage the package in question.
+	 * @param ePackage the package in question.
 	 * @return whether this is a switch for the given package.
 	 * @generated
 	 */
 	@Override
-	protected boolean isSwitchFor(EPackage ePackage)
-	{
+	protected boolean isSwitchFor(EPackage ePackage) {
 		return ePackage == modelPackage;
 	}
 
@@ -86,10 +84,8 @@
 	 * @generated
 	 */
 	@Override
-	protected T doSwitch(int classifierID, EObject theEObject)
-	{
-		switch (classifierID)
-		{
+	protected T doSwitch(int classifierID, EObject theEObject) {
+		switch (classifierID) {
 		case VTTemplatePackage.VIEW_TEMPLATE: {
 			final VTViewTemplate viewTemplate = (VTViewTemplate) theEObject;
 			T result = caseViewTemplate(viewTemplate);
@@ -110,6 +106,9 @@
 			final VTStyle style = (VTStyle) theEObject;
 			T result = caseStyle(style);
 			if (result == null) {
+				result = caseStyleSelectorContainer(style);
+			}
+			if (result == null) {
 				result = defaultCase(theEObject);
 			}
 			return result;
@@ -130,6 +129,22 @@
 			}
 			return result;
 		}
+		case VTTemplatePackage.STYLE_SELECTOR_CONTAINER: {
+			final VTStyleSelectorContainer styleSelectorContainer = (VTStyleSelectorContainer) theEObject;
+			T result = caseStyleSelectorContainer(styleSelectorContainer);
+			if (result == null) {
+				result = defaultCase(theEObject);
+			}
+			return result;
+		}
+		case VTTemplatePackage.MULTI_STYLE_SELECTOR_CONTAINER: {
+			final VTMultiStyleSelectorContainer multiStyleSelectorContainer = (VTMultiStyleSelectorContainer) theEObject;
+			T result = caseMultiStyleSelectorContainer(multiStyleSelectorContainer);
+			if (result == null) {
+				result = defaultCase(theEObject);
+			}
+			return result;
+		}
 		default:
 			return defaultCase(theEObject);
 		}
@@ -147,8 +162,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public T caseViewTemplate(VTViewTemplate object)
-	{
+	public T caseViewTemplate(VTViewTemplate object) {
 		return null;
 	}
 
@@ -164,8 +178,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public T caseControlValidationTemplate(VTControlValidationTemplate object)
-	{
+	public T caseControlValidationTemplate(VTControlValidationTemplate object) {
 		return null;
 	}
 
@@ -181,8 +194,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public T caseStyle(VTStyle object)
-	{
+	public T caseStyle(VTStyle object) {
 		return null;
 	}
 
@@ -198,8 +210,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public T caseStyleProperty(VTStyleProperty object)
-	{
+	public T caseStyleProperty(VTStyleProperty object) {
 		return null;
 	}
 
@@ -215,8 +226,39 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public T caseStyleSelector(VTStyleSelector object)
-	{
+	public T caseStyleSelector(VTStyleSelector object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Style Selector Container</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>Style Selector Container</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseStyleSelectorContainer(VTStyleSelectorContainer object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Multi Style Selector Container</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>Multi Style Selector Container</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseMultiStyleSelectorContainer(VTMultiStyleSelectorContainer object) {
 		return null;
 	}
 
@@ -233,8 +275,7 @@
 	 * @generated
 	 */
 	@Override
-	public T defaultCase(EObject object)
-	{
+	public T defaultCase(EObject object) {
 		return null;
 	}
 
diff --git a/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/selector/bool/model/VTAndSelector.java b/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/selector/bool/model/VTAndSelector.java
new file mode 100644
index 0000000..f7d24e1
--- /dev/null
+++ b/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/selector/bool/model/VTAndSelector.java
@@ -0,0 +1,30 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * Johannes Faltermeier - initial API and implementation
+ */
+package org.eclipse.emf.ecp.view.template.selector.bool.model;
+
+import org.eclipse.emf.ecp.view.template.model.VTMultiStyleSelectorContainer;
+import org.eclipse.emf.ecp.view.template.model.VTStyleSelector;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>And Selector</b></em>'.
+ *
+ * @since 1.17
+ *        <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.emf.ecp.view.template.selector.bool.model.VTBoolPackage#getAndSelector()
+ * @model
+ * @generated
+ */
+public interface VTAndSelector extends VTMultiStyleSelectorContainer, VTStyleSelector {
+} // VTAndSelector
diff --git a/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/selector/bool/model/VTBoolFactory.java b/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/selector/bool/model/VTBoolFactory.java
new file mode 100644
index 0000000..a2ebdf9
--- /dev/null
+++ b/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/selector/bool/model/VTBoolFactory.java
@@ -0,0 +1,56 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * Johannes Faltermeier - initial API and implementation
+ */
+package org.eclipse.emf.ecp.view.template.selector.bool.model;
+
+import org.eclipse.emf.ecore.EFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Factory</b> for the model.
+ * It provides a create method for each non-abstract class of the model.
+ *
+ * @since 1.17
+ *        <!-- end-user-doc -->
+ * @see org.eclipse.emf.ecp.view.template.selector.bool.model.VTBoolPackage
+ * @generated
+ */
+public interface VTBoolFactory extends EFactory {
+	/**
+	 * The singleton instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	VTBoolFactory eINSTANCE = org.eclipse.emf.ecp.view.template.selector.bool.model.impl.VTBoolFactoryImpl.init();
+
+	/**
+	 * Returns a new object of class '<em>And Selector</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return a new object of class '<em>And Selector</em>'.
+	 * @generated
+	 */
+	VTAndSelector createAndSelector();
+
+	/**
+	 * Returns the package supported by this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the package supported by this factory.
+	 * @generated
+	 */
+	VTBoolPackage getBoolPackage();
+
+} // VTBoolFactory
diff --git a/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/selector/bool/model/VTBoolPackage.java b/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/selector/bool/model/VTBoolPackage.java
new file mode 100644
index 0000000..f0fcfbc
--- /dev/null
+++ b/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/selector/bool/model/VTBoolPackage.java
@@ -0,0 +1,167 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * Johannes Faltermeier - initial API and implementation
+ */
+package org.eclipse.emf.ecp.view.template.selector.bool.model;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecp.view.template.model.VTTemplatePackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Package</b> for the model.
+ * It contains accessors for the meta objects to represent
+ * <ul>
+ * <li>each class,</li>
+ * <li>each feature of each class,</li>
+ * <li>each operation of each class,</li>
+ * <li>each enum,</li>
+ * <li>and each data type</li>
+ * </ul>
+ *
+ * @since 1.17
+ *        <!-- end-user-doc -->
+ * @see org.eclipse.emf.ecp.view.template.selector.bool.model.VTBoolFactory
+ * @model kind="package"
+ * @generated
+ */
+public interface VTBoolPackage extends EPackage {
+	/**
+	 * The package name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	String eNAME = "bool"; //$NON-NLS-1$
+
+	/**
+	 * The package namespace URI.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	String eNS_URI = "http://www.eclipse.org/emf/ecp/view/template/selector/bool/model"; //$NON-NLS-1$
+
+	/**
+	 * The package namespace name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	String eNS_PREFIX = "org.eclipse.emf.ecp.view.template.selector.bool.model"; //$NON-NLS-1$
+
+	/**
+	 * The singleton instance of the package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	VTBoolPackage eINSTANCE = org.eclipse.emf.ecp.view.template.selector.bool.model.impl.VTBoolPackageImpl.init();
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.emf.ecp.view.template.selector.bool.model.impl.VTAndSelectorImpl
+	 * <em>And Selector</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.emf.ecp.view.template.selector.bool.model.impl.VTAndSelectorImpl
+	 * @see org.eclipse.emf.ecp.view.template.selector.bool.model.impl.VTBoolPackageImpl#getAndSelector()
+	 * @generated
+	 */
+	int AND_SELECTOR = 0;
+
+	/**
+	 * The feature id for the '<em><b>Selectors</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int AND_SELECTOR__SELECTORS = VTTemplatePackage.MULTI_STYLE_SELECTOR_CONTAINER__SELECTORS;
+
+	/**
+	 * The number of structural features of the '<em>And Selector</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int AND_SELECTOR_FEATURE_COUNT = VTTemplatePackage.MULTI_STYLE_SELECTOR_CONTAINER_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>And Selector</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int AND_SELECTOR_OPERATION_COUNT = VTTemplatePackage.MULTI_STYLE_SELECTOR_CONTAINER_OPERATION_COUNT + 0;
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.emf.ecp.view.template.selector.bool.model.VTAndSelector
+	 * <em>And Selector</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for class '<em>And Selector</em>'.
+	 * @see org.eclipse.emf.ecp.view.template.selector.bool.model.VTAndSelector
+	 * @generated
+	 */
+	EClass getAndSelector();
+
+	/**
+	 * 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.
+	 * @generated
+	 */
+	VTBoolFactory getBoolFactory();
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * Defines literals for the meta objects that represent
+	 * <ul>
+	 * <li>each class,</li>
+	 * <li>each feature of each class,</li>
+	 * <li>each operation of each class,</li>
+	 * <li>each enum,</li>
+	 * <li>and each data type</li>
+	 * </ul>
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	interface Literals {
+		/**
+		 * The meta object literal for the
+		 * '{@link org.eclipse.emf.ecp.view.template.selector.bool.model.impl.VTAndSelectorImpl <em>And Selector</em>}'
+		 * class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @see org.eclipse.emf.ecp.view.template.selector.bool.model.impl.VTAndSelectorImpl
+		 * @see org.eclipse.emf.ecp.view.template.selector.bool.model.impl.VTBoolPackageImpl#getAndSelector()
+		 * @generated
+		 */
+		EClass AND_SELECTOR = eINSTANCE.getAndSelector();
+
+	}
+
+} // VTBoolPackage
diff --git a/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/selector/bool/model/impl/VTAndSelectorImpl.java b/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/selector/bool/model/impl/VTAndSelectorImpl.java
new file mode 100644
index 0000000..a659a59
--- /dev/null
+++ b/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/selector/bool/model/impl/VTAndSelectorImpl.java
@@ -0,0 +1,67 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * Johannes Faltermeier - initial API and implementation
+ */
+package org.eclipse.emf.ecp.view.template.selector.bool.model.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecp.view.spi.context.ViewModelContext;
+import org.eclipse.emf.ecp.view.spi.model.VElement;
+import org.eclipse.emf.ecp.view.template.model.VTStyleSelector;
+import org.eclipse.emf.ecp.view.template.model.impl.VTMultiStyleSelectorContainerImpl;
+import org.eclipse.emf.ecp.view.template.selector.bool.model.VTAndSelector;
+import org.eclipse.emf.ecp.view.template.selector.bool.model.VTBoolPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>And Selector</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class VTAndSelectorImpl extends VTMultiStyleSelectorContainerImpl implements VTAndSelector {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected VTAndSelectorImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return VTBoolPackage.Literals.AND_SELECTOR;
+	}
+
+	@Override
+	public double isApplicable(VElement vElement, ViewModelContext viewModelContext) {
+		if (getSelectors().isEmpty()) {
+			return NOT_APPLICABLE;
+		}
+		double prio = 0;
+		for (final VTStyleSelector selector : getSelectors()) {
+			final double applicable = selector.isApplicable(vElement, viewModelContext);
+			if (applicable == NOT_APPLICABLE) {
+				return NOT_APPLICABLE;
+			}
+			prio += applicable;
+		}
+		return prio;
+	}
+
+} // VTAndSelectorImpl
diff --git a/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/selector/bool/model/impl/VTBoolFactoryImpl.java b/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/selector/bool/model/impl/VTBoolFactoryImpl.java
new file mode 100644
index 0000000..3cf35d3
--- /dev/null
+++ b/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/selector/bool/model/impl/VTBoolFactoryImpl.java
@@ -0,0 +1,113 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * Johannes Faltermeier - initial API and implementation
+ */
+package org.eclipse.emf.ecp.view.template.selector.bool.model.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+import org.eclipse.emf.ecp.view.template.selector.bool.model.VTAndSelector;
+import org.eclipse.emf.ecp.view.template.selector.bool.model.VTBoolFactory;
+import org.eclipse.emf.ecp.view.template.selector.bool.model.VTBoolPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class VTBoolFactoryImpl extends EFactoryImpl implements VTBoolFactory {
+	/**
+	 * Creates the default factory implementation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public static VTBoolFactory init() {
+		try {
+			final VTBoolFactory theBoolFactory = (VTBoolFactory) EPackage.Registry.INSTANCE
+				.getEFactory(VTBoolPackage.eNS_URI);
+			if (theBoolFactory != null) {
+				return theBoolFactory;
+			}
+		} catch (final Exception exception) {
+			EcorePlugin.INSTANCE.log(exception);
+		}
+		return new VTBoolFactoryImpl();
+	}
+
+	/**
+	 * Creates an instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public VTBoolFactoryImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EObject create(EClass eClass) {
+		switch (eClass.getClassifierID()) {
+		case VTBoolPackage.AND_SELECTOR:
+			return createAndSelector();
+		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
+	public VTAndSelector createAndSelector() {
+		final VTAndSelectorImpl andSelector = new VTAndSelectorImpl();
+		return andSelector;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public VTBoolPackage getBoolPackage() {
+		return (VTBoolPackage) getEPackage();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @deprecated
+	 * @generated
+	 */
+	@Deprecated
+	public static VTBoolPackage getPackage() {
+		return VTBoolPackage.eINSTANCE;
+	}
+
+} // VTBoolFactoryImpl
diff --git a/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/selector/bool/model/impl/VTBoolPackageImpl.java b/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/selector/bool/model/impl/VTBoolPackageImpl.java
new file mode 100644
index 0000000..0dc6128
--- /dev/null
+++ b/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/selector/bool/model/impl/VTBoolPackageImpl.java
@@ -0,0 +1,205 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * Johannes Faltermeier - initial API and implementation
+ */
+package org.eclipse.emf.ecp.view.template.selector.bool.model.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+import org.eclipse.emf.ecp.view.template.model.VTTemplatePackage;
+import org.eclipse.emf.ecp.view.template.selector.bool.model.VTAndSelector;
+import org.eclipse.emf.ecp.view.template.selector.bool.model.VTBoolFactory;
+import org.eclipse.emf.ecp.view.template.selector.bool.model.VTBoolPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Package</b>.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class VTBoolPackageImpl extends EPackageImpl implements VTBoolPackage {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EClass andSelectorEClass = 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>
+	 * Note: the correct way to create the package is via the static
+	 * factory method {@link #init init()}, which also performs
+	 * initialization of the package, or returns the registered package,
+	 * if one already exists.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.emf.ecore.EPackage.Registry
+	 * @see org.eclipse.emf.ecp.view.template.selector.bool.model.VTBoolPackage#eNS_URI
+	 * @see #init()
+	 * @generated
+	 */
+	private VTBoolPackageImpl() {
+		super(eNS_URI, VTBoolFactory.eINSTANCE);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private static boolean isInited = false;
+
+	/**
+	 * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
+	 *
+	 * <p>
+	 * This method is used to initialize {@link VTBoolPackage#eINSTANCE} when that field is accessed.
+	 * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #eNS_URI
+	 * @see #createPackageContents()
+	 * @see #initializePackageContents()
+	 * @generated
+	 */
+	public static VTBoolPackage init() {
+		if (isInited) {
+			return (VTBoolPackage) EPackage.Registry.INSTANCE.getEPackage(VTBoolPackage.eNS_URI);
+		}
+
+		// Obtain or create and register package
+		final VTBoolPackageImpl theBoolPackage = (VTBoolPackageImpl) (EPackage.Registry.INSTANCE
+			.get(eNS_URI) instanceof VTBoolPackageImpl ? EPackage.Registry.INSTANCE.get(eNS_URI)
+				: new VTBoolPackageImpl());
+
+		isInited = true;
+
+		// Initialize simple dependencies
+		VTTemplatePackage.eINSTANCE.eClass();
+
+		// Create package meta-data objects
+		theBoolPackage.createPackageContents();
+
+		// Initialize created meta-data
+		theBoolPackage.initializePackageContents();
+
+		// Mark meta-data to indicate it can't be changed
+		theBoolPackage.freeze();
+
+		// Update the registry and return the package
+		EPackage.Registry.INSTANCE.put(VTBoolPackage.eNS_URI, theBoolPackage);
+		return theBoolPackage;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EClass getAndSelector() {
+		return andSelectorEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public VTBoolFactory getBoolFactory() {
+		return (VTBoolFactory) getEFactoryInstance();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private boolean isCreated = false;
+
+	/**
+	 * Creates the meta-model objects for the package. This method is
+	 * guarded to have no affect on any invocation but its first.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public void createPackageContents() {
+		if (isCreated) {
+			return;
+		}
+		isCreated = true;
+
+		// Create classes and their features
+		andSelectorEClass = createEClass(AND_SELECTOR);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private boolean isInitialized = false;
+
+	/**
+	 * Complete the initialization of the package and its meta-model. This
+	 * method is guarded to have no affect on any invocation but its first.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public void initializePackageContents() {
+		if (isInitialized) {
+			return;
+		}
+		isInitialized = true;
+
+		// Initialize package
+		setName(eNAME);
+		setNsPrefix(eNS_PREFIX);
+		setNsURI(eNS_URI);
+
+		// Obtain other dependent packages
+		final VTTemplatePackage theTemplatePackage = (VTTemplatePackage) EPackage.Registry.INSTANCE
+			.getEPackage(VTTemplatePackage.eNS_URI);
+
+		// Create type parameters
+
+		// Set bounds for type parameters
+
+		// Add supertypes to classes
+		andSelectorEClass.getESuperTypes().add(theTemplatePackage.getMultiStyleSelectorContainer());
+		andSelectorEClass.getESuperTypes().add(theTemplatePackage.getStyleSelector());
+
+		// Initialize classes, features, and operations; add parameters
+		initEClass(andSelectorEClass, VTAndSelector.class, "AndSelector", !IS_ABSTRACT, !IS_INTERFACE, //$NON-NLS-1$
+			IS_GENERATED_INSTANCE_CLASS);
+
+		// Create resource
+		createResource(eNS_URI);
+	}
+
+} // VTBoolPackageImpl
diff --git a/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/selector/bool/model/util/BoolAdapterFactory.java b/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/selector/bool/model/util/BoolAdapterFactory.java
new file mode 100644
index 0000000..61a6975
--- /dev/null
+++ b/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/selector/bool/model/util/BoolAdapterFactory.java
@@ -0,0 +1,181 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * Johannes Faltermeier - initial API and implementation
+ */
+package org.eclipse.emf.ecp.view.template.selector.bool.model.util;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notifier;
+import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecp.view.template.model.VTMultiStyleSelectorContainer;
+import org.eclipse.emf.ecp.view.template.model.VTStyleSelector;
+import org.eclipse.emf.ecp.view.template.selector.bool.model.VTAndSelector;
+import org.eclipse.emf.ecp.view.template.selector.bool.model.VTBoolPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Adapter Factory</b> for the model.
+ * It provides an adapter <code>createXXX</code> method for each class of the model.
+ * <!-- end-user-doc -->
+ *
+ * @see org.eclipse.emf.ecp.view.template.selector.bool.model.VTBoolPackage
+ * @generated
+ */
+public class BoolAdapterFactory extends AdapterFactoryImpl {
+	/**
+	 * The cached model package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected static VTBoolPackage modelPackage;
+
+	/**
+	 * Creates an instance of the adapter factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public BoolAdapterFactory() {
+		if (modelPackage == null) {
+			modelPackage = VTBoolPackage.eINSTANCE;
+		}
+	}
+
+	/**
+	 * Returns whether this factory is applicable for the type of the object.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns <code>true</code> if the object is either the model's package or is an instance
+	 * object of the model.
+	 * <!-- end-user-doc -->
+	 *
+	 * @return whether this factory is applicable for the type of the object.
+	 * @generated
+	 */
+	@Override
+	public boolean isFactoryForType(Object object) {
+		if (object == modelPackage) {
+			return true;
+		}
+		if (object instanceof EObject) {
+			return ((EObject) object).eClass().getEPackage() == modelPackage;
+		}
+		return false;
+	}
+
+	/**
+	 * The switch that delegates to the <code>createXXX</code> methods.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected BoolSwitch<Adapter> modelSwitch = new BoolSwitch<Adapter>() {
+		@Override
+		public Adapter caseAndSelector(VTAndSelector object) {
+			return createAndSelectorAdapter();
+		}
+
+		@Override
+		public Adapter caseMultiStyleSelectorContainer(VTMultiStyleSelectorContainer object) {
+			return createMultiStyleSelectorContainerAdapter();
+		}
+
+		@Override
+		public Adapter caseStyleSelector(VTStyleSelector object) {
+			return createStyleSelectorAdapter();
+		}
+
+		@Override
+		public Adapter defaultCase(EObject object) {
+			return createEObjectAdapter();
+		}
+	};
+
+	/**
+	 * Creates an adapter for the <code>target</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param target the object to adapt.
+	 * @return the adapter for the <code>target</code>.
+	 * @generated
+	 */
+	@Override
+	public Adapter createAdapter(Notifier target) {
+		return modelSwitch.doSwitch((EObject) target);
+	}
+
+	/**
+	 * Creates a new adapter for an object of class
+	 * '{@link org.eclipse.emf.ecp.view.template.selector.bool.model.VTAndSelector <em>And Selector</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.emf.ecp.view.template.selector.bool.model.VTAndSelector
+	 * @generated
+	 */
+	public Adapter createAndSelectorAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class
+	 * '{@link org.eclipse.emf.ecp.view.template.model.VTMultiStyleSelectorContainer <em>Multi Style Selector
+	 * Container</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.emf.ecp.view.template.model.VTMultiStyleSelectorContainer
+	 * @generated
+	 */
+	public Adapter createMultiStyleSelectorContainerAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.emf.ecp.view.template.model.VTStyleSelector
+	 * <em>Style Selector</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.emf.ecp.view.template.model.VTStyleSelector
+	 * @generated
+	 */
+	public Adapter createStyleSelectorAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for the default case.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null.
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the new adapter.
+	 * @generated
+	 */
+	public Adapter createEObjectAdapter() {
+		return null;
+	}
+
+} // BoolAdapterFactory
diff --git a/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/selector/bool/model/util/BoolSwitch.java b/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/selector/bool/model/util/BoolSwitch.java
new file mode 100644
index 0000000..b247535
--- /dev/null
+++ b/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/selector/bool/model/util/BoolSwitch.java
@@ -0,0 +1,169 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * Johannes Faltermeier - initial API and implementation
+ */
+package org.eclipse.emf.ecp.view.template.selector.bool.model.util;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.util.Switch;
+import org.eclipse.emf.ecp.view.template.model.VTMultiStyleSelectorContainer;
+import org.eclipse.emf.ecp.view.template.model.VTStyleSelector;
+import org.eclipse.emf.ecp.view.template.selector.bool.model.VTAndSelector;
+import org.eclipse.emf.ecp.view.template.selector.bool.model.VTBoolPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Switch</b> for the model's inheritance hierarchy.
+ * It supports the call {@link #doSwitch(EObject) doSwitch(object)}
+ * to invoke the <code>caseXXX</code> method for each class of the model,
+ * starting with the actual class of the object
+ * and proceeding up the inheritance hierarchy
+ * until a non-null result is returned,
+ * which is the result of the switch.
+ * <!-- end-user-doc -->
+ *
+ * @see org.eclipse.emf.ecp.view.template.selector.bool.model.VTBoolPackage
+ * @generated
+ */
+public class BoolSwitch<T> extends Switch<T> {
+	/**
+	 * The cached model package
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected static VTBoolPackage modelPackage;
+
+	/**
+	 * Creates an instance of the switch.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public BoolSwitch() {
+		if (modelPackage == null) {
+			modelPackage = VTBoolPackage.eINSTANCE;
+		}
+	}
+
+	/**
+	 * Checks whether this is a switch for the given package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param ePackage the package in question.
+	 * @return whether this is a switch for the given package.
+	 * @generated
+	 */
+	@Override
+	protected boolean isSwitchFor(EPackage ePackage) {
+		return ePackage == modelPackage;
+	}
+
+	/**
+	 * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that
+	 * result.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the first non-null result returned by a <code>caseXXX</code> call.
+	 * @generated
+	 */
+	@Override
+	protected T doSwitch(int classifierID, EObject theEObject) {
+		switch (classifierID) {
+		case VTBoolPackage.AND_SELECTOR: {
+			final VTAndSelector andSelector = (VTAndSelector) theEObject;
+			T result = caseAndSelector(andSelector);
+			if (result == null) {
+				result = caseMultiStyleSelectorContainer(andSelector);
+			}
+			if (result == null) {
+				result = caseStyleSelector(andSelector);
+			}
+			if (result == null) {
+				result = defaultCase(theEObject);
+			}
+			return result;
+		}
+		default:
+			return defaultCase(theEObject);
+		}
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>And Selector</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>And Selector</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseAndSelector(VTAndSelector object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Multi Style Selector Container</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>Multi Style Selector Container</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseMultiStyleSelectorContainer(VTMultiStyleSelectorContainer object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Style Selector</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>Style Selector</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseStyleSelector(VTStyleSelector object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch, but this is the last case anyway.
+	 * <!-- end-user-doc -->
+	 *
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject)
+	 * @generated
+	 */
+	@Override
+	public T defaultCase(EObject object) {
+		return null;
+	}
+
+} // BoolSwitch
diff --git a/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/selector/hierarchy/model/VTHierarchyFactory.java b/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/selector/hierarchy/model/VTHierarchyFactory.java
new file mode 100644
index 0000000..9f69859
--- /dev/null
+++ b/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/selector/hierarchy/model/VTHierarchyFactory.java
@@ -0,0 +1,57 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * Johannes Faltermeier - initial API and implementation
+ */
+package org.eclipse.emf.ecp.view.template.selector.hierarchy.model;
+
+import org.eclipse.emf.ecore.EFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Factory</b> for the model.
+ * It provides a create method for each non-abstract class of the model.
+ *
+ * @since 1.17
+ *        <!-- end-user-doc -->
+ * @see org.eclipse.emf.ecp.view.template.selector.hierarchy.model.VTHierarchyPackage
+ * @generated
+ */
+public interface VTHierarchyFactory extends EFactory {
+	/**
+	 * The singleton instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	VTHierarchyFactory eINSTANCE = org.eclipse.emf.ecp.view.template.selector.hierarchy.model.impl.VTHierarchyFactoryImpl
+		.init();
+
+	/**
+	 * Returns a new object of class '<em>Selector</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return a new object of class '<em>Selector</em>'.
+	 * @generated
+	 */
+	VTHierarchySelector createHierarchySelector();
+
+	/**
+	 * Returns the package supported by this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the package supported by this factory.
+	 * @generated
+	 */
+	VTHierarchyPackage getHierarchyPackage();
+
+} // VTHierarchyFactory
diff --git a/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/selector/hierarchy/model/VTHierarchyPackage.java b/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/selector/hierarchy/model/VTHierarchyPackage.java
new file mode 100644
index 0000000..e700f01
--- /dev/null
+++ b/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/selector/hierarchy/model/VTHierarchyPackage.java
@@ -0,0 +1,169 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * Johannes Faltermeier - initial API and implementation
+ */
+package org.eclipse.emf.ecp.view.template.selector.hierarchy.model;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecp.view.template.model.VTTemplatePackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Package</b> for the model.
+ * It contains accessors for the meta objects to represent
+ * <ul>
+ * <li>each class,</li>
+ * <li>each feature of each class,</li>
+ * <li>each operation of each class,</li>
+ * <li>each enum,</li>
+ * <li>and each data type</li>
+ * </ul>
+ *
+ * @since 1.17
+ *        <!-- end-user-doc -->
+ * @see org.eclipse.emf.ecp.view.template.selector.hierarchy.model.VTHierarchyFactory
+ * @model kind="package"
+ * @generated
+ */
+public interface VTHierarchyPackage extends EPackage {
+	/**
+	 * The package name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	String eNAME = "hierarchy"; //$NON-NLS-1$
+
+	/**
+	 * The package namespace URI.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	String eNS_URI = "http://www.eclipse.org/emf/ecp/view/template/selector/hierarchy/model"; //$NON-NLS-1$
+
+	/**
+	 * The package namespace name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	String eNS_PREFIX = "org.eclipse.emf.ecp.view.template.selector.hierarchy.model"; //$NON-NLS-1$
+
+	/**
+	 * The singleton instance of the package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	VTHierarchyPackage eINSTANCE = org.eclipse.emf.ecp.view.template.selector.hierarchy.model.impl.VTHierarchyPackageImpl
+		.init();
+
+	/**
+	 * The meta object id for the
+	 * '{@link org.eclipse.emf.ecp.view.template.selector.hierarchy.model.impl.VTHierarchySelectorImpl
+	 * <em>Selector</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.emf.ecp.view.template.selector.hierarchy.model.impl.VTHierarchySelectorImpl
+	 * @see org.eclipse.emf.ecp.view.template.selector.hierarchy.model.impl.VTHierarchyPackageImpl#getHierarchySelector()
+	 * @generated
+	 */
+	int HIERARCHY_SELECTOR = 0;
+
+	/**
+	 * The feature id for the '<em><b>Selector</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int HIERARCHY_SELECTOR__SELECTOR = VTTemplatePackage.STYLE_SELECTOR_CONTAINER__SELECTOR;
+
+	/**
+	 * The number of structural features of the '<em>Selector</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int HIERARCHY_SELECTOR_FEATURE_COUNT = VTTemplatePackage.STYLE_SELECTOR_CONTAINER_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>Selector</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int HIERARCHY_SELECTOR_OPERATION_COUNT = VTTemplatePackage.STYLE_SELECTOR_CONTAINER_OPERATION_COUNT + 0;
+
+	/**
+	 * Returns the meta object for class
+	 * '{@link org.eclipse.emf.ecp.view.template.selector.hierarchy.model.VTHierarchySelector <em>Selector</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for class '<em>Selector</em>'.
+	 * @see org.eclipse.emf.ecp.view.template.selector.hierarchy.model.VTHierarchySelector
+	 * @generated
+	 */
+	EClass getHierarchySelector();
+
+	/**
+	 * 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.
+	 * @generated
+	 */
+	VTHierarchyFactory getHierarchyFactory();
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * Defines literals for the meta objects that represent
+	 * <ul>
+	 * <li>each class,</li>
+	 * <li>each feature of each class,</li>
+	 * <li>each operation of each class,</li>
+	 * <li>each enum,</li>
+	 * <li>and each data type</li>
+	 * </ul>
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	interface Literals {
+		/**
+		 * The meta object literal for the
+		 * '{@link org.eclipse.emf.ecp.view.template.selector.hierarchy.model.impl.VTHierarchySelectorImpl
+		 * <em>Selector</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @see org.eclipse.emf.ecp.view.template.selector.hierarchy.model.impl.VTHierarchySelectorImpl
+		 * @see org.eclipse.emf.ecp.view.template.selector.hierarchy.model.impl.VTHierarchyPackageImpl#getHierarchySelector()
+		 * @generated
+		 */
+		EClass HIERARCHY_SELECTOR = eINSTANCE.getHierarchySelector();
+
+	}
+
+} // VTHierarchyPackage
diff --git a/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/selector/hierarchy/model/VTHierarchySelector.java b/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/selector/hierarchy/model/VTHierarchySelector.java
new file mode 100644
index 0000000..c0bc5ad
--- /dev/null
+++ b/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/selector/hierarchy/model/VTHierarchySelector.java
@@ -0,0 +1,31 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * Johannes Faltermeier - initial API and implementation
+ */
+package org.eclipse.emf.ecp.view.template.selector.hierarchy.model;
+
+import org.eclipse.emf.ecp.view.template.model.VTStyleSelector;
+import org.eclipse.emf.ecp.view.template.model.VTStyleSelectorContainer;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Selector</b></em>'.
+ *
+ * @since 1.17
+ *        <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.emf.ecp.view.template.selector.hierarchy.model.VTHierarchyPackage#getHierarchySelector()
+ * @model
+ * @generated
+ */
+public interface VTHierarchySelector extends VTStyleSelectorContainer, VTStyleSelector {
+
+} // VTHierarchySelector
diff --git a/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/selector/hierarchy/model/impl/VTHierarchyFactoryImpl.java b/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/selector/hierarchy/model/impl/VTHierarchyFactoryImpl.java
new file mode 100644
index 0000000..cfa37ce
--- /dev/null
+++ b/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/selector/hierarchy/model/impl/VTHierarchyFactoryImpl.java
@@ -0,0 +1,113 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * Johannes Faltermeier - initial API and implementation
+ */
+package org.eclipse.emf.ecp.view.template.selector.hierarchy.model.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+import org.eclipse.emf.ecp.view.template.selector.hierarchy.model.VTHierarchyFactory;
+import org.eclipse.emf.ecp.view.template.selector.hierarchy.model.VTHierarchyPackage;
+import org.eclipse.emf.ecp.view.template.selector.hierarchy.model.VTHierarchySelector;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class VTHierarchyFactoryImpl extends EFactoryImpl implements VTHierarchyFactory {
+	/**
+	 * Creates the default factory implementation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public static VTHierarchyFactory init() {
+		try {
+			final VTHierarchyFactory theHierarchyFactory = (VTHierarchyFactory) EPackage.Registry.INSTANCE
+				.getEFactory(VTHierarchyPackage.eNS_URI);
+			if (theHierarchyFactory != null) {
+				return theHierarchyFactory;
+			}
+		} catch (final Exception exception) {
+			EcorePlugin.INSTANCE.log(exception);
+		}
+		return new VTHierarchyFactoryImpl();
+	}
+
+	/**
+	 * Creates an instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public VTHierarchyFactoryImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EObject create(EClass eClass) {
+		switch (eClass.getClassifierID()) {
+		case VTHierarchyPackage.HIERARCHY_SELECTOR:
+			return createHierarchySelector();
+		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
+	public VTHierarchySelector createHierarchySelector() {
+		final VTHierarchySelectorImpl hierarchySelector = new VTHierarchySelectorImpl();
+		return hierarchySelector;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public VTHierarchyPackage getHierarchyPackage() {
+		return (VTHierarchyPackage) getEPackage();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @deprecated
+	 * @generated
+	 */
+	@Deprecated
+	public static VTHierarchyPackage getPackage() {
+		return VTHierarchyPackage.eINSTANCE;
+	}
+
+} // VTHierarchyFactoryImpl
diff --git a/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/selector/hierarchy/model/impl/VTHierarchyPackageImpl.java b/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/selector/hierarchy/model/impl/VTHierarchyPackageImpl.java
new file mode 100644
index 0000000..6797a9c
--- /dev/null
+++ b/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/selector/hierarchy/model/impl/VTHierarchyPackageImpl.java
@@ -0,0 +1,205 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * Johannes Faltermeier - initial API and implementation
+ */
+package org.eclipse.emf.ecp.view.template.selector.hierarchy.model.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+import org.eclipse.emf.ecp.view.template.model.VTTemplatePackage;
+import org.eclipse.emf.ecp.view.template.selector.hierarchy.model.VTHierarchyFactory;
+import org.eclipse.emf.ecp.view.template.selector.hierarchy.model.VTHierarchyPackage;
+import org.eclipse.emf.ecp.view.template.selector.hierarchy.model.VTHierarchySelector;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Package</b>.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class VTHierarchyPackageImpl extends EPackageImpl implements VTHierarchyPackage {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EClass hierarchySelectorEClass = 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>
+	 * Note: the correct way to create the package is via the static
+	 * factory method {@link #init init()}, which also performs
+	 * initialization of the package, or returns the registered package,
+	 * if one already exists.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.emf.ecore.EPackage.Registry
+	 * @see org.eclipse.emf.ecp.view.template.selector.hierarchy.model.VTHierarchyPackage#eNS_URI
+	 * @see #init()
+	 * @generated
+	 */
+	private VTHierarchyPackageImpl() {
+		super(eNS_URI, VTHierarchyFactory.eINSTANCE);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private static boolean isInited = false;
+
+	/**
+	 * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
+	 *
+	 * <p>
+	 * This method is used to initialize {@link VTHierarchyPackage#eINSTANCE} when that field is accessed.
+	 * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #eNS_URI
+	 * @see #createPackageContents()
+	 * @see #initializePackageContents()
+	 * @generated
+	 */
+	public static VTHierarchyPackage init() {
+		if (isInited) {
+			return (VTHierarchyPackage) EPackage.Registry.INSTANCE.getEPackage(VTHierarchyPackage.eNS_URI);
+		}
+
+		// Obtain or create and register package
+		final VTHierarchyPackageImpl theHierarchyPackage = (VTHierarchyPackageImpl) (EPackage.Registry.INSTANCE
+			.get(eNS_URI) instanceof VTHierarchyPackageImpl ? EPackage.Registry.INSTANCE.get(eNS_URI)
+				: new VTHierarchyPackageImpl());
+
+		isInited = true;
+
+		// Initialize simple dependencies
+		VTTemplatePackage.eINSTANCE.eClass();
+
+		// Create package meta-data objects
+		theHierarchyPackage.createPackageContents();
+
+		// Initialize created meta-data
+		theHierarchyPackage.initializePackageContents();
+
+		// Mark meta-data to indicate it can't be changed
+		theHierarchyPackage.freeze();
+
+		// Update the registry and return the package
+		EPackage.Registry.INSTANCE.put(VTHierarchyPackage.eNS_URI, theHierarchyPackage);
+		return theHierarchyPackage;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EClass getHierarchySelector() {
+		return hierarchySelectorEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public VTHierarchyFactory getHierarchyFactory() {
+		return (VTHierarchyFactory) getEFactoryInstance();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private boolean isCreated = false;
+
+	/**
+	 * Creates the meta-model objects for the package. This method is
+	 * guarded to have no affect on any invocation but its first.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public void createPackageContents() {
+		if (isCreated) {
+			return;
+		}
+		isCreated = true;
+
+		// Create classes and their features
+		hierarchySelectorEClass = createEClass(HIERARCHY_SELECTOR);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private boolean isInitialized = false;
+
+	/**
+	 * Complete the initialization of the package and its meta-model. This
+	 * method is guarded to have no affect on any invocation but its first.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public void initializePackageContents() {
+		if (isInitialized) {
+			return;
+		}
+		isInitialized = true;
+
+		// Initialize package
+		setName(eNAME);
+		setNsPrefix(eNS_PREFIX);
+		setNsURI(eNS_URI);
+
+		// Obtain other dependent packages
+		final VTTemplatePackage theTemplatePackage = (VTTemplatePackage) EPackage.Registry.INSTANCE
+			.getEPackage(VTTemplatePackage.eNS_URI);
+
+		// Create type parameters
+
+		// Set bounds for type parameters
+
+		// Add supertypes to classes
+		hierarchySelectorEClass.getESuperTypes().add(theTemplatePackage.getStyleSelectorContainer());
+		hierarchySelectorEClass.getESuperTypes().add(theTemplatePackage.getStyleSelector());
+
+		// Initialize classes, features, and operations; add parameters
+		initEClass(hierarchySelectorEClass, VTHierarchySelector.class, "HierarchySelector", !IS_ABSTRACT, !IS_INTERFACE, //$NON-NLS-1$
+			IS_GENERATED_INSTANCE_CLASS);
+
+		// Create resource
+		createResource(eNS_URI);
+	}
+
+} // VTHierarchyPackageImpl
diff --git a/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/selector/hierarchy/model/impl/VTHierarchySelectorImpl.java b/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/selector/hierarchy/model/impl/VTHierarchySelectorImpl.java
new file mode 100644
index 0000000..2a13b9e
--- /dev/null
+++ b/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/selector/hierarchy/model/impl/VTHierarchySelectorImpl.java
@@ -0,0 +1,70 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * Johannes Faltermeier - initial API and implementation
+ */
+package org.eclipse.emf.ecp.view.template.selector.hierarchy.model.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecp.view.spi.context.ViewModelContext;
+import org.eclipse.emf.ecp.view.spi.model.VElement;
+import org.eclipse.emf.ecp.view.template.model.impl.VTStyleSelectorContainerImpl;
+import org.eclipse.emf.ecp.view.template.selector.hierarchy.model.VTHierarchyPackage;
+import org.eclipse.emf.ecp.view.template.selector.hierarchy.model.VTHierarchySelector;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Selector</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class VTHierarchySelectorImpl extends VTStyleSelectorContainerImpl implements VTHierarchySelector {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected VTHierarchySelectorImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return VTHierarchyPackage.Literals.HIERARCHY_SELECTOR;
+	}
+
+	@Override
+	public double isApplicable(VElement vElement, ViewModelContext viewModelContext) {
+		if (getSelector() == null) {
+			return NOT_APPLICABLE;
+		}
+		EObject current = vElement;
+		while (current != null) {
+			/* check required because there may be non-VElements in the hierarchy as intermediate layout objects */
+			if (VElement.class.isInstance(current)) {
+				final double applicable = getSelector().isApplicable(VElement.class.cast(current), viewModelContext);
+				if (applicable != NOT_APPLICABLE) {
+					return applicable;
+				}
+			}
+			current = current.eContainer();
+		}
+		return NOT_APPLICABLE;
+	}
+
+} // VTHierarchySelectorImpl
diff --git a/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/selector/hierarchy/model/util/HierarchyAdapterFactory.java b/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/selector/hierarchy/model/util/HierarchyAdapterFactory.java
new file mode 100644
index 0000000..86ec133
--- /dev/null
+++ b/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/selector/hierarchy/model/util/HierarchyAdapterFactory.java
@@ -0,0 +1,180 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * Johannes Faltermeier - initial API and implementation
+ */
+package org.eclipse.emf.ecp.view.template.selector.hierarchy.model.util;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notifier;
+import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecp.view.template.model.VTStyleSelector;
+import org.eclipse.emf.ecp.view.template.model.VTStyleSelectorContainer;
+import org.eclipse.emf.ecp.view.template.selector.hierarchy.model.VTHierarchyPackage;
+import org.eclipse.emf.ecp.view.template.selector.hierarchy.model.VTHierarchySelector;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Adapter Factory</b> for the model.
+ * It provides an adapter <code>createXXX</code> method for each class of the model.
+ * <!-- end-user-doc -->
+ *
+ * @see org.eclipse.emf.ecp.view.template.selector.hierarchy.model.VTHierarchyPackage
+ * @generated
+ */
+public class HierarchyAdapterFactory extends AdapterFactoryImpl {
+	/**
+	 * The cached model package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected static VTHierarchyPackage modelPackage;
+
+	/**
+	 * Creates an instance of the adapter factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public HierarchyAdapterFactory() {
+		if (modelPackage == null) {
+			modelPackage = VTHierarchyPackage.eINSTANCE;
+		}
+	}
+
+	/**
+	 * Returns whether this factory is applicable for the type of the object.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns <code>true</code> if the object is either the model's package or is an instance
+	 * object of the model.
+	 * <!-- end-user-doc -->
+	 *
+	 * @return whether this factory is applicable for the type of the object.
+	 * @generated
+	 */
+	@Override
+	public boolean isFactoryForType(Object object) {
+		if (object == modelPackage) {
+			return true;
+		}
+		if (object instanceof EObject) {
+			return ((EObject) object).eClass().getEPackage() == modelPackage;
+		}
+		return false;
+	}
+
+	/**
+	 * The switch that delegates to the <code>createXXX</code> methods.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected HierarchySwitch<Adapter> modelSwitch = new HierarchySwitch<Adapter>() {
+		@Override
+		public Adapter caseHierarchySelector(VTHierarchySelector object) {
+			return createHierarchySelectorAdapter();
+		}
+
+		@Override
+		public Adapter caseStyleSelectorContainer(VTStyleSelectorContainer object) {
+			return createStyleSelectorContainerAdapter();
+		}
+
+		@Override
+		public Adapter caseStyleSelector(VTStyleSelector object) {
+			return createStyleSelectorAdapter();
+		}
+
+		@Override
+		public Adapter defaultCase(EObject object) {
+			return createEObjectAdapter();
+		}
+	};
+
+	/**
+	 * Creates an adapter for the <code>target</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param target the object to adapt.
+	 * @return the adapter for the <code>target</code>.
+	 * @generated
+	 */
+	@Override
+	public Adapter createAdapter(Notifier target) {
+		return modelSwitch.doSwitch((EObject) target);
+	}
+
+	/**
+	 * Creates a new adapter for an object of class
+	 * '{@link org.eclipse.emf.ecp.view.template.selector.hierarchy.model.VTHierarchySelector <em>Selector</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.emf.ecp.view.template.selector.hierarchy.model.VTHierarchySelector
+	 * @generated
+	 */
+	public Adapter createHierarchySelectorAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class
+	 * '{@link org.eclipse.emf.ecp.view.template.model.VTStyleSelectorContainer <em>Style Selector Container</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.emf.ecp.view.template.model.VTStyleSelectorContainer
+	 * @generated
+	 */
+	public Adapter createStyleSelectorContainerAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.emf.ecp.view.template.model.VTStyleSelector
+	 * <em>Style Selector</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.emf.ecp.view.template.model.VTStyleSelector
+	 * @generated
+	 */
+	public Adapter createStyleSelectorAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for the default case.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null.
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the new adapter.
+	 * @generated
+	 */
+	public Adapter createEObjectAdapter() {
+		return null;
+	}
+
+} // HierarchyAdapterFactory
diff --git a/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/selector/hierarchy/model/util/HierarchySwitch.java b/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/selector/hierarchy/model/util/HierarchySwitch.java
new file mode 100644
index 0000000..89da5ae
--- /dev/null
+++ b/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/selector/hierarchy/model/util/HierarchySwitch.java
@@ -0,0 +1,169 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * Johannes Faltermeier - initial API and implementation
+ */
+package org.eclipse.emf.ecp.view.template.selector.hierarchy.model.util;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.util.Switch;
+import org.eclipse.emf.ecp.view.template.model.VTStyleSelector;
+import org.eclipse.emf.ecp.view.template.model.VTStyleSelectorContainer;
+import org.eclipse.emf.ecp.view.template.selector.hierarchy.model.VTHierarchyPackage;
+import org.eclipse.emf.ecp.view.template.selector.hierarchy.model.VTHierarchySelector;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Switch</b> for the model's inheritance hierarchy.
+ * It supports the call {@link #doSwitch(EObject) doSwitch(object)}
+ * to invoke the <code>caseXXX</code> method for each class of the model,
+ * starting with the actual class of the object
+ * and proceeding up the inheritance hierarchy
+ * until a non-null result is returned,
+ * which is the result of the switch.
+ * <!-- end-user-doc -->
+ *
+ * @see org.eclipse.emf.ecp.view.template.selector.hierarchy.model.VTHierarchyPackage
+ * @generated
+ */
+public class HierarchySwitch<T> extends Switch<T> {
+	/**
+	 * The cached model package
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected static VTHierarchyPackage modelPackage;
+
+	/**
+	 * Creates an instance of the switch.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public HierarchySwitch() {
+		if (modelPackage == null) {
+			modelPackage = VTHierarchyPackage.eINSTANCE;
+		}
+	}
+
+	/**
+	 * Checks whether this is a switch for the given package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param ePackage the package in question.
+	 * @return whether this is a switch for the given package.
+	 * @generated
+	 */
+	@Override
+	protected boolean isSwitchFor(EPackage ePackage) {
+		return ePackage == modelPackage;
+	}
+
+	/**
+	 * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that
+	 * result.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the first non-null result returned by a <code>caseXXX</code> call.
+	 * @generated
+	 */
+	@Override
+	protected T doSwitch(int classifierID, EObject theEObject) {
+		switch (classifierID) {
+		case VTHierarchyPackage.HIERARCHY_SELECTOR: {
+			final VTHierarchySelector hierarchySelector = (VTHierarchySelector) theEObject;
+			T result = caseHierarchySelector(hierarchySelector);
+			if (result == null) {
+				result = caseStyleSelectorContainer(hierarchySelector);
+			}
+			if (result == null) {
+				result = caseStyleSelector(hierarchySelector);
+			}
+			if (result == null) {
+				result = defaultCase(theEObject);
+			}
+			return result;
+		}
+		default:
+			return defaultCase(theEObject);
+		}
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Selector</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>Selector</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseHierarchySelector(VTHierarchySelector object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Style Selector Container</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>Style Selector Container</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseStyleSelectorContainer(VTStyleSelectorContainer object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Style Selector</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>Style Selector</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseStyleSelector(VTStyleSelector object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch, but this is the last case anyway.
+	 * <!-- end-user-doc -->
+	 *
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject)
+	 * @generated
+	 */
+	@Override
+	public T defaultCase(EObject object) {
+		return null;
+	}
+
+} // HierarchySwitch
diff --git a/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/style/wrap/model/VTLabelWrapStyleProperty.java b/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/style/wrap/model/VTLabelWrapStyleProperty.java
new file mode 100644
index 0000000..449e4d6
--- /dev/null
+++ b/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/style/wrap/model/VTLabelWrapStyleProperty.java
@@ -0,0 +1,66 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * Johannes Faltermeier - initial API and implementation
+ */
+package org.eclipse.emf.ecp.view.template.style.wrap.model;
+
+import org.eclipse.emf.ecp.view.template.model.VTStyleProperty;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Label Wrap Style Property</b></em>'.
+ * 
+ * @since 1.17
+ *        <!-- end-user-doc -->
+ *
+ *        <p>
+ *        The following features are supported:
+ *        </p>
+ *        <ul>
+ *        <li>{@link org.eclipse.emf.ecp.view.template.style.wrap.model.VTLabelWrapStyleProperty#isWrapLabel <em>Wrap
+ *        Label</em>}</li>
+ *        </ul>
+ *
+ * @see org.eclipse.emf.ecp.view.template.style.wrap.model.VTWrapPackage#getLabelWrapStyleProperty()
+ * @model
+ * @generated
+ */
+public interface VTLabelWrapStyleProperty extends VTStyleProperty {
+	/**
+	 * Returns the value of the '<em><b>Wrap Label</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Wrap Label</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Wrap Label</em>' attribute.
+	 * @see #setWrapLabel(boolean)
+	 * @see org.eclipse.emf.ecp.view.template.style.wrap.model.VTWrapPackage#getLabelWrapStyleProperty_WrapLabel()
+	 * @model
+	 * @generated
+	 */
+	boolean isWrapLabel();
+
+	/**
+	 * Sets the value of the
+	 * '{@link org.eclipse.emf.ecp.view.template.style.wrap.model.VTLabelWrapStyleProperty#isWrapLabel <em>Wrap
+	 * Label</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value the new value of the '<em>Wrap Label</em>' attribute.
+	 * @see #isWrapLabel()
+	 * @generated
+	 */
+	void setWrapLabel(boolean value);
+
+} // VTLabelWrapStyleProperty
diff --git a/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/style/wrap/model/VTWrapFactory.java b/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/style/wrap/model/VTWrapFactory.java
new file mode 100644
index 0000000..23230af
--- /dev/null
+++ b/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/style/wrap/model/VTWrapFactory.java
@@ -0,0 +1,57 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * Johannes Faltermeier - initial API and implementation
+ */
+package org.eclipse.emf.ecp.view.template.style.wrap.model;
+
+import org.eclipse.emf.ecore.EFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Factory</b> for the model.
+ * It provides a create method for each non-abstract class of the model.
+ * 
+ * @since 1.17
+ *        <!-- end-user-doc -->
+ *
+ * @see org.eclipse.emf.ecp.view.template.style.wrap.model.VTWrapPackage
+ * @generated
+ */
+public interface VTWrapFactory extends EFactory {
+	/**
+	 * The singleton instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	VTWrapFactory eINSTANCE = org.eclipse.emf.ecp.view.template.style.wrap.model.impl.VTWrapFactoryImpl.init();
+
+	/**
+	 * Returns a new object of class '<em>Label Wrap Style Property</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return a new object of class '<em>Label Wrap Style Property</em>'.
+	 * @generated
+	 */
+	VTLabelWrapStyleProperty createLabelWrapStyleProperty();
+
+	/**
+	 * Returns the package supported by this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the package supported by this factory.
+	 * @generated
+	 */
+	VTWrapPackage getWrapPackage();
+
+} // VTWrapFactory
diff --git a/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/style/wrap/model/VTWrapPackage.java b/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/style/wrap/model/VTWrapPackage.java
new file mode 100644
index 0000000..04673a9
--- /dev/null
+++ b/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/style/wrap/model/VTWrapPackage.java
@@ -0,0 +1,194 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * Johannes Faltermeier - initial API and implementation
+ */
+package org.eclipse.emf.ecp.view.template.style.wrap.model;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecp.view.template.model.VTTemplatePackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Package</b> for the model.
+ * It contains accessors for the meta objects to represent
+ * <ul>
+ * <li>each class,</li>
+ * <li>each feature of each class,</li>
+ * <li>each operation of each class,</li>
+ * <li>each enum,</li>
+ * <li>and each data type</li>
+ * </ul>
+ * 
+ * @since 1.17
+ *        <!-- end-user-doc -->
+ *
+ * @see org.eclipse.emf.ecp.view.template.style.wrap.model.VTWrapFactory
+ * @model kind="package"
+ * @generated
+ */
+public interface VTWrapPackage extends EPackage {
+	/**
+	 * The package name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	String eNAME = "wrap"; //$NON-NLS-1$
+
+	/**
+	 * The package namespace URI.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	String eNS_URI = "http://www.eclipse.org/emf/ecp/view/template/style/wrap/model"; //$NON-NLS-1$
+
+	/**
+	 * The package namespace name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	String eNS_PREFIX = "org.eclipse.emf.ecp.view.template.style.wrap.model"; //$NON-NLS-1$
+
+	/**
+	 * The singleton instance of the package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	VTWrapPackage eINSTANCE = org.eclipse.emf.ecp.view.template.style.wrap.model.impl.VTWrapPackageImpl.init();
+
+	/**
+	 * The meta object id for the
+	 * '{@link org.eclipse.emf.ecp.view.template.style.wrap.model.impl.VTLabelWrapStylePropertyImpl <em>Label Wrap Style
+	 * Property</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.emf.ecp.view.template.style.wrap.model.impl.VTLabelWrapStylePropertyImpl
+	 * @see org.eclipse.emf.ecp.view.template.style.wrap.model.impl.VTWrapPackageImpl#getLabelWrapStyleProperty()
+	 * @generated
+	 */
+	int LABEL_WRAP_STYLE_PROPERTY = 0;
+
+	/**
+	 * The feature id for the '<em><b>Wrap Label</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LABEL_WRAP_STYLE_PROPERTY__WRAP_LABEL = VTTemplatePackage.STYLE_PROPERTY_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Label Wrap Style Property</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LABEL_WRAP_STYLE_PROPERTY_FEATURE_COUNT = VTTemplatePackage.STYLE_PROPERTY_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of operations of the '<em>Label Wrap Style Property</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LABEL_WRAP_STYLE_PROPERTY_OPERATION_COUNT = VTTemplatePackage.STYLE_PROPERTY_OPERATION_COUNT + 0;
+
+	/**
+	 * Returns the meta object for class
+	 * '{@link org.eclipse.emf.ecp.view.template.style.wrap.model.VTLabelWrapStyleProperty <em>Label Wrap Style
+	 * Property</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for class '<em>Label Wrap Style Property</em>'.
+	 * @see org.eclipse.emf.ecp.view.template.style.wrap.model.VTLabelWrapStyleProperty
+	 * @generated
+	 */
+	EClass getLabelWrapStyleProperty();
+
+	/**
+	 * Returns the meta object for the attribute
+	 * '{@link org.eclipse.emf.ecp.view.template.style.wrap.model.VTLabelWrapStyleProperty#isWrapLabel <em>Wrap
+	 * Label</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the attribute '<em>Wrap Label</em>'.
+	 * @see org.eclipse.emf.ecp.view.template.style.wrap.model.VTLabelWrapStyleProperty#isWrapLabel()
+	 * @see #getLabelWrapStyleProperty()
+	 * @generated
+	 */
+	EAttribute getLabelWrapStyleProperty_WrapLabel();
+
+	/**
+	 * 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.
+	 * @generated
+	 */
+	VTWrapFactory getWrapFactory();
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * Defines literals for the meta objects that represent
+	 * <ul>
+	 * <li>each class,</li>
+	 * <li>each feature of each class,</li>
+	 * <li>each operation of each class,</li>
+	 * <li>each enum,</li>
+	 * <li>and each data type</li>
+	 * </ul>
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	interface Literals {
+		/**
+		 * The meta object literal for the
+		 * '{@link org.eclipse.emf.ecp.view.template.style.wrap.model.impl.VTLabelWrapStylePropertyImpl <em>Label Wrap
+		 * Style Property</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @see org.eclipse.emf.ecp.view.template.style.wrap.model.impl.VTLabelWrapStylePropertyImpl
+		 * @see org.eclipse.emf.ecp.view.template.style.wrap.model.impl.VTWrapPackageImpl#getLabelWrapStyleProperty()
+		 * @generated
+		 */
+		EClass LABEL_WRAP_STYLE_PROPERTY = eINSTANCE.getLabelWrapStyleProperty();
+
+		/**
+		 * The meta object literal for the '<em><b>Wrap Label</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EAttribute LABEL_WRAP_STYLE_PROPERTY__WRAP_LABEL = eINSTANCE.getLabelWrapStyleProperty_WrapLabel();
+
+	}
+
+} // VTWrapPackage
diff --git a/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/style/wrap/model/impl/VTLabelWrapStylePropertyImpl.java b/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/style/wrap/model/impl/VTLabelWrapStylePropertyImpl.java
new file mode 100644
index 0000000..9fb4e54
--- /dev/null
+++ b/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/style/wrap/model/impl/VTLabelWrapStylePropertyImpl.java
@@ -0,0 +1,199 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * Johannes Faltermeier - initial API and implementation
+ */
+package org.eclipse.emf.ecp.view.template.style.wrap.model.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+import org.eclipse.emf.ecp.view.template.model.VTStyleProperty;
+import org.eclipse.emf.ecp.view.template.style.wrap.model.VTLabelWrapStyleProperty;
+import org.eclipse.emf.ecp.view.template.style.wrap.model.VTWrapPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Label Wrap Style Property</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.emf.ecp.view.template.style.wrap.model.impl.VTLabelWrapStylePropertyImpl#isWrapLabel <em>Wrap
+ * Label</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class VTLabelWrapStylePropertyImpl extends MinimalEObjectImpl.Container implements VTLabelWrapStyleProperty {
+	/**
+	 * The default value of the '{@link #isWrapLabel() <em>Wrap Label</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #isWrapLabel()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean WRAP_LABEL_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isWrapLabel() <em>Wrap Label</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #isWrapLabel()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean wrapLabel = WRAP_LABEL_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected VTLabelWrapStylePropertyImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return VTWrapPackage.Literals.LABEL_WRAP_STYLE_PROPERTY;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public boolean isWrapLabel() {
+		return wrapLabel;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setWrapLabel(boolean newWrapLabel) {
+		final boolean oldWrapLabel = wrapLabel;
+		wrapLabel = newWrapLabel;
+		if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, VTWrapPackage.LABEL_WRAP_STYLE_PROPERTY__WRAP_LABEL,
+				oldWrapLabel, wrapLabel));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case VTWrapPackage.LABEL_WRAP_STYLE_PROPERTY__WRAP_LABEL:
+			return isWrapLabel();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case VTWrapPackage.LABEL_WRAP_STYLE_PROPERTY__WRAP_LABEL:
+			setWrapLabel((Boolean) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case VTWrapPackage.LABEL_WRAP_STYLE_PROPERTY__WRAP_LABEL:
+			setWrapLabel(WRAP_LABEL_EDEFAULT);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case VTWrapPackage.LABEL_WRAP_STYLE_PROPERTY__WRAP_LABEL:
+			return wrapLabel != WRAP_LABEL_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) {
+			return super.toString();
+		}
+
+		final StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (wrapLabel: "); //$NON-NLS-1$
+		result.append(wrapLabel);
+		result.append(')');
+		return result.toString();
+	}
+
+	@Override
+	public boolean equalStyles(VTStyleProperty styleProperty) {
+		if (styleProperty == null) {
+			return false;
+		}
+		if (eClass() != styleProperty.eClass()) {
+			return false;
+		}
+		return isWrapLabel() == VTLabelWrapStyleProperty.class.cast(styleProperty).isWrapLabel();
+	}
+
+} // VTLabelWrapStylePropertyImpl
diff --git a/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/style/wrap/model/impl/VTWrapFactoryImpl.java b/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/style/wrap/model/impl/VTWrapFactoryImpl.java
new file mode 100644
index 0000000..a42c6f2
--- /dev/null
+++ b/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/style/wrap/model/impl/VTWrapFactoryImpl.java
@@ -0,0 +1,113 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * Johannes Faltermeier - initial API and implementation
+ */
+package org.eclipse.emf.ecp.view.template.style.wrap.model.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+import org.eclipse.emf.ecp.view.template.style.wrap.model.VTLabelWrapStyleProperty;
+import org.eclipse.emf.ecp.view.template.style.wrap.model.VTWrapFactory;
+import org.eclipse.emf.ecp.view.template.style.wrap.model.VTWrapPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class VTWrapFactoryImpl extends EFactoryImpl implements VTWrapFactory {
+	/**
+	 * Creates the default factory implementation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public static VTWrapFactory init() {
+		try {
+			final VTWrapFactory theWrapFactory = (VTWrapFactory) EPackage.Registry.INSTANCE
+				.getEFactory(VTWrapPackage.eNS_URI);
+			if (theWrapFactory != null) {
+				return theWrapFactory;
+			}
+		} catch (final Exception exception) {
+			EcorePlugin.INSTANCE.log(exception);
+		}
+		return new VTWrapFactoryImpl();
+	}
+
+	/**
+	 * Creates an instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public VTWrapFactoryImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EObject create(EClass eClass) {
+		switch (eClass.getClassifierID()) {
+		case VTWrapPackage.LABEL_WRAP_STYLE_PROPERTY:
+			return createLabelWrapStyleProperty();
+		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
+	public VTLabelWrapStyleProperty createLabelWrapStyleProperty() {
+		final VTLabelWrapStylePropertyImpl labelWrapStyleProperty = new VTLabelWrapStylePropertyImpl();
+		return labelWrapStyleProperty;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public VTWrapPackage getWrapPackage() {
+		return (VTWrapPackage) getEPackage();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @deprecated
+	 * @generated
+	 */
+	@Deprecated
+	public static VTWrapPackage getPackage() {
+		return VTWrapPackage.eINSTANCE;
+	}
+
+} // VTWrapFactoryImpl
diff --git a/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/style/wrap/model/impl/VTWrapPackageImpl.java b/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/style/wrap/model/impl/VTWrapPackageImpl.java
new file mode 100644
index 0000000..971316a
--- /dev/null
+++ b/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/style/wrap/model/impl/VTWrapPackageImpl.java
@@ -0,0 +1,220 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * Johannes Faltermeier - initial API and implementation
+ */
+package org.eclipse.emf.ecp.view.template.style.wrap.model.impl;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+import org.eclipse.emf.ecp.view.template.model.VTTemplatePackage;
+import org.eclipse.emf.ecp.view.template.style.wrap.model.VTLabelWrapStyleProperty;
+import org.eclipse.emf.ecp.view.template.style.wrap.model.VTWrapFactory;
+import org.eclipse.emf.ecp.view.template.style.wrap.model.VTWrapPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Package</b>.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class VTWrapPackageImpl extends EPackageImpl implements VTWrapPackage {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EClass labelWrapStylePropertyEClass = 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>
+	 * Note: the correct way to create the package is via the static
+	 * factory method {@link #init init()}, which also performs
+	 * initialization of the package, or returns the registered package,
+	 * if one already exists.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.emf.ecore.EPackage.Registry
+	 * @see org.eclipse.emf.ecp.view.template.style.wrap.model.VTWrapPackage#eNS_URI
+	 * @see #init()
+	 * @generated
+	 */
+	private VTWrapPackageImpl() {
+		super(eNS_URI, VTWrapFactory.eINSTANCE);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private static boolean isInited = false;
+
+	/**
+	 * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
+	 *
+	 * <p>
+	 * This method is used to initialize {@link VTWrapPackage#eINSTANCE} when that field is accessed.
+	 * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #eNS_URI
+	 * @see #createPackageContents()
+	 * @see #initializePackageContents()
+	 * @generated
+	 */
+	public static VTWrapPackage init() {
+		if (isInited) {
+			return (VTWrapPackage) EPackage.Registry.INSTANCE.getEPackage(VTWrapPackage.eNS_URI);
+		}
+
+		// Obtain or create and register package
+		final VTWrapPackageImpl theWrapPackage = (VTWrapPackageImpl) (EPackage.Registry.INSTANCE
+			.get(eNS_URI) instanceof VTWrapPackageImpl ? EPackage.Registry.INSTANCE.get(eNS_URI)
+				: new VTWrapPackageImpl());
+
+		isInited = true;
+
+		// Initialize simple dependencies
+		VTTemplatePackage.eINSTANCE.eClass();
+
+		// Create package meta-data objects
+		theWrapPackage.createPackageContents();
+
+		// Initialize created meta-data
+		theWrapPackage.initializePackageContents();
+
+		// Mark meta-data to indicate it can't be changed
+		theWrapPackage.freeze();
+
+		// Update the registry and return the package
+		EPackage.Registry.INSTANCE.put(VTWrapPackage.eNS_URI, theWrapPackage);
+		return theWrapPackage;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EClass getLabelWrapStyleProperty() {
+		return labelWrapStylePropertyEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EAttribute getLabelWrapStyleProperty_WrapLabel() {
+		return (EAttribute) labelWrapStylePropertyEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public VTWrapFactory getWrapFactory() {
+		return (VTWrapFactory) getEFactoryInstance();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private boolean isCreated = false;
+
+	/**
+	 * Creates the meta-model objects for the package. This method is
+	 * guarded to have no affect on any invocation but its first.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public void createPackageContents() {
+		if (isCreated) {
+			return;
+		}
+		isCreated = true;
+
+		// Create classes and their features
+		labelWrapStylePropertyEClass = createEClass(LABEL_WRAP_STYLE_PROPERTY);
+		createEAttribute(labelWrapStylePropertyEClass, LABEL_WRAP_STYLE_PROPERTY__WRAP_LABEL);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private boolean isInitialized = false;
+
+	/**
+	 * Complete the initialization of the package and its meta-model. This
+	 * method is guarded to have no affect on any invocation but its first.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public void initializePackageContents() {
+		if (isInitialized) {
+			return;
+		}
+		isInitialized = true;
+
+		// Initialize package
+		setName(eNAME);
+		setNsPrefix(eNS_PREFIX);
+		setNsURI(eNS_URI);
+
+		// Obtain other dependent packages
+		final VTTemplatePackage theTemplatePackage = (VTTemplatePackage) EPackage.Registry.INSTANCE
+			.getEPackage(VTTemplatePackage.eNS_URI);
+
+		// Create type parameters
+
+		// Set bounds for type parameters
+
+		// Add supertypes to classes
+		labelWrapStylePropertyEClass.getESuperTypes().add(theTemplatePackage.getStyleProperty());
+
+		// Initialize classes, features, and operations; add parameters
+		initEClass(labelWrapStylePropertyEClass, VTLabelWrapStyleProperty.class, "LabelWrapStyleProperty", !IS_ABSTRACT, //$NON-NLS-1$
+			!IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getLabelWrapStyleProperty_WrapLabel(), ecorePackage.getEBoolean(), "wrapLabel", null, 0, 1, //$NON-NLS-1$
+			VTLabelWrapStyleProperty.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID,
+			IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		// Create resource
+		createResource(eNS_URI);
+	}
+
+} // VTWrapPackageImpl
diff --git a/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/style/wrap/model/util/WrapAdapterFactory.java b/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/style/wrap/model/util/WrapAdapterFactory.java
new file mode 100644
index 0000000..36625a7
--- /dev/null
+++ b/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/style/wrap/model/util/WrapAdapterFactory.java
@@ -0,0 +1,159 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * Johannes Faltermeier - initial API and implementation
+ */
+package org.eclipse.emf.ecp.view.template.style.wrap.model.util;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notifier;
+import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecp.view.template.model.VTStyleProperty;
+import org.eclipse.emf.ecp.view.template.style.wrap.model.VTLabelWrapStyleProperty;
+import org.eclipse.emf.ecp.view.template.style.wrap.model.VTWrapPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Adapter Factory</b> for the model.
+ * It provides an adapter <code>createXXX</code> method for each class of the model.
+ * <!-- end-user-doc -->
+ *
+ * @see org.eclipse.emf.ecp.view.template.style.wrap.model.VTWrapPackage
+ * @generated
+ */
+public class WrapAdapterFactory extends AdapterFactoryImpl {
+	/**
+	 * The cached model package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected static VTWrapPackage modelPackage;
+
+	/**
+	 * Creates an instance of the adapter factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public WrapAdapterFactory() {
+		if (modelPackage == null) {
+			modelPackage = VTWrapPackage.eINSTANCE;
+		}
+	}
+
+	/**
+	 * Returns whether this factory is applicable for the type of the object.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns <code>true</code> if the object is either the model's package or is an instance
+	 * object of the model.
+	 * <!-- end-user-doc -->
+	 *
+	 * @return whether this factory is applicable for the type of the object.
+	 * @generated
+	 */
+	@Override
+	public boolean isFactoryForType(Object object) {
+		if (object == modelPackage) {
+			return true;
+		}
+		if (object instanceof EObject) {
+			return ((EObject) object).eClass().getEPackage() == modelPackage;
+		}
+		return false;
+	}
+
+	/**
+	 * The switch that delegates to the <code>createXXX</code> methods.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected WrapSwitch<Adapter> modelSwitch = new WrapSwitch<Adapter>() {
+		@Override
+		public Adapter caseLabelWrapStyleProperty(VTLabelWrapStyleProperty object) {
+			return createLabelWrapStylePropertyAdapter();
+		}
+
+		@Override
+		public Adapter caseStyleProperty(VTStyleProperty object) {
+			return createStylePropertyAdapter();
+		}
+
+		@Override
+		public Adapter defaultCase(EObject object) {
+			return createEObjectAdapter();
+		}
+	};
+
+	/**
+	 * Creates an adapter for the <code>target</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param target the object to adapt.
+	 * @return the adapter for the <code>target</code>.
+	 * @generated
+	 */
+	@Override
+	public Adapter createAdapter(Notifier target) {
+		return modelSwitch.doSwitch((EObject) target);
+	}
+
+	/**
+	 * Creates a new adapter for an object of class
+	 * '{@link org.eclipse.emf.ecp.view.template.style.wrap.model.VTLabelWrapStyleProperty <em>Label Wrap Style
+	 * Property</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.emf.ecp.view.template.style.wrap.model.VTLabelWrapStyleProperty
+	 * @generated
+	 */
+	public Adapter createLabelWrapStylePropertyAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.emf.ecp.view.template.model.VTStyleProperty
+	 * <em>Style Property</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.emf.ecp.view.template.model.VTStyleProperty
+	 * @generated
+	 */
+	public Adapter createStylePropertyAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for the default case.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null.
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the new adapter.
+	 * @generated
+	 */
+	public Adapter createEObjectAdapter() {
+		return null;
+	}
+
+} // WrapAdapterFactory
diff --git a/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/style/wrap/model/util/WrapSwitch.java b/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/style/wrap/model/util/WrapSwitch.java
new file mode 100644
index 0000000..9145789
--- /dev/null
+++ b/bundles/org.eclipse.emf.ecp.view.template.model/src/org/eclipse/emf/ecp/view/template/style/wrap/model/util/WrapSwitch.java
@@ -0,0 +1,149 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * Johannes Faltermeier - initial API and implementation
+ */
+package org.eclipse.emf.ecp.view.template.style.wrap.model.util;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.util.Switch;
+import org.eclipse.emf.ecp.view.template.model.VTStyleProperty;
+import org.eclipse.emf.ecp.view.template.style.wrap.model.VTLabelWrapStyleProperty;
+import org.eclipse.emf.ecp.view.template.style.wrap.model.VTWrapPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Switch</b> for the model's inheritance hierarchy.
+ * It supports the call {@link #doSwitch(EObject) doSwitch(object)}
+ * to invoke the <code>caseXXX</code> method for each class of the model,
+ * starting with the actual class of the object
+ * and proceeding up the inheritance hierarchy
+ * until a non-null result is returned,
+ * which is the result of the switch.
+ * <!-- end-user-doc -->
+ *
+ * @see org.eclipse.emf.ecp.view.template.style.wrap.model.VTWrapPackage
+ * @generated
+ */
+public class WrapSwitch<T> extends Switch<T> {
+	/**
+	 * The cached model package
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected static VTWrapPackage modelPackage;
+
+	/**
+	 * Creates an instance of the switch.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public WrapSwitch() {
+		if (modelPackage == null) {
+			modelPackage = VTWrapPackage.eINSTANCE;
+		}
+	}
+
+	/**
+	 * Checks whether this is a switch for the given package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param ePackage the package in question.
+	 * @return whether this is a switch for the given package.
+	 * @generated
+	 */
+	@Override
+	protected boolean isSwitchFor(EPackage ePackage) {
+		return ePackage == modelPackage;
+	}
+
+	/**
+	 * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that
+	 * result.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the first non-null result returned by a <code>caseXXX</code> call.
+	 * @generated
+	 */
+	@Override
+	protected T doSwitch(int classifierID, EObject theEObject) {
+		switch (classifierID) {
+		case VTWrapPackage.LABEL_WRAP_STYLE_PROPERTY: {
+			final VTLabelWrapStyleProperty labelWrapStyleProperty = (VTLabelWrapStyleProperty) theEObject;
+			T result = caseLabelWrapStyleProperty(labelWrapStyleProperty);
+			if (result == null) {
+				result = caseStyleProperty(labelWrapStyleProperty);
+			}
+			if (result == null) {
+				result = defaultCase(theEObject);
+			}
+			return result;
+		}
+		default:
+			return defaultCase(theEObject);
+		}
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Label Wrap Style Property</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>Label Wrap Style Property</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLabelWrapStyleProperty(VTLabelWrapStyleProperty object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Style Property</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>Style Property</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseStyleProperty(VTStyleProperty object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch, but this is the last case anyway.
+	 * <!-- end-user-doc -->
+	 *
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject)
+	 * @generated
+	 */
+	@Override
+	public T defaultCase(EObject object) {
+		return null;
+	}
+
+} // WrapSwitch
diff --git a/bundles/org.eclipse.emf.ecp.view.template.service/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.view.template.service/META-INF/MANIFEST.MF
index 9bbd551..c5c91cf 100644
--- a/bundles/org.eclipse.emf.ecp.view.template.service/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.view.template.service/META-INF/MANIFEST.MF
@@ -2,15 +2,16 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: ViewTemplate Service
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.template.service;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Activator: org.eclipse.emf.ecp.view.template.service.Activator
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emf.ecp.view.template.service;version="1.16.0";x-internal:=true
+Export-Package: org.eclipse.emf.ecp.view.template.service;version="1.17.0";x-internal:=true
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.7.0,4.0.0)",
-  org.eclipse.emf.ecp.view.template.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecore.xmi;bundle-version="[2.7.0,3.0.0)",
-  org.eclipse.emf.ecp.view.context;bundle-version="[1.16.0,1.17.0)"
+ org.eclipse.emf.ecp.view.template.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecore.xmi;bundle-version="[2.7.0,3.0.0)",
+ org.eclipse.emf.ecp.view.context;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Service-Component: OSGI-INF/viewTemplate.xml
 Bundle-ActivationPolicy: lazy
 Import-Package: org.osgi.service.component.annotations;version="1.2.0";resolution:=optional
+Automatic-Module-Name: org.eclipse.emf.ecp.view.template.service
diff --git a/bundles/org.eclipse.emf.ecp.view.template.service/pom.xml b/bundles/org.eclipse.emf.ecp.view.template.service/pom.xml
index 3765014..ceaa9eb 100644
--- a/bundles/org.eclipse.emf.ecp.view.template.service/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.view.template.service/pom.xml
@@ -7,13 +7,13 @@
   <parent>

     <groupId>org.eclipse.emf.ecp</groupId>

     <artifactId>ecp-bundles-parent</artifactId>

-    <version>1.16.0-SNAPSHOT</version>

+    <version>1.17.0-SNAPSHOT</version>

     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>

   </parent>

 

   <artifactId>org.eclipse.emf.ecp.view.template.service</artifactId>

   <packaging>eclipse-plugin</packaging>

-  <version>1.16.0-SNAPSHOT</version>

+  <version>1.17.0-SNAPSHOT</version>

 

   <properties>

   	<jacoco.percentage.instruction>0.1</jacoco.percentage.instruction>

diff --git a/bundles/org.eclipse.emf.ecp.view.template.tooling/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.view.template.tooling/META-INF/MANIFEST.MF
index fddb1aa..94f7336 100644
--- a/bundles/org.eclipse.emf.ecp.view.template.tooling/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.view.template.tooling/META-INF/MANIFEST.MF
@@ -2,39 +2,40 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: ECP Template Tooling
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.template.tooling;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Activator: org.eclipse.emf.ecp.view.template.internal.tooling.Activator
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emf.ecp.view.template.internal.tooling;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.view.template.internal.tooling.controls;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.view.template.internal.tooling.util;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.view.template.tooling;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.view.template.tooling.editor;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.view.template.tooling.wizards;version="1.16.0";x-friends:="org.eclipse.emf.ecp.ide.editor.view.templatebridge"
+Export-Package: org.eclipse.emf.ecp.view.template.internal.tooling;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.template.internal.tooling.controls;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.template.internal.tooling.util;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.template.tooling;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.template.tooling.editor;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.template.tooling.wizards;version="1.17.0";x-friends:="org.eclipse.emf.ecp.ide.editor.view.templatebridge"
 Require-Bundle: org.eclipse.core.resources;bundle-version="[3.7.0,4.0.0)",
-  org.eclipse.ui.ide;bundle-version="[3.9.0,4.0.0)",
-  org.eclipse.ui;bundle-version="[3.100.0,4.0.0)",
-  org.eclipse.core.runtime;bundle-version="[3.7.0,4.0.0)",
-  org.eclipse.emf.ecore;bundle-version="[2.9.0,3.0.0)",
-  org.eclipse.emf.edit;bundle-version="[2.8.0,3.0.0)",
-  org.eclipse.core.databinding;bundle-version="[1.4.1,2.0.0)",
-  org.eclipse.emf.ecp.view.model.common;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.template.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.ui.view.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.model.provider.xmi;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.ui.view.editor.controls;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.core.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.ide.util;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.model.editor;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.edit;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.core.databinding.property;bundle-version="[1.4.0,2.0.0)",
-  org.eclipse.emfforms.core.services;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.databinding;bundle-version="[1.3.0,2.0.0)",
-  org.eclipse.emfforms.editor;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.swt.treemasterdetail;bundle-version="[1.16.0,1.17.0)"
+ org.eclipse.ui.ide;bundle-version="[3.9.0,4.0.0)",
+ org.eclipse.ui;bundle-version="[3.100.0,4.0.0)",
+ org.eclipse.core.runtime;bundle-version="[3.7.0,4.0.0)",
+ org.eclipse.emf.ecore;bundle-version="[2.9.0,3.0.0)",
+ org.eclipse.emf.edit;bundle-version="[2.8.0,3.0.0)",
+ org.eclipse.core.databinding;bundle-version="[1.4.1,2.0.0)",
+ org.eclipse.emf.ecp.view.model.common;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.template.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.ui.view.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.model.provider.xmi;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.ui.view.editor.controls;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.core.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.ide.util;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.model.editor;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.edit;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.core.databinding.property;bundle-version="[1.4.0,2.0.0)",
+ org.eclipse.emfforms.core.services;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.databinding;bundle-version="[1.3.0,2.0.0)",
+ org.eclipse.emfforms.editor;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.swt.treemasterdetail;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
-Import-Package: org.eclipse.emf.ecp.edit.spi.swt.util;version="[1.16.0,1.17.0)",
+Import-Package: org.eclipse.emf.ecp.edit.spi.swt.util;version="[1.17.0,1.18.0]",
  org.eclipse.emf.edit.ui.provider;version="0.0.0",
- org.eclipse.emfforms.spi.common.report;version="[1.16.0,1.17.0)",
+ org.eclipse.emfforms.spi.common.report;version="[1.17.0,1.18.0]",
  org.eclipse.jface.databinding.swt;version="0.0.0"
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.view.template.tooling
diff --git a/bundles/org.eclipse.emf.ecp.view.template.tooling/pom.xml b/bundles/org.eclipse.emf.ecp.view.template.tooling/pom.xml
index 20aa471..c101138 100644
--- a/bundles/org.eclipse.emf.ecp.view.template.tooling/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.view.template.tooling/pom.xml
@@ -7,7 +7,7 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
 
diff --git a/bundles/org.eclipse.emf.ecp.view.template.tooling/src/org/eclipse/emf/ecp/view/template/tooling/wizards/EMFFormsTemplateWizard.java b/bundles/org.eclipse.emf.ecp.view.template.tooling/src/org/eclipse/emf/ecp/view/template/tooling/wizards/EMFFormsTemplateWizard.java
index 36a0b4b..b846931 100644
--- a/bundles/org.eclipse.emf.ecp.view.template.tooling/src/org/eclipse/emf/ecp/view/template/tooling/wizards/EMFFormsTemplateWizard.java
+++ b/bundles/org.eclipse.emf.ecp.view.template.tooling/src/org/eclipse/emf/ecp/view/template/tooling/wizards/EMFFormsTemplateWizard.java
@@ -14,7 +14,8 @@
 import java.io.ByteArrayInputStream;
 import java.io.IOException;
 import java.lang.reflect.InvocationTargetException;
-import java.util.Arrays;
+import java.util.ArrayList;
+import java.util.List;
 
 import javax.xml.parsers.DocumentBuilder;
 import javax.xml.parsers.DocumentBuilderFactory;
@@ -305,13 +306,24 @@
 		if (view == null) {
 			return command;
 		}
-		final String ecorePath = VView.class.cast(view).getEcorePath();
-		if (template.getReferencedEcores().contains(ecorePath)) {
-			return command;
+
+		final List<Command> ecorePathCommands = new ArrayList<Command>();
+		ecorePathCommands.add(command);
+
+		for (final String ecorePaths : VView.class.cast(view).getEcorePaths()) {
+			if (template.getReferencedEcores().contains(ecorePaths)) {
+				continue;
+			}
+			ecorePathCommands.add(
+				AddCommand.create(domain, template,
+					VTTemplatePackage.eINSTANCE.getViewTemplate_ReferencedEcores(), ecorePaths));
 		}
-		final Command ecorePathCommand = AddCommand.create(domain, template,
-			VTTemplatePackage.eINSTANCE.getViewTemplate_ReferencedEcores(), ecorePath);
-		return new CompoundCommand(Arrays.asList(command, ecorePathCommand));
+
+		if (ecorePathCommands.size() > 1) {
+			return new CompoundCommand(ecorePathCommands);
+		}
+		return command;
+
 	}
 
 	private boolean performFinishNewPage() {
diff --git a/bundles/org.eclipse.emf.ecp.view.template.tooling/viewmodel/dmrSelector.view b/bundles/org.eclipse.emf.ecp.view.template.tooling/viewmodel/dmrSelector.view
index 60514b4..748da20 100644
--- a/bundles/org.eclipse.emf.ecp.view.template.tooling/viewmodel/dmrSelector.view
+++ b/bundles/org.eclipse.emf.ecp.view.template.tooling/viewmodel/dmrSelector.view
@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="ASCII"?>
-<org.eclipse.emf.ecp.view.model:View xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:org.eclipse.emf.ecp.view.model="http://org/eclipse/emf/ecp/view/model/170" xmi:id="_l_t-AEWAEeWfKJaajyNdyA" name="DMR Selector View Model" ecorePath="/org.eclipse.emf.ecp.view.template.model/model/domainModelReferenceSelector.ecore">
+<org.eclipse.emf.ecp.view.model:View xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:org.eclipse.emf.ecp.view.model="http://org/eclipse/emf/ecp/view/model/1170" xmi:id="_l_t-AEWAEeWfKJaajyNdyA" name="DMR Selector View Model">
+  <ecorePaths>/org.eclipse.emf.ecp.view.template.model/model/domainModelReferenceSelector.ecore</ecorePaths>
   <rootEClass href="http://www.eclipse.org/emf/ecp/view/template/selector/domainmodelreference/model#//DomainModelReferenceSelector"/>
   <children xsi:type="org.eclipse.emf.ecp.view.model:Control" xmi:id="_l_t-AUWAEeWfKJaajyNdyA">
     <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_l_t-AkWAEeWfKJaajyNdyA">
diff --git a/bundles/org.eclipse.emf.ecp.view.template.tooling/viewmodel/template.view b/bundles/org.eclipse.emf.ecp.view.template.tooling/viewmodel/template.view
index 5c2e536..b7c480a 100644
--- a/bundles/org.eclipse.emf.ecp.view.template.tooling/viewmodel/template.view
+++ b/bundles/org.eclipse.emf.ecp.view.template.tooling/viewmodel/template.view
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="ASCII"?>
-<org.eclipse.emf.ecp.view.model:View xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:org.eclipse.emf.ecp.view.label.model="http://org/eclipse/emf/ecp/view/label/model" xmlns:org.eclipse.emf.ecp.view.model="http://org/eclipse/emf/ecp/view/model/170" xmlns:org.eclipse.emf.ecp.view.treemasterview.model="http://org/eclipse/emf/ecp/view/treemasterview/model" xmi:id="_qpBEYEWAEeWfKJaajyNdyA" name="Template View Model">
+<org.eclipse.emf.ecp.view.model:View xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:org.eclipse.emf.ecp.view.label.model="http://org/eclipse/emf/ecp/view/label/model" xmlns:org.eclipse.emf.ecp.view.model="http://org/eclipse/emf/ecp/view/model/1170" xmlns:org.eclipse.emf.ecp.view.treemasterview.model="http://org/eclipse/emf/ecp/view/treemasterview/model" xmi:id="_qpBEYEWAEeWfKJaajyNdyA" name="Template View Model">
   <rootEClass href="http://org/eclipse/emf/ecp/view/template/model#//ViewTemplate"/>
   <children xsi:type="org.eclipse.emf.ecp.view.treemasterview.model:TreeMasterDetail" xmi:id="_qpBEYUWAEeWfKJaajyNdyA">
     <detailView xmi:id="_qpBEYkWAEeWfKJaajyNdyA">
diff --git a/bundles/org.eclipse.emf.ecp.view.template.tooling/viewmodel/viewModelElementSelector.view b/bundles/org.eclipse.emf.ecp.view.template.tooling/viewmodel/viewModelElementSelector.view
index cd3fb38..c17cbf7 100644
--- a/bundles/org.eclipse.emf.ecp.view.template.tooling/viewmodel/viewModelElementSelector.view
+++ b/bundles/org.eclipse.emf.ecp.view.template.tooling/viewmodel/viewModelElementSelector.view
@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="ASCII"?>

-<org.eclipse.emf.ecp.view.model:View xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:org.eclipse.emf.ecp.view.model="http://org/eclipse/emf/ecp/view/model/170" xmi:id="_s4z8wEWAEeWfKJaajyNdyA" ecorePath="/org.eclipse.emf.ecp.view.template.model/model/viewModelElementSelector.ecore">

+<org.eclipse.emf.ecp.view.model:View xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:org.eclipse.emf.ecp.view.model="http://org/eclipse/emf/ecp/view/model/1170" xmi:id="_s4z8wEWAEeWfKJaajyNdyA">

+  <ecorePaths>/org.eclipse.emf.ecp.view.template.model/model/viewModelElementSelector.ecore</ecorePaths>

   <rootEClass href="http://www.eclipse.org/emf/ecp/view/template/selector/viewmodelelement/model#//ViewModelElementSelector"/>

   <children xsi:type="org.eclipse.emf.ecp.view.model:Control" xmi:id="_s4z8wUWAEeWfKJaajyNdyA" name="Control selectSubclasses">

     <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_s4z8wkWAEeWfKJaajyNdyA">

diff --git a/bundles/org.eclipse.emf.ecp.view.treemasterdetail.model.edit/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.view.treemasterdetail.model.edit/META-INF/MANIFEST.MF
index 651ec4c..21d42d2 100644
--- a/bundles/org.eclipse.emf.ecp.view.treemasterdetail.model.edit/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.view.treemasterdetail.model.edit/META-INF/MANIFEST.MF
@@ -2,18 +2,19 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.treemasterdetail.model.edit;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-ClassPath: .
 Bundle-Activator: org.eclipse.emf.ecp.view.treemasterdetail.model.provider.TreeMasterDetailEditPlugin$Implementation
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
-Export-Package: org.eclipse.emf.ecp.view.treemasterdetail.model.provider;version="1.16.0";x-internal:=true
+Export-Package: org.eclipse.emf.ecp.view.treemasterdetail.model.provider;version="1.17.0";x-internal:=true
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.4.0,4.0.0)",
-  org.eclipse.emf.ecp.view.treemasterdetail.model;bundle-version="[1.16.0,1.17.0)";visibility:=reexport,
-  org.eclipse.emf.edit;bundle-version="[2.5.0,3.0.0)";visibility:=reexport,
-  org.eclipse.emf.ecore;bundle-version="[2.5.0,3.0.0)";visibility:=reexport,
-  org.eclipse.emf.ecore.edit;bundle-version="[2.5.0,3.0.0)";visibility:=reexport,
-  org.eclipse.emf.ecp.view.model;bundle-version="[1.16.0,1.17.0)";visibility:=reexport,
-  org.eclipse.emf.ecp.view.model.edit;bundle-version="[1.16.0,1.17.0)";visibility:=reexport
+ org.eclipse.emf.ecp.view.treemasterdetail.model;bundle-version="[1.17.0,1.18.0]";visibility:=reexport,
+ org.eclipse.emf.edit;bundle-version="[2.5.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.ecore;bundle-version="[2.5.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.ecore.edit;bundle-version="[2.5.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.ecp.view.model;bundle-version="[1.17.0,1.18.0]";visibility:=reexport,
+ org.eclipse.emf.ecp.view.model.edit;bundle-version="[1.17.0,1.18.0]";visibility:=reexport
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.view.treemasterdetail.model.edit
diff --git a/bundles/org.eclipse.emf.ecp.view.treemasterdetail.model.edit/plugin.xml b/bundles/org.eclipse.emf.ecp.view.treemasterdetail.model.edit/plugin.xml
index eaf9e33..91b3ee0 100644
--- a/bundles/org.eclipse.emf.ecp.view.treemasterdetail.model.edit/plugin.xml
+++ b/bundles/org.eclipse.emf.ecp.view.treemasterdetail.model.edit/plugin.xml
@@ -31,7 +31,7 @@
    <extension point="org.eclipse.emf.edit.childCreationExtenders">
       <!-- @generated treeMasterDetail -->
       <extender
-            uri="http://org/eclipse/emf/ecp/view/model/170"
+            uri="http://org/eclipse/emf/ecp/view/model/1170"
             class="org.eclipse.emf.ecp.view.treemasterdetail.model.provider.TreeMasterDetailItemProviderAdapterFactory$ViewChildCreationExtender"/>
    </extension>
 
diff --git a/bundles/org.eclipse.emf.ecp.view.treemasterdetail.model.edit/pom.xml b/bundles/org.eclipse.emf.ecp.view.treemasterdetail.model.edit/pom.xml
index 41ef6ca..8ee7e14 100644
--- a/bundles/org.eclipse.emf.ecp.view.treemasterdetail.model.edit/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.view.treemasterdetail.model.edit/pom.xml
@@ -7,12 +7,12 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
 
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emf.ecp.view.treemasterdetail.model.edit</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 </project>
diff --git a/bundles/org.eclipse.emf.ecp.view.treemasterdetail.model/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.view.treemasterdetail.model/META-INF/MANIFEST.MF
index ccea0a7..ac3abe7 100644
--- a/bundles/org.eclipse.emf.ecp.view.treemasterdetail.model/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.view.treemasterdetail.model/META-INF/MANIFEST.MF
@@ -2,15 +2,16 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.treemasterdetail.model;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-ClassPath: .
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
-Export-Package: org.eclipse.emf.ecp.view.treemasterdetail.model;version="1.16.0";x-friends:="org.eclipse.emf.ecp.view.treemasterdetail.model.edit,org.eclipse.emf.ecp.view.treemasterdetail.ui.swt",
-  org.eclipse.emf.ecp.view.treemasterdetail.model.impl;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.view.treemasterdetail.model.util;version="1.16.0";x-friends:="org.eclipse.emf.ecp.view.treemasterdetail.model.edit"
+Export-Package: org.eclipse.emf.ecp.view.treemasterdetail.model;version="1.17.0";x-friends:="org.eclipse.emf.ecp.view.treemasterdetail.model.edit,org.eclipse.emf.ecp.view.treemasterdetail.ui.swt",
+ org.eclipse.emf.ecp.view.treemasterdetail.model.impl;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.treemasterdetail.model.util;version="1.17.0";x-friends:="org.eclipse.emf.ecp.view.treemasterdetail.model.edit"
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.7.0,4.0.0)",
-  org.eclipse.emf.ecore;bundle-version="[2.7.0,3.0.0)";visibility:=reexport,
-  org.eclipse.emf.ecp.view.model;bundle-version="[1.16.0,1.17.0)";visibility:=reexport
+ org.eclipse.emf.ecore;bundle-version="[2.7.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.ecp.view.model;bundle-version="[1.17.0,1.18.0]";visibility:=reexport
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.view.treemasterdetail.model
diff --git a/bundles/org.eclipse.emf.ecp.view.treemasterdetail.model/pom.xml b/bundles/org.eclipse.emf.ecp.view.treemasterdetail.model/pom.xml
index 0f52622..d51c76b 100644
--- a/bundles/org.eclipse.emf.ecp.view.treemasterdetail.model/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.view.treemasterdetail.model/pom.xml
@@ -7,12 +7,12 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
 
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emf.ecp.view.treemasterdetail.model</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 </project>
diff --git a/bundles/org.eclipse.emf.ecp.view.treemasterdetail.ui.swt/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.view.treemasterdetail.ui.swt/META-INF/MANIFEST.MF
index 3512602..a98a995 100644
--- a/bundles/org.eclipse.emf.ecp.view.treemasterdetail.ui.swt/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.view.treemasterdetail.ui.swt/META-INF/MANIFEST.MF
@@ -2,42 +2,43 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: View Model Vertical UI SWT
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.treemasterdetail.ui.swt;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Activator: org.eclipse.emf.ecp.view.internal.treemasterdetail.ui.swt.Activator
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emf.ecp.view.internal.treemasterdetail.ui.swt;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.view.spi.treemasterdetail.ui.swt;version="1.16.0",
-  org.eclipse.emf.ecp.view.treemasterdetail.ui.swt.internal;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.edit.ui.action.ecp;version="1.16.0";x-internal:=true
+Export-Package: org.eclipse.emf.ecp.view.internal.treemasterdetail.ui.swt;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.spi.treemasterdetail.ui.swt;version="1.17.0",
+ org.eclipse.emf.ecp.view.treemasterdetail.ui.swt.internal;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.edit.ui.action.ecp;version="1.17.0";x-internal:=true
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.7.0,4.0.0)",
-  org.eclipse.emf.ecp.edit;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.treemasterdetail.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.ui.view;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.model.common;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.ui.view.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.edit.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.validation;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.edit;bundle-version="[2.8.0,3.0.0)",
-  org.eclipse.emfforms.swt.core.di;bundle-version="[1.16.0,1.17.0)"
+ org.eclipse.emf.ecp.edit;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.treemasterdetail.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.ui.view;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.model.common;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.ui.view.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.edit.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.validation;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.edit;bundle-version="[2.8.0,3.0.0)",
+ org.eclipse.emfforms.swt.core.di;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Service-Component: OSGI-INF/TreeMasterDetailSWTRendererService.xml
 Bundle-ActivationPolicy: lazy
 Import-Package: javax.inject;version="1.0.0",
-  org.eclipse.core.commands;version="0.0.0",
-  org.eclipse.emf.edit.ui.dnd;version="0.0.0",
-  org.eclipse.emf.edit.ui.provider;version="0.0.0",
-  org.eclipse.emfforms.spi.common.report;version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.spi.core.services.view;version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.spi.swt.core;version="[1.16.0,1.17.0)",
-  org.eclipse.jface.action;version="0.0.0",
-  org.eclipse.jface.layout;version="0.0.0",
-  org.eclipse.jface.resource;version="0.0.0",
-  org.eclipse.jface.viewers;version="0.0.0",
-  org.eclipse.swt;version="0.0.0",
-  org.eclipse.swt.custom;version="0.0.0",
-  org.eclipse.swt.dnd;version="0.0.0",
-  org.eclipse.swt.events;version="0.0.0",
-  org.eclipse.swt.graphics;version="0.0.0",
-  org.eclipse.swt.layout;version="0.0.0",
-  org.eclipse.swt.widgets;version="0.0.0",
-  org.osgi.service.component.annotations;version="[1.2.0,2.0.0)";resolution:=optional
+ org.eclipse.core.commands;version="0.0.0",
+ org.eclipse.emf.edit.ui.dnd;version="0.0.0",
+ org.eclipse.emf.edit.ui.provider;version="0.0.0",
+ org.eclipse.emfforms.spi.common.report;version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.spi.core.services.view;version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.spi.swt.core;version="[1.17.0,1.18.0]",
+ org.eclipse.jface.action;version="0.0.0",
+ org.eclipse.jface.layout;version="0.0.0",
+ org.eclipse.jface.resource;version="0.0.0",
+ org.eclipse.jface.viewers;version="0.0.0",
+ org.eclipse.swt;version="0.0.0",
+ org.eclipse.swt.custom;version="0.0.0",
+ org.eclipse.swt.dnd;version="0.0.0",
+ org.eclipse.swt.events;version="0.0.0",
+ org.eclipse.swt.graphics;version="0.0.0",
+ org.eclipse.swt.layout;version="0.0.0",
+ org.eclipse.swt.widgets;version="0.0.0",
+ org.osgi.service.component.annotations;version="[1.2.0,2.0.0)";resolution:=optional
+Automatic-Module-Name: org.eclipse.emf.ecp.view.treemasterdetail.ui.swt
diff --git a/bundles/org.eclipse.emf.ecp.view.treemasterdetail.ui.swt/pom.xml b/bundles/org.eclipse.emf.ecp.view.treemasterdetail.ui.swt/pom.xml
index 092c9c8..cefa5d5 100644
--- a/bundles/org.eclipse.emf.ecp.view.treemasterdetail.ui.swt/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.view.treemasterdetail.ui.swt/pom.xml
@@ -7,12 +7,12 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
 
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emf.ecp.view.treemasterdetail.ui.swt</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 </project>
diff --git a/bundles/org.eclipse.emf.ecp.view.treemasterdetail.ui.swt/src/org/eclipse/emf/ecp/view/spi/treemasterdetail/ui/swt/TreeMasterDetailSWTRenderer.java b/bundles/org.eclipse.emf.ecp.view.treemasterdetail.ui.swt/src/org/eclipse/emf/ecp/view/spi/treemasterdetail/ui/swt/TreeMasterDetailSWTRenderer.java
index f0bbb7f..5ce7183 100644
--- a/bundles/org.eclipse.emf.ecp.view.treemasterdetail.ui.swt/src/org/eclipse/emf/ecp/view/spi/treemasterdetail/ui/swt/TreeMasterDetailSWTRenderer.java
+++ b/bundles/org.eclipse.emf.ecp.view.treemasterdetail.ui.swt/src/org/eclipse/emf/ecp/view/spi/treemasterdetail/ui/swt/TreeMasterDetailSWTRenderer.java
@@ -79,6 +79,7 @@
 import org.eclipse.emf.edit.ui.dnd.ViewerDragAdapter;
 import org.eclipse.emf.edit.ui.provider.AdapterFactoryContentProvider;
 import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider;
+import org.eclipse.emfforms.common.Optional;
 import org.eclipse.emfforms.spi.common.report.ReportService;
 import org.eclipse.emfforms.spi.swt.core.AbstractSWTRenderer;
 import org.eclipse.emfforms.spi.swt.core.layout.GridDescriptionFactory;
@@ -136,6 +137,8 @@
 @SuppressWarnings("deprecation")
 public class TreeMasterDetailSWTRenderer extends AbstractSWTRenderer<VTreeMasterDetail> {
 
+	private static final String ENABLE_MULTI_EDIT = "enableMultiEdit"; //$NON-NLS-1$
+
 	/**
 	 * Default Constructor.
 	 *
@@ -891,7 +894,7 @@
 					final ReferenceService referenceService = getViewModelContext().getService(
 						ReferenceService.class);
 					ViewModelContext childContext;
-					if (getViewModelContext().getContextValue("enableMultiEdit") == Boolean.TRUE) {
+					if (getViewModelContext().getContextValue(ENABLE_MULTI_EDIT) == Boolean.TRUE) {
 						childContext = ViewModelContextFactory.INSTANCE.createViewModelContext(view, (EObject) selected,
 							new TreeMasterDetailReferenceService(referenceService));
 					} else {
@@ -922,7 +925,7 @@
 
 		private Object getSelection(IStructuredSelection selection) {
 			Object treeSelected = selection != null ? selection.getFirstElement() : null;
-			if (getViewModelContext().getContextValue("enableMultiEdit") == Boolean.TRUE
+			if (getViewModelContext().getContextValue(ENABLE_MULTI_EDIT) == Boolean.TRUE
 				&& treeSelected instanceof EObject && selection.size() > 1) {
 				boolean allOfSameType = true;
 				final EObject dummy = EcoreUtil.create(((EObject) treeSelected).eClass());
@@ -1195,10 +1198,21 @@
 		 */
 		@Override
 		public void addNewModelElements(EObject eObject, EReference eReference) {
+			addNewModelElements(eObject, eReference, true);
+		}
+
+		/**
+		 * {@inheritDoc}
+		 *
+		 * @see org.eclipse.emf.ecp.edit.spi.ReferenceService#addNewModelElements(org.eclipse.emf.ecore.EObject,
+		 *      org.eclipse.emf.ecore.EReference)
+		 */
+		@Override
+		public Optional<EObject> addNewModelElements(EObject eObject, EReference eReference, boolean openInNewContext) {
 			if (delegate == null) {
-				return;
+				return Optional.empty();
 			}
-			delegate.addNewModelElements(eObject, eReference);
+			return delegate.addNewModelElements(eObject, eReference, openInNewContext);
 		}
 
 		/**
diff --git a/bundles/org.eclipse.emf.ecp.view.treemasterdetail.ui.swt/src/org/eclipse/emf/edit/ui/action/ecp/CreateChildAction.java b/bundles/org.eclipse.emf.ecp.view.treemasterdetail.ui.swt/src/org/eclipse/emf/edit/ui/action/ecp/CreateChildAction.java
index 8867f09..94bb6e1 100644
--- a/bundles/org.eclipse.emf.ecp.view.treemasterdetail.ui.swt/src/org/eclipse/emf/edit/ui/action/ecp/CreateChildAction.java
+++ b/bundles/org.eclipse.emf.ecp.view.treemasterdetail.ui.swt/src/org/eclipse/emf/edit/ui/action/ecp/CreateChildAction.java
@@ -1,6 +1,6 @@
-// REUSED CLASS
 /**
  * Copyright (c) 2002-2007 IBM Corporation 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
@@ -9,6 +9,7 @@
  * Contributors:
  * IBM - Initial API and implementation
  */
+// REUSED CLASS
 package org.eclipse.emf.edit.ui.action.ecp;
 
 import java.util.Collection;
@@ -22,8 +23,7 @@
 /**
  * A child creation action is implemented by creating a {@link CreateChildCommand}.
  */
-public class CreateChildAction extends StaticSelectionCommandAction
-{
+public class CreateChildAction extends StaticSelectionCommandAction {
 	/**
 	 * This describes the child to be created.
 	 */
@@ -35,8 +35,7 @@
 	 *
 	 * @since 2.4.0
 	 */
-	public CreateChildAction(EditingDomain editingDomain, ISelection selection, Object descriptor)
-	{
+	public CreateChildAction(EditingDomain editingDomain, ISelection selection, Object descriptor) {
 		super(editingDomain);
 		this.descriptor = descriptor;
 		configureAction(selection);
@@ -46,10 +45,8 @@
 	 * This creates the command for {@link StaticSelectionCommandAction#createActionCommand}.
 	 */
 	@Override
-	protected Command createActionCommand(EditingDomain editingDomain, Collection<?> collection)
-	{
-		if (collection.size() == 1)
-		{
+	protected Command createActionCommand(EditingDomain editingDomain, Collection<?> collection) {
+		if (collection.size() == 1) {
 			final Object owner = collection.iterator().next();
 			return CreateChildCommand.create(editingDomain, owner,
 				descriptor, collection);
diff --git a/bundles/org.eclipse.emf.ecp.view.treemasterdetail.validation/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.view.treemasterdetail.validation/META-INF/MANIFEST.MF
index 5ee091e..e92c381 100644
--- a/bundles/org.eclipse.emf.ecp.view.treemasterdetail.validation/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.view.treemasterdetail.validation/META-INF/MANIFEST.MF
@@ -2,17 +2,18 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: EMF Forms TreeMasterDetail Services
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.treemasterdetail.validation;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emf.ecp.view.treemasterdetail.internal.validation;version="1.16.0";x-internal:=true
-Require-Bundle: org.eclipse.emf.ecp.view.treemasterdetail.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.context;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.ui.view;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.edit;bundle-version="[2.8.0,3.0.0)",
-  org.eclipse.emf.ecp.view.model.common;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.treemasterdetail.ui.swt;bundle-version="[1.16.0,1.17.0)"
+Export-Package: org.eclipse.emf.ecp.view.treemasterdetail.internal.validation;version="1.17.0";x-internal:=true
+Require-Bundle: org.eclipse.emf.ecp.view.treemasterdetail.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.context;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.ui.view;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.edit;bundle-version="[2.8.0,3.0.0)",
+ org.eclipse.emf.ecp.view.model.common;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.treemasterdetail.ui.swt;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Import-Package: org.eclipse.emf.edit.ui.provider;version="0.0.0",
-  org.eclipse.emfforms.spi.core.services.view;version="[1.16.0,1.17.0)",
-  org.eclipse.jface.viewers;version="0.0.0"
+ org.eclipse.emfforms.spi.core.services.view;version="[1.17.0,1.18.0]",
+ org.eclipse.jface.viewers;version="0.0.0"
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.view.treemasterdetail.validation
diff --git a/bundles/org.eclipse.emf.ecp.view.treemasterdetail.validation/pom.xml b/bundles/org.eclipse.emf.ecp.view.treemasterdetail.validation/pom.xml
index c0cd91e..96085e7 100644
--- a/bundles/org.eclipse.emf.ecp.view.treemasterdetail.validation/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.view.treemasterdetail.validation/pom.xml
@@ -7,12 +7,12 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
 
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emf.ecp.view.treemasterdetail.validation</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 </project>
diff --git a/bundles/org.eclipse.emf.ecp.view.unset/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.view.unset/META-INF/MANIFEST.MF
index 49b86cd..fcd3dc0 100644
--- a/bundles/org.eclipse.emf.ecp.view.unset/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.view.unset/META-INF/MANIFEST.MF
@@ -2,16 +2,17 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: View Model Unset Service
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.unset;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Activator: org.eclipse.emf.ecp.view.internal.unset.Activator
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emf.ecp.view.internal.unset;version="1.16.0";x-friends:="org.eclipse.emf.ecp.view.unset.test"
-Require-Bundle: org.eclipse.emf.ecp.view.context;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.common;bundle-version="[2.7.0,3.0.0)",
-  org.eclipse.emf.ecore;bundle-version="[2.7.0,3.0.0)",
-  org.eclipse.emf.ecp.view.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.core.runtime;bundle-version="[3.8.0,4.0.0)",
-  org.eclipse.emfforms.core.services;bundle-version="[1.16.0,1.17.0)"
+Export-Package: org.eclipse.emf.ecp.view.internal.unset;version="1.17.0";x-friends:="org.eclipse.emf.ecp.view.unset.test"
+Require-Bundle: org.eclipse.emf.ecp.view.context;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.common;bundle-version="[2.7.0,3.0.0)",
+ org.eclipse.emf.ecore;bundle-version="[2.7.0,3.0.0)",
+ org.eclipse.emf.ecp.view.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.core.runtime;bundle-version="[3.8.0,4.0.0)",
+ org.eclipse.emfforms.core.services;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
-Import-Package: org.eclipse.emfforms.spi.common.report;version="[1.16.0,1.17.0)"
+Import-Package: org.eclipse.emfforms.spi.common.report;version="[1.17.0,1.18.0]"
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.view.unset
diff --git a/bundles/org.eclipse.emf.ecp.view.unset/pom.xml b/bundles/org.eclipse.emf.ecp.view.unset/pom.xml
index bba282e..871079a 100644
--- a/bundles/org.eclipse.emf.ecp.view.unset/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.view.unset/pom.xml
@@ -7,13 +7,13 @@
   <parent>

     <groupId>org.eclipse.emf.ecp</groupId>

     <artifactId>ecp-bundles-parent</artifactId>

-    <version>1.16.0-SNAPSHOT</version>

+    <version>1.17.0-SNAPSHOT</version>

     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>

   </parent>

 

   <artifactId>org.eclipse.emf.ecp.view.unset</artifactId>

   <packaging>eclipse-plugin</packaging>

-  <version>1.16.0-SNAPSHOT</version>

+  <version>1.17.0-SNAPSHOT</version>

 

   <groupId>org.eclipse.emf.ecp</groupId>

 

diff --git a/bundles/org.eclipse.emf.ecp.view.util.swt.rap/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.view.util.swt.rap/META-INF/MANIFEST.MF
index 918dae2..ffefb1a 100644
--- a/bundles/org.eclipse.emf.ecp.view.util.swt.rap/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.view.util.swt.rap/META-INF/MANIFEST.MF
@@ -2,17 +2,18 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: EMFForms SWT Util RAP
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.util.swt.rap
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emf.ecp.view.internal.util.swt.rap;version="1.16.0";x-internal:=true
+Export-Package: org.eclipse.emf.ecp.view.internal.util.swt.rap;version="1.17.0";x-internal:=true
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.7.0,4.0.0)",
-  org.eclipse.emf.ecp.view.util.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.rap.rwt;bundle-version="[3.1.0,4.0.0)"
+ org.eclipse.emf.ecp.view.util.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.rap.rwt;bundle-version="[3.1.0,4.0.0)"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
-Import-Package: org.eclipse.emfforms.spi.swt.core.layout;version="[1.16.0,1.17.0)",
-  org.eclipse.jface.resource;version="0.0.0",
-  org.eclipse.swt.graphics;version="0.0.0",
-  org.osgi.framework;version="1.3.0",
-  org.osgi.service.component.annotations;version="1.2.0"
+Import-Package: org.eclipse.emfforms.spi.swt.core.layout;version="[1.17.0,1.18.0]",
+ org.eclipse.jface.resource;version="0.0.0",
+ org.eclipse.swt.graphics;version="0.0.0",
+ org.osgi.framework;version="1.3.0",
+ org.osgi.service.component.annotations;version="1.2.0"
 Service-Component: OSGI-INF/org.eclipse.emf.ecp.view.internal.util.swt.rap.EMFFormsSWTLayoutDirect.xml,OSGI-INF/org.eclipse.emf.ecp.view.internal.util.swt.rap.RAPImageRegistryService.xml
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.view.util.swt.rap
diff --git a/bundles/org.eclipse.emf.ecp.view.util.swt.rap/pom.xml b/bundles/org.eclipse.emf.ecp.view.util.swt.rap/pom.xml
index 889eabf5..c849595 100644
--- a/bundles/org.eclipse.emf.ecp.view.util.swt.rap/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.view.util.swt.rap/pom.xml
@@ -7,13 +7,13 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
 
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emf.ecp.view.util.swt.rap</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 
 </project>
diff --git a/bundles/org.eclipse.emf.ecp.view.util.swt/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.view.util.swt/META-INF/MANIFEST.MF
index 0243621..11a7839 100644
--- a/bundles/org.eclipse.emf.ecp.view.util.swt/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.view.util.swt/META-INF/MANIFEST.MF
@@ -2,13 +2,14 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: EMFForms SWT Util
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.util.swt
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emf.ecp.view.internal.util.swt;version="1.16.0";x-internal:=true,
- org.eclipse.emf.ecp.view.spi.util.swt;version="1.16.0"
+Export-Package: org.eclipse.emf.ecp.view.internal.util.swt;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.spi.util.swt;version="1.17.0"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Service-Component: OSGI-INF/rcpImageRegistry.xml
 Import-Package: org.eclipse.jface.resource;version="0.0.0",
  org.eclipse.swt.graphics;version="0.0.0",
  org.osgi.framework;version="0.0.0"
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.view.util.swt
diff --git a/bundles/org.eclipse.emf.ecp.view.util.swt/pom.xml b/bundles/org.eclipse.emf.ecp.view.util.swt/pom.xml
index e85f315..da5ee31 100644
--- a/bundles/org.eclipse.emf.ecp.view.util.swt/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.view.util.swt/pom.xml
@@ -7,13 +7,13 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
 
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emf.ecp.view.util.swt</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 
 </project>
diff --git a/bundles/org.eclipse.emf.ecp.view.validation.bean.default/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.view.validation.bean.default/META-INF/MANIFEST.MF
index 32cdb04..930fc41 100644
--- a/bundles/org.eclipse.emf.ecp.view.validation.bean.default/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.view.validation.bean.default/META-INF/MANIFEST.MF
@@ -2,13 +2,14 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Default Bean Validation
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.validation.bean.default;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emf.ecp.view.internal.validation.bean;version="1.16.0";x-internal:=true
-Require-Bundle: org.eclipse.emf.ecp.view.validation;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.validation.bean;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecore;bundle-version="[2.9.0,3.0.0)",
-  org.eclipse.emfforms.common.validation;bundle-version="[1.16.0,1.17.0)"
+Export-Package: org.eclipse.emf.ecp.view.internal.validation.bean;version="1.17.0";x-internal:=true
+Require-Bundle: org.eclipse.emf.ecp.view.validation;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.validation.bean;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecore;bundle-version="[2.9.0,3.0.0)",
+ org.eclipse.emfforms.common.validation;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Import-Package: javax.validation;version="[1.0.0,2.0.0)"
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.view.validation.bean.default
diff --git a/bundles/org.eclipse.emf.ecp.view.validation.bean.default/pom.xml b/bundles/org.eclipse.emf.ecp.view.validation.bean.default/pom.xml
index 129312d..e58e949 100644
--- a/bundles/org.eclipse.emf.ecp.view.validation.bean.default/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.view.validation.bean.default/pom.xml
@@ -7,13 +7,13 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
 
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emf.ecp.view.validation.bean.default</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 
 </project>
diff --git a/bundles/org.eclipse.emf.ecp.view.validation.bean/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.view.validation.bean/META-INF/MANIFEST.MF
index b614de2..1061541 100644
--- a/bundles/org.eclipse.emf.ecp.view.validation.bean/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.view.validation.bean/META-INF/MANIFEST.MF
@@ -2,17 +2,18 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: EMF Forms BeanValidation
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.validation.bean;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Activator: org.eclipse.emf.ecp.view.internal.validation.bean.Activator
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emf.ecp.view.internal.validation.bean;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.view.validation.bean;version="1.16.0"
-Require-Bundle: org.eclipse.emf.ecp.view.validation;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecore;bundle-version="[2.5.0,3.0.0)",
-  org.eclipse.core.runtime;bundle-version="[3.0.0,4.0.0)",
-  org.eclipse.emfforms.common.validation;bundle-version="[1.16.0,1.17.0)"
+Export-Package: org.eclipse.emf.ecp.view.internal.validation.bean;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.validation.bean;version="1.17.0"
+Require-Bundle: org.eclipse.emf.ecp.view.validation;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecore;bundle-version="[2.5.0,3.0.0)",
+ org.eclipse.core.runtime;bundle-version="[3.0.0,4.0.0)",
+ org.eclipse.emfforms.common.validation;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Import-Package: javax.validation;version="[1.0.0,2.0.0)",
   javax.validation.bootstrap;version="[1.0.0,2.0.0)",
   org.apache.commons.logging;version="[1.1.0,2.0.0)"
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.view.validation.bean
diff --git a/bundles/org.eclipse.emf.ecp.view.validation.bean/pom.xml b/bundles/org.eclipse.emf.ecp.view.validation.bean/pom.xml
index 8bdcb67..6542cee 100644
--- a/bundles/org.eclipse.emf.ecp.view.validation.bean/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.view.validation.bean/pom.xml
@@ -7,13 +7,13 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
 
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emf.ecp.view.validation.bean</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 
 </project>
diff --git a/bundles/org.eclipse.emf.ecp.view.validation/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.view.validation/META-INF/MANIFEST.MF
index b9b453d..ff03e31 100644
--- a/bundles/org.eclipse.emf.ecp.view.validation/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.view.validation/META-INF/MANIFEST.MF
@@ -2,29 +2,30 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: View Model Validation Service
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.validation;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Activator: org.eclipse.emf.ecp.view.internal.validation.Activator
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emf.ecp.view.internal.validation;version="1.16.0";
-   x-friends:="org.eclipse.emf.ecp.view.table.ui,
-    org.eclipse.emf.ecp.view.custom.ui,
-    org.eclipse.emf.ecp.edit.swt,
-    org.eclipse.emf.ecp.test.model",
-  org.eclipse.emf.ecp.view.spi.validation;version="1.16.0"
+Export-Package: org.eclipse.emf.ecp.view.internal.validation;version="1.17.0";
+  x-friends:="org.eclipse.emf.ecp.view.table.ui,
+   org.eclipse.emf.ecp.view.custom.ui,
+   org.eclipse.emf.ecp.edit.swt,
+   org.eclipse.emf.ecp.test.model",
+ org.eclipse.emf.ecp.view.spi.validation;version="1.17.0"
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.4.0,4.0.0)",
-  org.eclipse.emf.ecp.view.context;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecore;bundle-version="[2.8.0,3.0.0)",
-  org.eclipse.emf.ecp.view.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.common;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.edit;bundle-version="[2.8.0,3.0.0)",
-  org.eclipse.core.databinding.observable;bundle-version="[1.4.0,2.0.0)",
-  org.eclipse.emfforms.common;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.common.validation;bundle-version="[1.16.0,1.17.0)"
+ org.eclipse.emf.ecp.view.context;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecore;bundle-version="[2.8.0,3.0.0)",
+ org.eclipse.emf.ecp.view.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.common;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.edit;bundle-version="[2.8.0,3.0.0)",
+ org.eclipse.core.databinding.observable;bundle-version="[1.4.0,2.0.0)",
+ org.eclipse.emfforms.common;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.common.validation;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
-Import-Package: org.eclipse.emfforms.spi.common.report;version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.spi.core.services.controlmapper;version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.spi.core.services.databinding;version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.spi.core.services.mappingprovider;version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.spi.core.services.view;version="[1.16.0,1.17.0)",
-  org.osgi.service.component.annotations;version="[1.2.0,2.0.0)";resolution:=optional
+Import-Package: org.eclipse.emfforms.spi.common.report;version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.spi.core.services.controlmapper;version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.spi.core.services.databinding;version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.spi.core.services.mappingprovider;version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.spi.core.services.view;version="[1.17.0,1.18.0]",
+ org.osgi.service.component.annotations;version="[1.2.0,2.0.0)";resolution:=optional
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.view.validation
diff --git a/bundles/org.eclipse.emf.ecp.view.validation/pom.xml b/bundles/org.eclipse.emf.ecp.view.validation/pom.xml
index d4f0fed..de3fd1c 100644
--- a/bundles/org.eclipse.emf.ecp.view.validation/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.view.validation/pom.xml
@@ -7,13 +7,13 @@
   <parent>

     <groupId>org.eclipse.emf.ecp</groupId>

     <artifactId>ecp-bundles-parent</artifactId>

-    <version>1.16.0-SNAPSHOT</version>

+    <version>1.17.0-SNAPSHOT</version>

     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>

   </parent>

 

   <groupId>org.eclipse.emf.ecp</groupId>

   <artifactId>org.eclipse.emf.ecp.view.validation</artifactId>

-  <version>1.16.0-SNAPSHOT</version>

+  <version>1.17.0-SNAPSHOT</version>

   <packaging>eclipse-plugin</packaging>

 

 </project>

diff --git a/bundles/org.eclipse.emf.ecp.view.validation/src/org/eclipse/emf/ecp/view/internal/validation/VDiagnosticHelper.java b/bundles/org.eclipse.emf.ecp.view.validation/src/org/eclipse/emf/ecp/view/internal/validation/VDiagnosticHelper.java
index 43347b4..e06917f 100644
--- a/bundles/org.eclipse.emf.ecp.view.validation/src/org/eclipse/emf/ecp/view/internal/validation/VDiagnosticHelper.java
+++ b/bundles/org.eclipse.emf.ecp.view.validation/src/org/eclipse/emf/ecp/view/internal/validation/VDiagnosticHelper.java
@@ -44,19 +44,15 @@
 		if (vDiagnostic1 == null && vDiagnostic2 == null) {
 			return true;
 		}
-		if (vDiagnostic1 == null && vDiagnostic2 != null) {
+		if (vDiagnostic1 == null) {
 			return false;
 		}
-		if (vDiagnostic2 == null && vDiagnostic1 != null) {
+		if (vDiagnostic2 == null) {
 			return false;
 		}
-		if (vDiagnostic1.getHighestSeverity() != vDiagnostic2.getHighestSeverity()) {
-			return false;
-		}
-		if (!vDiagnostic1.getMessage().equals(vDiagnostic2.getMessage())) {
-			return false;
-		}
-		if (vDiagnostic1.getDiagnostics().size() != vDiagnostic2.getDiagnostics().size()) {
+
+		final boolean arePropertiesEqual = arePropertiesEqual(vDiagnostic1, vDiagnostic2);
+		if (!arePropertiesEqual) {
 			return false;
 		}
 
@@ -71,6 +67,19 @@
 		return true;
 	}
 
+	private static boolean arePropertiesEqual(VDiagnostic vDiagnostic1, VDiagnostic vDiagnostic2) {
+		if (vDiagnostic1.getHighestSeverity() != vDiagnostic2.getHighestSeverity()) {
+			return false;
+		}
+		if (!vDiagnostic1.getMessage().equals(vDiagnostic2.getMessage())) {
+			return false;
+		}
+		if (vDiagnostic1.getDiagnostics().size() != vDiagnostic2.getDiagnostics().size()) {
+			return false;
+		}
+		return true;
+	}
+
 	/**
 	 * @param vDiagnostic1
 	 * @param vDiagnostic2
diff --git a/bundles/org.eclipse.emf.ecp.view.validation/src/org/eclipse/emf/ecp/view/internal/validation/ValidationServiceImpl.java b/bundles/org.eclipse.emf.ecp.view.validation/src/org/eclipse/emf/ecp/view/internal/validation/ValidationServiceImpl.java
index 2a21709..54c9c31 100644
--- a/bundles/org.eclipse.emf.ecp.view.validation/src/org/eclipse/emf/ecp/view/internal/validation/ValidationServiceImpl.java
+++ b/bundles/org.eclipse.emf.ecp.view.validation/src/org/eclipse/emf/ecp/view/internal/validation/ValidationServiceImpl.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2011-2016 EclipseSource Muenchen GmbH and others.
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH and others.
  *
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
@@ -8,6 +8,7 @@
  *
  * Contributors:
  * Eugen - initial API and implementation
+ * Christian W. Damus - bug 533522
  ******************************************************************************/
 package org.eclipse.emf.ecp.view.internal.validation;
 
@@ -21,7 +22,6 @@
 import java.util.Map;
 import java.util.Queue;
 import java.util.Set;
-import java.util.Timer;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.ConcurrentLinkedQueue;
 import java.util.concurrent.atomic.AtomicBoolean;
@@ -322,7 +322,6 @@
 	private final AtomicBoolean validationRunning = new AtomicBoolean(false);
 	private final Map<UniqueSetting, VDiagnostic> currentUpdates = new ConcurrentHashMap<UniqueSetting, VDiagnostic>();
 	private ComposedAdapterFactory adapterFactory;
-	private final Timer timer = new Timer();
 
 	/**
 	 * {@inheritDoc}
@@ -512,10 +511,7 @@
 		}
 		EObject toValidate;
 		while ((toValidate = validationQueue.poll()) != null) {
-			final ValidationTimerTask timerTask = new ValidationTimerTask(toValidate);
-			timer.schedule(timerTask, 1000);
 			validateAndCollectSettings(toValidate);
-			timerTask.cancel();
 		}
 		update();
 		notifyListeners();
@@ -650,17 +646,28 @@
 	}
 
 	private void validateAndCollectSettings(EObject eObject) {
-		final Diagnostic diagnostic = validationService.validate(eObject);
-		if (diagnostic == null) { // happens if the eObject is being filtered
-			return;
-		}
-		for (final EStructuralFeature feature : eObject.eClass().getEAllStructuralFeatures()) {
-			final UniqueSetting uniqueSetting = UniqueSetting.createSetting(eObject, feature);
-			if (!currentUpdates.containsKey(uniqueSetting)) {
-				currentUpdates.put(uniqueSetting, VViewFactory.eINSTANCE.createDiagnostic());
+		final long start = System.nanoTime();
+
+		try {
+			final Diagnostic diagnostic = validationService.validate(eObject);
+			if (diagnostic == null) { // happens if the eObject is being filtered
+				return;
+			}
+			for (final EStructuralFeature feature : eObject.eClass().getEAllStructuralFeatures()) {
+				final UniqueSetting uniqueSetting = UniqueSetting.createSetting(eObject, feature);
+				if (!currentUpdates.containsKey(uniqueSetting)) {
+					currentUpdates.put(uniqueSetting, VViewFactory.eINSTANCE.createDiagnostic());
+				}
+			}
+			analyzeDiagnostic(diagnostic);
+		} finally {
+			if (System.nanoTime() - start > 1000L * 1000L * 1000L) {
+				Activator.getDefault().getReportService()
+					.report(new AbstractReport(MessageFormat.format(
+						"Validation took longer than expected for EObject {0}", eObject, //$NON-NLS-1$
+						IStatus.INFO)));
 			}
 		}
-		analyzeDiagnostic(diagnostic);
 	}
 
 	private void analyzeDiagnostic(Diagnostic diagnostic) {
diff --git a/bundles/org.eclipse.emf.ecp.view.validation/src/org/eclipse/emf/ecp/view/internal/validation/ValidationTimerTask.java b/bundles/org.eclipse.emf.ecp.view.validation/src/org/eclipse/emf/ecp/view/internal/validation/ValidationTimerTask.java
deleted file mode 100644
index 12de5f4..0000000
--- a/bundles/org.eclipse.emf.ecp.view.validation/src/org/eclipse/emf/ecp/view/internal/validation/ValidationTimerTask.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2011-2017 EclipseSource Muenchen GmbH 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:
- * Alexandra Buzila - initial API and implementation
- ******************************************************************************/
-package org.eclipse.emf.ecp.view.internal.validation;
-
-import java.text.MessageFormat;
-import java.util.TimerTask;
-
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.emf.ecore.EObject;
-import org.eclipse.emfforms.spi.common.report.AbstractReport;
-
-/**
- * TimerTask that reports that the validation is taking longer than expected. This task should be cancelled when
- * the validation is done.
- */
-public class ValidationTimerTask extends TimerTask {
-
-	private boolean cancelled;
-	private EObject validatedEObject;
-
-	/**
-	 * Constructor.
-	 *
-	 * @param validatedEObject the EObject being validated
-	 */
-	public ValidationTimerTask(EObject validatedEObject) {
-		super();
-		this.validatedEObject = validatedEObject;
-	}
-
-	@Override
-	public void run() {
-		if (!cancelled) {
-			Activator.getDefault().getReportService()
-				.report(new AbstractReport(MessageFormat.format(
-					"Validation took longer than expected for EObject {0}", validatedEObject, //$NON-NLS-1$
-					IStatus.INFO)));
-		}
-		validatedEObject = null;
-	}
-
-	@Override
-	public boolean cancel() {
-		cancelled = true;
-		validatedEObject = null;
-		return super.cancel();
-	}
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.emf.ecp.view.vertical.model.edit/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.view.vertical.model.edit/META-INF/MANIFEST.MF
index 86b8ae7..6c397ad 100644
--- a/bundles/org.eclipse.emf.ecp.view.vertical.model.edit/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.view.vertical.model.edit/META-INF/MANIFEST.MF
@@ -2,18 +2,19 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.vertical.model.edit;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-ClassPath: .
 Bundle-Activator: org.eclipse.emf.ecp.view.spi.vertical.model.provider.VerticalEditPlugin$Implementation
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
-Export-Package: org.eclipse.emf.ecp.view.spi.vertical.model.provider;version="1.16.0"
+Export-Package: org.eclipse.emf.ecp.view.spi.vertical.model.provider;version="1.17.0"
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.7.0,4.0.0)",
-  org.eclipse.emf.ecp.view.vertical.model;bundle-version="[1.16.0,1.17.0)";visibility:=reexport,
-  org.eclipse.emf.edit;bundle-version="[2.8.0,3.0.0)";visibility:=reexport,
-  org.eclipse.emf.ecore;bundle-version="[2.8.0,3.0.0)";visibility:=reexport,
-  org.eclipse.emf.ecore.edit;bundle-version="[2.7.0,3.0.0)";visibility:=reexport,
-  org.eclipse.emf.ecp.view.model;bundle-version="[1.16.0,1.17.0)";visibility:=reexport,
-  org.eclipse.emf.ecp.view.model.edit;bundle-version="[1.16.0,1.17.0)";visibility:=reexport
+ org.eclipse.emf.ecp.view.vertical.model;bundle-version="[1.17.0,1.18.0]";visibility:=reexport,
+ org.eclipse.emf.edit;bundle-version="[2.8.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.ecore;bundle-version="[2.8.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.ecore.edit;bundle-version="[2.7.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.ecp.view.model;bundle-version="[1.17.0,1.18.0]";visibility:=reexport,
+ org.eclipse.emf.ecp.view.model.edit;bundle-version="[1.17.0,1.18.0]";visibility:=reexport
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.view.vertical.model.edit
diff --git a/bundles/org.eclipse.emf.ecp.view.vertical.model.edit/plugin.xml b/bundles/org.eclipse.emf.ecp.view.vertical.model.edit/plugin.xml
index f2c3258..3e9169c 100644
--- a/bundles/org.eclipse.emf.ecp.view.vertical.model.edit/plugin.xml
+++ b/bundles/org.eclipse.emf.ecp.view.vertical.model.edit/plugin.xml
@@ -31,7 +31,7 @@
    <extension point="org.eclipse.emf.edit.childCreationExtenders">
       <!-- @generated vertical -->
       <extender
-            uri="http://org/eclipse/emf/ecp/view/model/170"
+            uri="http://org/eclipse/emf/ecp/view/model/1170"
             class="org.eclipse.emf.ecp.view.spi.vertical.model.provider.VerticalItemProviderAdapterFactory$ViewChildCreationExtender"/>
    </extension>
 
diff --git a/bundles/org.eclipse.emf.ecp.view.vertical.model.edit/pom.xml b/bundles/org.eclipse.emf.ecp.view.vertical.model.edit/pom.xml
index 132a987..117b904 100644
--- a/bundles/org.eclipse.emf.ecp.view.vertical.model.edit/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.view.vertical.model.edit/pom.xml
@@ -7,13 +7,13 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
 
   <artifactId>org.eclipse.emf.ecp.view.vertical.model.edit</artifactId>
   <packaging>eclipse-plugin</packaging>
 
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <groupId>org.eclipse.emf.ecp</groupId>
 </project>
diff --git a/bundles/org.eclipse.emf.ecp.view.vertical.model/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.view.vertical.model/META-INF/MANIFEST.MF
index 71b3c71..8a46c12 100644
--- a/bundles/org.eclipse.emf.ecp.view.vertical.model/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.view.vertical.model/META-INF/MANIFEST.MF
@@ -2,15 +2,16 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.vertical.model;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-ClassPath: .
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
-Export-Package: org.eclipse.emf.ecp.view.spi.vertical.model;version="1.16.0",
-  org.eclipse.emf.ecp.view.spi.vertical.model.impl;version="1.16.0",
-  org.eclipse.emf.ecp.view.spi.vertical.model.util;version="1.16.0"
+Export-Package: org.eclipse.emf.ecp.view.spi.vertical.model;version="1.17.0",
+ org.eclipse.emf.ecp.view.spi.vertical.model.impl;version="1.17.0",
+ org.eclipse.emf.ecp.view.spi.vertical.model.util;version="1.17.0"
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.7.0,4.0.0)",
-  org.eclipse.emf.ecore;bundle-version="[2.7.0,3.0.0)";visibility:=reexport,
-  org.eclipse.emf.ecp.view.model;bundle-version="[1.16.0,1.17.0)";visibility:=reexport
+ org.eclipse.emf.ecore;bundle-version="[2.7.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.ecp.view.model;bundle-version="[1.17.0,1.18.0]";visibility:=reexport
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.view.vertical.model
diff --git a/bundles/org.eclipse.emf.ecp.view.vertical.model/pom.xml b/bundles/org.eclipse.emf.ecp.view.vertical.model/pom.xml
index f9e92fc..6da71dc 100644
--- a/bundles/org.eclipse.emf.ecp.view.vertical.model/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.view.vertical.model/pom.xml
@@ -7,13 +7,13 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
 
   <artifactId>org.eclipse.emf.ecp.view.vertical.model</artifactId>
   <packaging>eclipse-plugin</packaging>
 
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <groupId>org.eclipse.emf.ecp</groupId>
 </project>
diff --git a/bundles/org.eclipse.emf.ecp.view.vertical.ui.swt/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.view.vertical.ui.swt/META-INF/MANIFEST.MF
index 962fb30..220b3c8 100644
--- a/bundles/org.eclipse.emf.ecp.view.vertical.ui.swt/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.view.vertical.ui.swt/META-INF/MANIFEST.MF
@@ -2,23 +2,24 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: View Model Vertical UI SWT
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.vertical.ui.swt
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emf.ecp.view.internal.vertical.swt;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.view.spi.vertical.swt;version="1.16.0"
+Export-Package: org.eclipse.emf.ecp.view.internal.vertical.swt;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.spi.vertical.swt;version="1.17.0"
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.7.0,4.0.0)",
-  org.eclipse.emf.ecp.view.vertical.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.ui.view.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.edit;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.core.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.swt.core;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.swt.core.di;bundle-version="[1.16.0,1.17.0)"
+ org.eclipse.emf.ecp.view.vertical.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.ui.view.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.edit;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.core.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.swt.core;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.swt.core.di;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Import-Package: javax.inject;version="1.0.0",
-  org.eclipse.emfforms.spi.common.report;version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.spi.core.services.databinding;version="[1.16.0,1.17.0)",
-  org.eclipse.jface.layout;version="0.0.0",
-  org.eclipse.swt;version="0.0.0",
-  org.eclipse.swt.widgets;version="0.0.0"
+ org.eclipse.emfforms.spi.common.report;version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.spi.core.services.databinding;version="[1.17.0,1.18.0]",
+ org.eclipse.jface.layout;version="0.0.0",
+ org.eclipse.swt;version="0.0.0",
+ org.eclipse.swt.widgets;version="0.0.0"
 Service-Component: OSGI-INF/verticalLayoutRendererService.xml
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.view.vertical.ui.swt
diff --git a/bundles/org.eclipse.emf.ecp.view.vertical.ui.swt/pom.xml b/bundles/org.eclipse.emf.ecp.view.vertical.ui.swt/pom.xml
index 1e81127..debb6d9 100644
--- a/bundles/org.eclipse.emf.ecp.view.vertical.ui.swt/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.view.vertical.ui.swt/pom.xml
@@ -7,7 +7,7 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
 
diff --git a/bundles/org.eclipse.emf.ecp.view.viewproxy.model.edit/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.view.viewproxy.model.edit/META-INF/MANIFEST.MF
index 55b360c..c06326b 100644
--- a/bundles/org.eclipse.emf.ecp.view.viewproxy.model.edit/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.view.viewproxy.model.edit/META-INF/MANIFEST.MF
@@ -2,19 +2,20 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.viewproxy.model.edit;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-ClassPath: .
 Bundle-Activator: org.eclipse.emf.ecp.view.internal.viewproxy.model.provider.ViewproxyEditPlugin$Implementation
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
-Export-Package: org.eclipse.emf.ecp.view.internal.viewproxy.model.provider;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.view.spi.viewproxy.model.provider;version="1.16.0"
+Export-Package: org.eclipse.emf.ecp.view.internal.viewproxy.model.provider;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.spi.viewproxy.model.provider;version="1.17.0"
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.7.0,4.0.0)",
-  org.eclipse.emf.ecp.view.viewproxy.model;bundle-version="[1.16.0,1.17.0)";visibility:=reexport,
-  org.eclipse.emf.edit;bundle-version="[2.7.0,3.0.0)";visibility:=reexport,
-  org.eclipse.emf.ecore;bundle-version="[2.7.0,3.0.0)";visibility:=reexport,
-  org.eclipse.emf.ecore.edit;bundle-version="[2.7.0,3.0.0)";visibility:=reexport,
-  org.eclipse.emf.ecp.view.model;bundle-version="[1.16.0,1.17.0)";visibility:=reexport,
-  org.eclipse.emf.ecp.view.model.edit;bundle-version="[1.16.0,1.17.0)";visibility:=reexport
+ org.eclipse.emf.ecp.view.viewproxy.model;bundle-version="[1.17.0,1.18.0]";visibility:=reexport,
+ org.eclipse.emf.edit;bundle-version="[2.7.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.ecore;bundle-version="[2.7.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.ecore.edit;bundle-version="[2.7.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.ecp.view.model;bundle-version="[1.17.0,1.18.0]";visibility:=reexport,
+ org.eclipse.emf.ecp.view.model.edit;bundle-version="[1.17.0,1.18.0]";visibility:=reexport
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.view.viewproxy.model.edit
diff --git a/bundles/org.eclipse.emf.ecp.view.viewproxy.model.edit/plugin.xml b/bundles/org.eclipse.emf.ecp.view.viewproxy.model.edit/plugin.xml
index 73e94f0..3e5ffee 100644
--- a/bundles/org.eclipse.emf.ecp.view.viewproxy.model.edit/plugin.xml
+++ b/bundles/org.eclipse.emf.ecp.view.viewproxy.model.edit/plugin.xml
@@ -31,7 +31,7 @@
    <extension point="org.eclipse.emf.edit.childCreationExtenders">
       <!-- @generated viewproxy -->
       <extender
-            uri="http://org/eclipse/emf/ecp/view/model/170"
+            uri="http://org/eclipse/emf/ecp/view/model/1170"
             class="org.eclipse.emf.ecp.view.spi.viewproxy.model.provider.ViewproxyItemProviderAdapterFactory$ViewChildCreationExtender"/>
    </extension>
 
diff --git a/bundles/org.eclipse.emf.ecp.view.viewproxy.model.edit/pom.xml b/bundles/org.eclipse.emf.ecp.view.viewproxy.model.edit/pom.xml
index f01bb01..baf3f9e 100644
--- a/bundles/org.eclipse.emf.ecp.view.viewproxy.model.edit/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.view.viewproxy.model.edit/pom.xml
@@ -7,7 +7,7 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
 
diff --git a/bundles/org.eclipse.emf.ecp.view.viewproxy.model/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.view.viewproxy.model/META-INF/MANIFEST.MF
index fa74f98..c77e45a 100644
--- a/bundles/org.eclipse.emf.ecp.view.viewproxy.model/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.view.viewproxy.model/META-INF/MANIFEST.MF
@@ -2,20 +2,21 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.viewproxy.model;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-ClassPath: .
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
-Export-Package: org.eclipse.emf.ecp.view.internal.viewproxy.resolver;version="1.16.0",
-  org.eclipse.emf.ecp.view.spi.viewproxy.model;version="1.16.0",
-  org.eclipse.emf.ecp.view.spi.viewproxy.model.impl;version="1.16.0",
-  org.eclipse.emf.ecp.view.spi.viewproxy.model.util;version="1.16.0",
-  org.eclipse.emf.ecp.view.spi.viewproxy.resolver;version="1.16.0"
+Export-Package: org.eclipse.emf.ecp.view.internal.viewproxy.resolver;version="1.17.0",
+ org.eclipse.emf.ecp.view.spi.viewproxy.model;version="1.17.0",
+ org.eclipse.emf.ecp.view.spi.viewproxy.model.impl;version="1.17.0",
+ org.eclipse.emf.ecp.view.spi.viewproxy.model.util;version="1.17.0",
+ org.eclipse.emf.ecp.view.spi.viewproxy.resolver;version="1.17.0"
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.7.0,4.0.0)",
-  org.eclipse.emf.ecore;bundle-version="[2.7.0,3.0.0)";visibility:=reexport,
-  org.eclipse.emf.ecp.view.model;bundle-version="[1.16.0,1.17.0)";visibility:=reexport,
-  org.eclipse.emf.ecp.ui.view;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.model.provider.xmi;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.vertical.model;bundle-version="[1.16.0,1.17.0)"
+ org.eclipse.emf.ecore;bundle-version="[2.7.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.ecp.view.model;bundle-version="[1.17.0,1.18.0]";visibility:=reexport,
+ org.eclipse.emf.ecp.ui.view;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.model.provider.xmi;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.vertical.model;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.view.viewproxy.model
diff --git a/bundles/org.eclipse.emf.ecp.view.viewproxy.model/pom.xml b/bundles/org.eclipse.emf.ecp.view.viewproxy.model/pom.xml
index 338ad1f..aedd889 100644
--- a/bundles/org.eclipse.emf.ecp.view.viewproxy.model/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.view.viewproxy.model/pom.xml
@@ -7,7 +7,7 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
 
diff --git a/bundles/org.eclipse.emf.ecp.view.workspace.migrator/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.view.workspace.migrator/META-INF/MANIFEST.MF
index 7ca8b8e..8ee295c 100644
--- a/bundles/org.eclipse.emf.ecp.view.workspace.migrator/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.view.workspace.migrator/META-INF/MANIFEST.MF
@@ -2,12 +2,13 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: ViewModel Workspace Migrator
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.workspace.migrator;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emf.ecp.view.workspace.migrator;version="1.16.0"
-Require-Bundle: org.eclipse.emf.ecp.view.migrator;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.equinox.common;bundle-version="[3.6.0,4.0.0)",
-  org.eclipse.core.resources;bundle-version="[3.7.0,4.0.0)"
+Export-Package: org.eclipse.emf.ecp.view.workspace.migrator;version="1.17.0"
+Require-Bundle: org.eclipse.emf.ecp.view.migrator;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.equinox.common;bundle-version="[3.6.0,4.0.0)",
+ org.eclipse.core.resources;bundle-version="[3.7.0,4.0.0)"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Service-Component: OSGI-INF/workspaceMigrator.xml
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.view.workspace.migrator
diff --git a/bundles/org.eclipse.emf.ecp.view.workspace.migrator/pom.xml b/bundles/org.eclipse.emf.ecp.view.workspace.migrator/pom.xml
index 0279002..fe6b6c6 100644
--- a/bundles/org.eclipse.emf.ecp.view.workspace.migrator/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.view.workspace.migrator/pom.xml
@@ -5,12 +5,12 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emf.ecp.view.workspace.migrator</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
   
   <properties>
diff --git a/bundles/org.eclipse.emf.ecp.workspace.core/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.workspace.core/META-INF/MANIFEST.MF
index ba4c8e5..c63403a 100644
--- a/bundles/org.eclipse.emf.ecp.workspace.core/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.workspace.core/META-INF/MANIFEST.MF
@@ -2,13 +2,14 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: ECP Workspace Integration Core
 Bundle-SymbolicName: org.eclipse.emf.ecp.workspace.core;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Activator: org.eclipse.emf.ecp.workspace.internal.core.Activator
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emf.ecp.workspace.internal.core;version="1.16.0";x-friends:="org.eclipse.emf.ecp.workspace.ui,org.eclipse.emf.ecp.ui.view.editor.controls"
+Export-Package: org.eclipse.emf.ecp.workspace.internal.core;version="1.17.0";x-friends:="org.eclipse.emf.ecp.workspace.ui,org.eclipse.emf.ecp.ui.view.editor.controls"
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.4.0,4.0.0)",
-  org.eclipse.core.resources;bundle-version="[3.4.0,4.0.0)",
-  org.eclipse.emf.ecp.core;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.net4j.util;bundle-version="[3.0.0,4.0.0)"
+ org.eclipse.core.resources;bundle-version="[3.4.0,4.0.0)",
+ org.eclipse.emf.ecp.core;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.net4j.util;bundle-version="[3.0.0,4.0.0)"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.workspace.core
diff --git a/bundles/org.eclipse.emf.ecp.workspace.core/pom.xml b/bundles/org.eclipse.emf.ecp.workspace.core/pom.xml
index 644596e..96bd478 100644
--- a/bundles/org.eclipse.emf.ecp.workspace.core/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.workspace.core/pom.xml
@@ -5,11 +5,11 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emf.ecp.workspace.core</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 </project>
diff --git a/bundles/org.eclipse.emf.ecp.workspace.ui.rap/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.workspace.ui.rap/META-INF/MANIFEST.MF
index 30d2805..2c0e261 100644
--- a/bundles/org.eclipse.emf.ecp.workspace.ui.rap/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.workspace.ui.rap/META-INF/MANIFEST.MF
@@ -2,19 +2,19 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: ECP Workspace Integration UI RAP
 Bundle-SymbolicName: org.eclipse.emf.ecp.workspace.ui.rap;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Activator: org.eclipse.emf.ecp.workspace.internal.ui.Activator
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emf.ecp.workspace.internal.ui;version="1.16.0";x-internal:=true
+Export-Package: org.eclipse.emf.ecp.workspace.internal.ui;version="1.17.0";x-internal:=true
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.4.0,4.0.0)",
-  org.eclipse.core.resources;bundle-version="[3.4.0,4.0.0)",
-  org.eclipse.emf.ecp.workspace.core;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.ui;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.net4j.util;bundle-version="[3.0.0,4.0.0)",
-  org.eclipse.core.expressions;bundle-version="[3.4.0,4.0.0)",
-  org.eclipse.emf.ecp.common.ui;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.rap.filedialog;bundle-version="[3.1.2,4.0.0)",
-  org.eclipse.rap.rwt;bundle-version="[3.1.2,4.0.0)"
+ org.eclipse.core.resources;bundle-version="[3.4.0,4.0.0)",
+ org.eclipse.emf.ecp.workspace.core;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.ui;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.net4j.util;bundle-version="[3.0.0,4.0.0)",
+ org.eclipse.core.expressions;bundle-version="[3.4.0,4.0.0)",
+ org.eclipse.emf.ecp.common.ui;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.rap.filedialog;bundle-version="[3.1.2,4.0.0)",
+ org.eclipse.rap.rwt;bundle-version="[3.1.2,4.0.0)"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Import-Package: org.eclipse.core.commands;version="0.0.0",
   org.eclipse.jface.action;version="0.0.0",
@@ -27,3 +27,4 @@
   org.eclipse.ui.handlers;version="0.0.0",
   org.eclipse.ui.plugin;version="0.0.0"
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.workspace.ui.rap
diff --git a/bundles/org.eclipse.emf.ecp.workspace.ui.rap/pom.xml b/bundles/org.eclipse.emf.ecp.workspace.ui.rap/pom.xml
index dc9af52..895658b 100644
--- a/bundles/org.eclipse.emf.ecp.workspace.ui.rap/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.workspace.ui.rap/pom.xml
@@ -5,11 +5,11 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emf.ecp.workspace.ui.rap</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 </project>
\ No newline at end of file
diff --git a/bundles/org.eclipse.emf.ecp.workspace.ui/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.workspace.ui/META-INF/MANIFEST.MF
index 1fdcea1..125c54b 100644
--- a/bundles/org.eclipse.emf.ecp.workspace.ui/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.workspace.ui/META-INF/MANIFEST.MF
@@ -2,17 +2,17 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: ECP Workspace Integration UI
 Bundle-SymbolicName: org.eclipse.emf.ecp.workspace.ui;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Activator: org.eclipse.emf.ecp.workspace.internal.ui.Activator
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emf.ecp.workspace.internal.ui;version="1.16.0";x-internal:=true
+Export-Package: org.eclipse.emf.ecp.workspace.internal.ui;version="1.17.0";x-internal:=true
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.4.0,4.0.0)",
-  org.eclipse.core.resources;bundle-version="[3.4.0,4.0.0)",
-  org.eclipse.emf.ecp.workspace.core;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.ui;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.net4j.util;bundle-version="[3.0.0,4.0.0)",
-  org.eclipse.core.expressions;bundle-version="[3.4.0,4.0.0)",
-  org.eclipse.emf.ecp.common.ui;bundle-version="[1.16.0,1.17.0)"
+ org.eclipse.core.resources;bundle-version="[3.4.0,4.0.0)",
+ org.eclipse.emf.ecp.workspace.core;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.ui;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.net4j.util;bundle-version="[3.0.0,4.0.0)",
+ org.eclipse.core.expressions;bundle-version="[3.4.0,4.0.0)",
+ org.eclipse.emf.ecp.common.ui;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Import-Package: org.eclipse.core.commands;version="0.0.0",
   org.eclipse.jface.action;version="0.0.0",
@@ -37,3 +37,4 @@
   org.eclipse.ui.plugin;version="0.0.0",
   org.eclipse.ui.wizards.newresource;version="0.0.0"
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.workspace.ui
diff --git a/bundles/org.eclipse.emf.ecp.workspace.ui/pom.xml b/bundles/org.eclipse.emf.ecp.workspace.ui/pom.xml
index 18b5579..050dcac 100644
--- a/bundles/org.eclipse.emf.ecp.workspace.ui/pom.xml
+++ b/bundles/org.eclipse.emf.ecp.workspace.ui/pom.xml
@@ -5,11 +5,11 @@
   <parent>

     <groupId>org.eclipse.emf.ecp</groupId>

     <artifactId>ecp-bundles-parent</artifactId>

-    <version>1.16.0-SNAPSHOT</version>

+    <version>1.17.0-SNAPSHOT</version>

     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>

   </parent>

   <groupId>org.eclipse.emf.ecp</groupId>

   <artifactId>org.eclipse.emf.ecp.workspace.ui</artifactId>

-  <version>1.16.0-SNAPSHOT</version>

+  <version>1.17.0-SNAPSHOT</version>

   <packaging>eclipse-plugin</packaging>

 </project>
\ No newline at end of file
diff --git a/bundles/org.eclipse.emf.rap.edit.ui.minimal/.project b/bundles/org.eclipse.emf.rap.edit.ui.minimal/.project
index a54e7b5..7803f77 100644
--- a/bundles/org.eclipse.emf.rap.edit.ui.minimal/.project
+++ b/bundles/org.eclipse.emf.rap.edit.ui.minimal/.project
@@ -25,10 +25,16 @@
 			<arguments>
 			</arguments>
 		</buildCommand>
+		<buildCommand>
+			<name>net.sf.eclipsecs.core.CheckstyleBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
 	</buildSpec>
 	<natures>
 		<nature>org.eclipse.pde.PluginNature</nature>
 		<nature>org.eclipse.jdt.core.javanature</nature>
 		<nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
+		<nature>net.sf.eclipsecs.core.CheckstyleNature</nature>
 	</natures>
 </projectDescription>
diff --git a/bundles/org.eclipse.emf.rap.edit.ui.minimal/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.rap.edit.ui.minimal/META-INF/MANIFEST.MF
index 8640238..8bb9f31 100644
--- a/bundles/org.eclipse.emf.rap.edit.ui.minimal/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.rap.edit.ui.minimal/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Minimal RAP EMF Edit UI
 Bundle-SymbolicName: org.eclipse.emf.rap.edit.ui.minimal
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Activator: org.eclipse.emf.edit.ui.provider.Activator
 Bundle-Vendor: Eclipse Modeling Project
 Export-Package: org.eclipse.emf.edit.ui.dnd;version="2.10.0",
@@ -19,3 +19,4 @@
  org.eclipse.swt.graphics;version="0.0.0",
  org.eclipse.swt.widgets;version="0.0.0"
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.rap.edit.ui.minimal
diff --git a/bundles/org.eclipse.emf.rap.edit.ui.minimal/pom.xml b/bundles/org.eclipse.emf.rap.edit.ui.minimal/pom.xml
index b571f03..d6f5cc5 100644
--- a/bundles/org.eclipse.emf.rap.edit.ui.minimal/pom.xml
+++ b/bundles/org.eclipse.emf.rap.edit.ui.minimal/pom.xml
@@ -5,11 +5,11 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emf.rap.edit.ui.minimal</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 </project>
diff --git a/bundles/org.eclipse.emf.rap.edit.ui.minimal/src/org/eclipse/emf/edit/ui/dnd/EditingDomainViewerDropAdapter.java b/bundles/org.eclipse.emf.rap.edit.ui.minimal/src/org/eclipse/emf/edit/ui/dnd/EditingDomainViewerDropAdapter.java
index 77b0300..f15581f 100644
--- a/bundles/org.eclipse.emf.rap.edit.ui.minimal/src/org/eclipse/emf/edit/ui/dnd/EditingDomainViewerDropAdapter.java
+++ b/bundles/org.eclipse.emf.rap.edit.ui.minimal/src/org/eclipse/emf/edit/ui/dnd/EditingDomainViewerDropAdapter.java
@@ -1,5 +1,6 @@
 /**
  * Copyright (c) 2002-2010 IBM Corporation 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
@@ -8,6 +9,7 @@
  * Contributors:
  * IBM - Initial API and implementation
  */
+// REUSED CLASS
 package org.eclipse.emf.edit.ui.dnd;
 
 import java.util.ArrayList;
diff --git a/bundles/org.eclipse.emf.rap.edit.ui.minimal/src/org/eclipse/emf/edit/ui/dnd/LocalTransfer.java b/bundles/org.eclipse.emf.rap.edit.ui.minimal/src/org/eclipse/emf/edit/ui/dnd/LocalTransfer.java
index df18874..29b0eb0 100644
--- a/bundles/org.eclipse.emf.rap.edit.ui.minimal/src/org/eclipse/emf/edit/ui/dnd/LocalTransfer.java
+++ b/bundles/org.eclipse.emf.rap.edit.ui.minimal/src/org/eclipse/emf/edit/ui/dnd/LocalTransfer.java
@@ -1,5 +1,6 @@
 /**
  * Copyright (c) 2002-2006 IBM Corporation 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
@@ -8,6 +9,7 @@
  * Contributors:
  * IBM - Initial API and implementation
  */
+// REUSED CLASS
 package org.eclipse.emf.edit.ui.dnd;
 
 import org.eclipse.swt.dnd.ByteArrayTransfer;
diff --git a/bundles/org.eclipse.emf.rap.edit.ui.minimal/src/org/eclipse/emf/edit/ui/dnd/ViewerDragAdapter.java b/bundles/org.eclipse.emf.rap.edit.ui.minimal/src/org/eclipse/emf/edit/ui/dnd/ViewerDragAdapter.java
index 5541626..26c7bf1 100644
--- a/bundles/org.eclipse.emf.rap.edit.ui.minimal/src/org/eclipse/emf/edit/ui/dnd/ViewerDragAdapter.java
+++ b/bundles/org.eclipse.emf.rap.edit.ui.minimal/src/org/eclipse/emf/edit/ui/dnd/ViewerDragAdapter.java
@@ -1,5 +1,6 @@
 /**
  * Copyright (c) 2002-2006 IBM Corporation 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
@@ -8,6 +9,7 @@
  * Contributors:
  * IBM - Initial API and implementation
  */
+// REUSED CLASS
 package org.eclipse.emf.edit.ui.dnd;
 
 import org.eclipse.jface.viewers.ISelection;
diff --git a/bundles/org.eclipse.emf.rap.edit.ui.minimal/src/org/eclipse/emf/edit/ui/provider/AdapterFactoryContentProvider.java b/bundles/org.eclipse.emf.rap.edit.ui.minimal/src/org/eclipse/emf/edit/ui/provider/AdapterFactoryContentProvider.java
index 17e1bcc..ce4ceea 100644
--- a/bundles/org.eclipse.emf.rap.edit.ui.minimal/src/org/eclipse/emf/edit/ui/provider/AdapterFactoryContentProvider.java
+++ b/bundles/org.eclipse.emf.rap.edit.ui.minimal/src/org/eclipse/emf/edit/ui/provider/AdapterFactoryContentProvider.java
@@ -1,6 +1,6 @@
-// REUSED CLASS
 /**
  * Copyright (c) 2002-2006 IBM Corporation 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
@@ -9,6 +9,7 @@
  * Contributors:
  * IBM - Initial API and implementation
  */
+// REUSED CLASS
 package org.eclipse.emf.edit.ui.provider;
 
 import java.util.ArrayList;
diff --git a/bundles/org.eclipse.emf.rap.edit.ui.minimal/src/org/eclipse/emf/edit/ui/provider/AdapterFactoryLabelProvider.java b/bundles/org.eclipse.emf.rap.edit.ui.minimal/src/org/eclipse/emf/edit/ui/provider/AdapterFactoryLabelProvider.java
index 98d34b3..150bc35 100644
--- a/bundles/org.eclipse.emf.rap.edit.ui.minimal/src/org/eclipse/emf/edit/ui/provider/AdapterFactoryLabelProvider.java
+++ b/bundles/org.eclipse.emf.rap.edit.ui.minimal/src/org/eclipse/emf/edit/ui/provider/AdapterFactoryLabelProvider.java
@@ -1,6 +1,6 @@
-// REUSED CLASS
 /**
  * Copyright (c) 2002-2012 IBM Corporation 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
@@ -9,6 +9,7 @@
  * Contributors:
  * IBM - Initial API and implementation
  */
+// REUSED CLASS
 package org.eclipse.emf.edit.ui.provider;
 
 import java.util.ArrayList;
diff --git a/bundles/org.eclipse.emf.rap.edit.ui.minimal/src/org/eclipse/emf/edit/ui/provider/ExtendedColorRegistry.java b/bundles/org.eclipse.emf.rap.edit.ui.minimal/src/org/eclipse/emf/edit/ui/provider/ExtendedColorRegistry.java
index e889746..9a4af1c 100644
--- a/bundles/org.eclipse.emf.rap.edit.ui.minimal/src/org/eclipse/emf/edit/ui/provider/ExtendedColorRegistry.java
+++ b/bundles/org.eclipse.emf.rap.edit.ui.minimal/src/org/eclipse/emf/edit/ui/provider/ExtendedColorRegistry.java
@@ -1,6 +1,6 @@
-// REUSED CLASS
 /**
  * Copyright (c) 2008-2010 IBM Corporation 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
@@ -9,6 +9,7 @@
  * Contributors:
  * IBM - Initial API and implementation
  */
+// REUSED CLASS
 package org.eclipse.emf.edit.ui.provider;
 
 import java.util.ArrayList;
diff --git a/bundles/org.eclipse.emf.rap.edit.ui.minimal/src/org/eclipse/emf/edit/ui/provider/ExtendedFontRegistry.java b/bundles/org.eclipse.emf.rap.edit.ui.minimal/src/org/eclipse/emf/edit/ui/provider/ExtendedFontRegistry.java
index 4e2cd42..c923a32 100644
--- a/bundles/org.eclipse.emf.rap.edit.ui.minimal/src/org/eclipse/emf/edit/ui/provider/ExtendedFontRegistry.java
+++ b/bundles/org.eclipse.emf.rap.edit.ui.minimal/src/org/eclipse/emf/edit/ui/provider/ExtendedFontRegistry.java
@@ -1,6 +1,6 @@
-// REUSED CLASS
 /**
  * Copyright (c) 2008-2010 IBM Corporation 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
@@ -9,6 +9,7 @@
  * Contributors:
  * IBM - Initial API and implementation
  */
+// REUSED CLASS
 package org.eclipse.emf.edit.ui.provider;
 
 import java.util.ArrayList;
diff --git a/bundles/org.eclipse.emf.rap.edit.ui.minimal/src/org/eclipse/emf/edit/ui/provider/ExtendedImageRegistry.java b/bundles/org.eclipse.emf.rap.edit.ui.minimal/src/org/eclipse/emf/edit/ui/provider/ExtendedImageRegistry.java
index b80ddeb..b7d5124 100644
--- a/bundles/org.eclipse.emf.rap.edit.ui.minimal/src/org/eclipse/emf/edit/ui/provider/ExtendedImageRegistry.java
+++ b/bundles/org.eclipse.emf.rap.edit.ui.minimal/src/org/eclipse/emf/edit/ui/provider/ExtendedImageRegistry.java
@@ -1,6 +1,6 @@
-// REUSED CLASS
 /**
  * Copyright (c) 2002-2010 IBM Corporation 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
@@ -9,6 +9,7 @@
  * Contributors:
  * IBM - Initial API and implementation
  */
+// REUSED CLASS
 package org.eclipse.emf.edit.ui.provider;
 
 import java.io.BufferedInputStream;
diff --git a/bundles/org.eclipse.emf.rap.edit.ui.minimal/src/org/eclipse/emf/edit/ui/provider/NotifyChangedToViewerRefresh.java b/bundles/org.eclipse.emf.rap.edit.ui.minimal/src/org/eclipse/emf/edit/ui/provider/NotifyChangedToViewerRefresh.java
index a2063a5..dfbb4c0 100644
--- a/bundles/org.eclipse.emf.rap.edit.ui.minimal/src/org/eclipse/emf/edit/ui/provider/NotifyChangedToViewerRefresh.java
+++ b/bundles/org.eclipse.emf.rap.edit.ui.minimal/src/org/eclipse/emf/edit/ui/provider/NotifyChangedToViewerRefresh.java
@@ -1,6 +1,6 @@
-// REUSED CLASS
 /**
  * Copyright (c) 2002-2010 IBM Corporation 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
@@ -9,6 +9,7 @@
  * Contributors:
  * IBM - Initial API and implementation
  */
+// REUSED CLASS
 package org.eclipse.emf.edit.ui.provider;
 
 import java.util.Collection;
diff --git a/bundles/org.eclipse.emfforms.common.prevalidation/META-INF/MANIFEST.MF b/bundles/org.eclipse.emfforms.common.prevalidation/META-INF/MANIFEST.MF
index 4f8b9d1..d7d63c7 100644
--- a/bundles/org.eclipse.emfforms.common.prevalidation/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emfforms.common.prevalidation/META-INF/MANIFEST.MF
@@ -2,13 +2,14 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Pre-Set Validation
 Bundle-SymbolicName: org.eclipse.emfforms.common.prevalidation
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emfforms.internal.common.prevalidation;version="1.16.0"
+Export-Package: org.eclipse.emfforms.internal.common.prevalidation;version="1.17.0"
 Require-Bundle: org.eclipse.emf.ecore;bundle-version="[2.7.0,3.0.0)",
-  org.eclipse.emfforms.common;bundle-version="[1.16.0,1.17.0)"
+ org.eclipse.emfforms.common;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Import-Package: org.osgi.framework;version="1.8.0",
   org.osgi.service.component.annotations;version="1.2.0";resolution:=optional
 Service-Component: OSGI-INF/PreSetValidationServiceImpl.xml
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emfforms.common.prevalidation
diff --git a/bundles/org.eclipse.emfforms.common.prevalidation/pom.xml b/bundles/org.eclipse.emfforms.common.prevalidation/pom.xml
index 5bca5ae..32056c5 100644
--- a/bundles/org.eclipse.emfforms.common.prevalidation/pom.xml
+++ b/bundles/org.eclipse.emfforms.common.prevalidation/pom.xml
@@ -7,13 +7,13 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
 
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emfforms.common.prevalidation</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 
 </project>
diff --git a/bundles/org.eclipse.emfforms.common.validation/META-INF/MANIFEST.MF b/bundles/org.eclipse.emfforms.common.validation/META-INF/MANIFEST.MF
index be8aee5..52d3577 100644
--- a/bundles/org.eclipse.emfforms.common.validation/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emfforms.common.validation/META-INF/MANIFEST.MF
@@ -2,15 +2,16 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Common Validation
 Bundle-SymbolicName: org.eclipse.emfforms.common.validation;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emfforms.common.internal.validation;version="1.16.0";x-friends:="org.eclipse.emf.ecp.view.validation,org.eclipse.emf.ecp.ide.migration",
-  org.eclipse.emfforms.common.spi.validation;version="1.16.0",
-  org.eclipse.emfforms.common.spi.validation.exception;version="1.16.0",
-  org.eclipse.emfforms.common.spi.validation.filter;version="1.16.0"
+Export-Package: org.eclipse.emfforms.common.internal.validation;version="1.17.0";x-friends:="org.eclipse.emf.ecp.view.validation,org.eclipse.emf.ecp.ide.migration",
+ org.eclipse.emfforms.common.spi.validation;version="1.17.0",
+ org.eclipse.emfforms.common.spi.validation.exception;version="1.17.0",
+ org.eclipse.emfforms.common.spi.validation.filter;version="1.17.0"
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.4.0,4.0.0)",
-  org.eclipse.emf.ecore;bundle-version="[2.8.0,3.0.0)",
-  org.eclipse.emf.edit;bundle-version="[2.8.0,3.0.0)",
-  org.eclipse.emfforms.common;bundle-version="[1.16.0,1.17.0)"
+ org.eclipse.emf.ecore;bundle-version="[2.8.0,3.0.0)",
+ org.eclipse.emf.edit;bundle-version="[2.8.0,3.0.0)",
+ org.eclipse.emfforms.common;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emfforms.common.validation
diff --git a/bundles/org.eclipse.emfforms.common.validation/pom.xml b/bundles/org.eclipse.emfforms.common.validation/pom.xml
index 06311fe..f614354 100644
--- a/bundles/org.eclipse.emfforms.common.validation/pom.xml
+++ b/bundles/org.eclipse.emfforms.common.validation/pom.xml
@@ -7,13 +7,13 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
 
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emfforms.common.validation</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 
   <properties>
diff --git a/bundles/org.eclipse.emfforms.common/META-INF/MANIFEST.MF b/bundles/org.eclipse.emfforms.common/META-INF/MANIFEST.MF
index 307f369..d8f584b 100644
--- a/bundles/org.eclipse.emfforms.common/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emfforms.common/META-INF/MANIFEST.MF
@@ -2,19 +2,20 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: EMFForms Common
 Bundle-SymbolicName: org.eclipse.emfforms.common
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emfforms.common;version="1.16.0",
- org.eclipse.emfforms.internal.common;version="1.16.0";x-internal:=true,
- org.eclipse.emfforms.internal.common.converter;version="1.16.0";x-internal:=true,
- org.eclipse.emfforms.internal.common.report;version="1.16.0";x-internal:=true,
- org.eclipse.emfforms.spi.common.converter;version="1.16.0",
- org.eclipse.emfforms.spi.common.locale;version="1.16.0",
- org.eclipse.emfforms.spi.common.report;version="1.16.0",
- org.eclipse.emfforms.spi.common.validation;version="1.16.0"
+Export-Package: org.eclipse.emfforms.common;version="1.17.0",
+ org.eclipse.emfforms.internal.common;version="1.17.0";x-internal:=true,
+ org.eclipse.emfforms.internal.common.converter;version="1.17.0";x-internal:=true,
+ org.eclipse.emfforms.internal.common.report;version="1.17.0";x-internal:=true,
+ org.eclipse.emfforms.spi.common.converter;version="1.17.0",
+ org.eclipse.emfforms.spi.common.locale;version="1.17.0",
+ org.eclipse.emfforms.spi.common.report;version="1.17.0",
+ org.eclipse.emfforms.spi.common.validation;version="1.17.0"
 Require-Bundle: org.eclipse.emf.ecore;bundle-version="[2.7.0,3.0.0)"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Import-Package: org.osgi.framework;version="1.8.0",
  org.osgi.service.component.annotations;version="[1.1.0,2.0.0)";resolution:=optional
 Service-Component: OSGI-INF/org.eclipse.emfforms.internal.common.report.ReportServiceImpl.xml,OSGI-INF/org.eclipse.emfforms.internal.common.converter.EStructuralFeatureValueConverterServiceImpl.xml,OSGI-INF/org.eclipse.emfforms.internal.common.converter.DefaultEAttributeValueConverterImpl.xml
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emfforms.common
diff --git a/bundles/org.eclipse.emfforms.common/pom.xml b/bundles/org.eclipse.emfforms.common/pom.xml
index 016305a..7507af4 100644
--- a/bundles/org.eclipse.emfforms.common/pom.xml
+++ b/bundles/org.eclipse.emfforms.common/pom.xml
@@ -7,13 +7,13 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
 
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emfforms.common</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 
   <properties>
diff --git a/bundles/org.eclipse.emfforms.common/src/org/eclipse/emfforms/common/RankingHelper.java b/bundles/org.eclipse.emfforms.common/src/org/eclipse/emfforms/common/RankingHelper.java
index ae250b3..4129376 100644
--- a/bundles/org.eclipse.emfforms.common/src/org/eclipse/emfforms/common/RankingHelper.java
+++ b/bundles/org.eclipse.emfforms.common/src/org/eclipse/emfforms/common/RankingHelper.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2011-2017 EclipseSource Muenchen GmbH and others.
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH and others.
  *
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
@@ -8,9 +8,12 @@
  *
  * Contributors:
  * Mat Hansen - initial API and implementation
+ * Christian W. Damus - bug 533522
  ******************************************************************************/
 package org.eclipse.emfforms.common;
 
+import static java.lang.Double.doubleToLongBits;
+
 import java.text.MessageFormat;
 import java.util.ArrayList;
 import java.util.Collection;
@@ -102,7 +105,9 @@
 
 			final double rank = rankTester.getRank(element);
 
-			if (ignoreRankValue != null && ignoreRankValue.equals(rank)) {
+			// Don't use Double.equals(Double) because that requires creating a boxed Double
+			// every time (as seen in a profiler), and we do this operation a lot in large models
+			if (ignoreRankValue != null && doubleToLongBits(ignoreRankValue.doubleValue()) == doubleToLongBits(rank)) {
 				continue;
 			} else if (rank >= highestRank) {
 				if (rank > highestRank) {
diff --git a/bundles/org.eclipse.emfforms.core.bazaar/META-INF/MANIFEST.MF b/bundles/org.eclipse.emfforms.core.bazaar/META-INF/MANIFEST.MF
index 3787ac4..29a3280 100644
--- a/bundles/org.eclipse.emfforms.core.bazaar/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emfforms.core.bazaar/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: EMFForms Bazaar
 Bundle-SymbolicName: org.eclipse.emfforms.core.bazaar
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Import-Package: javax.inject;version="1.0.0",
@@ -10,5 +10,7 @@
  org.eclipse.e4.core.di;version="0.0.0",
  org.eclipse.e4.core.di.annotations;version="0.0.0"
 Bundle-ActivationPolicy: lazy
-Export-Package: org.eclipse.emfforms.bazaar;version="1.16.0",
- org.eclipse.emfforms.bazaar.internal;version="1.16.0";x-internal:=true
+Export-Package: org.eclipse.emfforms.bazaar;version="1.17.0",
+ org.eclipse.emfforms.bazaar.internal;version="1.17.0";x-internal:=true,
+ org.eclipse.emfforms.spi.bazaar;version="1.17.0"
+Automatic-Module-Name: org.eclipse.emfforms.core.bazaar
diff --git a/bundles/org.eclipse.emfforms.core.bazaar/pom.xml b/bundles/org.eclipse.emfforms.core.bazaar/pom.xml
index 6b1d2ae..6c25d8d 100644
--- a/bundles/org.eclipse.emfforms.core.bazaar/pom.xml
+++ b/bundles/org.eclipse.emfforms.core.bazaar/pom.xml
@@ -7,13 +7,13 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
 
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emfforms.core.bazaar</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 
 </project>
diff --git a/bundles/org.eclipse.emfforms.core.bazaar/src/org/eclipse/emfforms/spi/bazaar/BazaarUtil.java b/bundles/org.eclipse.emfforms.core.bazaar/src/org/eclipse/emfforms/spi/bazaar/BazaarUtil.java
new file mode 100644
index 0000000..758c26b
--- /dev/null
+++ b/bundles/org.eclipse.emfforms.core.bazaar/src/org/eclipse/emfforms/spi/bazaar/BazaarUtil.java
@@ -0,0 +1,105 @@
+/*******************************************************************************
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * Lucas Koehler - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.emfforms.spi.bazaar;
+
+import java.util.Dictionary;
+import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.emfforms.bazaar.Bazaar;
+import org.eclipse.emfforms.bazaar.BazaarContext;
+import org.eclipse.emfforms.bazaar.Create;
+import org.eclipse.emfforms.bazaar.StaticBid;
+import org.eclipse.emfforms.bazaar.Vendor;
+
+/**
+ * Utility class providing common functionality for the creation of {@link Bazaar Bazaars}.
+ *
+ * @author Lucas Koehler
+ *
+ */
+public final class BazaarUtil {
+	/**
+	 * Prevent instantiation of this utility class.
+	 */
+	private BazaarUtil() {
+	}
+
+	/**
+	 * Creates a new {@link Bazaar} initialized with a given default product. The created bazaar has a vendor which can
+	 * always provide the default product. Thereby, this vendor always bids the lowest valid amount.
+	 *
+	 * @param defaultProduct The default product which can always be created
+	 * @param <T> The type of the bazaar's created products.
+	 * @return The created {@link Bazaar}
+	 */
+	public static <T> Bazaar<T> createBazaar(T defaultProduct) {
+		final Bazaar.Builder<T> builder = builder(defaultProduct);
+		return builder.build();
+	}
+
+	private static <T> Bazaar.Builder<T> builder(final T defaultStrategy) {
+		/**
+		 * A vendor of the default, that tries to lose every bid.
+		 */
+		@StaticBid(bid = Double.NEGATIVE_INFINITY)
+		class DefaultVendor implements Vendor<T> {
+			/**
+			 * Return the default strategy.
+			 *
+			 * @return the default strategy
+			 */
+			@Create
+			public T createDefault() {
+				return defaultStrategy;
+			}
+		}
+
+		final Bazaar.Builder<T> result = Bazaar.Builder.empty();
+		return result.threadSafe().add(new DefaultVendor());
+	}
+
+	/**
+	 * Creates a basic {@link org.eclipse.emfforms.bazaar.BazaarContext.Builder Bazaar Context Builder} with the given
+	 * initial values.
+	 *
+	 * @param properties {@link Dictionary} containing the initial values
+	 * @return The created {@link org.eclipse.emfforms.bazaar.BazaarContext.Builder BazaarContext.Builder}
+	 */
+	public static BazaarContext.Builder createBaseContext(Dictionary<String, ?> properties) {
+		return BazaarContext.Builder.with(adapt(properties));
+	}
+
+	/**
+	 * Adapt a {@code dictionary} as a map.
+	 *
+	 * @param dictionary a dictionary
+	 * @return the {@code dictionary}, as a map
+	 */
+	private static Map<String, ?> adapt(Dictionary<String, ?> dictionary) {
+		// The OSGi implementation of the read-only properties for all sorts of
+		// things is a map
+		if (dictionary instanceof Map<?, ?>) {
+			@SuppressWarnings("unchecked")
+			final Map<String, ?> result = (Map<String, ?>) dictionary;
+			return result;
+		}
+
+		final Map<String, Object> result = new HashMap<String, Object>();
+		for (final Enumeration<String> keys = dictionary.keys(); keys.hasMoreElements();) {
+			final String next = keys.nextElement();
+			result.put(next, dictionary.get(next));
+		}
+		return result;
+	}
+}
diff --git a/bundles/org.eclipse.emfforms.core.services.databinding.featurepath/META-INF/MANIFEST.MF b/bundles/org.eclipse.emfforms.core.services.databinding.featurepath/META-INF/MANIFEST.MF
index df884bf..3e117e5 100644
--- a/bundles/org.eclipse.emfforms.core.services.databinding.featurepath/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emfforms.core.services.databinding.featurepath/META-INF/MANIFEST.MF
@@ -2,14 +2,15 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Featurepath Databinding Services
 Bundle-SymbolicName: org.eclipse.emfforms.core.services.databinding.featurepath
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emfforms.core.services.databinding.featurepath;version="1.16.0";x-internal:=true
-Require-Bundle: org.eclipse.emf.ecp.view.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.databinding.edit;bundle-version="[1.3.0,2.0.0)"
+Export-Package: org.eclipse.emfforms.core.services.databinding.featurepath;version="1.17.0";x-internal:=true
+Require-Bundle: org.eclipse.emf.ecp.view.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.databinding.edit;bundle-version="[1.3.0,2.0.0)"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
-Import-Package: org.eclipse.emfforms.spi.core.services.databinding;version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.spi.core.services.databinding.emf;version="[1.16.0,1.17.0)"
+Import-Package: org.eclipse.emfforms.spi.core.services.databinding;version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.spi.core.services.databinding.emf;version="[1.17.0,1.18.0]"
 Service-Component: OSGI-INF/featurePathDomainModelReferenceConverterService.xml
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emfforms.core.services.databinding.featurepath
diff --git a/bundles/org.eclipse.emfforms.core.services.databinding.featurepath/pom.xml b/bundles/org.eclipse.emfforms.core.services.databinding.featurepath/pom.xml
index 2c70daa..a1d2a47 100644
--- a/bundles/org.eclipse.emfforms.core.services.databinding.featurepath/pom.xml
+++ b/bundles/org.eclipse.emfforms.core.services.databinding.featurepath/pom.xml
@@ -7,7 +7,7 @@
   <parent>

     <groupId>org.eclipse.emf.ecp</groupId>

     <artifactId>ecp-bundles-parent</artifactId>

-    <version>1.16.0-SNAPSHOT</version>

+    <version>1.17.0-SNAPSHOT</version>

     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>

   </parent>

 

@@ -15,5 +15,5 @@
   <packaging>eclipse-plugin</packaging>

 

   <groupId>org.eclipse.emf.ecp</groupId>

-  <version>1.16.0-SNAPSHOT</version>

+  <version>1.17.0-SNAPSHOT</version>

 </project>

diff --git a/bundles/org.eclipse.emfforms.core.services.databinding.featurepath/src/org/eclipse/emfforms/core/services/databinding/featurepath/FeaturePathDomainModelReferenceConverter.java b/bundles/org.eclipse.emfforms.core.services.databinding.featurepath/src/org/eclipse/emfforms/core/services/databinding/featurepath/FeaturePathDomainModelReferenceConverter.java
index f684012..7b3b3f0 100644
--- a/bundles/org.eclipse.emfforms.core.services.databinding.featurepath/src/org/eclipse/emfforms/core/services/databinding/featurepath/FeaturePathDomainModelReferenceConverter.java
+++ b/bundles/org.eclipse.emfforms.core.services.databinding.featurepath/src/org/eclipse/emfforms/core/services/databinding/featurepath/FeaturePathDomainModelReferenceConverter.java
@@ -156,6 +156,11 @@
 					"The path is not fully resolved. The reference being resolved is not a single reference [%1$s]. The DMR is %2$s. Last resolved EObject is %3$s.", //$NON-NLS-1$
 					eReference, domainModelReference, currentObject));
 			}
+			if (currentObject.eClass().getFeatureID(eReference) == -1) {
+				throw new DatabindingFailedException(String.format(
+					"Given EClass has no such feature. The DMR is %1$s. Last resolved EObject is %2$s. Reference being resolved is %3$s.", //$NON-NLS-1$
+					domainModelReference, currentObject, eReference));
+			}
 			final EObject nextObject = (EObject) currentObject.eGet(eReference);
 			if (nextObject == null) {
 				throw new DatabindingFailedException(String.format(
diff --git a/bundles/org.eclipse.emfforms.core.services.databinding.index/META-INF/MANIFEST.MF b/bundles/org.eclipse.emfforms.core.services.databinding.index/META-INF/MANIFEST.MF
index 07c5b38..ea438fd 100644
--- a/bundles/org.eclipse.emfforms.core.services.databinding.index/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emfforms.core.services.databinding.index/META-INF/MANIFEST.MF
@@ -2,16 +2,17 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Index DMR Converter
 Bundle-SymbolicName: org.eclipse.emfforms.core.services.databinding.index
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emfforms.internal.core.services.databinding.index;version="1.16.0";x-internal:=true
-Require-Bundle: org.eclipse.emfforms.core.services;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.indexdmr.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.databinding.edit;bundle-version="[1.3.0,2.0.0)"
+Export-Package: org.eclipse.emfforms.internal.core.services.databinding.index;version="1.17.0";x-internal:=true
+Require-Bundle: org.eclipse.emfforms.core.services;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.indexdmr.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.databinding.edit;bundle-version="[1.3.0,2.0.0)"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
-Import-Package: org.eclipse.emfforms.spi.core.services.databinding.emf;version="[1.16.0,1.17.0)",
-  org.osgi.framework;version="[1.3.0,2.0.0)",
-  org.osgi.service.component.annotations;version="[1.1.0,2.0.0)"
+Import-Package: org.eclipse.emfforms.spi.core.services.databinding.emf;version="[1.17.0,1.18.0]",
+ org.osgi.framework;version="[1.3.0,2.0.0)",
+ org.osgi.service.component.annotations;version="[1.1.0,2.0.0)"
 Service-Component: OSGI-INF/indexDomainModelReferenceConverter.xml
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emfforms.core.services.databinding.index
diff --git a/bundles/org.eclipse.emfforms.core.services.databinding.index/pom.xml b/bundles/org.eclipse.emfforms.core.services.databinding.index/pom.xml
index ac6c439..c13c1f6 100644
--- a/bundles/org.eclipse.emfforms.core.services.databinding.index/pom.xml
+++ b/bundles/org.eclipse.emfforms.core.services.databinding.index/pom.xml
@@ -7,7 +7,7 @@
   <parent>

     <groupId>org.eclipse.emf.ecp</groupId>

     <artifactId>ecp-bundles-parent</artifactId>

-    <version>1.16.0-SNAPSHOT</version>

+    <version>1.17.0-SNAPSHOT</version>

     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>

   </parent>

 

@@ -15,5 +15,5 @@
   <packaging>eclipse-plugin</packaging>

 

   <groupId>org.eclipse.emfforms</groupId>

-  <version>1.16.0-SNAPSHOT</version>

+  <version>1.17.0-SNAPSHOT</version>

 </project>

diff --git a/bundles/org.eclipse.emfforms.core.services.databinding.keyattribute/META-INF/MANIFEST.MF b/bundles/org.eclipse.emfforms.core.services.databinding.keyattribute/META-INF/MANIFEST.MF
index 6cfe172..0bcd1cd 100644
--- a/bundles/org.eclipse.emfforms.core.services.databinding.keyattribute/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emfforms.core.services.databinding.keyattribute/META-INF/MANIFEST.MF
@@ -2,17 +2,18 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Keyattribute DMR Converter
 Bundle-SymbolicName: org.eclipse.emfforms.core.services.databinding.keyattribute
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emfforms.internal.core.services.databinding.keyattribute;version="1.16.0";x-internal:=true
-Require-Bundle: org.eclipse.emf.ecp.view.keyattributedmr.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.common;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.databinding;bundle-version="[1.3.0,2.0.0)",
-  org.eclipse.emf.databinding.edit;bundle-version="[1.3.0,2.0.0)"
+Export-Package: org.eclipse.emfforms.internal.core.services.databinding.keyattribute;version="1.17.0";x-internal:=true
+Require-Bundle: org.eclipse.emf.ecp.view.keyattributedmr.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.common;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.databinding;bundle-version="[1.3.0,2.0.0)",
+ org.eclipse.emf.databinding.edit;bundle-version="[1.3.0,2.0.0)"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
-Import-Package: org.eclipse.emfforms.spi.core.services.databinding.emf;version="[1.16.0,1.17.0)",
-  org.osgi.framework;version="[1.3.0,2.0.0)",
-  org.osgi.service.component.annotations;version="[1.2.0,2.0.0)";resolution:=optional
+Import-Package: org.eclipse.emfforms.spi.core.services.databinding.emf;version="[1.17.0,1.18.0]",
+ org.osgi.framework;version="[1.3.0,2.0.0)",
+ org.osgi.service.component.annotations;version="[1.2.0,2.0.0)";resolution:=optional
 Service-Component: OSGI-INF/KeyAttributeDomainModelReferenceConverter.xml
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emfforms.core.services.databinding.keyattribute
diff --git a/bundles/org.eclipse.emfforms.core.services.databinding.keyattribute/pom.xml b/bundles/org.eclipse.emfforms.core.services.databinding.keyattribute/pom.xml
index c9c120f..55a2f1e 100644
--- a/bundles/org.eclipse.emfforms.core.services.databinding.keyattribute/pom.xml
+++ b/bundles/org.eclipse.emfforms.core.services.databinding.keyattribute/pom.xml
@@ -7,13 +7,13 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
 
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emfforms.core.services.databinding.keyattribute</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 
 </project>
diff --git a/bundles/org.eclipse.emfforms.core.services.databinding.mapping/META-INF/MANIFEST.MF b/bundles/org.eclipse.emfforms.core.services.databinding.mapping/META-INF/MANIFEST.MF
index c499a03..3829d3b 100644
--- a/bundles/org.eclipse.emfforms.core.services.databinding.mapping/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emfforms.core.services.databinding.mapping/META-INF/MANIFEST.MF
@@ -2,15 +2,16 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Mapping DMR Converter
 Bundle-SymbolicName: org.eclipse.emfforms.core.services.databinding.mapping
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emfforms.internal.core.services.databinding.mapping;version="1.16.0";x-internal:=true
-Require-Bundle: org.eclipse.emfforms.core.services;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.mappingdmr.model;bundle-version="[1.16.0,1.17.0)",
+Export-Package: org.eclipse.emfforms.internal.core.services.databinding.mapping;version="1.17.0";x-internal:=true
+Require-Bundle: org.eclipse.emfforms.core.services;bundle-version="[1.17.0,1.18.0)",
+  org.eclipse.emf.ecp.view.mappingdmr.model;bundle-version="[1.17.0,1.18.0)",
   org.eclipse.emf.databinding.edit;bundle-version="[1.3.0,2.0.0)"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
-Import-Package: org.eclipse.emfforms.spi.core.services.databinding.emf;version="[1.16.0,1.17.0)",
+Import-Package: org.eclipse.emfforms.spi.core.services.databinding.emf;version="[1.17.0,1.18.0)",
   org.osgi.framework;version="[1.3.0,2.0.0)",
   org.osgi.service.component.annotations;version="[1.1.0,2.0.0)"
 Service-Component: OSGI-INF/mappingDomainModelReferenceConverter.xml
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emfforms.core.services.databinding.mapping
diff --git a/bundles/org.eclipse.emfforms.core.services.databinding.mapping/pom.xml b/bundles/org.eclipse.emfforms.core.services.databinding.mapping/pom.xml
index 1f2507d..ec9b275 100644
--- a/bundles/org.eclipse.emfforms.core.services.databinding.mapping/pom.xml
+++ b/bundles/org.eclipse.emfforms.core.services.databinding.mapping/pom.xml
@@ -7,7 +7,7 @@
   <parent>

     <groupId>org.eclipse.emf.ecp</groupId>

     <artifactId>ecp-bundles-parent</artifactId>

-    <version>1.16.0-SNAPSHOT</version>

+    <version>1.17.0-SNAPSHOT</version>

     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>

   </parent>

 

@@ -15,5 +15,5 @@
   <packaging>eclipse-plugin</packaging>

 

   <groupId>org.eclipse.emfforms</groupId>

-  <version>1.16.0-SNAPSHOT</version>

+  <version>1.17.0-SNAPSHOT</version>

 </project>

diff --git a/bundles/org.eclipse.emfforms.core.services.datatemplate/.checkstyle b/bundles/org.eclipse.emfforms.core.services.datatemplate/.checkstyle
new file mode 100644
index 0000000..19c5477
--- /dev/null
+++ b/bundles/org.eclipse.emfforms.core.services.datatemplate/.checkstyle
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<fileset-config file-format-version="1.2.0" simple-config="false" sync-formatter="false">
+  <local-check-config name="ESMCheckstyle" location="/org.eclipse.emf.ecp.releng/checkstyle/esmCheckstyle.xml" type="project" description="">
+    <additional-data name="protect-config-file" value="false"/>
+  </local-check-config>
+  <fileset name="Java Files" enabled="true" check-config-name="ESMCheckstyle" local="true">
+    <file-match-pattern match-pattern=".java" include-pattern="true"/>
+  </fileset>
+</fileset-config>
diff --git a/bundles/org.eclipse.emfforms.core.services.datatemplate/.classpath b/bundles/org.eclipse.emfforms.core.services.datatemplate/.classpath
new file mode 100644
index 0000000..8a8f166
--- /dev/null
+++ b/bundles/org.eclipse.emfforms.core.services.datatemplate/.classpath
@@ -0,0 +1,7 @@
+<?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.6"/>

+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>

+	<classpathentry kind="src" path="src"/>

+	<classpathentry kind="output" path="bin"/>

+</classpath>

diff --git a/bundles/org.eclipse.emfforms.core.services.datatemplate/.project b/bundles/org.eclipse.emfforms.core.services.datatemplate/.project
new file mode 100644
index 0000000..b17f69e
--- /dev/null
+++ b/bundles/org.eclipse.emfforms.core.services.datatemplate/.project
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.emfforms.core.services.datatemplate</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.pde.ds.core.builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>net.sf.eclipsecs.core.CheckstyleBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>net.sf.eclipsecs.core.CheckstyleNature</nature>
+	</natures>
+</projectDescription>
diff --git a/bundles/org.eclipse.emfforms.core.services.datatemplate/.settings/.api_filters b/bundles/org.eclipse.emfforms.core.services.datatemplate/.settings/.api_filters
new file mode 100644
index 0000000..2f25992
--- /dev/null
+++ b/bundles/org.eclipse.emfforms.core.services.datatemplate/.settings/.api_filters
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<component id="org.eclipse.emfforms.editor" version="2">
+    <resource path="src/org/eclipse/emfforms/spi/editor/helpers/ResourceSetHelpers.java" type="org.eclipse.emfforms.spi.editor.helpers.ResourceSetHelpers">
+        <filter id="338792546">
+            <message_arguments>
+                <message_argument value="org.eclipse.emfforms.spi.editor.helpers.ResourceSetHelpers"/>
+                <message_argument value="createResourceSet(CommandStack)"/>
+            </message_arguments>
+        </filter>
+        <filter id="338792546">
+            <message_arguments>
+                <message_argument value="org.eclipse.emfforms.spi.editor.helpers.ResourceSetHelpers"/>
+                <message_argument value="loadResourceSetWithProxies(URI, BasicCommandStack)"/>
+            </message_arguments>
+        </filter>
+    </resource>
+</component>
diff --git a/bundles/org.eclipse.emfforms.core.services.datatemplate/.settings/org.eclipse.core.resources.prefs b/bundles/org.eclipse.emfforms.core.services.datatemplate/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..f548abb
--- /dev/null
+++ b/bundles/org.eclipse.emfforms.core.services.datatemplate/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,6 @@
+eclipse.preferences.version=1
+
+encoding//model/etypes.ecore=UTF-8
+
+
+encoding/<project>=UTF-8
diff --git a/bundles/org.eclipse.emfforms.core.services.datatemplate/.settings/org.eclipse.core.runtime.prefs b/bundles/org.eclipse.emfforms.core.services.datatemplate/.settings/org.eclipse.core.runtime.prefs
new file mode 100644
index 0000000..5a0ad22
--- /dev/null
+++ b/bundles/org.eclipse.emfforms.core.services.datatemplate/.settings/org.eclipse.core.runtime.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+line.separator=\n
diff --git a/bundles/org.eclipse.emfforms.core.services.datatemplate/.settings/org.eclipse.jdt.core.prefs b/bundles/org.eclipse.emfforms.core.services.datatemplate/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..1a6b22b
--- /dev/null
+++ b/bundles/org.eclipse.emfforms.core.services.datatemplate/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,419 @@
+eclipse.preferences.version=1

+org.eclipse.jdt.core.builder.cleanOutputFolder=clean

+org.eclipse.jdt.core.builder.duplicateResourceTask=warning

+org.eclipse.jdt.core.builder.invalidClasspath=abort

+org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore

+org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=

+org.eclipse.jdt.core.circularClasspath=error

+org.eclipse.jdt.core.classpath.exclusionPatterns=enabled

+org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled

+org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error

+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.annotation.inheritNullAnnotations=disabled

+org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore

+org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull

+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault

+org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable

+org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled

+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled

+org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate

+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6

+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve

+org.eclipse.jdt.core.compiler.compliance=1.6

+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.doc.comment.support=enabled

+org.eclipse.jdt.core.compiler.maxProblemPerUnit=100

+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=enabled

+org.eclipse.jdt.core.compiler.problem.discouragedReference=warning

+org.eclipse.jdt.core.compiler.problem.emptyStatement=warning

+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error

+org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore

+org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning

+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=disabled

+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.invalidJavadoc=warning

+org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled

+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled

+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=disabled

+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=public

+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore

+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning

+org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore

+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning

+org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled

+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=warning

+org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore

+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled

+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public

+org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag

+org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore

+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled

+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled

+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=public

+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=warning

+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.nonnullParameterAnnotationDropped=warning

+org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error

+org.eclipse.jdt.core.compiler.problem.nullReference=warning

+org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error

+org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning

+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning

+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore

+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning

+org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore

+org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore

+org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning

+org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning

+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning

+org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore

+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning

+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.syntacticNullAnalysisForFields=disabled

+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.unclosedCloseable=warning

+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore

+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning

+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=warning

+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.unusedTypeParameter=ignore

+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning

+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning

+org.eclipse.jdt.core.compiler.source=1.6

+org.eclipse.jdt.core.compiler.taskCaseSensitive=enabled

+org.eclipse.jdt.core.compiler.taskPriorities=NORMAL,HIGH,HIGH,LOW,LOW,LOW,LOW,LOW,NORMAL

+org.eclipse.jdt.core.compiler.taskTags=TODO,FIXME,XXX,PERF,MEM,POLISH,@generated NOT,@ADDED,APITODO

+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false

+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_binary_expression=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_method_declaration=0

+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=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_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=false

+org.eclipse.jdt.core.formatter.comment.format_block_comments=true

+org.eclipse.jdt.core.formatter.comment.format_header=true

+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=do not 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=1

+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=1

+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=do not 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_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_binary_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_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_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_unary_operator=do not 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_binary_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_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_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_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=false

+org.eclipse.jdt.core.formatter.join_wrapped_lines=false

+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=120

+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_binary_operator=true

+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true

+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true

+org.eclipse.jdt.core.incompatibleJDKLevel=ignore

+org.eclipse.jdt.core.incompleteClasspath=error

diff --git a/bundles/org.eclipse.emfforms.core.services.datatemplate/.settings/org.eclipse.jdt.launching.prefs b/bundles/org.eclipse.emfforms.core.services.datatemplate/.settings/org.eclipse.jdt.launching.prefs
new file mode 100644
index 0000000..3bb2352
--- /dev/null
+++ b/bundles/org.eclipse.emfforms.core.services.datatemplate/.settings/org.eclipse.jdt.launching.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.launching.PREF_STRICTLY_COMPATIBLE_JRE_NOT_AVAILABLE=ignore
diff --git a/bundles/org.eclipse.emfforms.core.services.datatemplate/.settings/org.eclipse.jdt.ui.prefs b/bundles/org.eclipse.emfforms.core.services.datatemplate/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 0000000..8553926
--- /dev/null
+++ b/bundles/org.eclipse.emfforms.core.services.datatemplate/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,127 @@
+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_functional_interfaces=false

+cleanup.convert_to_enhanced_for_loop=false

+cleanup.correct_indentation=false

+cleanup.format_source_code=true

+cleanup.format_source_code_changes_only=false

+cleanup.insert_inferred_type_arguments=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=true

+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=true

+cleanup.remove_redundant_type_arguments=true

+cleanup.remove_trailing_whitespaces=true

+cleanup.remove_trailing_whitespaces_all=true

+cleanup.remove_trailing_whitespaces_ignore_empty=false

+cleanup.remove_unnecessary_casts=false

+cleanup.remove_unnecessary_nls_tags=false

+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=true

+cleanup.remove_unused_private_types=true

+cleanup.sort_members=false

+cleanup.sort_members_all=false

+cleanup.use_anonymous_class_creation=false

+cleanup.use_blocks=true

+cleanup.use_blocks_only_for_return_and_throw=false

+cleanup.use_lambda=true

+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.use_type_arguments=false

+cleanup_profile=_esmCleanUp

+cleanup_settings_version=2

+eclipse.preferences.version=1

+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true

+formatter_profile=_esmFormatter

+formatter_settings_version=12

+org.eclipse.jdt.ui.exception.name=ex

+org.eclipse.jdt.ui.gettersetter.use.is=true

+org.eclipse.jdt.ui.javadoc=true

+org.eclipse.jdt.ui.keywordthis=false

+org.eclipse.jdt.ui.overrideannotation=true

+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 * Copyright (c) 2011-${year} EclipseSource Muenchen GmbH and others.\r\n * \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 * ${user} - initial API and implementation\r\n ******************************************************************************/</template><template autoinsert\="true" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * @author ${user}\r\n *\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment"/><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 * {@inheritDoc}\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">\t\t\t// TODO Auto-generated catch block\r\n\t\t\t// Do NOT catch all Exceptions ("catch (Exception e)")\r\n\t\t\t// Log AND handle Exceptions if possible \r\n            //\r\n            // You can just uncomment one of the lines below to log an exception\:\r\n\t\t\t// logException will show the logged excpetion to the user\r\n\t\t\t// ModelUtil.logException(${exception_var});\r\n\t\t\t// ModelUtil.logException("YOUR MESSAGE HERE", ${exception_var});\r\n\t\t\t// logWarning will only add the message to the error log\r\n\t\t\t// ModelUtil.logWarning("YOUR MESSAGE HERE", ${exception_var});\r\n\t\t\t// ModelUtil.logWarning("YOUR MESSAGE HERE");\r\n\t\t\t//\t\t\t\r\n\t\t\t// If handling is not possible declare and rethrow Exception</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_functional_interfaces=false

+sp_cleanup.convert_to_enhanced_for_loop=false

+sp_cleanup.correct_indentation=false

+sp_cleanup.format_source_code=true

+sp_cleanup.format_source_code_changes_only=false

+sp_cleanup.insert_inferred_type_arguments=false

+sp_cleanup.make_local_variable_final=true

+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=true

+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=true

+sp_cleanup.remove_redundant_type_arguments=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=false

+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=true

+sp_cleanup.remove_unused_private_types=true

+sp_cleanup.sort_members=false

+sp_cleanup.sort_members_all=false

+sp_cleanup.use_anonymous_class_creation=false

+sp_cleanup.use_blocks=true

+sp_cleanup.use_blocks_only_for_return_and_throw=false

+sp_cleanup.use_lambda=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

+sp_cleanup.use_type_arguments=false

diff --git a/bundles/org.eclipse.emfforms.core.services.datatemplate/.settings/org.eclipse.ltk.core.refactoring.prefs b/bundles/org.eclipse.emfforms.core.services.datatemplate/.settings/org.eclipse.ltk.core.refactoring.prefs
new file mode 100644
index 0000000..864e30f
--- /dev/null
+++ b/bundles/org.eclipse.emfforms.core.services.datatemplate/.settings/org.eclipse.ltk.core.refactoring.prefs
@@ -0,0 +1,3 @@
+#Thu Feb 04 09:44:24 CET 2010
+eclipse.preferences.version=1
+org.eclipse.ltk.core.refactoring.enable.project.refactoring.history=false
diff --git a/bundles/org.eclipse.emfforms.core.services.datatemplate/.settings/org.eclipse.pde.api.tools.prefs b/bundles/org.eclipse.emfforms.core.services.datatemplate/.settings/org.eclipse.pde.api.tools.prefs
new file mode 100644
index 0000000..e4e3c00
--- /dev/null
+++ b/bundles/org.eclipse.emfforms.core.services.datatemplate/.settings/org.eclipse.pde.api.tools.prefs
@@ -0,0 +1,97 @@
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_TYPE=Error
+API_USE_SCAN_FIELD_SEVERITY=Error
+API_USE_SCAN_METHOD_SEVERITY=Error
+API_USE_SCAN_TYPE_SEVERITY=Error
+CLASS_ELEMENT_TYPE_ADDED_METHOD=Error
+CLASS_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CLASS_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+CLASS_ELEMENT_TYPE_REMOVED_CONSTRUCTOR=Error
+CLASS_ELEMENT_TYPE_REMOVED_FIELD=Error
+CLASS_ELEMENT_TYPE_REMOVED_METHOD=Error
+CLASS_ELEMENT_TYPE_REMOVED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+ENUM_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ENUM_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ENUM_ELEMENT_TYPE_REMOVED_ENUM_CONSTANT=Error
+ENUM_ELEMENT_TYPE_REMOVED_FIELD=Error
+ENUM_ELEMENT_TYPE_REMOVED_METHOD=Error
+ENUM_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+FIELD_ELEMENT_TYPE_ADDED_VALUE=Error
+FIELD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+FIELD_ELEMENT_TYPE_CHANGED_FINAL_TO_NON_FINAL_STATIC_CONSTANT=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_TYPE=Error
+FIELD_ELEMENT_TYPE_CHANGED_VALUE=Error
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENT=Error
+FIELD_ELEMENT_TYPE_REMOVED_VALUE=Error
+ILLEGAL_EXTEND=Warning
+ILLEGAL_IMPLEMENT=Warning
+ILLEGAL_INSTANTIATE=Warning
+ILLEGAL_OVERRIDE=Warning
+ILLEGAL_REFERENCE=Warning
+INTERFACE_ELEMENT_TYPE_ADDED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_SUPER_INTERFACE_WITH_METHODS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+INVALID_JAVADOC_TAG=Warning
+INVALID_REFERENCE_IN_SYSTEM_LIBRARIES=Error
+LEAK_EXTEND=Warning
+LEAK_FIELD_DECL=Warning
+LEAK_IMPLEMENT=Warning
+LEAK_METHOD_PARAM=Warning
+LEAK_METHOD_RETURN_TYPE=Warning
+METHOD_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+METHOD_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+METHOD_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+MISSING_EE_DESCRIPTIONS=Error
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+UNUSED_PROBLEM_FILTERS=Ignore
+automatically_removed_unused_problem_filters=Disabled
+eclipse.preferences.version=1
+incompatible_api_component_version=Error
+incompatible_api_component_version_include_major_without_breaking_change=Disabled
+incompatible_api_component_version_include_minor_without_api_change=Disabled
+invalid_since_tag_version=Error
+malformed_since_tag=Error
+missing_since_tag=Error
+report_api_breakage_when_major_version_incremented=Disabled
+report_resolution_errors_api_component=Warning
diff --git a/bundles/org.eclipse.emfforms.core.services.datatemplate/.settings/org.eclipse.pde.ds.annotations.prefs b/bundles/org.eclipse.emfforms.core.services.datatemplate/.settings/org.eclipse.pde.ds.annotations.prefs
new file mode 100644
index 0000000..73a356b
--- /dev/null
+++ b/bundles/org.eclipse.emfforms.core.services.datatemplate/.settings/org.eclipse.pde.ds.annotations.prefs
@@ -0,0 +1,8 @@
+classpath=true
+dsVersion=V1_3
+eclipse.preferences.version=1
+enabled=true
+generateBundleActivationPolicyLazy=true
+path=OSGI-INF
+validationErrorLevel=error
+validationErrorLevel.missingImplicitUnbindMethod=error
diff --git a/bundles/org.eclipse.emfforms.core.services.datatemplate/.settings/org.eclipse.pde.prefs b/bundles/org.eclipse.emfforms.core.services.datatemplate/.settings/org.eclipse.pde.prefs
new file mode 100644
index 0000000..0bbee3c
--- /dev/null
+++ b/bundles/org.eclipse.emfforms.core.services.datatemplate/.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=1
+compilers.p.missing-version-import-package=1
+compilers.p.missing-version-require-bundle=1
+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/bundles/org.eclipse.emfforms.core.services.datatemplate/META-INF/MANIFEST.MF b/bundles/org.eclipse.emfforms.core.services.datatemplate/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..da82e54
--- /dev/null
+++ b/bundles/org.eclipse.emfforms.core.services.datatemplate/META-INF/MANIFEST.MF
@@ -0,0 +1,32 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: EMFForms DataTemplate Service
+Bundle-SymbolicName: org.eclipse.emfforms.core.services.datatemplate;singleton:=true
+Bundle-Version: 1.17.0.qualifier
+Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.7.0,4.0.0)",
+ org.eclipse.emf.edit;bundle-version="[2.8.0,3.0.0)",
+ org.eclipse.emf.ecp.edit;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.common.ui;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.ui.view.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.localization;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services.emf;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.datatemplate.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.bazaar;bundle-version="[1.17.0,1.18.0]"
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Bundle-ActivationPolicy: lazy
+Service-Component: OSGI-INF/XmiTemplateProvider.xml,
+ OSGI-INF/TemplateCreateNewModelElementStrategyProvider.xml,
+ OSGI-INF/BlankTemplateProvider.xml
+Export-Package: org.eclipse.emfforms.core.services.datatemplate;version="1.17.0",
+ org.eclipse.emfforms.internal.core.services.datatemplate;version="1.17.0";x-internal:=true
+Bundle-Vendor: Eclipse Modeling Project
+Import-Package: org.eclipse.emf.edit.ui.provider;version="0.0.0",
+ org.eclipse.jface.dialogs;version="0.0.0",
+ org.eclipse.jface.viewers;version="0.0.0",
+ org.eclipse.jface.window;version="0.0.0",
+ org.eclipse.jface.wizard;version="0.0.0",
+ org.eclipse.swt.widgets;version="0.0.0",
+ org.eclipse.swt.graphics;version="0.0.0",
+ org.osgi.service.component;version="[1.3.0,2.0.0)",
+ org.osgi.service.component.annotations;version="[1.2.0,2.0.0)";resolution:=optional
+Automatic-Module-Name: org.eclipse.emfforms.core.services.datatemplate
diff --git a/bundles/org.eclipse.emfforms.core.services.datatemplate/OSGI-INF/BlankTemplateProvider.xml b/bundles/org.eclipse.emfforms.core.services.datatemplate/OSGI-INF/BlankTemplateProvider.xml
new file mode 100644
index 0000000..218997d
--- /dev/null
+++ b/bundles/org.eclipse.emfforms.core.services.datatemplate/OSGI-INF/BlankTemplateProvider.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="BlankTemplateProvider">
+   <service>
+      <provide interface="org.eclipse.emfforms.core.services.datatemplate.TemplateProvider"/>
+   </service>
+   <reference bind="setDefaultNewElementStrategyProvider" interface="org.eclipse.emf.ecp.ui.view.swt.reference.DefaultCreateNewModelElementStrategyProvider" name="DefaultNewElementStrategyProvider"/>
+   <reference bind="setLocalizationService" interface="org.eclipse.emfforms.spi.localization.EMFFormsLocalizationService" name="LocalizationService"/>
+   <implementation class="org.eclipse.emfforms.internal.core.services.datatemplate.BlankTemplateProvider"/>
+</scr:component>
\ No newline at end of file
diff --git a/bundles/org.eclipse.emfforms.core.services.datatemplate/OSGI-INF/TemplateCreateNewModelElementStrategyProvider.xml b/bundles/org.eclipse.emfforms.core.services.datatemplate/OSGI-INF/TemplateCreateNewModelElementStrategyProvider.xml
new file mode 100644
index 0000000..b1e155f
--- /dev/null
+++ b/bundles/org.eclipse.emfforms.core.services.datatemplate/OSGI-INF/TemplateCreateNewModelElementStrategyProvider.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" activate="activate" deactivate="deactivate" name="TemplateCreateNewModelElementStrategyProvider">
+   <property name="service.ranking" type="Integer" value="10"/>
+   <service>
+      <provide interface="org.eclipse.emf.ecp.ui.view.swt.reference.CreateNewModelElementStrategy$Provider"/>
+   </service>
+   <reference bind="addEClassSelectionStrategyProvider" cardinality="0..n" interface="org.eclipse.emf.ecp.ui.view.swt.reference.EClassSelectionStrategy$Provider" name="EClassSelectionStrategyProvider" policy="dynamic" unbind="removeEClassSelectionStrategyProvider"/>
+   <reference bind="setLocalizationService" interface="org.eclipse.emfforms.spi.localization.EMFFormsLocalizationService" name="LocalizationService"/>
+   <reference bind="registerTemplateProvider" cardinality="0..n" interface="org.eclipse.emfforms.core.services.datatemplate.TemplateProvider" name="registerTemplateProvider" unbind="unregisterTemplateProvider"/>
+   <implementation class="org.eclipse.emfforms.internal.core.services.datatemplate.TemplateCreateNewModelElementStrategyProvider"/>
+</scr:component>
\ No newline at end of file
diff --git a/bundles/org.eclipse.emfforms.core.services.datatemplate/OSGI-INF/XmiTemplateProvider.xml b/bundles/org.eclipse.emfforms.core.services.datatemplate/OSGI-INF/XmiTemplateProvider.xml
new file mode 100644
index 0000000..963863e
--- /dev/null
+++ b/bundles/org.eclipse.emfforms.core.services.datatemplate/OSGI-INF/XmiTemplateProvider.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" activate="activate" name="XmiTemplateProvider">
+   <service>
+      <provide interface="org.eclipse.emfforms.core.services.datatemplate.TemplateProvider"/>
+   </service>
+   <reference bind="setReportService" interface="org.eclipse.emfforms.spi.common.report.ReportService" name="ReportService"/>
+   <implementation class="org.eclipse.emfforms.internal.core.services.datatemplate.XmiTemplateProvider"/>
+</scr:component>
\ No newline at end of file
diff --git a/bundles/org.eclipse.emfforms.core.services.datatemplate/OSGI-INF/l10n/bundle.properties b/bundles/org.eclipse.emfforms.core.services.datatemplate/OSGI-INF/l10n/bundle.properties
new file mode 100644
index 0000000..c6bb914
--- /dev/null
+++ b/bundles/org.eclipse.emfforms.core.services.datatemplate/OSGI-INF/l10n/bundle.properties
@@ -0,0 +1,18 @@
+###############################################################################
+# Copyright (c) 2018 EclipseSource.
+# 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:
+#    EclipseSource - initial API and implementation
+################################################################################
+
+BlankTemplateProvider_blankTemplateLabel=Blank {0}
+SelectSubclassAndTemplateWizard_selectEClass=Please select an EClass.
+SelectSubclassAndTemplateWizard_selectTemplateTitle=Select Template
+SelectSubclassAndTemplateWizard_selectTemplateDescription=Select the template which will be used as the base for the new instance.
+SelectSubclassAndTemplateWizard_selectSubClassTitle=Select Sub Class
+SelectSubclassAndTemplateWizard_selectSubClassDescription=Select the class for which you want to select a template.
+TemplateCreateNewModelElementStrategyProvider_wizardTitle=Select Sub Class and Template
\ No newline at end of file
diff --git a/bundles/org.eclipse.emfforms.core.services.datatemplate/build.properties b/bundles/org.eclipse.emfforms.core.services.datatemplate/build.properties
new file mode 100644
index 0000000..800420e
--- /dev/null
+++ b/bundles/org.eclipse.emfforms.core.services.datatemplate/build.properties
@@ -0,0 +1,7 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+               .,\
+               OSGI-INF/,\
+               plugin.xml,\
+               schema/
diff --git a/bundles/org.eclipse.emfforms.core.services.datatemplate/plugin.xml b/bundles/org.eclipse.emfforms.core.services.datatemplate/plugin.xml
new file mode 100644
index 0000000..0e0611e
--- /dev/null
+++ b/bundles/org.eclipse.emfforms.core.services.datatemplate/plugin.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+   <extension-point id="org.eclipse.emfforms.core.services.datatemplate.xmi" name="Data Templates XMI Provider" schema="schema/org.eclipse.emfforms.core.services.datatemplate.provider.xmi.exsd"/>
+
+</plugin>
diff --git a/bundles/org.eclipse.emfforms.core.services.datatemplate/pom.xml b/bundles/org.eclipse.emfforms.core.services.datatemplate/pom.xml
new file mode 100644
index 0000000..18fc9c9
--- /dev/null
+++ b/bundles/org.eclipse.emfforms.core.services.datatemplate/pom.xml
@@ -0,0 +1,18 @@
+<?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.emf.ecp</groupId>
+    <artifactId>ecp-bundles-parent</artifactId>
+    <version>1.17.0-SNAPSHOT</version>
+    <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
+  </parent>
+
+  <groupId>org.eclipse.emf.ecp</groupId>
+  <artifactId>org.eclipse.emfforms.core.services.datatemplate</artifactId>
+  <version>1.17.0-SNAPSHOT</version>
+  <packaging>eclipse-plugin</packaging>
+</project>
diff --git a/bundles/org.eclipse.emfforms.core.services.datatemplate/schema/org.eclipse.emfforms.core.services.datatemplate.provider.xmi.exsd b/bundles/org.eclipse.emfforms.core.services.datatemplate/schema/org.eclipse.emfforms.core.services.datatemplate.provider.xmi.exsd
new file mode 100644
index 0000000..a216d29
--- /dev/null
+++ b/bundles/org.eclipse.emfforms.core.services.datatemplate/schema/org.eclipse.emfforms.core.services.datatemplate.provider.xmi.exsd
@@ -0,0 +1,103 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!-- Schema file written by PDE -->
+<schema targetNamespace="org.eclipse.emfforms.core.services.datatemplate" xmlns="http://www.w3.org/2001/XMLSchema">
+<annotation>
+      <appinfo>
+         <meta.schema plugin="org.eclipse.emfforms.core.services.datatemplate" id="org.eclipse.emfforms.internal.core.services.datatemplate.xmi" name="Data Templates XMI Provider"/>
+      </appinfo>
+      <documentation>
+         This extension point allows to register data templates.
+This allows to create new data objects pre-filled with the values configured in the template.
+      </documentation>
+   </annotation>
+
+   <element name="extension">
+      <annotation>
+         <appinfo>
+            <meta.element />
+         </appinfo>
+      </annotation>
+      <complexType>
+         <sequence minOccurs="1" maxOccurs="unbounded">
+            <element ref="template"/>
+         </sequence>
+         <attribute name="point" type="string" use="required">
+            <annotation>
+               <documentation>
+                  
+               </documentation>
+            </annotation>
+         </attribute>
+         <attribute name="id" type="string">
+            <annotation>
+               <documentation>
+                  
+               </documentation>
+            </annotation>
+         </attribute>
+         <attribute name="name" type="string">
+            <annotation>
+               <documentation>
+                  
+               </documentation>
+               <appinfo>
+                  <meta.attribute translatable="true"/>
+               </appinfo>
+            </annotation>
+         </attribute>
+      </complexType>
+   </element>
+
+   <element name="template">
+      <complexType>
+         <attribute name="file" type="string" use="required">
+            <annotation>
+               <documentation>
+                  The path to the XMI file defining the data template.
+               </documentation>
+               <appinfo>
+                  <meta.attribute kind="resource"/>
+               </appinfo>
+            </annotation>
+         </attribute>
+      </complexType>
+   </element>
+
+   <annotation>
+      <appinfo>
+         <meta.section type="since"/>
+      </appinfo>
+      <documentation>
+         [Enter the first release in which this extension point appears.]
+      </documentation>
+   </annotation>
+
+   <annotation>
+      <appinfo>
+         <meta.section type="examples"/>
+      </appinfo>
+      <documentation>
+         [Enter extension point usage example here.]
+      </documentation>
+   </annotation>
+
+   <annotation>
+      <appinfo>
+         <meta.section type="apiinfo"/>
+      </appinfo>
+      <documentation>
+         [Enter API information here.]
+      </documentation>
+   </annotation>
+
+   <annotation>
+      <appinfo>
+         <meta.section type="implementation"/>
+      </appinfo>
+      <documentation>
+         [Enter information about supplied implementation of this extension point.]
+      </documentation>
+   </annotation>
+
+
+</schema>
diff --git a/bundles/org.eclipse.emfforms.core.services.datatemplate/src/org/eclipse/emfforms/core/services/datatemplate/TemplateProvider.java b/bundles/org.eclipse.emfforms.core.services.datatemplate/src/org/eclipse/emfforms/core/services/datatemplate/TemplateProvider.java
new file mode 100644
index 0000000..ae8ce61
--- /dev/null
+++ b/bundles/org.eclipse.emfforms.core.services.datatemplate/src/org/eclipse/emfforms/core/services/datatemplate/TemplateProvider.java
@@ -0,0 +1,58 @@
+/*******************************************************************************
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * Mat Hansen - initial API and implementation
+ * Christian W. Damus - bug 529138
+ ******************************************************************************/
+package org.eclipse.emfforms.core.services.datatemplate;
+
+import java.util.Set;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emfforms.datatemplate.Template;
+
+/**
+ * Template provider interface.
+ *
+ * @author Mat Hansen <mhansen@eclipsesource.com>
+ * @since 1.17
+ */
+public interface TemplateProvider {
+
+	/**
+	 * Queries whether the provider can provide templates that may be assigned
+	 * to the given {@code reference} of the given {@code owner} object.
+	 *
+	 * @param owner the object owning a {@code reference} to be assigned from a template
+	 * @param reference a reference feature of the {@code owner} that is to be assigned from a template.
+	 *            If the {@code reference} is a {@link EReference#isContainment() containment} then
+	 *            the {@code owner} would be the {@link EObject#eContainer() container} of the template
+	 *
+	 * @return whether I have any templates to offer
+	 */
+	boolean canProvideTemplates(EObject owner, EReference reference);
+
+	/**
+	 * Obtains templates wrapping objects that can be assigned to the given
+	 * {@code reference} of the given {@code owner} object. This will only
+	 * be called for an {@code owner} and {@code reference} for which the
+	 * receiver previously answered {@code true} to an invocation of the
+	 * {@link #canProvideTemplates(EObject, EReference)} query.
+	 *
+	 * @param owner the object owning a {@code reference} to be assigned from a template
+	 * @param reference a reference feature of the {@code owner} that is to be assigned from a template.
+	 *            If the {@code reference} is a {@link EReference#isContainment() containment} then
+	 *            the {@code owner} would be the {@link EObject#eContainer() container} of the template
+	 *
+	 * @return my available templates, or an empty set if none (never {@code null})
+	 */
+	Set<Template> provideTemplates(EObject owner, EReference reference);
+
+}
diff --git a/bundles/org.eclipse.emfforms.core.services.datatemplate/src/org/eclipse/emfforms/internal/core/services/datatemplate/BlankTemplateProvider.java b/bundles/org.eclipse.emfforms.core.services.datatemplate/src/org/eclipse/emfforms/internal/core/services/datatemplate/BlankTemplateProvider.java
new file mode 100644
index 0000000..29c6a46
--- /dev/null
+++ b/bundles/org.eclipse.emfforms.core.services.datatemplate/src/org/eclipse/emfforms/internal/core/services/datatemplate/BlankTemplateProvider.java
@@ -0,0 +1,181 @@
+/*******************************************************************************
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * Lucas Koehler - initial API and implementation
+ * Christian W. Damus - bug 529138
+ ******************************************************************************/
+package org.eclipse.emfforms.internal.core.services.datatemplate;
+
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.LinkedHashSet;
+import java.util.Map;
+import java.util.Set;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.emf.ecp.common.spi.EMFUtils;
+import org.eclipse.emf.ecp.ui.view.swt.reference.DefaultCreateNewModelElementStrategyProvider;
+import org.eclipse.emf.ecp.ui.view.swt.reference.EClassSelectionStrategy;
+import org.eclipse.emfforms.core.services.datatemplate.TemplateProvider;
+import org.eclipse.emfforms.datatemplate.DataTemplateFactory;
+import org.eclipse.emfforms.datatemplate.Template;
+import org.eclipse.emfforms.internal.core.services.label.BundleResolver;
+import org.eclipse.emfforms.internal.core.services.label.BundleResolver.NoBundleFoundException;
+import org.eclipse.emfforms.internal.core.services.label.BundleResolverImpl;
+import org.eclipse.emfforms.spi.localization.EMFFormsLocalizationService;
+import org.eclipse.osgi.util.NLS;
+import org.osgi.framework.Bundle;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Reference;
+
+/**
+ * {@link TemplateProvider} that provides a templates simply containing empty instances of the corresponding EClass and
+ * its concrete sub classes.
+ *
+ * @author Lucas Koehler
+ *
+ */
+@SuppressWarnings("restriction")
+@Component(name = "BlankTemplateProvider")
+public class BlankTemplateProvider implements TemplateProvider {
+	private BundleResolver bundleResolver;
+	private EMFFormsLocalizationService localizationService;
+
+	private DefaultCreateNewModelElementStrategyProvider defaultNewElementStrategyProvider;
+
+	/**
+	 * Creates a new {@link BlankTemplateProvider} instance.
+	 */
+	public BlankTemplateProvider() {
+		setBundleResolver(new BundleResolverImpl());
+	}
+
+	/**
+	 * Sets the {@link EMFFormsLocalizationService}.
+	 *
+	 * @param localizationService The {@link EMFFormsLocalizationService}
+	 */
+	@Reference
+	void setLocalizationService(EMFFormsLocalizationService localizationService) {
+		this.localizationService = localizationService;
+	}
+
+	/**
+	 * Sets the default new-element strategy provider for creation of "blank" template instances.
+	 *
+	 * @param defaultNewElementStrategyProvider the default new-element strategy provider
+	 */
+	@Reference
+	void setDefaultNewElementStrategyProvider(
+		DefaultCreateNewModelElementStrategyProvider defaultNewElementStrategyProvider) {
+
+		this.defaultNewElementStrategyProvider = defaultNewElementStrategyProvider;
+	}
+
+	@Override
+	public boolean canProvideTemplates(EObject owner, EReference reference) {
+		// We can only provide a blank template if the type or at least one of its sub classes is concrete.
+		for (final EClass subClass : EMFUtils.getSubClasses(reference.getEReferenceType())) {
+			if (!subClass.isAbstract() && !subClass.isInterface()) {
+				return true;
+			}
+		}
+
+		return false;
+	}
+
+	@Override
+	public Set<Template> provideTemplates(EObject owner, EReference reference) {
+		return provideTemplates(owner, reference, EClassSelectionStrategy.NULL);
+	}
+
+	/**
+	 * The actual method which creates the templates. This Method uses the provided {@link EClassSelectionStrategy} to
+	 * filter possible templates.
+	 *
+	 * @param owner The {@link EObject} to which the templates should be added
+	 * @param reference The {@link EReference} to which the templates should be added
+	 * @param eClassSelectionStrategy The {@link EClassSelectionStrategy} to use for filtering
+	 * @return The Set of Templates created by this {@link TemplateProvider}
+	 */
+	public Set<Template> provideTemplates(EObject owner, EReference reference,
+		EClassSelectionStrategy eClassSelectionStrategy) {
+		Map<EClass, EObject> descriptors = defaultNewElementStrategyProvider == null
+			? Collections.<EClass, EObject> emptyMap()
+			: defaultNewElementStrategyProvider.getNewObjectsByDescriptors(owner, reference);
+		if (descriptors.isEmpty()) {
+			// Just create actually blank instances of all possible subtypes
+			descriptors = new HashMap<EClass, EObject>();
+			final Collection<EClass> subClasses = EMFUtils.getSubClasses(reference.getEReferenceType());
+			for (final EClass subClass : subClasses) {
+				if (!subClass.isAbstract() && !subClass.isInterface()) {
+					descriptors.put(subClass, EcoreUtil.create(subClass));
+				}
+			}
+		}
+
+		final Collection<EClass> allowedEClasses = eClassSelectionStrategy.collectEClasses(owner, reference,
+			new LinkedHashSet<EClass>(descriptors.keySet()));
+		descriptors.keySet().retainAll(allowedEClasses);
+		final LinkedHashSet<Template> result = new LinkedHashSet<Template>();
+		for (final Map.Entry<EClass, EObject> next : descriptors.entrySet()) {
+			result.add(createTemplate(next.getKey(), next.getValue()));
+		}
+		return result;
+	}
+
+	/**
+	 * Creates a blank template for the given type.
+	 *
+	 * @param type the type of the {@code instance} to wrap in a template
+	 * @param instance the instance of the template {@code type}
+	 * @return The blank {@link Template}
+	 */
+	protected Template createTemplate(EClass type, EObject instance) {
+		final Template template = DataTemplateFactory.eINSTANCE.createTemplate();
+		template.setInstance(instance);
+
+		final String nameTemplate = localizationService.getString(BlankTemplateProvider.class,
+			MessageKeys.BlankTemplateProvider_blankTemplateLabel);
+		template.setName(NLS.bind(nameTemplate, getDisplayName(type)));
+
+		return template;
+	}
+
+	/**
+	 * Set the {@link BundleResolver}.
+	 *
+	 * @param bundleResolver The {@link BundleResolver}
+	 */
+	protected void setBundleResolver(BundleResolver bundleResolver) {
+		this.bundleResolver = bundleResolver;
+	}
+
+	/**
+	 * Fetch the display name for the given {@link EClass}.
+	 *
+	 * @param type the {@link EClass} to get the display name for
+	 * @return the display name
+	 */
+	protected String getDisplayName(EClass type) {
+		try {
+			final Bundle editBundle = bundleResolver.getEditBundle(type);
+			return localizationService.getString(editBundle, String.format("_UI_%s_type", type.getName())); //$NON-NLS-1$
+		} catch (final NoBundleFoundException ex) {
+			// Do nothing, the fall back of using the type's name will be used
+		}
+
+		return type.getName();
+
+	}
+}
diff --git a/bundles/org.eclipse.emfforms.core.services.datatemplate/src/org/eclipse/emfforms/internal/core/services/datatemplate/EClassLabelProvider.java b/bundles/org.eclipse.emfforms.core.services.datatemplate/src/org/eclipse/emfforms/internal/core/services/datatemplate/EClassLabelProvider.java
new file mode 100644
index 0000000..acb2db9
--- /dev/null
+++ b/bundles/org.eclipse.emfforms.core.services.datatemplate/src/org/eclipse/emfforms/internal/core/services/datatemplate/EClassLabelProvider.java
@@ -0,0 +1,117 @@
+/*******************************************************************************
+ * Copyright (c) 2018 Christian W. Damus 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:
+ * Christian W. Damus - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.emfforms.internal.core.services.datatemplate;
+
+import java.net.URL;
+import java.util.Enumeration;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.edit.ui.provider.ExtendedImageRegistry;
+import org.eclipse.emfforms.internal.core.services.label.BundleResolver;
+import org.eclipse.emfforms.internal.core.services.label.BundleResolver.NoBundleFoundException;
+import org.eclipse.emfforms.internal.core.services.label.BundleResolverImpl;
+import org.eclipse.emfforms.spi.localization.EMFFormsLocalizationService;
+import org.eclipse.jface.viewers.ILabelProvider;
+import org.eclipse.jface.viewers.ILabelProviderListener;
+import org.eclipse.swt.graphics.Image;
+import org.osgi.framework.Bundle;
+
+/**
+ * Create a label provider for {@link EClass}es that doesn't present them as they
+ * are in the Ecore model editor, but instead using their EMF.Edit localized names
+ * and icons.
+ */
+@SuppressWarnings("restriction") // for BundleResolver API
+final class EClassLabelProvider implements ILabelProvider {
+	private final EMFFormsLocalizationService l10nService;
+	private final BundleResolver bundleResolver;
+
+	/**
+	 * Initializes me with the EMF Forms localization service from which I get
+	 * the EMF.Edit plug-in strings.
+	 *
+	 * @param l10nService the localization service
+	 */
+	EClassLabelProvider(EMFFormsLocalizationService l10nService) {
+		super();
+
+		this.l10nService = l10nService;
+		bundleResolver = new BundleResolverImpl();
+	}
+
+	@Override
+	public void dispose() {
+		// I allocate nothing disposable
+	}
+
+	@Override
+	public String getText(Object element) {
+		if (!(element instanceof EClass)) {
+			return String.valueOf(element);
+		}
+
+		final EClass eClass = (EClass) element;
+		Bundle editBundle;
+
+		try {
+			editBundle = bundleResolver.getEditBundle(eClass);
+		} catch (final NoBundleFoundException e) {
+			editBundle = null;
+		}
+
+		return editBundle != null
+			? l10nService.getString(editBundle, String.format("_UI_%s_type", eClass.getName())) //$NON-NLS-1$
+			: eClass.getName();
+	}
+
+	@Override
+	public Image getImage(Object element) {
+		if (!(element instanceof EClass)) {
+			return null;
+		}
+
+		final EClass eClass = (EClass) element;
+		Bundle editBundle;
+
+		Enumeration<URL> imageURLs = null;
+		try {
+			editBundle = bundleResolver.getEditBundle(eClass);
+			imageURLs = editBundle.findEntries("icons/full/obj16", //$NON-NLS-1$
+				String.format("%s.*", eClass.getName()), //$NON-NLS-1$
+				false);
+		} catch (final NoBundleFoundException e) {
+			// Expected
+		}
+
+		// Don't keep these in a resource manager for disposal because the images
+		// in the EMF image registry must never be disposed: they are shared
+		return imageURLs != null && imageURLs.hasMoreElements()
+			? ExtendedImageRegistry.getInstance().getImage(imageURLs.nextElement())
+			: null;
+	}
+
+	@Override
+	public boolean isLabelProperty(Object element, String property) {
+		return true;
+	}
+
+	@Override
+	public void addListener(ILabelProviderListener listener) {
+		// I do not notify, so don't need to track listeners
+	}
+
+	@Override
+	public void removeListener(ILabelProviderListener listener) {
+		// I do not notify, so don't need to track listeners
+	}
+
+}
\ No newline at end of file
diff --git a/bundles/org.eclipse.emfforms.core.services.datatemplate/src/org/eclipse/emfforms/internal/core/services/datatemplate/MessageKeys.java b/bundles/org.eclipse.emfforms.core.services.datatemplate/src/org/eclipse/emfforms/internal/core/services/datatemplate/MessageKeys.java
new file mode 100644
index 0000000..257337a
--- /dev/null
+++ b/bundles/org.eclipse.emfforms.core.services.datatemplate/src/org/eclipse/emfforms/internal/core/services/datatemplate/MessageKeys.java
@@ -0,0 +1,29 @@
+/*******************************************************************************
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * Lucas Koehler - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.emfforms.internal.core.services.datatemplate;
+
+/**
+ * Keys for translated strings.
+ *
+ * @author Lucas Koehler
+ * @generated
+ */
+public interface MessageKeys {
+
+	String BlankTemplateProvider_blankTemplateLabel = "BlankTemplateProvider_blankTemplateLabel"; //$NON-NLS-1$
+	String SelectSubclassAndTemplateWizard_selectTemplateTitle = "SelectSubclassAndTemplateWizard_selectTemplateTitle"; //$NON-NLS-1$
+	String SelectSubclassAndTemplateWizard_selectTemplateDescription = "SelectSubclassAndTemplateWizard_selectTemplateDescription"; //$NON-NLS-1$
+	String SelectSubclassAndTemplateWizard_selectSubClassTitle = "SelectSubclassAndTemplateWizard_selectSubClassTitle"; //$NON-NLS-1$
+	String SelectSubclassAndTemplateWizard_selectSubClassDescription = "SelectSubclassAndTemplateWizard_selectSubClassDescription"; //$NON-NLS-1$
+	String SelectSubclassAndTemplateWizard_selectEClass = "SelectSubclassAndTemplateWizard_selectEClass"; //$NON-NLS-1$
+	String TemplateCreateNewModelElementStrategyProvider_wizardTitle = "TemplateCreateNewModelElementStrategyProvider_wizardTitle"; //$NON-NLS-1$
+}
diff --git a/bundles/org.eclipse.emfforms.core.services.datatemplate/src/org/eclipse/emfforms/internal/core/services/datatemplate/SelectSubclassAndTemplateWizard.java b/bundles/org.eclipse.emfforms.core.services.datatemplate/src/org/eclipse/emfforms/internal/core/services/datatemplate/SelectSubclassAndTemplateWizard.java
new file mode 100644
index 0000000..ede4522
--- /dev/null
+++ b/bundles/org.eclipse.emfforms.core.services.datatemplate/src/org/eclipse/emfforms/internal/core/services/datatemplate/SelectSubclassAndTemplateWizard.java
@@ -0,0 +1,365 @@
+/*******************************************************************************
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * Lucas Koehler - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.emfforms.internal.core.services.datatemplate;
+
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.LinkedHashSet;
+import java.util.Set;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecp.spi.common.ui.CompositeFactory;
+import org.eclipse.emf.ecp.spi.common.ui.composites.SelectionComposite;
+import org.eclipse.emfforms.common.Optional;
+import org.eclipse.emfforms.datatemplate.Template;
+import org.eclipse.emfforms.spi.localization.EMFFormsLocalizationService;
+import org.eclipse.jface.viewers.ColumnViewer;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.jface.wizard.IWizardPage;
+import org.eclipse.jface.wizard.Wizard;
+import org.eclipse.jface.wizard.WizardPage;
+import org.eclipse.swt.widgets.Composite;
+
+/**
+ * Wizard that allows to select an {@link EClass} on the first page and a model element on the second page. Thereby, the
+ * second page only shows model elements that are an instance of the selected EClass.
+ * <p>
+ * If there is only one possible EClass, the class selection page is skipped and the template selection is shown
+ * directly.
+ * <br />
+ * If there is only one template left after selecting the EClass, the template selection page is skipped and the
+ * remaining {@link Template} counts as selected.
+ *
+ * @author Lucas Koehler
+ *
+ */
+public class SelectSubclassAndTemplateWizard extends Wizard {
+
+	private static final String TEMPLATE_PAGE_NAME = "templateSelectionPage"; //$NON-NLS-1$
+	private static final String CLASS_PAGE_NAME = "subClassSelectionPage"; //$NON-NLS-1$
+
+	private SubClassSelectionPage subClassSelectionPage;
+	private TemplateSelectionPage modelElementPage;
+	private final Set<EClass> subClasses;
+	private final Set<Template> allTemplates;
+	private boolean showTemplateSelectionPage = true;
+	private final EMFFormsLocalizationService localizationService;
+
+	private EClass selectedSubClass;
+	private boolean finished;
+
+	/**
+	 * Creates a new instance.
+	 *
+	 * @param windowTitle The title of the wizard
+	 * @param subClasses The EClasses to choose from
+	 * @param templates The available templates for all given EClasses
+	 * @param localizationService The {@link EMFFormsLocalizationService}
+	 */
+	public SelectSubclassAndTemplateWizard(String windowTitle, Set<EClass> subClasses, Set<Template> templates,
+		EMFFormsLocalizationService localizationService) {
+		setWindowTitle(windowTitle);
+		this.subClasses = subClasses;
+		this.localizationService = localizationService;
+		allTemplates = templates;
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.jface.wizard.Wizard#performFinish()
+	 */
+	@Override
+	public boolean performFinish() {
+		finished = true;
+		return true;
+	}
+
+	@Override
+	public boolean canFinish() {
+		if (selectedSubClass != null && !showTemplateSelectionPage) {
+			return true;
+		}
+		return super.canFinish();
+	}
+
+	/**
+	 * Returns the template selected by the user. If there is only one valid template left after selecting a sub class,
+	 * this template is selected automatically without showing the second wizard page.
+	 *
+	 * @return The selected {@link Template}, or the empty Optional if none was selected
+	 */
+	public Optional<Template> getSelectedTemplate() {
+		if (!finished) {
+			// Return an empty Optional in case the wizard was not finished successfully (e.g. by canceling it)
+			return Optional.empty();
+		}
+		if (showTemplateSelectionPage) {
+			final Object[] selection = modelElementPage.getSelectionComposite().getSelection();
+			if (selection != null && selection.length > 0) {
+				return Optional.of((Template) selection[0]);
+			}
+		} else if (selectedSubClass != null) {
+			final Set<Template> templates = getAvailableTemplates(selectedSubClass);
+			if (templates.iterator().hasNext()) {
+				return Optional.of(templates.iterator().next());
+			}
+		}
+		return Optional.empty();
+	}
+
+	@Override
+	public void addPages() {
+		modelElementPage = new TemplateSelectionPage(TEMPLATE_PAGE_NAME,
+			localizationService.getString(SelectSubclassAndTemplateWizard.class,
+				MessageKeys.SelectSubclassAndTemplateWizard_selectTemplateTitle),
+			localizationService.getString(SelectSubclassAndTemplateWizard.class,
+				MessageKeys.SelectSubclassAndTemplateWizard_selectTemplateDescription));
+
+		if (subClasses.size() > 1) {
+			subClassSelectionPage = new SubClassSelectionPage(CLASS_PAGE_NAME,
+				localizationService.getString(SelectSubclassAndTemplateWizard.class,
+					MessageKeys.SelectSubclassAndTemplateWizard_selectSubClassTitle),
+				localizationService.getString(SelectSubclassAndTemplateWizard.class,
+					MessageKeys.SelectSubclassAndTemplateWizard_selectSubClassDescription),
+				subClasses);
+			addPage(subClassSelectionPage);
+		}
+
+		addPage(modelElementPage);
+
+		if (subClasses.size() == 1) {
+			selectedSubClass = subClasses.iterator().next();
+		}
+		super.addPages();
+
+	}
+
+	@Override
+	public IWizardPage getNextPage(IWizardPage page) {
+		if (page == subClassSelectionPage && !showTemplateSelectionPage) {
+			// Do not show the template selection page if there is no need to
+			return null;
+		}
+		return super.getNextPage(page);
+	}
+
+	/**
+	 * Update the selected sub class. This is typically called by the {@link SubClassSelectionPage}.
+	 *
+	 * @param subClass The selected sub class
+	 */
+	protected void setSubClass(EClass subClass) {
+		// Necessary to update in case the user goes back in the wizard and selects a different sub class.
+		final Set<Template> availableTemplates = subClass != null
+			? getAvailableTemplates(subClass)
+			: Collections.<Template> emptySet();
+		showTemplateSelectionPage = availableTemplates.size() > 1;
+		modelElementPage.updateSelectionComposite(availableTemplates);
+		selectedSubClass = subClass;
+	}
+
+	/**
+	 * Get all available templates for the given {@link EClass}.
+	 *
+	 * @param eClass The {@link EClass}
+	 * @return The available templates
+	 */
+	protected Set<Template> getAvailableTemplates(EClass eClass) {
+		final Set<Template> availableTemplates = new LinkedHashSet<Template>();
+		if (eClass != null) {
+			for (final Template template : allTemplates) {
+				try {
+					if (eClass.isSuperTypeOf(template.getInstance().eClass())) {
+						availableTemplates.add(template);
+					}
+				}
+				// CHECKSTYLE.OFF: IllegalCatch
+				catch (final RuntimeException e) {
+					// ignore as somebody broke the eclass method
+				}
+				// CHECKSTYLE.ON: IllegalCatch
+			}
+		}
+
+		return availableTemplates;
+	}
+
+	/**
+	 * Abstract base class for the eclass and template selection pages.
+	 *
+	 * @author Lucas Koehler
+	 */
+	abstract class SelectionPage extends WizardPage {
+
+		/**
+		 * @param pageName The page's unique name
+		 * @param pageTitle The title shown for this wizard page
+		 * @param pageDescription The description shown on this wizard page
+		 */
+		protected SelectionPage(String pageName, String pageTitle, String pageDescription) {
+			super(pageName);
+			setTitle(pageTitle);
+			setDescription(pageDescription);
+		}
+
+		@Override
+		public void createControl(Composite parent) {
+			final Composite composite = getSelectionComposite().createUI(parent);
+			if (getSelectionComposite().getViewer() instanceof TreeViewer) {
+				final TreeViewer tv = (TreeViewer) getSelectionComposite().getViewer();
+				tv.expandToLevel(2);
+			}
+			getSelectionComposite().getViewer().addSelectionChangedListener(getSelectionChangedListener());
+			setPageComplete(false);
+			setControl(composite);
+
+		}
+
+		/**
+		 * @return The selection listener that is called when the selection composite's selection changes
+		 */
+		protected abstract ISelectionChangedListener getSelectionChangedListener();
+
+		/**
+		 * @return The {@link SelectionComposite} that provides the selection viewer
+		 */
+		protected abstract SelectionComposite<? extends ColumnViewer> getSelectionComposite();
+	}
+
+	/**
+	 * Page for selecting the sub {@link EClass}.
+	 *
+	 * @author Lucas Koehler
+	 *
+	 */
+	class SubClassSelectionPage extends SelectionPage {
+		private final Set<EClass> availableEClasses;
+		private SelectionComposite<TreeViewer> selectionComposite;
+
+		/**
+		 * Create a new sub class selection page that allows to select one of the available e classes.
+		 *
+		 * @param pageName The page's unique name
+		 * @param pageTitle The title shown for this wizard page
+		 * @param pageDescription The description shown for this wizard page
+		 * @param availableEClasses The set of selectable e classes
+		 */
+		protected SubClassSelectionPage(String pageName, String pageTitle, String pageDescription,
+			Set<EClass> availableEClasses) {
+			super(pageName, pageTitle, pageDescription);
+			setTitle(pageTitle);
+			setDescription(pageDescription);
+			this.availableEClasses = availableEClasses;
+		}
+
+		@Override
+		protected SelectionComposite<? extends ColumnViewer> getSelectionComposite() {
+			if (selectionComposite == null) {
+				selectionComposite = CompositeFactory.getSelectModelClassComposite(new HashSet<EPackage>(),
+					new HashSet<EPackage>(), availableEClasses);
+			}
+			return selectionComposite;
+		}
+
+		@Override
+		public void createControl(Composite parent) {
+			super.createControl(parent);
+		}
+
+		@Override
+		protected ISelectionChangedListener getSelectionChangedListener() {
+			return new ISelectionChangedListener() {
+
+				@Override
+				public void selectionChanged(SelectionChangedEvent event) {
+					final IStructuredSelection sel = (IStructuredSelection) getSelectionComposite().getViewer()
+						.getSelection();
+
+					if (sel != null && !sel.isEmpty() && EClass.class.isInstance(sel.getFirstElement())) {
+						setErrorMessage(null);
+						setSubClass((EClass) sel.getFirstElement());
+						setPageComplete(true);
+					} else {
+						setErrorMessage(localizationService.getString(SelectSubclassAndTemplateWizard.class,
+							MessageKeys.SelectSubclassAndTemplateWizard_selectEClass));
+						setSubClass(null);
+						setPageComplete(false);
+					}
+				}
+			};
+		}
+	}
+
+	/**
+	 * Wizard page to select on template.
+	 *
+	 * @author Lucas Koehler
+	 *
+	 */
+	class TemplateSelectionPage extends SelectionPage {
+		private SelectionComposite<TableViewer> selectionComposite;
+
+		/**
+		 * @param pageName The page's unique name
+		 * @param pageTitle The title shown for this wizard page
+		 * @param pageDescription The description shown for this wizard page
+		 */
+		protected TemplateSelectionPage(String pageName, String pageTitle, String pageDescription) {
+			super(pageName, pageTitle, pageDescription);
+		}
+
+		@Override
+		protected SelectionComposite<? extends ColumnViewer> getSelectionComposite() {
+			if (selectionComposite == null) {
+				final Set<Template> templates = selectedSubClass != null
+					? getAvailableTemplates(selectedSubClass)
+					: Collections.<Template> emptySet();
+				selectionComposite = CompositeFactory.getTableSelectionComposite(templates, false);
+			}
+			return selectionComposite;
+		}
+
+		/**
+		 * Update the selection composite with the given Set of templates.
+		 *
+		 * @param availableTemplates The Set of selectable templates
+		 */
+		public void updateSelectionComposite(Set<Template> availableTemplates) {
+			getSelectionComposite().getViewer().setInput(availableTemplates);
+			setPageComplete(false);
+		}
+
+		@Override
+		protected ISelectionChangedListener getSelectionChangedListener() {
+			return new ISelectionChangedListener() {
+
+				@Override
+				public void selectionChanged(SelectionChangedEvent event) {
+					final IStructuredSelection sel = (IStructuredSelection) getSelectionComposite().getViewer()
+						.getSelection();
+
+					if (sel != null && !sel.isEmpty()) {
+						setPageComplete(true);
+					} else {
+						setPageComplete(false);
+					}
+				}
+			};
+		}
+	}
+}
diff --git a/bundles/org.eclipse.emfforms.core.services.datatemplate/src/org/eclipse/emfforms/internal/core/services/datatemplate/TemplateCreateNewModelElementStrategyProvider.java b/bundles/org.eclipse.emfforms.core.services.datatemplate/src/org/eclipse/emfforms/internal/core/services/datatemplate/TemplateCreateNewModelElementStrategyProvider.java
new file mode 100644
index 0000000..3bb849b
--- /dev/null
+++ b/bundles/org.eclipse.emfforms.core.services.datatemplate/src/org/eclipse/emfforms/internal/core/services/datatemplate/TemplateCreateNewModelElementStrategyProvider.java
@@ -0,0 +1,250 @@
+/*******************************************************************************
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * lucas - initial API and implementation
+ * Christian W. Damus - bug 529138
+ ******************************************************************************/
+package org.eclipse.emfforms.internal.core.services.datatemplate;
+
+import static org.osgi.service.component.annotations.ReferenceCardinality.MULTIPLE;
+import static org.osgi.service.component.annotations.ReferencePolicy.DYNAMIC;
+
+import java.util.LinkedHashSet;
+import java.util.Set;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.emf.ecp.common.spi.EMFUtils;
+import org.eclipse.emf.ecp.ui.view.swt.reference.CreateNewModelElementStrategy;
+import org.eclipse.emf.ecp.ui.view.swt.reference.CreateNewModelElementStrategy.Provider;
+import org.eclipse.emf.ecp.ui.view.swt.reference.EClassSelectionStrategy;
+import org.eclipse.emf.ecp.ui.view.swt.reference.ReferenceServiceCustomizationVendor;
+import org.eclipse.emf.ecp.ui.view.swt.reference.ReferenceStrategyUtil;
+import org.eclipse.emfforms.bazaar.Bazaar;
+import org.eclipse.emfforms.bazaar.Create;
+import org.eclipse.emfforms.common.Optional;
+import org.eclipse.emfforms.core.services.datatemplate.TemplateProvider;
+import org.eclipse.emfforms.datatemplate.Template;
+import org.eclipse.emfforms.spi.bazaar.BazaarUtil;
+import org.eclipse.emfforms.spi.localization.EMFFormsLocalizationService;
+import org.eclipse.jface.wizard.WizardDialog;
+import org.eclipse.swt.widgets.Display;
+import org.osgi.service.component.ComponentContext;
+import org.osgi.service.component.annotations.Activate;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Deactivate;
+import org.osgi.service.component.annotations.Reference;
+import org.osgi.service.component.annotations.ReferenceCardinality;
+
+/**
+ * Provides a strategy to the {@link org.eclipse.emf.ecp.ui.view.swt.DefaultReferenceService DefaultReferenceService}
+ * that allows creating new model elements based on a template with pre-defined values.
+ *
+ * @author Lucas Koehler
+ *
+ */
+// Ranking as it was for the TemplateReferenceService
+@Component(name = "TemplateCreateNewModelElementStrategyProvider", property = "service.ranking:Integer=10")
+public class TemplateCreateNewModelElementStrategyProvider
+	extends ReferenceServiceCustomizationVendor<CreateNewModelElementStrategy> implements Provider {
+
+	private final Set<TemplateProvider> templateProviders = new LinkedHashSet<TemplateProvider>();
+	private EMFFormsLocalizationService localizationService;
+
+	private final Bazaar<EClassSelectionStrategy> eclassSelectionStrategyBazaar = BazaarUtil.createBazaar(
+		EClassSelectionStrategy.NULL);
+	private ComponentContext context;
+
+	/**
+	 * Activates me.
+	 *
+	 * @param context my component context
+	 */
+	@Activate
+	void activate(ComponentContext context) {
+		this.context = context;
+	}
+
+	/**
+	 * Deactivates me.
+	 */
+	@Deactivate
+	void deactivate() {
+		context = null;
+	}
+
+	/**
+	 * Add an {@code EClass} selection strategy provider.
+	 *
+	 * @param provider the provider to add
+	 */
+	@Reference(cardinality = MULTIPLE, policy = DYNAMIC)
+	public void addEClassSelectionStrategyProvider(EClassSelectionStrategy.Provider provider) {
+		eclassSelectionStrategyBazaar.addVendor(provider);
+	}
+
+	/**
+	 * Remove an {@code EClass} selection strategy provider.
+	 *
+	 * @param provider the provider to remove
+	 */
+	void removeEClassSelectionStrategyProvider(EClassSelectionStrategy.Provider provider) {
+		eclassSelectionStrategyBazaar.removeVendor(provider);
+	}
+
+	/**
+	 * Register a template provider implementation.
+	 *
+	 * @param templateProvider the {@link TemplateProvider} to add
+	 */
+	@Reference(cardinality = ReferenceCardinality.MULTIPLE)
+	void registerTemplateProvider(TemplateProvider templateProvider) {
+		templateProviders.add(templateProvider);
+	}
+
+	/**
+	 * Unregister a template provider registration.
+	 *
+	 * @param templateProvider the {@link TemplateProvider} to remove
+	 */
+	void unregisterTemplateProvider(TemplateProvider templateProvider) {
+		templateProviders.remove(templateProvider);
+	}
+
+	/**
+	 * Called by the framework to set the {@link EMFFormsLocalizationService}.
+	 *
+	 * @param localizationService The {@link EMFFormsLocalizationService}
+	 */
+	@Reference
+	void setLocalizationService(EMFFormsLocalizationService localizationService) {
+		this.localizationService = localizationService;
+	}
+
+	@Override
+	protected boolean handles(EObject owner, EReference reference) {
+		for (final TemplateProvider provider : templateProviders) {
+			if (provider.canProvideTemplates(owner, reference)) {
+				return true;
+			}
+		}
+		return false;
+	}
+
+	/**
+	 * Collect a list of available templates for the given {@link EReference}.
+	 *
+	 * @param eObject the parent {@link EObject}
+	 * @param eReference the {@link EReference} to find templates for
+	 * @return list of available templates
+	 */
+	protected Set<Template> collectAvailableTemplates(EObject eObject, EReference eReference) {
+		final Set<Template> templates = new LinkedHashSet<Template>();
+		for (final TemplateProvider provider : templateProviders) {
+			if (!provider.canProvideTemplates(eObject, eReference)) {
+				continue;
+			}
+			Set<Template> provideTemplates;
+			if (provider instanceof BlankTemplateProvider) {
+				final EClassSelectionStrategy eClassSelectionStrategy = ReferenceStrategyUtil
+					.createDynamicEClassSelectionStrategy(eclassSelectionStrategyBazaar, context);
+				provideTemplates = ((BlankTemplateProvider) provider).provideTemplates(eObject, eReference,
+					eClassSelectionStrategy);
+			} else {
+				provideTemplates = provider.provideTemplates(eObject, eReference);
+			}
+			templates.addAll(provideTemplates);
+
+		}
+		return templates;
+	}
+
+	/**
+	 * Creates the {@link CreateNewModelElementStrategy}.
+	 *
+	 * @return The created {@link CreateNewModelElementStrategy}
+	 */
+	@Create
+	public CreateNewModelElementStrategy createCreateNewModelElementStrategy() {
+		final EClassSelectionStrategy eClassSelectionStrategy = ReferenceStrategyUtil
+			.createDynamicEClassSelectionStrategy(eclassSelectionStrategyBazaar, context);
+		return new Strategy(eClassSelectionStrategy);
+	}
+
+	/**
+	 * The actual {@link CreateNewModelElementStrategy strategy} that creates a new element based on a template selected
+	 * by the user.
+	 *
+	 * @author Lucas Koehler
+	 */
+	private class Strategy implements CreateNewModelElementStrategy {
+		private final EClassSelectionStrategy classSelectionStrategy;
+
+		Strategy(final EClassSelectionStrategy classSelectionStrategy) {
+			super();
+			this.classSelectionStrategy = classSelectionStrategy;
+		}
+
+		/**
+		 * {@inheritDoc}
+		 * <p>
+		 * Create the new model element based on a template.
+		 */
+		@Override
+		public Optional<EObject> createNewModelElement(EObject owner, EReference reference) {
+			final Set<Template> availableTemplates = collectAvailableTemplates(owner, reference);
+			if (availableTemplates.isEmpty()) {
+				// This should not happen because in case of no available templates, the provider should not bid during
+				// the strategy selection
+				return Optional.empty();
+			}
+
+			final Set<EClass> availableClasses = new LinkedHashSet<EClass>(
+				EMFUtils.getSubClasses(reference.getEReferenceType()));
+			final Set<EClass> subClasses = new LinkedHashSet<EClass>(
+				classSelectionStrategy.collectEClasses(owner, reference, availableClasses));
+
+			Template selected = availableTemplates.iterator().next();
+			if (availableTemplates.size() > 1) {
+				final Optional<Template> selectedElement = showSelectModelInstancesDialog(subClasses,
+					availableTemplates);
+
+				if (selectedElement.isPresent()) {
+					selected = selectedElement.get();
+				} else {
+					return Optional.empty();
+				}
+			}
+
+			return Optional.of(EcoreUtil.copy(selected.getInstance()));
+		}
+
+		/**
+		 * Show a model instance selection dialog to first select a sub class and then a fitting template.
+		 *
+		 * @param subClasses the sub classes to choose from
+		 * @param availableInstances the instances to choose from
+		 * @return the instances selected by the user
+		 */
+		protected Optional<Template> showSelectModelInstancesDialog(Set<EClass> subClasses,
+			Set<Template> availableInstances) {
+			final SelectSubclassAndTemplateWizard wizard = new SelectSubclassAndTemplateWizard(
+				localizationService.getString(TemplateCreateNewModelElementStrategyProvider.class,
+					MessageKeys.TemplateCreateNewModelElementStrategyProvider_wizardTitle),
+				subClasses, availableInstances, localizationService);
+
+			final WizardDialog wd = new WizardDialog(Display.getDefault().getActiveShell(), wizard);
+			wd.open();
+
+			return wizard.getSelectedTemplate();
+		}
+	}
+}
diff --git a/bundles/org.eclipse.emfforms.core.services.datatemplate/src/org/eclipse/emfforms/internal/core/services/datatemplate/XmiTemplateProvider.java b/bundles/org.eclipse.emfforms.core.services.datatemplate/src/org/eclipse/emfforms/internal/core/services/datatemplate/XmiTemplateProvider.java
new file mode 100644
index 0000000..c79503f
--- /dev/null
+++ b/bundles/org.eclipse.emfforms.core.services.datatemplate/src/org/eclipse/emfforms/internal/core/services/datatemplate/XmiTemplateProvider.java
@@ -0,0 +1,162 @@
+/*******************************************************************************
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * Lucas Koehler - initial API and implementation
+ * Christian W. Damus - bug 529138
+ ******************************************************************************/
+package org.eclipse.emfforms.internal.core.services.datatemplate;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URL;
+import java.util.LinkedHashMap;
+import java.util.LinkedHashSet;
+import java.util.Map;
+import java.util.Set;
+
+import org.eclipse.core.runtime.IConfigurationElement;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+import org.eclipse.emfforms.core.services.datatemplate.TemplateProvider;
+import org.eclipse.emfforms.datatemplate.Template;
+import org.eclipse.emfforms.datatemplate.TemplateCollection;
+import org.eclipse.emfforms.spi.common.report.AbstractReport;
+import org.eclipse.emfforms.spi.common.report.ReportService;
+import org.osgi.service.component.annotations.Activate;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Reference;
+
+/**
+ * Template provider that reads in templates from an extension point.
+ *
+ * @author Lucas Koehler
+ *
+ */
+@Component(name = "XmiTemplateProvider")
+public class XmiTemplateProvider implements TemplateProvider {
+
+	private static final String FILE_ATTRIBUTE = "file"; //$NON-NLS-1$
+	private static final String EXTENSION_POINT = "org.eclipse.emfforms.core.services.datatemplate.xmi"; //$NON-NLS-1$
+
+	private final Map<EClass, LinkedHashSet<Template>> templates = new LinkedHashMap<EClass, LinkedHashSet<Template>>();
+	private ReportService reportService;
+
+	/**
+	 * Sets the {@link ReportService}.
+	 *
+	 * @param reportService The {@link ReportService} to set
+	 */
+	@Reference
+	void setReportService(ReportService reportService) {
+		this.reportService = reportService;
+	}
+
+	/**
+	 * Reads the extension point on service activation.
+	 */
+	@Activate
+	void activate() {
+		readExtensionPoint();
+	}
+
+	/**
+	 * Reads in the registered templates from the extension point.
+	 */
+	void readExtensionPoint() {
+		final IConfigurationElement[] configurationElements = Platform.getExtensionRegistry()
+			.getConfigurationElementsFor(EXTENSION_POINT);
+
+		for (final IConfigurationElement configurationElement : configurationElements) {
+			try {
+				final URL resourceURL = Platform.getBundle(configurationElement.getContributor().getName())
+					.getResource(configurationElement.getAttribute(FILE_ATTRIBUTE));
+				final ResourceSet resourceSet = new ResourceSetImpl();
+				// resourceSet.getLoadOptions().putAll(LOAD_OPTIONS);
+				final Resource resource = resourceSet.createResource(URI.createURI("VIRTUAL_URI")); //$NON-NLS-1$
+				final InputStream inputStream = resourceURL.openStream();
+				try {
+					resource.load(inputStream, null);
+					final TemplateCollection templateCollection = (TemplateCollection) resource.getContents().get(0);
+					registerTemplateCollection(templateCollection);
+				} finally {
+					inputStream.close();
+				}
+			} catch (final IOException ex) {
+				reportService.report(new AbstractReport(ex, "An Exception occured while reading in a data template.")); //$NON-NLS-1$
+			}
+		}
+	}
+
+	@Override
+	public boolean canProvideTemplates(EObject owner, EReference reference) {
+		final EClass referenceType = reference.getEReferenceType();
+
+		// if we have a key for the given template we surely have at least one template
+		if (templates.containsKey(referenceType)) {
+			return true;
+		}
+
+		// otherwise we have to analyze all keys and see if our type is a super type (of at least one)
+		for (final EClass type : templates.keySet()) {
+			if (referenceType.isSuperTypeOf(type)) {
+				return true;
+			}
+		}
+		return false;
+	}
+
+	@Override
+	public Set<Template> provideTemplates(EObject owner, EReference reference) {
+		final Set<Template> matchingTemplates = new LinkedHashSet<Template>();
+		final EClass referenceType = reference.getEReferenceType();
+
+		for (final EClass type : templates.keySet()) {
+			if (!referenceType.isSuperTypeOf(type)) {
+				continue;
+			}
+			matchingTemplates.addAll(templates.get(type));
+		}
+		return matchingTemplates;
+	}
+
+	private void addToTemplateMap(EClass type, Template template) {
+		if (!templates.containsKey(type)) {
+			templates.put(type, new LinkedHashSet<Template>());
+		}
+		templates.get(type).add(template);
+	}
+
+	private void registerTemplateCollection(TemplateCollection collection) {
+		for (final Template template : collection.getTemplates()) {
+			registerTemplate(template);
+		}
+	}
+
+	/**
+	 * Register a template for its instance's type.
+	 *
+	 * @param template The template
+	 */
+	void registerTemplate(Template template) {
+		if (template.getInstance() == null) {
+			reportService.report(new AbstractReport(
+				"Ignoring template '{0}', as it does not contain a valid EObject instance", template.getName())); //$NON-NLS-1$
+			return;
+		}
+
+		final EClass type = template.getInstance().eClass();
+		addToTemplateMap(type, template);
+	}
+}
diff --git a/bundles/org.eclipse.emfforms.core.services.domainexpander.default/META-INF/MANIFEST.MF b/bundles/org.eclipse.emfforms.core.services.domainexpander.default/META-INF/MANIFEST.MF
index a213e51..3463270 100644
--- a/bundles/org.eclipse.emfforms.core.services.domainexpander.default/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emfforms.core.services.domainexpander.default/META-INF/MANIFEST.MF
@@ -2,13 +2,14 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Default Domain Expander
 Bundle-SymbolicName: org.eclipse.emfforms.core.services.domainexpander.default
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emfforms.internal.core.services.domainexpander.defaultheuristic;version="1.16.0";x-internal:=true
-Require-Bundle: org.eclipse.emfforms.common;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.common;bundle-version="[1.16.0,1.17.0)"
+Export-Package: org.eclipse.emfforms.internal.core.services.domainexpander.defaultheuristic;version="1.17.0";x-internal:=true
+Require-Bundle: org.eclipse.emfforms.common;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.common;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Import-Package: org.osgi.service.component.annotations;version="0.0.0"
 Service-Component: OSGI-INF/EMFFormsDomainExpanderDefaultHeuristic.xml,OSGI-INF/EMFFormsDomainExpanderImpl.xml
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emfforms.core.services.domainexpander.default
diff --git a/bundles/org.eclipse.emfforms.core.services.domainexpander.default/pom.xml b/bundles/org.eclipse.emfforms.core.services.domainexpander.default/pom.xml
index 8255d22..eee3aa9 100644
--- a/bundles/org.eclipse.emfforms.core.services.domainexpander.default/pom.xml
+++ b/bundles/org.eclipse.emfforms.core.services.domainexpander.default/pom.xml
@@ -7,13 +7,13 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
 
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emfforms.core.services.domainexpander.default</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 
 </project>
diff --git a/bundles/org.eclipse.emfforms.core.services.domainexpander.default/src/org/eclipse/emfforms/internal/core/services/domainexpander/defaultheuristic/EMFFormsDMRExpanderDefaultHeuristic.java b/bundles/org.eclipse.emfforms.core.services.domainexpander.default/src/org/eclipse/emfforms/internal/core/services/domainexpander/defaultheuristic/EMFFormsDMRExpanderDefaultHeuristic.java
index d8b3f7b..a4f164b 100644
--- a/bundles/org.eclipse.emfforms.core.services.domainexpander.default/src/org/eclipse/emfforms/internal/core/services/domainexpander/defaultheuristic/EMFFormsDMRExpanderDefaultHeuristic.java
+++ b/bundles/org.eclipse.emfforms.core.services.domainexpander.default/src/org/eclipse/emfforms/internal/core/services/domainexpander/defaultheuristic/EMFFormsDMRExpanderDefaultHeuristic.java
@@ -72,8 +72,7 @@
 			featurePathDMR.getDomainModelEReferencePath());
 		for (final EReference eReference : featurePathDMR.getDomainModelEReferencePath()) {
 			if (!currentResolvedEObject.eClass().getEAllReferences().contains(eReference)) {
-				throw new EMFFormsExpandingFailedException(
-					"The path defined in the given domain model reference is not compatible with the domain object because the reference requires non available references."); //$NON-NLS-1$
+				break;
 			}
 			if (eReference.isMany()) {
 				break;
diff --git a/bundles/org.eclipse.emfforms.core.services.domainexpander.index/META-INF/MANIFEST.MF b/bundles/org.eclipse.emfforms.core.services.domainexpander.index/META-INF/MANIFEST.MF
index e28e619..c494b36 100644
--- a/bundles/org.eclipse.emfforms.core.services.domainexpander.index/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emfforms.core.services.domainexpander.index/META-INF/MANIFEST.MF
@@ -2,14 +2,15 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Index DMR Expander
 Bundle-SymbolicName: org.eclipse.emfforms.core.services.domainexpander.index
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emfforms.internal.core.services.domainexpander.index;version="1.16.0";x-internal:=true
-Require-Bundle: org.eclipse.emfforms.core.services;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.indexdmr.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.common;bundle-version="[1.16.0,1.17.0)"
+Export-Package: org.eclipse.emfforms.internal.core.services.domainexpander.index;version="1.17.0";x-internal:=true
+Require-Bundle: org.eclipse.emfforms.core.services;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.indexdmr.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.common;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Import-Package: org.osgi.framework;version="[1.3.0,2.0.0)",
   org.osgi.service.component.annotations;version="[1.2.0,2.0.0)";resolution:=optional
 Service-Component: OSGI-INF/EMFFormsIndexDMRExpander.xml
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emfforms.core.services.domainexpander.index
diff --git a/bundles/org.eclipse.emfforms.core.services.domainexpander.index/pom.xml b/bundles/org.eclipse.emfforms.core.services.domainexpander.index/pom.xml
index 9a415d5..fcd7539 100644
--- a/bundles/org.eclipse.emfforms.core.services.domainexpander.index/pom.xml
+++ b/bundles/org.eclipse.emfforms.core.services.domainexpander.index/pom.xml
@@ -7,13 +7,13 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
 
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emfforms.core.services.domainexpander.index</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 
 </project>
diff --git a/bundles/org.eclipse.emfforms.core.services.domainexpander.keyattribute/META-INF/MANIFEST.MF b/bundles/org.eclipse.emfforms.core.services.domainexpander.keyattribute/META-INF/MANIFEST.MF
index 1f1227b..60d0a16 100644
--- a/bundles/org.eclipse.emfforms.core.services.domainexpander.keyattribute/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emfforms.core.services.domainexpander.keyattribute/META-INF/MANIFEST.MF
@@ -2,14 +2,15 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: KeyAttribute DMR Expander
 Bundle-SymbolicName: org.eclipse.emfforms.core.services.domainexpander.keyattribute
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emfforms.internal.core.services.domainexpander.keyattribute;version="1.16.0";x-internal:=true
-Require-Bundle: org.eclipse.emfforms.core.services;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.keyattributedmr.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.common;bundle-version="[1.16.0,1.17.0)"
+Export-Package: org.eclipse.emfforms.internal.core.services.domainexpander.keyattribute;version="1.17.0";x-internal:=true
+Require-Bundle: org.eclipse.emfforms.core.services;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.keyattributedmr.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.common;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Import-Package: org.osgi.framework;version="[1.3.0,2.0.0)",
   org.osgi.service.component.annotations;version="[1.2.0,2.0.0)";resolution:=optional
 Service-Component: OSGI-INF/EMFFormsKeyAttributeDMRExpander.xml
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emfforms.core.services.domainexpander.keyattribute
diff --git a/bundles/org.eclipse.emfforms.core.services.domainexpander.keyattribute/pom.xml b/bundles/org.eclipse.emfforms.core.services.domainexpander.keyattribute/pom.xml
index 1030192..6f1217d 100644
--- a/bundles/org.eclipse.emfforms.core.services.domainexpander.keyattribute/pom.xml
+++ b/bundles/org.eclipse.emfforms.core.services.domainexpander.keyattribute/pom.xml
@@ -7,13 +7,13 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
 
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emfforms.core.services.domainexpander.keyattribute</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 
 </project>
diff --git a/bundles/org.eclipse.emfforms.core.services.domainexpander.mapping/META-INF/MANIFEST.MF b/bundles/org.eclipse.emfforms.core.services.domainexpander.mapping/META-INF/MANIFEST.MF
index 405f404..7f4bb3b 100644
--- a/bundles/org.eclipse.emfforms.core.services.domainexpander.mapping/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emfforms.core.services.domainexpander.mapping/META-INF/MANIFEST.MF
@@ -2,14 +2,15 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Mapping DMR Expander
 Bundle-SymbolicName: org.eclipse.emfforms.core.services.domainexpander.mapping
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emfforms.internal.core.services.domainexpander.mapping;version="1.16.0";x-internal:=true
-Require-Bundle: org.eclipse.emfforms.core.services;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.mappingdmr.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.common;bundle-version="[1.16.0,1.17.0)"
+Export-Package: org.eclipse.emfforms.internal.core.services.domainexpander.mapping;version="1.17.0";x-internal:=true
+Require-Bundle: org.eclipse.emfforms.core.services;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.mappingdmr.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.common;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Import-Package: org.osgi.framework;version="[1.3.0,2.0.0)",
   org.osgi.service.component.annotations;version="[1.2.0,2.0.0)";resolution:=optional
 Service-Component: OSGI-INF/EMFFormsMappingDMRExpander.xml
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emfforms.core.services.domainexpander.mapping
diff --git a/bundles/org.eclipse.emfforms.core.services.domainexpander.mapping/pom.xml b/bundles/org.eclipse.emfforms.core.services.domainexpander.mapping/pom.xml
index b19dcab..e997207 100644
--- a/bundles/org.eclipse.emfforms.core.services.domainexpander.mapping/pom.xml
+++ b/bundles/org.eclipse.emfforms.core.services.domainexpander.mapping/pom.xml
@@ -7,13 +7,13 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
 
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emfforms.core.services.domainexpander.mapping</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 
 </project>
diff --git a/bundles/org.eclipse.emfforms.core.services.domainexpander.table/META-INF/MANIFEST.MF b/bundles/org.eclipse.emfforms.core.services.domainexpander.table/META-INF/MANIFEST.MF
index 7b3c6e9..b57a798 100644
--- a/bundles/org.eclipse.emfforms.core.services.domainexpander.table/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emfforms.core.services.domainexpander.table/META-INF/MANIFEST.MF
@@ -2,14 +2,15 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: EMFForms TableControl Domain Expander
 Bundle-SymbolicName: org.eclipse.emfforms.core.services.domainexpander.table
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emfforms.internal.core.services.domainexpander.table;version="1.16.0";x-internal:=true
-Require-Bundle: org.eclipse.emfforms.core.services;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.table.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.common;bundle-version="[1.16.0,1.17.0)"
+Export-Package: org.eclipse.emfforms.internal.core.services.domainexpander.table;version="1.17.0";x-internal:=true
+Require-Bundle: org.eclipse.emfforms.core.services;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.table.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.common;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Import-Package: org.osgi.framework;version="[1.3.0,2.0.0)",
   org.osgi.service.component.annotations;version="[1.2.0,2.0.0)";resolution:=optional
 Service-Component: OSGI-INF/EMFFormsTableDMRExpander.xml
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emfforms.core.services.domainexpander.table
diff --git a/bundles/org.eclipse.emfforms.core.services.domainexpander.table/pom.xml b/bundles/org.eclipse.emfforms.core.services.domainexpander.table/pom.xml
index 05e9b95..9c39cc4 100644
--- a/bundles/org.eclipse.emfforms.core.services.domainexpander.table/pom.xml
+++ b/bundles/org.eclipse.emfforms.core.services.domainexpander.table/pom.xml
@@ -7,13 +7,13 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
 
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emfforms.core.services.domainexpander.table</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 
 </project>
diff --git a/bundles/org.eclipse.emfforms.core.services.editsupport/META-INF/MANIFEST.MF b/bundles/org.eclipse.emfforms.core.services.editsupport/META-INF/MANIFEST.MF
index 3b005c2..c2aa3d2 100644
--- a/bundles/org.eclipse.emfforms.core.services.editsupport/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emfforms.core.services.editsupport/META-INF/MANIFEST.MF
@@ -2,20 +2,21 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: EMFForms Edit Support
 Bundle-SymbolicName: org.eclipse.emfforms.core.services.editsupport
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emfforms.internal.core.services.editsupport;version="1.16.0";x-internal:=true,
-  org.eclipse.emfforms.spi.core.services.editsupport;version="1.16.0"
+Export-Package: org.eclipse.emfforms.internal.core.services.editsupport;version="1.17.0";x-internal:=true,
+ org.eclipse.emfforms.spi.core.services.editsupport;version="1.17.0"
 Require-Bundle: org.eclipse.emf.ecore;bundle-version="[2.8.0,3.0.0)",
-  org.eclipse.emf.ecp.view.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services.emfspecificservice;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.common;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.edit;bundle-version="[2.8.0,3.0.0)",
-  org.eclipse.core.runtime;bundle-version="[3.8.0,4.0.0)",
-  org.eclipse.emfforms.core.services.emf;bundle-version="[1.16.0,1.17.0)"
+ org.eclipse.emf.ecp.view.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services.emfspecificservice;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.common;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.edit;bundle-version="[2.8.0,3.0.0)",
+ org.eclipse.core.runtime;bundle-version="[3.8.0,4.0.0)",
+ org.eclipse.emfforms.core.services.emf;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
-Import-Package: org.eclipse.emfforms.spi.common.report;version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.spi.localization;version="[1.16.0,1.17.0)"
+Import-Package: org.eclipse.emfforms.spi.common.report;version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.spi.localization;version="[1.17.0,1.18.0]"
 Service-Component: OSGI-INF/emfFormsEditSupport.xml
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emfforms.core.services.editsupport
diff --git a/bundles/org.eclipse.emfforms.core.services.editsupport/pom.xml b/bundles/org.eclipse.emfforms.core.services.editsupport/pom.xml
index 0b69d62..8a94164 100644
--- a/bundles/org.eclipse.emfforms.core.services.editsupport/pom.xml
+++ b/bundles/org.eclipse.emfforms.core.services.editsupport/pom.xml
@@ -7,7 +7,7 @@
   <parent>

     <groupId>org.eclipse.emf.ecp</groupId>

     <artifactId>ecp-bundles-parent</artifactId>

-    <version>1.16.0-SNAPSHOT</version>

+    <version>1.17.0-SNAPSHOT</version>

     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>

   </parent>

 

@@ -15,7 +15,7 @@
   <packaging>eclipse-plugin</packaging>

 

   <groupId>org.eclipse.emfforms</groupId>

-  <version>1.16.0-SNAPSHOT</version>

+  <version>1.17.0-SNAPSHOT</version>

   

   <properties>

   	<jacoco.percentage.instruction>0.4</jacoco.percentage.instruction>

diff --git a/bundles/org.eclipse.emfforms.core.services.emf/META-INF/MANIFEST.MF b/bundles/org.eclipse.emfforms.core.services.emf/META-INF/MANIFEST.MF
index c9728fd..a17fdb1 100644
--- a/bundles/org.eclipse.emfforms.core.services.emf/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emfforms.core.services.emf/META-INF/MANIFEST.MF
@@ -2,13 +2,13 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: EMFForms Core Services EMF
 Bundle-SymbolicName: org.eclipse.emfforms.core.services.emf
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emfforms.internal.core.services.databinding;version="1.16.0";x-internal:=true,
-  org.eclipse.emfforms.internal.core.services.label;version="1.16.0";x-internal:=true,
-  org.eclipse.emfforms.spi.core.services.databinding.emf;version="1.16.0"
-Require-Bundle: org.eclipse.emf.ecp.view.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.common;bundle-version="[1.16.0,1.17.0)",
+Export-Package: org.eclipse.emfforms.internal.core.services.databinding;version="1.17.0";x-internal:=true,
+  org.eclipse.emfforms.internal.core.services.label;version="1.17.0";x-internal:=true,
+  org.eclipse.emfforms.spi.core.services.databinding.emf;version="1.17.0"
+Require-Bundle: org.eclipse.emf.ecp.view.model;bundle-version="[1.17.0,1.18.0)",
+  org.eclipse.emf.ecp.common;bundle-version="[1.17.0,1.18.0)",
   org.eclipse.core.databinding.property;bundle-version="[1.3.0,2.0.0)",
   org.eclipse.emf.edit;bundle-version="[2.8.0,3.0.0)"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
@@ -17,14 +17,15 @@
   org.eclipse.core.databinding.observable.value;version="0.0.0",
   org.eclipse.core.runtime;version="0.0.0",
   org.eclipse.emf.databinding;version="0.0.0",
-  org.eclipse.emfforms.common;version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.spi.common.locale;version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.spi.common.report;version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.spi.core.services.databinding;version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.spi.core.services.databinding.emf;version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.spi.core.services.emfspecificservice;version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.spi.core.services.label;version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.spi.localization;version="[1.16.0,1.17.0)",
+  org.eclipse.emfforms.common;version="[1.17.0,1.18.0)",
+  org.eclipse.emfforms.spi.common.locale;version="[1.17.0,1.18.0)",
+  org.eclipse.emfforms.spi.common.report;version="[1.17.0,1.18.0)",
+  org.eclipse.emfforms.spi.core.services.databinding;version="[1.17.0,1.18.0)",
+  org.eclipse.emfforms.spi.core.services.databinding.emf;version="[1.17.0,1.18.0)",
+  org.eclipse.emfforms.spi.core.services.emfspecificservice;version="[1.17.0,1.18.0)",
+  org.eclipse.emfforms.spi.core.services.label;version="[1.17.0,1.18.0)",
+  org.eclipse.emfforms.spi.localization;version="[1.17.0,1.18.0)",
   org.osgi.framework;version="[1.6.0,2.0.0)"
 Service-Component: OSGI-INF/emfLabelProvider.xml, OSGI-INF/emfLabelProviderDefault.xml, OSGI-INF/databindingService.xml
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emfforms.core.services.emf
diff --git a/bundles/org.eclipse.emfforms.core.services.emf/pom.xml b/bundles/org.eclipse.emfforms.core.services.emf/pom.xml
index c99ea95..f9dcaa2 100644
--- a/bundles/org.eclipse.emfforms.core.services.emf/pom.xml
+++ b/bundles/org.eclipse.emfforms.core.services.emf/pom.xml
@@ -7,13 +7,13 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
 
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emfforms.core.services.emf</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 
 </project>
diff --git a/bundles/org.eclipse.emfforms.core.services.emfspecificservice/META-INF/MANIFEST.MF b/bundles/org.eclipse.emfforms.core.services.emfspecificservice/META-INF/MANIFEST.MF
index 1948064..d8190ea 100644
--- a/bundles/org.eclipse.emfforms.core.services.emfspecificservice/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emfforms.core.services.emfspecificservice/META-INF/MANIFEST.MF
@@ -2,11 +2,12 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: EMF Forms EMF Specific Service
 Bundle-SymbolicName: org.eclipse.emfforms.core.services.emfspecificservice
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emfforms.internal.core.services.emfspecificservice;version="1.16.0";x-internal:=true,
- org.eclipse.emfforms.spi.core.services.emfspecificservice;version="1.16.0"
+Export-Package: org.eclipse.emfforms.internal.core.services.emfspecificservice;version="1.17.0";x-internal:=true,
+ org.eclipse.emfforms.spi.core.services.emfspecificservice;version="1.17.0"
 Require-Bundle: org.eclipse.emf.edit;bundle-version="[2.8.0,3.0.0)"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Service-Component: OSGI-INF/emfSpecificService.xml
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emfforms.core.services.emfspecificservice
diff --git a/bundles/org.eclipse.emfforms.core.services.emfspecificservice/pom.xml b/bundles/org.eclipse.emfforms.core.services.emfspecificservice/pom.xml
index 1785d72..8215375 100644
--- a/bundles/org.eclipse.emfforms.core.services.emfspecificservice/pom.xml
+++ b/bundles/org.eclipse.emfforms.core.services.emfspecificservice/pom.xml
@@ -7,7 +7,7 @@
   <parent>

     <groupId>org.eclipse.emf.ecp</groupId>

     <artifactId>ecp-bundles-parent</artifactId>

-    <version>1.16.0-SNAPSHOT</version>

+    <version>1.17.0-SNAPSHOT</version>

     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>

   </parent>

 

@@ -15,5 +15,5 @@
   <packaging>eclipse-plugin</packaging>

 

   <groupId>org.eclipse.emf.ecp</groupId>

-  <version>1.16.0-SNAPSHOT</version>

+  <version>1.17.0-SNAPSHOT</version>

 </project>

diff --git a/bundles/org.eclipse.emfforms.core.services.legacy/META-INF/MANIFEST.MF b/bundles/org.eclipse.emfforms.core.services.legacy/META-INF/MANIFEST.MF
index 8a40271..4c4b47d 100644
--- a/bundles/org.eclipse.emfforms.core.services.legacy/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emfforms.core.services.legacy/META-INF/MANIFEST.MF
@@ -2,16 +2,17 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: EMFForms Core Services Legacy
 Bundle-SymbolicName: org.eclipse.emfforms.core.services.legacy;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emfforms.internal.core.services.legacy;version="1.16.0";x-internal:=true
+Export-Package: org.eclipse.emfforms.internal.core.services.legacy;version="1.17.0";x-internal:=true
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.10.0,4.0.0)",
-  org.eclipse.emf.ecp.view.context;bundle-version="[1.16.0,1.17.0)"
+ org.eclipse.emf.ecp.view.context;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
-Import-Package: org.eclipse.emf.ecp.view.spi.context;version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.spi.model;version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.spi.common.report;version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.spi.core.services.view;version="[1.16.0,1.17.0)",
-  org.osgi.service.component.annotations;version="[1.1.0,2.0.0)";resolution:=optional
+Import-Package: org.eclipse.emf.ecp.view.spi.context;version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.spi.model;version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.spi.common.report;version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.spi.core.services.view;version="[1.17.0,1.18.0]",
+ org.osgi.service.component.annotations;version="[1.1.0,2.0.0)";resolution:=optional
 Service-Component: OSGI-INF/org.eclipse.emfforms.internal.core.services.legacy.EMFFormsLegacyServicesManagerImpl.xml
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emfforms.core.services.legacy
diff --git a/bundles/org.eclipse.emfforms.core.services.legacy/pom.xml b/bundles/org.eclipse.emfforms.core.services.legacy/pom.xml
index e92f6cc..536caee 100644
--- a/bundles/org.eclipse.emfforms.core.services.legacy/pom.xml
+++ b/bundles/org.eclipse.emfforms.core.services.legacy/pom.xml
@@ -7,7 +7,7 @@
   <parent>

     <groupId>org.eclipse.emf.ecp</groupId>

     <artifactId>ecp-bundles-parent</artifactId>

-    <version>1.16.0-SNAPSHOT</version>

+    <version>1.17.0-SNAPSHOT</version>

     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>

   </parent>

 

@@ -15,5 +15,5 @@
   <packaging>eclipse-plugin</packaging>

 

   <groupId>org.eclipse.emf.ecp</groupId>

-  <version>1.16.0-SNAPSHOT</version>

+  <version>1.17.0-SNAPSHOT</version>

 </project>

diff --git a/bundles/org.eclipse.emfforms.core.services.locale.default/META-INF/MANIFEST.MF b/bundles/org.eclipse.emfforms.core.services.locale.default/META-INF/MANIFEST.MF
index bcefc73..20daad5 100644
--- a/bundles/org.eclipse.emfforms.core.services.locale.default/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emfforms.core.services.locale.default/META-INF/MANIFEST.MF
@@ -2,11 +2,12 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: EMFForms Default Locale Provider
 Bundle-SymbolicName: org.eclipse.emfforms.core.services.locale.default
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emfforms.internal.core.services.locale.defaultlocale;version="1.16.0"
-Require-Bundle: org.eclipse.emfforms.core.services;bundle-version="[1.16.0,1.17.0)"
+Export-Package: org.eclipse.emfforms.internal.core.services.locale.defaultlocale;version="1.17.0"
+Require-Bundle: org.eclipse.emfforms.core.services;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
-Import-Package: org.eclipse.emfforms.spi.common.locale;version="[1.16.0,1.17.0)"
+Import-Package: org.eclipse.emfforms.spi.common.locale;version="[1.17.0,1.18.0]"
 Service-Component: OSGI-INF/defaultLocalizationService.xml
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emfforms.core.services.locale.default
diff --git a/bundles/org.eclipse.emfforms.core.services.locale.default/pom.xml b/bundles/org.eclipse.emfforms.core.services.locale.default/pom.xml
index d6776e6..f130480 100644
--- a/bundles/org.eclipse.emfforms.core.services.locale.default/pom.xml
+++ b/bundles/org.eclipse.emfforms.core.services.locale.default/pom.xml
@@ -7,13 +7,13 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
 
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emfforms.core.services.locale.default</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 
 </project>
diff --git a/bundles/org.eclipse.emfforms.core.services.mappingprovider.default/META-INF/MANIFEST.MF b/bundles/org.eclipse.emfforms.core.services.mappingprovider.default/META-INF/MANIFEST.MF
index 0cd758f..98e98d2 100644
--- a/bundles/org.eclipse.emfforms.core.services.mappingprovider.default/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emfforms.core.services.mappingprovider.default/META-INF/MANIFEST.MF
@@ -2,13 +2,14 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: EMFForms Mapping Provider Default Heuristic
 Bundle-SymbolicName: org.eclipse.emfforms.core.services.mappingprovider.default
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
 Export-Package: org.eclipse.emfforms.internal.core.services.mappingprovider.defaultheuristic;version="1.7.0";x-internal:=true
-Require-Bundle: org.eclipse.emfforms.core.services;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.common;bundle-version="[1.16.0,1.17.0)"
+Require-Bundle: org.eclipse.emfforms.core.services;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.common;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
-Import-Package: org.eclipse.emfforms.spi.core.services.databinding.emf;version="[1.16.0,1.17.0)",
-  org.osgi.service.component.annotations;version="0.0.0"
+Import-Package: org.eclipse.emfforms.spi.core.services.databinding.emf;version="[1.17.0,1.18.0]",
+ org.osgi.service.component.annotations;version="0.0.0"
 Service-Component: OSGI-INF/EMFFormsMappingProviderDefaultHeuristic.xml
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emfforms.core.services.mappingprovider.default
diff --git a/bundles/org.eclipse.emfforms.core.services.mappingprovider.default/pom.xml b/bundles/org.eclipse.emfforms.core.services.mappingprovider.default/pom.xml
index 8958e2b..958b75c 100644
--- a/bundles/org.eclipse.emfforms.core.services.mappingprovider.default/pom.xml
+++ b/bundles/org.eclipse.emfforms.core.services.mappingprovider.default/pom.xml
@@ -7,13 +7,13 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
 
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emfforms.core.services.mappingprovider.default</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 
 </project>
diff --git a/bundles/org.eclipse.emfforms.core.services.mappingprovider.table/META-INF/MANIFEST.MF b/bundles/org.eclipse.emfforms.core.services.mappingprovider.table/META-INF/MANIFEST.MF
index c12929a..bf6acd2 100644
--- a/bundles/org.eclipse.emfforms.core.services.mappingprovider.table/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emfforms.core.services.mappingprovider.table/META-INF/MANIFEST.MF
@@ -2,16 +2,17 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: EMFForms Mapping Provider Table Control
 Bundle-SymbolicName: org.eclipse.emfforms.core.services.mappingprovider.table
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
 Export-Package: org.eclipse.emfforms.internal.core.services.mappingprovider.table;version="1.7.0";x-internal:=true
-Require-Bundle: org.eclipse.emf.ecp.common;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.table.model;bundle-version="[1.16.0,1.17.0)"
+Require-Bundle: org.eclipse.emf.ecp.common;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.table.model;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
-Import-Package: org.eclipse.emf.ecp.view.spi.provider;version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.spi.core.services.databinding.emf;version="[1.16.0,1.17.0)",
-  org.osgi.framework;version="[1.3.0,2.0.0)",
-  org.osgi.service.component.annotations;version="[1.2.0,2.0.0)";resolution:=optional
+Import-Package: org.eclipse.emf.ecp.view.spi.provider;version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.spi.core.services.databinding.emf;version="[1.17.0,1.18.0]",
+ org.osgi.framework;version="[1.3.0,2.0.0)",
+ org.osgi.service.component.annotations;version="[1.2.0,2.0.0)";resolution:=optional
 Service-Component: OSGI-INF/EMFFormsMappingProviderTable.xml
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emfforms.core.services.mappingprovider.table
diff --git a/bundles/org.eclipse.emfforms.core.services.mappingprovider.table/pom.xml b/bundles/org.eclipse.emfforms.core.services.mappingprovider.table/pom.xml
index e3a2820..6d4275c 100644
--- a/bundles/org.eclipse.emfforms.core.services.mappingprovider.table/pom.xml
+++ b/bundles/org.eclipse.emfforms.core.services.mappingprovider.table/pom.xml
@@ -7,13 +7,13 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
 
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emfforms.core.services.mappingprovider.table</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 
 </project>
diff --git a/bundles/org.eclipse.emfforms.core.services.mappingprovider.table/src/org/eclipse/emfforms/internal/core/services/mappingprovider/table/EMFFormsMappingProviderTable.java b/bundles/org.eclipse.emfforms.core.services.mappingprovider.table/src/org/eclipse/emfforms/internal/core/services/mappingprovider/table/EMFFormsMappingProviderTable.java
index d9a4985..9212a8a 100644
--- a/bundles/org.eclipse.emfforms.core.services.mappingprovider.table/src/org/eclipse/emfforms/internal/core/services/mappingprovider/table/EMFFormsMappingProviderTable.java
+++ b/bundles/org.eclipse.emfforms.core.services.mappingprovider.table/src/org/eclipse/emfforms/internal/core/services/mappingprovider/table/EMFFormsMappingProviderTable.java
@@ -94,7 +94,8 @@
 					final Setting columnSetting = emfFormsDatabinding.getSetting(columnDMR, eObject);
 					settingsMap.add(UniqueSetting.createSetting(columnSetting));
 				} catch (final DatabindingFailedException ex) {
-					reportService.report(new DatabindingFailedReport(ex));
+					// ignoring this for now, as we explicitly allow abstract types (i.e. within tables)
+					// reportService.report(new DatabindingFailedReport(ex));
 				}
 			}
 		}
diff --git a/bundles/org.eclipse.emfforms.core.services.structuralchange.default/META-INF/MANIFEST.MF b/bundles/org.eclipse.emfforms.core.services.structuralchange.default/META-INF/MANIFEST.MF
index a176088..085af10 100644
--- a/bundles/org.eclipse.emfforms.core.services.structuralchange.default/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emfforms.core.services.structuralchange.default/META-INF/MANIFEST.MF
@@ -2,12 +2,13 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: EMFForms Structural Change Tester Default Heuristic
 Bundle-SymbolicName: org.eclipse.emfforms.core.services.structuralchange.default
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
 Export-Package: org.eclipse.emfforms.internal.core.services.structuralchange.defaultheuristic;version="1.7.0";x-friends:="org.eclipse.emfforms.core.services.structuralchange.table"
-Require-Bundle: org.eclipse.emfforms.core.services;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.common;bundle-version="[1.16.0,1.17.0)"
+Require-Bundle: org.eclipse.emfforms.core.services;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.common;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Import-Package: org.osgi.service.component.annotations;version="0.0.0"
 Service-Component: OSGI-INF/StructuralChangeTesterDefault.xml
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emfforms.core.services.structuralchange.default
diff --git a/bundles/org.eclipse.emfforms.core.services.structuralchange.default/pom.xml b/bundles/org.eclipse.emfforms.core.services.structuralchange.default/pom.xml
index d2fccf1..9875064 100644
--- a/bundles/org.eclipse.emfforms.core.services.structuralchange.default/pom.xml
+++ b/bundles/org.eclipse.emfforms.core.services.structuralchange.default/pom.xml
@@ -7,13 +7,13 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
 
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emfforms.core.services.structuralchange.default</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 
 </project>
diff --git a/bundles/org.eclipse.emfforms.core.services.structuralchange.index/META-INF/MANIFEST.MF b/bundles/org.eclipse.emfforms.core.services.structuralchange.index/META-INF/MANIFEST.MF
index 5eb3992..4d4c425 100644
--- a/bundles/org.eclipse.emfforms.core.services.structuralchange.index/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emfforms.core.services.structuralchange.index/META-INF/MANIFEST.MF
@@ -2,17 +2,18 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: EMFForms StructuralChange Index
 Bundle-SymbolicName: org.eclipse.emfforms.core.services.structuralchange.index
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emfforms.internal.core.services.structuralchange.index;version="1.16.0";x-internal:=true
+Export-Package: org.eclipse.emfforms.internal.core.services.structuralchange.index;version="1.17.0";x-internal:=true
 Require-Bundle: org.eclipse.emf.ecore;bundle-version="[2.7.0,3.0.0)",
-  org.eclipse.emf.ecp.view.indexdmr.model;bundle-version="[1.16.0,1.17.0)"
+ org.eclipse.emf.ecp.view.indexdmr.model;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
-Import-Package: org.eclipse.emf.ecp.common.spi.asserts;version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.spi.core.services.databinding;version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.spi.core.services.databinding.emf;version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.spi.core.services.structuralchange;version="[1.16.0,1.17.0)",
-  org.osgi.framework;version="[1.3.0,2.0.0)",
-  org.osgi.service.component.annotations;version="[1.2.0,2.0.0)";resolution:=optional
+Import-Package: org.eclipse.emf.ecp.common.spi.asserts;version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.spi.core.services.databinding;version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.spi.core.services.databinding.emf;version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.spi.core.services.structuralchange;version="[1.17.0,1.18.0]",
+ org.osgi.framework;version="[1.3.0,2.0.0)",
+ org.osgi.service.component.annotations;version="[1.2.0,2.0.0)";resolution:=optional
 Service-Component: OSGI-INF/org.eclipse.emfforms.internal.core.services.structuralchange.index.StructuralChangeTesterIndex.xml
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emfforms.core.services.structuralchange.index
diff --git a/bundles/org.eclipse.emfforms.core.services.structuralchange.index/pom.xml b/bundles/org.eclipse.emfforms.core.services.structuralchange.index/pom.xml
index 79823b9..bacd3c6 100644
--- a/bundles/org.eclipse.emfforms.core.services.structuralchange.index/pom.xml
+++ b/bundles/org.eclipse.emfforms.core.services.structuralchange.index/pom.xml
@@ -7,13 +7,13 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
 
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emfforms.core.services.structuralchange.index</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 
 </project>
diff --git a/bundles/org.eclipse.emfforms.core.services.structuralchange.keyattribute/META-INF/MANIFEST.MF b/bundles/org.eclipse.emfforms.core.services.structuralchange.keyattribute/META-INF/MANIFEST.MF
index 52f006c..223fba0 100644
--- a/bundles/org.eclipse.emfforms.core.services.structuralchange.keyattribute/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emfforms.core.services.structuralchange.keyattribute/META-INF/MANIFEST.MF
@@ -2,15 +2,16 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: KeyAttribute Structural Change Tester
 Bundle-SymbolicName: org.eclipse.emfforms.core.services.structuralchange.keyattribute
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emfforms.internal.core.services.structuralchange.keyattribute;version="1.16.0";x-internal:=true
-Require-Bundle: org.eclipse.emfforms.core.services;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.common;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.keyattributedmr.model;bundle-version="[1.16.0,1.17.0)"
+Export-Package: org.eclipse.emfforms.internal.core.services.structuralchange.keyattribute;version="1.17.0";x-internal:=true
+Require-Bundle: org.eclipse.emfforms.core.services;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.common;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.keyattributedmr.model;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
-Import-Package: org.eclipse.emfforms.spi.core.services.databinding.emf;version="[1.16.0,1.17.0)",
-  org.osgi.framework;version="[1.3.0,2.0.0)",
-  org.osgi.service.component.annotations;version="[1.2.0,2.0.0)";resolution:=optional
+Import-Package: org.eclipse.emfforms.spi.core.services.databinding.emf;version="[1.17.0,1.18.0]",
+ org.osgi.framework;version="[1.3.0,2.0.0)",
+ org.osgi.service.component.annotations;version="[1.2.0,2.0.0)";resolution:=optional
 Service-Component: OSGI-INF/StructuralChangeTesterKeyAttribute.xml
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emfforms.core.services.structuralchange.keyattribute
diff --git a/bundles/org.eclipse.emfforms.core.services.structuralchange.keyattribute/pom.xml b/bundles/org.eclipse.emfforms.core.services.structuralchange.keyattribute/pom.xml
index db482d1..83a1db8 100644
--- a/bundles/org.eclipse.emfforms.core.services.structuralchange.keyattribute/pom.xml
+++ b/bundles/org.eclipse.emfforms.core.services.structuralchange.keyattribute/pom.xml
@@ -7,13 +7,13 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
 
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emfforms.core.services.structuralchange.keyattribute</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 
 </project>
diff --git a/bundles/org.eclipse.emfforms.core.services.structuralchange.mapping/META-INF/MANIFEST.MF b/bundles/org.eclipse.emfforms.core.services.structuralchange.mapping/META-INF/MANIFEST.MF
index 71b7362..2ede394 100644
--- a/bundles/org.eclipse.emfforms.core.services.structuralchange.mapping/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emfforms.core.services.structuralchange.mapping/META-INF/MANIFEST.MF
@@ -2,15 +2,16 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: EMFForms StructuralChange Mapping
 Bundle-SymbolicName: org.eclipse.emfforms.core.services.structuralchange.mapping
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emfforms.internal.core.services.structuralchange.mapping;version="1.16.0";x-internal:=true
+Export-Package: org.eclipse.emfforms.internal.core.services.structuralchange.mapping;version="1.17.0";x-internal:=true
 Require-Bundle: org.eclipse.emf.ecore;bundle-version="[2.7.0,3.0.0)",
-  org.eclipse.emf.ecp.view.mappingdmr.model;bundle-version="[1.16.0,1.17.0)"
+ org.eclipse.emf.ecp.view.mappingdmr.model;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
-Import-Package: org.eclipse.emf.ecp.common.spi.asserts;version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.spi.core.services.structuralchange;version="[1.16.0,1.17.0)",
-  org.osgi.framework;version="[1.3.0,2.0.0)",
-  org.osgi.service.component.annotations;version="[1.2.0,2.0.0)";resolution:=optional
+Import-Package: org.eclipse.emf.ecp.common.spi.asserts;version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.spi.core.services.structuralchange;version="[1.17.0,1.18.0]",
+ org.osgi.framework;version="[1.3.0,2.0.0)",
+ org.osgi.service.component.annotations;version="[1.2.0,2.0.0)";resolution:=optional
 Service-Component: OSGI-INF/org.eclipse.emfforms.internal.core.services.structuralchange.mapping.StructuralChangeTesterMapping.xml
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emfforms.core.services.structuralchange.mapping
diff --git a/bundles/org.eclipse.emfforms.core.services.structuralchange.mapping/pom.xml b/bundles/org.eclipse.emfforms.core.services.structuralchange.mapping/pom.xml
index b9165b9..63a78c9 100644
--- a/bundles/org.eclipse.emfforms.core.services.structuralchange.mapping/pom.xml
+++ b/bundles/org.eclipse.emfforms.core.services.structuralchange.mapping/pom.xml
@@ -7,13 +7,13 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
 
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emfforms.core.services.structuralchange.mapping</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 
 </project>
diff --git a/bundles/org.eclipse.emfforms.core.services.structuralchange.table/META-INF/MANIFEST.MF b/bundles/org.eclipse.emfforms.core.services.structuralchange.table/META-INF/MANIFEST.MF
index 80839f6..f57ed5d 100644
--- a/bundles/org.eclipse.emfforms.core.services.structuralchange.table/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emfforms.core.services.structuralchange.table/META-INF/MANIFEST.MF
@@ -2,15 +2,16 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: EMFForms Structural Change Tester Table
 Bundle-SymbolicName: org.eclipse.emfforms.core.services.structuralchange.table
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
 Export-Package: org.eclipse.emfforms.internal.core.services.structuralchange.table;version="1.7.0";x-internal:=true
-Require-Bundle: org.eclipse.emf.ecp.common;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.table.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services.structuralchange.default;bundle-version="[1.16.0,1.17.0)"
+Require-Bundle: org.eclipse.emf.ecp.common;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.table.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services.structuralchange.default;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Import-Package: org.osgi.framework;version="[1.3.0,2.0.0)",
   org.osgi.service.component.annotations;version="[1.2.0,2.0.0)";resolution:=optional
 Service-Component: OSGI-INF/StructuralChangeTesterTable.xml
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emfforms.core.services.structuralchange.table
diff --git a/bundles/org.eclipse.emfforms.core.services.structuralchange.table/pom.xml b/bundles/org.eclipse.emfforms.core.services.structuralchange.table/pom.xml
index 3fe4544..d4e88df 100644
--- a/bundles/org.eclipse.emfforms.core.services.structuralchange.table/pom.xml
+++ b/bundles/org.eclipse.emfforms.core.services.structuralchange.table/pom.xml
@@ -7,13 +7,13 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
 
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emfforms.core.services.structuralchange.table</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 
   <properties>
diff --git a/bundles/org.eclipse.emfforms.core.services.structuralchange/META-INF/MANIFEST.MF b/bundles/org.eclipse.emfforms.core.services.structuralchange/META-INF/MANIFEST.MF
index 6469215..59ad453 100644
--- a/bundles/org.eclipse.emfforms.core.services.structuralchange/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emfforms.core.services.structuralchange/META-INF/MANIFEST.MF
@@ -2,11 +2,12 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: EMFForms Structural Change Tester
 Bundle-SymbolicName: org.eclipse.emfforms.core.services.structuralchange
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
 Export-Package: org.eclipse.emfforms.internal.core.services.structuralchange;version="1.7.0";x-internal:=true
-Require-Bundle: org.eclipse.emfforms.core.services;bundle-version="[1.16.0,1.17.0)"
+Require-Bundle: org.eclipse.emfforms.core.services;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Import-Package: org.osgi.service.component.annotations;version="0.0.0"
 Service-Component: OSGI-INF/EMFFormsStructuralChangeTesterImpl.xml
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emfforms.core.services.structuralchange
diff --git a/bundles/org.eclipse.emfforms.core.services.structuralchange/pom.xml b/bundles/org.eclipse.emfforms.core.services.structuralchange/pom.xml
index 1691ebc..2939e29 100644
--- a/bundles/org.eclipse.emfforms.core.services.structuralchange/pom.xml
+++ b/bundles/org.eclipse.emfforms.core.services.structuralchange/pom.xml
@@ -7,13 +7,13 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
 
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emfforms.core.services.structuralchange</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 
 </project>
diff --git a/bundles/org.eclipse.emfforms.core.services/META-INF/MANIFEST.MF b/bundles/org.eclipse.emfforms.core.services/META-INF/MANIFEST.MF
index ce4ca66..9d732db 100644
--- a/bundles/org.eclipse.emfforms.core.services/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emfforms.core.services/META-INF/MANIFEST.MF
@@ -2,32 +2,33 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: EMFForms Core Services
 Bundle-SymbolicName: org.eclipse.emfforms.core.services
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emfforms.internal.core.services.controlmapper;version="1.16.0";x-internal:=true,
-  org.eclipse.emfforms.internal.core.services.mappingprovider;version="1.16.0";x-internal:=true,
-  org.eclipse.emfforms.internal.core.services.scoped;version="1.16.0";x-internal:=true,
-  org.eclipse.emfforms.spi.core.services.controlmapper;version="1.16.0",
-  org.eclipse.emfforms.spi.core.services.databinding;version="1.16.0",
-  org.eclipse.emfforms.spi.core.services.domainexpander;version="1.16.0",
-  org.eclipse.emfforms.spi.core.services.label;version="1.16.0",
-  org.eclipse.emfforms.spi.core.services.mappingprovider;version="1.16.0",
-  org.eclipse.emfforms.spi.core.services.structuralchange;version="1.16.0",
-  org.eclipse.emfforms.spi.core.services.view;version="1.16.0"
-Require-Bundle: org.eclipse.emf.ecp.view.model;bundle-version="[1.16.0,1.17.0)";visibility:=reexport,
-  org.eclipse.core.databinding.observable;bundle-version="[1.3.0,2.0.0)";visibility:=reexport,
-  org.eclipse.emfforms.common;bundle-version="[1.16.0,1.17.0)";visibility:=reexport,
-  org.eclipse.core.databinding.property;bundle-version="[1.3.0,2.0.0)";visibility:=reexport,
-  org.eclipse.emf.ecore;bundle-version="[2.9.0,3.0.0)",
-  org.eclipse.emf.ecp.common;bundle-version="[1.16.0,1.17.0)"
+Export-Package: org.eclipse.emfforms.internal.core.services.controlmapper;version="1.17.0";x-internal:=true,
+ org.eclipse.emfforms.internal.core.services.mappingprovider;version="1.17.0";x-internal:=true,
+ org.eclipse.emfforms.internal.core.services.scoped;version="1.17.0";x-internal:=true,
+ org.eclipse.emfforms.spi.core.services.controlmapper;version="1.17.0",
+ org.eclipse.emfforms.spi.core.services.databinding;version="1.17.0",
+ org.eclipse.emfforms.spi.core.services.domainexpander;version="1.17.0",
+ org.eclipse.emfforms.spi.core.services.label;version="1.17.0",
+ org.eclipse.emfforms.spi.core.services.mappingprovider;version="1.17.0",
+ org.eclipse.emfforms.spi.core.services.structuralchange;version="1.17.0",
+ org.eclipse.emfforms.spi.core.services.view;version="1.17.0"
+Require-Bundle: org.eclipse.emf.ecp.view.model;bundle-version="[1.17.0,1.18.0]";visibility:=reexport,
+ org.eclipse.core.databinding.observable;bundle-version="[1.3.0,2.0.0)";visibility:=reexport,
+ org.eclipse.emfforms.common;bundle-version="[1.17.0,1.18.0]";visibility:=reexport,
+ org.eclipse.core.databinding.property;bundle-version="[1.3.0,2.0.0)";visibility:=reexport,
+ org.eclipse.emf.ecore;bundle-version="[2.9.0,3.0.0)",
+ org.eclipse.emf.ecp.common;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Import-Package: org.eclipse.core.databinding.observable.list;version="0.0.0",
-  org.eclipse.core.databinding.observable.value;version="0.0.0",
-  org.eclipse.core.databinding.property.list;version="0.0.0",
-  org.eclipse.core.databinding.property.value;version="0.0.0",
-  org.eclipse.emf.ecp.view.spi.model;version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.spi.common.report;version="[1.16.0,1.17.0)",
-  org.osgi.framework;version="1.8.0",
-  org.osgi.service.component.annotations;version="[1.0.0,2.0.0)";resolution:=optional
+ org.eclipse.core.databinding.observable.value;version="0.0.0",
+ org.eclipse.core.databinding.property.list;version="0.0.0",
+ org.eclipse.core.databinding.property.value;version="0.0.0",
+ org.eclipse.emf.ecp.view.spi.model;version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.spi.common.report;version="[1.17.0,1.18.0]",
+ org.osgi.framework;version="1.8.0",
+ org.osgi.service.component.annotations;version="[1.0.0,2.0.0)";resolution:=optional
 Service-Component: OSGI-INF/org.eclipse.emfforms.internal.core.services.controlmapper.SettingToControlMapFactoryImpl.xml,OSGI-INF/org.eclipse.emfforms.internal.core.services.mappingprovider.EMFFormsMappingProviderManagerImpl.xml,OSGI-INF/org.eclipse.emfforms.internal.core.services.scoped.EMFFormsViewServiceManagerImpl.xml
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emfforms.core.services
diff --git a/bundles/org.eclipse.emfforms.core.services/pom.xml b/bundles/org.eclipse.emfforms.core.services/pom.xml
index b5a73ab..50bc8d7 100644
--- a/bundles/org.eclipse.emfforms.core.services/pom.xml
+++ b/bundles/org.eclipse.emfforms.core.services/pom.xml
@@ -7,13 +7,13 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
 
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emfforms.core.services</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 
 </project>
diff --git a/bundles/org.eclipse.emfforms.core.services/src/org/eclipse/emfforms/internal/core/services/controlmapper/SettingToControlMapperImpl.java b/bundles/org.eclipse.emfforms.core.services/src/org/eclipse/emfforms/internal/core/services/controlmapper/SettingToControlMapperImpl.java
index 19a1ac2..c21dccd 100644
--- a/bundles/org.eclipse.emfforms.core.services/src/org/eclipse/emfforms/internal/core/services/controlmapper/SettingToControlMapperImpl.java
+++ b/bundles/org.eclipse.emfforms.core.services/src/org/eclipse/emfforms/internal/core/services/controlmapper/SettingToControlMapperImpl.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2011-2015 EclipseSource Muenchen GmbH and others.
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH and others.
  *
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
@@ -8,13 +8,18 @@
  *
  * Contributors:
  * Lucas Koehler- initial API and implementation
+ * Christian W. Damus - bug 533522
  ******************************************************************************/
 package org.eclipse.emfforms.internal.core.services.controlmapper;
 
+import java.util.AbstractSet;
+import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
+import java.util.Iterator;
 import java.util.LinkedHashMap;
 import java.util.LinkedHashSet;
+import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
@@ -98,8 +103,8 @@
 	/**
 	 * A mapping between settings and controls.
 	 */
-	private final Map<UniqueSetting, Set<VElement>> settingToControlMap = new LinkedHashMap<UniqueSetting, Set<VElement>>();
-	private final Map<VElement, Set<UniqueSetting>> controlToSettingMap = new LinkedHashMap<VElement, Set<UniqueSetting>>();
+	private final Map<UniqueSetting, List<VElement>> settingToControlMap = new LinkedHashMap<UniqueSetting, List<VElement>>();
+	private final Map<VElement, List<UniqueSetting>> controlToSettingMap = new LinkedHashMap<VElement, List<UniqueSetting>>();
 	private final EMFFormsMappingProviderManager mappingManager;
 	private final Map<VControl, EMFFormsViewContext> controlContextMap = new LinkedHashMap<VControl, EMFFormsViewContext>();
 	private final Map<EMFFormsViewContext, VElement> contextParentMap = new LinkedHashMap<EMFFormsViewContext, VElement>();
@@ -144,7 +149,7 @@
 	@Override
 	public Set<VElement> getControlsFor(UniqueSetting setting) {
 		final Set<VElement> elements = new LinkedHashSet<VElement>();
-		final Set<VElement> currentControls = settingToControlMap.get(setting);
+		final List<VElement> currentControls = settingToControlMap.get(setting);
 		final Set<VControl> controls = new LinkedHashSet<VControl>();
 		final Set<VElement> validParents = new LinkedHashSet<VElement>();
 		if (currentControls != null) {
@@ -188,12 +193,15 @@
 		final Set<UniqueSetting> map = mappingManager.getAllSettingsFor(vControl.getDomainModelReference(),
 			controlContext == null ? viewModelContext.getDomainModel() : controlContext.getDomainModel());
 		if (!controlToSettingMap.containsKey(vControl)) {
-			controlToSettingMap.put(vControl, new LinkedHashSet<UniqueSetting>());
+			// We never add duplicate settings so don't need the overhead of a set (implemented by a map)
+			controlToSettingMap.put(vControl, new ArrayList<UniqueSetting>(map));
+		} else {
+			controlToSettingMap.get(vControl).addAll(map);
 		}
-		controlToSettingMap.get(vControl).addAll(map);
 		for (final UniqueSetting setting : map) {
 			if (!settingToControlMap.containsKey(setting)) {
-				settingToControlMap.put(setting, new LinkedHashSet<VElement>());
+				// There is almost always exactly one control
+				settingToControlMap.put(setting, new ArrayList<VElement>(1));
 				handleAddForEObjectMapping(setting);
 			}
 			settingToControlMap.get(setting).add(vControl);
@@ -215,8 +223,8 @@
 		if (controlToSettingMap.containsKey(vControl)) {
 			final Set<UniqueSetting> keysWithEmptySets = new LinkedHashSet<UniqueSetting>();
 			for (final UniqueSetting setting : controlToSettingMap.get(vControl)) {
-				final Set<VElement> controlSet = settingToControlMap.get(setting);
-				controlSet.remove(vControl);
+				final List<VElement> controlSet = settingToControlMap.get(setting);
+				controlSet.remove(vControl); // We never repeat controls in this list
 				if (controlSet.isEmpty()) {
 					keysWithEmptySets.add(setting);
 				}
@@ -337,21 +345,51 @@
 			return;
 		}
 		childContext.unregisterViewChangeListener(viewModelChangeListener);
-		contextParentMap.remove(childContext);
 		final ViewModelListener listener = contextListenerMap.remove(childContext);
 		listener.dispose();
+
 		final TreeIterator<EObject> eAllContents = childContext.getViewModel().eAllContents();
 		while (eAllContents.hasNext()) {
 			final EObject next = eAllContents.next();
 			if (VControl.class.isInstance(next)) {
-				vControlRemoved((VControl) next);
-				controlContextMap.remove(next);
+				final VControl controlToRemove = (VControl) next;
+				vControlParentsRemoved(childContext, controlToRemove);
+				vControlRemoved(controlToRemove);
+				controlContextMap.remove(controlToRemove);
 			}
 		}
+		contextParentMap.remove(childContext);
 		childContext.unregisterEMFFormsContextListener(this);
 	}
 
 	/**
+	 * Get all settings associated with the given control to remove.
+	 * For every setting, remove its mapping to any parent element of the given child context.
+	 * This is necessary when the child context is removed from this setting to control mapper in order to avoid
+	 * mappings to deleted settings after a child context was removed.
+	 *
+	 * @param childContext The child {@link EMFFormsViewContext} that will be removed from this setting to control
+	 *            mapper
+	 * @param controlToRemove The {@link VControl} that will be removed from this setting to control mapper
+	 */
+	private void vControlParentsRemoved(EMFFormsViewContext childContext, VControl controlToRemove) {
+		if (childContext == null) {
+			return;
+		}
+		final VElement parentElement = contextParentMap.get(childContext);
+		if (parentElement == null) {
+			return;
+		}
+		// remove the mapping of each setting of the removed control to the parent element
+		for (final UniqueSetting setting : controlToSettingMap.get(controlToRemove)) {
+			settingToControlMap.get(setting).remove(parentElement);
+		}
+		// Then compute the parent of the parent element
+		final EMFFormsViewContext parentContext = controlContextMap.get(parentElement);
+		vControlParentsRemoved(parentContext, controlToRemove);
+	}
+
+	/**
 	 * {@inheritDoc}
 	 *
 	 * @see org.eclipse.emfforms.spi.core.services.view.EMFFormsContextListener#contextInitialised()
@@ -395,6 +433,56 @@
 
 	@Override
 	public Set<UniqueSetting> getSettingsForControl(VControl control) {
-		return controlToSettingMap.get(control);
+		final List<UniqueSetting> settings = controlToSettingMap.get(control);
+		if (settings == null) {
+			return Collections.emptySet();
+		}
+		return new SetView<UniqueSetting>(settings);
+	}
+
+	/**
+	 * A view of any collection as an unmodifiable set.
+	 *
+	 * @param <E> the element type of the collection
+	 */
+	final class SetView<E> extends AbstractSet<E> {
+		private final Collection<? extends E> content;
+
+		/**
+		 * Initializes me with my {@code content}.
+		 *
+		 * @param content the elements that I contain
+		 */
+		SetView(Collection<? extends E> content) {
+			super();
+
+			this.content = content;
+		}
+
+		@Override
+		public Iterator<E> iterator() {
+			final Iterator<? extends E> delegate = content.iterator();
+			return new Iterator<E>() {
+				@Override
+				public boolean hasNext() {
+					return delegate.hasNext();
+				}
+
+				@Override
+				public E next() {
+					return delegate.next();
+				}
+
+				@Override
+				public void remove() {
+					throw new UnsupportedOperationException();
+				}
+			};
+		}
+
+		@Override
+		public int size() {
+			return content.size();
+		}
 	}
 }
diff --git a/bundles/org.eclipse.emfforms.core.services/src/org/eclipse/emfforms/internal/core/services/scoped/EMFFormsViewServiceManagerImpl.java b/bundles/org.eclipse.emfforms.core.services/src/org/eclipse/emfforms/internal/core/services/scoped/EMFFormsViewServiceManagerImpl.java
index f057f5d..cda3866 100644
--- a/bundles/org.eclipse.emfforms.core.services/src/org/eclipse/emfforms/internal/core/services/scoped/EMFFormsViewServiceManagerImpl.java
+++ b/bundles/org.eclipse.emfforms.core.services/src/org/eclipse/emfforms/internal/core/services/scoped/EMFFormsViewServiceManagerImpl.java
@@ -97,7 +97,7 @@
 		Map<Class<?>, EMFFormsViewServiceFactory<?>> classFactoryMap, EMFFormsViewContext emfFormsViewContext) {
 		final EMFFormsViewServiceFactory<?> serviceProvider = classFactoryMap.get(type);
 		if (serviceProvider != null) {
-			return (Optional<T>) Optional.of(serviceProvider.createService(emfFormsViewContext));
+			return (Optional<T>) Optional.ofNullable(serviceProvider.createService(emfFormsViewContext));
 		}
 		return Optional.empty();
 	}
diff --git a/bundles/org.eclipse.emfforms.core.services/src/org/eclipse/emfforms/spi/core/services/view/EMFFormsViewServiceFactory.java b/bundles/org.eclipse.emfforms.core.services/src/org/eclipse/emfforms/spi/core/services/view/EMFFormsViewServiceFactory.java
index cef6ec2..3f733b3 100644
--- a/bundles/org.eclipse.emfforms.core.services/src/org/eclipse/emfforms/spi/core/services/view/EMFFormsViewServiceFactory.java
+++ b/bundles/org.eclipse.emfforms.core.services/src/org/eclipse/emfforms/spi/core/services/view/EMFFormsViewServiceFactory.java
@@ -55,7 +55,7 @@
 	 * Creates a new instance of the provided service.
 	 *
 	 * @param emfFormsViewContext The {@link EMFFormsViewContext} to use during the creation of the service
-	 * @return A new instance of the provided service
+	 * @return A new instance of the provided service or null if the service should not be created
 	 */
 	T createService(EMFFormsViewContext emfFormsViewContext);
 
diff --git a/bundles/org.eclipse.emfforms.datatemplate.model.edit/.checkstyle b/bundles/org.eclipse.emfforms.datatemplate.model.edit/.checkstyle
new file mode 100644
index 0000000..19c5477
--- /dev/null
+++ b/bundles/org.eclipse.emfforms.datatemplate.model.edit/.checkstyle
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<fileset-config file-format-version="1.2.0" simple-config="false" sync-formatter="false">
+  <local-check-config name="ESMCheckstyle" location="/org.eclipse.emf.ecp.releng/checkstyle/esmCheckstyle.xml" type="project" description="">
+    <additional-data name="protect-config-file" value="false"/>
+  </local-check-config>
+  <fileset name="Java Files" enabled="true" check-config-name="ESMCheckstyle" local="true">
+    <file-match-pattern match-pattern=".java" include-pattern="true"/>
+  </fileset>
+</fileset-config>
diff --git a/bundles/org.eclipse.emfforms.datatemplate.model.edit/.classpath b/bundles/org.eclipse.emfforms.datatemplate.model.edit/.classpath
new file mode 100644
index 0000000..ad32c83
--- /dev/null
+++ b/bundles/org.eclipse.emfforms.datatemplate.model.edit/.classpath
@@ -0,0 +1,7 @@
+<?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.6"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/bundles/org.eclipse.emfforms.datatemplate.model.edit/.project b/bundles/org.eclipse.emfforms.datatemplate.model.edit/.project
new file mode 100644
index 0000000..538483b
--- /dev/null
+++ b/bundles/org.eclipse.emfforms.datatemplate.model.edit/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.emfforms.datatemplate.model.edit</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>net.sf.eclipsecs.core.CheckstyleBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>net.sf.eclipsecs.core.CheckstyleNature</nature>
+	</natures>
+</projectDescription>
diff --git a/bundles/org.eclipse.emfforms.datatemplate.model.edit/.settings/org.eclipse.core.resources.prefs b/bundles/org.eclipse.emfforms.datatemplate.model.edit/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..f548abb
--- /dev/null
+++ b/bundles/org.eclipse.emfforms.datatemplate.model.edit/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,6 @@
+eclipse.preferences.version=1
+
+encoding//model/etypes.ecore=UTF-8
+
+
+encoding/<project>=UTF-8
diff --git a/bundles/org.eclipse.emfforms.datatemplate.model.edit/.settings/org.eclipse.core.runtime.prefs b/bundles/org.eclipse.emfforms.datatemplate.model.edit/.settings/org.eclipse.core.runtime.prefs
new file mode 100644
index 0000000..5a0ad22
--- /dev/null
+++ b/bundles/org.eclipse.emfforms.datatemplate.model.edit/.settings/org.eclipse.core.runtime.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+line.separator=\n
diff --git a/bundles/org.eclipse.emfforms.datatemplate.model.edit/.settings/org.eclipse.jdt.core.prefs b/bundles/org.eclipse.emfforms.datatemplate.model.edit/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..2839ede
--- /dev/null
+++ b/bundles/org.eclipse.emfforms.datatemplate.model.edit/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,420 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.builder.cleanOutputFolder=clean
+org.eclipse.jdt.core.builder.duplicateResourceTask=warning
+org.eclipse.jdt.core.builder.invalidClasspath=abort
+org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
+org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=
+org.eclipse.jdt.core.circularClasspath=error
+org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
+org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
+org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error
+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.annotation.inheritNullAnnotations=disabled
+org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
+org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
+org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
+org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.6
+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.doc.comment.support=enabled
+org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
+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=enabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
+org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=disabled
+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.invalidJavadoc=warning
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=disabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=public
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
+org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=warning
+org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
+org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=public
+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=warning
+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.nonnullParameterAnnotationDropped=warning
+org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
+org.eclipse.jdt.core.compiler.problem.nullReference=warning
+org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
+org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
+org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
+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.syntacticNullAnalysisForFields=disabled
+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.unclosedCloseable=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=warning
+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.unusedExceptionParameter=ignore
+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.unusedTypeParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.source=1.6
+org.eclipse.jdt.core.compiler.taskCaseSensitive=enabled
+org.eclipse.jdt.core.compiler.taskPriorities=NORMAL,HIGH,HIGH,LOW,LOW,LOW,LOW,LOW,NORMAL
+org.eclipse.jdt.core.compiler.taskTags=TODO,FIXME,XXX,PERF,MEM,POLISH,@generated NOT,@ADDED,APITODO
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+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_binary_expression=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_method_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=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_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=false
+org.eclipse.jdt.core.formatter.comment.format_block_comments=true
+org.eclipse.jdt.core.formatter.comment.format_header=true
+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=do not 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=1
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=1
+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=do not 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_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_binary_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_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_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_unary_operator=do not 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_binary_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_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_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_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=false
+org.eclipse.jdt.core.formatter.join_wrapped_lines=false
+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=120
+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_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
+org.eclipse.jdt.core.incompatibleJDKLevel=ignore
+org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/bundles/org.eclipse.emfforms.datatemplate.model.edit/.settings/org.eclipse.jdt.launching.prefs b/bundles/org.eclipse.emfforms.datatemplate.model.edit/.settings/org.eclipse.jdt.launching.prefs
new file mode 100644
index 0000000..3bb2352
--- /dev/null
+++ b/bundles/org.eclipse.emfforms.datatemplate.model.edit/.settings/org.eclipse.jdt.launching.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.launching.PREF_STRICTLY_COMPATIBLE_JRE_NOT_AVAILABLE=ignore
diff --git a/bundles/org.eclipse.emfforms.datatemplate.model.edit/.settings/org.eclipse.jdt.ui.prefs b/bundles/org.eclipse.emfforms.datatemplate.model.edit/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 0000000..8bc4bb4
--- /dev/null
+++ b/bundles/org.eclipse.emfforms.datatemplate.model.edit/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,127 @@
+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_functional_interfaces=false
+cleanup.convert_to_enhanced_for_loop=false
+cleanup.correct_indentation=false
+cleanup.format_source_code=true
+cleanup.format_source_code_changes_only=false
+cleanup.insert_inferred_type_arguments=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=true
+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=true
+cleanup.remove_redundant_type_arguments=true
+cleanup.remove_trailing_whitespaces=true
+cleanup.remove_trailing_whitespaces_all=true
+cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_casts=false
+cleanup.remove_unnecessary_nls_tags=false
+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=true
+cleanup.remove_unused_private_types=true
+cleanup.sort_members=false
+cleanup.sort_members_all=false
+cleanup.use_anonymous_class_creation=false
+cleanup.use_blocks=true
+cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_lambda=true
+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.use_type_arguments=false
+cleanup_profile=_esmCleanUp
+cleanup_settings_version=2
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+formatter_profile=_esmFormatter
+formatter_settings_version=12
+org.eclipse.jdt.ui.exception.name=ex
+org.eclipse.jdt.ui.gettersetter.use.is=true
+org.eclipse.jdt.ui.javadoc=true
+org.eclipse.jdt.ui.keywordthis=false
+org.eclipse.jdt.ui.overrideannotation=true
+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 * Copyright (c) 2011-${year} EclipseSource Muenchen GmbH and others.\r\n * \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 * ${user} - initial API and implementation\r\n ******************************************************************************/</template><template autoinsert\="true" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * @author ${user}\r\n *\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment"/><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 * {@inheritDoc}\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">\t\t\t// TODO Auto-generated catch block\r\n\t\t\t// Do NOT catch all Exceptions ("catch (Exception e)")\r\n\t\t\t// Log AND handle Exceptions if possible \r\n            //\r\n            // You can just uncomment one of the lines below to log an exception\:\r\n\t\t\t// logException will show the logged excpetion to the user\r\n\t\t\t// ModelUtil.logException(${exception_var});\r\n\t\t\t// ModelUtil.logException("YOUR MESSAGE HERE", ${exception_var});\r\n\t\t\t// logWarning will only add the message to the error log\r\n\t\t\t// ModelUtil.logWarning("YOUR MESSAGE HERE", ${exception_var});\r\n\t\t\t// ModelUtil.logWarning("YOUR MESSAGE HERE");\r\n\t\t\t//\t\t\t\r\n\t\t\t// If handling is not possible declare and rethrow Exception</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_functional_interfaces=false
+sp_cleanup.convert_to_enhanced_for_loop=false
+sp_cleanup.correct_indentation=false
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.insert_inferred_type_arguments=false
+sp_cleanup.make_local_variable_final=true
+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=true
+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=true
+sp_cleanup.remove_redundant_type_arguments=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=false
+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=true
+sp_cleanup.remove_unused_private_types=true
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.use_anonymous_class_creation=false
+sp_cleanup.use_blocks=true
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_lambda=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
+sp_cleanup.use_type_arguments=false
diff --git a/bundles/org.eclipse.emfforms.datatemplate.model.edit/.settings/org.eclipse.ltk.core.refactoring.prefs b/bundles/org.eclipse.emfforms.datatemplate.model.edit/.settings/org.eclipse.ltk.core.refactoring.prefs
new file mode 100644
index 0000000..864e30f
--- /dev/null
+++ b/bundles/org.eclipse.emfforms.datatemplate.model.edit/.settings/org.eclipse.ltk.core.refactoring.prefs
@@ -0,0 +1,3 @@
+#Thu Feb 04 09:44:24 CET 2010
+eclipse.preferences.version=1
+org.eclipse.ltk.core.refactoring.enable.project.refactoring.history=false
diff --git a/bundles/org.eclipse.emfforms.datatemplate.model.edit/.settings/org.eclipse.pde.api.tools.prefs b/bundles/org.eclipse.emfforms.datatemplate.model.edit/.settings/org.eclipse.pde.api.tools.prefs
new file mode 100644
index 0000000..e4e3c00
--- /dev/null
+++ b/bundles/org.eclipse.emfforms.datatemplate.model.edit/.settings/org.eclipse.pde.api.tools.prefs
@@ -0,0 +1,97 @@
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_TYPE=Error
+API_USE_SCAN_FIELD_SEVERITY=Error
+API_USE_SCAN_METHOD_SEVERITY=Error
+API_USE_SCAN_TYPE_SEVERITY=Error
+CLASS_ELEMENT_TYPE_ADDED_METHOD=Error
+CLASS_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CLASS_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+CLASS_ELEMENT_TYPE_REMOVED_CONSTRUCTOR=Error
+CLASS_ELEMENT_TYPE_REMOVED_FIELD=Error
+CLASS_ELEMENT_TYPE_REMOVED_METHOD=Error
+CLASS_ELEMENT_TYPE_REMOVED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+ENUM_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ENUM_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ENUM_ELEMENT_TYPE_REMOVED_ENUM_CONSTANT=Error
+ENUM_ELEMENT_TYPE_REMOVED_FIELD=Error
+ENUM_ELEMENT_TYPE_REMOVED_METHOD=Error
+ENUM_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+FIELD_ELEMENT_TYPE_ADDED_VALUE=Error
+FIELD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+FIELD_ELEMENT_TYPE_CHANGED_FINAL_TO_NON_FINAL_STATIC_CONSTANT=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_TYPE=Error
+FIELD_ELEMENT_TYPE_CHANGED_VALUE=Error
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENT=Error
+FIELD_ELEMENT_TYPE_REMOVED_VALUE=Error
+ILLEGAL_EXTEND=Warning
+ILLEGAL_IMPLEMENT=Warning
+ILLEGAL_INSTANTIATE=Warning
+ILLEGAL_OVERRIDE=Warning
+ILLEGAL_REFERENCE=Warning
+INTERFACE_ELEMENT_TYPE_ADDED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_SUPER_INTERFACE_WITH_METHODS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+INVALID_JAVADOC_TAG=Warning
+INVALID_REFERENCE_IN_SYSTEM_LIBRARIES=Error
+LEAK_EXTEND=Warning
+LEAK_FIELD_DECL=Warning
+LEAK_IMPLEMENT=Warning
+LEAK_METHOD_PARAM=Warning
+LEAK_METHOD_RETURN_TYPE=Warning
+METHOD_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+METHOD_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+METHOD_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+MISSING_EE_DESCRIPTIONS=Error
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+UNUSED_PROBLEM_FILTERS=Ignore
+automatically_removed_unused_problem_filters=Disabled
+eclipse.preferences.version=1
+incompatible_api_component_version=Error
+incompatible_api_component_version_include_major_without_breaking_change=Disabled
+incompatible_api_component_version_include_minor_without_api_change=Disabled
+invalid_since_tag_version=Error
+malformed_since_tag=Error
+missing_since_tag=Error
+report_api_breakage_when_major_version_incremented=Disabled
+report_resolution_errors_api_component=Warning
diff --git a/bundles/org.eclipse.emfforms.datatemplate.model.edit/.settings/org.eclipse.pde.prefs b/bundles/org.eclipse.emfforms.datatemplate.model.edit/.settings/org.eclipse.pde.prefs
new file mode 100644
index 0000000..0bbee3c
--- /dev/null
+++ b/bundles/org.eclipse.emfforms.datatemplate.model.edit/.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=1
+compilers.p.missing-version-import-package=1
+compilers.p.missing-version-require-bundle=1
+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/bundles/org.eclipse.emfforms.datatemplate.model.edit/META-INF/MANIFEST.MF b/bundles/org.eclipse.emfforms.datatemplate.model.edit/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..82782cd
--- /dev/null
+++ b/bundles/org.eclipse.emfforms.datatemplate.model.edit/META-INF/MANIFEST.MF
@@ -0,0 +1,18 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: EMFForms DataTemplate Edit
+Bundle-SymbolicName: org.eclipse.emfforms.datatemplate.model.edit;singleton:=true
+Bundle-Version: 1.17.0.qualifier
+Bundle-ClassPath: .
+Bundle-Activator: org.eclipse.emfforms.datatemplate.provider.DatatemplateEditPlugin$Implementation
+Bundle-Vendor: Eclipse Modeling Project
+Bundle-Localization: plugin
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Export-Package: org.eclipse.emfforms.datatemplate.provider;version="1.17.0";x-internal:=true
+Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.13.0,4.0.0)",
+ org.eclipse.emfforms.datatemplate.model;bundle-version="[1.17.0,1.18.0)";visibility:=reexport,
+ org.eclipse.emf.edit;bundle-version="[2.12.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.ecore;bundle-version="[2.13.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.ecore.edit;bundle-version="[2.9.0,3.0.0)";visibility:=reexport
+Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emfforms.datatemplate.model.edit
diff --git a/bundles/org.eclipse.emfforms.datatemplate.model.edit/build.properties b/bundles/org.eclipse.emfforms.datatemplate.model.edit/build.properties
new file mode 100644
index 0000000..e9f0c28
--- /dev/null
+++ b/bundles/org.eclipse.emfforms.datatemplate.model.edit/build.properties
@@ -0,0 +1,18 @@
+# Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+# EclipseSource Munich - initial API and implementation
+
+bin.includes = .,\
+               icons/,\
+               META-INF/,\
+               plugin.xml,\
+               plugin.properties
+jars.compile.order = .
+source.. = src/
+output.. = bin/
diff --git a/bundles/org.eclipse.emfforms.datatemplate.model.edit/icons/full/ctool16/CreateTemplateCollection_templates_Template.gif b/bundles/org.eclipse.emfforms.datatemplate.model.edit/icons/full/ctool16/CreateTemplateCollection_templates_Template.gif
new file mode 100644
index 0000000..d5bfa07
--- /dev/null
+++ b/bundles/org.eclipse.emfforms.datatemplate.model.edit/icons/full/ctool16/CreateTemplateCollection_templates_Template.gif
Binary files differ
diff --git a/bundles/org.eclipse.emfforms.datatemplate.model.edit/icons/full/ctool16/CreateTemplate_instance_EObject.gif b/bundles/org.eclipse.emfforms.datatemplate.model.edit/icons/full/ctool16/CreateTemplate_instance_EObject.gif
new file mode 100644
index 0000000..f7a01de
--- /dev/null
+++ b/bundles/org.eclipse.emfforms.datatemplate.model.edit/icons/full/ctool16/CreateTemplate_instance_EObject.gif
Binary files differ
diff --git a/bundles/org.eclipse.emfforms.datatemplate.model.edit/icons/full/obj16/Template.gif b/bundles/org.eclipse.emfforms.datatemplate.model.edit/icons/full/obj16/Template.gif
new file mode 100644
index 0000000..195dc6d
--- /dev/null
+++ b/bundles/org.eclipse.emfforms.datatemplate.model.edit/icons/full/obj16/Template.gif
Binary files differ
diff --git a/bundles/org.eclipse.emfforms.datatemplate.model.edit/icons/full/obj16/TemplateCollection.gif b/bundles/org.eclipse.emfforms.datatemplate.model.edit/icons/full/obj16/TemplateCollection.gif
new file mode 100644
index 0000000..1ef6e11
--- /dev/null
+++ b/bundles/org.eclipse.emfforms.datatemplate.model.edit/icons/full/obj16/TemplateCollection.gif
Binary files differ
diff --git a/bundles/org.eclipse.emfforms.datatemplate.model.edit/plugin.properties b/bundles/org.eclipse.emfforms.datatemplate.model.edit/plugin.properties
new file mode 100644
index 0000000..d041cf8
--- /dev/null
+++ b/bundles/org.eclipse.emfforms.datatemplate.model.edit/plugin.properties
@@ -0,0 +1,37 @@
+# Copyright (c) 2011-2017 EclipseSource Muenchen GmbH 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:
+# EclipseSource Munich - initial API and implementation
+
+pluginName = DataTemplate Edit Support
+providerName = www.example.org
+
+_UI_CreateChild_text = {0}
+_UI_CreateChild_text2 = {1} {0}
+_UI_CreateChild_text3 = {1}
+_UI_CreateChild_tooltip = Create New {0} Under {1} Feature
+_UI_CreateChild_description = Create a new child of type {0} for the {1} feature of the selected {2}.
+_UI_CreateSibling_description = Create a new sibling of type {0} for the selected {2}, under the {1} feature of their parent.
+
+_UI_PropertyDescriptor_description = The {0} of the {1}
+
+_UI_Template_type = Template
+_UI_TemplateCollection_type = Template Collection
+_UI_Unknown_type = Object
+
+_UI_Unknown_datatype= Value
+
+_UI_Template_name_feature = Name
+_UI_Template_priority_feature = Priority
+_UI_Template_instance_feature = Instance
+_UI_TemplateCollection_type_feature = Type
+_UI_TemplateCollection_templates_feature = Templates
+_UI_Unknown_feature = Unspecified
+
+_UI_Template_type_feature = Type
+_UI_Template_strictTypeMatching_feature = Strict Type Matching
diff --git a/bundles/org.eclipse.emfforms.datatemplate.model.edit/plugin.xml b/bundles/org.eclipse.emfforms.datatemplate.model.edit/plugin.xml
new file mode 100644
index 0000000..f04e275
--- /dev/null
+++ b/bundles/org.eclipse.emfforms.datatemplate.model.edit/plugin.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<!--
+ Copyright (c) 2011-2017 EclipseSource Muenchen GmbH 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:
+ EclipseSource Munich - initial API and implementation
+-->
+
+<plugin>
+
+   <extension point="org.eclipse.emf.edit.itemProviderAdapterFactories">
+      <!-- @generated datatemplate -->
+      <factory
+            uri="http://org/eclipse/emfforms/datatemplate/model"
+            class="org.eclipse.emfforms.datatemplate.provider.DataTemplateItemProviderAdapterFactory"
+            supportedTypes=
+              "org.eclipse.emf.edit.provider.IEditingDomainItemProvider
+               org.eclipse.emf.edit.provider.IStructuredItemContentProvider
+               org.eclipse.emf.edit.provider.ITreeItemContentProvider
+               org.eclipse.emf.edit.provider.IItemLabelProvider
+               org.eclipse.emf.edit.provider.IItemPropertySource"/>
+   </extension>
+
+</plugin>
diff --git a/bundles/org.eclipse.emfforms.datatemplate.model.edit/pom.xml b/bundles/org.eclipse.emfforms.datatemplate.model.edit/pom.xml
new file mode 100644
index 0000000..6d6cf94
--- /dev/null
+++ b/bundles/org.eclipse.emfforms.datatemplate.model.edit/pom.xml
@@ -0,0 +1,18 @@
+<?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.emf.ecp</groupId>
+    <artifactId>ecp-bundles-parent</artifactId>
+    <version>1.17.0-SNAPSHOT</version>
+    <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
+  </parent>
+
+  <groupId>org.eclipse.emf.ecp</groupId>
+  <artifactId>org.eclipse.emfforms.datatemplate.model.edit</artifactId>
+  <version>1.17.0-SNAPSHOT</version>
+  <packaging>eclipse-plugin</packaging>
+</project>
diff --git a/bundles/org.eclipse.emfforms.datatemplate.model.edit/src/org/eclipse/emfforms/datatemplate/provider/DataTemplateItemProviderAdapterFactory.java b/bundles/org.eclipse.emfforms.datatemplate.model.edit/src/org/eclipse/emfforms/datatemplate/provider/DataTemplateItemProviderAdapterFactory.java
new file mode 100644
index 0000000..de138f9
--- /dev/null
+++ b/bundles/org.eclipse.emfforms.datatemplate.model.edit/src/org/eclipse/emfforms/datatemplate/provider/DataTemplateItemProviderAdapterFactory.java
@@ -0,0 +1,261 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Muenchen GmbH - initial API and implementation
+ */
+package org.eclipse.emfforms.datatemplate.provider;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.Notifier;
+import org.eclipse.emf.edit.provider.ChangeNotifier;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
+import org.eclipse.emf.edit.provider.IChangeNotifier;
+import org.eclipse.emf.edit.provider.IDisposable;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.INotifyChangedListener;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emfforms.datatemplate.util.DataTemplateAdapterFactory;
+
+/**
+ * This is the factory that is used to provide the interfaces needed to support Viewers.
+ * The adapters generated by this factory convert EMF adapter notifications into calls to {@link #fireNotifyChanged
+ * fireNotifyChanged}.
+ * The adapters also support Eclipse property sheets.
+ * Note that most of the adapters are shared among multiple instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * 
+ * @generated
+ */
+public class DataTemplateItemProviderAdapterFactory extends DataTemplateAdapterFactory
+	implements ComposeableAdapterFactory, IChangeNotifier, IDisposable {
+	/**
+	 * This keeps track of the root adapter factory that delegates to this adapter factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	protected ComposedAdapterFactory parentAdapterFactory;
+
+	/**
+	 * This is used to implement {@link org.eclipse.emf.edit.provider.IChangeNotifier}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	protected IChangeNotifier changeNotifier = new ChangeNotifier();
+
+	/**
+	 * This keeps track of all the supported types checked by {@link #isFactoryForType isFactoryForType}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	protected Collection<Object> supportedTypes = new ArrayList<Object>();
+
+	/**
+	 * This constructs an instance.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public DataTemplateItemProviderAdapterFactory() {
+		supportedTypes.add(IEditingDomainItemProvider.class);
+		supportedTypes.add(IStructuredItemContentProvider.class);
+		supportedTypes.add(ITreeItemContentProvider.class);
+		supportedTypes.add(IItemLabelProvider.class);
+		supportedTypes.add(IItemPropertySource.class);
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.emfforms.datatemplate.Template} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	protected TemplateItemProvider templateItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.emfforms.datatemplate.Template}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public Adapter createTemplateAdapter() {
+		if (templateItemProvider == null) {
+			templateItemProvider = new TemplateItemProvider(this);
+		}
+
+		return templateItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.emfforms.datatemplate.TemplateCollection}
+	 * instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	protected TemplateCollectionItemProvider templateCollectionItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.emfforms.datatemplate.TemplateCollection}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public Adapter createTemplateCollectionAdapter() {
+		if (templateCollectionItemProvider == null) {
+			templateCollectionItemProvider = new TemplateCollectionItemProvider(this);
+		}
+
+		return templateCollectionItemProvider;
+	}
+
+	/**
+	 * This returns the root adapter factory that contains this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public ComposeableAdapterFactory getRootAdapterFactory() {
+		return parentAdapterFactory == null ? this : parentAdapterFactory.getRootAdapterFactory();
+	}
+
+	/**
+	 * This sets the composed adapter factory that contains this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public void setParentAdapterFactory(ComposedAdapterFactory parentAdapterFactory) {
+		this.parentAdapterFactory = parentAdapterFactory;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public boolean isFactoryForType(Object type) {
+		return supportedTypes.contains(type) || super.isFactoryForType(type);
+	}
+
+	/**
+	 * This implementation substitutes the factory itself as the key for the adapter.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public Adapter adapt(Notifier notifier, Object type) {
+		return super.adapt(notifier, this);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public Object adapt(Object object, Object type) {
+		if (isFactoryForType(type)) {
+			final Object adapter = super.adapt(object, type);
+			if (!(type instanceof Class<?>) || ((Class<?>) type).isInstance(adapter)) {
+				return adapter;
+			}
+		}
+
+		return null;
+	}
+
+	/**
+	 * This adds a listener.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public void addListener(INotifyChangedListener notifyChangedListener) {
+		changeNotifier.addListener(notifyChangedListener);
+	}
+
+	/**
+	 * This removes a listener.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public void removeListener(INotifyChangedListener notifyChangedListener) {
+		changeNotifier.removeListener(notifyChangedListener);
+	}
+
+	/**
+	 * This delegates to {@link #changeNotifier} and to {@link #parentAdapterFactory}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public void fireNotifyChanged(Notification notification) {
+		changeNotifier.fireNotifyChanged(notification);
+
+		if (parentAdapterFactory != null) {
+			parentAdapterFactory.fireNotifyChanged(notification);
+		}
+	}
+
+	/**
+	 * This disposes all of the item providers created by this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public void dispose() {
+		if (templateItemProvider != null) {
+			templateItemProvider.dispose();
+		}
+		if (templateCollectionItemProvider != null) {
+			templateCollectionItemProvider.dispose();
+		}
+	}
+
+}
diff --git a/bundles/org.eclipse.emfforms.datatemplate.model.edit/src/org/eclipse/emfforms/datatemplate/provider/DatatemplateEditPlugin.java b/bundles/org.eclipse.emfforms.datatemplate.model.edit/src/org/eclipse/emfforms/datatemplate/provider/DatatemplateEditPlugin.java
new file mode 100644
index 0000000..c5414da
--- /dev/null
+++ b/bundles/org.eclipse.emfforms.datatemplate.model.edit/src/org/eclipse/emfforms/datatemplate/provider/DatatemplateEditPlugin.java
@@ -0,0 +1,106 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Muenchen GmbH - initial API and implementation
+ */
+package org.eclipse.emfforms.datatemplate.provider;
+
+import org.eclipse.emf.common.EMFPlugin;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.ecore.provider.EcoreEditPlugin;
+
+/**
+ * This is the central singleton for the DataTemplate edit plugin.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * 
+ * @generated
+ */
+public final class DatatemplateEditPlugin extends EMFPlugin {
+	/**
+	 * Keep track of the singleton.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public static final DatatemplateEditPlugin INSTANCE = new DatatemplateEditPlugin();
+
+	/**
+	 * Keep track of the singleton.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private static Implementation plugin;
+
+	/**
+	 * Create the instance.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public DatatemplateEditPlugin() {
+		super(new ResourceLocator[] {
+			EcoreEditPlugin.INSTANCE,
+		});
+	}
+
+	/**
+	 * Returns the singleton instance of the Eclipse plugin.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the singleton instance.
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getPluginResourceLocator() {
+		return plugin;
+	}
+
+	/**
+	 * Returns the singleton instance of the Eclipse plugin.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the singleton instance.
+	 * @generated
+	 */
+	public static Implementation getPlugin() {
+		return plugin;
+	}
+
+	/**
+	 * The actual implementation of the Eclipse <b>Plugin</b>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public static class Implementation extends EclipsePlugin {
+		/**
+		 * Creates an instance.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * 
+		 * @generated
+		 */
+		public Implementation() {
+			super();
+
+			// Remember the static instance.
+			//
+			plugin = this;
+		}
+	}
+
+}
diff --git a/bundles/org.eclipse.emfforms.datatemplate.model.edit/src/org/eclipse/emfforms/datatemplate/provider/TemplateCollectionItemProvider.java b/bundles/org.eclipse.emfforms.datatemplate.model.edit/src/org/eclipse/emfforms/datatemplate/provider/TemplateCollectionItemProvider.java
new file mode 100644
index 0000000..fe77c42
--- /dev/null
+++ b/bundles/org.eclipse.emfforms.datatemplate.model.edit/src/org/eclipse/emfforms/datatemplate/provider/TemplateCollectionItemProvider.java
@@ -0,0 +1,204 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Muenchen GmbH - initial API and implementation
+ */
+package org.eclipse.emfforms.datatemplate.provider;
+
+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.common.util.ResourceLocator;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.emfforms.datatemplate.DataTemplateFactory;
+import org.eclipse.emfforms.datatemplate.DataTemplatePackage;
+import org.eclipse.emfforms.datatemplate.TemplateCollection;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.emfforms.datatemplate.TemplateCollection} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * 
+ * @generated
+ */
+public class TemplateCollectionItemProvider
+	extends ItemProviderAdapter
+	implements
+	IEditingDomainItemProvider,
+	IStructuredItemContentProvider,
+	ITreeItemContentProvider,
+	IItemLabelProvider,
+	IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public TemplateCollectionItemProvider(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);
+
+			addTemplatesPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Templates feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	protected void addTemplatesPropertyDescriptor(Object object) {
+		itemPropertyDescriptors
+			.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+				getResourceLocator(),
+				getString("_UI_TemplateCollection_templates_feature"), //$NON-NLS-1$
+				getString("_UI_PropertyDescriptor_description", "_UI_TemplateCollection_templates_feature", //$NON-NLS-1$//$NON-NLS-2$
+					"_UI_TemplateCollection_type"), //$NON-NLS-1$
+				DataTemplatePackage.Literals.TEMPLATE_COLLECTION__TEMPLATES,
+				true,
+				false,
+				false,
+				null,
+				null,
+				null));
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(DataTemplatePackage.Literals.TEMPLATE_COLLECTION__TEMPLATES);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns TemplateCollection.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/TemplateCollection")); //$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 getString("_UI_TemplateCollection_type"); //$NON-NLS-1$
+	}
+
+	/**
+	 * 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);
+
+		switch (notification.getFeatureID(TemplateCollection.class)) {
+		case DataTemplatePackage.TEMPLATE_COLLECTION__TEMPLATES:
+			fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+			return;
+		}
+		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);
+
+		newChildDescriptors.add(createChildParameter(DataTemplatePackage.Literals.TEMPLATE_COLLECTION__TEMPLATES,
+			DataTemplateFactory.eINSTANCE.createTemplate()));
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return DatatemplateEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/bundles/org.eclipse.emfforms.datatemplate.model.edit/src/org/eclipse/emfforms/datatemplate/provider/TemplateItemProvider.java b/bundles/org.eclipse.emfforms.datatemplate.model.edit/src/org/eclipse/emfforms/datatemplate/provider/TemplateItemProvider.java
new file mode 100644
index 0000000..1c53c75
--- /dev/null
+++ b/bundles/org.eclipse.emfforms.datatemplate.model.edit/src/org/eclipse/emfforms/datatemplate/provider/TemplateItemProvider.java
@@ -0,0 +1,227 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Muenchen GmbH - initial API and implementation
+ */
+package org.eclipse.emfforms.datatemplate.provider;
+
+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.common.util.ResourceLocator;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.emfforms.datatemplate.DataTemplatePackage;
+import org.eclipse.emfforms.datatemplate.Template;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.emfforms.datatemplate.Template} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class TemplateItemProvider
+	extends ItemProviderAdapter
+	implements
+	IEditingDomainItemProvider,
+	IStructuredItemContentProvider,
+	ITreeItemContentProvider,
+	IItemLabelProvider,
+	IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public TemplateItemProvider(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);
+
+			addNamePropertyDescriptor(object);
+			addInstancePropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Name feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void addNamePropertyDescriptor(Object object) {
+		itemPropertyDescriptors
+			.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+				getResourceLocator(),
+				getString("_UI_Template_name_feature"), //$NON-NLS-1$
+				getString("_UI_PropertyDescriptor_description", "_UI_Template_name_feature", "_UI_Template_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				DataTemplatePackage.Literals.TEMPLATE__NAME,
+				true,
+				false,
+				false,
+				ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				null,
+				null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Instance feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void addInstancePropertyDescriptor(Object object) {
+		itemPropertyDescriptors
+			.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+				getResourceLocator(),
+				getString("_UI_Template_instance_feature"), //$NON-NLS-1$
+				getString("_UI_PropertyDescriptor_description", "_UI_Template_instance_feature", "_UI_Template_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				DataTemplatePackage.Literals.TEMPLATE__INSTANCE,
+				true,
+				false,
+				false,
+				null,
+				null,
+				null));
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(DataTemplatePackage.Literals.TEMPLATE__INSTANCE);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns Template.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/Template")); //$NON-NLS-1$
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	@Override
+	public String getText(Object object) {
+		final String label = ((Template) object).getName();
+		return label == null || label.length() == 0 ? getString("_UI_Template_type") : label; //$NON-NLS-1$
+	}
+
+	/**
+	 * 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);
+
+		switch (notification.getFeatureID(Template.class)) {
+		case DataTemplatePackage.TEMPLATE__NAME:
+			fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+			return;
+		case DataTemplatePackage.TEMPLATE__INSTANCE:
+			fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+			return;
+		}
+		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);
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return DatatemplateEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/bundles/org.eclipse.emfforms.datatemplate.model/.checkstyle b/bundles/org.eclipse.emfforms.datatemplate.model/.checkstyle
new file mode 100644
index 0000000..19c5477
--- /dev/null
+++ b/bundles/org.eclipse.emfforms.datatemplate.model/.checkstyle
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<fileset-config file-format-version="1.2.0" simple-config="false" sync-formatter="false">
+  <local-check-config name="ESMCheckstyle" location="/org.eclipse.emf.ecp.releng/checkstyle/esmCheckstyle.xml" type="project" description="">
+    <additional-data name="protect-config-file" value="false"/>
+  </local-check-config>
+  <fileset name="Java Files" enabled="true" check-config-name="ESMCheckstyle" local="true">
+    <file-match-pattern match-pattern=".java" include-pattern="true"/>
+  </fileset>
+</fileset-config>
diff --git a/bundles/org.eclipse.emfforms.datatemplate.model/.classpath b/bundles/org.eclipse.emfforms.datatemplate.model/.classpath
new file mode 100644
index 0000000..ad32c83
--- /dev/null
+++ b/bundles/org.eclipse.emfforms.datatemplate.model/.classpath
@@ -0,0 +1,7 @@
+<?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.6"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/bundles/org.eclipse.emfforms.datatemplate.model/.project b/bundles/org.eclipse.emfforms.datatemplate.model/.project
new file mode 100644
index 0000000..711c144
--- /dev/null
+++ b/bundles/org.eclipse.emfforms.datatemplate.model/.project
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.emfforms.datatemplate.model</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.wst.common.project.facet.core.builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<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>net.sf.eclipsecs.core.CheckstyleBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.wst.common.project.facet.core.nature</nature>
+		<nature>net.sf.eclipsecs.core.CheckstyleNature</nature>
+	</natures>
+</projectDescription>
diff --git a/bundles/org.eclipse.emfforms.datatemplate.model/.settings/.api_filters b/bundles/org.eclipse.emfforms.datatemplate.model/.settings/.api_filters
new file mode 100644
index 0000000..2f25992
--- /dev/null
+++ b/bundles/org.eclipse.emfforms.datatemplate.model/.settings/.api_filters
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<component id="org.eclipse.emfforms.editor" version="2">
+    <resource path="src/org/eclipse/emfforms/spi/editor/helpers/ResourceSetHelpers.java" type="org.eclipse.emfforms.spi.editor.helpers.ResourceSetHelpers">
+        <filter id="338792546">
+            <message_arguments>
+                <message_argument value="org.eclipse.emfforms.spi.editor.helpers.ResourceSetHelpers"/>
+                <message_argument value="createResourceSet(CommandStack)"/>
+            </message_arguments>
+        </filter>
+        <filter id="338792546">
+            <message_arguments>
+                <message_argument value="org.eclipse.emfforms.spi.editor.helpers.ResourceSetHelpers"/>
+                <message_argument value="loadResourceSetWithProxies(URI, BasicCommandStack)"/>
+            </message_arguments>
+        </filter>
+    </resource>
+</component>
diff --git a/bundles/org.eclipse.emfforms.datatemplate.model/.settings/org.eclipse.core.resources.prefs b/bundles/org.eclipse.emfforms.datatemplate.model/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..f548abb
--- /dev/null
+++ b/bundles/org.eclipse.emfforms.datatemplate.model/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,6 @@
+eclipse.preferences.version=1
+
+encoding//model/etypes.ecore=UTF-8
+
+
+encoding/<project>=UTF-8
diff --git a/bundles/org.eclipse.emfforms.datatemplate.model/.settings/org.eclipse.core.runtime.prefs b/bundles/org.eclipse.emfforms.datatemplate.model/.settings/org.eclipse.core.runtime.prefs
new file mode 100644
index 0000000..5a0ad22
--- /dev/null
+++ b/bundles/org.eclipse.emfforms.datatemplate.model/.settings/org.eclipse.core.runtime.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+line.separator=\n
diff --git a/bundles/org.eclipse.emfforms.datatemplate.model/.settings/org.eclipse.jdt.core.prefs b/bundles/org.eclipse.emfforms.datatemplate.model/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..82d0031
--- /dev/null
+++ b/bundles/org.eclipse.emfforms.datatemplate.model/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,419 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.builder.cleanOutputFolder=clean
+org.eclipse.jdt.core.builder.duplicateResourceTask=warning
+org.eclipse.jdt.core.builder.invalidClasspath=abort
+org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
+org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=
+org.eclipse.jdt.core.circularClasspath=error
+org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
+org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
+org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error
+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.annotation.inheritNullAnnotations=disabled
+org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
+org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
+org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
+org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.6
+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.doc.comment.support=enabled
+org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
+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=enabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
+org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=disabled
+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.invalidJavadoc=warning
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=disabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=public
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
+org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=warning
+org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
+org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=public
+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=warning
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore
+org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
+org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
+org.eclipse.jdt.core.compiler.problem.nullReference=warning
+org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
+org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
+org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
+org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
+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.syntacticNullAnalysisForFields=disabled
+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.unclosedCloseable=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=warning
+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.unusedTypeParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.source=1.6
+org.eclipse.jdt.core.compiler.taskCaseSensitive=enabled
+org.eclipse.jdt.core.compiler.taskPriorities=NORMAL,HIGH,HIGH,LOW,LOW,LOW,LOW,LOW,NORMAL
+org.eclipse.jdt.core.compiler.taskTags=TODO,FIXME,XXX,PERF,MEM,POLISH,@generated NOT,@ADDED,APITODO
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+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_binary_expression=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_method_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=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_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=false
+org.eclipse.jdt.core.formatter.comment.format_block_comments=true
+org.eclipse.jdt.core.formatter.comment.format_header=true
+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=do not 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=1
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=1
+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=do not 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_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_binary_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_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_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_unary_operator=do not 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_binary_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_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_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_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=false
+org.eclipse.jdt.core.formatter.join_wrapped_lines=false
+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=120
+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_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
+org.eclipse.jdt.core.incompatibleJDKLevel=ignore
+org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/bundles/org.eclipse.emfforms.datatemplate.model/.settings/org.eclipse.jdt.launching.prefs b/bundles/org.eclipse.emfforms.datatemplate.model/.settings/org.eclipse.jdt.launching.prefs
new file mode 100644
index 0000000..3bb2352
--- /dev/null
+++ b/bundles/org.eclipse.emfforms.datatemplate.model/.settings/org.eclipse.jdt.launching.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.launching.PREF_STRICTLY_COMPATIBLE_JRE_NOT_AVAILABLE=ignore
diff --git a/bundles/org.eclipse.emfforms.datatemplate.model/.settings/org.eclipse.jdt.ui.prefs b/bundles/org.eclipse.emfforms.datatemplate.model/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 0000000..7d2a1b1
--- /dev/null
+++ b/bundles/org.eclipse.emfforms.datatemplate.model/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,121 @@
+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=false
+cleanup.correct_indentation=true
+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=true
+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=true
+cleanup.remove_trailing_whitespaces=true
+cleanup.remove_trailing_whitespaces_all=true
+cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_casts=false
+cleanup.remove_unnecessary_nls_tags=false
+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=true
+cleanup.remove_unused_private_types=true
+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=_esmCleanUp
+cleanup_settings_version=2
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+formatter_profile=_esmFormatter
+formatter_settings_version=12
+org.eclipse.jdt.ui.exception.name=ex
+org.eclipse.jdt.ui.gettersetter.use.is=true
+org.eclipse.jdt.ui.javadoc=true
+org.eclipse.jdt.ui.keywordthis=false
+org.eclipse.jdt.ui.overrideannotation=true
+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 * Copyright (c) 2011-${year} EclipseSource Muenchen GmbH and others.\r\n * \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 * ${user} - initial API and implementation\r\n ******************************************************************************/</template><template autoinsert\="true" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * @author ${user}\r\n *\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment"/><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 * {@inheritDoc}\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">\t\t\t// TODO Auto-generated catch block\r\n\t\t\t// Do NOT catch all Exceptions ("catch (Exception e)")\r\n\t\t\t// Log AND handle Exceptions if possible \r\n            //\r\n            // You can just uncomment one of the lines below to log an exception\:\r\n\t\t\t// logException will show the logged excpetion to the user\r\n\t\t\t// ModelUtil.logException(${exception_var});\r\n\t\t\t// ModelUtil.logException("YOUR MESSAGE HERE", ${exception_var});\r\n\t\t\t// logWarning will only add the message to the error log\r\n\t\t\t// ModelUtil.logWarning("YOUR MESSAGE HERE", ${exception_var});\r\n\t\t\t// ModelUtil.logWarning("YOUR MESSAGE HERE");\r\n\t\t\t//\t\t\t\r\n\t\t\t// If handling is not possible declare and rethrow Exception</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_functional_interfaces=false
+sp_cleanup.convert_to_enhanced_for_loop=false
+sp_cleanup.correct_indentation=true
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.insert_inferred_type_arguments=false
+sp_cleanup.make_local_variable_final=true
+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=true
+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=true
+sp_cleanup.remove_redundant_type_arguments=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=false
+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=true
+sp_cleanup.remove_unused_private_types=true
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.use_anonymous_class_creation=false
+sp_cleanup.use_blocks=true
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_lambda=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
+sp_cleanup.use_type_arguments=false
diff --git a/bundles/org.eclipse.emfforms.datatemplate.model/.settings/org.eclipse.ltk.core.refactoring.prefs b/bundles/org.eclipse.emfforms.datatemplate.model/.settings/org.eclipse.ltk.core.refactoring.prefs
new file mode 100644
index 0000000..864e30f
--- /dev/null
+++ b/bundles/org.eclipse.emfforms.datatemplate.model/.settings/org.eclipse.ltk.core.refactoring.prefs
@@ -0,0 +1,3 @@
+#Thu Feb 04 09:44:24 CET 2010
+eclipse.preferences.version=1
+org.eclipse.ltk.core.refactoring.enable.project.refactoring.history=false
diff --git a/bundles/org.eclipse.emfforms.datatemplate.model/.settings/org.eclipse.pde.api.tools.prefs b/bundles/org.eclipse.emfforms.datatemplate.model/.settings/org.eclipse.pde.api.tools.prefs
new file mode 100644
index 0000000..e4e3c00
--- /dev/null
+++ b/bundles/org.eclipse.emfforms.datatemplate.model/.settings/org.eclipse.pde.api.tools.prefs
@@ -0,0 +1,97 @@
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_TYPE=Error
+API_USE_SCAN_FIELD_SEVERITY=Error
+API_USE_SCAN_METHOD_SEVERITY=Error
+API_USE_SCAN_TYPE_SEVERITY=Error
+CLASS_ELEMENT_TYPE_ADDED_METHOD=Error
+CLASS_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CLASS_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+CLASS_ELEMENT_TYPE_REMOVED_CONSTRUCTOR=Error
+CLASS_ELEMENT_TYPE_REMOVED_FIELD=Error
+CLASS_ELEMENT_TYPE_REMOVED_METHOD=Error
+CLASS_ELEMENT_TYPE_REMOVED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+ENUM_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ENUM_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ENUM_ELEMENT_TYPE_REMOVED_ENUM_CONSTANT=Error
+ENUM_ELEMENT_TYPE_REMOVED_FIELD=Error
+ENUM_ELEMENT_TYPE_REMOVED_METHOD=Error
+ENUM_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+FIELD_ELEMENT_TYPE_ADDED_VALUE=Error
+FIELD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+FIELD_ELEMENT_TYPE_CHANGED_FINAL_TO_NON_FINAL_STATIC_CONSTANT=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_TYPE=Error
+FIELD_ELEMENT_TYPE_CHANGED_VALUE=Error
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENT=Error
+FIELD_ELEMENT_TYPE_REMOVED_VALUE=Error
+ILLEGAL_EXTEND=Warning
+ILLEGAL_IMPLEMENT=Warning
+ILLEGAL_INSTANTIATE=Warning
+ILLEGAL_OVERRIDE=Warning
+ILLEGAL_REFERENCE=Warning
+INTERFACE_ELEMENT_TYPE_ADDED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_SUPER_INTERFACE_WITH_METHODS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+INVALID_JAVADOC_TAG=Warning
+INVALID_REFERENCE_IN_SYSTEM_LIBRARIES=Error
+LEAK_EXTEND=Warning
+LEAK_FIELD_DECL=Warning
+LEAK_IMPLEMENT=Warning
+LEAK_METHOD_PARAM=Warning
+LEAK_METHOD_RETURN_TYPE=Warning
+METHOD_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+METHOD_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+METHOD_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+MISSING_EE_DESCRIPTIONS=Error
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+UNUSED_PROBLEM_FILTERS=Ignore
+automatically_removed_unused_problem_filters=Disabled
+eclipse.preferences.version=1
+incompatible_api_component_version=Error
+incompatible_api_component_version_include_major_without_breaking_change=Disabled
+incompatible_api_component_version_include_minor_without_api_change=Disabled
+invalid_since_tag_version=Error
+malformed_since_tag=Error
+missing_since_tag=Error
+report_api_breakage_when_major_version_incremented=Disabled
+report_resolution_errors_api_component=Warning
diff --git a/bundles/org.eclipse.emfforms.datatemplate.model/.settings/org.eclipse.pde.prefs b/bundles/org.eclipse.emfforms.datatemplate.model/.settings/org.eclipse.pde.prefs
new file mode 100644
index 0000000..0bbee3c
--- /dev/null
+++ b/bundles/org.eclipse.emfforms.datatemplate.model/.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=1
+compilers.p.missing-version-import-package=1
+compilers.p.missing-version-require-bundle=1
+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/bundles/org.eclipse.emfforms.datatemplate.model/META-INF/MANIFEST.MF b/bundles/org.eclipse.emfforms.datatemplate.model/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..510bb93
--- /dev/null
+++ b/bundles/org.eclipse.emfforms.datatemplate.model/META-INF/MANIFEST.MF
@@ -0,0 +1,26 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: EMFForms DataTemplate Model
+Bundle-SymbolicName: org.eclipse.emfforms.datatemplate.model;singleton:=true
+Bundle-Version: 1.17.0.qualifier
+Bundle-ClassPath: .
+Bundle-Vendor: Eclipse Modeling Project
+Bundle-Localization: plugin
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Require-Bundle: org.eclipse.emf.ecore;bundle-version="[2.7.0,3.0.0)";visibility:=reexport,
+ org.eclipse.core.runtime;bundle-version="[3.7.0,4.0.0)"
+Bundle-ActivationPolicy: lazy
+Export-Package: org.eclipse.emfforms.datatemplate;version="1.17.0";uses:="org.eclipse.emf.ecore,org.eclipse.emf.common.util",
+ org.eclipse.emfforms.datatemplate.impl;version="1.17.0";x-internal:=true;
+  uses:="org.eclipse.emf.ecore,
+   org.eclipse.emf.ecore.impl,
+   org.eclipse.emf.common.util,
+   org.eclipse.emf.common.notify,
+   org.eclipse.emfforms.datatemplate",
+ org.eclipse.emfforms.datatemplate.util;version="1.17.0";
+  uses:="org.eclipse.emf.ecore,
+   org.eclipse.emf.common.notify,
+   org.eclipse.emf.common.notify.impl,
+   org.eclipse.emfforms.datatemplate,
+   org.eclipse.emf.ecore.util"
+Automatic-Module-Name: org.eclipse.emfforms.datatemplate.model
diff --git a/bundles/org.eclipse.emfforms.datatemplate.model/about.html b/bundles/org.eclipse.emfforms.datatemplate.model/about.html
new file mode 100644
index 0000000..d35d5ae
--- /dev/null
+++ b/bundles/org.eclipse.emfforms.datatemplate.model/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, 2007</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>
diff --git a/bundles/org.eclipse.emfforms.datatemplate.model/build.properties b/bundles/org.eclipse.emfforms.datatemplate.model/build.properties
new file mode 100644
index 0000000..894ebe9
--- /dev/null
+++ b/bundles/org.eclipse.emfforms.datatemplate.model/build.properties
@@ -0,0 +1,19 @@
+# Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+# EclipseSource Munich - initial API and implementation
+
+bin.includes = .,\
+               model/,\
+               META-INF/,\
+               plugin.xml,\
+               plugin.properties,\
+               about.html
+jars.compile.order = .
+source.. = src/
+output.. = bin/
diff --git a/bundles/org.eclipse.emfforms.datatemplate.model/model/datatemplate.ecore b/bundles/org.eclipse.emfforms.datatemplate.model/model/datatemplate.ecore
new file mode 100644
index 0000000..74945ea
--- /dev/null
+++ b/bundles/org.eclipse.emfforms.datatemplate.model/model/datatemplate.ecore
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="datatemplate" nsURI="http://org/eclipse/emfforms/datatemplate/model"
+    nsPrefix="org.eclipse.emfforms.datatemplate.model">
+  <eClassifiers xsi:type="ecore:EClass" name="Template">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="instance" eType="ecore:EClass ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EObject"
+        containment="true"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="TemplateCollection">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="templates" upperBound="-1"
+        eType="#//Template" containment="true"/>
+  </eClassifiers>
+</ecore:EPackage>
diff --git a/bundles/org.eclipse.emfforms.datatemplate.model/model/datatemplate.genmodel b/bundles/org.eclipse.emfforms.datatemplate.model/model/datatemplate.genmodel
new file mode 100644
index 0000000..9c8a0e0
--- /dev/null
+++ b/bundles/org.eclipse.emfforms.datatemplate.model/model/datatemplate.genmodel
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<genmodel:GenModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
+    xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel" copyrightText="Copyright (c) 2011-2018 EclipseSource Muenchen GmbH and others.&#xD;&#xA;&#xD;&#xA;All rights reserved. This program and the accompanying materials&#xD;&#xA;are made available under the terms of the Eclipse Public License v1.0&#xD;&#xA;which accompanies this distribution, and is available at&#xD;&#xA;http://www.eclipse.org/legal/epl-v10.html&#xD;&#xA;&#xD;&#xA;Contributors:&#xD;&#xA;EclipseSource Muenchen GmbH - initial API and implementation"
+    modelDirectory="/org.eclipse.emfforms.datatemplate.model/src" modelPluginID="org.eclipse.emfforms.datatemplate.model"
+    modelName="DataTemplate" modelPluginClass="" editPluginClass="org.eclipse.emfforms.datatemplate.provider.DatatemplateEditPlugin"
+    editorPluginClass="org.eclipse.emfforms.datatemplate.presentation.DatatemplateEditorPlugin"
+    nonNLSMarkers="true" rootExtendsClass="org.eclipse.emf.ecore.impl.MinimalEObjectImpl$Container"
+    codeFormatting="true" importerID="org.eclipse.emf.importer.ecore" complianceLevel="6.0"
+    copyrightFields="false" usedGenPackages="../../org.eclipse.emf.ecore/model/Ecore.genmodel#//ecore"
+    operationReflection="true" importOrganizing="true" cleanup="true">
+  <foreignModel>datatemplate.ecore</foreignModel>
+  <genPackages prefix="DataTemplate" basePackage="org.eclipse.emfforms" disposableProviderFactory="true"
+      ecorePackage="datatemplate.ecore#/">
+    <genClasses ecoreClass="datatemplate.ecore#//Template">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute datatemplate.ecore#//Template/name"/>
+      <genFeatures children="true" createChild="false" ecoreFeature="ecore:EReference datatemplate.ecore#//Template/instance"/>
+    </genClasses>
+    <genClasses ecoreClass="datatemplate.ecore#//TemplateCollection">
+      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference datatemplate.ecore#//TemplateCollection/templates"/>
+    </genClasses>
+  </genPackages>
+</genmodel:GenModel>
diff --git a/bundles/org.eclipse.emfforms.datatemplate.model/plugin.properties b/bundles/org.eclipse.emfforms.datatemplate.model/plugin.properties
new file mode 100644
index 0000000..74cf877
--- /dev/null
+++ b/bundles/org.eclipse.emfforms.datatemplate.model/plugin.properties
@@ -0,0 +1,12 @@
+# Copyright (c) 2011-2017 EclipseSource Muenchen GmbH 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:
+# EclipseSource Munich - initial API and implementation
+
+pluginName = DataTemplate Model
+providerName = www.example.org
diff --git a/bundles/org.eclipse.emfforms.datatemplate.model/plugin.xml b/bundles/org.eclipse.emfforms.datatemplate.model/plugin.xml
new file mode 100644
index 0000000..1791f3c
--- /dev/null
+++ b/bundles/org.eclipse.emfforms.datatemplate.model/plugin.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<!--
+ Copyright Text	Copyright (c) 2011-2017 EclipseSource Muenchen GmbH and others....
+-->
+
+<plugin>
+
+   <extension point="org.eclipse.emf.ecore.generated_package">
+      <!-- @generated datatemplate -->
+      <package
+            uri="http://org/eclipse/emfforms/datatemplate/model"
+            class="org.eclipse.emfforms.datatemplate.DataTemplatePackage"
+            genModel="model/datatemplate.genmodel"/>
+   </extension>
+
+</plugin>
diff --git a/bundles/org.eclipse.emfforms.datatemplate.model/pom.xml b/bundles/org.eclipse.emfforms.datatemplate.model/pom.xml
new file mode 100644
index 0000000..3a034e0
--- /dev/null
+++ b/bundles/org.eclipse.emfforms.datatemplate.model/pom.xml
@@ -0,0 +1,18 @@
+<?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.emf.ecp</groupId>
+    <artifactId>ecp-bundles-parent</artifactId>
+    <version>1.17.0-SNAPSHOT</version>
+    <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
+  </parent>
+
+  <groupId>org.eclipse.emf.ecp</groupId>
+  <artifactId>org.eclipse.emfforms.datatemplate.model</artifactId>
+  <version>1.17.0-SNAPSHOT</version>
+  <packaging>eclipse-plugin</packaging>
+</project>
diff --git a/bundles/org.eclipse.emfforms.datatemplate.model/src/org/eclipse/emfforms/datatemplate/DataTemplateFactory.java b/bundles/org.eclipse.emfforms.datatemplate.model/src/org/eclipse/emfforms/datatemplate/DataTemplateFactory.java
new file mode 100644
index 0000000..0983596
--- /dev/null
+++ b/bundles/org.eclipse.emfforms.datatemplate.model/src/org/eclipse/emfforms/datatemplate/DataTemplateFactory.java
@@ -0,0 +1,60 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Muenchen GmbH - initial API and implementation
+ */
+package org.eclipse.emfforms.datatemplate;
+
+import org.eclipse.emf.ecore.EFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Factory</b> for the model.
+ * It provides a create method for each non-abstract class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.emfforms.datatemplate.DataTemplatePackage
+ * @generated
+ */
+public interface DataTemplateFactory extends EFactory {
+	/**
+	 * The singleton instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	DataTemplateFactory eINSTANCE = org.eclipse.emfforms.datatemplate.impl.DataTemplateFactoryImpl.init();
+
+	/**
+	 * Returns a new object of class '<em>Template</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Template</em>'.
+	 * @generated
+	 */
+	Template createTemplate();
+
+	/**
+	 * Returns a new object of class '<em>Template Collection</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Template Collection</em>'.
+	 * @generated
+	 */
+	TemplateCollection createTemplateCollection();
+
+	/**
+	 * Returns the package supported by this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the package supported by this factory.
+	 * @generated
+	 */
+	DataTemplatePackage getDataTemplatePackage();
+
+} // DataTemplateFactory
diff --git a/bundles/org.eclipse.emfforms.datatemplate.model/src/org/eclipse/emfforms/datatemplate/DataTemplatePackage.java b/bundles/org.eclipse.emfforms.datatemplate.model/src/org/eclipse/emfforms/datatemplate/DataTemplatePackage.java
new file mode 100644
index 0000000..9993eae
--- /dev/null
+++ b/bundles/org.eclipse.emfforms.datatemplate.model/src/org/eclipse/emfforms/datatemplate/DataTemplatePackage.java
@@ -0,0 +1,273 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Muenchen GmbH - initial API and implementation
+ */
+package org.eclipse.emfforms.datatemplate;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Package</b> for the model.
+ * It contains accessors for the meta objects to represent
+ * <ul>
+ * <li>each class,</li>
+ * <li>each feature of each class,</li>
+ * <li>each operation of each class,</li>
+ * <li>each enum,</li>
+ * <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @see org.eclipse.emfforms.datatemplate.DataTemplateFactory
+ * @model kind="package"
+ * @generated
+ */
+public interface DataTemplatePackage extends EPackage {
+	/**
+	 * The package name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNAME = "datatemplate";
+
+	/**
+	 * The package namespace URI.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNS_URI = "http://org/eclipse/emfforms/datatemplate/model";
+
+	/**
+	 * The package namespace name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNS_PREFIX = "org.eclipse.emfforms.datatemplate.model";
+
+	/**
+	 * The singleton instance of the package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	DataTemplatePackage eINSTANCE = org.eclipse.emfforms.datatemplate.impl.DataTemplatePackageImpl.init();
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.emfforms.datatemplate.impl.TemplateImpl <em>Template</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.emfforms.datatemplate.impl.TemplateImpl
+	 * @see org.eclipse.emfforms.datatemplate.impl.DataTemplatePackageImpl#getTemplate()
+	 * @generated
+	 */
+	int TEMPLATE = 0;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TEMPLATE__NAME = 0;
+
+	/**
+	 * The feature id for the '<em><b>Instance</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TEMPLATE__INSTANCE = 1;
+
+	/**
+	 * The number of structural features of the '<em>Template</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TEMPLATE_FEATURE_COUNT = 2;
+
+	/**
+	 * The number of operations of the '<em>Template</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TEMPLATE_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.emfforms.datatemplate.impl.TemplateCollectionImpl <em>Template Collection</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.emfforms.datatemplate.impl.TemplateCollectionImpl
+	 * @see org.eclipse.emfforms.datatemplate.impl.DataTemplatePackageImpl#getTemplateCollection()
+	 * @generated
+	 */
+	int TEMPLATE_COLLECTION = 1;
+
+	/**
+	 * The feature id for the '<em><b>Templates</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TEMPLATE_COLLECTION__TEMPLATES = 0;
+
+	/**
+	 * The number of structural features of the '<em>Template Collection</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TEMPLATE_COLLECTION_FEATURE_COUNT = 1;
+
+	/**
+	 * The number of operations of the '<em>Template Collection</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TEMPLATE_COLLECTION_OPERATION_COUNT = 0;
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.emfforms.datatemplate.Template <em>Template</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Template</em>'.
+	 * @see org.eclipse.emfforms.datatemplate.Template
+	 * @generated
+	 */
+	EClass getTemplate();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.emfforms.datatemplate.Template#getName <em>Name</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Name</em>'.
+	 * @see org.eclipse.emfforms.datatemplate.Template#getName()
+	 * @see #getTemplate()
+	 * @generated
+	 */
+	EAttribute getTemplate_Name();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.emfforms.datatemplate.Template#getInstance <em>Instance</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Instance</em>'.
+	 * @see org.eclipse.emfforms.datatemplate.Template#getInstance()
+	 * @see #getTemplate()
+	 * @generated
+	 */
+	EReference getTemplate_Instance();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.emfforms.datatemplate.TemplateCollection <em>Template Collection</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Template Collection</em>'.
+	 * @see org.eclipse.emfforms.datatemplate.TemplateCollection
+	 * @generated
+	 */
+	EClass getTemplateCollection();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.eclipse.emfforms.datatemplate.TemplateCollection#getTemplates <em>Templates</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Templates</em>'.
+	 * @see org.eclipse.emfforms.datatemplate.TemplateCollection#getTemplates()
+	 * @see #getTemplateCollection()
+	 * @generated
+	 */
+	EReference getTemplateCollection_Templates();
+
+	/**
+	 * 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.
+	 * @generated
+	 */
+	DataTemplateFactory getDataTemplateFactory();
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * Defines literals for the meta objects that represent
+	 * <ul>
+	 * <li>each class,</li>
+	 * <li>each feature of each class,</li>
+	 * <li>each operation of each class,</li>
+	 * <li>each enum,</li>
+	 * <li>and each data type</li>
+	 * </ul>
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	interface Literals {
+		/**
+		 * The meta object literal for the '{@link org.eclipse.emfforms.datatemplate.impl.TemplateImpl <em>Template</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.emfforms.datatemplate.impl.TemplateImpl
+		 * @see org.eclipse.emfforms.datatemplate.impl.DataTemplatePackageImpl#getTemplate()
+		 * @generated
+		 */
+		EClass TEMPLATE = eINSTANCE.getTemplate();
+
+		/**
+		 * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute TEMPLATE__NAME = eINSTANCE.getTemplate_Name();
+
+		/**
+		 * The meta object literal for the '<em><b>Instance</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference TEMPLATE__INSTANCE = eINSTANCE.getTemplate_Instance();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.emfforms.datatemplate.impl.TemplateCollectionImpl <em>Template Collection</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.emfforms.datatemplate.impl.TemplateCollectionImpl
+		 * @see org.eclipse.emfforms.datatemplate.impl.DataTemplatePackageImpl#getTemplateCollection()
+		 * @generated
+		 */
+		EClass TEMPLATE_COLLECTION = eINSTANCE.getTemplateCollection();
+
+		/**
+		 * The meta object literal for the '<em><b>Templates</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference TEMPLATE_COLLECTION__TEMPLATES = eINSTANCE.getTemplateCollection_Templates();
+
+	}
+
+} // DataTemplatePackage
diff --git a/bundles/org.eclipse.emfforms.datatemplate.model/src/org/eclipse/emfforms/datatemplate/Template.java b/bundles/org.eclipse.emfforms.datatemplate.model/src/org/eclipse/emfforms/datatemplate/Template.java
new file mode 100644
index 0000000..510d161
--- /dev/null
+++ b/bundles/org.eclipse.emfforms.datatemplate.model/src/org/eclipse/emfforms/datatemplate/Template.java
@@ -0,0 +1,86 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Muenchen GmbH - initial API and implementation
+ */
+package org.eclipse.emfforms.datatemplate;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Template</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.emfforms.datatemplate.Template#getName <em>Name</em>}</li>
+ *   <li>{@link org.eclipse.emfforms.datatemplate.Template#getInstance <em>Instance</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.emfforms.datatemplate.DataTemplatePackage#getTemplate()
+ * @model
+ * @generated
+ */
+public interface Template extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Name</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Name</em>' attribute.
+	 * @see #setName(String)
+	 * @see org.eclipse.emfforms.datatemplate.DataTemplatePackage#getTemplate_Name()
+	 * @model
+	 * @generated
+	 */
+	String getName();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.emfforms.datatemplate.Template#getName <em>Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Name</em>' attribute.
+	 * @see #getName()
+	 * @generated
+	 */
+	void setName(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Instance</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Instance</em>' containment reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Instance</em>' containment reference.
+	 * @see #setInstance(EObject)
+	 * @see org.eclipse.emfforms.datatemplate.DataTemplatePackage#getTemplate_Instance()
+	 * @model containment="true"
+	 * @generated
+	 */
+	EObject getInstance();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.emfforms.datatemplate.Template#getInstance <em>Instance</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Instance</em>' containment reference.
+	 * @see #getInstance()
+	 * @generated
+	 */
+	void setInstance(EObject value);
+
+} // Template
diff --git a/bundles/org.eclipse.emfforms.datatemplate.model/src/org/eclipse/emfforms/datatemplate/TemplateCollection.java b/bundles/org.eclipse.emfforms.datatemplate.model/src/org/eclipse/emfforms/datatemplate/TemplateCollection.java
new file mode 100644
index 0000000..2927a98
--- /dev/null
+++ b/bundles/org.eclipse.emfforms.datatemplate.model/src/org/eclipse/emfforms/datatemplate/TemplateCollection.java
@@ -0,0 +1,50 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Muenchen GmbH - initial API and implementation
+ */
+package org.eclipse.emfforms.datatemplate;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Template Collection</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.emfforms.datatemplate.TemplateCollection#getTemplates <em>Templates</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.emfforms.datatemplate.DataTemplatePackage#getTemplateCollection()
+ * @model
+ * @generated
+ */
+public interface TemplateCollection extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Templates</b></em>' containment reference list.
+	 * The list contents are of type {@link org.eclipse.emfforms.datatemplate.Template}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Templates</em>' containment reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Templates</em>' containment reference list.
+	 * @see org.eclipse.emfforms.datatemplate.DataTemplatePackage#getTemplateCollection_Templates()
+	 * @model containment="true"
+	 * @generated
+	 */
+	EList<Template> getTemplates();
+
+} // TemplateCollection
diff --git a/bundles/org.eclipse.emfforms.datatemplate.model/src/org/eclipse/emfforms/datatemplate/impl/DataTemplateFactoryImpl.java b/bundles/org.eclipse.emfforms.datatemplate.model/src/org/eclipse/emfforms/datatemplate/impl/DataTemplateFactoryImpl.java
new file mode 100644
index 0000000..84a93a9
--- /dev/null
+++ b/bundles/org.eclipse.emfforms.datatemplate.model/src/org/eclipse/emfforms/datatemplate/impl/DataTemplateFactoryImpl.java
@@ -0,0 +1,128 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Muenchen GmbH - initial API and implementation
+ */
+package org.eclipse.emfforms.datatemplate.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+import org.eclipse.emfforms.datatemplate.DataTemplateFactory;
+import org.eclipse.emfforms.datatemplate.DataTemplatePackage;
+import org.eclipse.emfforms.datatemplate.Template;
+import org.eclipse.emfforms.datatemplate.TemplateCollection;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * 
+ * @generated
+ */
+public class DataTemplateFactoryImpl extends EFactoryImpl implements DataTemplateFactory {
+	/**
+	 * Creates the default factory implementation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public static DataTemplateFactory init() {
+		try {
+			final DataTemplateFactory theDataTemplateFactory = (DataTemplateFactory) EPackage.Registry.INSTANCE
+				.getEFactory(DataTemplatePackage.eNS_URI);
+			if (theDataTemplateFactory != null) {
+				return theDataTemplateFactory;
+			}
+		} catch (final Exception exception) {
+			EcorePlugin.INSTANCE.log(exception);
+		}
+		return new DataTemplateFactoryImpl();
+	}
+
+	/**
+	 * Creates an instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public DataTemplateFactoryImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public EObject create(EClass eClass) {
+		switch (eClass.getClassifierID()) {
+		case DataTemplatePackage.TEMPLATE:
+			return createTemplate();
+		case DataTemplatePackage.TEMPLATE_COLLECTION:
+			return createTemplateCollection();
+		default:
+			throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public Template createTemplate() {
+		final TemplateImpl template = new TemplateImpl();
+		return template;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public TemplateCollection createTemplateCollection() {
+		final TemplateCollectionImpl templateCollection = new TemplateCollectionImpl();
+		return templateCollection;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public DataTemplatePackage getDataTemplatePackage() {
+		return (DataTemplatePackage) getEPackage();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @deprecated
+	 * @generated
+	 */
+	@Deprecated
+	public static DataTemplatePackage getPackage() {
+		return DataTemplatePackage.eINSTANCE;
+	}
+
+} // DataTemplateFactoryImpl
diff --git a/bundles/org.eclipse.emfforms.datatemplate.model/src/org/eclipse/emfforms/datatemplate/impl/DataTemplatePackageImpl.java b/bundles/org.eclipse.emfforms.datatemplate.model/src/org/eclipse/emfforms/datatemplate/impl/DataTemplatePackageImpl.java
new file mode 100644
index 0000000..59dd0cf
--- /dev/null
+++ b/bundles/org.eclipse.emfforms.datatemplate.model/src/org/eclipse/emfforms/datatemplate/impl/DataTemplatePackageImpl.java
@@ -0,0 +1,274 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Muenchen GmbH - initial API and implementation
+ */
+package org.eclipse.emfforms.datatemplate.impl;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.EcorePackage;
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+import org.eclipse.emfforms.datatemplate.DataTemplateFactory;
+import org.eclipse.emfforms.datatemplate.DataTemplatePackage;
+import org.eclipse.emfforms.datatemplate.Template;
+import org.eclipse.emfforms.datatemplate.TemplateCollection;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Package</b>.
+ * <!-- end-user-doc -->
+ * 
+ * @generated
+ */
+public class DataTemplatePackageImpl extends EPackageImpl implements DataTemplatePackage {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private EClass templateEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private EClass templateCollectionEClass = 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>
+	 * Note: the correct way to create the package is via the static
+	 * factory method {@link #init init()}, which also performs
+	 * initialization of the package, or returns the registered package,
+	 * if one already exists.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see org.eclipse.emf.ecore.EPackage.Registry
+	 * @see org.eclipse.emfforms.datatemplate.DataTemplatePackage#eNS_URI
+	 * @see #init()
+	 * @generated
+	 */
+	private DataTemplatePackageImpl() {
+		super(eNS_URI, DataTemplateFactory.eINSTANCE);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private static boolean isInited = false;
+
+	/**
+	 * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
+	 *
+	 * <p>
+	 * This method is used to initialize {@link DataTemplatePackage#eINSTANCE} when that field is accessed.
+	 * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see #eNS_URI
+	 * @see #createPackageContents()
+	 * @see #initializePackageContents()
+	 * @generated
+	 */
+	public static DataTemplatePackage init() {
+		if (isInited) {
+			return (DataTemplatePackage) EPackage.Registry.INSTANCE.getEPackage(DataTemplatePackage.eNS_URI);
+		}
+
+		// Obtain or create and register package
+		final DataTemplatePackageImpl theDataTemplatePackage = (DataTemplatePackageImpl) (EPackage.Registry.INSTANCE
+			.get(eNS_URI) instanceof DataTemplatePackageImpl ? EPackage.Registry.INSTANCE.get(eNS_URI)
+				: new DataTemplatePackageImpl());
+
+		isInited = true;
+
+		// Initialize simple dependencies
+		EcorePackage.eINSTANCE.eClass();
+
+		// Create package meta-data objects
+		theDataTemplatePackage.createPackageContents();
+
+		// Initialize created meta-data
+		theDataTemplatePackage.initializePackageContents();
+
+		// Mark meta-data to indicate it can't be changed
+		theDataTemplatePackage.freeze();
+
+		// Update the registry and return the package
+		EPackage.Registry.INSTANCE.put(DataTemplatePackage.eNS_URI, theDataTemplatePackage);
+		return theDataTemplatePackage;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public EClass getTemplate() {
+		return templateEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public EAttribute getTemplate_Name() {
+		return (EAttribute) templateEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public EReference getTemplate_Instance() {
+		return (EReference) templateEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public EClass getTemplateCollection() {
+		return templateCollectionEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public EReference getTemplateCollection_Templates() {
+		return (EReference) templateCollectionEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public DataTemplateFactory getDataTemplateFactory() {
+		return (DataTemplateFactory) getEFactoryInstance();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private boolean isCreated = false;
+
+	/**
+	 * Creates the meta-model objects for the package. This method is
+	 * guarded to have no affect on any invocation but its first.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public void createPackageContents() {
+		if (isCreated) {
+			return;
+		}
+		isCreated = true;
+
+		// Create classes and their features
+		templateEClass = createEClass(TEMPLATE);
+		createEAttribute(templateEClass, TEMPLATE__NAME);
+		createEReference(templateEClass, TEMPLATE__INSTANCE);
+
+		templateCollectionEClass = createEClass(TEMPLATE_COLLECTION);
+		createEReference(templateCollectionEClass, TEMPLATE_COLLECTION__TEMPLATES);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private boolean isInitialized = false;
+
+	/**
+	 * Complete the initialization of the package and its meta-model. This
+	 * method is guarded to have no affect on any invocation but its first.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public void initializePackageContents() {
+		if (isInitialized) {
+			return;
+		}
+		isInitialized = true;
+
+		// Initialize package
+		setName(eNAME);
+		setNsPrefix(eNS_PREFIX);
+		setNsURI(eNS_URI);
+
+		// Obtain other dependent packages
+		final EcorePackage theEcorePackage = (EcorePackage) EPackage.Registry.INSTANCE
+			.getEPackage(EcorePackage.eNS_URI);
+
+		// Create type parameters
+
+		// Set bounds for type parameters
+
+		// Add supertypes to classes
+
+		// Initialize classes, features, and operations; add parameters
+		initEClass(templateEClass, Template.class, "Template", !IS_ABSTRACT, !IS_INTERFACE,
+			IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getTemplate_Name(), ecorePackage.getEString(), "name", null, 0, 1, Template.class, !IS_TRANSIENT,
+			!IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getTemplate_Instance(), theEcorePackage.getEObject(), null, "instance", null, 0, 1,
+			Template.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES,
+			!IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(templateCollectionEClass, TemplateCollection.class, "TemplateCollection", !IS_ABSTRACT,
+			!IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getTemplateCollection_Templates(), getTemplate(), null, "templates", null, 0, -1,
+			TemplateCollection.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES,
+			!IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		// Create resource
+		createResource(eNS_URI);
+	}
+
+} // DataTemplatePackageImpl
diff --git a/bundles/org.eclipse.emfforms.datatemplate.model/src/org/eclipse/emfforms/datatemplate/impl/TemplateCollectionImpl.java b/bundles/org.eclipse.emfforms.datatemplate.model/src/org/eclipse/emfforms/datatemplate/impl/TemplateCollectionImpl.java
new file mode 100644
index 0000000..88eddbc
--- /dev/null
+++ b/bundles/org.eclipse.emfforms.datatemplate.model/src/org/eclipse/emfforms/datatemplate/impl/TemplateCollectionImpl.java
@@ -0,0 +1,167 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Muenchen GmbH - initial API and implementation
+ */
+package org.eclipse.emfforms.datatemplate.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+import org.eclipse.emfforms.datatemplate.DataTemplatePackage;
+import org.eclipse.emfforms.datatemplate.Template;
+import org.eclipse.emfforms.datatemplate.TemplateCollection;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Template Collection</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.emfforms.datatemplate.impl.TemplateCollectionImpl#getTemplates <em>Templates</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class TemplateCollectionImpl extends MinimalEObjectImpl.Container implements TemplateCollection {
+	/**
+	 * The cached value of the '{@link #getTemplates() <em>Templates</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see #getTemplates()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Template> templates;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	protected TemplateCollectionImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return DataTemplatePackage.Literals.TEMPLATE_COLLECTION;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public EList<Template> getTemplates() {
+		if (templates == null) {
+			templates = new EObjectContainmentEList<Template>(Template.class, this,
+				DataTemplatePackage.TEMPLATE_COLLECTION__TEMPLATES);
+		}
+		return templates;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+		case DataTemplatePackage.TEMPLATE_COLLECTION__TEMPLATES:
+			return ((InternalEList<?>) getTemplates()).basicRemove(otherEnd, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case DataTemplatePackage.TEMPLATE_COLLECTION__TEMPLATES:
+			return getTemplates();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case DataTemplatePackage.TEMPLATE_COLLECTION__TEMPLATES:
+			getTemplates().clear();
+			getTemplates().addAll((Collection<? extends Template>) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case DataTemplatePackage.TEMPLATE_COLLECTION__TEMPLATES:
+			getTemplates().clear();
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case DataTemplatePackage.TEMPLATE_COLLECTION__TEMPLATES:
+			return templates != null && !templates.isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+
+} // TemplateCollectionImpl
diff --git a/bundles/org.eclipse.emfforms.datatemplate.model/src/org/eclipse/emfforms/datatemplate/impl/TemplateImpl.java b/bundles/org.eclipse.emfforms.datatemplate.model/src/org/eclipse/emfforms/datatemplate/impl/TemplateImpl.java
new file mode 100644
index 0000000..20b100e
--- /dev/null
+++ b/bundles/org.eclipse.emfforms.datatemplate.model/src/org/eclipse/emfforms/datatemplate/impl/TemplateImpl.java
@@ -0,0 +1,285 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Muenchen GmbH - initial API and implementation
+ */
+package org.eclipse.emfforms.datatemplate.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+import org.eclipse.emfforms.datatemplate.DataTemplatePackage;
+import org.eclipse.emfforms.datatemplate.Template;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Template</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.emfforms.datatemplate.impl.TemplateImpl#getName <em>Name</em>}</li>
+ * <li>{@link org.eclipse.emfforms.datatemplate.impl.TemplateImpl#getInstance <em>Instance</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class TemplateImpl extends MinimalEObjectImpl.Container implements Template {
+	/**
+	 * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see #getName()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String NAME_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see #getName()
+	 * @generated
+	 * @ordered
+	 */
+	protected String name = NAME_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getInstance() <em>Instance</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see #getInstance()
+	 * @generated
+	 * @ordered
+	 */
+	protected EObject instance;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	protected TemplateImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return DataTemplatePackage.Literals.TEMPLATE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public String getName() {
+		return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public void setName(String newName) {
+		final String oldName = name;
+		name = newName;
+		if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, DataTemplatePackage.TEMPLATE__NAME, oldName, name));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public EObject getInstance() {
+		return instance;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public NotificationChain basicSetInstance(EObject newInstance, NotificationChain msgs) {
+		final EObject oldInstance = instance;
+		instance = newInstance;
+		if (eNotificationRequired()) {
+			final ENotificationImpl notification = new ENotificationImpl(this, Notification.SET,
+				DataTemplatePackage.TEMPLATE__INSTANCE, oldInstance, newInstance);
+			if (msgs == null) {
+				msgs = notification;
+			} else {
+				msgs.add(notification);
+			}
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public void setInstance(EObject newInstance) {
+		if (newInstance != instance) {
+			NotificationChain msgs = null;
+			if (instance != null) {
+				msgs = ((InternalEObject) instance).eInverseRemove(this,
+					EOPPOSITE_FEATURE_BASE - DataTemplatePackage.TEMPLATE__INSTANCE, null, msgs);
+			}
+			if (newInstance != null) {
+				msgs = ((InternalEObject) newInstance).eInverseAdd(this,
+					EOPPOSITE_FEATURE_BASE - DataTemplatePackage.TEMPLATE__INSTANCE, null, msgs);
+			}
+			msgs = basicSetInstance(newInstance, msgs);
+			if (msgs != null) {
+				msgs.dispatch();
+			}
+		} else if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, DataTemplatePackage.TEMPLATE__INSTANCE, newInstance,
+				newInstance));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+		case DataTemplatePackage.TEMPLATE__INSTANCE:
+			return basicSetInstance(null, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case DataTemplatePackage.TEMPLATE__NAME:
+			return getName();
+		case DataTemplatePackage.TEMPLATE__INSTANCE:
+			return getInstance();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case DataTemplatePackage.TEMPLATE__NAME:
+			setName((String) newValue);
+			return;
+		case DataTemplatePackage.TEMPLATE__INSTANCE:
+			setInstance((EObject) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case DataTemplatePackage.TEMPLATE__NAME:
+			setName(NAME_EDEFAULT);
+			return;
+		case DataTemplatePackage.TEMPLATE__INSTANCE:
+			setInstance((EObject) null);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case DataTemplatePackage.TEMPLATE__NAME:
+			return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+		case DataTemplatePackage.TEMPLATE__INSTANCE:
+			return instance != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) {
+			return super.toString();
+		}
+
+		final StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (name: ");
+		result.append(name);
+		result.append(')');
+		return result.toString();
+	}
+
+} // TemplateImpl
diff --git a/bundles/org.eclipse.emfforms.datatemplate.model/src/org/eclipse/emfforms/datatemplate/util/DataTemplateAdapterFactory.java b/bundles/org.eclipse.emfforms.datatemplate.model/src/org/eclipse/emfforms/datatemplate/util/DataTemplateAdapterFactory.java
new file mode 100644
index 0000000..25665e7
--- /dev/null
+++ b/bundles/org.eclipse.emfforms.datatemplate.model/src/org/eclipse/emfforms/datatemplate/util/DataTemplateAdapterFactory.java
@@ -0,0 +1,158 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Muenchen GmbH - initial API and implementation
+ */
+package org.eclipse.emfforms.datatemplate.util;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notifier;
+import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emfforms.datatemplate.DataTemplatePackage;
+import org.eclipse.emfforms.datatemplate.Template;
+import org.eclipse.emfforms.datatemplate.TemplateCollection;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Adapter Factory</b> for the model.
+ * It provides an adapter <code>createXXX</code> method for each class of the model.
+ * <!-- end-user-doc -->
+ * 
+ * @see org.eclipse.emfforms.datatemplate.DataTemplatePackage
+ * @generated
+ */
+public class DataTemplateAdapterFactory extends AdapterFactoryImpl {
+	/**
+	 * The cached model package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	protected static DataTemplatePackage modelPackage;
+
+	/**
+	 * Creates an instance of the adapter factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public DataTemplateAdapterFactory() {
+		if (modelPackage == null) {
+			modelPackage = DataTemplatePackage.eINSTANCE;
+		}
+	}
+
+	/**
+	 * Returns whether this factory is applicable for the type of the object.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns <code>true</code> if the object is either the model's package or is an instance
+	 * object of the model.
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return whether this factory is applicable for the type of the object.
+	 * @generated
+	 */
+	@Override
+	public boolean isFactoryForType(Object object) {
+		if (object == modelPackage) {
+			return true;
+		}
+		if (object instanceof EObject) {
+			return ((EObject) object).eClass().getEPackage() == modelPackage;
+		}
+		return false;
+	}
+
+	/**
+	 * The switch that delegates to the <code>createXXX</code> methods.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	protected DataTemplateSwitch<Adapter> modelSwitch = new DataTemplateSwitch<Adapter>() {
+		@Override
+		public Adapter caseTemplate(Template object) {
+			return createTemplateAdapter();
+		}
+
+		@Override
+		public Adapter caseTemplateCollection(TemplateCollection object) {
+			return createTemplateCollectionAdapter();
+		}
+
+		@Override
+		public Adapter defaultCase(EObject object) {
+			return createEObjectAdapter();
+		}
+	};
+
+	/**
+	 * Creates an adapter for the <code>target</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @param target the object to adapt.
+	 * @return the adapter for the <code>target</code>.
+	 * @generated
+	 */
+	@Override
+	public Adapter createAdapter(Notifier target) {
+		return modelSwitch.doSwitch((EObject) target);
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.emfforms.datatemplate.Template
+	 * <em>Template</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.emfforms.datatemplate.Template
+	 * @generated
+	 */
+	public Adapter createTemplateAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.emfforms.datatemplate.TemplateCollection
+	 * <em>Template Collection</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.emfforms.datatemplate.TemplateCollection
+	 * @generated
+	 */
+	public Adapter createTemplateCollectionAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for the default case.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null.
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the new adapter.
+	 * @generated
+	 */
+	public Adapter createEObjectAdapter() {
+		return null;
+	}
+
+} // DataTemplateAdapterFactory
diff --git a/bundles/org.eclipse.emfforms.datatemplate.model/src/org/eclipse/emfforms/datatemplate/util/DataTemplateSwitch.java b/bundles/org.eclipse.emfforms.datatemplate.model/src/org/eclipse/emfforms/datatemplate/util/DataTemplateSwitch.java
new file mode 100644
index 0000000..ce18a7c
--- /dev/null
+++ b/bundles/org.eclipse.emfforms.datatemplate.model/src/org/eclipse/emfforms/datatemplate/util/DataTemplateSwitch.java
@@ -0,0 +1,154 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Muenchen GmbH - initial API and implementation
+ */
+package org.eclipse.emfforms.datatemplate.util;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.util.Switch;
+import org.eclipse.emfforms.datatemplate.DataTemplatePackage;
+import org.eclipse.emfforms.datatemplate.Template;
+import org.eclipse.emfforms.datatemplate.TemplateCollection;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Switch</b> for the model's inheritance hierarchy.
+ * It supports the call {@link #doSwitch(EObject) doSwitch(object)}
+ * to invoke the <code>caseXXX</code> method for each class of the model,
+ * starting with the actual class of the object
+ * and proceeding up the inheritance hierarchy
+ * until a non-null result is returned,
+ * which is the result of the switch.
+ * <!-- end-user-doc -->
+ * 
+ * @see org.eclipse.emfforms.datatemplate.DataTemplatePackage
+ * @generated
+ */
+public class DataTemplateSwitch<T> extends Switch<T> {
+	/**
+	 * The cached model package
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	protected static DataTemplatePackage modelPackage;
+
+	/**
+	 * Creates an instance of the switch.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public DataTemplateSwitch() {
+		if (modelPackage == null) {
+			modelPackage = DataTemplatePackage.eINSTANCE;
+		}
+	}
+
+	/**
+	 * Checks whether this is a switch for the given package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @param ePackage the package in question.
+	 * @return whether this is a switch for the given package.
+	 * @generated
+	 */
+	@Override
+	protected boolean isSwitchFor(EPackage ePackage) {
+		return ePackage == modelPackage;
+	}
+
+	/**
+	 * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that
+	 * result.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the first non-null result returned by a <code>caseXXX</code> call.
+	 * @generated
+	 */
+	@Override
+	protected T doSwitch(int classifierID, EObject theEObject) {
+		switch (classifierID) {
+		case DataTemplatePackage.TEMPLATE: {
+			final Template template = (Template) theEObject;
+			T result = caseTemplate(template);
+			if (result == null) {
+				result = defaultCase(theEObject);
+			}
+			return result;
+		}
+		case DataTemplatePackage.TEMPLATE_COLLECTION: {
+			final TemplateCollection templateCollection = (TemplateCollection) theEObject;
+			T result = caseTemplateCollection(templateCollection);
+			if (result == null) {
+				result = defaultCase(theEObject);
+			}
+			return result;
+		}
+		default:
+			return defaultCase(theEObject);
+		}
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Template</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>Template</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseTemplate(Template object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Template Collection</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>Template Collection</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseTemplateCollection(TemplateCollection object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch, but this is the last case anyway.
+	 * <!-- end-user-doc -->
+	 * 
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject)
+	 * @generated
+	 */
+	@Override
+	public T defaultCase(EObject object) {
+		return null;
+	}
+
+} // DataTemplateSwitch
diff --git a/bundles/org.eclipse.emfforms.datatemplate.tooling/.checkstyle b/bundles/org.eclipse.emfforms.datatemplate.tooling/.checkstyle
new file mode 100644
index 0000000..19c5477
--- /dev/null
+++ b/bundles/org.eclipse.emfforms.datatemplate.tooling/.checkstyle
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<fileset-config file-format-version="1.2.0" simple-config="false" sync-formatter="false">
+  <local-check-config name="ESMCheckstyle" location="/org.eclipse.emf.ecp.releng/checkstyle/esmCheckstyle.xml" type="project" description="">
+    <additional-data name="protect-config-file" value="false"/>
+  </local-check-config>
+  <fileset name="Java Files" enabled="true" check-config-name="ESMCheckstyle" local="true">
+    <file-match-pattern match-pattern=".java" include-pattern="true"/>
+  </fileset>
+</fileset-config>
diff --git a/bundles/org.eclipse.emfforms.datatemplate.tooling/.classpath b/bundles/org.eclipse.emfforms.datatemplate.tooling/.classpath
new file mode 100644
index 0000000..ad32c83
--- /dev/null
+++ b/bundles/org.eclipse.emfforms.datatemplate.tooling/.classpath
@@ -0,0 +1,7 @@
+<?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.6"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/bundles/org.eclipse.emfforms.datatemplate.tooling/.project b/bundles/org.eclipse.emfforms.datatemplate.tooling/.project
new file mode 100644
index 0000000..1eec27c
--- /dev/null
+++ b/bundles/org.eclipse.emfforms.datatemplate.tooling/.project
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.emfforms.datatemplate.tooling</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>net.sf.eclipsecs.core.CheckstyleBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ds.core.builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>net.sf.eclipsecs.core.CheckstyleNature</nature>
+	</natures>
+</projectDescription>
diff --git a/bundles/org.eclipse.emfforms.datatemplate.tooling/.settings/org.eclipse.core.resources.prefs b/bundles/org.eclipse.emfforms.datatemplate.tooling/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..f548abb
--- /dev/null
+++ b/bundles/org.eclipse.emfforms.datatemplate.tooling/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,6 @@
+eclipse.preferences.version=1
+
+encoding//model/etypes.ecore=UTF-8
+
+
+encoding/<project>=UTF-8
diff --git a/bundles/org.eclipse.emfforms.datatemplate.tooling/.settings/org.eclipse.core.runtime.prefs b/bundles/org.eclipse.emfforms.datatemplate.tooling/.settings/org.eclipse.core.runtime.prefs
new file mode 100644
index 0000000..5a0ad22
--- /dev/null
+++ b/bundles/org.eclipse.emfforms.datatemplate.tooling/.settings/org.eclipse.core.runtime.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+line.separator=\n
diff --git a/bundles/org.eclipse.emfforms.datatemplate.tooling/.settings/org.eclipse.jdt.core.prefs b/bundles/org.eclipse.emfforms.datatemplate.tooling/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..c948297
--- /dev/null
+++ b/bundles/org.eclipse.emfforms.datatemplate.tooling/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,418 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.builder.cleanOutputFolder=clean
+org.eclipse.jdt.core.builder.duplicateResourceTask=warning
+org.eclipse.jdt.core.builder.invalidClasspath=abort
+org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
+org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=
+org.eclipse.jdt.core.circularClasspath=error
+org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
+org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
+org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error
+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.annotation.inheritNullAnnotations=disabled
+org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
+org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
+org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
+org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.6
+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.doc.comment.support=enabled
+org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
+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=enabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
+org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=disabled
+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.invalidJavadoc=warning
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=disabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=public
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
+org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=warning
+org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
+org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=public
+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=warning
+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.nonnullParameterAnnotationDropped=warning
+org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
+org.eclipse.jdt.core.compiler.problem.nullReference=warning
+org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
+org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
+org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
+org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
+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.syntacticNullAnalysisForFields=disabled
+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.unclosedCloseable=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=warning
+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.unusedTypeParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.source=1.6
+org.eclipse.jdt.core.compiler.taskCaseSensitive=enabled
+org.eclipse.jdt.core.compiler.taskPriorities=NORMAL,HIGH,HIGH,LOW,LOW,LOW,LOW,LOW,NORMAL
+org.eclipse.jdt.core.compiler.taskTags=TODO,FIXME,XXX,PERF,MEM,POLISH,@generated NOT,@ADDED,APITODO
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+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_binary_expression=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_method_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=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_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=false
+org.eclipse.jdt.core.formatter.comment.format_block_comments=true
+org.eclipse.jdt.core.formatter.comment.format_header=true
+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=do not 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=1
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=1
+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=do not 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_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_binary_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_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_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_unary_operator=do not 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_binary_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_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_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_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=false
+org.eclipse.jdt.core.formatter.join_wrapped_lines=false
+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=120
+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_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
+org.eclipse.jdt.core.incompatibleJDKLevel=ignore
+org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/bundles/org.eclipse.emfforms.datatemplate.tooling/.settings/org.eclipse.jdt.launching.prefs b/bundles/org.eclipse.emfforms.datatemplate.tooling/.settings/org.eclipse.jdt.launching.prefs
new file mode 100644
index 0000000..3bb2352
--- /dev/null
+++ b/bundles/org.eclipse.emfforms.datatemplate.tooling/.settings/org.eclipse.jdt.launching.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.launching.PREF_STRICTLY_COMPATIBLE_JRE_NOT_AVAILABLE=ignore
diff --git a/bundles/org.eclipse.emfforms.datatemplate.tooling/.settings/org.eclipse.jdt.ui.prefs b/bundles/org.eclipse.emfforms.datatemplate.tooling/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 0000000..8bc4bb4
--- /dev/null
+++ b/bundles/org.eclipse.emfforms.datatemplate.tooling/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,127 @@
+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_functional_interfaces=false
+cleanup.convert_to_enhanced_for_loop=false
+cleanup.correct_indentation=false
+cleanup.format_source_code=true
+cleanup.format_source_code_changes_only=false
+cleanup.insert_inferred_type_arguments=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=true
+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=true
+cleanup.remove_redundant_type_arguments=true
+cleanup.remove_trailing_whitespaces=true
+cleanup.remove_trailing_whitespaces_all=true
+cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_casts=false
+cleanup.remove_unnecessary_nls_tags=false
+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=true
+cleanup.remove_unused_private_types=true
+cleanup.sort_members=false
+cleanup.sort_members_all=false
+cleanup.use_anonymous_class_creation=false
+cleanup.use_blocks=true
+cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_lambda=true
+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.use_type_arguments=false
+cleanup_profile=_esmCleanUp
+cleanup_settings_version=2
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+formatter_profile=_esmFormatter
+formatter_settings_version=12
+org.eclipse.jdt.ui.exception.name=ex
+org.eclipse.jdt.ui.gettersetter.use.is=true
+org.eclipse.jdt.ui.javadoc=true
+org.eclipse.jdt.ui.keywordthis=false
+org.eclipse.jdt.ui.overrideannotation=true
+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 * Copyright (c) 2011-${year} EclipseSource Muenchen GmbH and others.\r\n * \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 * ${user} - initial API and implementation\r\n ******************************************************************************/</template><template autoinsert\="true" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * @author ${user}\r\n *\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment"/><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 * {@inheritDoc}\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">\t\t\t// TODO Auto-generated catch block\r\n\t\t\t// Do NOT catch all Exceptions ("catch (Exception e)")\r\n\t\t\t// Log AND handle Exceptions if possible \r\n            //\r\n            // You can just uncomment one of the lines below to log an exception\:\r\n\t\t\t// logException will show the logged excpetion to the user\r\n\t\t\t// ModelUtil.logException(${exception_var});\r\n\t\t\t// ModelUtil.logException("YOUR MESSAGE HERE", ${exception_var});\r\n\t\t\t// logWarning will only add the message to the error log\r\n\t\t\t// ModelUtil.logWarning("YOUR MESSAGE HERE", ${exception_var});\r\n\t\t\t// ModelUtil.logWarning("YOUR MESSAGE HERE");\r\n\t\t\t//\t\t\t\r\n\t\t\t// If handling is not possible declare and rethrow Exception</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_functional_interfaces=false
+sp_cleanup.convert_to_enhanced_for_loop=false
+sp_cleanup.correct_indentation=false
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.insert_inferred_type_arguments=false
+sp_cleanup.make_local_variable_final=true
+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=true
+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=true
+sp_cleanup.remove_redundant_type_arguments=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=false
+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=true
+sp_cleanup.remove_unused_private_types=true
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.use_anonymous_class_creation=false
+sp_cleanup.use_blocks=true
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_lambda=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
+sp_cleanup.use_type_arguments=false
diff --git a/bundles/org.eclipse.emfforms.datatemplate.tooling/.settings/org.eclipse.ltk.core.refactoring.prefs b/bundles/org.eclipse.emfforms.datatemplate.tooling/.settings/org.eclipse.ltk.core.refactoring.prefs
new file mode 100644
index 0000000..864e30f
--- /dev/null
+++ b/bundles/org.eclipse.emfforms.datatemplate.tooling/.settings/org.eclipse.ltk.core.refactoring.prefs
@@ -0,0 +1,3 @@
+#Thu Feb 04 09:44:24 CET 2010
+eclipse.preferences.version=1
+org.eclipse.ltk.core.refactoring.enable.project.refactoring.history=false
diff --git a/bundles/org.eclipse.emfforms.datatemplate.tooling/.settings/org.eclipse.pde.api.tools.prefs b/bundles/org.eclipse.emfforms.datatemplate.tooling/.settings/org.eclipse.pde.api.tools.prefs
new file mode 100644
index 0000000..e4e3c00
--- /dev/null
+++ b/bundles/org.eclipse.emfforms.datatemplate.tooling/.settings/org.eclipse.pde.api.tools.prefs
@@ -0,0 +1,97 @@
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_TYPE=Error
+API_USE_SCAN_FIELD_SEVERITY=Error
+API_USE_SCAN_METHOD_SEVERITY=Error
+API_USE_SCAN_TYPE_SEVERITY=Error
+CLASS_ELEMENT_TYPE_ADDED_METHOD=Error
+CLASS_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CLASS_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+CLASS_ELEMENT_TYPE_REMOVED_CONSTRUCTOR=Error
+CLASS_ELEMENT_TYPE_REMOVED_FIELD=Error
+CLASS_ELEMENT_TYPE_REMOVED_METHOD=Error
+CLASS_ELEMENT_TYPE_REMOVED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+ENUM_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ENUM_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ENUM_ELEMENT_TYPE_REMOVED_ENUM_CONSTANT=Error
+ENUM_ELEMENT_TYPE_REMOVED_FIELD=Error
+ENUM_ELEMENT_TYPE_REMOVED_METHOD=Error
+ENUM_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+FIELD_ELEMENT_TYPE_ADDED_VALUE=Error
+FIELD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+FIELD_ELEMENT_TYPE_CHANGED_FINAL_TO_NON_FINAL_STATIC_CONSTANT=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_TYPE=Error
+FIELD_ELEMENT_TYPE_CHANGED_VALUE=Error
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENT=Error
+FIELD_ELEMENT_TYPE_REMOVED_VALUE=Error
+ILLEGAL_EXTEND=Warning
+ILLEGAL_IMPLEMENT=Warning
+ILLEGAL_INSTANTIATE=Warning
+ILLEGAL_OVERRIDE=Warning
+ILLEGAL_REFERENCE=Warning
+INTERFACE_ELEMENT_TYPE_ADDED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_SUPER_INTERFACE_WITH_METHODS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+INVALID_JAVADOC_TAG=Warning
+INVALID_REFERENCE_IN_SYSTEM_LIBRARIES=Error
+LEAK_EXTEND=Warning
+LEAK_FIELD_DECL=Warning
+LEAK_IMPLEMENT=Warning
+LEAK_METHOD_PARAM=Warning
+LEAK_METHOD_RETURN_TYPE=Warning
+METHOD_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+METHOD_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+METHOD_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+MISSING_EE_DESCRIPTIONS=Error
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+UNUSED_PROBLEM_FILTERS=Ignore
+automatically_removed_unused_problem_filters=Disabled
+eclipse.preferences.version=1
+incompatible_api_component_version=Error
+incompatible_api_component_version_include_major_without_breaking_change=Disabled
+incompatible_api_component_version_include_minor_without_api_change=Disabled
+invalid_since_tag_version=Error
+malformed_since_tag=Error
+missing_since_tag=Error
+report_api_breakage_when_major_version_incremented=Disabled
+report_resolution_errors_api_component=Warning
diff --git a/bundles/org.eclipse.emfforms.datatemplate.tooling/.settings/org.eclipse.pde.prefs b/bundles/org.eclipse.emfforms.datatemplate.tooling/.settings/org.eclipse.pde.prefs
new file mode 100644
index 0000000..0bbee3c
--- /dev/null
+++ b/bundles/org.eclipse.emfforms.datatemplate.tooling/.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=1
+compilers.p.missing-version-import-package=1
+compilers.p.missing-version-require-bundle=1
+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/bundles/org.eclipse.emfforms.datatemplate.tooling/META-INF/MANIFEST.MF b/bundles/org.eclipse.emfforms.datatemplate.tooling/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..7fe3b9d
--- /dev/null
+++ b/bundles/org.eclipse.emfforms.datatemplate.tooling/META-INF/MANIFEST.MF
@@ -0,0 +1,42 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: EMFForms DataTemplate Tooling
+Bundle-SymbolicName: org.eclipse.emfforms.datatemplate.tooling;singleton:=true
+Bundle-Version: 1.17.0.qualifier
+Require-Bundle: org.eclipse.core.resources;bundle-version="[3.12.0,4.0.0)",
+ org.eclipse.core.runtime;bundle-version="[3.13.0,4.0.0)",
+ org.eclipse.ui;bundle-version="[3.109.0,4.0.0)",
+ org.eclipse.ui.ide;bundle-version="[3.13.1,4.0.0)",
+ org.eclipse.emfforms.editor;bundle-version="[1.17.0,1.18.0)",
+ org.eclipse.emf.ecore;bundle-version="[2.13.0,3.0.0)",
+ org.eclipse.emf.edit;bundle-version="[2.12.0,3.0.0)",
+ org.eclipse.emfforms.swt.treemasterdetail;bundle-version="[1.17.0,1.18.0)",
+ org.eclipse.emf.ecp.common;bundle-version="[1.17.0,1.18.0)",
+ org.eclipse.emfforms.datatemplate.model;bundle-version="[1.17.0,1.18.0)",
+ org.eclipse.emf.ecore.xmi;bundle-version="[2.13.0,3.0.0)",
+ org.eclipse.emf.edit.ui;bundle-version="[2.13.0,3.0.0)",
+ org.eclipse.emf.ecp.view.model.common;bundle-version="[1.17.0,1.18.0)",
+ org.eclipse.emf.ecp.view.core.swt;bundle-version="[1.17.0,1.18.0)",
+ org.eclipse.emf.ecp.view.model;bundle-version="[1.17.0,1.18.0)",
+ org.eclipse.emf.ecp.view.context;bundle-version="[1.17.0,1.18.0)",
+ org.eclipse.emf.ecp.view.template.model;bundle-version="[1.17.0,1.18.0)",
+ org.eclipse.emfforms.localization;bundle-version="[1.17.0,1.18.0)",
+ org.eclipse.emf.ecp.view.util.swt;bundle-version="[1.17.0,1.18.0)",
+ org.eclipse.emfforms.core.services.editsupport;bundle-version="[1.17.0,1.18.0)",
+ org.eclipse.emfforms.swt.core;bundle-version="[1.17.0,1.18.0)",
+ org.eclipse.core.databinding;bundle-version="[1.5.0,2.0.0)",
+ org.eclipse.emf.ecp.ui.view;bundle-version="[1.17.0,1.18.0)",
+ org.eclipse.emf.ecp.edit.swt;bundle-version="[1.17.0,1.18.0)",
+ org.eclipse.emf.databinding;bundle-version="[1.3.0,2.0.0)",
+ org.eclipse.emfforms.swt.core.di;bundle-version="[1.17.0,1.18.0)"
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Bundle-ActivationPolicy: lazy
+Import-Package: org.eclipse.emf.ecp.ui.view.swt.reference;version="1.17.0",
+ org.eclipse.emfforms.bazaar;version="1.17.0",
+ org.eclipse.emfforms.spi.editor;version="1.17.0",
+ org.osgi.service.component.annotations;version="1.3.0"
+Bundle-Vendor: Eclipse Modeling Project
+Service-Component: OSGI-INF/org.eclipse.emfforms.internal.datatemplate.tooling.editor.TemplateInstanceRendererService.xml,
+ OSGI-INF/org.eclipse.emfforms.internal.datatemplate.tooling.editor.DataTemplateEClassSelectionStrategyProvider.xml
+Export-Package: org.eclipse.emfforms.internal.datatemplate.tooling.editor;version="1.17.0";x-internal:=true,
+ org.eclipse.emfforms.internal.datatemplate.tooling.wizard;version="1.17.0";x-internal:=true
diff --git a/bundles/org.eclipse.emfforms.datatemplate.tooling/OSGI-INF/org.eclipse.emfforms.internal.datatemplate.tooling.editor.DataTemplateEClassSelectionStrategyProvider.xml b/bundles/org.eclipse.emfforms.datatemplate.tooling/OSGI-INF/org.eclipse.emfforms.internal.datatemplate.tooling.editor.DataTemplateEClassSelectionStrategyProvider.xml
new file mode 100644
index 0000000..c45ff0d
--- /dev/null
+++ b/bundles/org.eclipse.emfforms.datatemplate.tooling/OSGI-INF/org.eclipse.emfforms.internal.datatemplate.tooling.editor.DataTemplateEClassSelectionStrategyProvider.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.eclipse.emfforms.internal.datatemplate.tooling.editor.DataTemplateEClassSelectionStrategyProvider">
+   <service>
+      <provide interface="org.eclipse.emf.ecp.ui.view.swt.reference.EClassSelectionStrategy$Provider"/>
+   </service>
+   <implementation class="org.eclipse.emfforms.internal.datatemplate.tooling.editor.DataTemplateEClassSelectionStrategyProvider"/>
+</scr:component>
\ No newline at end of file
diff --git a/bundles/org.eclipse.emfforms.datatemplate.tooling/OSGI-INF/org.eclipse.emfforms.internal.datatemplate.tooling.editor.TemplateInstanceRendererService.xml b/bundles/org.eclipse.emfforms.datatemplate.tooling/OSGI-INF/org.eclipse.emfforms.internal.datatemplate.tooling.editor.TemplateInstanceRendererService.xml
new file mode 100644
index 0000000..82083b4
--- /dev/null
+++ b/bundles/org.eclipse.emfforms.datatemplate.tooling/OSGI-INF/org.eclipse.emfforms.internal.datatemplate.tooling.editor.TemplateInstanceRendererService.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.eclipse.emfforms.internal.datatemplate.tooling.editor.TemplateInstanceRendererService">
+   <service>
+      <provide interface="org.eclipse.emfforms.spi.swt.core.di.EMFFormsDIRendererService"/>
+   </service>
+   <reference bind="setEMFFormsDatabinding" interface="org.eclipse.emfforms.spi.core.services.databinding.EMFFormsDatabinding" name="EMFFormsDatabinding"/>
+   <reference bind="setReportService" interface="org.eclipse.emfforms.spi.common.report.ReportService" name="ReportService"/>
+   <implementation class="org.eclipse.emfforms.internal.datatemplate.tooling.editor.TemplateInstanceRendererService"/>
+</scr:component>
\ No newline at end of file
diff --git a/bundles/org.eclipse.emfforms.datatemplate.tooling/about.html b/bundles/org.eclipse.emfforms.datatemplate.tooling/about.html
new file mode 100644
index 0000000..d35d5ae
--- /dev/null
+++ b/bundles/org.eclipse.emfforms.datatemplate.tooling/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, 2007</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>
diff --git a/bundles/org.eclipse.emfforms.datatemplate.tooling/build.properties b/bundles/org.eclipse.emfforms.datatemplate.tooling/build.properties
new file mode 100644
index 0000000..fb060ab
--- /dev/null
+++ b/bundles/org.eclipse.emfforms.datatemplate.tooling/build.properties
@@ -0,0 +1,7 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+               .,\
+               plugin.xml,\
+               OSGI-INF/,\
+               icons/
diff --git a/bundles/org.eclipse.emfforms.datatemplate.tooling/icons/Add_Template.gif b/bundles/org.eclipse.emfforms.datatemplate.tooling/icons/Add_Template.gif
new file mode 100644
index 0000000..d5bfa07
--- /dev/null
+++ b/bundles/org.eclipse.emfforms.datatemplate.tooling/icons/Add_Template.gif
Binary files differ
diff --git a/bundles/org.eclipse.emfforms.datatemplate.tooling/icons/Template.gif b/bundles/org.eclipse.emfforms.datatemplate.tooling/icons/Template.gif
new file mode 100644
index 0000000..195dc6d
--- /dev/null
+++ b/bundles/org.eclipse.emfforms.datatemplate.tooling/icons/Template.gif
Binary files differ
diff --git a/bundles/org.eclipse.emfforms.datatemplate.tooling/plugin.xml b/bundles/org.eclipse.emfforms.datatemplate.tooling/plugin.xml
new file mode 100644
index 0000000..1c64a38
--- /dev/null
+++ b/bundles/org.eclipse.emfforms.datatemplate.tooling/plugin.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+   <extension
+         point="org.eclipse.ui.editors">
+      <editor
+            class="org.eclipse.emfforms.spi.editor.GenericEditor"
+            default="true"
+            extensions="datatemplate"
+            icon="icons/Template.gif"
+            id="org.eclipse.emfforms.datatemplate.tooling.editor1"
+            name="DataTemplate Model Editor">
+      </editor>
+   </extension>
+   <extension
+         point="org.eclipse.ui.newWizards">
+      <wizard
+            category="org.eclipse.emf.ecp.view.ide"
+            class="org.eclipse.emfforms.internal.datatemplate.tooling.wizard.NewDataTemplateWizard"
+            icon="icons/Add_Template.gif"
+            id="org.eclipse.emfforms.datatemplate.tooling.wizard1"
+            name="DataTemplate">
+      </wizard>
+   </extension>
+
+</plugin>
diff --git a/bundles/org.eclipse.emfforms.datatemplate.tooling/pom.xml b/bundles/org.eclipse.emfforms.datatemplate.tooling/pom.xml
new file mode 100644
index 0000000..c3a2aea
--- /dev/null
+++ b/bundles/org.eclipse.emfforms.datatemplate.tooling/pom.xml
@@ -0,0 +1,18 @@
+<?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.emf.ecp</groupId>
+    <artifactId>ecp-bundles-parent</artifactId>
+    <version>1.17.0-SNAPSHOT</version>
+    <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
+  </parent>
+
+  <groupId>org.eclipse.emf.ecp</groupId>
+  <artifactId>org.eclipse.emfforms.datatemplate.tooling</artifactId>
+  <version>1.17.0-SNAPSHOT</version>
+  <packaging>eclipse-plugin</packaging>
+</project>
diff --git a/bundles/org.eclipse.emfforms.datatemplate.tooling/src/org/eclipse/emfforms/internal/datatemplate/tooling/editor/DataTemplateEClassSelectionStrategyProvider.java b/bundles/org.eclipse.emfforms.datatemplate.tooling/src/org/eclipse/emfforms/internal/datatemplate/tooling/editor/DataTemplateEClassSelectionStrategyProvider.java
new file mode 100644
index 0000000..6969dae
--- /dev/null
+++ b/bundles/org.eclipse.emfforms.datatemplate.tooling/src/org/eclipse/emfforms/internal/datatemplate/tooling/editor/DataTemplateEClassSelectionStrategyProvider.java
@@ -0,0 +1,68 @@
+/*******************************************************************************
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * Eugen Neufeld - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.emfforms.internal.datatemplate.tooling.editor;
+
+import java.util.Collection;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecp.common.spi.EMFUtils;
+import org.eclipse.emf.ecp.ui.view.swt.reference.EClassSelectionStrategy;
+import org.eclipse.emfforms.bazaar.Bid;
+import org.eclipse.emfforms.bazaar.Create;
+import org.eclipse.emfforms.datatemplate.DataTemplatePackage;
+import org.osgi.service.component.annotations.Component;
+
+/**
+ * An {@link org.eclipse.emf.ecp.ui.view.swt.reference.EClassSelectionStrategy.Provider
+ * EClassSelectionStrategy.Provider} for
+ * DataTemplate EClass Selection.
+ *
+ * @author Eugen Neufeld
+ *
+ */
+@Component
+public class DataTemplateEClassSelectionStrategyProvider implements EClassSelectionStrategy.Provider {
+
+	/**
+	 * This is the {@link Bid} for the EClassSelectionStrategy.
+	 *
+	 * @param eReference The {@link EReference} to check
+	 * @return 10 if the reference is the Template_Instance, null otherwise
+	 * @see Bid
+	 */
+	@Bid
+	public Double bid(EReference eReference) {
+		if (DataTemplatePackage.eINSTANCE.getTemplate_Instance() == eReference) {
+			return 10d;
+		}
+		return null;
+	}
+
+	/**
+	 * This actually creates the EClassSelectionStrategy.
+	 *
+	 * @return The {@link EClassSelectionStrategy}
+	 */
+	@Create
+	public EClassSelectionStrategy create() {
+		return new EClassSelectionStrategy() {
+
+			@Override
+			public Collection<EClass> collectEClasses(EObject owner, EReference reference,
+				Collection<EClass> eclasses) {
+				return EMFUtils.getSubClasses(reference.getEReferenceType());
+			}
+		};
+	}
+}
diff --git a/bundles/org.eclipse.emfforms.datatemplate.tooling/src/org/eclipse/emfforms/internal/datatemplate/tooling/editor/TemplateInstanceRenderer.java b/bundles/org.eclipse.emfforms.datatemplate.tooling/src/org/eclipse/emfforms/internal/datatemplate/tooling/editor/TemplateInstanceRenderer.java
new file mode 100644
index 0000000..56a3a31
--- /dev/null
+++ b/bundles/org.eclipse.emfforms.datatemplate.tooling/src/org/eclipse/emfforms/internal/datatemplate/tooling/editor/TemplateInstanceRenderer.java
@@ -0,0 +1,72 @@
+/*******************************************************************************
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * Eugen Neufeld - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.emfforms.internal.datatemplate.tooling.editor;
+
+import javax.inject.Inject;
+
+import org.eclipse.emf.ecp.view.internal.core.swt.renderer.LinkControlSWTRenderer;
+import org.eclipse.emf.ecp.view.spi.context.ViewModelContext;
+import org.eclipse.emf.ecp.view.spi.model.VControl;
+import org.eclipse.emf.ecp.view.spi.util.swt.ImageRegistryService;
+import org.eclipse.emf.ecp.view.template.model.VTViewTemplateProvider;
+import org.eclipse.emfforms.spi.common.report.ReportService;
+import org.eclipse.emfforms.spi.core.services.databinding.EMFFormsDatabinding;
+import org.eclipse.emfforms.spi.core.services.editsupport.EMFFormsEditSupport;
+import org.eclipse.emfforms.spi.core.services.label.EMFFormsLabelProvider;
+import org.eclipse.emfforms.spi.localization.EMFFormsLocalizationService;
+import org.eclipse.swt.widgets.Composite;
+
+/**
+ * A custom class for rendering the TemplateInstance control.
+ * This controls does not allow to add an existing Reference only to create new ones.
+ *
+ * @author Eugen Neufeld
+ *
+ */
+@SuppressWarnings("restriction")
+public class TemplateInstanceRenderer extends LinkControlSWTRenderer {
+
+	/**
+	 * Default constructor.
+	 *
+	 * @param vElement The {@link VControl}
+	 * @param viewContext The {@link ViewModelContext}
+	 * @param reportService The {@link ReportService}
+	 * @param emfFormsDatabinding The {@link EMFFormsDatabinding}
+	 * @param emfFormsLabelProvider The {@link EMFFormsLabelProvider}
+	 * @param vtViewTemplateProvider The {@link VTViewTemplateProvider}
+	 * @param localizationService The {@link EMFFormsLocalizationService}
+	 * @param imageRegistryService The {@link ImageRegistryService}
+	 * @param emfFormsEditSuppport The {@link EMFFormsEditSupport}
+	 */
+	@Inject
+	// CHECKSTYLE:OFF: ParameterNumber
+	public TemplateInstanceRenderer(VControl vElement, ViewModelContext viewContext, ReportService reportService,
+		EMFFormsDatabinding emfFormsDatabinding, EMFFormsLabelProvider emfFormsLabelProvider,
+		VTViewTemplateProvider vtViewTemplateProvider, EMFFormsLocalizationService localizationService,
+		ImageRegistryService imageRegistryService, EMFFormsEditSupport emfFormsEditSuppport) {
+		super(vElement, viewContext, reportService, emfFormsDatabinding, emfFormsLabelProvider, vtViewTemplateProvider,
+			localizationService, imageRegistryService, emfFormsEditSuppport);
+	}
+
+	// CHECKSTYLE:ON
+	@Override
+	protected void createAddReferenceButton(Composite parent, String elementDisplayName) {
+		// do nothing
+	}
+
+	@Override
+	protected boolean openNewReferenceInContext() {
+		return false;
+	}
+
+}
diff --git a/bundles/org.eclipse.emfforms.datatemplate.tooling/src/org/eclipse/emfforms/internal/datatemplate/tooling/editor/TemplateInstanceRendererService.java b/bundles/org.eclipse.emfforms.datatemplate.tooling/src/org/eclipse/emfforms/internal/datatemplate/tooling/editor/TemplateInstanceRendererService.java
new file mode 100644
index 0000000..3c02731
--- /dev/null
+++ b/bundles/org.eclipse.emfforms.datatemplate.tooling/src/org/eclipse/emfforms/internal/datatemplate/tooling/editor/TemplateInstanceRendererService.java
@@ -0,0 +1,96 @@
+/*******************************************************************************
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * Eugen Neufeld - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.emfforms.internal.datatemplate.tooling.editor;
+
+import org.eclipse.core.databinding.property.value.IValueProperty;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.ecp.view.spi.context.ViewModelContext;
+import org.eclipse.emf.ecp.view.spi.model.VControl;
+import org.eclipse.emf.ecp.view.spi.model.VElement;
+import org.eclipse.emfforms.datatemplate.DataTemplatePackage;
+import org.eclipse.emfforms.spi.common.report.ReportService;
+import org.eclipse.emfforms.spi.core.services.databinding.DatabindingFailedException;
+import org.eclipse.emfforms.spi.core.services.databinding.DatabindingFailedReport;
+import org.eclipse.emfforms.spi.core.services.databinding.EMFFormsDatabinding;
+import org.eclipse.emfforms.spi.swt.core.AbstractSWTRenderer;
+import org.eclipse.emfforms.spi.swt.core.di.EMFFormsDIRendererService;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Reference;
+
+/**
+ * The OSGi Service for registering the {@link TemplateInstanceRenderer}.
+ * 
+ * @author Eugen Neufeld
+ *
+ */
+@Component
+public class TemplateInstanceRendererService implements EMFFormsDIRendererService<VControl> {
+
+	private EMFFormsDatabinding databindingService;
+	private ReportService reportService;
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.emfforms.spi.swt.core.di.EMFFormsDIRendererService#isApplicable(org.eclipse.emf.ecp.view.spi.model.VElement,
+	 *      org.eclipse.emf.ecp.view.spi.context.ViewModelContext)
+	 */
+	@Override
+	public double isApplicable(VElement vElement, ViewModelContext viewModelContext) {
+		if (!VControl.class.isInstance(vElement)) {
+			return NOT_APPLICABLE;
+		}
+		final VControl control = (VControl) vElement;
+		if (control.getDomainModelReference() == null) {
+			return NOT_APPLICABLE;
+		}
+		IValueProperty valueProperty;
+		try {
+			valueProperty = databindingService.getValueProperty(control.getDomainModelReference(),
+				viewModelContext.getDomainModel());
+		} catch (final DatabindingFailedException ex) {
+			reportService.report(new DatabindingFailedReport(ex));
+			return NOT_APPLICABLE;
+		}
+		final EStructuralFeature eStructuralFeature = EStructuralFeature.class.cast(valueProperty.getValueType());
+		if (eStructuralFeature == DataTemplatePackage.eINSTANCE.getTemplate_Instance()) {
+			return 10;
+		}
+		return NOT_APPLICABLE;
+	}
+
+	/**
+	 * Called by the initializer to set the EMFFormsDatabinding.
+	 *
+	 * @param databindingService The EMFFormsDatabinding
+	 */
+	@Reference
+	protected void setEMFFormsDatabinding(EMFFormsDatabinding databindingService) {
+		this.databindingService = databindingService;
+	}
+
+	/**
+	 * Called by the initializer to set the ReportService.
+	 *
+	 * @param reportService The ReportService
+	 */
+	@Reference
+	protected void setReportService(ReportService reportService) {
+		this.reportService = reportService;
+	}
+
+	@Override
+	public Class<? extends AbstractSWTRenderer<VControl>> getRendererClass() {
+		return TemplateInstanceRenderer.class;
+	}
+
+}
diff --git a/bundles/org.eclipse.emfforms.datatemplate.tooling/src/org/eclipse/emfforms/internal/datatemplate/tooling/wizard/Messages.java b/bundles/org.eclipse.emfforms.datatemplate.tooling/src/org/eclipse/emfforms/internal/datatemplate/tooling/wizard/Messages.java
new file mode 100644
index 0000000..1f8eb1f
--- /dev/null
+++ b/bundles/org.eclipse.emfforms.datatemplate.tooling/src/org/eclipse/emfforms/internal/datatemplate/tooling/wizard/Messages.java
@@ -0,0 +1,31 @@
+/*******************************************************************************
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * Eugen Neufeld - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.emfforms.internal.datatemplate.tooling.wizard;
+
+import org.eclipse.osgi.util.NLS;
+
+/**
+ * @author Eugen Neufeld
+ * @generated
+ */
+public class Messages extends NLS {
+	private static final String BUNDLE_NAME = "org.eclipse.emfforms.internal.datatemplate.tooling.wizard.messages"; //$NON-NLS-1$
+	public static String NewDataTemplateWizard_description;
+	public static String NewDataTemplateWizard_title;
+	static {
+		// initialize resource bundle
+		NLS.initializeMessages(BUNDLE_NAME, Messages.class);
+	}
+
+	private Messages() {
+	}
+}
diff --git a/bundles/org.eclipse.emfforms.datatemplate.tooling/src/org/eclipse/emfforms/internal/datatemplate/tooling/wizard/NewDataTemplateWizard.java b/bundles/org.eclipse.emfforms.datatemplate.tooling/src/org/eclipse/emfforms/internal/datatemplate/tooling/wizard/NewDataTemplateWizard.java
new file mode 100644
index 0000000..1bc1f09
--- /dev/null
+++ b/bundles/org.eclipse.emfforms.datatemplate.tooling/src/org/eclipse/emfforms/internal/datatemplate/tooling/wizard/NewDataTemplateWizard.java
@@ -0,0 +1,70 @@
+/*******************************************************************************
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * Eugen Neufeld - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.emfforms.internal.datatemplate.tooling.wizard;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.PartInitException;
+import org.eclipse.ui.dialogs.WizardNewFileCreationPage;
+import org.eclipse.ui.ide.IDE;
+import org.eclipse.ui.internal.ide.DialogUtil;
+import org.eclipse.ui.internal.wizards.newresource.ResourceMessages;
+import org.eclipse.ui.wizards.newresource.BasicNewResourceWizard;
+
+/**
+ * Wizard for creating a new Data Template.
+ * 
+ * @author Eugen Neufeld
+ *
+ */
+@SuppressWarnings("restriction")
+public class NewDataTemplateWizard extends BasicNewResourceWizard {
+
+	private WizardNewFileCreationPage mainPage;
+
+	@Override
+	public void addPages() {
+		super.addPages();
+		mainPage = new WizardNewDataTemplateCreationPage("newFilePage1", getSelection());//$NON-NLS-1$
+		mainPage.setTitle(Messages.NewDataTemplateWizard_title);
+		mainPage.setDescription(Messages.NewDataTemplateWizard_description);
+		addPage(mainPage);
+	}
+
+	@Override
+	public boolean performFinish() {
+		final IFile file = mainPage.createNewFile();
+		if (file == null) {
+			return false;
+		}
+
+		selectAndReveal(file);
+
+		// Open editor on new file.
+		final IWorkbenchWindow dw = getWorkbench().getActiveWorkbenchWindow();
+		try {
+			if (dw != null) {
+				final IWorkbenchPage page = dw.getActivePage();
+				if (page != null) {
+					IDE.openEditor(page, file, true);
+				}
+			}
+		} catch (final PartInitException e) {
+			DialogUtil.openError(dw.getShell(), ResourceMessages.FileResource_errorMessage,
+				e.getMessage(), e);
+		}
+
+		return true;
+	}
+
+}
diff --git a/bundles/org.eclipse.emfforms.datatemplate.tooling/src/org/eclipse/emfforms/internal/datatemplate/tooling/wizard/WizardNewDataTemplateCreationPage.java b/bundles/org.eclipse.emfforms.datatemplate.tooling/src/org/eclipse/emfforms/internal/datatemplate/tooling/wizard/WizardNewDataTemplateCreationPage.java
new file mode 100644
index 0000000..09cff8e
--- /dev/null
+++ b/bundles/org.eclipse.emfforms.datatemplate.tooling/src/org/eclipse/emfforms/internal/datatemplate/tooling/wizard/WizardNewDataTemplateCreationPage.java
@@ -0,0 +1,71 @@
+/*******************************************************************************
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * Eugen Neufeld - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.emfforms.internal.datatemplate.tooling.wizard;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+import org.eclipse.emfforms.datatemplate.DataTemplateFactory;
+import org.eclipse.emfforms.datatemplate.TemplateCollection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.ui.dialogs.WizardNewFileCreationPage;
+import org.osgi.framework.Bundle;
+import org.osgi.framework.FrameworkUtil;
+
+/**
+ * The WizardNewFileCreationPage to create a new DataTemplate.
+ *
+ * @author Eugen Neufeld
+ *
+ */
+public class WizardNewDataTemplateCreationPage extends WizardNewFileCreationPage {
+
+	/**
+	 * Default Constructor.
+	 *
+	 * @param pageName The name of the page
+	 * @param selection The initial selection
+	 */
+	public WizardNewDataTemplateCreationPage(String pageName, IStructuredSelection selection) {
+		super(pageName, selection);
+		setFileExtension("datatemplate"); //$NON-NLS-1$
+	}
+
+	@Override
+	protected InputStream getInitialContents() {
+		try {
+			final TemplateCollection collection = DataTemplateFactory.eINSTANCE.createTemplateCollection();
+			final ResourceSet rs = new ResourceSetImpl();
+			final Resource r = rs.createResource(URI.createURI("VIRTUAL")); //$NON-NLS-1$
+			r.getContents().add(collection);
+			final ByteArrayOutputStream bos = new ByteArrayOutputStream();
+			r.save(bos, null);
+			final ByteArrayInputStream bis = new ByteArrayInputStream(bos.toByteArray());
+			return bis;
+		} catch (final IOException ex) {
+			// should not happen
+			final Bundle bundle = FrameworkUtil.getBundle(WizardNewDataTemplateCreationPage.class);
+			Platform.getLog(bundle).log(new Status(IStatus.ERROR, bundle.getSymbolicName(), ex.getMessage(), ex));
+		}
+		return null;
+	}
+
+}
diff --git a/bundles/org.eclipse.emfforms.datatemplate.tooling/src/org/eclipse/emfforms/internal/datatemplate/tooling/wizard/messages.properties b/bundles/org.eclipse.emfforms.datatemplate.tooling/src/org/eclipse/emfforms/internal/datatemplate/tooling/wizard/messages.properties
new file mode 100644
index 0000000..dbd0913
--- /dev/null
+++ b/bundles/org.eclipse.emfforms.datatemplate.tooling/src/org/eclipse/emfforms/internal/datatemplate/tooling/wizard/messages.properties
@@ -0,0 +1,2 @@
+NewDataTemplateWizard_description=Create a new data template instance.
+NewDataTemplateWizard_title=Data Template
diff --git a/bundles/org.eclipse.emfforms.editor.ecore/META-INF/MANIFEST.MF b/bundles/org.eclipse.emfforms.editor.ecore/META-INF/MANIFEST.MF
index aa1b3e7..20e6deb 100644
--- a/bundles/org.eclipse.emfforms.editor.ecore/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emfforms.editor.ecore/META-INF/MANIFEST.MF
@@ -2,53 +2,53 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Ecore Editor based on EMFForms
 Bundle-SymbolicName: org.eclipse.emfforms.editor.ecore;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emfforms.internal.editor.ecore;version="1.16.0";x-internal:=true,
-  org.eclipse.emfforms.internal.editor.ecore.actions;version="1.16.0";x-internal:=true,
-  org.eclipse.emfforms.internal.editor.ecore.controls;version="1.16.0";x-internal:=true,
-  org.eclipse.emfforms.internal.editor.ecore.helpers;version="1.16.0";x-internal:=true,
-  org.eclipse.emfforms.internal.editor.ecore.referenceservices;version="1.16.0";x-internal:=true
+Export-Package: org.eclipse.emfforms.internal.editor.ecore;version="1.17.0";x-internal:=true,
+ org.eclipse.emfforms.internal.editor.ecore.actions;version="1.17.0";x-internal:=true,
+ org.eclipse.emfforms.internal.editor.ecore.controls;version="1.17.0";x-internal:=true,
+ org.eclipse.emfforms.internal.editor.ecore.helpers;version="1.17.0";x-internal:=true,
+ org.eclipse.emfforms.internal.editor.ecore.referenceservices;version="1.17.0";x-internal:=true
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.1.0,4.0.0)",
-  org.eclipse.emf.ecp.edit.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.template.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.ui.view.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.jface.databinding;bundle-version="[1.6.0,2.0.0)",
-  org.eclipse.emfforms.editor;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecore.xmi;bundle-version="[2.10.0,3.0.0)",
-  org.eclipse.core.databinding.property;bundle-version="[1.4.0,2.0.0)",
-  org.eclipse.emf.ecp.view.core.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.ui.ide;bundle-version="[3.10.0,4.0.0)",
-  org.eclipse.jface;bundle-version="[3.10.0,4.0.0)",
-  org.eclipse.ui.workbench;bundle-version="[3.106.0,4.0.0)",
-  org.eclipse.emf.edit.ui;bundle-version="[2.10.0,3.0.0)",
-  org.eclipse.emf.edit;bundle-version="[2.10.0,3.0.0)",
-  org.eclipse.emfforms.core.services;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services.editsupport;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.databinding;bundle-version="[1.3.0,2.0.0)",
-  org.eclipse.emfforms.swt.treemasterdetail;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.databinding.edit;bundle-version="[1.2.0,2.0.0)",
-  org.eclipse.emfforms.localization;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.control.multireference;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.util.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.editor.ecore;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.core.resources;bundle-version="[3.9.0,4.0.0)",
-  org.eclipse.emf.ecp.view.group.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.swt.treemasterdetail.decorator.validation.default;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.common.ui;bundle-version="[1.16.0,1.17.0)"
+ org.eclipse.emf.ecp.edit.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.template.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.ui.view.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.jface.databinding;bundle-version="[1.6.0,2.0.0)",
+ org.eclipse.emfforms.editor;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecore.xmi;bundle-version="[2.10.0,3.0.0)",
+ org.eclipse.core.databinding.property;bundle-version="[1.4.0,2.0.0)",
+ org.eclipse.emf.ecp.view.core.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.ui.ide;bundle-version="[3.10.0,4.0.0)",
+ org.eclipse.jface;bundle-version="[3.10.0,4.0.0)",
+ org.eclipse.ui.workbench;bundle-version="[3.106.0,4.0.0)",
+ org.eclipse.emf.edit.ui;bundle-version="[2.10.0,3.0.0)",
+ org.eclipse.emf.edit;bundle-version="[2.10.0,3.0.0)",
+ org.eclipse.emfforms.core.services;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services.editsupport;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.databinding;bundle-version="[1.3.0,2.0.0)",
+ org.eclipse.emfforms.swt.treemasterdetail;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.databinding.edit;bundle-version="[1.2.0,2.0.0)",
+ org.eclipse.emfforms.localization;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.control.multireference;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.util.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.core.resources;bundle-version="[3.9.0,4.0.0)",
+ org.eclipse.emf.ecp.view.group.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.swt.treemasterdetail.decorator.validation.default;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.common.ui;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.view.annotation.model;bundle-version="[1.17.0,1.18.0)"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Import-Package: javax.inject;version="1.0.0",
-  org.eclipse.emfforms.bazaar;version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.internal.editor.ecore.controls;version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.spi.swt.core.di;version="[1.16.0,1.17.0)";resolution:=optional,
-  org.osgi.service.component.annotations;version="[1.2.0,2.0.0)";resolution:=optional
+ org.eclipse.emfforms.bazaar;version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.internal.editor.ecore.controls;version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.spi.swt.core.di;version="[1.17.0,1.18.0]";resolution:=optional,
+ org.osgi.service.component.annotations;version="[1.2.0,2.0.0)";resolution:=optional
 Service-Component: OSGI-INF/InstanceTypeNameSWTRendererService.xml,
  OSGI-INF/dataTypeControlService.xml,
  OSGI-INF/eenumLiteralControlService.xml,
- OSGI-INF/org.eclipse.emfforms.internal.editor.ecore.controls.LinkOnlyMultiReferenceRendererService.xml,
  OSGI-INF/typedElementBoundsControlService.xml,
  OSGI-INF/ecoreAttachmentStrategyProvider.xml,
  OSGI-INF/ecoreEObjectSelectionStrategyProvider.xml,
  OSGI-INF/ecoreOpenInNewContextStrategyProvider.xml,
  OSGI-INF/ecoreReferenceStrategyProvider.xml
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emfforms.editor.ecore
diff --git a/bundles/org.eclipse.emfforms.editor.ecore/OSGI-INF/org.eclipse.emfforms.internal.editor.ecore.controls.LinkOnlyMultiReferenceRendererService.xml b/bundles/org.eclipse.emfforms.editor.ecore/OSGI-INF/org.eclipse.emfforms.internal.editor.ecore.controls.LinkOnlyMultiReferenceRendererService.xml
deleted file mode 100644
index 98d4532..0000000
--- a/bundles/org.eclipse.emfforms.editor.ecore/OSGI-INF/org.eclipse.emfforms.internal.editor.ecore.controls.LinkOnlyMultiReferenceRendererService.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.eclipse.emfforms.internal.editor.ecore.controls.LinkOnlyMultiReferenceRendererService">
-   <implementation class="org.eclipse.emfforms.internal.editor.ecore.controls.LinkOnlyMultiReferenceRendererService"/>
-   <service>
-      <provide interface="org.eclipse.emfforms.spi.swt.core.di.EMFFormsDIRendererService"/>
-   </service>
-   <reference bind="setEMFFormsDatabinding" interface="org.eclipse.emfforms.spi.core.services.databinding.EMFFormsDatabinding" name="EMFFormsDatabinding"/>
-   <reference bind="setReportService" interface="org.eclipse.emfforms.spi.common.report.ReportService" name="ReportService"/>
-</scr:component>
\ No newline at end of file
diff --git a/bundles/org.eclipse.emfforms.editor.ecore/pom.xml b/bundles/org.eclipse.emfforms.editor.ecore/pom.xml
index 3e7ca0c..fbf907f 100644
--- a/bundles/org.eclipse.emfforms.editor.ecore/pom.xml
+++ b/bundles/org.eclipse.emfforms.editor.ecore/pom.xml
@@ -7,12 +7,12 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
 
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emfforms.editor.ecore</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 </project>
diff --git a/bundles/org.eclipse.emfforms.editor.ecore/simple_viewmodels/EAttribute.view b/bundles/org.eclipse.emfforms.editor.ecore/simple_viewmodels/EAttribute.view
index fe0d637..2a3a210 100644
--- a/bundles/org.eclipse.emfforms.editor.ecore/simple_viewmodels/EAttribute.view
+++ b/bundles/org.eclipse.emfforms.editor.ecore/simple_viewmodels/EAttribute.view
@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="ASCII"?>
-<org.eclipse.emf.ecp.view.model:View xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:org.eclipse.emf.ecp.view.model="http://org/eclipse/emf/ecp/view/model/170" ecorePath="/org.eclipse.emf.ecore/model/Ecore.ecore">
+<org.eclipse.emf.ecp.view.model:View xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:org.eclipse.emf.ecp.view.model="http://org/eclipse/emf/ecp/view/model/1170">
+  <ecorePaths>/org.eclipse.emf.ecore/model/Ecore.ecore</ecorePaths>
   <rootEClass href="http://www.eclipse.org/emf/2002/Ecore#//EAttribute"/>
   <children xsi:type="org.eclipse.emf.ecp.view.model:Control" name="Control name">
     <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference">
diff --git a/bundles/org.eclipse.emfforms.editor.ecore/simple_viewmodels/EClass.view b/bundles/org.eclipse.emfforms.editor.ecore/simple_viewmodels/EClass.view
index 9d5ad3a..c089faa 100644
--- a/bundles/org.eclipse.emfforms.editor.ecore/simple_viewmodels/EClass.view
+++ b/bundles/org.eclipse.emfforms.editor.ecore/simple_viewmodels/EClass.view
@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="ASCII"?>
-<org.eclipse.emf.ecp.view.model:View xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:org.eclipse.emf.ecp.view.model="http://org/eclipse/emf/ecp/view/model/170" ecorePath="/org.eclipse.emf.ecore/model/Ecore.ecore">
+<org.eclipse.emf.ecp.view.model:View xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:org.eclipse.emf.ecp.view.model="http://org/eclipse/emf/ecp/view/model/1170">
+  <ecorePaths>/org.eclipse.emf.ecore/model/Ecore.ecore</ecorePaths>
   <rootEClass href="http://www.eclipse.org/emf/2002/Ecore#//EClass"/>
   <children xsi:type="org.eclipse.emf.ecp.view.model:Control" name="Control name">
     <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference">
diff --git a/bundles/org.eclipse.emfforms.editor.ecore/simple_viewmodels/EDataType.view b/bundles/org.eclipse.emfforms.editor.ecore/simple_viewmodels/EDataType.view
index 3013f61..902b132 100644
--- a/bundles/org.eclipse.emfforms.editor.ecore/simple_viewmodels/EDataType.view
+++ b/bundles/org.eclipse.emfforms.editor.ecore/simple_viewmodels/EDataType.view
@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="ASCII"?>
-<org.eclipse.emf.ecp.view.model:View xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:org.eclipse.emf.ecp.view.model="http://org/eclipse/emf/ecp/view/model/170" ecorePath="/org.eclipse.emf.ecore/model/Ecore.ecore">
+<org.eclipse.emf.ecp.view.model:View xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:org.eclipse.emf.ecp.view.model="http://org/eclipse/emf/ecp/view/model/1170">
+  <ecorePaths>/org.eclipse.emf.ecore/model/Ecore.ecore</ecorePaths>
   <rootEClass href="http://www.eclipse.org/emf/2002/Ecore#//EDataType"/>
   <children xsi:type="org.eclipse.emf.ecp.view.model:Control" name="Control name">
     <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference">
diff --git a/bundles/org.eclipse.emfforms.editor.ecore/simple_viewmodels/EEnum.view b/bundles/org.eclipse.emfforms.editor.ecore/simple_viewmodels/EEnum.view
index 480eb2f..a0e3d53 100644
--- a/bundles/org.eclipse.emfforms.editor.ecore/simple_viewmodels/EEnum.view
+++ b/bundles/org.eclipse.emfforms.editor.ecore/simple_viewmodels/EEnum.view
@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="ASCII"?>
-<org.eclipse.emf.ecp.view.model:View xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:org.eclipse.emf.ecp.view.model="http://org/eclipse/emf/ecp/view/model/170" xmlns:org.eclipse.emf.ecp.view.table.model="http://org/eclipse/emf/ecp/view/table/model/150" ecorePath="/org.eclipse.emf.ecore/model/Ecore.ecore">
+<org.eclipse.emf.ecp.view.model:View xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:org.eclipse.emf.ecp.view.model="http://org/eclipse/emf/ecp/view/model/1170" xmlns:org.eclipse.emf.ecp.view.table.model="http://org/eclipse/emf/ecp/view/table/model/150">
+  <ecorePaths>/org.eclipse.emf.ecore/model/Ecore.ecore</ecorePaths>
   <rootEClass href="http://www.eclipse.org/emf/2002/Ecore#//EEnum"/>
   <children xsi:type="org.eclipse.emf.ecp.view.model:Control" name="Control name">
     <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference">
diff --git a/bundles/org.eclipse.emfforms.editor.ecore/simple_viewmodels/EOperation.view b/bundles/org.eclipse.emfforms.editor.ecore/simple_viewmodels/EOperation.view
index c077ccc..f70248c 100644
--- a/bundles/org.eclipse.emfforms.editor.ecore/simple_viewmodels/EOperation.view
+++ b/bundles/org.eclipse.emfforms.editor.ecore/simple_viewmodels/EOperation.view
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="ASCII"?>
-<org.eclipse.emf.ecp.view.model:View xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:org.eclipse.emf.ecp.view.model="http://org/eclipse/emf/ecp/view/model/170" xmi:id="_NZM8cK9HEee_tNAj4kF_NQ" name="EOperation">
+<org.eclipse.emf.ecp.view.model:View xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:org.eclipse.emf.ecp.view.model="http://org/eclipse/emf/ecp/view/model/1170" xmi:id="_NZM8cK9HEee_tNAj4kF_NQ" name="EOperation">
   <rootEClass href="http://www.eclipse.org/emf/2002/Ecore#//EOperation"/>
   <children xsi:type="org.eclipse.emf.ecp.view.model:Control" xmi:id="_NZsEoq9HEee_tNAj4kF_NQ" name="Control name">
     <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_NZsEo69HEee_tNAj4kF_NQ">
diff --git a/bundles/org.eclipse.emfforms.editor.ecore/simple_viewmodels/EPackage.view b/bundles/org.eclipse.emfforms.editor.ecore/simple_viewmodels/EPackage.view
index 3d89f30..79a83f8 100644
--- a/bundles/org.eclipse.emfforms.editor.ecore/simple_viewmodels/EPackage.view
+++ b/bundles/org.eclipse.emfforms.editor.ecore/simple_viewmodels/EPackage.view
@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="ASCII"?>
-<org.eclipse.emf.ecp.view.model:View xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:org.eclipse.emf.ecp.view.model="http://org/eclipse/emf/ecp/view/model/170" ecorePath="/org.eclipse.emf.ecore/model/Ecore.ecore">
+<org.eclipse.emf.ecp.view.model:View xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:org.eclipse.emf.ecp.view.model="http://org/eclipse/emf/ecp/view/model/1170">
+  <ecorePaths>/org.eclipse.emf.ecore/model/Ecore.ecore</ecorePaths>
   <rootEClass href="http://www.eclipse.org/emf/2002/Ecore#//EPackage"/>
   <children xsi:type="org.eclipse.emf.ecp.view.model:Control" name="Control name">
     <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference">
diff --git a/bundles/org.eclipse.emfforms.editor.ecore/simple_viewmodels/EParameter.view b/bundles/org.eclipse.emfforms.editor.ecore/simple_viewmodels/EParameter.view
index 4888675..5f38f6f 100644
--- a/bundles/org.eclipse.emfforms.editor.ecore/simple_viewmodels/EParameter.view
+++ b/bundles/org.eclipse.emfforms.editor.ecore/simple_viewmodels/EParameter.view
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="ASCII"?>
-<org.eclipse.emf.ecp.view.model:View xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:org.eclipse.emf.ecp.view.model="http://org/eclipse/emf/ecp/view/model/170">
+<org.eclipse.emf.ecp.view.model:View xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:org.eclipse.emf.ecp.view.model="http://org/eclipse/emf/ecp/view/model/1170">
   <rootEClass href="http://www.eclipse.org/emf/2002/Ecore#//EParameter"/>
   <children xsi:type="org.eclipse.emf.ecp.view.model:Control" name="Control name">
     <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference">
diff --git a/bundles/org.eclipse.emfforms.editor.ecore/simple_viewmodels/EReference.view b/bundles/org.eclipse.emfforms.editor.ecore/simple_viewmodels/EReference.view
index 6a4ab2c..5c34964 100644
--- a/bundles/org.eclipse.emfforms.editor.ecore/simple_viewmodels/EReference.view
+++ b/bundles/org.eclipse.emfforms.editor.ecore/simple_viewmodels/EReference.view
@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="ASCII"?>
-<org.eclipse.emf.ecp.view.model:View xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:org.eclipse.emf.ecp.view.model="http://org/eclipse/emf/ecp/view/model/170" ecorePath="/org.eclipse.emf.ecore/model/Ecore.ecore">
+<org.eclipse.emf.ecp.view.model:View xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:org.eclipse.emf.ecp.view.model="http://org/eclipse/emf/ecp/view/model/1170">
+  <ecorePaths>/org.eclipse.emf.ecore/model/Ecore.ecore</ecorePaths>
   <rootEClass href="http://www.eclipse.org/emf/2002/Ecore#//EReference"/>
   <children xsi:type="org.eclipse.emf.ecp.view.model:Control" name="Control name">
     <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference">
diff --git a/bundles/org.eclipse.emfforms.editor.ecore/src/org/eclipse/emfforms/internal/editor/ecore/EcoreDiagnosticCache.java b/bundles/org.eclipse.emfforms.editor.ecore/src/org/eclipse/emfforms/internal/editor/ecore/EcoreDiagnosticCache.java
index 0108064..791bea1 100644
--- a/bundles/org.eclipse.emfforms.editor.ecore/src/org/eclipse/emfforms/internal/editor/ecore/EcoreDiagnosticCache.java
+++ b/bundles/org.eclipse.emfforms.editor.ecore/src/org/eclipse/emfforms/internal/editor/ecore/EcoreDiagnosticCache.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2011-2016 EclipseSource Muenchen GmbH and others.
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH and others.
  *
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
@@ -8,6 +8,7 @@
  *
  * Contributors:
  * Johannes Faltermeier - initial API and implementation
+ * Christian W. Damus - bug 533522
  ******************************************************************************/
 package org.eclipse.emfforms.internal.editor.ecore;
 
@@ -30,18 +31,28 @@
 	@Override
 	protected void updateCache(EObject element, DiagnosticCache cache) {
 		super.updateCache(element, cache);
-		final EObject parent = element.eContainer();
-		if (parent != null) {
-			updateCache(parent, cache);
+
+		// In the initial walk over the contents, we will already have processed
+		// the containment chain
+		if (!isInitializing()) {
+			final EObject parent = element.eContainer();
+			if (parent != null) {
+				updateCache(parent, cache);
+			}
 		}
 	}
 
 	@Override
 	protected void updateCacheWithoutRefresh(EObject element, DiagnosticCache cache) {
 		super.updateCacheWithoutRefresh(element, cache);
-		final EObject parent = element.eContainer();
-		if (parent != null) {
-			updateCacheWithoutRefresh(parent, cache);
+
+		// In the initial walk over the contents, we will already have processed
+		// the containment chain
+		if (!isInitializing()) {
+			final EObject parent = element.eContainer();
+			if (parent != null) {
+				updateCacheWithoutRefresh(parent, cache);
+			}
 		}
 	}
 
diff --git a/bundles/org.eclipse.emfforms.editor.ecore/src/org/eclipse/emfforms/internal/editor/ecore/controls/LinkOnlyMultiReferenceRenderer.java b/bundles/org.eclipse.emfforms.editor.ecore/src/org/eclipse/emfforms/internal/editor/ecore/controls/LinkOnlyMultiReferenceRenderer.java
deleted file mode 100644
index 06259c6..0000000
--- a/bundles/org.eclipse.emfforms.editor.ecore/src/org/eclipse/emfforms/internal/editor/ecore/controls/LinkOnlyMultiReferenceRenderer.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2011-2016 EclipseSource Muenchen GmbH 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:
- * Martin Fleck - initial API and implementation
- ******************************************************************************/
-package org.eclipse.emfforms.internal.editor.ecore.controls;
-
-import javax.inject.Inject;
-
-import org.eclipse.emf.ecp.view.internal.control.multireference.MultiReferenceSWTRenderer;
-import org.eclipse.emf.ecp.view.spi.context.ViewModelContext;
-import org.eclipse.emf.ecp.view.spi.model.VControl;
-import org.eclipse.emf.ecp.view.spi.util.swt.ImageRegistryService;
-import org.eclipse.emf.ecp.view.template.model.VTViewTemplateProvider;
-import org.eclipse.emfforms.spi.common.report.ReportService;
-import org.eclipse.emfforms.spi.core.services.databinding.EMFFormsDatabinding;
-import org.eclipse.emfforms.spi.core.services.label.EMFFormsLabelProvider;
-
-/**
- * Renderer for ESuperTypes reference of {@link org.eclipse.emf.ecore.EClass EClass}.
- *
- * @author Martin Fleck
- *
- */
-@SuppressWarnings("restriction")
-public class LinkOnlyMultiReferenceRenderer extends MultiReferenceSWTRenderer {
-
-	/**
-	 * Default constructor.
-	 *
-	 * @param vElement the view model element to be rendered
-	 * @param viewContext the view context
-	 * @param emfFormsDatabinding The {@link EMFFormsDatabinding}
-	 * @param emfFormsLabelProvider The {@link EMFFormsLabelProvider}
-	 * @param reportService The {@link ReportService}
-	 * @param vtViewTemplateProvider The {@link VTViewTemplateProvider}
-	 * @param imageRegistryService The {@link ImageRegistryService}
-	 */
-	@Inject
-	public LinkOnlyMultiReferenceRenderer(VControl vElement, ViewModelContext viewContext, ReportService reportService,
-		EMFFormsDatabinding emfFormsDatabinding, EMFFormsLabelProvider emfFormsLabelProvider,
-		VTViewTemplateProvider vtViewTemplateProvider, ImageRegistryService imageRegistryService) {
-		super(vElement, viewContext, reportService, emfFormsDatabinding, emfFormsLabelProvider, vtViewTemplateProvider,
-			imageRegistryService);
-	}
-
-	/**
-	 * {@inheritDoc}
-	 *
-	 * @see org.eclipse.emf.ecp.view.internal.control.multireference.MultiReferenceSWTRenderer#showAddNewButton()
-	 */
-	@Override
-	protected boolean showAddNewButton() {
-		return false;
-	}
-}
diff --git a/bundles/org.eclipse.emfforms.editor.ecore/src/org/eclipse/emfforms/internal/editor/ecore/controls/LinkOnlyMultiReferenceRendererService.java b/bundles/org.eclipse.emfforms.editor.ecore/src/org/eclipse/emfforms/internal/editor/ecore/controls/LinkOnlyMultiReferenceRendererService.java
deleted file mode 100644
index a2402e9..0000000
--- a/bundles/org.eclipse.emfforms.editor.ecore/src/org/eclipse/emfforms/internal/editor/ecore/controls/LinkOnlyMultiReferenceRendererService.java
+++ /dev/null
@@ -1,105 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2011-2016 EclipseSource Muenchen GmbH 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:
- * Martin Fleck - initial API and implementation
- ******************************************************************************/
-package org.eclipse.emfforms.internal.editor.ecore.controls;
-
-import org.eclipse.core.databinding.property.value.IValueProperty;
-import org.eclipse.emf.ecore.EStructuralFeature;
-import org.eclipse.emf.ecore.EcorePackage;
-import org.eclipse.emf.ecp.view.spi.context.ViewModelContext;
-import org.eclipse.emf.ecp.view.spi.model.VControl;
-import org.eclipse.emf.ecp.view.spi.model.VElement;
-import org.eclipse.emfforms.spi.common.report.ReportService;
-import org.eclipse.emfforms.spi.core.services.databinding.DatabindingFailedException;
-import org.eclipse.emfforms.spi.core.services.databinding.DatabindingFailedReport;
-import org.eclipse.emfforms.spi.core.services.databinding.EMFFormsDatabinding;
-import org.eclipse.emfforms.spi.swt.core.AbstractSWTRenderer;
-import org.eclipse.emfforms.spi.swt.core.di.EMFFormsDIRendererService;
-import org.osgi.service.component.annotations.Component;
-import org.osgi.service.component.annotations.Reference;
-
-/**
- * ESuperTypesControlService provides the {@link LinkOnlyMultiReferenceRenderer}.
- *
- * @author Martin Fleck
- *
- */
-@Component
-public class LinkOnlyMultiReferenceRendererService implements EMFFormsDIRendererService<VControl> {
-
-	private EMFFormsDatabinding databindingService;
-	private ReportService reportService;
-
-	/**
-	 * Called by the initializer to set the EMFFormsDatabinding.
-	 *
-	 * @param databindingService The EMFFormsDatabinding
-	 */
-	@Reference(unbind = "-")
-	protected void setEMFFormsDatabinding(EMFFormsDatabinding databindingService) {
-		this.databindingService = databindingService;
-	}
-
-	/**
-	 * Called by the initializer to set the ReportService.
-	 *
-	 * @param reportService The ReportService
-	 */
-	@Reference(unbind = "-")
-	protected void setReportService(ReportService reportService) {
-		this.reportService = reportService;
-	}
-
-	/**
-	 * {@inheritDoc}
-	 *
-	 * @see org.eclipse.emfforms.spi.swt.core.di.EMFFormsDIRendererService#isApplicable(VElement,ViewModelContext)
-	 */
-	@Override
-	public double isApplicable(VElement vElement, ViewModelContext viewModelContext) {
-		if (!VControl.class.isInstance(vElement)) {
-			return NOT_APPLICABLE;
-		}
-		final VControl control = (VControl) vElement;
-		if (control.getDomainModelReference() == null) {
-			return NOT_APPLICABLE;
-		}
-		IValueProperty valueProperty;
-		try {
-			valueProperty = databindingService
-				.getValueProperty(control.getDomainModelReference(), viewModelContext.getDomainModel());
-		} catch (final DatabindingFailedException ex) {
-			reportService.report(new DatabindingFailedReport(ex));
-			return NOT_APPLICABLE;
-		}
-		final EStructuralFeature feature = (EStructuralFeature) valueProperty.getValueType();
-
-		if (feature.equals(EcorePackage.eINSTANCE.getEClass_ESuperTypes())) {
-			return 6;
-		}
-		if (feature.equals(EcorePackage.eINSTANCE.getEAnnotation_References())) {
-			return 6;
-		}
-
-		return NOT_APPLICABLE;
-	}
-
-	/**
-	 * {@inheritDoc}
-	 *
-	 * @see org.eclipse.emfforms.spi.swt.core.di.EMFFormsDIRendererService#getRendererClass()
-	 */
-	@Override
-	public Class<? extends AbstractSWTRenderer<VControl>> getRendererClass() {
-		return LinkOnlyMultiReferenceRenderer.class;
-	}
-
-}
diff --git a/bundles/org.eclipse.emfforms.editor.ecore/src/org/eclipse/emfforms/internal/editor/ecore/referenceservices/EcoreReferenceService.java b/bundles/org.eclipse.emfforms.editor.ecore/src/org/eclipse/emfforms/internal/editor/ecore/referenceservices/EcoreReferenceService.java
index bd8ae5f..ef8da9c 100644
--- a/bundles/org.eclipse.emfforms.editor.ecore/src/org/eclipse/emfforms/internal/editor/ecore/referenceservices/EcoreReferenceService.java
+++ b/bundles/org.eclipse.emfforms.editor.ecore/src/org/eclipse/emfforms/internal/editor/ecore/referenceservices/EcoreReferenceService.java
@@ -34,6 +34,7 @@
 import org.eclipse.emf.edit.command.SetCommand;
 import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain;
 import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.emfforms.common.Optional;
 import org.eclipse.emfforms.spi.editor.helpers.ResourceSetHelpers;
 
 /**
@@ -41,7 +42,7 @@
  *
  * @deprecated As of 1.16, the responsibilities of this class are subsumed into the
  *             {@link EcoreReferenceStrategyProvider} and related classes.
- * 
+ *
  * @see EcoreAttachmentStrategyProvider
  * @see EcoreEObjectSelectionStrategyProvider
  * @see EcoreOpenInNewContextStrategyProvider
@@ -229,11 +230,16 @@
 
 	@Override
 	public void addNewModelElements(EObject eObject, EReference eReference) {
+		addNewModelElements(eObject, eReference, true);
+	}
+
+	@Override
+	public Optional<EObject> addNewModelElements(EObject eObject, EReference eReference, boolean openInNewContext) {
 		if (eReference == EcorePackage.eINSTANCE.getEReference_EOpposite()) {
 			handleEOpposite(eObject, eReference);
-			return;
+			return Optional.empty();
 		}
-		super.addNewModelElements(eObject, eReference);
+		return super.addNewModelElements(eObject, eReference, openInNewContext);
 	}
 
 	private void handleEOpposite(EObject eObject, EReference eReference) {
diff --git a/bundles/org.eclipse.emfforms.editor.ecore/viewmodels/EAnnotation.view b/bundles/org.eclipse.emfforms.editor.ecore/viewmodels/EAnnotation.view
index 2f49193..e30e4a5 100644
--- a/bundles/org.eclipse.emfforms.editor.ecore/viewmodels/EAnnotation.view
+++ b/bundles/org.eclipse.emfforms.editor.ecore/viewmodels/EAnnotation.view
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="ASCII"?>
-<org.eclipse.emf.ecp.view.model:View xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:org.eclipse.emf.ecp.view.group.model="http://org/eclipse/emf/ecp/view/group/model" xmlns:org.eclipse.emf.ecp.view.model="http://org/eclipse/emf/ecp/view/model/170" xmlns:org.eclipse.emf.ecp.view.table.model="http://org/eclipse/emf/ecp/view/table/model/150" xmi:id="_vkIQIBdNEeaEDZYMI15WfQ" name="EAnnotation">
+<org.eclipse.emf.ecp.view.model:View xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:org.eclipse.emf.ecp.view.group.model="http://org/eclipse/emf/ecp/view/group/model" xmlns:org.eclipse.emf.ecp.view.model="http://org/eclipse/emf/ecp/view/model/1170" xmlns:org.eclipse.emf.ecp.view.table.model="http://org/eclipse/emf/ecp/view/table/model/150" xmlns:org.eclipse.emfforms.view.annotation.model="http://org/eclipse/emf/emfforms/view/annotation/model" xmi:id="_vkIQIBdNEeaEDZYMI15WfQ" name="EAnnotation">
   <rootEClass href="http://www.eclipse.org/emf/2002/Ecore#//EAnnotation"/>
   <children xsi:type="org.eclipse.emf.ecp.view.model:Control" xmi:id="_vkW5ohdNEeaEDZYMI15WfQ" name="Control source">
     <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_vkW5oxdNEeaEDZYMI15WfQ">
@@ -30,6 +30,7 @@
       </domainModelReference>
     </children>
     <children xsi:type="org.eclipse.emf.ecp.view.model:Control" xmi:id="_vkW5qhdNEeaEDZYMI15WfQ" name="Control references">
+      <attachments xsi:type="org.eclipse.emfforms.view.annotation.model:Annotation" xmi:id="_vkW5qyvNEeaEDZYMI15WfQ" key="hideAddNewButton"/>
       <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_vkW5qxdNEeaEDZYMI15WfQ">
         <domainModelEFeature xsi:type="ecore:EReference" href="http://www.eclipse.org/emf/2002/Ecore#//EAnnotation/references"/>
       </domainModelReference>
diff --git a/bundles/org.eclipse.emfforms.editor.ecore/viewmodels/EAttribute.view b/bundles/org.eclipse.emfforms.editor.ecore/viewmodels/EAttribute.view
index 5386299..f9e9484 100644
--- a/bundles/org.eclipse.emfforms.editor.ecore/viewmodels/EAttribute.view
+++ b/bundles/org.eclipse.emfforms.editor.ecore/viewmodels/EAttribute.view
@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="ASCII"?>
-<org.eclipse.emf.ecp.view.model:View xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:org.eclipse.emf.ecp.view.group.model="http://org/eclipse/emf/ecp/view/group/model" xmlns:org.eclipse.emf.ecp.view.model="http://org/eclipse/emf/ecp/view/model/170" ecorePath="/org.eclipse.emf.ecore/model/Ecore.ecore">
+<org.eclipse.emf.ecp.view.model:View xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:org.eclipse.emf.ecp.view.group.model="http://org/eclipse/emf/ecp/view/group/model" xmlns:org.eclipse.emf.ecp.view.model="http://org/eclipse/emf/ecp/view/model/1170">
+  <ecorePaths>/org.eclipse.emf.ecore/model/Ecore.ecore</ecorePaths>
   <rootEClass href="http://www.eclipse.org/emf/2002/Ecore#//EAttribute"/>
   <children xsi:type="org.eclipse.emf.ecp.view.group.model:Group" name="Standard" groupType="Collapsible">
     <children xsi:type="org.eclipse.emf.ecp.view.model:Control" name="Control name">
diff --git a/bundles/org.eclipse.emfforms.editor.ecore/viewmodels/EClass.view b/bundles/org.eclipse.emfforms.editor.ecore/viewmodels/EClass.view
index 7bc9e4c..7eec8c1 100644
--- a/bundles/org.eclipse.emfforms.editor.ecore/viewmodels/EClass.view
+++ b/bundles/org.eclipse.emfforms.editor.ecore/viewmodels/EClass.view
@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="ASCII"?>
-<org.eclipse.emf.ecp.view.model:View xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:org.eclipse.emf.ecp.view.group.model="http://org/eclipse/emf/ecp/view/group/model" xmlns:org.eclipse.emf.ecp.view.model="http://org/eclipse/emf/ecp/view/model/170" ecorePath="/org.eclipse.emf.ecore/model/Ecore.ecore">
+<org.eclipse.emf.ecp.view.model:View xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:org.eclipse.emf.ecp.view.group.model="http://org/eclipse/emf/ecp/view/group/model" xmlns:org.eclipse.emf.ecp.view.model="http://org/eclipse/emf/ecp/view/model/1170" xmlns:org.eclipse.emfforms.view.annotation.model="http://org/eclipse/emf/emfforms/view/annotation/model">
+  <ecorePaths>/org.eclipse.emf.ecore/model/Ecore.ecore</ecorePaths>
   <rootEClass href="http://www.eclipse.org/emf/2002/Ecore#//EClass"/>
   <children xsi:type="org.eclipse.emf.ecp.view.group.model:Group" name="Standard" groupType="Collapsible">
     <children xsi:type="org.eclipse.emf.ecp.view.model:Control" name="Control name">
@@ -25,6 +26,7 @@
       </domainModelReference>
     </children>
     <children xsi:type="org.eclipse.emf.ecp.view.model:Control" name="Control eSuperTypes">
+      <attachments xsi:type="org.eclipse.emfforms.view.annotation.model:Annotation" xmi:id="_daJUECwYEeip59ApHUyEXQ" key="hideAddNewButton"/>
       <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference">
         <domainModelEFeature xsi:type="ecore:EReference" href="http://www.eclipse.org/emf/2002/Ecore#//EClass/eSuperTypes"/>
       </domainModelReference>
diff --git a/bundles/org.eclipse.emfforms.editor.ecore/viewmodels/EDataType.view b/bundles/org.eclipse.emfforms.editor.ecore/viewmodels/EDataType.view
index 3013f61..902b132 100644
--- a/bundles/org.eclipse.emfforms.editor.ecore/viewmodels/EDataType.view
+++ b/bundles/org.eclipse.emfforms.editor.ecore/viewmodels/EDataType.view
@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="ASCII"?>
-<org.eclipse.emf.ecp.view.model:View xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:org.eclipse.emf.ecp.view.model="http://org/eclipse/emf/ecp/view/model/170" ecorePath="/org.eclipse.emf.ecore/model/Ecore.ecore">
+<org.eclipse.emf.ecp.view.model:View xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:org.eclipse.emf.ecp.view.model="http://org/eclipse/emf/ecp/view/model/1170">
+  <ecorePaths>/org.eclipse.emf.ecore/model/Ecore.ecore</ecorePaths>
   <rootEClass href="http://www.eclipse.org/emf/2002/Ecore#//EDataType"/>
   <children xsi:type="org.eclipse.emf.ecp.view.model:Control" name="Control name">
     <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference">
diff --git a/bundles/org.eclipse.emfforms.editor.ecore/viewmodels/EEnum.view b/bundles/org.eclipse.emfforms.editor.ecore/viewmodels/EEnum.view
index 480eb2f..a0e3d53 100644
--- a/bundles/org.eclipse.emfforms.editor.ecore/viewmodels/EEnum.view
+++ b/bundles/org.eclipse.emfforms.editor.ecore/viewmodels/EEnum.view
@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="ASCII"?>
-<org.eclipse.emf.ecp.view.model:View xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:org.eclipse.emf.ecp.view.model="http://org/eclipse/emf/ecp/view/model/170" xmlns:org.eclipse.emf.ecp.view.table.model="http://org/eclipse/emf/ecp/view/table/model/150" ecorePath="/org.eclipse.emf.ecore/model/Ecore.ecore">
+<org.eclipse.emf.ecp.view.model:View xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:org.eclipse.emf.ecp.view.model="http://org/eclipse/emf/ecp/view/model/1170" xmlns:org.eclipse.emf.ecp.view.table.model="http://org/eclipse/emf/ecp/view/table/model/150">
+  <ecorePaths>/org.eclipse.emf.ecore/model/Ecore.ecore</ecorePaths>
   <rootEClass href="http://www.eclipse.org/emf/2002/Ecore#//EEnum"/>
   <children xsi:type="org.eclipse.emf.ecp.view.model:Control" name="Control name">
     <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference">
diff --git a/bundles/org.eclipse.emfforms.editor.ecore/viewmodels/EOperation.view b/bundles/org.eclipse.emfforms.editor.ecore/viewmodels/EOperation.view
index 21c23b1..649fdf4 100644
--- a/bundles/org.eclipse.emfforms.editor.ecore/viewmodels/EOperation.view
+++ b/bundles/org.eclipse.emfforms.editor.ecore/viewmodels/EOperation.view
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="ASCII"?>

-<org.eclipse.emf.ecp.view.model:View xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:org.eclipse.emf.ecp.view.group.model="http://org/eclipse/emf/ecp/view/group/model" xmlns:org.eclipse.emf.ecp.view.model="http://org/eclipse/emf/ecp/view/model/170" xmi:id="_vSAdMHZeEeW79bHa435byw" name="EOperation">

+<org.eclipse.emf.ecp.view.model:View xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:org.eclipse.emf.ecp.view.group.model="http://org/eclipse/emf/ecp/view/group/model" xmlns:org.eclipse.emf.ecp.view.model="http://org/eclipse/emf/ecp/view/model/1170" xmi:id="_vSAdMHZeEeW79bHa435byw" name="EOperation">

   <rootEClass href="http://www.eclipse.org/emf/2002/Ecore#//EOperation"/>

   <children xsi:type="org.eclipse.emf.ecp.view.group.model:Group" xmi:id="_7_UdUHZeEeW79bHa435byw" name="Standard" groupType="Collapsible">

     <children xsi:type="org.eclipse.emf.ecp.view.model:Control" xmi:id="_vSEHknZeEeW79bHa435byw" name="Control name">

diff --git a/bundles/org.eclipse.emfforms.editor.ecore/viewmodels/EPackage.view b/bundles/org.eclipse.emfforms.editor.ecore/viewmodels/EPackage.view
index 3d89f30..79a83f8 100644
--- a/bundles/org.eclipse.emfforms.editor.ecore/viewmodels/EPackage.view
+++ b/bundles/org.eclipse.emfforms.editor.ecore/viewmodels/EPackage.view
@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="ASCII"?>
-<org.eclipse.emf.ecp.view.model:View xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:org.eclipse.emf.ecp.view.model="http://org/eclipse/emf/ecp/view/model/170" ecorePath="/org.eclipse.emf.ecore/model/Ecore.ecore">
+<org.eclipse.emf.ecp.view.model:View xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:org.eclipse.emf.ecp.view.model="http://org/eclipse/emf/ecp/view/model/1170">
+  <ecorePaths>/org.eclipse.emf.ecore/model/Ecore.ecore</ecorePaths>
   <rootEClass href="http://www.eclipse.org/emf/2002/Ecore#//EPackage"/>
   <children xsi:type="org.eclipse.emf.ecp.view.model:Control" name="Control name">
     <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference">
diff --git a/bundles/org.eclipse.emfforms.editor.ecore/viewmodels/EParameter.view b/bundles/org.eclipse.emfforms.editor.ecore/viewmodels/EParameter.view
index a9e24ba..f4026ed 100644
--- a/bundles/org.eclipse.emfforms.editor.ecore/viewmodels/EParameter.view
+++ b/bundles/org.eclipse.emfforms.editor.ecore/viewmodels/EParameter.view
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="ASCII"?>

-<org.eclipse.emf.ecp.view.model:View xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:org.eclipse.emf.ecp.view.group.model="http://org/eclipse/emf/ecp/view/group/model" xmlns:org.eclipse.emf.ecp.view.model="http://org/eclipse/emf/ecp/view/model/170" xmi:id="_D1stgCgFEeamAsoQTsUi7A">

+<org.eclipse.emf.ecp.view.model:View xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:org.eclipse.emf.ecp.view.group.model="http://org/eclipse/emf/ecp/view/group/model" xmlns:org.eclipse.emf.ecp.view.model="http://org/eclipse/emf/ecp/view/model/1170" xmi:id="_D1stgCgFEeamAsoQTsUi7A">

   <rootEClass href="http://www.eclipse.org/emf/2002/Ecore#//EParameter"/>

   <children xsi:type="org.eclipse.emf.ecp.view.group.model:Group" xmi:id="_D1stgSgFEeamAsoQTsUi7A" name="Standard" groupType="Collapsible">

     <children xsi:type="org.eclipse.emf.ecp.view.model:Control" xmi:id="_D1stgigFEeamAsoQTsUi7A" name="Control name">

diff --git a/bundles/org.eclipse.emfforms.editor.ecore/viewmodels/EReference.view b/bundles/org.eclipse.emfforms.editor.ecore/viewmodels/EReference.view
index b62cb6f..8e371e7 100644
--- a/bundles/org.eclipse.emfforms.editor.ecore/viewmodels/EReference.view
+++ b/bundles/org.eclipse.emfforms.editor.ecore/viewmodels/EReference.view
@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="ASCII"?>
-<org.eclipse.emf.ecp.view.model:View xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:org.eclipse.emf.ecp.view.group.model="http://org/eclipse/emf/ecp/view/group/model" xmlns:org.eclipse.emf.ecp.view.model="http://org/eclipse/emf/ecp/view/model/170" ecorePath="/org.eclipse.emf.ecore/model/Ecore.ecore">
+<org.eclipse.emf.ecp.view.model:View xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:org.eclipse.emf.ecp.view.group.model="http://org/eclipse/emf/ecp/view/group/model" xmlns:org.eclipse.emf.ecp.view.model="http://org/eclipse/emf/ecp/view/model/1170">
+  <ecorePaths>/org.eclipse.emf.ecore/model/Ecore.ecore</ecorePaths>
   <rootEClass href="http://www.eclipse.org/emf/2002/Ecore#//EReference"/>
   <children xsi:type="org.eclipse.emf.ecp.view.group.model:Group" name="Standard" groupType="Collapsible">
     <children xsi:type="org.eclipse.emf.ecp.view.model:Control" name="Control name">
diff --git a/bundles/org.eclipse.emfforms.editor.genmodel.util/META-INF/MANIFEST.MF b/bundles/org.eclipse.emfforms.editor.genmodel.util/META-INF/MANIFEST.MF
index 6cef8f3..d2a6351 100644
--- a/bundles/org.eclipse.emfforms.editor.genmodel.util/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emfforms.editor.genmodel.util/META-INF/MANIFEST.MF
@@ -2,11 +2,11 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: EMFForms Genmodel Editor Utilities
 Bundle-SymbolicName: org.eclipse.emfforms.editor.genmodel.util;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emfforms.editor.genmodel.util;version="1.16.0";x-internal:=true,
- org.eclipse.emfforms.internal.editor.genmodel.util;version="1.16.0";x-internal:=true,
- org.eclipse.emfforms.internal.editor.genmodel.util.handler;version="1.16.0";x-internal:=true
+Export-Package: org.eclipse.emfforms.editor.genmodel.util;version="1.17.0";x-internal:=true,
+ org.eclipse.emfforms.internal.editor.genmodel.util;version="1.17.0";x-internal:=true,
+ org.eclipse.emfforms.internal.editor.genmodel.util.handler;version="1.17.0";x-internal:=true
 Require-Bundle: org.eclipse.ui.workbench;bundle-version="[3.7.0,4.0.0)",
  org.eclipse.ui;bundle-version="[3.7.0,4.0.0)",
  org.eclipse.core.runtime;bundle-version="[3.4.0,4.0.0)",
@@ -14,3 +14,4 @@
  org.eclipse.emf.ecore;bundle-version="[2.5.0,3.0.0)",
  org.eclipse.emf.codegen.ecore;bundle-version="[2.5.0,3.0.0)"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Automatic-Module-Name: org.eclipse.emfforms.editor.genmodel.util
diff --git a/bundles/org.eclipse.emfforms.editor.genmodel.util/pom.xml b/bundles/org.eclipse.emfforms.editor.genmodel.util/pom.xml
index 4a86231..ea44026 100644
--- a/bundles/org.eclipse.emfforms.editor.genmodel.util/pom.xml
+++ b/bundles/org.eclipse.emfforms.editor.genmodel.util/pom.xml
@@ -7,7 +7,7 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
 
diff --git a/bundles/org.eclipse.emfforms.editor.genmodel/META-INF/MANIFEST.MF b/bundles/org.eclipse.emfforms.editor.genmodel/META-INF/MANIFEST.MF
index 928ca1d..7665fa6 100644
--- a/bundles/org.eclipse.emfforms.editor.genmodel/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emfforms.editor.genmodel/META-INF/MANIFEST.MF
@@ -2,22 +2,23 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: GenModel Editor based on EMFForms
 Bundle-SymbolicName: org.eclipse.emfforms.editor.genmodel;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Activator: org.eclipse.emfforms.internal.editor.genmodel.Activator
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emfforms.internal.editor.genmodel;version="1.16.0";x-internal:=true;uses:="org.eclipse.emfforms.spi.editor",
-  org.eclipse.emfforms.internal.editor.genmodel.service;version="1.16.0";x-internal:=true,
-  org.eclipse.emfforms.internal.editor.genmodel.toolbaractions;version="1.16.0";x-internal:=true,
-  org.eclipse.emfforms.internal.editor.genmodel.util;version="1.16.0";x-internal:=true
-Require-Bundle: org.eclipse.emf.ecp.view.model.provider.xmi;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.editor;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.codegen.ecore.ui;bundle-version="[2.10.0,3.0.0)",
-  org.eclipse.osgi;bundle-version="[3.10.0,4.0.0)",
-  org.eclipse.emfforms.common;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.swt.treemasterdetail;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.core.resources;bundle-version="[3.9.0,4.0.0)",
-  org.eclipse.core.runtime;bundle-version="[3.10.0,4.0.0)",
-  org.eclipse.emf.ecp.view.group.model;bundle-version="[1.16.0,1.17.0)"
+Export-Package: org.eclipse.emfforms.internal.editor.genmodel;version="1.17.0";x-internal:=true;uses:="org.eclipse.emfforms.spi.editor",
+ org.eclipse.emfforms.internal.editor.genmodel.service;version="1.17.0";x-internal:=true,
+ org.eclipse.emfforms.internal.editor.genmodel.toolbaractions;version="1.17.0";x-internal:=true,
+ org.eclipse.emfforms.internal.editor.genmodel.util;version="1.17.0";x-internal:=true
+Require-Bundle: org.eclipse.emf.ecp.view.model.provider.xmi;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.editor;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.codegen.ecore.ui;bundle-version="[2.10.0,3.0.0)",
+ org.eclipse.osgi;bundle-version="[3.10.0,4.0.0)",
+ org.eclipse.emfforms.common;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.swt.treemasterdetail;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.core.resources;bundle-version="[3.9.0,4.0.0)",
+ org.eclipse.core.runtime;bundle-version="[3.10.0,4.0.0)",
+ org.eclipse.emf.ecp.view.group.model;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Import-Package: org.eclipse.core.runtime;version="3.4.0"
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emfforms.editor.genmodel
diff --git a/bundles/org.eclipse.emfforms.editor.genmodel/pom.xml b/bundles/org.eclipse.emfforms.editor.genmodel/pom.xml
index b222f41..d5723f4 100644
--- a/bundles/org.eclipse.emfforms.editor.genmodel/pom.xml
+++ b/bundles/org.eclipse.emfforms.editor.genmodel/pom.xml
@@ -7,12 +7,12 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
 
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emfforms.editor.genmodel</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 </project>
diff --git a/bundles/org.eclipse.emfforms.editor.genmodel/viewmodels/GenAnnotation.view b/bundles/org.eclipse.emfforms.editor.genmodel/viewmodels/GenAnnotation.view
index 3e59d56..ef5bfc6 100644
--- a/bundles/org.eclipse.emfforms.editor.genmodel/viewmodels/GenAnnotation.view
+++ b/bundles/org.eclipse.emfforms.editor.genmodel/viewmodels/GenAnnotation.view
@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="ASCII"?>
-<org.eclipse.emf.ecp.view.model:View xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:org.eclipse.emf.ecp.view.model="http://org/eclipse/emf/ecp/view/model/170" ecorePath="/org.eclipse.emf.codegen.ecore/model/GenModel.ecore">
+<org.eclipse.emf.ecp.view.model:View xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:org.eclipse.emf.ecp.view.model="http://org/eclipse/emf/ecp/view/model/1170">
+  <ecorePaths>/org.eclipse.emf.codegen.ecore/model/GenModel.ecore</ecorePaths>
   <rootEClass href="http://www.eclipse.org/emf/2002/GenModel#//GenAnnotation"/>
   <children xsi:type="org.eclipse.emf.ecp.view.model:Control" name="Control genAnnotations">
     <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference">
diff --git a/bundles/org.eclipse.emfforms.editor.genmodel/viewmodels/GenClass.view b/bundles/org.eclipse.emfforms.editor.genmodel/viewmodels/GenClass.view
index a9c27e4..dd08953 100644
--- a/bundles/org.eclipse.emfforms.editor.genmodel/viewmodels/GenClass.view
+++ b/bundles/org.eclipse.emfforms.editor.genmodel/viewmodels/GenClass.view
@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="ASCII"?>
-<org.eclipse.emf.ecp.view.model:View xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:org.eclipse.emf.ecp.view.model="http://org/eclipse/emf/ecp/view/model/170" ecorePath="/org.eclipse.emf.codegen.ecore/model/GenModel.ecore">
+<org.eclipse.emf.ecp.view.model:View xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:org.eclipse.emf.ecp.view.model="http://org/eclipse/emf/ecp/view/model/1170">
+  <ecorePaths>/org.eclipse.emf.codegen.ecore/model/GenModel.ecore</ecorePaths>
   <rootEClass href="http://www.eclipse.org/emf/2002/GenModel#//GenClass"/>
   <children xsi:type="org.eclipse.emf.ecp.view.model:Control" name="Control image">
     <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference">
diff --git a/bundles/org.eclipse.emfforms.editor.genmodel/viewmodels/GenDataType.view b/bundles/org.eclipse.emfforms.editor.genmodel/viewmodels/GenDataType.view
index 521cad2..00f2970 100644
--- a/bundles/org.eclipse.emfforms.editor.genmodel/viewmodels/GenDataType.view
+++ b/bundles/org.eclipse.emfforms.editor.genmodel/viewmodels/GenDataType.view
@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="ASCII"?>
-<org.eclipse.emf.ecp.view.model:View xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:org.eclipse.emf.ecp.view.model="http://org/eclipse/emf/ecp/view/model/170" ecorePath="/org.eclipse.emf.codegen.ecore/model/GenModel.ecore">
+<org.eclipse.emf.ecp.view.model:View xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:org.eclipse.emf.ecp.view.model="http://org/eclipse/emf/ecp/view/model/1170">
+  <ecorePaths>/org.eclipse.emf.codegen.ecore/model/GenModel.ecore</ecorePaths>
   <rootEClass href="http://www.eclipse.org/emf/2002/GenModel#//GenDataType"/>
   <children xsi:type="org.eclipse.emf.ecp.view.model:Control" name="Control ecoreDataType" readonly="true">
     <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference">
diff --git a/bundles/org.eclipse.emfforms.editor.genmodel/viewmodels/GenEnum.view b/bundles/org.eclipse.emfforms.editor.genmodel/viewmodels/GenEnum.view
index 8bb382b..795317f 100644
--- a/bundles/org.eclipse.emfforms.editor.genmodel/viewmodels/GenEnum.view
+++ b/bundles/org.eclipse.emfforms.editor.genmodel/viewmodels/GenEnum.view
@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="ASCII"?>
-<org.eclipse.emf.ecp.view.model:View xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:org.eclipse.emf.ecp.view.model="http://org/eclipse/emf/ecp/view/model/170" ecorePath="/org.eclipse.emf.codegen.ecore/model/GenModel.ecore">
+<org.eclipse.emf.ecp.view.model:View xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:org.eclipse.emf.ecp.view.model="http://org/eclipse/emf/ecp/view/model/1170">
+  <ecorePaths>/org.eclipse.emf.codegen.ecore/model/GenModel.ecore</ecorePaths>
   <rootEClass href="http://www.eclipse.org/emf/2002/GenModel#//GenEnum"/>
   <children xsi:type="org.eclipse.emf.ecp.view.model:Control" name="Control typeSafeEnumCompatible">
     <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference">
diff --git a/bundles/org.eclipse.emfforms.editor.genmodel/viewmodels/GenEnumLiteral.view b/bundles/org.eclipse.emfforms.editor.genmodel/viewmodels/GenEnumLiteral.view
index 01bc088..7fdc25c 100644
--- a/bundles/org.eclipse.emfforms.editor.genmodel/viewmodels/GenEnumLiteral.view
+++ b/bundles/org.eclipse.emfforms.editor.genmodel/viewmodels/GenEnumLiteral.view
@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="ASCII"?>
-<org.eclipse.emf.ecp.view.model:View xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:org.eclipse.emf.ecp.view.model="http://org/eclipse/emf/ecp/view/model/170" ecorePath="/org.eclipse.emf.codegen.ecore/model/GenModel.ecore">
+<org.eclipse.emf.ecp.view.model:View xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:org.eclipse.emf.ecp.view.model="http://org/eclipse/emf/ecp/view/model/1170">
+  <ecorePaths>/org.eclipse.emf.codegen.ecore/model/GenModel.ecore</ecorePaths>
   <rootEClass href="http://www.eclipse.org/emf/2002/GenModel#//GenEnumLiteral"/>
   <children xsi:type="org.eclipse.emf.ecp.view.model:Control" name="Control ecoreEnumLiteral" readonly="true">
     <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference">
diff --git a/bundles/org.eclipse.emfforms.editor.genmodel/viewmodels/GenFeature.view b/bundles/org.eclipse.emfforms.editor.genmodel/viewmodels/GenFeature.view
index d9693f6..c22da6b 100644
--- a/bundles/org.eclipse.emfforms.editor.genmodel/viewmodels/GenFeature.view
+++ b/bundles/org.eclipse.emfforms.editor.genmodel/viewmodels/GenFeature.view
@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="ASCII"?>
-<org.eclipse.emf.ecp.view.model:View xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:org.eclipse.emf.ecp.view.model="http://org/eclipse/emf/ecp/view/model/170" ecorePath="/org.eclipse.emf.codegen.ecore/model/GenModel.ecore">
+<org.eclipse.emf.ecp.view.model:View xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:org.eclipse.emf.ecp.view.model="http://org/eclipse/emf/ecp/view/model/1170">
+  <ecorePaths>/org.eclipse.emf.codegen.ecore/model/GenModel.ecore</ecorePaths>
   <rootEClass href="http://www.eclipse.org/emf/2002/GenModel#//GenFeature"/>
   <children xsi:type="org.eclipse.emf.ecp.view.model:Control" name="Control children">
     <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference">
diff --git a/bundles/org.eclipse.emfforms.editor.genmodel/viewmodels/GenModel.view b/bundles/org.eclipse.emfforms.editor.genmodel/viewmodels/GenModel.view
index 6584e54..6d7c150 100644
--- a/bundles/org.eclipse.emfforms.editor.genmodel/viewmodels/GenModel.view
+++ b/bundles/org.eclipse.emfforms.editor.genmodel/viewmodels/GenModel.view
@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="ASCII"?>
-<org.eclipse.emf.ecp.view.model:View xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:org.eclipse.emf.ecp.view.group.model="http://org/eclipse/emf/ecp/view/group/model" xmlns:org.eclipse.emf.ecp.view.model="http://org/eclipse/emf/ecp/view/model/170" xmi:id="_NnpN8MppEeWH8LG8MOZQNQ" ecorePath="/org.eclipse.emf.codegen.ecore/model/GenModel.ecore">
+<org.eclipse.emf.ecp.view.model:View xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:org.eclipse.emf.ecp.view.group.model="http://org/eclipse/emf/ecp/view/group/model" xmlns:org.eclipse.emf.ecp.view.model="http://org/eclipse/emf/ecp/view/model/1170" xmi:id="_NnpN8MppEeWH8LG8MOZQNQ">
+  <ecorePaths>/org.eclipse.emf.codegen.ecore/model/GenModel.ecore</ecorePaths>
   <rootEClass href="http://www.eclipse.org/emf/2002/GenModel#//GenModel"/>
   <children xsi:type="org.eclipse.emf.ecp.view.group.model:Group" xmi:id="_Nnp1AMppEeWH8LG8MOZQNQ" name="All" groupType="Collapsible" collapsed="true">
     <children xsi:type="org.eclipse.emf.ecp.view.model:Control" xmi:id="_Nnp1AcppEeWH8LG8MOZQNQ" name="Control bundleManifest">
diff --git a/bundles/org.eclipse.emfforms.editor.genmodel/viewmodels/GenOperation.view b/bundles/org.eclipse.emfforms.editor.genmodel/viewmodels/GenOperation.view
index 2a1a5a7..29d62c1 100644
--- a/bundles/org.eclipse.emfforms.editor.genmodel/viewmodels/GenOperation.view
+++ b/bundles/org.eclipse.emfforms.editor.genmodel/viewmodels/GenOperation.view
@@ -1,4 +1,5 @@
 <?xml version="1.0" encoding="ASCII"?>
-<org.eclipse.emf.ecp.view.model:View xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:org.eclipse.emf.ecp.view.model="http://org/eclipse/emf/ecp/view/model/170" ecorePath="/org.eclipse.emf.codegen.ecore/model/GenModel.ecore">
+<org.eclipse.emf.ecp.view.model:View xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:org.eclipse.emf.ecp.view.model="http://org/eclipse/emf/ecp/view/model/1170">
+  <ecorePaths>/org.eclipse.emf.codegen.ecore/model/GenModel.ecore</ecorePaths>
   <rootEClass href="http://www.eclipse.org/emf/2002/GenModel#//GenOperation"/>
 </org.eclipse.emf.ecp.view.model:View>
diff --git a/bundles/org.eclipse.emfforms.editor.genmodel/viewmodels/GenPackage.view b/bundles/org.eclipse.emfforms.editor.genmodel/viewmodels/GenPackage.view
index d8f57db..40429ab 100644
--- a/bundles/org.eclipse.emfforms.editor.genmodel/viewmodels/GenPackage.view
+++ b/bundles/org.eclipse.emfforms.editor.genmodel/viewmodels/GenPackage.view
@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="ASCII"?>
-<org.eclipse.emf.ecp.view.model:View xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:org.eclipse.emf.ecp.view.group.model="http://org/eclipse/emf/ecp/view/group/model" xmlns:org.eclipse.emf.ecp.view.model="http://org/eclipse/emf/ecp/view/model/170" xmi:id="_abLBEOn1EeW9hu2dEFzGzw" ecorePath="/org.eclipse.emf.codegen.ecore/model/GenModel.ecore">
+<org.eclipse.emf.ecp.view.model:View xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:org.eclipse.emf.ecp.view.group.model="http://org/eclipse/emf/ecp/view/group/model" xmlns:org.eclipse.emf.ecp.view.model="http://org/eclipse/emf/ecp/view/model/1170" xmi:id="_abLBEOn1EeW9hu2dEFzGzw">
+  <ecorePaths>/org.eclipse.emf.codegen.ecore/model/GenModel.ecore</ecorePaths>
   <rootEClass href="http://www.eclipse.org/emf/2002/GenModel#//GenPackage"/>
   <children xsi:type="org.eclipse.emf.ecp.view.group.model:Group" xmi:id="_hj8akOn1EeW9hu2dEFzGzw" name="All">
     <children xsi:type="org.eclipse.emf.ecp.view.model:Control" xmi:id="_pv69gOn1EeW9hu2dEFzGzw" name="Control basePackage">
diff --git a/bundles/org.eclipse.emfforms.editor.genmodel/viewmodels/GenParameter.view b/bundles/org.eclipse.emfforms.editor.genmodel/viewmodels/GenParameter.view
index 36fbee9..6854000 100644
--- a/bundles/org.eclipse.emfforms.editor.genmodel/viewmodels/GenParameter.view
+++ b/bundles/org.eclipse.emfforms.editor.genmodel/viewmodels/GenParameter.view
@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="ASCII"?>
-<org.eclipse.emf.ecp.view.model:View xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:org.eclipse.emf.ecp.view.model="http://org/eclipse/emf/ecp/view/model/170" ecorePath="/org.eclipse.emf.codegen.ecore/model/GenModel.ecore">
+<org.eclipse.emf.ecp.view.model:View xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:org.eclipse.emf.ecp.view.model="http://org/eclipse/emf/ecp/view/model/1170">
+  <ecorePaths>/org.eclipse.emf.codegen.ecore/model/GenModel.ecore</ecorePaths>
   <rootEClass href="http://www.eclipse.org/emf/2002/GenModel#//GenParameter"/>
   <children xsi:type="org.eclipse.emf.ecp.view.model:Control" name="Control genAnnotations">
     <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference">
diff --git a/bundles/org.eclipse.emfforms.editor.genmodel/viewmodels/GenTypeParameter.view b/bundles/org.eclipse.emfforms.editor.genmodel/viewmodels/GenTypeParameter.view
index 7610516..5ae8cb1 100644
--- a/bundles/org.eclipse.emfforms.editor.genmodel/viewmodels/GenTypeParameter.view
+++ b/bundles/org.eclipse.emfforms.editor.genmodel/viewmodels/GenTypeParameter.view
@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="ASCII"?>
-<org.eclipse.emf.ecp.view.model:View xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:org.eclipse.emf.ecp.view.model="http://org/eclipse/emf/ecp/view/model/170" ecorePath="/org.eclipse.emf.codegen.ecore/model/GenModel.ecore">
+<org.eclipse.emf.ecp.view.model:View xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:org.eclipse.emf.ecp.view.model="http://org/eclipse/emf/ecp/view/model/1170">
+  <ecorePaths>/org.eclipse.emf.codegen.ecore/model/GenModel.ecore</ecorePaths>
   <rootEClass href="http://www.eclipse.org/emf/2002/GenModel#//GenTypeParameter"/>
   <children xsi:type="org.eclipse.emf.ecp.view.model:Control" name="Control genAnnotations">
     <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference">
diff --git a/bundles/org.eclipse.emfforms.editor.viewmodel/META-INF/MANIFEST.MF b/bundles/org.eclipse.emfforms.editor.viewmodel/META-INF/MANIFEST.MF
index 892d0a8..021de66 100644
--- a/bundles/org.eclipse.emfforms.editor.viewmodel/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emfforms.editor.viewmodel/META-INF/MANIFEST.MF
@@ -2,22 +2,22 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: ViewModel Editor based on EMFForms
 Bundle-SymbolicName: org.eclipse.emfforms.editor.viewmodel;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emfforms.internal.editor.viewmodel;version="1.16.0";x-friends:="org.eclipse.emf.ecp.view.model.preview.e3"
+Export-Package: org.eclipse.emfforms.internal.editor.viewmodel;version="1.17.0";x-friends:="org.eclipse.emf.ecp.view.model.preview.e3"
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.4.0,4.0.0)",
-  org.eclipse.emf.ecp.view.model.preview.common;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.ide.editor.view;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.treemasterdetail.ui.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.ui.workbench;bundle-version="[3.7.0,4.0.0)",
-  org.eclipse.emf.edit;bundle-version="[2.8.0,3.0.0)",
-  org.eclipse.emf.ecp.view.model.common;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.ide.view.service;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.editor;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.swt.treemasterdetail;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.ui.ide;bundle-version="[3.0.0,4.0.0)",
-  org.eclipse.core.resources;bundle-version="[3.0.0,4.0.0)"
+ org.eclipse.emf.ecp.view.model.preview.common;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.ide.editor.view;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.treemasterdetail.ui.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.ui.workbench;bundle-version="[3.7.0,4.0.0)",
+ org.eclipse.emf.edit;bundle-version="[2.8.0,3.0.0)",
+ org.eclipse.emf.ecp.view.model.common;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.ide.view.service;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.editor;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.swt.treemasterdetail;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.ui.ide;bundle-version="[3.0.0,4.0.0)",
+ org.eclipse.core.resources;bundle-version="[3.0.0,4.0.0)"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Import-Package: org.eclipse.core.commands;version="0.0.0",
   org.eclipse.jface.action;version="0.0.0",
@@ -35,3 +35,4 @@
   org.eclipse.ui.part;ui.workbench=split;version="0.0.0",
   org.eclipse.ui.plugin;version="0.0.0"
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emfforms.editor.viewmodel
diff --git a/bundles/org.eclipse.emfforms.editor.viewmodel/pom.xml b/bundles/org.eclipse.emfforms.editor.viewmodel/pom.xml
index a1a1d47..5fba0f8 100644
--- a/bundles/org.eclipse.emfforms.editor.viewmodel/pom.xml
+++ b/bundles/org.eclipse.emfforms.editor.viewmodel/pom.xml
@@ -7,12 +7,12 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
 
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emfforms.editor.viewmodel</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 </project>
diff --git a/bundles/org.eclipse.emfforms.editor/META-INF/MANIFEST.MF b/bundles/org.eclipse.emfforms.editor/META-INF/MANIFEST.MF
index d5f8568..dfc7e18 100644
--- a/bundles/org.eclipse.emfforms.editor/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emfforms.editor/META-INF/MANIFEST.MF
@@ -2,33 +2,34 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: EMF Editor based on EMFForms
 Bundle-SymbolicName: org.eclipse.emfforms.editor;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Activator: org.eclipse.emfforms.internal.editor.Activator
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emfforms.internal.editor;version="1.16.0";x-internal:=true,
-  org.eclipse.emfforms.internal.editor.handlers;version="1.16.0";;x-internal:=true;x-friends:="org.eclipse.emfforms.editor.ecore",
-  org.eclipse.emfforms.internal.editor.toolbaractions;version="1.16.0";;x-internal:=true;x-internal:=true,
-  org.eclipse.emfforms.internal.editor.ui;version="1.16.0";x-friends:="org.eclipse.emfforms.editor.ecore",
-  org.eclipse.emfforms.spi.editor;version="1.16.0",
-  org.eclipse.emfforms.spi.editor.handler;version="1.16.0",
-  org.eclipse.emfforms.spi.editor.helpers;version="1.16.0";;x-friends:="org.eclipse.emfforms.editor.ecore,org.eclipse.emfforms.editor.genmodel"
+Export-Package: org.eclipse.emfforms.internal.editor;version="1.17.0";x-internal:=true,
+ org.eclipse.emfforms.internal.editor.handlers;version="1.17.0";;x-internal:=true;x-friends:="org.eclipse.emfforms.editor.ecore",
+ org.eclipse.emfforms.internal.editor.toolbaractions;version="1.17.0";x-internal:=true;;x-internal:=true,
+ org.eclipse.emfforms.internal.editor.ui;version="1.17.0";x-friends:="org.eclipse.emfforms.editor.ecore",
+ org.eclipse.emfforms.spi.editor;version="1.17.0",
+ org.eclipse.emfforms.spi.editor.handler;version="1.17.0",
+ org.eclipse.emfforms.spi.editor.helpers;version="1.17.0";;x-friends:="org.eclipse.emfforms.editor.ecore,org.eclipse.emfforms.editor.genmodel"
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.1.0,4.0.0)",
-  org.eclipse.emf.ecp.ui.view.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.edit.ui;bundle-version="[2.10.0,3.0.0)",
-  org.eclipse.emf.ecp.view.template.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.ui.ide;bundle-version="[3.10.0,4.0.0)",
-  org.eclipse.emf.ecore.edit;bundle-version="[2.9.0,3.0.0)",
-  org.eclipse.emf.databinding;bundle-version="[1.3.0,2.0.0)",
-  org.eclipse.jface.databinding;bundle-version="[1.6.0,2.0.0)",
-  org.eclipse.emf.ecore.xmi;bundle-version="[2.10.0,3.0.0)",
-  org.eclipse.emf.ecp.view.core.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.jface;bundle-version="[3.10.0,4.0.0)",
-  org.eclipse.emf.ecore;bundle-version="[2.10.0,3.0.0)",
-  org.eclipse.core.resources;bundle-version="[3.9.0,4.0.0)",
-  org.eclipse.emfforms.core.services;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services.editsupport;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.swt.treemasterdetail;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.validation;bundle-version="[1.16.0,1.17.0)"
+ org.eclipse.emf.ecp.ui.view.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.edit.ui;bundle-version="[2.10.0,3.0.0)",
+ org.eclipse.emf.ecp.view.template.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.ui.ide;bundle-version="[3.10.0,4.0.0)",
+ org.eclipse.emf.ecore.edit;bundle-version="[2.9.0,3.0.0)",
+ org.eclipse.emf.databinding;bundle-version="[1.3.0,2.0.0)",
+ org.eclipse.jface.databinding;bundle-version="[1.6.0,2.0.0)",
+ org.eclipse.emf.ecore.xmi;bundle-version="[2.10.0,3.0.0)",
+ org.eclipse.emf.ecp.view.core.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.jface;bundle-version="[3.10.0,4.0.0)",
+ org.eclipse.emf.ecore;bundle-version="[2.10.0,3.0.0)",
+ org.eclipse.core.resources;bundle-version="[3.9.0,4.0.0)",
+ org.eclipse.emfforms.core.services;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services.editsupport;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.swt.treemasterdetail;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.validation;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
-Import-Package: org.eclipse.emfforms.spi.swt.core.di;version="[1.16.0,1.17.0)"
+Import-Package: org.eclipse.emfforms.spi.swt.core.di;version="[1.17.0,1.18.0]"
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emfforms.editor
diff --git a/bundles/org.eclipse.emfforms.editor/pom.xml b/bundles/org.eclipse.emfforms.editor/pom.xml
index 0f516ca..43d8ec0 100644
--- a/bundles/org.eclipse.emfforms.editor/pom.xml
+++ b/bundles/org.eclipse.emfforms.editor/pom.xml
@@ -7,12 +7,12 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
 
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emfforms.editor</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 </project>
diff --git a/bundles/org.eclipse.emfforms.editor/src/org/eclipse/emfforms/internal/editor/ui/EditorToolBar.java b/bundles/org.eclipse.emfforms.editor/src/org/eclipse/emfforms/internal/editor/ui/EditorToolBar.java
index 98af911..3b1ea1a 100644
--- a/bundles/org.eclipse.emfforms.editor/src/org/eclipse/emfforms/internal/editor/ui/EditorToolBar.java
+++ b/bundles/org.eclipse.emfforms.editor/src/org/eclipse/emfforms/internal/editor/ui/EditorToolBar.java
@@ -47,7 +47,6 @@
 	 * @param titleText The text in the toolbar
 	 * @param toolbarActions a List of actions for the toolbar
 	 */
-	@SuppressWarnings("deprecation")
 	public EditorToolBar(Composite parent, int style, String titleText, List<Action> toolbarActions) {
 		super(parent, style);
 
@@ -65,7 +64,7 @@
 		final Label titleImage = new Label(this, SWT.NONE);
 		final ImageDescriptor imageDescriptor = ImageDescriptor.createFromURL(Activator.getDefault().getBundle()
 			.getResource("icons/view.png"));
-		titleImage.setImage(new Image(parent.getDisplay(), imageDescriptor.getImageData()));
+		titleImage.setImage(new Image(parent.getDisplay(), imageDescriptor.getImageData(100)));
 
 		final FormData titleImageData = new FormData();
 		final int imageOffset = -titleImage.computeSize(SWT.DEFAULT, SWT.DEFAULT).y / 2;
diff --git a/bundles/org.eclipse.emfforms.editor/src/org/eclipse/emfforms/spi/editor/GenericEditor.java b/bundles/org.eclipse.emfforms.editor/src/org/eclipse/emfforms/spi/editor/GenericEditor.java
index 7be0c36..ac18177 100644
--- a/bundles/org.eclipse.emfforms.editor/src/org/eclipse/emfforms/spi/editor/GenericEditor.java
+++ b/bundles/org.eclipse.emfforms.editor/src/org/eclipse/emfforms/spi/editor/GenericEditor.java
@@ -138,6 +138,8 @@
 
 	private boolean reloading;
 
+	private boolean closing;
+
 	/**
 	 * @return the {@link DiagnosticCache}. may be <code>null</code>
 	 * @since 1.10
@@ -195,11 +197,18 @@
 						return;
 					}
 					reloading = true;
-					resourceSet.getResources().removeAll(removedResources);
+					removeResources(removedResources);
 					for (final Resource changed : changedResources) {
-						changed.unload();
+						// We need to get the resource by its URI from the resource set because otherwise proxies will
+						// not be able to resolve after the reload. This is the case because the given resources are not
+						// part of this editor's resource set.
+						final Resource toReload = resourceSet.getResource(changed.getURI(), false);
+						if (toReload == null) {
+							continue;
+						}
+						toReload.unload();
 						try {
-							changed.load(null);
+							toReload.load(null);
 						} catch (final IOException ex) {
 						}
 					}
@@ -721,6 +730,43 @@
 	}
 
 	/**
+	 * Returns whether this editor is currently in the process of shutting down.
+	 *
+	 * @return <code>true</code> if the editor is currently closing, <code>false</code> otherwise
+	 * @since 1.17
+	 */
+	protected boolean isClosing() {
+		return closing;
+	}
+
+	/**
+	 * Set whether this editor is currently in the process of shutting down.
+	 * Set this flag in case you will close the editor.
+	 *
+	 * @param closing Whether the editor is currently closing (shutting down)
+	 * @since 1.17
+	 */
+	protected void setClosing(boolean closing) {
+		this.closing = closing;
+	}
+
+	/**
+	 * Removes the given {@linkplain Resource Resources} from this editor's {@linkplain ResourceSet}. Thereby the
+	 * resources are matched by URI.
+	 * 
+	 * @param resources The {@linkplain Resource Resources} to remove from this editor's {@linkplain ResourceSet}.
+	 * @since 1.17
+	 */
+	protected void removeResources(final Collection<Resource> resources) {
+		for (final Resource removed : resources) {
+			final Resource toRemove = resourceSet.getResource(removed.getURI(), false);
+			if (toRemove != null) {
+				resourceSet.getResources().remove(toRemove);
+			}
+		}
+	}
+
+	/**
 	 * Listens to part events.
 	 *
 	 */
@@ -743,7 +789,8 @@
 
 		@Override
 		public void partActivated(IWorkbenchPart part) {
-			if (part == GenericEditor.this && isDirty() && filesChangedWithConflict && discardChanges()) {
+			if (!isClosing() && part == GenericEditor.this && isDirty() && filesChangedWithConflict
+				&& discardChanges()) {
 				reloading = true;
 				for (final Resource r : resourceSet.getResources()) {
 					r.unload();
diff --git a/bundles/org.eclipse.emfforms.localization/META-INF/MANIFEST.MF b/bundles/org.eclipse.emfforms.localization/META-INF/MANIFEST.MF
index 5389805..2094c0f 100644
--- a/bundles/org.eclipse.emfforms.localization/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emfforms.localization/META-INF/MANIFEST.MF
@@ -2,16 +2,17 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: EMF Forms Localization
 Bundle-SymbolicName: org.eclipse.emfforms.localization
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emfforms.internal.localization;version="1.16.0";x-internal:=true,
- org.eclipse.emfforms.spi.localization;version="1.16.0"
+Export-Package: org.eclipse.emfforms.internal.localization;version="1.17.0";x-internal:=true,
+ org.eclipse.emfforms.spi.localization;version="1.17.0"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Service-Component: OSGI-INF/localizationService.xml
-Import-Package: org.eclipse.emfforms.spi.common.locale;version="[1.12.0,1.16.0]",
- org.eclipse.emfforms.spi.common.report;version="[1.12.0,1.16.0]",
+Import-Package: org.eclipse.emfforms.spi.common.locale;version="[1.12.0,1.17.0]",
+ org.eclipse.emfforms.spi.common.report;version="[1.12.0,1.17.0]",
  org.eclipse.osgi.service.localization;version="[1.1.0,2.0.0)",
  org.osgi.framework;version="[1.3.0,2.0.0)",
  org.osgi.service.component.annotations;version="1.2.0",
  org.osgi.service.log;version="[1.3.0,2.0.0)"
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emfforms.localization
diff --git a/bundles/org.eclipse.emfforms.localization/pom.xml b/bundles/org.eclipse.emfforms.localization/pom.xml
index 9247d35..458626a 100644
--- a/bundles/org.eclipse.emfforms.localization/pom.xml
+++ b/bundles/org.eclipse.emfforms.localization/pom.xml
@@ -7,7 +7,7 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
 
diff --git a/bundles/org.eclipse.emfforms.rulerepository.model.edit/META-INF/MANIFEST.MF b/bundles/org.eclipse.emfforms.rulerepository.model.edit/META-INF/MANIFEST.MF
index 47b43ba..526c347 100644
--- a/bundles/org.eclipse.emfforms.rulerepository.model.edit/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emfforms.rulerepository.model.edit/META-INF/MANIFEST.MF
@@ -2,20 +2,21 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.emfforms.rulerepository.model.edit;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-ClassPath: .
 Bundle-Activator: org.eclipse.emfforms.spi.rulerepository.model.provider.RulerepositoryEditPlugin$Implementation
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
-Export-Package: org.eclipse.emfforms.spi.rulerepository.model.provider;version="1.16.0";x-internal:=true
+Export-Package: org.eclipse.emfforms.spi.rulerepository.model.provider;version="1.17.0";x-internal:=true
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.10.0,4.0.0)",
-  org.eclipse.emfforms.rulerepository.model;bundle-version="[1.16.0,1.17.0)";visibility:=reexport,
-  org.eclipse.emf.edit;bundle-version="[2.10.0,3.0.0)";visibility:=reexport,
-  org.eclipse.emf.ecore;bundle-version="[2.10.0,3.0.0)";visibility:=reexport,
-  org.eclipse.emf.ecore.edit;bundle-version="[2.8.0,3.0.0)";visibility:=reexport,
-  org.eclipse.emf.ecp.view.rule.model;bundle-version="[1.16.0,1.17.0)";visibility:=reexport,
-  org.eclipse.emf.ecp.view.rule.model.edit;bundle-version="[1.16.0,1.17.0)";visibility:=reexport,
-  org.eclipse.emf.ecp.view.model;bundle-version="[1.16.0,1.17.0)";visibility:=reexport,
-  org.eclipse.emf.ecp.view.model.edit;bundle-version="[1.16.0,1.17.0)";visibility:=reexport
+ org.eclipse.emfforms.rulerepository.model;bundle-version="[1.17.0,1.18.0]";visibility:=reexport,
+ org.eclipse.emf.edit;bundle-version="[2.10.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.ecore;bundle-version="[2.10.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.ecore.edit;bundle-version="[2.8.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.ecp.view.rule.model;bundle-version="[1.17.0,1.18.0]";visibility:=reexport,
+ org.eclipse.emf.ecp.view.rule.model.edit;bundle-version="[1.17.0,1.18.0]";visibility:=reexport,
+ org.eclipse.emf.ecp.view.model;bundle-version="[1.17.0,1.18.0]";visibility:=reexport,
+ org.eclipse.emf.ecp.view.model.edit;bundle-version="[1.17.0,1.18.0]";visibility:=reexport
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emfforms.rulerepository.model.edit
diff --git a/bundles/org.eclipse.emfforms.rulerepository.model.edit/pom.xml b/bundles/org.eclipse.emfforms.rulerepository.model.edit/pom.xml
index 047ab55..fc2d4e3 100644
--- a/bundles/org.eclipse.emfforms.rulerepository.model.edit/pom.xml
+++ b/bundles/org.eclipse.emfforms.rulerepository.model.edit/pom.xml
@@ -7,7 +7,7 @@
   <parent>

     <groupId>org.eclipse.emf.ecp</groupId>

     <artifactId>ecp-bundles-parent</artifactId>

-    <version>1.16.0-SNAPSHOT</version>

+    <version>1.17.0-SNAPSHOT</version>

     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>

   </parent>

 

diff --git a/bundles/org.eclipse.emfforms.rulerepository.model/META-INF/MANIFEST.MF b/bundles/org.eclipse.emfforms.rulerepository.model/META-INF/MANIFEST.MF
index 4b45768..491ba38 100644
--- a/bundles/org.eclipse.emfforms.rulerepository.model/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emfforms.rulerepository.model/META-INF/MANIFEST.MF
@@ -2,17 +2,18 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.emfforms.rulerepository.model;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-ClassPath: .
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
-Export-Package: org.eclipse.emfforms.spi.rulerepository.model;version="1.16.0",
-  org.eclipse.emfforms.spi.rulerepository.model.impl;version="1.16.0";x-friends:="org.eclipse.emfforms.rulerepository.model.edit",
-  org.eclipse.emfforms.spi.rulerepository.model.util;version="1.16.0";x-friends:="org.eclipse.emfforms.rulerepository.model.edit"
+Export-Package: org.eclipse.emfforms.spi.rulerepository.model;version="1.17.0",
+ org.eclipse.emfforms.spi.rulerepository.model.impl;version="1.17.0";x-friends:="org.eclipse.emfforms.rulerepository.model.edit",
+ org.eclipse.emfforms.spi.rulerepository.model.util;version="1.17.0";x-friends:="org.eclipse.emfforms.rulerepository.model.edit"
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.10.0,4.0.0)",
-  org.eclipse.emf.ecore;bundle-version="[2.10.0,3.0.0)";visibility:=reexport,
-  org.eclipse.emf.ecore.xmi;bundle-version="[2.10.0,3.0.0)";visibility:=reexport,
-  org.eclipse.emf.ecp.view.rule.model;bundle-version="[1.16.0,1.17.0)";visibility:=reexport,
-  org.eclipse.emf.ecp.view.model;bundle-version="[1.16.0,1.17.0)";visibility:=reexport
+ org.eclipse.emf.ecore;bundle-version="[2.10.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.ecore.xmi;bundle-version="[2.10.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.ecp.view.rule.model;bundle-version="[1.17.0,1.18.0]";visibility:=reexport,
+ org.eclipse.emf.ecp.view.model;bundle-version="[1.17.0,1.18.0]";visibility:=reexport
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emfforms.rulerepository.model
diff --git a/bundles/org.eclipse.emfforms.rulerepository.model/pom.xml b/bundles/org.eclipse.emfforms.rulerepository.model/pom.xml
index 29c587b..9dd56ba 100644
--- a/bundles/org.eclipse.emfforms.rulerepository.model/pom.xml
+++ b/bundles/org.eclipse.emfforms.rulerepository.model/pom.xml
@@ -7,7 +7,7 @@
   <parent>

     <groupId>org.eclipse.emf.ecp</groupId>

     <artifactId>ecp-bundles-parent</artifactId>

-    <version>1.16.0-SNAPSHOT</version>

+    <version>1.17.0-SNAPSHOT</version>

     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>

   </parent>

 

diff --git a/bundles/org.eclipse.emfforms.rulerepository.tooling/META-INF/MANIFEST.MF b/bundles/org.eclipse.emfforms.rulerepository.tooling/META-INF/MANIFEST.MF
index 23881fa..b1af613 100644
--- a/bundles/org.eclipse.emfforms.rulerepository.tooling/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emfforms.rulerepository.tooling/META-INF/MANIFEST.MF
@@ -2,11 +2,11 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: EMFForms RuleRepository Tooling
 Bundle-SymbolicName: org.eclipse.emfforms.rulerepository.tooling;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emfforms.internal.rulerepository.tooling;version="1.16.0";x-internal:=true,
-  org.eclipse.emfforms.internal.rulerepository.tooling.merge;version="1.16.0";x-internal:=true,
-  org.eclipse.emfforms.internal.rulerepository.tooling.wizard;version="1.16.0";x-internal:=true
+Export-Package: org.eclipse.emfforms.internal.rulerepository.tooling;version="1.17.0";x-internal:=true,
+  org.eclipse.emfforms.internal.rulerepository.tooling.merge;version="1.17.0";x-internal:=true,
+  org.eclipse.emfforms.internal.rulerepository.tooling.wizard;version="1.17.0";x-internal:=true
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.10.0,4.0.0)",
   org.eclipse.core.resources;bundle-version="[3.9.0,4.0.0)",
   org.eclipse.ui;bundle-version="[3.106.0,4.0.0)",
@@ -14,20 +14,21 @@
   org.eclipse.emf.edit;bundle-version="[2.10.0,3.0.0)",
   org.eclipse.core.databinding;bundle-version="[1.4.0,2.0.0)",
   org.eclipse.emf.databinding;bundle-version="[1.2.0,2.0.0)",
-  org.eclipse.emfforms.rulerepository.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.ui.view.editor.controls;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.context;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.core.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.swt.core;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.model.common;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.ui.view;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.template.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.editor;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.ide.util;bundle-version="[1.16.0,1.17.0)"
+  org.eclipse.emfforms.rulerepository.model;bundle-version="[1.17.0,1.18.0)",
+  org.eclipse.emf.ecp.ui.view.editor.controls;bundle-version="[1.17.0,1.18.0)",
+  org.eclipse.emf.ecp.view.context;bundle-version="[1.17.0,1.18.0)",
+  org.eclipse.emf.ecp.view.core.swt;bundle-version="[1.17.0,1.18.0)",
+  org.eclipse.emfforms.swt.core;bundle-version="[1.17.0,1.18.0)",
+  org.eclipse.emf.ecp.view.model.common;bundle-version="[1.17.0,1.18.0)",
+  org.eclipse.emf.ecp.ui.view;bundle-version="[1.17.0,1.18.0)",
+  org.eclipse.emf.ecp.view.template.model;bundle-version="[1.17.0,1.18.0)",
+  org.eclipse.emfforms.editor;bundle-version="[1.17.0,1.18.0)",
+  org.eclipse.emf.ecp.ide.util;bundle-version="[1.17.0,1.18.0)"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.7
 Import-Package: javax.inject;version="1.0.0",
- org.eclipse.emf.ecp.edit.spi.swt.util;version="[1.16.0,1.17.0)",
- org.eclipse.emfforms.spi.swt.core.di;version="[1.16.0,1.17.0)",
- org.osgi.service.component.annotations;version="[1.2.0,2.0.0)";resolution:=optional
+  org.eclipse.emf.ecp.edit.spi.swt.util;version="[1.17.0,1.18.0)",
+  org.eclipse.emfforms.spi.swt.core.di;version="[1.17.0,1.18.0)",
+  org.osgi.service.component.annotations;version="[1.2.0,2.0.0)";resolution:=optional
 Service-Component: OSGI-INF/org.eclipse.emfforms.internal.rulerepository.tooling.RuleRepositoryLinkFeatureControlRendererService.xml
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emfforms.rulerepository.tooling
diff --git a/bundles/org.eclipse.emfforms.rulerepository.tooling/pom.xml b/bundles/org.eclipse.emfforms.rulerepository.tooling/pom.xml
index 6018810..6672e062 100644
--- a/bundles/org.eclipse.emfforms.rulerepository.tooling/pom.xml
+++ b/bundles/org.eclipse.emfforms.rulerepository.tooling/pom.xml
@@ -7,7 +7,7 @@
   <parent>

     <groupId>org.eclipse.emf.ecp</groupId>

     <artifactId>ecp-bundles-parent</artifactId>

-    <version>1.16.0-SNAPSHOT</version>

+    <version>1.17.0-SNAPSHOT</version>

     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>

   </parent>

 

diff --git a/bundles/org.eclipse.emfforms.rulerepository.tooling/src/org/eclipse/emfforms/internal/rulerepository/tooling/RuleRepositoryEditor.java b/bundles/org.eclipse.emfforms.rulerepository.tooling/src/org/eclipse/emfforms/internal/rulerepository/tooling/RuleRepositoryEditor.java
index 343a0ed..a17afbe 100644
--- a/bundles/org.eclipse.emfforms.rulerepository.tooling/src/org/eclipse/emfforms/internal/rulerepository/tooling/RuleRepositoryEditor.java
+++ b/bundles/org.eclipse.emfforms.rulerepository.tooling/src/org/eclipse/emfforms/internal/rulerepository/tooling/RuleRepositoryEditor.java
@@ -15,14 +15,11 @@
 import java.util.LinkedList;
 import java.util.List;
 
-import org.eclipse.emf.ecore.EObject;
-import org.eclipse.emf.ecore.EStructuralFeature;
 import org.eclipse.emf.ecore.resource.Resource;
 import org.eclipse.emf.ecore.resource.ResourceSet;
 import org.eclipse.emf.ecore.util.EcoreUtil;
-import org.eclipse.emf.ecore.util.FeatureMap;
-import org.eclipse.emf.ecore.xml.type.AnyType;
 import org.eclipse.emf.ecp.ide.spi.util.EcoreHelper;
+import org.eclipse.emf.ecp.ide.spi.util.ViewModelHelper;
 import org.eclipse.emf.ecp.view.spi.model.VView;
 import org.eclipse.emfforms.internal.editor.toolbaractions.LoadEcoreAction;
 import org.eclipse.emfforms.spi.editor.GenericEditor;
@@ -61,37 +58,17 @@
 			if (!VView.class.isInstance(resource.getContents().get(0))) {
 				continue;
 			}
-			final String ecorePath = getEcorePath(resource);
-			if (ecorePath == null) {
-				return;
+			for (final String ecorePath : ViewModelHelper.getEcorePaths(resource)) {
+				if (ecorePath == null) {
+					return;
+				}
+				EcoreHelper.registerEcore(ecorePath);
 			}
-			EcoreHelper.registerEcore(ecorePath);
 		}
 		// resolve all proxies
 		EcoreUtil.resolveAll(resourceSet);
 	}
 
-	private String getEcorePath(Resource resource) {
-		if (resource == null || resource.getContents().isEmpty()) {
-			return null;
-		}
-		final EObject eObject = resource.getContents().get(0);
-		if (VView.class.isInstance(eObject)) {
-			return VView.class.cast(eObject).getEcorePath();
-		}
-		if (AnyType.class.isInstance(eObject)) {
-			/* view model has older ns uri */
-			final FeatureMap anyAttribute = AnyType.class.cast(eObject).getAnyAttribute();
-			for (int i = 0; i < anyAttribute.size(); i++) {
-				final EStructuralFeature feature = anyAttribute.getEStructuralFeature(i);
-				if ("ecorePath".equals(feature.getName())) { //$NON-NLS-1$
-					return (String) anyAttribute.getValue(i);
-				}
-			}
-		}
-		return null;
-	}
-
 	@Override
 	protected ResourceSet loadResource(IEditorInput editorInput) {
 		final ResourceSet result = super.loadResource(editorInput);
@@ -103,11 +80,6 @@
 		return super.loadResource(editorInput);
 	}
 
-	/**
-	 * {@inheritDoc}
-	 *
-	 * @see org.eclipse.emfforms.spi.editor.GenericEditor#dispose()
-	 */
 	@Override
 	public void dispose() {
 		for (final Resource resource : getResourceSet().getResources()) {
@@ -117,11 +89,12 @@
 			if (!VView.class.isInstance(resource.getContents().get(0))) {
 				continue;
 			}
-			final String ecorePath = getEcorePath(resource);
-			if (ecorePath == null) {
-				return;
+			for (final String ecorePath : ViewModelHelper.getEcorePaths(resource)) {
+				if (ecorePath == null) {
+					return;
+				}
+				EcoreHelper.unregisterEcore(ecorePath);
 			}
-			EcoreHelper.unregisterEcore(ecorePath);
 		}
 		super.dispose();
 	}
diff --git a/bundles/org.eclipse.emfforms.rulerepository.tooling/src/org/eclipse/emfforms/internal/rulerepository/tooling/wizard/EMFFormsNewRuleRepositoryWizardPage.java b/bundles/org.eclipse.emfforms.rulerepository.tooling/src/org/eclipse/emfforms/internal/rulerepository/tooling/wizard/EMFFormsNewRuleRepositoryWizardPage.java
index 11d53ca..20c6a18 100644
--- a/bundles/org.eclipse.emfforms.rulerepository.tooling/src/org/eclipse/emfforms/internal/rulerepository/tooling/wizard/EMFFormsNewRuleRepositoryWizardPage.java
+++ b/bundles/org.eclipse.emfforms.rulerepository.tooling/src/org/eclipse/emfforms/internal/rulerepository/tooling/wizard/EMFFormsNewRuleRepositoryWizardPage.java
@@ -145,27 +145,27 @@
 	}
 
 	/**
-	 * Ensures that both text fields are set.
+	 * Validates the container and file.
 	 */
 
 	private void dialogChanged() {
-		final IResource container = ResourcesPlugin.getWorkspace().getRoot()
-			.findMember(new Path(getContainerName()));
-		final String fileName = getFileName();
-
 		if (getContainerName().length() == 0) {
 			updateStatus(Messages.EMFFormsRuleRepositoryWizardPage_errorNoContainer);
 			return;
 		}
-		if (container == null
-			|| (container.getType() & (IResource.PROJECT | IResource.FOLDER)) == 0) {
-			updateStatus(Messages.EMFFormsRuleRepositoryWizardPage_errorContainerNotExists);
+
+		final IResource container = ResourcesPlugin.getWorkspace().getRoot()
+			.findMember(new Path(getContainerName()));
+
+		final String message = getContainerErrorMessage(container);
+
+		if (message != null) {
+			updateStatus(message);
 			return;
 		}
-		if (!container.isAccessible()) {
-			updateStatus(Messages.EMFFormsRuleRepositoryWizardPage_errorProjectReadOnly);
-			return;
-		}
+
+		final String fileName = getFileName();
+
 		if (fileName.length() == 0) {
 			updateStatus(Messages.EMFFormsRuleRepositoryWizardPage_errorNoFilename);
 			return;
@@ -191,6 +191,27 @@
 		updateStatus(null);
 	}
 
+	/**
+	 * Return the error message for a selected {@link IResource} if
+	 * 1. The container does not exists
+	 * 2. If the container is project or folder
+	 * 3. If the container is read-only
+	 * Otherwise (no error) Null is returned.
+	 *
+	 * @param container The {@link IResource} to check
+	 * @return the error message or null if the {@link IResource} is valid
+	 */
+	public static String getContainerErrorMessage(IResource container) {
+		if (container == null
+			|| (container.getType() & (IResource.PROJECT | IResource.FOLDER)) == 0) {
+			return Messages.EMFFormsRuleRepositoryWizardPage_errorContainerNotExists;
+		}
+		if (!container.isAccessible()) {
+			return Messages.EMFFormsRuleRepositoryWizardPage_errorProjectReadOnly;
+		}
+		return null;
+	}
+
 	private void updateStatus(String message) {
 		setErrorMessage(message);
 		setPageComplete(message == null);
diff --git a/bundles/org.eclipse.emfforms.setup.base/META-INF/MANIFEST.MF b/bundles/org.eclipse.emfforms.setup.base/META-INF/MANIFEST.MF
index 7694ad6..d6917c0 100644
--- a/bundles/org.eclipse.emfforms.setup.base/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emfforms.setup.base/META-INF/MANIFEST.MF
@@ -2,47 +2,47 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: EMFForms Base Dependencies
 Bundle-SymbolicName: org.eclipse.emfforms.setup.base
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Require-Bundle: org.eclipse.emfforms.common;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services.databinding.featurepath;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services.databinding.index;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services.databinding.mapping;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services.domainexpander.default;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services.domainexpander.index;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services.domainexpander.mapping;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services.domainexpander.table;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services.editsupport;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services.emf;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services.emfspecificservice;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services.legacy;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services.locale.default;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services.mappingprovider.default;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services.mappingprovider.table;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services.structuralchange;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services.structuralchange.default;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services.structuralchange.index;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services.structuralchange.mapping;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services.structuralchange.table;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.localization;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.swt.core;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.swt.core.di;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.swt.core.di.extension;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.swt.core.plugin;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.swt.table;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.table.ui.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.table.validation;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.swt.treemasterdetail;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.treemasterdetail.ui.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.treemasterdetail.validation;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.view.model.localization;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.validation;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.categorization.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.group.ui.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.horizontal.ui.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.vertical.ui.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.template.service;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.control.multireference;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.swt.control.multiattribute;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.swt.layout;bundle-version="[1.16.0,1.17.0)"
+Require-Bundle: org.eclipse.emfforms.common;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services.databinding.featurepath;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services.databinding.index;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services.databinding.mapping;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services.domainexpander.default;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services.domainexpander.index;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services.domainexpander.mapping;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services.domainexpander.table;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services.editsupport;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services.emf;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services.emfspecificservice;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services.legacy;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services.locale.default;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services.mappingprovider.default;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services.mappingprovider.table;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services.structuralchange;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services.structuralchange.default;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services.structuralchange.index;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services.structuralchange.mapping;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services.structuralchange.table;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.localization;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.swt.core;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.swt.core.di;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.swt.core.di.extension;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.swt.core.plugin;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.swt.table;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.table.ui.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.table.validation;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.swt.treemasterdetail;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.treemasterdetail.ui.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.treemasterdetail.validation;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.view.model.localization;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.validation;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.categorization.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.group.ui.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.horizontal.ui.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.vertical.ui.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.template.service;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.control.multireference;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.swt.control.multiattribute;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.swt.layout;bundle-version="[1.17.0,1.18.0]"
diff --git a/bundles/org.eclipse.emfforms.setup.base/pom.xml b/bundles/org.eclipse.emfforms.setup.base/pom.xml
index 638c416..b2064c6 100644
--- a/bundles/org.eclipse.emfforms.setup.base/pom.xml
+++ b/bundles/org.eclipse.emfforms.setup.base/pom.xml
@@ -7,7 +7,7 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
 
diff --git a/bundles/org.eclipse.emfforms.swt.categorization.expandbar/META-INF/MANIFEST.MF b/bundles/org.eclipse.emfforms.swt.categorization.expandbar/META-INF/MANIFEST.MF
index fb6febc..1805289 100644
--- a/bundles/org.eclipse.emfforms.swt.categorization.expandbar/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emfforms.swt.categorization.expandbar/META-INF/MANIFEST.MF
@@ -2,13 +2,13 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: EMFForms Categorization renderer using an Expandbar
 Bundle-SymbolicName: org.eclipse.emfforms.swt.categorization.expandbar
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emfforms.internal.swt.categorization.expandbar;version="1.16.0";x-internal:=true
-Require-Bundle: org.eclipse.emf.ecp.view.categorization.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.swt.core;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.ui.view;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.model.common;bundle-version="[1.16.0,1.17.0)",
+Export-Package: org.eclipse.emfforms.internal.swt.categorization.expandbar;version="1.17.0";x-internal:=true
+Require-Bundle: org.eclipse.emf.ecp.view.categorization.model;bundle-version="[1.17.0,1.18.0)",
+  org.eclipse.emfforms.swt.core;bundle-version="[1.17.0,1.18.0)",
+  org.eclipse.emf.ecp.ui.view;bundle-version="[1.17.0,1.18.0)",
+  org.eclipse.emf.ecp.view.model.common;bundle-version="[1.17.0,1.18.0)",
   org.eclipse.emf.edit;bundle-version="[2.10.0,3.0.0)",
   org.eclipse.rap.rwt;bundle-version="[3.0.2,4.0.0)",
   org.eclipse.core.databinding;bundle-version="[1.3.0,2.0.0)",
@@ -16,13 +16,13 @@
   org.eclipse.emf.databinding.edit;bundle-version="[1.2.0,2.0.0)"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.7
 Import-Package: javax.inject;version="[1.0.0,2.0.0)",
-  org.eclipse.emf.ecp.edit.internal.swt.util;version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.edit.spi.swt.util;version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.spi.swt.reporting;version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.template.model;version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.template.style.validation.model;version="[1.16.0,1.17.0)",
+  org.eclipse.emf.ecp.edit.internal.swt.util;version="[1.17.0,1.18.0)",
+  org.eclipse.emf.ecp.edit.spi.swt.util;version="[1.17.0,1.18.0)",
+  org.eclipse.emf.ecp.view.spi.swt.reporting;version="[1.17.0,1.18.0)",
+  org.eclipse.emf.ecp.view.template.model;version="[1.17.0,1.18.0)",
+  org.eclipse.emf.ecp.view.template.style.validation.model;version="[1.17.0,1.18.0)",
   org.eclipse.emf.edit.ui.provider;version="0.0.0",
-  org.eclipse.emfforms.spi.swt.core.di;version="[1.16.0,1.17.0)",
+  org.eclipse.emfforms.spi.swt.core.di;version="[1.17.0,1.18.0)",
   org.eclipse.jface.databinding.swt;version="0.0.0",
   org.eclipse.jface.layout;version="0.0.0",
   org.eclipse.jface.resource;version="0.0.0",
@@ -31,3 +31,4 @@
   org.osgi.service.component.annotations;version="[1.2.0,2.0.0)";resolution:=optional
 Service-Component: OSGI-INF/org.eclipse.emfforms.internal.swt.categorization.expandbar.CategorizationElementExpandBarRendererService.xml
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emfforms.swt.categorization.expandbar
diff --git a/bundles/org.eclipse.emfforms.swt.categorization.expandbar/pom.xml b/bundles/org.eclipse.emfforms.swt.categorization.expandbar/pom.xml
index f29308a..431d4b4 100644
--- a/bundles/org.eclipse.emfforms.swt.categorization.expandbar/pom.xml
+++ b/bundles/org.eclipse.emfforms.swt.categorization.expandbar/pom.xml
@@ -5,11 +5,11 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emfforms.swt.categorization.expandbar</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 </project>
diff --git a/bundles/org.eclipse.emfforms.swt.control.multiattribute/META-INF/MANIFEST.MF b/bundles/org.eclipse.emfforms.swt.control.multiattribute/META-INF/MANIFEST.MF
index e43b6a9..e08954a 100644
--- a/bundles/org.eclipse.emfforms.swt.control.multiattribute/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emfforms.swt.control.multiattribute/META-INF/MANIFEST.MF
@@ -2,25 +2,25 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: EMFForms SWT Renderer for Multi EAttributes
 Bundle-SymbolicName: org.eclipse.emfforms.swt.control.multiattribute;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emfforms.internal.view.control.multiattribute;version="1.16.0";x-internal:=true,
-  org.eclipse.emfforms.internal.view.control.multiattribute.celleditor;version="1.16.0";x-internal:=true,
-  org.eclipse.emfforms.spi.view.control.multiattribute;version="1.16.0",
-  org.eclipse.emfforms.spi.view.control.multiattribute.celleditor;version="1.16.0"
-Require-Bundle: org.eclipse.emf.ecp.view.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.swt.core.di;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.context;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.swt.core;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.core.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.util.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.edit;bundle-version="[2.8.0,3.0.0)",
-  org.eclipse.emf.databinding;bundle-version="[1.3.0,2.0.0)",
-  org.eclipse.emf.ecp.view.template.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.ui.view;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.ui.view.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.edit.swt;bundle-version="[1.16.0,1.17.0)"
+Export-Package: org.eclipse.emfforms.internal.view.control.multiattribute;version="1.17.0";x-internal:=true,
+ org.eclipse.emfforms.internal.view.control.multiattribute.celleditor;version="1.17.0";x-internal:=true,
+ org.eclipse.emfforms.spi.view.control.multiattribute;version="1.17.0",
+ org.eclipse.emfforms.spi.view.control.multiattribute.celleditor;version="1.17.0"
+Require-Bundle: org.eclipse.emf.ecp.view.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.swt.core.di;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.context;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.swt.core;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.core.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.util.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.edit;bundle-version="[2.8.0,3.0.0)",
+ org.eclipse.emf.databinding;bundle-version="[1.3.0,2.0.0)",
+ org.eclipse.emf.ecp.view.template.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.ui.view;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.ui.view.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.edit.swt;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Import-Package: javax.inject;version="1.0.0",
   org.eclipse.core.runtime;version="0.0.0",
@@ -39,3 +39,4 @@
   org.osgi.service.component.annotations;version="1.2.0";resolution:=optional
 Service-Component: OSGI-INF/MultiAttributeRendererService.xml
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emfforms.swt.control.multiattribute
diff --git a/bundles/org.eclipse.emfforms.swt.control.multiattribute/pom.xml b/bundles/org.eclipse.emfforms.swt.control.multiattribute/pom.xml
index b7382b5..fc72c0f 100644
--- a/bundles/org.eclipse.emfforms.swt.control.multiattribute/pom.xml
+++ b/bundles/org.eclipse.emfforms.swt.control.multiattribute/pom.xml
@@ -7,7 +7,7 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
 
@@ -15,5 +15,5 @@
   <packaging>eclipse-plugin</packaging>
 
   <groupId>org.eclipse.emf.ecp</groupId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
 </project>
diff --git a/bundles/org.eclipse.emfforms.swt.control.multiattribute/src/org/eclipse/emfforms/internal/view/control/multiattribute/Messages.java b/bundles/org.eclipse.emfforms.swt.control.multiattribute/src/org/eclipse/emfforms/internal/view/control/multiattribute/Messages.java
index bb7606f..3720d2b 100644
--- a/bundles/org.eclipse.emfforms.swt.control.multiattribute/src/org/eclipse/emfforms/internal/view/control/multiattribute/Messages.java
+++ b/bundles/org.eclipse.emfforms.swt.control.multiattribute/src/org/eclipse/emfforms/internal/view/control/multiattribute/Messages.java
@@ -36,6 +36,8 @@
 	public static String MultiAttributeSWTRenderer_addNewTooltip;
 	public static String MultiAttributeSWTRenderer_deleteTooltip;
 
+	public static String MultiAttributeSWTRenderer_AddButtonTooltip;
+
 	static {
 		// initialize resource bundle
 		NLS.initializeMessages(BUNDLE_NAME, Messages.class);
diff --git a/bundles/org.eclipse.emfforms.swt.control.multiattribute/src/org/eclipse/emfforms/internal/view/control/multiattribute/messages.properties b/bundles/org.eclipse.emfforms.swt.control.multiattribute/src/org/eclipse/emfforms/internal/view/control/multiattribute/messages.properties
index 5d952d2..0284771 100644
--- a/bundles/org.eclipse.emfforms.swt.control.multiattribute/src/org/eclipse/emfforms/internal/view/control/multiattribute/messages.properties
+++ b/bundles/org.eclipse.emfforms.swt.control.multiattribute/src/org/eclipse/emfforms/internal/view/control/multiattribute/messages.properties
@@ -2,3 +2,4 @@
 MultiAttributeSWTRenderer_AddFailed=Adding a new element failed
 MultiAttributeSWTRenderer_addNewTooltip=Create and link
 MultiAttributeSWTRenderer_deleteTooltip=Delete
+MultiAttributeSWTRenderer_AddButtonTooltip=Add Entry
\ No newline at end of file
diff --git a/bundles/org.eclipse.emfforms.swt.control.multiattribute/src/org/eclipse/emfforms/spi/view/control/multiattribute/MultiAttributeSWTRenderer.java b/bundles/org.eclipse.emfforms.swt.control.multiattribute/src/org/eclipse/emfforms/spi/view/control/multiattribute/MultiAttributeSWTRenderer.java
index d55c310..c6bf09f 100644
--- a/bundles/org.eclipse.emfforms.swt.control.multiattribute/src/org/eclipse/emfforms/spi/view/control/multiattribute/MultiAttributeSWTRenderer.java
+++ b/bundles/org.eclipse.emfforms.swt.control.multiattribute/src/org/eclipse/emfforms/spi/view/control/multiattribute/MultiAttributeSWTRenderer.java
@@ -26,6 +26,7 @@
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.EObject;
 import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.util.EcoreUtil;
 import org.eclipse.emf.ecp.edit.spi.swt.table.ECPCellEditor;
 import org.eclipse.emf.ecp.view.model.common.edit.provider.CustomReflectiveItemProviderAdapterFactory;
 import org.eclipse.emf.ecp.view.model.common.util.RendererUtil;
@@ -188,7 +189,7 @@
 		if (rendererGridDescription == null) {
 			// create special grid for compact mode
 			if (getTableStyleProperty().getRenderMode() == RenderMode.COMPACT_VERTICALLY) {
-				rendererGridDescription = GridDescriptionFactory.INSTANCE.createSimpleGrid(1, 2, this);
+				rendererGridDescription = GridDescriptionFactory.INSTANCE.createCompactGrid(false, true, this);
 			} else {
 				rendererGridDescription = GridDescriptionFactory.INSTANCE.createSimpleGrid(1, 1, this);
 			}
@@ -261,6 +262,7 @@
 		if (attribute.getUpperBound() != -1 && list.size() >= attribute.getUpperBound()) {
 			addButton.setEnabled(false);
 		}
+		addButton.setToolTipText(Messages.MultiAttributeSWTRenderer_AddButtonTooltip);
 		return addButton;
 	}
 
@@ -276,13 +278,16 @@
 			// Default
 			return renderMultiAttributeControl(cell, parent);
 		}
-		// Compact
+		// Compact: render validation icon
 		if (cell.getColumn() == 0 && rendererGridDescription.getColumns() > 1) {
 			validationIcon = createValidationIcon(parent);
 			GridDataFactory.fillDefaults().hint(16, 17).grab(false, false).applyTo(validationIcon);
 			return validationIcon;
 		}
+		// Compact: render list and buttons next to each other
 		final Composite composite = new Composite(parent, SWT.NONE);
+		composite.setBackground(parent.getBackground());
+
 		try {
 			final IObservableList list = getEMFFormsDatabinding().getObservableList(
 				getVElement().getDomainModelReference(),
@@ -473,7 +478,14 @@
 		downButton.setEnabled(false);
 	}
 
-	private void createUpDownButtons(Composite composite, IObservableList list) {
+	/**
+	 * Create the up and down buttons.
+	 *
+	 * @param composite The {@link Composite} to create the buttons on
+	 * @param list The {@link IObservableList} of the current {@link MultiAttributeSWTRenderer}
+	 * @since 1.17
+	 */
+	protected void createUpDownButtons(Composite composite, IObservableList list) {
 		final Image up = getImage(ICONS_ARROW_UP_PNG);
 		final Image down = getImage(ICONS_ARROW_DOWN_PNG);
 
@@ -712,6 +724,7 @@
 				editingDomain.getCommandStack()
 					.execute(new MoveCommand(editingDomain, eObject, attribute, currentIndex, currentIndex + 1));
 				tableViewer.refresh();
+				tableViewer.getTable().setSelection(currentIndex + 1);
 				final Object selected = tableViewer.getStructuredSelection().getFirstElement();
 				if (selected != null) {
 					tableViewer.reveal(selected);
@@ -752,6 +765,7 @@
 				editingDomain.getCommandStack()
 					.execute(new MoveCommand(editingDomain, eObject, attribute, currentIndex, currentIndex - 1));
 				tableViewer.refresh();
+				tableViewer.getTable().setSelection(currentIndex - 1);
 				final Object selected = tableViewer.getStructuredSelection().getFirstElement();
 				if (selected != null) {
 					tableViewer.reveal(selected);
@@ -790,6 +804,7 @@
 			if (!selection.isEmpty()) {
 				editingDomain.getCommandStack().execute(RemoveCommand.create(editingDomain, eObject, attribute,
 					selection.toList()));
+				postRemove(selection);
 			}
 		}
 	}
@@ -821,10 +836,12 @@
 				final EAttribute attribute = EAttribute.class.cast(list.getElementType());
 
 				final Object defaultValue = getValueForNewRow(attribute);
+				if (defaultValue == null) {
+					return;
+				}
 				final EditingDomain editingDomain = getEditingDomain(getViewModelContext().getDomainModel());
 				editingDomain.getCommandStack()
 					.execute(AddCommand.create(editingDomain, eObject, attribute, defaultValue));
-				tableViewer.refresh();
 			} catch (final IllegalStateException ex) {
 				/* logged by getValueForNewRow* already */
 			}
@@ -910,9 +927,12 @@
 			final TableViewerRow viewerRow = (TableViewerRow) cell.getViewerRow();
 			final TableItem item = (TableItem) viewerRow.getItem();
 			final int index = item.getParent().indexOf(item);
+			final EAttribute fakeAttribute = EcoreUtil.copy(EAttribute.class.cast(valueProperty.getElementType()));
+			fakeAttribute.setUpperBound(1);
+			fakeAttribute.setLowerBound(0);
 			final IObservableValue model = new org.eclipse.emf.ecp.edit.internal.swt.util.ECPObservableValue(
 				valueProperty, index,
-				EAttribute.class.cast(valueProperty.getElementType()).getEAttributeType().getInstanceClass());
+				fakeAttribute);
 
 			final Binding binding = createBinding(target, model);
 
@@ -1038,6 +1058,16 @@
 	}
 
 	/**
+	 * This is called after the selected elements were deleted so that the user can handle this removal.
+	 *
+	 * @param selection The {@link IStructuredSelection} of the TableViewer before deletion.
+	 * @since 1.17
+	 */
+	protected void postRemove(IStructuredSelection selection) {
+		// do nothing
+	}
+
+	/**
 	 * Creates an error label for the given {@link Exception}.
 	 *
 	 * @param parent The parent of the {@link Label}
diff --git a/bundles/org.eclipse.emfforms.swt.control.text.autocomplete/META-INF/MANIFEST.MF b/bundles/org.eclipse.emfforms.swt.control.text.autocomplete/META-INF/MANIFEST.MF
index 2a28bea..5c90b2b 100644
--- a/bundles/org.eclipse.emfforms.swt.control.text.autocomplete/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emfforms.swt.control.text.autocomplete/META-INF/MANIFEST.MF
@@ -2,24 +2,24 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: EMFForms SWT Text Control with Autocomplete
 Bundle-SymbolicName: org.eclipse.emfforms.swt.control.text.autocomplete
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emfforms.internal.swt.control.text.autocomplete;version="1.16.0";x-internal:=true,
-  org.eclipse.emfforms.internal.swt.control.text.autocomplete.renderer;version="1.16.0";x-internal:=true,
-  org.eclipse.emfforms.spi.swt.control.text.autocomplete.viewservice;version="1.16.0"
-Require-Bundle: org.eclipse.emf.ecp.view.core.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.context;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.template.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.swt.core;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.model.common;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.ui.view;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.databinding.edit;bundle-version="[1.3.0,2.0.0)",
-  org.eclipse.emfforms.localization;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.swt.core.di;bundle-version="[1.16.0,1.17.0)"
+Export-Package: org.eclipse.emfforms.internal.swt.control.text.autocomplete;version="1.17.0";x-internal:=true,
+ org.eclipse.emfforms.internal.swt.control.text.autocomplete.renderer;version="1.17.0";x-internal:=true,
+ org.eclipse.emfforms.spi.swt.control.text.autocomplete.viewservice;version="1.17.0"
+Require-Bundle: org.eclipse.emf.ecp.view.core.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.context;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.template.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.swt.core;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.model.common;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.ui.view;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.databinding.edit;bundle-version="[1.3.0,2.0.0)",
+ org.eclipse.emfforms.localization;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.swt.core.di;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Import-Package: javax.inject;version="1.0.0",
- org.eclipse.emf.ecp.edit.spi.swt.util;version="[1.16.0,1.17.0)",
+ org.eclipse.emf.ecp.edit.spi.swt.util;version="[1.17.0,1.18.0]",
  org.eclipse.jface.databinding.swt;version="0.0.0",
  org.eclipse.jface.databinding.viewers;version="0.0.0",
  org.eclipse.jface.fieldassist;version="0.0.0",
@@ -30,3 +30,4 @@
  org.osgi.service.component.annotations;version="0.0.0";resolution:=optional
 Service-Component: OSGI-INF/org.eclipse.emfforms.internal.swt.control.text.autocomplete.renderer.AutocompleteTextControlSWTRendererService.xml
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emfforms.swt.control.text.autocomplete
diff --git a/bundles/org.eclipse.emfforms.swt.control.text.autocomplete/pom.xml b/bundles/org.eclipse.emfforms.swt.control.text.autocomplete/pom.xml
index 59e1901..97b35f1 100644
--- a/bundles/org.eclipse.emfforms.swt.control.text.autocomplete/pom.xml
+++ b/bundles/org.eclipse.emfforms.swt.control.text.autocomplete/pom.xml
@@ -7,7 +7,7 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
 
diff --git a/bundles/org.eclipse.emfforms.swt.control.text.richtext/META-INF/MANIFEST.MF b/bundles/org.eclipse.emfforms.swt.control.text.richtext/META-INF/MANIFEST.MF
index bbe4e3e..5f5db46 100644
--- a/bundles/org.eclipse.emfforms.swt.control.text.richtext/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emfforms.swt.control.text.richtext/META-INF/MANIFEST.MF
@@ -2,28 +2,29 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: EMFForms SWT Rich Text Control
 Bundle-SymbolicName: org.eclipse.emfforms.swt.control.text.richtext;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emfforms.internal.swt.control.text.richtext.renderer;version="1.16.0";x-internal:=true,
-  org.eclipse.emfforms.spi.swt.control.text.richtext.renderer;version="1.16.0"
-Require-Bundle: org.eclipse.emf.ecp.view.core.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.context;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.template.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.swt.core;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.model.common;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.ui.view;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.databinding.edit;bundle-version="[1.3.0,2.0.0)",
-  org.eclipse.emfforms.localization;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.swt.core.di;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services.editsupport;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.swt;bundle-version="[3.102.0,4.0.0)",
-  org.eclipse.jface;bundle-version="[3.7.0,4.0.0)",
-  org.eclipse.jface.databinding;bundle-version="[1.6.0,2.0.0)"
+Export-Package: org.eclipse.emfforms.internal.swt.control.text.richtext.renderer;version="1.17.0";x-internal:=true,
+ org.eclipse.emfforms.spi.swt.control.text.richtext.renderer;version="1.17.0"
+Require-Bundle: org.eclipse.emf.ecp.view.core.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.context;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.template.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.swt.core;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.model.common;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.ui.view;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.databinding.edit;bundle-version="[1.3.0,2.0.0)",
+ org.eclipse.emfforms.localization;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.swt.core.di;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services.editsupport;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.swt;bundle-version="[3.102.0,4.0.0)",
+ org.eclipse.jface;bundle-version="[3.7.0,4.0.0)",
+ org.eclipse.jface.databinding;bundle-version="[1.6.0,2.0.0)"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Import-Package: javax.inject;version="1.0.0",
- org.eclipse.emf.ecp.edit.spi.swt.util;version="[1.16.0,1.17.0)",
+ org.eclipse.emf.ecp.edit.spi.swt.util;version="[1.17.0,1.18.0]",
  org.osgi.framework;version="0.0.0",
  org.osgi.service.component.annotations;version="0.0.0";resolution:=optional
 Service-Component: OSGI-INF/org.eclipse.emfforms.internal.swt.control.text.richtext.renderer.RichTextControlSWTRendererService.xml
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emfforms.swt.control.text.richtext
diff --git a/bundles/org.eclipse.emfforms.swt.control.text.richtext/pom.xml b/bundles/org.eclipse.emfforms.swt.control.text.richtext/pom.xml
index a85ceb8..26cadf7 100644
--- a/bundles/org.eclipse.emfforms.swt.control.text.richtext/pom.xml
+++ b/bundles/org.eclipse.emfforms.swt.control.text.richtext/pom.xml
@@ -7,7 +7,7 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
 
diff --git a/bundles/org.eclipse.emfforms.swt.controlgrid/META-INF/MANIFEST.MF b/bundles/org.eclipse.emfforms.swt.controlgrid/META-INF/MANIFEST.MF
index f9021d1..0f9ed02 100644
--- a/bundles/org.eclipse.emfforms.swt.controlgrid/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emfforms.swt.controlgrid/META-INF/MANIFEST.MF
@@ -2,25 +2,26 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: EMFForms Control Grid SWT Renderer
 Bundle-SymbolicName: org.eclipse.emfforms.swt.controlgrid
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emfforms.internal.swt.controlgrid.renderer;version="1.16.0";x-internal:=true,
-  org.eclipse.emfforms.spi.swt.controlgrid.renderer;version="1.16.0"
-Require-Bundle: org.eclipse.emfforms.view.controlgrid.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.swt.core;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.ui.view;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.common;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.model.common;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.ui.view.swt;bundle-version="[1.16.0,1.17.0)"
+Export-Package: org.eclipse.emfforms.internal.swt.controlgrid.renderer;version="1.17.0";x-internal:=true,
+ org.eclipse.emfforms.spi.swt.controlgrid.renderer;version="1.17.0"
+Require-Bundle: org.eclipse.emfforms.view.controlgrid.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.swt.core;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.ui.view;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.common;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.model.common;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.ui.view.swt;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Import-Package: javax.inject;version="1.0.0",
-  org.eclipse.emfforms.spi.swt.core.di;version="[1.16.0,1.17.0)",
-  org.eclipse.jface.layout;version="0.0.0",
-  org.eclipse.swt;version="0.0.0",
-  org.eclipse.swt.events;version="0.0.0",
-  org.eclipse.swt.graphics;version="0.0.0",
-  org.eclipse.swt.layout;version="0.0.0",
-  org.eclipse.swt.widgets;version="0.0.0",
-  org.osgi.service.component.annotations;version="1.2.0";resolution:=optional
+ org.eclipse.emfforms.spi.swt.core.di;version="[1.17.0,1.18.0]",
+ org.eclipse.jface.layout;version="0.0.0",
+ org.eclipse.swt;version="0.0.0",
+ org.eclipse.swt.events;version="0.0.0",
+ org.eclipse.swt.graphics;version="0.0.0",
+ org.eclipse.swt.layout;version="0.0.0",
+ org.eclipse.swt.widgets;version="0.0.0",
+ org.osgi.service.component.annotations;version="1.2.0";resolution:=optional
 Service-Component: OSGI-INF/ControlGridSWTRendererService.xml
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emfforms.swt.controlgrid
diff --git a/bundles/org.eclipse.emfforms.swt.controlgrid/pom.xml b/bundles/org.eclipse.emfforms.swt.controlgrid/pom.xml
index 3017e72..9b051e5 100644
--- a/bundles/org.eclipse.emfforms.swt.controlgrid/pom.xml
+++ b/bundles/org.eclipse.emfforms.swt.controlgrid/pom.xml
@@ -7,7 +7,7 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
 
diff --git a/bundles/org.eclipse.emfforms.swt.core.di.extension/META-INF/MANIFEST.MF b/bundles/org.eclipse.emfforms.swt.core.di.extension/META-INF/MANIFEST.MF
index 447977d..093f9c6 100644
--- a/bundles/org.eclipse.emfforms.swt.core.di.extension/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emfforms.swt.core.di.extension/META-INF/MANIFEST.MF
@@ -2,16 +2,17 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: SWT Core DI Extension
 Bundle-SymbolicName: org.eclipse.emfforms.swt.core.di.extension;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emfforms.internal.swt.core.di.extension;version="1.16.0";x-internal:=true
-Require-Bundle: org.eclipse.emfforms.swt.core;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.swt.core.di;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.model.common;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.context;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.core.runtime;bundle-version="[3.10.0,4.0.0)",
-  org.eclipse.emfforms.common;bundle-version="[1.16.0,1.17.0)"
+Export-Package: org.eclipse.emfforms.internal.swt.core.di.extension;version="1.17.0";x-internal:=true
+Require-Bundle: org.eclipse.emfforms.swt.core;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.swt.core.di;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.model.common;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.context;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.core.runtime;bundle-version="[3.10.0,4.0.0)",
+ org.eclipse.emfforms.common;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Service-Component: OSGI-INF/emfFormsDIExtensionRendererFactory.xml
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emfforms.swt.core.di.extension
diff --git a/bundles/org.eclipse.emfforms.swt.core.di.extension/pom.xml b/bundles/org.eclipse.emfforms.swt.core.di.extension/pom.xml
index d54e6c2..2f4aabe 100644
--- a/bundles/org.eclipse.emfforms.swt.core.di.extension/pom.xml
+++ b/bundles/org.eclipse.emfforms.swt.core.di.extension/pom.xml
@@ -7,12 +7,12 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
 
   <artifactId>org.eclipse.emfforms.swt.core.di.extension</artifactId>
 <packaging>eclipse-plugin</packaging>
 	<groupId>org.eclipse.emf.ecp</groupId>
-	<version>1.16.0-SNAPSHOT</version>
+	<version>1.17.0-SNAPSHOT</version>
 </project>
diff --git a/bundles/org.eclipse.emfforms.swt.core.di/META-INF/MANIFEST.MF b/bundles/org.eclipse.emfforms.swt.core.di/META-INF/MANIFEST.MF
index c83cb1b..67c4923 100644
--- a/bundles/org.eclipse.emfforms.swt.core.di/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emfforms.swt.core.di/META-INF/MANIFEST.MF
@@ -2,18 +2,19 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: EMFForms SWT Core DI
 Bundle-SymbolicName: org.eclipse.emfforms.swt.core.di;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emfforms.internal.swt.core.di;version="1.16.0";x-internal:=true,
-  org.eclipse.emfforms.spi.swt.core.di;version="1.16.0"
-Require-Bundle: org.eclipse.emfforms.swt.core;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.context;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.common;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.e4.core.contexts;bundle-version="[1.3.0,2.0.0)",
-  org.eclipse.e4.core.di;bundle-version="[1.3.0,2.0.0)"
+Export-Package: org.eclipse.emfforms.internal.swt.core.di;version="1.17.0";x-internal:=true,
+ org.eclipse.emfforms.spi.swt.core.di;version="1.17.0"
+Require-Bundle: org.eclipse.emfforms.swt.core;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.context;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.common;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.e4.core.contexts;bundle-version="[1.3.0,2.0.0)",
+ org.eclipse.e4.core.di;bundle-version="[1.3.0,2.0.0)"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
-Import-Package: org.eclipse.emfforms.spi.core.services.view;version="[1.16.0,1.17.0)",
-  org.osgi.framework;version="[1.3.0,2.0.0)"
+Import-Package: org.eclipse.emfforms.spi.core.services.view;version="[1.17.0,1.18.0]",
+ org.osgi.framework;version="[1.3.0,2.0.0)"
 Service-Component: OSGI-INF/emfFormsDIRendererFactory.xml
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emfforms.swt.core.di
diff --git a/bundles/org.eclipse.emfforms.swt.core.di/pom.xml b/bundles/org.eclipse.emfforms.swt.core.di/pom.xml
index 3a489e6..8eebd21 100644
--- a/bundles/org.eclipse.emfforms.swt.core.di/pom.xml
+++ b/bundles/org.eclipse.emfforms.swt.core.di/pom.xml
@@ -7,12 +7,12 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
 
   <artifactId>org.eclipse.emfforms.swt.core.di</artifactId>
 <packaging>eclipse-plugin</packaging>
 	<groupId>org.eclipse.emf.ecp</groupId>
-	<version>1.16.0-SNAPSHOT</version>
+	<version>1.17.0-SNAPSHOT</version>
 </project>
diff --git a/bundles/org.eclipse.emfforms.swt.core.plugin/META-INF/MANIFEST.MF b/bundles/org.eclipse.emfforms.swt.core.plugin/META-INF/MANIFEST.MF
index 3faee26..8d17fe8 100644
--- a/bundles/org.eclipse.emfforms.swt.core.plugin/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emfforms.swt.core.plugin/META-INF/MANIFEST.MF
@@ -2,14 +2,15 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: EMFForms SWT Core Plugin
 Bundle-SymbolicName: org.eclipse.emfforms.swt.core.plugin
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emfforms.internal.swt.core.plugin;version="1.16.0";x-internal:=true
+Export-Package: org.eclipse.emfforms.internal.swt.core.plugin;version="1.17.0";x-internal:=true
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.8.0,4.0.0)",
-  org.eclipse.emfforms.swt.core;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.ui.view.swt;bundle-version="[1.16.0,1.17.0)"
+ org.eclipse.emfforms.swt.core;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.ui.view.swt;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
-Import-Package: org.eclipse.emfforms.spi.common.report;version="[1.16.0,1.17.0)",
-  org.osgi.service.component.annotations;version="[1.0.0,2.0.0)";resolution:=optional
+Import-Package: org.eclipse.emfforms.spi.common.report;version="[1.17.0,1.18.0]",
+ org.osgi.service.component.annotations;version="[1.0.0,2.0.0)";resolution:=optional
 Service-Component: OSGI-INF/org.eclipse.emfforms.internal.swt.core.plugin.LegacyAdditionalRendererService.xml,OSGI-INF/org.eclipse.emfforms.internal.swt.core.plugin.LegacyRendererService.xml
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emfforms.swt.core.plugin
diff --git a/bundles/org.eclipse.emfforms.swt.core.plugin/pom.xml b/bundles/org.eclipse.emfforms.swt.core.plugin/pom.xml
index d556f83..28d2962 100644
--- a/bundles/org.eclipse.emfforms.swt.core.plugin/pom.xml
+++ b/bundles/org.eclipse.emfforms.swt.core.plugin/pom.xml
@@ -7,7 +7,7 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
 
diff --git a/bundles/org.eclipse.emfforms.swt.core/META-INF/MANIFEST.MF b/bundles/org.eclipse.emfforms.swt.core/META-INF/MANIFEST.MF
index 0830d66..7f10b1d 100644
--- a/bundles/org.eclipse.emfforms.swt.core/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emfforms.swt.core/META-INF/MANIFEST.MF
@@ -2,29 +2,30 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: EMFForms SWT Core
 Bundle-SymbolicName: org.eclipse.emfforms.swt.core
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emfforms.internal.swt.core;version="1.16.0";x-internal:=true,
-  org.eclipse.emfforms.spi.swt.core;version="1.16.0",
-  org.eclipse.emfforms.spi.swt.core.data;version="1.16.0",
-  org.eclipse.emfforms.spi.swt.core.layout;version="1.16.0",
-  org.eclipse.emfforms.spi.swt.core.util;version="1.16.0",
-  org.eclipse.emfforms.swt.core;version="1.16.0"
-Require-Bundle: org.eclipse.emf.ecp.view.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.context;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.model.common;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.ui.view;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.core.runtime;bundle-version="[3.7.0,4.0.0)",
-  org.eclipse.emf.ecp.view.util.swt;bundle-version="[1.16.0,1.17.0)"
+Export-Package: org.eclipse.emfforms.internal.swt.core;version="1.17.0";x-internal:=true,
+ org.eclipse.emfforms.spi.swt.core;version="1.17.0",
+ org.eclipse.emfforms.spi.swt.core.data;version="1.17.0",
+ org.eclipse.emfforms.spi.swt.core.layout;version="1.17.0",
+ org.eclipse.emfforms.spi.swt.core.util;version="1.17.0",
+ org.eclipse.emfforms.swt.core;version="1.17.0"
+Require-Bundle: org.eclipse.emf.ecp.view.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.context;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.model.common;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.ui.view;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.core.runtime;bundle-version="[3.7.0,4.0.0)",
+ org.eclipse.emf.ecp.view.util.swt;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
-Import-Package: org.eclipse.emf.ecp.view.model.common;version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.spi.common.report;version="[1.16.0,1.17.0)",
-  org.eclipse.jface.layout;version="0.0.0",
-  org.eclipse.swt;version="0.0.0",
-  org.eclipse.swt.custom;version="0.0.0",
-  org.eclipse.swt.events;version="0.0.0",
-  org.eclipse.swt.graphics;version="0.0.0",
-  org.eclipse.swt.layout;version="0.0.0",
-  org.eclipse.swt.widgets;version="0.0.0"
+Import-Package: org.eclipse.emf.ecp.view.model.common;version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.spi.common.report;version="[1.17.0,1.18.0]",
+ org.eclipse.jface.layout;version="0.0.0",
+ org.eclipse.swt;version="0.0.0",
+ org.eclipse.swt.custom;version="0.0.0",
+ org.eclipse.swt.events;version="0.0.0",
+ org.eclipse.swt.graphics;version="0.0.0",
+ org.eclipse.swt.layout;version="0.0.0",
+ org.eclipse.swt.widgets;version="0.0.0"
 Service-Component: OSGI-INF/rendererFactory.xml
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emfforms.swt.core
diff --git a/bundles/org.eclipse.emfforms.swt.core/pom.xml b/bundles/org.eclipse.emfforms.swt.core/pom.xml
index c39f2e3..b0f896f 100644
--- a/bundles/org.eclipse.emfforms.swt.core/pom.xml
+++ b/bundles/org.eclipse.emfforms.swt.core/pom.xml
@@ -7,7 +7,7 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
 
diff --git a/bundles/org.eclipse.emfforms.swt.core/src/org/eclipse/emfforms/spi/swt/core/layout/GridDescriptionFactory.java b/bundles/org.eclipse.emfforms.swt.core/src/org/eclipse/emfforms/spi/swt/core/layout/GridDescriptionFactory.java
index 05fae8b..df260ed 100644
--- a/bundles/org.eclipse.emfforms.swt.core/src/org/eclipse/emfforms/spi/swt/core/layout/GridDescriptionFactory.java
+++ b/bundles/org.eclipse.emfforms.swt.core/src/org/eclipse/emfforms/spi/swt/core/layout/GridDescriptionFactory.java
@@ -12,10 +12,12 @@
 package org.eclipse.emfforms.spi.swt.core.layout;
 
 import java.util.ArrayList;
+import java.util.LinkedList;
 import java.util.List;
 
 import org.eclipse.emf.ecp.view.spi.model.VElement;
 import org.eclipse.emfforms.spi.swt.core.AbstractSWTRenderer;
+import org.eclipse.swt.graphics.Point;
 
 /**
  * A Factory to create {@link SWTGridDescription GridDescriptions}.
@@ -52,7 +54,8 @@
 	 * @param renderer the {@link AbstractSWTRenderer}
 	 * @return the {@link SWTGridDescription}
 	 */
-	public SWTGridDescription createSimpleGrid(int rows, int columns, AbstractSWTRenderer<? extends VElement> renderer) {
+	public SWTGridDescription createSimpleGrid(int rows, int columns,
+		AbstractSWTRenderer<? extends VElement> renderer) {
 		final List<SWTGridCell> gridCells = new ArrayList<SWTGridCell>(rows * columns);
 		for (int row = 0; row < rows; row++) {
 			for (int column = 0; column < columns; column++) {
@@ -61,4 +64,67 @@
 		}
 		return new SWTGridDescription(rows, columns, gridCells);
 	}
+
+	/**
+	 * Creates the default compact grid.
+	 *
+	 * @param label indicates whether a label cell shall be added
+	 * @param validation indicates whether a validation cell shall be added
+	 * @param renderer the {@link AbstractSWTRenderer}
+	 * @return the {@link SWTGridDescription}
+	 *
+	 * @since 1.17
+	 */
+	public SWTGridDescription createCompactGrid(boolean label, boolean validation,
+		AbstractSWTRenderer<? extends VElement> renderer) {
+		final List<SWTGridCell> gridCells = new LinkedList<SWTGridCell>();
+		if (label) {
+			gridCells.add(createDefaultCompactLabelCell(0, renderer));
+		}
+		if (validation) {
+			final int validationColumn = label ? 1 : 0;
+			gridCells.add(createDefaultCompactValidationCell(validationColumn, renderer));
+		}
+		final int mainColumn = (label ? 1 : 0) + (validation ? 1 : 0);
+		gridCells.add(createDefaultCompactMainCell(mainColumn, renderer));
+		return new SWTGridDescription(1, mainColumn + 1, gridCells);
+	}
+
+	private SWTGridCell createDefaultCompactLabelCell(int column, AbstractSWTRenderer<? extends VElement> renderer) {
+		final SWTGridCell labelCell = new SWTGridCell(0, column, renderer);
+		labelCell.setHorizontalGrab(false);
+		labelCell.setVerticalGrab(false);
+		labelCell.setHorizontalFill(false);
+		labelCell.setHorizontalAlignment(SWTGridCell.Alignment.BEGINNING);
+		labelCell.setVerticalFill(false);
+		labelCell.setVerticalAlignment(SWTGridCell.Alignment.BEGINNING);
+		labelCell.setPreferredSize(null);
+		return labelCell;
+	}
+
+	private SWTGridCell createDefaultCompactValidationCell(int column,
+		AbstractSWTRenderer<? extends VElement> renderer) {
+		final SWTGridCell validationCell = new SWTGridCell(0, column, renderer);
+		validationCell.setHorizontalGrab(false);
+		validationCell.setVerticalGrab(false);
+		validationCell.setHorizontalFill(false);
+		validationCell.setHorizontalAlignment(SWTGridCell.Alignment.CENTER);
+		validationCell.setVerticalFill(false);
+		validationCell.setVerticalAlignment(SWTGridCell.Alignment.BEGINNING);
+		validationCell.setPreferredSize(new Point(16, 17));
+		return validationCell;
+	}
+
+	private SWTGridCell createDefaultCompactMainCell(int column,
+		AbstractSWTRenderer<? extends VElement> renderer) {
+		final SWTGridCell mainCell = new SWTGridCell(0, column, renderer);
+		mainCell.setHorizontalGrab(true);
+		mainCell.setVerticalGrab(true);
+		mainCell.setHorizontalFill(true);
+		mainCell.setHorizontalAlignment(SWTGridCell.Alignment.CENTER);
+		mainCell.setVerticalFill(true);
+		mainCell.setVerticalAlignment(SWTGridCell.Alignment.CENTER);
+		mainCell.setPreferredSize(null);
+		return mainCell;
+	}
 }
diff --git a/bundles/org.eclipse.emfforms.swt.table/META-INF/MANIFEST.MF b/bundles/org.eclipse.emfforms.swt.table/META-INF/MANIFEST.MF
index 391d095..99d9ea3 100644
--- a/bundles/org.eclipse.emfforms.swt.table/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emfforms.swt.table/META-INF/MANIFEST.MF
@@ -2,35 +2,36 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Table
 Bundle-SymbolicName: org.eclipse.emfforms.swt.table
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emfforms.internal.swt.table;version="1.16.0";x-internal:=true,
-  org.eclipse.emfforms.internal.swt.table.messages;version="1.16.0";x-internal:=true,
-  org.eclipse.emfforms.internal.swt.table.util;version="1.16.0";x-internal:=true,
-  org.eclipse.emfforms.spi.swt.table;version="1.16.0",
-  org.eclipse.emfforms.spi.swt.table.util;version="1.16.0"
-Require-Bundle: org.eclipse.emf.ecp.edit.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.databinding.edit;bundle-version="[1.3.0,2.0.0)",
-  org.eclipse.emfforms.common;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.core.databinding.property;bundle-version="[1.4.0,2.0.0)",
-  org.eclipse.emfforms.core.services;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.core.commands;bundle-version="[3.5.0,4.0.0)"
+Export-Package: org.eclipse.emfforms.internal.swt.table;version="1.17.0";x-internal:=true,
+ org.eclipse.emfforms.internal.swt.table.messages;version="1.17.0";x-internal:=true,
+ org.eclipse.emfforms.internal.swt.table.util;version="1.17.0";x-internal:=true,
+ org.eclipse.emfforms.spi.swt.table;version="1.17.0",
+ org.eclipse.emfforms.spi.swt.table.util;version="1.17.0"
+Require-Bundle: org.eclipse.emf.ecp.edit.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.databinding.edit;bundle-version="[1.3.0,2.0.0)",
+ org.eclipse.emfforms.common;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.core.databinding.property;bundle-version="[1.4.0,2.0.0)",
+ org.eclipse.emfforms.core.services;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.core.commands;bundle-version="[3.5.0,4.0.0)"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
-Import-Package: org.eclipse.emfforms.spi.localization;version="[1.16.0,1.17.0)",
-  org.eclipse.jface.databinding.swt;version="0.0.0",
-  org.eclipse.jface.databinding.viewers;version="0.0.0",
-  org.eclipse.jface.dialogs;version="0.0.0",
-  org.eclipse.jface.layout;version="0.0.0",
-  org.eclipse.jface.resource;version="0.0.0",
-  org.eclipse.jface.util;version="0.0.0",
-  org.eclipse.jface.viewers;version="0.0.0",
-  org.eclipse.jface.window;version="0.0.0",
-  org.eclipse.swt;version="0.0.0",
-  org.eclipse.swt.custom;version="0.0.0",
-  org.eclipse.swt.dnd;version="0.0.0",
-  org.eclipse.swt.events;version="0.0.0",
-  org.eclipse.swt.graphics;version="0.0.0",
-  org.eclipse.swt.layout;version="0.0.0",
-  org.eclipse.swt.widgets;version="0.0.0",
-  org.osgi.framework;version="1.8.0"
+Import-Package: org.eclipse.emfforms.spi.localization;version="[1.17.0,1.18.0]",
+ org.eclipse.jface.databinding.swt;version="0.0.0",
+ org.eclipse.jface.databinding.viewers;version="0.0.0",
+ org.eclipse.jface.dialogs;version="0.0.0",
+ org.eclipse.jface.layout;version="0.0.0",
+ org.eclipse.jface.resource;version="0.0.0",
+ org.eclipse.jface.util;version="0.0.0",
+ org.eclipse.jface.viewers;version="0.0.0",
+ org.eclipse.jface.window;version="0.0.0",
+ org.eclipse.swt;version="0.0.0",
+ org.eclipse.swt.custom;version="0.0.0",
+ org.eclipse.swt.dnd;version="0.0.0",
+ org.eclipse.swt.events;version="0.0.0",
+ org.eclipse.swt.graphics;version="0.0.0",
+ org.eclipse.swt.layout;version="0.0.0",
+ org.eclipse.swt.widgets;version="0.0.0",
+ org.osgi.framework;version="1.8.0"
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emfforms.swt.table
diff --git a/bundles/org.eclipse.emfforms.swt.table/pom.xml b/bundles/org.eclipse.emfforms.swt.table/pom.xml
index ac04a77..449f199 100644
--- a/bundles/org.eclipse.emfforms.swt.table/pom.xml
+++ b/bundles/org.eclipse.emfforms.swt.table/pom.xml
@@ -7,12 +7,12 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
 
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emfforms.swt.table</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 </project>
diff --git a/bundles/org.eclipse.emfforms.swt.treemasterdetail.decorator.validation.default/META-INF/MANIFEST.MF b/bundles/org.eclipse.emfforms.swt.treemasterdetail.decorator.validation.default/META-INF/MANIFEST.MF
index 9d41815..95ea2ec 100644
--- a/bundles/org.eclipse.emfforms.swt.treemasterdetail.decorator.validation.default/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emfforms.swt.treemasterdetail.decorator.validation.default/META-INF/MANIFEST.MF
@@ -2,15 +2,15 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: EMFForms TreeViewer Validation Decorator using ECP Validation Service
 Bundle-SymbolicName: org.eclipse.emfforms.swt.treemasterdetail.decorator.validation.default
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emfforms.internal.swt.treemasterdetail.decorator.validation.ecp;version="1.16.0";x-internal:=true,
-  org.eclipse.emfforms.spi.swt.treemasterdetail.decorator.validation.ecp;version="1.16.0"
+Export-Package: org.eclipse.emfforms.internal.swt.treemasterdetail.decorator.validation.ecp;version="1.17.0";x-internal:=true,
+ org.eclipse.emfforms.spi.swt.treemasterdetail.decorator.validation.ecp;version="1.17.0"
 Require-Bundle: org.eclipse.emf.ecore;bundle-version="[2.8.0,3.0.0)",
-  org.eclipse.emfforms.swt.treemasterdetail;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.common;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.common;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.edit.swt;bundle-version="[1.16.0,1.17.0)"
+ org.eclipse.emfforms.swt.treemasterdetail;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.common;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.common;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.edit.swt;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Import-Package: org.eclipse.jface.resource;version="0.0.0",
   org.eclipse.jface.viewers;version="0.0.0",
@@ -18,3 +18,4 @@
   org.eclipse.swt.widgets;version="0.0.0",
   org.osgi.framework;version="1.8.0"
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emfforms.swt.treemasterdetail.decorator.validation.default
diff --git a/bundles/org.eclipse.emfforms.swt.treemasterdetail.decorator.validation.default/pom.xml b/bundles/org.eclipse.emfforms.swt.treemasterdetail.decorator.validation.default/pom.xml
index b33e009..a716d9a 100644
--- a/bundles/org.eclipse.emfforms.swt.treemasterdetail.decorator.validation.default/pom.xml
+++ b/bundles/org.eclipse.emfforms.swt.treemasterdetail.decorator.validation.default/pom.xml
@@ -7,12 +7,12 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
 
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emfforms.swt.treemasterdetail.decorator.validation.default</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 </project>
diff --git a/bundles/org.eclipse.emfforms.swt.treemasterdetail.decorator.validation.default/src/org/eclipse/emfforms/internal/swt/treemasterdetail/decorator/validation/ecp/ECPValidationServiceLabelDecorator.java b/bundles/org.eclipse.emfforms.swt.treemasterdetail.decorator.validation.default/src/org/eclipse/emfforms/internal/swt/treemasterdetail/decorator/validation/ecp/ECPValidationServiceLabelDecorator.java
index 7259b01..3f9a15d 100644
--- a/bundles/org.eclipse.emfforms.swt.treemasterdetail.decorator.validation.default/src/org/eclipse/emfforms/internal/swt/treemasterdetail/decorator/validation/ecp/ECPValidationServiceLabelDecorator.java
+++ b/bundles/org.eclipse.emfforms.swt.treemasterdetail.decorator.validation.default/src/org/eclipse/emfforms/internal/swt/treemasterdetail/decorator/validation/ecp/ECPValidationServiceLabelDecorator.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2011-2016 EclipseSource Muenchen GmbH and others.
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH and others.
  *
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
@@ -8,6 +8,7 @@
  *
  * Contributors:
  * Johannes Faltermeier - initial API and implementation
+ * Christian W. Damus - bug 533522
  ******************************************************************************/
 package org.eclipse.emfforms.internal.swt.treemasterdetail.decorator.validation.ecp;
 
@@ -19,7 +20,9 @@
 import org.eclipse.emf.ecp.edit.spi.swt.util.SWTValidationHelper;
 import org.eclipse.emfforms.spi.swt.treemasterdetail.diagnostic.DiagnosticCache;
 import org.eclipse.emfforms.spi.swt.treemasterdetail.diagnostic.DiagnosticCache.ValidationListener;
+import org.eclipse.jface.resource.DeviceResourceManager;
 import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.jface.resource.ResourceManager;
 import org.eclipse.jface.viewers.DecorationOverlayIcon;
 import org.eclipse.jface.viewers.ILabelDecorator;
 import org.eclipse.jface.viewers.ILabelProviderListener;
@@ -39,6 +42,8 @@
 	private final DiagnosticCache cache;
 	private final TreeViewer viewer;
 
+	private final ResourceManager images;
+
 	/**
 	 * Default constructor.
 	 *
@@ -49,6 +54,8 @@
 	public ECPValidationServiceLabelDecorator(TreeViewer viewer, Notifier input, DiagnosticCache cache) {
 		this.viewer = viewer;
 		this.cache = cache;
+		images = new DeviceResourceManager(viewer.getControl().getDisplay());
+
 		cache.registerValidationListener(new ValidationListener() {
 
 			@Override
@@ -87,7 +94,7 @@
 		final Point size = new Point(bounds.width, bounds.height);
 		final DecorationOverlayIcon icon = new DecorationOverlayIcon(image,
 			new ImageDescriptor[] { validationOverlayDescriptor }, size);
-		return icon.createImage();
+		return (Image) images.get(icon);
 	}
 
 	/**
@@ -133,6 +140,7 @@
 	@Override
 	public void dispose() {
 		cache.dispose();
+		images.dispose();
 	}
 
 }
diff --git a/bundles/org.eclipse.emfforms.swt.treemasterdetail/META-INF/MANIFEST.MF b/bundles/org.eclipse.emfforms.swt.treemasterdetail/META-INF/MANIFEST.MF
index 5bafc1d..10cdb93 100644
--- a/bundles/org.eclipse.emfforms.swt.treemasterdetail/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emfforms.swt.treemasterdetail/META-INF/MANIFEST.MF
@@ -2,30 +2,30 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Treemasterdetail SWT Util
 Bundle-SymbolicName: org.eclipse.emfforms.swt.treemasterdetail;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emf.edit.ui.action.emfforms;version="1.16.0";x-internal:=true,
-  org.eclipse.emfforms.internal.swt.treemasterdetail;version="1.16.0";x-friends:="org.eclipse.emfforms.editor.ecore",
-  org.eclipse.emfforms.internal.swt.treemasterdetail.defaultprovider;version="1.16.0";x-friends:="org.eclipse.emfforms.editor.ecore,org.eclipse.emfforms.editor",
-  org.eclipse.emfforms.spi.swt.treemasterdetail;version="1.16.0",
-  org.eclipse.emfforms.spi.swt.treemasterdetail.actions;version="1.16.0",
-  org.eclipse.emfforms.spi.swt.treemasterdetail.actions.delegating;version="1.16.0",
-  org.eclipse.emfforms.spi.swt.treemasterdetail.diagnostic;version="1.16.0",
-  org.eclipse.emfforms.spi.swt.treemasterdetail.util;version="1.16.0"
+Export-Package: org.eclipse.emf.edit.ui.action.emfforms;version="1.17.0";x-internal:=true,
+ org.eclipse.emfforms.internal.swt.treemasterdetail;version="1.17.0";x-friends:="org.eclipse.emfforms.editor.ecore",
+ org.eclipse.emfforms.internal.swt.treemasterdetail.defaultprovider;version="1.17.0";x-friends:="org.eclipse.emfforms.editor.ecore,org.eclipse.emfforms.editor",
+ org.eclipse.emfforms.spi.swt.treemasterdetail;version="1.17.0",
+ org.eclipse.emfforms.spi.swt.treemasterdetail.actions;version="1.17.0",
+ org.eclipse.emfforms.spi.swt.treemasterdetail.actions.delegating;version="1.17.0",
+ org.eclipse.emfforms.spi.swt.treemasterdetail.diagnostic;version="1.17.0",
+ org.eclipse.emfforms.spi.swt.treemasterdetail.util;version="1.17.0"
 Require-Bundle: org.eclipse.emf.edit;bundle-version="[2.8.0,3.0.0)",
  org.eclipse.core.runtime;bundle-version="[3.8.0,4.0.0)",
- org.eclipse.emf.ecp.ui.view.swt;bundle-version="[1.16.0,1.17.0)",
- org.eclipse.emf.ecp.view.treemasterdetail.model;bundle-version="[1.16.0,1.17.0)",
+ org.eclipse.emf.ecp.ui.view.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.treemasterdetail.model;bundle-version="[1.17.0,1.18.0]",
  org.eclipse.equinox.registry;bundle-version="[3.3.0,4.0.0)",
- org.eclipse.emfforms.swt.core;bundle-version="[1.16.0,1.17.0)"
+ org.eclipse.emfforms.swt.core;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Import-Package: org.eclipse.core.commands;version="0.0.0",
  org.eclipse.emf.edit.ui.action;version="0.0.0",
  org.eclipse.emf.edit.ui.dnd;version="0.0.0",
  org.eclipse.emf.edit.ui.provider;version="0.0.0",
- org.eclipse.emfforms.spi.common.report;version="[1.16.0,1.17.0)",
- org.eclipse.emfforms.spi.core.services.view;version="[1.16.0,1.17.0)",
- org.eclipse.emfforms.spi.localization;version="[1.16.0,1.17.0)",
+ org.eclipse.emfforms.spi.common.report;version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.spi.core.services.view;version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.spi.localization;version="[1.17.0,1.18.0]",
  org.eclipse.jface.action;version="0.0.0",
  org.eclipse.jface.databinding.viewers;version="0.0.0",
  org.eclipse.jface.layout;version="0.0.0",
@@ -38,6 +38,7 @@
  org.eclipse.swt.graphics;version="0.0.0",
  org.eclipse.swt.layout;version="0.0.0",
  org.eclipse.swt.widgets;version="0.0.0",
- org.eclipse.ui.actions;ui.workbench=split;version="0.0.0",
+ org.eclipse.ui.actions;version="0.0.0";ui.workbench=split,
  org.eclipse.ui.views.properties;ui.views=split;version="0.0.0"
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emfforms.swt.treemasterdetail
diff --git a/bundles/org.eclipse.emfforms.swt.treemasterdetail/pom.xml b/bundles/org.eclipse.emfforms.swt.treemasterdetail/pom.xml
index ff4cb0b..0ff5a3e 100644
--- a/bundles/org.eclipse.emfforms.swt.treemasterdetail/pom.xml
+++ b/bundles/org.eclipse.emfforms.swt.treemasterdetail/pom.xml
@@ -7,13 +7,13 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
 
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emfforms.swt.treemasterdetail</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
   
   <properties>
diff --git a/bundles/org.eclipse.emfforms.swt.treemasterdetail/src/org/eclipse/emfforms/spi/swt/treemasterdetail/TreeMasterDetailComposite.java b/bundles/org.eclipse.emfforms.swt.treemasterdetail/src/org/eclipse/emfforms/spi/swt/treemasterdetail/TreeMasterDetailComposite.java
index 19a5eae..a0fe12d 100644
--- a/bundles/org.eclipse.emfforms.swt.treemasterdetail/src/org/eclipse/emfforms/spi/swt/treemasterdetail/TreeMasterDetailComposite.java
+++ b/bundles/org.eclipse.emfforms.swt.treemasterdetail/src/org/eclipse/emfforms/spi/swt/treemasterdetail/TreeMasterDetailComposite.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2011-2016 EclipseSource Muenchen GmbH and others.
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH and others.
  *
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
@@ -9,6 +9,7 @@
  * Contributors:
  * Clemens Elflein - initial API and implementation
  * Johannes Faltermeier - initial API and implementation
+ * Christian W. Damus - bug 533568
  ******************************************************************************/
 package org.eclipse.emfforms.spi.swt.treemasterdetail;
 
@@ -184,6 +185,14 @@
 		limbo.setBackground(Display.getDefault().getSystemColor(SWT.COLOR_WHITE));
 		limbo.setBackgroundMode(SWT.INHERIT_FORCE);
 		renderControl(customization);
+
+		parent.addDisposeListener(new DisposeListener() {
+
+			@Override
+			public void widgetDisposed(DisposeEvent e) {
+				TreeMasterDetailComposite.this.dispose();
+			}
+		});
 	}
 
 	private Control renderControl(TreeMasterDetailSWTCustomization buildBehaviour) {
diff --git a/bundles/org.eclipse.emfforms.swt.treemasterdetail/src/org/eclipse/emfforms/spi/swt/treemasterdetail/diagnostic/DiagnosticCache.java b/bundles/org.eclipse.emfforms.swt.treemasterdetail/src/org/eclipse/emfforms/spi/swt/treemasterdetail/diagnostic/DiagnosticCache.java
index 2bd01dd..e2bcad2 100644
--- a/bundles/org.eclipse.emfforms.swt.treemasterdetail/src/org/eclipse/emfforms/spi/swt/treemasterdetail/diagnostic/DiagnosticCache.java
+++ b/bundles/org.eclipse.emfforms.swt.treemasterdetail/src/org/eclipse/emfforms/spi/swt/treemasterdetail/diagnostic/DiagnosticCache.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2011-2016 EclipseSource Muenchen GmbH and others.
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH and others.
  *
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
@@ -8,6 +8,7 @@
  *
  * Contributors:
  * Johannes Faltermeier - initial API and implementation
+ * Christian W. Damus - bug 533522
  ******************************************************************************/
 package org.eclipse.emfforms.spi.swt.treemasterdetail.diagnostic;
 
@@ -56,6 +57,8 @@
 
 	private Notifier input;
 
+	private boolean initializing;
+
 	/**
 	 * Default constructor.
 	 *
@@ -69,31 +72,52 @@
 				return false;
 			}
 		});
+
 		init(input);
 	}
 
 	private void init(Notifier input) {
-		this.input = input;
-		validationChangeListener = new ValidationChangeListener(input);
-		TreeIterator<Object> allContents;
-		if (ResourceSet.class.isInstance(input)) {
-			allContents = EcoreUtil.getAllContents(ResourceSet.class.cast(input), false);
-		} else if (Resource.class.isInstance(input)) {
-			allContents = EcoreUtil.getAllContents(Resource.class.cast(input), false);
-		} else if (EObject.class.isInstance(input)) {
-			allContents = EcoreUtil.getAllContents(EObject.class.cast(input), false);
-		} else {
-			return;
-		}
-		while (allContents.hasNext()) {
-			final Object next = allContents.next();
-			if (!EObject.class.isInstance(next)) {
-				continue;
+		final boolean wasInitializing = initializing;
+		initializing = true;
+
+		try {
+			this.input = input;
+			validationChangeListener = new ValidationChangeListener(input);
+			TreeIterator<Object> allContents;
+			if (ResourceSet.class.isInstance(input)) {
+				allContents = EcoreUtil.getAllContents(ResourceSet.class.cast(input), false);
+			} else if (Resource.class.isInstance(input)) {
+				allContents = EcoreUtil.getAllContents(Resource.class.cast(input), false);
+			} else if (EObject.class.isInstance(input)) {
+				allContents = EcoreUtil.getAllContents(EObject.class.cast(input), false);
+			} else {
+				return;
 			}
-			updateCacheWithoutRefresh(EObject.class.cast(next), this);
+			while (allContents.hasNext()) {
+				final Object next = allContents.next();
+				if (!EObject.class.isInstance(next)) {
+					continue;
+				}
+				updateCacheWithoutRefresh(EObject.class.cast(next), this);
+			}
+		} finally {
+			initializing = wasInitializing;
 		}
 	}
 
+	/**
+	 * Queries whether the cache is in the process of initializing itself. This is useful
+	 * to avoid doing redundant work, such as back-tracking up an EMF containment tree
+	 * to update parents that have already been covered during the initialization.
+	 *
+	 * @return whether the cache is in the process of initializations
+	 *
+	 * @since 1.17
+	 */
+	protected final boolean isInitializing() {
+		return initializing;
+	}
+
 	@Override
 	public Diagnostic getDefaultValue() {
 		return Diagnostic.OK_INSTANCE;
@@ -105,6 +129,18 @@
 	}
 
 	/**
+	 * @since 1.17
+	 */
+	@Override
+	protected void updateParentNode(Object parent, Object object, Diagnostic value) {
+		// In the initial walk over the contents, we will already have processed
+		// the containment chain
+		if (!isInitializing()) {
+			super.updateParentNode(parent, object, value);
+		}
+	}
+
+	/**
 	 * @return the objects with cached values.
 	 */
 	public Set<Object> getObjects() {
diff --git a/bundles/org.eclipse.emfforms.view.annotation.model.edit/META-INF/MANIFEST.MF b/bundles/org.eclipse.emfforms.view.annotation.model.edit/META-INF/MANIFEST.MF
index 3166397..b3ebb3c 100644
--- a/bundles/org.eclipse.emfforms.view.annotation.model.edit/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emfforms.view.annotation.model.edit/META-INF/MANIFEST.MF
@@ -2,18 +2,19 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.emfforms.view.annotation.model.edit;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-ClassPath: .
 Bundle-Activator: org.eclipse.emf.emfforms.spi.view.annotation.model.provider.AnnotationEditPlugin$Implementation
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
-Export-Package: org.eclipse.emf.emfforms.spi.view.annotation.model.provider;version="1.16.0";x-internal:=true
+Export-Package: org.eclipse.emf.emfforms.spi.view.annotation.model.provider;version="1.17.0";x-internal:=true
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.7.0,4.0.0)",
-  org.eclipse.emfforms.view.annotation.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.edit;bundle-version="[2.8.0,3.0.0)",
-  org.eclipse.emf.ecore;bundle-version="[2.7.0,3.0.0)",
-  org.eclipse.emf.ecore.edit;bundle-version="[2.7.0,3.0.0)",
-  org.eclipse.emf.ecp.view.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.model.edit;bundle-version="[1.16.0,1.17.0)"
+ org.eclipse.emfforms.view.annotation.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.edit;bundle-version="[2.8.0,3.0.0)",
+ org.eclipse.emf.ecore;bundle-version="[2.7.0,3.0.0)",
+ org.eclipse.emf.ecore.edit;bundle-version="[2.7.0,3.0.0)",
+ org.eclipse.emf.ecp.view.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.model.edit;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emfforms.view.annotation.model.edit
diff --git a/bundles/org.eclipse.emfforms.view.annotation.model.edit/plugin.xml b/bundles/org.eclipse.emfforms.view.annotation.model.edit/plugin.xml
index a9dc26a..3f7eb51 100644
--- a/bundles/org.eclipse.emfforms.view.annotation.model.edit/plugin.xml
+++ b/bundles/org.eclipse.emfforms.view.annotation.model.edit/plugin.xml
@@ -31,7 +31,7 @@
    <extension point="org.eclipse.emf.edit.childCreationExtenders">
       <!-- @generated annotation -->
       <extender
-            uri="http://org/eclipse/emf/ecp/view/model/170"
+            uri="http://org/eclipse/emf/ecp/view/model/1170"
             class="org.eclipse.emf.emfforms.spi.view.annotation.model.provider.AnnotationItemProviderAdapterFactory$ViewChildCreationExtender"/>
    </extension>
 
diff --git a/bundles/org.eclipse.emfforms.view.annotation.model.edit/pom.xml b/bundles/org.eclipse.emfforms.view.annotation.model.edit/pom.xml
index 897caa5..9785fc6 100644
--- a/bundles/org.eclipse.emfforms.view.annotation.model.edit/pom.xml
+++ b/bundles/org.eclipse.emfforms.view.annotation.model.edit/pom.xml
@@ -7,7 +7,7 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
 
diff --git a/bundles/org.eclipse.emfforms.view.annotation.model/META-INF/MANIFEST.MF b/bundles/org.eclipse.emfforms.view.annotation.model/META-INF/MANIFEST.MF
index af80e84..74902a9 100644
--- a/bundles/org.eclipse.emfforms.view.annotation.model/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emfforms.view.annotation.model/META-INF/MANIFEST.MF
@@ -2,15 +2,16 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.emfforms.view.annotation.model;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-ClassPath: .
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
-Export-Package: org.eclipse.emf.emfforms.spi.view.annotation.model;version="1.16.0",
-  org.eclipse.emf.emfforms.spi.view.annotation.model.impl;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.emfforms.spi.view.annotation.model.util;version="1.16.0";x-friends:="org.eclipse.emfforms.view.annotation.model.edit"
+Export-Package: org.eclipse.emf.emfforms.spi.view.annotation.model;version="1.17.0",
+ org.eclipse.emf.emfforms.spi.view.annotation.model.impl;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.emfforms.spi.view.annotation.model.util;version="1.17.0";x-friends:="org.eclipse.emfforms.view.annotation.model.edit"
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.7.0,4.0.0)",
-  org.eclipse.emf.ecore;bundle-version="[2.7.0,3.0.0)",
-  org.eclipse.emf.ecp.view.model;bundle-version="[1.16.0,1.17.0)"
+ org.eclipse.emf.ecore;bundle-version="[2.7.0,3.0.0)",
+ org.eclipse.emf.ecp.view.model;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emfforms.view.annotation.model
diff --git a/bundles/org.eclipse.emfforms.view.annotation.model/model/annotation.history b/bundles/org.eclipse.emfforms.view.annotation.model/model/annotation.history
new file mode 100644
index 0000000..9f6028b
--- /dev/null
+++ b/bundles/org.eclipse.emfforms.view.annotation.model/model/annotation.history
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="ASCII"?>
+<history:History xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:history="http://www.eclipse.org/emf/edapt/history/0.3" xmi:id="_BTSPQDjKEeiHN_MT843YMA">
+  <releases xmi:id="_BTSPQTjKEeiHN_MT843YMA" date="2018-04-05T14:09:45.921+0200" label="160">
+    <changes xsi:type="history:CompositeChange" xmi:id="_BTSPQjjKEeiHN_MT843YMA">
+      <changes xsi:type="history:Create" xmi:id="_BTSPQzjKEeiHN_MT843YMA">
+        <element href="annotation.ecore#/"/>
+        <changes xsi:type="history:Set" xmi:id="_BTSPRDjKEeiHN_MT843YMA" featureName="name" dataValue="annotation">
+          <element href="annotation.ecore#/"/>
+        </changes>
+        <changes xsi:type="history:Set" xmi:id="_BTSPRTjKEeiHN_MT843YMA" featureName="nsURI" dataValue="http://org/eclipse/emf/emfforms/view/annotation/model">
+          <element href="annotation.ecore#/"/>
+        </changes>
+        <changes xsi:type="history:Set" xmi:id="_BTSPRjjKEeiHN_MT843YMA" featureName="nsPrefix" dataValue="org.eclipse.emfforms.view.annotation.model">
+          <element href="annotation.ecore#/"/>
+        </changes>
+      </changes>
+      <changes xsi:type="history:Create" xmi:id="_BTSPRzjKEeiHN_MT843YMA" referenceName="eClassifiers">
+        <target href="annotation.ecore#/"/>
+        <element href="annotation.ecore#//Annotation"/>
+        <changes xsi:type="history:Set" xmi:id="_BTSPSDjKEeiHN_MT843YMA" featureName="name" dataValue="Annotation">
+          <element href="annotation.ecore#//Annotation"/>
+        </changes>
+        <changes xsi:type="history:Add" xmi:id="_BTSPSTjKEeiHN_MT843YMA" featureName="eSuperTypes">
+          <element href="annotation.ecore#//Annotation"/>
+          <referenceValue href="../../org.eclipse.emf.ecp.view.model/model/view.ecore#//Attachment"/>
+        </changes>
+      </changes>
+      <changes xsi:type="history:Create" xmi:id="_BTSPSjjKEeiHN_MT843YMA" referenceName="eStructuralFeatures">
+        <target href="annotation.ecore#//Annotation"/>
+        <element href="annotation.ecore#//Annotation/key"/>
+        <changes xsi:type="history:Set" xmi:id="_BTSPSzjKEeiHN_MT843YMA" featureName="name" dataValue="key">
+          <element href="annotation.ecore#//Annotation/key"/>
+        </changes>
+        <changes xsi:type="history:Set" xmi:id="_BTSPTDjKEeiHN_MT843YMA" featureName="lowerBound" dataValue="1" oldDataValue="0">
+          <element href="annotation.ecore#//Annotation/key"/>
+        </changes>
+        <changes xsi:type="history:Set" xmi:id="_BTSPTTjKEeiHN_MT843YMA" featureName="eType">
+          <element href="annotation.ecore#//Annotation/key"/>
+          <referenceValue href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+        </changes>
+      </changes>
+      <changes xsi:type="history:Create" xmi:id="_BTSPTjjKEeiHN_MT843YMA" referenceName="eStructuralFeatures">
+        <target href="annotation.ecore#//Annotation"/>
+        <element href="annotation.ecore#//Annotation/value"/>
+        <changes xsi:type="history:Set" xmi:id="_BTSPTzjKEeiHN_MT843YMA" featureName="name" dataValue="value">
+          <element href="annotation.ecore#//Annotation/value"/>
+        </changes>
+        <changes xsi:type="history:Set" xmi:id="_BTSPUDjKEeiHN_MT843YMA" featureName="eType">
+          <element href="annotation.ecore#//Annotation/value"/>
+          <referenceValue href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+        </changes>
+      </changes>
+    </changes>
+  </releases>
+  <releases xmi:id="_OwATEDjKEeiHN_MT843YMA"/>
+</history:History>
diff --git a/bundles/org.eclipse.emfforms.view.annotation.model/plugin.xml b/bundles/org.eclipse.emfforms.view.annotation.model/plugin.xml
index ec587e3..53c6e71 100644
--- a/bundles/org.eclipse.emfforms.view.annotation.model/plugin.xml
+++ b/bundles/org.eclipse.emfforms.view.annotation.model/plugin.xml
@@ -22,5 +22,11 @@
             class="org.eclipse.emf.emfforms.spi.view.annotation.model.VAnnotationPackage"
             genModel="model/annotation.genmodel"/>
    </extension>
+   <extension
+         point="org.eclipse.emf.edapt.migrators">
+      <migrator
+            path="model/annotation.history">
+      </migrator>
+   </extension>
 
 </plugin>
diff --git a/bundles/org.eclipse.emfforms.view.annotation.model/pom.xml b/bundles/org.eclipse.emfforms.view.annotation.model/pom.xml
index 4e6e275..c468436 100644
--- a/bundles/org.eclipse.emfforms.view.annotation.model/pom.xml
+++ b/bundles/org.eclipse.emfforms.view.annotation.model/pom.xml
@@ -7,7 +7,7 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
 
diff --git a/bundles/org.eclipse.emfforms.view.controlgrid.model.edit/META-INF/MANIFEST.MF b/bundles/org.eclipse.emfforms.view.controlgrid.model.edit/META-INF/MANIFEST.MF
index d99e50b..c3cc2fd 100644
--- a/bundles/org.eclipse.emfforms.view.controlgrid.model.edit/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emfforms.view.controlgrid.model.edit/META-INF/MANIFEST.MF
@@ -2,20 +2,21 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.emfforms.view.controlgrid.model.edit;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-ClassPath: .
 Bundle-Activator: org.eclipse.emf.emfforms.spi.view.controlgrid.model.provider.ControlgridEditPlugin$Implementation
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
-Export-Package: org.eclipse.emf.emfforms.spi.view.controlgrid.model.provider;version="1.16.0"
+Export-Package: org.eclipse.emf.emfforms.spi.view.controlgrid.model.provider;version="1.17.0"
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.7.0,4.0.0)",
-  org.eclipse.emfforms.view.controlgrid.model;bundle-version="[1.16.0,1.17.0)";visibility:=reexport,
-  org.eclipse.emf.edit;bundle-version="[2.8.0,3.0.0)";visibility:=reexport,
-  org.eclipse.emf.ecore;bundle-version="[2.7.0,3.0.0)";visibility:=reexport,
-  org.eclipse.emf.ecore.edit;bundle-version="[2.7.0,3.0.0)";visibility:=reexport,
-  org.eclipse.emf.ecp.view.model;bundle-version="[1.16.0,1.17.0)";visibility:=reexport,
-  org.eclipse.emf.ecp.view.model.edit;bundle-version="[1.16.0,1.17.0)";visibility:=reexport
-Import-Package: org.eclipse.emf.ecp.view.spi.compoundcontrol.model;version="[1.16.0,1.17.0)";resolution:=optional,
-  org.eclipse.emf.ecp.view.spi.table.model;version="[1.16.0,1.17.0)";resolution:=optional
+ org.eclipse.emfforms.view.controlgrid.model;bundle-version="[1.17.0,1.18.0]";visibility:=reexport,
+ org.eclipse.emf.edit;bundle-version="[2.8.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.ecore;bundle-version="[2.7.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.ecore.edit;bundle-version="[2.7.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.ecp.view.model;bundle-version="[1.17.0,1.18.0]";visibility:=reexport,
+ org.eclipse.emf.ecp.view.model.edit;bundle-version="[1.17.0,1.18.0]";visibility:=reexport
+Import-Package: org.eclipse.emf.ecp.view.spi.compoundcontrol.model;version="[1.17.0,1.18.0]";resolution:=optional,
+ org.eclipse.emf.ecp.view.spi.table.model;version="[1.17.0,1.18.0]";resolution:=optional
 Bundle-ActivationPolicy: lazy
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Automatic-Module-Name: org.eclipse.emfforms.view.controlgrid.model.edit
diff --git a/bundles/org.eclipse.emfforms.view.controlgrid.model.edit/plugin.xml b/bundles/org.eclipse.emfforms.view.controlgrid.model.edit/plugin.xml
index 2630a78..8d59e5b 100644
--- a/bundles/org.eclipse.emfforms.view.controlgrid.model.edit/plugin.xml
+++ b/bundles/org.eclipse.emfforms.view.controlgrid.model.edit/plugin.xml
@@ -31,7 +31,7 @@
    <extension point="org.eclipse.emf.edit.childCreationExtenders">
       <!-- @generated controlgrid -->
       <extender
-            uri="http://org/eclipse/emf/ecp/view/model/170"
+            uri="http://org/eclipse/emf/ecp/view/model/1170"
             class="org.eclipse.emf.emfforms.spi.view.controlgrid.model.provider.ControlgridItemProviderAdapterFactory$ViewChildCreationExtender"/>
    </extension>
 
diff --git a/bundles/org.eclipse.emfforms.view.controlgrid.model.edit/pom.xml b/bundles/org.eclipse.emfforms.view.controlgrid.model.edit/pom.xml
index 15f586c..e4beb00 100644
--- a/bundles/org.eclipse.emfforms.view.controlgrid.model.edit/pom.xml
+++ b/bundles/org.eclipse.emfforms.view.controlgrid.model.edit/pom.xml
@@ -7,7 +7,7 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
 
diff --git a/bundles/org.eclipse.emfforms.view.controlgrid.model/META-INF/MANIFEST.MF b/bundles/org.eclipse.emfforms.view.controlgrid.model/META-INF/MANIFEST.MF
index 2a713c0..1846933 100644
--- a/bundles/org.eclipse.emfforms.view.controlgrid.model/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emfforms.view.controlgrid.model/META-INF/MANIFEST.MF
@@ -2,15 +2,16 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.emfforms.view.controlgrid.model;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-ClassPath: .
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
-Export-Package: org.eclipse.emf.emfforms.spi.view.controlgrid.model;version="1.16.0",
-  org.eclipse.emf.emfforms.spi.view.controlgrid.model.impl;version="1.16.0",
-  org.eclipse.emf.emfforms.spi.view.controlgrid.model.util;version="1.16.0"
+Export-Package: org.eclipse.emf.emfforms.spi.view.controlgrid.model;version="1.17.0",
+ org.eclipse.emf.emfforms.spi.view.controlgrid.model.impl;version="1.17.0",
+ org.eclipse.emf.emfforms.spi.view.controlgrid.model.util;version="1.17.0"
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.7.0,4.0.0)",
-  org.eclipse.emf.ecore;bundle-version="[2.7.0,3.0.0)";visibility:=reexport,
-  org.eclipse.emf.ecp.view.model;bundle-version="[1.16.0,1.17.0)";visibility:=reexport
+ org.eclipse.emf.ecore;bundle-version="[2.7.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.ecp.view.model;bundle-version="[1.17.0,1.18.0]";visibility:=reexport
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emfforms.view.controlgrid.model
diff --git a/bundles/org.eclipse.emfforms.view.controlgrid.model/pom.xml b/bundles/org.eclipse.emfforms.view.controlgrid.model/pom.xml
index 20d755c..0f8648c 100644
--- a/bundles/org.eclipse.emfforms.view.controlgrid.model/pom.xml
+++ b/bundles/org.eclipse.emfforms.view.controlgrid.model/pom.xml
@@ -7,7 +7,7 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
 
diff --git a/bundles/org.eclipse.emfforms.view.model.localization/META-INF/MANIFEST.MF b/bundles/org.eclipse.emfforms.view.model.localization/META-INF/MANIFEST.MF
index 848bc6b..52b58cc 100644
--- a/bundles/org.eclipse.emfforms.view.model.localization/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emfforms.view.model.localization/META-INF/MANIFEST.MF
@@ -2,14 +2,15 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: EMFForms View Localization
 Bundle-SymbolicName: org.eclipse.emfforms.view.model.localization;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emfforms.internal.view.model.localization;version="1.16.0";x-internal:=true
-Require-Bundle: org.eclipse.emf.ecp.view.context;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.model;bundle-version="[1.16.0,1.17.0)"
+Export-Package: org.eclipse.emfforms.internal.view.model.localization;version="1.17.0";x-internal:=true
+Require-Bundle: org.eclipse.emf.ecp.view.context;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.model;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
-Import-Package: org.eclipse.emfforms.spi.common.locale;version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.spi.common.report;version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.spi.core.services.view;version="[1.16.0,1.17.0)",
-  org.osgi.framework;version="1.5.0"
+Import-Package: org.eclipse.emfforms.spi.common.locale;version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.spi.common.report;version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.spi.core.services.view;version="[1.17.0,1.18.0]",
+ org.osgi.framework;version="1.5.0"
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emfforms.view.model.localization
diff --git a/bundles/org.eclipse.emfforms.view.model.localization/pom.xml b/bundles/org.eclipse.emfforms.view.model.localization/pom.xml
index fbd422d..1b01af6 100644
--- a/bundles/org.eclipse.emfforms.view.model.localization/pom.xml
+++ b/bundles/org.eclipse.emfforms.view.model.localization/pom.xml
@@ -7,7 +7,7 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-bundles-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.bundles/</relativePath>
   </parent>
 
diff --git a/bundles/spreadsheet/org.eclipse.emfforms.spreadsheet.core.error.model.edit/META-INF/MANIFEST.MF b/bundles/spreadsheet/org.eclipse.emfforms.spreadsheet.core.error.model.edit/META-INF/MANIFEST.MF
index 67634f2..c442fab 100644
--- a/bundles/spreadsheet/org.eclipse.emfforms.spreadsheet.core.error.model.edit/META-INF/MANIFEST.MF
+++ b/bundles/spreadsheet/org.eclipse.emfforms.spreadsheet.core.error.model.edit/META-INF/MANIFEST.MF
@@ -9,11 +9,12 @@
 Bundle-Localization: plugin
 Export-Package: org.eclipse.emfforms.spi.spreadsheet.core.error.model.provider;version="1.0.0"
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.7.0,4.0.0)",
-  org.eclipse.emfforms.spreadsheet.core.error.model;bundle-version="[1.0.0,1.1.0)";visibility:=reexport,
-  org.eclipse.emf.edit;bundle-version="[2.8.0,3.0.0)";visibility:=reexport,
-  org.eclipse.emf.ecore;bundle-version="[2.7.0,3.0.0)";visibility:=reexport,
-  org.eclipse.emf.ecore.edit;bundle-version="[2.7.0,3.0.0)";visibility:=reexport,
-  org.eclipse.emf.ecp.view.model;bundle-version="[1.16.0,1.17.0)";visibility:=reexport,
-  org.eclipse.emf.ecp.view.model.edit;bundle-version="[1.16.0,1.17.0)";visibility:=reexport
+ org.eclipse.emfforms.spreadsheet.core.error.model;bundle-version="[1.0.0,1.1.0)";visibility:=reexport,
+ org.eclipse.emf.edit;bundle-version="[2.8.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.ecore;bundle-version="[2.7.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.ecore.edit;bundle-version="[2.7.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.ecp.view.model;bundle-version="[1.17.0,1.18.0]";visibility:=reexport,
+ org.eclipse.emf.ecp.view.model.edit;bundle-version="[1.17.0,1.18.0]";visibility:=reexport
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emfforms.spreadsheet.core.error.model.edit
diff --git a/bundles/spreadsheet/org.eclipse.emfforms.spreadsheet.core.error.model/META-INF/MANIFEST.MF b/bundles/spreadsheet/org.eclipse.emfforms.spreadsheet.core.error.model/META-INF/MANIFEST.MF
index 26a84dc..49c326b 100644
--- a/bundles/spreadsheet/org.eclipse.emfforms.spreadsheet.core.error.model/META-INF/MANIFEST.MF
+++ b/bundles/spreadsheet/org.eclipse.emfforms.spreadsheet.core.error.model/META-INF/MANIFEST.MF
@@ -11,12 +11,13 @@
   org.eclipse.emfforms.spi.spreadsheet.core.error.model.util;version="1.0.0"
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.7.0,4.0.0)",
   org.eclipse.emf.ecore;bundle-version="[2.7.0,3.0.0)";visibility:=reexport,
-  org.eclipse.emf.ecp.view.model;bundle-version="[1.16.0,1.17.0)";visibility:=reexport
+  org.eclipse.emf.ecp.view.model;bundle-version="[1.17.0,1.18.0)";visibility:=reexport
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Bundle-ActivationPolicy: lazy
 Import-Package: org.eclipse.core.databinding.observable.list;version="0.0.0",
   org.eclipse.core.databinding.observable.value;version="0.0.0",
   org.eclipse.core.databinding.property.list;version="0.0.0",
   org.eclipse.core.databinding.property.value;version="0.0.0",
-  org.eclipse.emfforms.internal.core.services.label;version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.spi.core.services.label;version="[1.16.0,1.17.0)"
+  org.eclipse.emfforms.internal.core.services.label;version="[1.17.0,1.18.0)",
+  org.eclipse.emfforms.spi.core.services.label;version="[1.17.0,1.18.0)"
+Automatic-Module-Name: org.eclipse.emfforms.spreadsheet.core.error.model
diff --git a/bundles/spreadsheet/org.eclipse.emfforms.spreadsheet.core.renderer.categorization/META-INF/MANIFEST.MF b/bundles/spreadsheet/org.eclipse.emfforms.spreadsheet.core.renderer.categorization/META-INF/MANIFEST.MF
index 22ac283..47161a1 100644
--- a/bundles/spreadsheet/org.eclipse.emfforms.spreadsheet.core.renderer.categorization/META-INF/MANIFEST.MF
+++ b/bundles/spreadsheet/org.eclipse.emfforms.spreadsheet.core.renderer.categorization/META-INF/MANIFEST.MF
@@ -5,13 +5,14 @@
 Bundle-Version: 1.0.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
 Export-Package: org.eclipse.emfforms.internal.spreadsheet.core.renderer.categorization;version="1.0.0";x-internal:=true
-Require-Bundle: org.eclipse.emfforms.common;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.categorization.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.spreadsheet.core;bundle-version="[1.0.0,1.1.0)",
-  org.eclipse.emfforms.view.annotation.model;bundle-version="[1.16.0,1.17.0)"
+Require-Bundle: org.eclipse.emfforms.common;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.categorization.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.spreadsheet.core;bundle-version="[1.0.0,1.1.0)",
+ org.eclipse.emfforms.view.annotation.model;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
-Import-Package: org.eclipse.emf.ecp.view.spi.context;version="[1.16.0,1.17.0)",
-  org.osgi.framework;version="[1.6.0,2.0.0)",
-  org.osgi.service.component.annotations;version="[1.2.0,2.0.0)"
+Import-Package: org.eclipse.emf.ecp.view.spi.context;version="[1.17.0,1.18.0]",
+ org.osgi.framework;version="[1.6.0,2.0.0)",
+ org.osgi.service.component.annotations;version="[1.2.0,2.0.0)"
 Service-Component: OSGI-INF/org.eclipse.emfforms.internal.spreadsheet.core.renderer.categorization.EMFFormsCategorizationElementRendererService.xml,OSGI-INF/org.eclipse.emfforms.internal.spreadsheet.core.renderer.categorization.EMFFormsCategorizationRendererService.xml,OSGI-INF/org.eclipse.emfforms.internal.spreadsheet.core.renderer.categorization.EMFFormsCategoryRendererService.xml
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emfforms.spreadsheet.core.renderer.categorization
diff --git a/bundles/spreadsheet/org.eclipse.emfforms.spreadsheet.core.renderer.custom/META-INF/MANIFEST.MF b/bundles/spreadsheet/org.eclipse.emfforms.spreadsheet.core.renderer.custom/META-INF/MANIFEST.MF
index 9675110..275787c 100644
--- a/bundles/spreadsheet/org.eclipse.emfforms.spreadsheet.core.renderer.custom/META-INF/MANIFEST.MF
+++ b/bundles/spreadsheet/org.eclipse.emfforms.spreadsheet.core.renderer.custom/META-INF/MANIFEST.MF
@@ -5,10 +5,11 @@
 Bundle-Version: 1.0.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
 Export-Package: org.eclipse.emfforms.internal.spreadsheet.core.renderer.custom;version="1.0.0";x-internal:=true
-Require-Bundle: org.eclipse.emf.ecp.view.context;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.custom.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.spreadsheet.core;bundle-version="[1.0.0,1.1.0)"
+Require-Bundle: org.eclipse.emf.ecp.view.context;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.custom.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.spreadsheet.core;bundle-version="[1.0.0,1.1.0)"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Import-Package: org.osgi.service.component.annotations;version="[1.2.0,2.0.0)"
 Service-Component: OSGI-INF/org.eclipse.emfforms.internal.spreadsheet.core.renderer.custom.EMFFormsSpreadsheetCustomControlRendererService.xml
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emfforms.spreadsheet.core.renderer.custom
diff --git a/bundles/spreadsheet/org.eclipse.emfforms.spreadsheet.core.renderer.table/META-INF/MANIFEST.MF b/bundles/spreadsheet/org.eclipse.emfforms.spreadsheet.core.renderer.table/META-INF/MANIFEST.MF
index e32fde2..717c083 100644
--- a/bundles/spreadsheet/org.eclipse.emfforms.spreadsheet.core.renderer.table/META-INF/MANIFEST.MF
+++ b/bundles/spreadsheet/org.eclipse.emfforms.spreadsheet.core.renderer.table/META-INF/MANIFEST.MF
@@ -5,18 +5,19 @@
 Bundle-Version: 1.0.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
 Export-Package: org.eclipse.emfforms.internal.spreadsheet.core.renderer.table;version="1.0.0";x-internal:=true
-Require-Bundle: org.eclipse.emf.ecp.view.context;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.table.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.indexdmr.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.spreadsheet.core;bundle-version="[1.0.0,1.1.0)",
-  org.eclipse.emfforms.spreadsheet.core.renderer;bundle-version="[1.0.0,1.1.0)",
-  org.eclipse.emf.ecp.ui.view;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.template.model;bundle-version="[1.16.0,1.17.0)"
+Require-Bundle: org.eclipse.emf.ecp.view.context;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.table.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.indexdmr.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.spreadsheet.core;bundle-version="[1.0.0,1.1.0)",
+ org.eclipse.emfforms.spreadsheet.core.renderer;bundle-version="[1.0.0,1.1.0)",
+ org.eclipse.emf.ecp.ui.view;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.template.model;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Import-Package: org.eclipse.emf.databinding;version="0.0.0",
-  org.eclipse.emfforms.spi.core.services.databinding.emf;version="[1.16.0,1.17.0)",
-  org.osgi.framework;version="1.8.0",
-  org.osgi.service.component.annotations;version="[1.2.0,2.0.0)"
+ org.eclipse.emfforms.spi.core.services.databinding.emf;version="[1.17.0,1.18.0]",
+ org.osgi.framework;version="1.8.0",
+ org.osgi.service.component.annotations;version="[1.2.0,2.0.0)"
 Service-Component: OSGI-INF/org.eclipse.emfforms.internal.spreadsheet.core.renderer.table.EMFFormsSpreadsheetTableControlRendererService.xml
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emfforms.spreadsheet.core.renderer.table
diff --git a/bundles/spreadsheet/org.eclipse.emfforms.spreadsheet.core.renderer/META-INF/MANIFEST.MF b/bundles/spreadsheet/org.eclipse.emfforms.spreadsheet.core.renderer/META-INF/MANIFEST.MF
index 87e778b..5582b70 100644
--- a/bundles/spreadsheet/org.eclipse.emfforms.spreadsheet.core.renderer/META-INF/MANIFEST.MF
+++ b/bundles/spreadsheet/org.eclipse.emfforms.spreadsheet.core.renderer/META-INF/MANIFEST.MF
@@ -7,22 +7,23 @@
 Bundle-Vendor: Eclipse Modeling Project
 Export-Package: org.eclipse.emfforms.internal.spreadsheet.core.renderer;version="1.0.0";x-internal:=true
 Require-Bundle: org.eclipse.emfforms.spreadsheet.core;bundle-version="[1.0.0,1.1.0)",
-  org.eclipse.emf.ecp.view.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.common;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.indexdmr.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.template.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.core.databinding.property;bundle-version="[1.3.0,2.0.0)"
+ org.eclipse.emf.ecp.view.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.common;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.indexdmr.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.template.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.core.databinding.property;bundle-version="[1.3.0,2.0.0)"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Service-Component: OSGI-INF/org.eclipse.emfforms.internal.spreadsheet.core.renderer.EMFFormsSpreadsheetContainerRendererService.xml,OSGI-INF/org.eclipse.emfforms.internal.spreadsheet.core.renderer.EMFFormsSpreadsheetControlRendererService.xml,OSGI-INF/org.eclipse.emfforms.internal.spreadsheet.core.renderer.EMFFormsSpreadsheetElementRendererService.xml,OSGI-INF/org.eclipse.emfforms.internal.spreadsheet.core.renderer.EMFFormsSpreadsheetViewRendererService.xml
 Bundle-ActivationPolicy: lazy
 Import-Package: org.eclipse.core.databinding.observable;version="0.0.0",
-  org.eclipse.core.databinding.observable.value;version="0.0.0",
-  org.eclipse.emf.databinding;version="0.0.0",
-  org.eclipse.emf.ecore.xmi;version="0.0.0",
-  org.eclipse.emf.ecp.view.spi.context;version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.spi.core.services.databinding;version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.spi.core.services.databinding.emf;version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.spi.core.services.domainexpander;version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.spi.core.services.label;version="[1.16.0,1.17.0)",
-  org.osgi.framework;version="1.6.0",
-  org.osgi.service.component.annotations;version="1.2.0"
+ org.eclipse.core.databinding.observable.value;version="0.0.0",
+ org.eclipse.emf.databinding;version="0.0.0",
+ org.eclipse.emf.ecore.xmi;version="0.0.0",
+ org.eclipse.emf.ecp.view.spi.context;version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.spi.core.services.databinding;version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.spi.core.services.databinding.emf;version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.spi.core.services.domainexpander;version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.spi.core.services.label;version="[1.17.0,1.18.0]",
+ org.osgi.framework;version="1.6.0",
+ org.osgi.service.component.annotations;version="1.2.0"
+Automatic-Module-Name: org.eclipse.emfforms.spreadsheet.core.renderer
diff --git a/bundles/spreadsheet/org.eclipse.emfforms.spreadsheet.core/META-INF/MANIFEST.MF b/bundles/spreadsheet/org.eclipse.emfforms.spreadsheet.core/META-INF/MANIFEST.MF
index 6f165ec..3223e10 100644
--- a/bundles/spreadsheet/org.eclipse.emfforms.spreadsheet.core/META-INF/MANIFEST.MF
+++ b/bundles/spreadsheet/org.eclipse.emfforms.spreadsheet.core/META-INF/MANIFEST.MF
@@ -11,19 +11,19 @@
   org.eclipse.emfforms.spi.spreadsheet.core;version="1.0.0",
   org.eclipse.emfforms.spi.spreadsheet.core.converter;version="1.0.0",
   org.eclipse.emfforms.spi.spreadsheet.core.transfer;version="1.0.0"
-Require-Bundle: org.eclipse.emf.ecp.view.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.context;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.common;bundle-version="[1.16.0,1.17.0)",
-  org.apache.poi;bundle-version="[3.8.0,4.0.0)";visibility:=reexport,
-  org.eclipse.emf.ecp.view.indexdmr.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.edit;bundle-version="[2.8.0,3.0.0)",
-  org.eclipse.core.databinding.observable;bundle-version="[1.3.0,2.0.0)",
-  org.eclipse.emfforms.view.model.localization;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecore.xmi;bundle-version="[2.7.0,3.0.0)",
-  org.eclipse.emf.ecp.ui.view;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.spreadsheet.core.error.model;bundle-version="[1.0.0,1.1.0)",
-  org.eclipse.emf.ecp.view.migrator;bundle-version="[1.16.0,1.17.0)"
+Require-Bundle: org.eclipse.emf.ecp.view.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.context;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.common;bundle-version="[1.17.0,1.18.0]",
+ org.apache.poi;bundle-version="[3.8.0,4.0.0)";visibility:=reexport,
+ org.eclipse.emf.ecp.view.indexdmr.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.edit;bundle-version="[2.8.0,3.0.0)",
+ org.eclipse.core.databinding.observable;bundle-version="[1.3.0,2.0.0)",
+ org.eclipse.emfforms.view.model.localization;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecore.xmi;bundle-version="[2.7.0,3.0.0)",
+ org.eclipse.emf.ecp.ui.view;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.spreadsheet.core.error.model;bundle-version="[1.0.0,1.1.0)",
+ org.eclipse.emf.ecp.view.migrator;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Service-Component: OSGI-INF/EMFFormsSpreadsheetFormatDescriptionProviderImpl.xml,
  OSGI-INF/EMFFormsSpreadsheetMultiAttributeConverter.xml,
@@ -35,7 +35,8 @@
  OSGI-INF/org.eclipse.emfforms.internal.spreadsheet.core.EMFFormsSpreadsheetRendererFactoryImpl.xml
 Bundle-ActivationPolicy: lazy
 Import-Package: org.eclipse.emf.databinding;version="0.0.0",
-  org.eclipse.emfforms.spi.core.services.databinding.emf;version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.spi.localization;version="[1.16.0,1.17.0)",
-  org.osgi.framework;version="1.6.0",
-  org.osgi.service.component.annotations;version="1.2.0"
+ org.eclipse.emfforms.spi.core.services.databinding.emf;version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.spi.localization;version="[1.17.0,1.18.0]",
+ org.osgi.framework;version="1.6.0",
+ org.osgi.service.component.annotations;version="1.2.0"
+Automatic-Module-Name: org.eclipse.emfforms.spreadsheet.core
diff --git a/bundles/spreadsheet/org.eclipse.emfforms.spreadsheet.file/META-INF/MANIFEST.MF b/bundles/spreadsheet/org.eclipse.emfforms.spreadsheet.file/META-INF/MANIFEST.MF
index a17db65..f805012 100644
--- a/bundles/spreadsheet/org.eclipse.emfforms.spreadsheet.file/META-INF/MANIFEST.MF
+++ b/bundles/spreadsheet/org.eclipse.emfforms.spreadsheet.file/META-INF/MANIFEST.MF
@@ -7,11 +7,12 @@
 Export-Package: org.eclipse.emfforms.internal.spreadsheet.file;version="1.0.0";x-internal:=true,
   org.eclipse.emfforms.internal.spreadsheet.file.messages;version="1.0.0";x-internal:=true,
   org.eclipse.emfforms.spi.spreadsheet.file;version="1.0.0"
-Require-Bundle: org.eclipse.emf.ecp.view.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.spreadsheet.core;bundle-version="[1.0.0,1.1.0)",
-  org.eclipse.emfforms.spreadsheet.core.error.model;bundle-version="[1.0.0,1.1.0)"
+Require-Bundle: org.eclipse.emf.ecp.view.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.spreadsheet.core;bundle-version="[1.0.0,1.1.0)",
+ org.eclipse.emfforms.spreadsheet.core.error.model;bundle-version="[1.0.0,1.1.0)"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
-Import-Package: org.eclipse.emfforms.spi.common.report;version="[1.16.0,1.17.0)",
-  org.eclipse.osgi.util;version="1.1.0",
-  org.osgi.framework;version="[1.2.0,2.0.0)"
+Import-Package: org.eclipse.emfforms.spi.common.report;version="[1.17.0,1.18.0]",
+ org.eclipse.osgi.util;version="1.1.0",
+ org.osgi.framework;version="[1.2.0,2.0.0)"
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emfforms.spreadsheet.file
diff --git a/bundles/spreadsheet/org.eclipse.emfforms.spreadsheet.stream/META-INF/MANIFEST.MF b/bundles/spreadsheet/org.eclipse.emfforms.spreadsheet.stream/META-INF/MANIFEST.MF
index 956a95f..f2d89d0 100644
--- a/bundles/spreadsheet/org.eclipse.emfforms.spreadsheet.stream/META-INF/MANIFEST.MF
+++ b/bundles/spreadsheet/org.eclipse.emfforms.spreadsheet.stream/META-INF/MANIFEST.MF
@@ -8,10 +8,11 @@
   org.eclipse.emfforms.internal.spreadsheet.stream.messages;version="1.0.0";x-internal:=true,
   org.eclipse.emfforms.spi.spreadsheet.stream;version="1.0.0"
 Require-Bundle: org.eclipse.emfforms.spreadsheet.core;bundle-version="[1.0.0,1.1.0)",
-  org.eclipse.emf.ecp.view.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.spreadsheet.core.error.model;bundle-version="[1.0.0,1.1.0)"
+ org.eclipse.emf.ecp.view.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.spreadsheet.core.error.model;bundle-version="[1.0.0,1.1.0)"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
-Import-Package: org.eclipse.emfforms.spi.common.report;version="[1.16.0,1.17.0)",
-  org.eclipse.osgi.util;version="1.1.0",
-  org.osgi.framework;version="[1.3.0,2.0.0)"
+Import-Package: org.eclipse.emfforms.spi.common.report;version="[1.17.0,1.18.0]",
+ org.eclipse.osgi.util;version="1.1.0",
+ org.osgi.framework;version="[1.3.0,2.0.0)"
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emfforms.spreadsheet.stream
diff --git a/examples/org.eclipse.emf.ecp.makeithappen.application.sample.e3/META-INF/MANIFEST.MF b/examples/org.eclipse.emf.ecp.makeithappen.application.sample.e3/META-INF/MANIFEST.MF
index cf7a93f..d773f49 100644
--- a/examples/org.eclipse.emf.ecp.makeithappen.application.sample.e3/META-INF/MANIFEST.MF
+++ b/examples/org.eclipse.emf.ecp.makeithappen.application.sample.e3/META-INF/MANIFEST.MF
@@ -2,13 +2,14 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: MakeItHappen Sample Application e3
 Bundle-SymbolicName: org.eclipse.emf.ecp.makeithappen.application.sample.e3;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Framework
-Export-Package: org.eclipse.emf.ecp.makeithappen.application.sample.e3;version="1.16.0";x-internal:=true
+Export-Package: org.eclipse.emf.ecp.makeithappen.application.sample.e3;version="1.17.0";x-internal:=true
 Require-Bundle: org.eclipse.ui;bundle-version="[3.0.0,4.0.0)",
-  org.eclipse.core.runtime;bundle-version="[3.7.0,4.0.0)",
-  org.eclipse.emf.ecp.makeithappen.model.edit;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.ui.view.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.edit;bundle-version="[1.16.0,1.17.0)"
+ org.eclipse.core.runtime;bundle-version="[3.7.0,4.0.0)",
+ org.eclipse.emf.ecp.makeithappen.model.edit;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.ui.view.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.edit;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.makeithappen.application.sample.e3
diff --git a/examples/org.eclipse.emf.ecp.makeithappen.application.sample.e3/pom.xml b/examples/org.eclipse.emf.ecp.makeithappen.application.sample.e3/pom.xml
index 3710d0e..267a03a 100644
--- a/examples/org.eclipse.emf.ecp.makeithappen.application.sample.e3/pom.xml
+++ b/examples/org.eclipse.emf.ecp.makeithappen.application.sample.e3/pom.xml
@@ -7,7 +7,7 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-examples-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.examples/</relativePath>
   </parent>
 
@@ -15,7 +15,7 @@
   <packaging>eclipse-plugin</packaging>
 
   <groupId>org.eclipse.emf.ecp</groupId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   
   <properties>
   	<jacoco.percentage.instruction>0.0</jacoco.percentage.instruction>
diff --git a/examples/org.eclipse.emf.ecp.makeithappen.application.sample.e4/META-INF/MANIFEST.MF b/examples/org.eclipse.emf.ecp.makeithappen.application.sample.e4/META-INF/MANIFEST.MF
index a4f8f2d..87c0039 100644
--- a/examples/org.eclipse.emf.ecp.makeithappen.application.sample.e4/META-INF/MANIFEST.MF
+++ b/examples/org.eclipse.emf.ecp.makeithappen.application.sample.e4/META-INF/MANIFEST.MF
@@ -2,23 +2,24 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: MakeItHappen Sample Application e4
 Bundle-SymbolicName: org.eclipse.emf.ecp.makeithappen.application.sample.e4;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emf.ecp.makeithappen.application.sample.e4.parts;version="1.16.0";x-internal:=true
+Export-Package: org.eclipse.emf.ecp.makeithappen.application.sample.e4.parts;version="1.17.0";x-internal:=true
 Require-Bundle: javax.inject;bundle-version="1.0.0",
-  org.eclipse.core.runtime;bundle-version="[3.9.100,4.0.0)",
-  org.eclipse.swt;bundle-version="[3.102.1,4.0.0)",
-  org.eclipse.e4.ui.model.workbench;bundle-version="[1.0.1,3.0.0)",
-  org.eclipse.jface;bundle-version="[3.9.1,4.0.0)",
-  org.eclipse.e4.ui.services;bundle-version="[1.0.1,2.0.0)",
-  org.eclipse.e4.ui.workbench;bundle-version="[1.0.2,2.0.0)",
-  org.eclipse.e4.core.di;bundle-version="[1.3.0,2.0.0)",
-  org.eclipse.e4.ui.di;bundle-version="[1.0.0,2.0.0)",
-  org.eclipse.e4.core.contexts;bundle-version="[1.3.1,2.0.0)",
-  org.eclipse.emf.ecore;bundle-version="[2.8.0,3.0.0)",
-  org.eclipse.emf.ecp.makeithappen.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.ui.view.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.ui.view;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.edit;bundle-version="[1.16.0,1.17.0)"
+ org.eclipse.core.runtime;bundle-version="[3.9.100,4.0.0)",
+ org.eclipse.swt;bundle-version="[3.102.1,4.0.0)",
+ org.eclipse.e4.ui.model.workbench;bundle-version="[1.0.1,3.0.0)",
+ org.eclipse.jface;bundle-version="[3.9.1,4.0.0)",
+ org.eclipse.e4.ui.services;bundle-version="[1.0.1,2.0.0)",
+ org.eclipse.e4.ui.workbench;bundle-version="[1.0.2,2.0.0)",
+ org.eclipse.e4.core.di;bundle-version="[1.3.0,2.0.0)",
+ org.eclipse.e4.ui.di;bundle-version="[1.0.0,2.0.0)",
+ org.eclipse.e4.core.contexts;bundle-version="[1.3.1,2.0.0)",
+ org.eclipse.emf.ecore;bundle-version="[2.8.0,3.0.0)",
+ org.eclipse.emf.ecp.makeithappen.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.ui.view.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.ui.view;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.edit;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Import-Package: javax.annotation;version="1.0.0"
+Automatic-Module-Name: org.eclipse.emf.ecp.makeithappen.application.sample.e4
diff --git a/examples/org.eclipse.emf.ecp.makeithappen.application.sample.e4/pom.xml b/examples/org.eclipse.emf.ecp.makeithappen.application.sample.e4/pom.xml
index 4fd444b..0d5239d 100644
--- a/examples/org.eclipse.emf.ecp.makeithappen.application.sample.e4/pom.xml
+++ b/examples/org.eclipse.emf.ecp.makeithappen.application.sample.e4/pom.xml
@@ -7,7 +7,7 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-examples-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.examples/</relativePath>
   </parent>
 
@@ -15,7 +15,7 @@
   <packaging>eclipse-plugin</packaging>
 
   <groupId>org.eclipse.emf.ecp</groupId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
 
   <properties>
   	<jacoco.percentage.instruction>0.0</jacoco.percentage.instruction>
diff --git a/examples/org.eclipse.emf.ecp.makeithappen.application.sample.fx/META-INF/MANIFEST.MF b/examples/org.eclipse.emf.ecp.makeithappen.application.sample.fx/META-INF/MANIFEST.MF
index 56a7404..7bcb083 100644
--- a/examples/org.eclipse.emf.ecp.makeithappen.application.sample.fx/META-INF/MANIFEST.MF
+++ b/examples/org.eclipse.emf.ecp.makeithappen.application.sample.fx/META-INF/MANIFEST.MF
@@ -12,3 +12,4 @@
   org.eclipse.emf.ecp.makeithappen.model;bundle-version="[1.16.0,1.17.0)"
 Bundle-ActivationPolicy: lazy
 Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Automatic-Module-Name: org.eclipse.emf.ecp.makeithappen.application.sample.fx
diff --git a/examples/org.eclipse.emf.ecp.makeithappen.application.sample.rap.j2ee/META-INF/MANIFEST.MF b/examples/org.eclipse.emf.ecp.makeithappen.application.sample.rap.j2ee/META-INF/MANIFEST.MF
index f733196..83c6d60 100644
--- a/examples/org.eclipse.emf.ecp.makeithappen.application.sample.rap.j2ee/META-INF/MANIFEST.MF
+++ b/examples/org.eclipse.emf.ecp.makeithappen.application.sample.rap.j2ee/META-INF/MANIFEST.MF
@@ -2,15 +2,16 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: MakeItHappen Sample J2ee RAP
 Bundle-SymbolicName: org.eclipse.emf.ecp.makeithappen.application.sample.rap.j2ee
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
 Export-Package: org.eclipse.emf.ecp.makeithappen.application.sample.rap.j2ee;version="1.4.0";x-internal:=true
 Require-Bundle: org.eclipse.rap.rwt;bundle-version="[2.0.0,4.0.0)",
-  org.eclipse.emf.ecp.ui.view.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.makeithappen.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.rap.jface;bundle-version="[2.0.0,4.0.0)",
-  org.eclipse.emf.ecp.edit;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.rap.jface.databinding;bundle-version="[2.0.0,4.0.0)"
+ org.eclipse.emf.ecp.ui.view.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.makeithappen.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.rap.jface;bundle-version="[2.0.0,4.0.0)",
+ org.eclipse.emf.ecp.edit;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.rap.jface.databinding;bundle-version="[2.0.0,4.0.0)"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Service-Component: OSGI-INF/makeithappenApplicationConfiguration.xml
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.makeithappen.application.sample.rap.j2ee
diff --git a/examples/org.eclipse.emf.ecp.makeithappen.application.sample.rap.j2ee/makeithappen_RAP.target b/examples/org.eclipse.emf.ecp.makeithappen.application.sample.rap.j2ee/makeithappen_RAP.target
index 5311afa..510bae6 100644
--- a/examples/org.eclipse.emf.ecp.makeithappen.application.sample.rap.j2ee/makeithappen_RAP.target
+++ b/examples/org.eclipse.emf.ecp.makeithappen.application.sample.rap.j2ee/makeithappen_RAP.target
@@ -5,7 +5,7 @@
 <unit id="org.eclipse.emf.ecp.rap.util.feature.feature.group" version="0.0.0"/>
 <unit id="org.eclipse.emf.ecp.emfforms.runtime.feature.feature.group" version="0.0.0"/>
 <unit id="org.eclipse.emf.ecp.rap.sdk.feature.feature.group" version="0.0.0"/>
-<repository location="http://download.eclipse.org/ecp/releases/releases_target_116"/>
+<repository location="http://download.eclipse.org/ecp/releases/releases_target_117"/>
 </location>
 <location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="slicer" includeSource="true" type="InstallableUnit">
 <unit id="org.eclipse.rap.feature.feature.group" version="0.0.0"/>
diff --git a/examples/org.eclipse.emf.ecp.makeithappen.application.sample.rap.j2ee/pom.xml b/examples/org.eclipse.emf.ecp.makeithappen.application.sample.rap.j2ee/pom.xml
index f1fa01c..1e48073 100644
--- a/examples/org.eclipse.emf.ecp.makeithappen.application.sample.rap.j2ee/pom.xml
+++ b/examples/org.eclipse.emf.ecp.makeithappen.application.sample.rap.j2ee/pom.xml
@@ -7,7 +7,7 @@
   <parent>

     <groupId>org.eclipse.emf.ecp</groupId>

     <artifactId>ecp-examples-parent</artifactId>

-    <version>1.16.0-SNAPSHOT</version>

+    <version>1.17.0-SNAPSHOT</version>

     <relativePath>../../releng/org.eclipse.emf.ecp.releng.examples/</relativePath>

   </parent>

 

@@ -15,7 +15,7 @@
   <packaging>eclipse-plugin</packaging>

 

   <groupId>org.eclipse.emf.ecp</groupId>

-  <version>1.16.0-SNAPSHOT</version>

+  <version>1.17.0-SNAPSHOT</version>

 

   <properties>

   	<jacoco.percentage.instruction>0.0</jacoco.percentage.instruction>

diff --git a/examples/org.eclipse.emf.ecp.makeithappen.application.sample.rap/META-INF/MANIFEST.MF b/examples/org.eclipse.emf.ecp.makeithappen.application.sample.rap/META-INF/MANIFEST.MF
index f179551..23ea184 100644
--- a/examples/org.eclipse.emf.ecp.makeithappen.application.sample.rap/META-INF/MANIFEST.MF
+++ b/examples/org.eclipse.emf.ecp.makeithappen.application.sample.rap/META-INF/MANIFEST.MF
@@ -2,15 +2,16 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: MakeItHappen Sample RAP Application
 Bundle-SymbolicName: org.eclipse.emf.ecp.makeithappen.application.sample.rap;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Framework
 Export-Package: org.eclipse.emf.ecp.makeithappen.application.sample.rap;version="1.0.0";x-internal:=true
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.7.0,4.0.0)",
-  org.eclipse.emf.ecp.makeithappen.model.edit;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.ui.view.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.rap.ui.workbench;bundle-version="[2.3.0,4.0.0)",
-  org.eclipse.rap.jface;bundle-version="[2.3.0,4.0.0)",
-  org.eclipse.rap.ui;bundle-version="[2.3.0,4.0.0)",
-  org.eclipse.emf.ecp.edit;bundle-version="[1.16.0,1.17.0)"
+ org.eclipse.emf.ecp.makeithappen.model.edit;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.ui.view.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.rap.ui.workbench;bundle-version="[2.3.0,4.0.0)",
+ org.eclipse.rap.jface;bundle-version="[2.3.0,4.0.0)",
+ org.eclipse.rap.ui;bundle-version="[2.3.0,4.0.0)",
+ org.eclipse.emf.ecp.edit;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.makeithappen.application.sample.rap
diff --git a/examples/org.eclipse.emf.ecp.makeithappen.application.sample.rap/makeithappen_RAP.target b/examples/org.eclipse.emf.ecp.makeithappen.application.sample.rap/makeithappen_RAP.target
index 5311afa..510bae6 100644
--- a/examples/org.eclipse.emf.ecp.makeithappen.application.sample.rap/makeithappen_RAP.target
+++ b/examples/org.eclipse.emf.ecp.makeithappen.application.sample.rap/makeithappen_RAP.target
@@ -5,7 +5,7 @@
 <unit id="org.eclipse.emf.ecp.rap.util.feature.feature.group" version="0.0.0"/>
 <unit id="org.eclipse.emf.ecp.emfforms.runtime.feature.feature.group" version="0.0.0"/>
 <unit id="org.eclipse.emf.ecp.rap.sdk.feature.feature.group" version="0.0.0"/>
-<repository location="http://download.eclipse.org/ecp/releases/releases_target_116"/>
+<repository location="http://download.eclipse.org/ecp/releases/releases_target_117"/>
 </location>
 <location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="slicer" includeSource="true" type="InstallableUnit">
 <unit id="org.eclipse.rap.feature.feature.group" version="0.0.0"/>
diff --git a/examples/org.eclipse.emf.ecp.makeithappen.application.sample.rap/pom.xml b/examples/org.eclipse.emf.ecp.makeithappen.application.sample.rap/pom.xml
index 93755a2..95f77f4 100644
--- a/examples/org.eclipse.emf.ecp.makeithappen.application.sample.rap/pom.xml
+++ b/examples/org.eclipse.emf.ecp.makeithappen.application.sample.rap/pom.xml
@@ -7,7 +7,7 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-examples-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.examples/</relativePath>
   </parent>
 
@@ -15,7 +15,7 @@
   <packaging>eclipse-plugin</packaging>
 
   <groupId>org.eclipse.emf.ecp</groupId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
 
   <properties>
   	<jacoco.percentage.instruction>0.0</jacoco.percentage.instruction>
diff --git a/examples/org.eclipse.emf.ecp.makeithappen.feature/feature.xml b/examples/org.eclipse.emf.ecp.makeithappen.feature/feature.xml
index 071ad3a..ef53e6d 100644
--- a/examples/org.eclipse.emf.ecp.makeithappen.feature/feature.xml
+++ b/examples/org.eclipse.emf.ecp.makeithappen.feature/feature.xml
@@ -2,11 +2,11 @@
 <feature
       id="org.eclipse.emf.ecp.makeithappen.feature"
       label="EMF Forms MakeItHappen Example (Target Feature)"
-      version="1.16.0.qualifier"
+      version="1.17.0.qualifier"
       provider-name="%providerName"
       plugin="org.eclipse.emf.ecp.makeithappen.model"
       license-feature="org.eclipse.emf.ecp.license.feature"
-      license-feature-version="1.16.0.qualifier">
+      license-feature-version="1.17.0.qualifier">
 
    <description>
       %description
diff --git a/examples/org.eclipse.emf.ecp.makeithappen.feature/pom.xml b/examples/org.eclipse.emf.ecp.makeithappen.feature/pom.xml
index 7a710af..17a9967 100644
--- a/examples/org.eclipse.emf.ecp.makeithappen.feature/pom.xml
+++ b/examples/org.eclipse.emf.ecp.makeithappen.feature/pom.xml
@@ -6,11 +6,11 @@
 	<parent>
 		<groupId>org.eclipse.emf.ecp</groupId>
 		<artifactId>ecp-examples-parent</artifactId>
-		<version>1.16.0-SNAPSHOT</version>
+		<version>1.17.0-SNAPSHOT</version>
 		<relativePath>../../releng/org.eclipse.emf.ecp.releng.examples/</relativePath>
 	</parent>
 	<groupId>org.eclipse.emf.ecp</groupId>
 	<artifactId>org.eclipse.emf.ecp.makeithappen.feature</artifactId>
-	<version>1.16.0-SNAPSHOT</version>
+	<version>1.17.0-SNAPSHOT</version>
 	<packaging>eclipse-feature</packaging>
 </project>
diff --git a/examples/org.eclipse.emf.ecp.makeithappen.model.edit/META-INF/MANIFEST.MF b/examples/org.eclipse.emf.ecp.makeithappen.model.edit/META-INF/MANIFEST.MF
index 14f715d..875dd64 100644
--- a/examples/org.eclipse.emf.ecp.makeithappen.model.edit/META-INF/MANIFEST.MF
+++ b/examples/org.eclipse.emf.ecp.makeithappen.model.edit/META-INF/MANIFEST.MF
@@ -2,14 +2,15 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.emf.ecp.makeithappen.model.edit;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-ClassPath: .
 Bundle-Activator: org.eclipse.emf.ecp.makeithappen.model.task.provider.TaskEditPlugin$Implementation
 Bundle-Vendor: Eclipse Modeling Project
 Bundle-Localization: plugin
-Export-Package: org.eclipse.emf.ecp.makeithappen.model.task.provider;version="1.16.0"
+Export-Package: org.eclipse.emf.ecp.makeithappen.model.task.provider;version="1.17.0"
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.5.0,4.0.0)",
-  org.eclipse.emf.ecp.makeithappen.model;bundle-version="[1.16.0,1.17.0)";visibility:=reexport,
-  org.eclipse.emf.edit;bundle-version="[2.5.0,3.0.0)";visibility:=reexport
+ org.eclipse.emf.ecp.makeithappen.model;bundle-version="[1.17.0,1.18.0]";visibility:=reexport,
+ org.eclipse.emf.edit;bundle-version="[2.5.0,3.0.0)";visibility:=reexport
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.makeithappen.model.edit
diff --git a/examples/org.eclipse.emf.ecp.makeithappen.model.edit/pom.xml b/examples/org.eclipse.emf.ecp.makeithappen.model.edit/pom.xml
index e57bc05..725cad8 100644
--- a/examples/org.eclipse.emf.ecp.makeithappen.model.edit/pom.xml
+++ b/examples/org.eclipse.emf.ecp.makeithappen.model.edit/pom.xml
@@ -7,7 +7,7 @@
   <parent>

     <groupId>org.eclipse.emf.ecp</groupId>

     <artifactId>ecp-examples-parent</artifactId>

-    <version>1.16.0-SNAPSHOT</version>

+    <version>1.17.0-SNAPSHOT</version>

     <relativePath>../../releng/org.eclipse.emf.ecp.releng.examples/</relativePath>

   </parent>

 

@@ -15,5 +15,5 @@
   <packaging>eclipse-plugin</packaging>

 

   <groupId>org.eclipse.emf.ecp</groupId>

-  <version>1.16.0-SNAPSHOT</version>

+  <version>1.17.0-SNAPSHOT</version>

 </project>

diff --git a/examples/org.eclipse.emf.ecp.makeithappen.model.viewmodel/META-INF/MANIFEST.MF b/examples/org.eclipse.emf.ecp.makeithappen.model.viewmodel/META-INF/MANIFEST.MF
index 66eace6..429e4fd 100644
--- a/examples/org.eclipse.emf.ecp.makeithappen.model.viewmodel/META-INF/MANIFEST.MF
+++ b/examples/org.eclipse.emf.ecp.makeithappen.model.viewmodel/META-INF/MANIFEST.MF
@@ -2,6 +2,6 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: org.eclipse.emf.ecp.makeithappen.model.viewmodel
 Bundle-SymbolicName: org.eclipse.emf.ecp.makeithappen.model.viewmodel;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Require-Bundle: org.eclipse.emf.ecp.view.model.provider.xmi;bundle-version="[1.16.0,1.17.0)"
+Require-Bundle: org.eclipse.emf.ecp.view.model.provider.xmi;bundle-version="[1.17.0,1.18.0)"
diff --git a/examples/org.eclipse.emf.ecp.makeithappen.model.viewmodel/pom.xml b/examples/org.eclipse.emf.ecp.makeithappen.model.viewmodel/pom.xml
index 9c16ff1..366b163 100644
--- a/examples/org.eclipse.emf.ecp.makeithappen.model.viewmodel/pom.xml
+++ b/examples/org.eclipse.emf.ecp.makeithappen.model.viewmodel/pom.xml
@@ -7,7 +7,7 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-examples-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.examples/</relativePath>
   </parent>
 
@@ -15,5 +15,5 @@
   <packaging>eclipse-plugin</packaging>
 
   <groupId>org.eclipse.emf.ecp</groupId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
 </project>
diff --git a/examples/org.eclipse.emf.ecp.makeithappen.model.viewmodel/viewmodels/User.view b/examples/org.eclipse.emf.ecp.makeithappen.model.viewmodel/viewmodels/User.view
index 2d4ac30..be4132f 100644
--- a/examples/org.eclipse.emf.ecp.makeithappen.model.viewmodel/viewmodels/User.view
+++ b/examples/org.eclipse.emf.ecp.makeithappen.model.viewmodel/viewmodels/User.view
@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="ASCII"?>

-<org.eclipse.emf.ecp.view.model:View xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:org.eclipse.emf.ecp.view.group.model="http://org/eclipse/emf/ecp/view/group/model" xmlns:org.eclipse.emf.ecp.view.horizontal.model="http://org/eclipse/emf/ecp/view/horizontal/model" xmlns:org.eclipse.emf.ecp.view.model="http://org/eclipse/emf/ecp/view/model/170" xmi:id="_krXaMEWAEeWfKJaajyNdyA" ecorePath="/org.eclipse.emf.ecp.makeithappen.model/model/task.ecore">

+<org.eclipse.emf.ecp.view.model:View xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:org.eclipse.emf.ecp.view.group.model="http://org/eclipse/emf/ecp/view/group/model" xmlns:org.eclipse.emf.ecp.view.horizontal.model="http://org/eclipse/emf/ecp/view/horizontal/model" xmlns:org.eclipse.emf.ecp.view.model="http://org/eclipse/emf/ecp/view/model/1170" xmi:id="_krXaMEWAEeWfKJaajyNdyA">

+  <ecorePaths>/org.eclipse.emf.ecp.makeithappen.model/model/task.ecore</ecorePaths>

   <rootEClass href="http://eclipse/org/emf/ecp/makeithappen/model/task#//User"/>

   <children xsi:type="org.eclipse.emf.ecp.view.horizontal.model:HorizontalLayout" xmi:id="_krXaMUWAEeWfKJaajyNdyA">

     <children xsi:type="org.eclipse.emf.ecp.view.group.model:Group" xmi:id="_krXaMkWAEeWfKJaajyNdyA" name="%Primary">

diff --git a/examples/org.eclipse.emf.ecp.makeithappen.model/META-INF/MANIFEST.MF b/examples/org.eclipse.emf.ecp.makeithappen.model/META-INF/MANIFEST.MF
index e27c4b4..5399f30 100644
--- a/examples/org.eclipse.emf.ecp.makeithappen.model/META-INF/MANIFEST.MF
+++ b/examples/org.eclipse.emf.ecp.makeithappen.model/META-INF/MANIFEST.MF
@@ -2,14 +2,15 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.emf.ecp.makeithappen.model;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-ClassPath: .
 Bundle-Vendor: Eclipse Modeling Project
 Bundle-Localization: plugin
-Export-Package: org.eclipse.emf.ecp.makeithappen.model.task;version="1.16.0",
- org.eclipse.emf.ecp.makeithappen.model.task.impl;version="1.16.0",
- org.eclipse.emf.ecp.makeithappen.model.task.util;version="1.16.0"
+Export-Package: org.eclipse.emf.ecp.makeithappen.model.task;version="1.17.0",
+ org.eclipse.emf.ecp.makeithappen.model.task.impl;version="1.17.0",
+ org.eclipse.emf.ecp.makeithappen.model.task.util;version="1.17.0"
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.5.0,4.0.0)",
  org.eclipse.emf.ecore;bundle-version="[2.5.0,3.0.0)";visibility:=reexport
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.makeithappen.model
diff --git a/examples/org.eclipse.emf.ecp.makeithappen.model/pom.xml b/examples/org.eclipse.emf.ecp.makeithappen.model/pom.xml
index c32b3ef..219c57a 100644
--- a/examples/org.eclipse.emf.ecp.makeithappen.model/pom.xml
+++ b/examples/org.eclipse.emf.ecp.makeithappen.model/pom.xml
@@ -7,7 +7,7 @@
   <parent>

     <groupId>org.eclipse.emf.ecp</groupId>

     <artifactId>ecp-examples-parent</artifactId>

-    <version>1.16.0-SNAPSHOT</version>

+    <version>1.17.0-SNAPSHOT</version>

     <relativePath>../../releng/org.eclipse.emf.ecp.releng.examples/</relativePath>

   </parent>

 

@@ -15,5 +15,5 @@
   <packaging>eclipse-plugin</packaging>

 

   <groupId>org.eclipse.emf.ecp</groupId>

-  <version>1.16.0-SNAPSHOT</version>

+  <version>1.17.0-SNAPSHOT</version>

 </project>

diff --git a/examples/org.eclipse.emf.ecp.makeithappen.view.email.renderer/META-INF/MANIFEST.MF b/examples/org.eclipse.emf.ecp.makeithappen.view.email.renderer/META-INF/MANIFEST.MF
index a0af10d..8f52d41 100644
--- a/examples/org.eclipse.emf.ecp.makeithappen.view.email.renderer/META-INF/MANIFEST.MF
+++ b/examples/org.eclipse.emf.ecp.makeithappen.view.email.renderer/META-INF/MANIFEST.MF
@@ -2,30 +2,31 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: EmailControl
 Bundle-SymbolicName: org.eclipse.emf.ecp.makeithappen.view.email.renderer;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emf.ecp.makeithappen.ui.emailcontrol;version="1.16.0"
-Require-Bundle: org.eclipse.emf.ecp.edit.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.ui.view;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.makeithappen.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.ui.view.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.core.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.model.common;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.template.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.edit;bundle-version="[2.8.0,3.0.0)",
-  org.eclipse.core.databinding.property;bundle-version="[1.4.0,2.0.0)",
-  org.eclipse.core.runtime;bundle-version="[3.8.0,4.0.0)",
-  org.eclipse.emfforms.swt.core;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services.editsupport;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.databinding;bundle-version="[1.3.0,2.0.0)",
-  org.eclipse.emfforms.swt.core.di;bundle-version="[1.16.0,1.17.0)"
+Export-Package: org.eclipse.emf.ecp.makeithappen.ui.emailcontrol;version="1.17.0"
+Require-Bundle: org.eclipse.emf.ecp.edit.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.ui.view;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.makeithappen.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.ui.view.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.core.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.model.common;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.template.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.edit;bundle-version="[2.8.0,3.0.0)",
+ org.eclipse.core.databinding.property;bundle-version="[1.4.0,2.0.0)",
+ org.eclipse.core.runtime;bundle-version="[3.8.0,4.0.0)",
+ org.eclipse.emfforms.swt.core;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services.editsupport;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.databinding;bundle-version="[1.3.0,2.0.0)",
+ org.eclipse.emfforms.swt.core.di;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Import-Package: javax.inject;version="1.0.0",
-  org.eclipse.emfforms.spi.common.report;version="[1.16.0,1.17.0)",
-  org.eclipse.jface.layout;version="0.0.0",
-  org.eclipse.swt;version="0.0.0",
-  org.eclipse.swt.events;version="0.0.0",
-  org.eclipse.swt.widgets;version="0.0.0"
+ org.eclipse.emfforms.spi.common.report;version="[1.17.0,1.18.0]",
+ org.eclipse.jface.layout;version="0.0.0",
+ org.eclipse.swt;version="0.0.0",
+ org.eclipse.swt.events;version="0.0.0",
+ org.eclipse.swt.widgets;version="0.0.0"
 Service-Component: OSGI-INF/emailRendererService.xml
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.makeithappen.view.email.renderer
diff --git a/examples/org.eclipse.emf.ecp.makeithappen.view.email.renderer/pom.xml b/examples/org.eclipse.emf.ecp.makeithappen.view.email.renderer/pom.xml
index 72a85bb..25e2c48 100644
--- a/examples/org.eclipse.emf.ecp.makeithappen.view.email.renderer/pom.xml
+++ b/examples/org.eclipse.emf.ecp.makeithappen.view.email.renderer/pom.xml
@@ -7,7 +7,7 @@
   <parent>

     <groupId>org.eclipse.emf.ecp</groupId>

     <artifactId>ecp-examples-parent</artifactId>

-    <version>1.16.0-SNAPSHOT</version>

+    <version>1.17.0-SNAPSHOT</version>

     <relativePath>../../releng/org.eclipse.emf.ecp.releng.examples/</relativePath>

   </parent>

 

@@ -15,5 +15,5 @@
   <packaging>eclipse-plugin</packaging>

 

   <groupId>org.eclipse.emf.ecp</groupId>

-  <version>1.16.0-SNAPSHOT</version>

+  <version>1.17.0-SNAPSHOT</version>

 </project>

diff --git a/examples/org.eclipse.emf.ecp.makeithappen.view.group.renderer/META-INF/MANIFEST.MF b/examples/org.eclipse.emf.ecp.makeithappen.view.group.renderer/META-INF/MANIFEST.MF
index 36b1056..9799a8f 100644
--- a/examples/org.eclipse.emf.ecp.makeithappen.view.group.renderer/META-INF/MANIFEST.MF
+++ b/examples/org.eclipse.emf.ecp.makeithappen.view.group.renderer/META-INF/MANIFEST.MF
@@ -2,30 +2,31 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Expandbar Group Renderer
 Bundle-SymbolicName: org.eclipse.emf.ecp.makeithappen.view.group.renderer;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-ClassPath: lib/org.eclipse.nebula.widgets.pgroup_1.0.0.201310241250.jar,
   .
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emf.ecp.makeithappen.view.group.swt.pgroup;version="1.16.0",
-  org.eclipse.nebula.widgets.pgroup;version="1.0.0",
-  org.eclipse.nebula.widgets.pgroup.internal;version="1.0.0";x-internal:=true
-Require-Bundle: org.eclipse.emf.ecp.view.group.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.ui.view.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.edit;bundle-version="[2.5.0,3.0.0)",
-  org.eclipse.emf.ecp.edit;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.core.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.swt.core;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.swt.core.di;bundle-version="[1.16.0,1.17.0)"
+Export-Package: org.eclipse.emf.ecp.makeithappen.view.group.swt.pgroup;version="1.17.0",
+ org.eclipse.nebula.widgets.pgroup;version="1.0.0",
+ org.eclipse.nebula.widgets.pgroup.internal;version="1.0.0";x-internal:=true
+Require-Bundle: org.eclipse.emf.ecp.view.group.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.ui.view.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.edit;bundle-version="[2.5.0,3.0.0)",
+ org.eclipse.emf.ecp.edit;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.core.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.swt.core;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.swt.core.di;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.7
 Service-Component: OSGI-INF/pGroupRendererService.xml
 Bundle-ActivationPolicy: lazy
 Import-Package: javax.inject;version="1.0.0",
-  org.eclipse.emfforms.spi.common.report;version="[1.16.0,1.17.0)",
-  org.eclipse.swt;version="0.0.0",
-  org.eclipse.swt.events;version="0.0.0",
-  org.eclipse.swt.graphics;version="0.0.0",
-  org.eclipse.swt.internal;version="0.0.0",
-  org.eclipse.swt.layout;version="0.0.0",
-  org.eclipse.swt.widgets;version="0.0.0",
-  org.osgi.framework;version="1.8.0"
+ org.eclipse.emfforms.spi.common.report;version="[1.17.0,1.18.0]",
+ org.eclipse.swt;version="0.0.0",
+ org.eclipse.swt.events;version="0.0.0",
+ org.eclipse.swt.graphics;version="0.0.0",
+ org.eclipse.swt.internal;version="0.0.0",
+ org.eclipse.swt.layout;version="0.0.0",
+ org.eclipse.swt.widgets;version="0.0.0",
+ org.osgi.framework;version="1.8.0"
+Automatic-Module-Name: org.eclipse.emf.ecp.makeithappen.view.group.renderer
diff --git a/examples/org.eclipse.emf.ecp.makeithappen.view.group.renderer/pom.xml b/examples/org.eclipse.emf.ecp.makeithappen.view.group.renderer/pom.xml
index 60a3f11..7d8cdbe 100644
--- a/examples/org.eclipse.emf.ecp.makeithappen.view.group.renderer/pom.xml
+++ b/examples/org.eclipse.emf.ecp.makeithappen.view.group.renderer/pom.xml
@@ -7,7 +7,7 @@
   <parent>

     <groupId>org.eclipse.emf.ecp</groupId>

     <artifactId>ecp-examples-parent</artifactId>

-    <version>1.16.0-SNAPSHOT</version>

+    <version>1.17.0-SNAPSHOT</version>

     <relativePath>../../releng/org.eclipse.emf.ecp.releng.examples/</relativePath>

   </parent>

 

@@ -15,5 +15,5 @@
   <packaging>eclipse-plugin</packaging>

 

   <groupId>org.eclipse.emf.ecp</groupId>

-  <version>1.16.0-SNAPSHOT</version>

+  <version>1.17.0-SNAPSHOT</version>

 </project>

diff --git a/examples/org.eclipse.emf.ecp.makeithappen.wizards/META-INF/MANIFEST.MF b/examples/org.eclipse.emf.ecp.makeithappen.wizards/META-INF/MANIFEST.MF
index 6a1d2b0..1e37050 100644
--- a/examples/org.eclipse.emf.ecp.makeithappen.wizards/META-INF/MANIFEST.MF
+++ b/examples/org.eclipse.emf.ecp.makeithappen.wizards/META-INF/MANIFEST.MF
@@ -2,10 +2,10 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Make It Happen Examples
 Bundle-SymbolicName: org.eclipse.emf.ecp.makeithappen.wizards;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Activator: org.eclipse.emf.ecp.makeithappen.internal.wizards.Activator
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emf.ecp.makeithappen.internal.wizards;version="1.16.0";x-internal:=true
+Export-Package: org.eclipse.emf.ecp.makeithappen.internal.wizards;version="1.17.0";x-internal:=true
 Require-Bundle: org.eclipse.ui;bundle-version="[3.5.0,4.0.0)",
  org.eclipse.core.runtime;bundle-version="[3.5.0,4.0.0)",
  org.eclipse.emf.common.ui;bundle-version="[2.5.0,3.0.0)",
@@ -15,3 +15,4 @@
  org.eclipse.emf.common;bundle-version="[2.9.0,3.0.0)"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.makeithappen.wizards
diff --git a/examples/org.eclipse.emf.ecp.makeithappen.wizards/pom.xml b/examples/org.eclipse.emf.ecp.makeithappen.wizards/pom.xml
index 1bc9c4a..620a930 100644
--- a/examples/org.eclipse.emf.ecp.makeithappen.wizards/pom.xml
+++ b/examples/org.eclipse.emf.ecp.makeithappen.wizards/pom.xml
@@ -6,7 +6,7 @@
 	<parent>

 		<groupId>org.eclipse.emf.ecp</groupId>

 		<artifactId>ecp-examples-parent</artifactId>

-		<version>1.16.0-SNAPSHOT</version>

+		<version>1.17.0-SNAPSHOT</version>

 		<relativePath>../../releng/org.eclipse.emf.ecp.releng.examples/</relativePath>

 	</parent>

 

@@ -14,7 +14,7 @@
 	<packaging>eclipse-plugin</packaging>

 

 	<groupId>org.eclipse.emf.ecp</groupId>

-	<version>1.16.0-SNAPSHOT</version>

+	<version>1.17.0-SNAPSHOT</version>

 	<build>

 		<plugins>

 			<plugin>

@@ -33,10 +33,11 @@
 								<resource>

 									<directory>../org.eclipse.emf.ecp.makeithappen.application.sample.e3</directory>

 									<excludes>

-          								<exclude>bin/</exclude>

-          								<exclude>target/</exclude>

-          								<exclude>**/pom.xml</exclude>

-        							</excludes>

+										<exclude>bin/</exclude>

+										<exclude>target/</exclude>

+										<exclude>**/.checkstyle</exclude>

+										<exclude>**/pom.xml</exclude>

+									</excludes>

 									<filtering>true</filtering>

 								</resource>

 							</resources>

@@ -54,10 +55,11 @@
 								<resource>

 									<directory>../org.eclipse.emf.ecp.makeithappen.application.sample.e4</directory>

 									<excludes>

-          								<exclude>bin/</exclude>

-          								<exclude>target/</exclude>

-          								<exclude>**/pom.xml</exclude>

-        							</excludes>

+										<exclude>bin/</exclude>

+										<exclude>target/</exclude>

+										<exclude>**/.checkstyle</exclude>

+										<exclude>**/pom.xml</exclude>

+									</excludes>

 									<filtering>true</filtering>

 								</resource>

 							</resources>

@@ -76,10 +78,11 @@
 								<resource>

 									<directory>../org.eclipse.emf.ecp.makeithappen.application.sample.fx</directory>

 									<excludes>

-          								<exclude>bin/</exclude>

-          								<exclude>target/</exclude>

-          								<exclude>**/pom.xml</exclude>

-        							</excludes>

+										<exclude>bin/</exclude>

+										<exclude>target/</exclude>

+										<exclude>**/.checkstyle</exclude>

+										<exclude>**/pom.xml</exclude>

+									</excludes>

 									<filtering>true</filtering>

 								</resource>

 							</resources>

@@ -98,10 +101,11 @@
 								<resource>

 									<directory>../org.eclipse.emf.ecp.makeithappen.application.sample.rap</directory>

 									<excludes>

-          								<exclude>bin/</exclude>

-          								<exclude>target/</exclude>

-          								<exclude>**/pom.xml</exclude>

-        							</excludes>

+										<exclude>bin/</exclude>

+										<exclude>target/</exclude>

+										<exclude>**/.checkstyle</exclude>

+										<exclude>**/pom.xml</exclude>

+									</excludes>

 									<filtering>true</filtering>

 								</resource>

 							</resources>

@@ -119,10 +123,11 @@
 								<resource>

 									<directory>../org.eclipse.emf.ecp.makeithappen.application.sample.rap.j2ee</directory>

 									<excludes>

-          								<exclude>bin/</exclude>

-          								<exclude>target/</exclude>

-          								<exclude>**/pom.xml</exclude>

-        							</excludes>

+										<exclude>bin/</exclude>

+										<exclude>target/</exclude>

+										<exclude>**/.checkstyle</exclude>

+										<exclude>**/pom.xml</exclude>

+									</excludes>

 									<filtering>true</filtering>

 								</resource>

 							</resources>

@@ -140,10 +145,11 @@
 								<resource>

 									<directory>../org.eclipse.emf.ecp.makeithappen.model</directory>

 									<excludes>

-          								<exclude>bin/</exclude>

-          								<exclude>target/</exclude>

-          								<exclude>**/pom.xml</exclude>

-        							</excludes>

+										<exclude>bin/</exclude>

+										<exclude>target/</exclude>

+										<exclude>**/.checkstyle</exclude>

+										<exclude>**/pom.xml</exclude>

+									</excludes>

 									<filtering>true</filtering>

 								</resource>

 							</resources>

@@ -161,10 +167,11 @@
 								<resource>

 									<directory>../org.eclipse.emf.ecp.makeithappen.model.edit</directory>

 									<excludes>

-          								<exclude>bin/</exclude>

-          								<exclude>target/</exclude>

-          								<exclude>**/pom.xml</exclude>

-        							</excludes>

+										<exclude>bin/</exclude>

+										<exclude>target/</exclude>

+										<exclude>**/.checkstyle</exclude>

+										<exclude>**/pom.xml</exclude>

+									</excludes>

 									<filtering>true</filtering>

 								</resource>

 							</resources>

@@ -182,10 +189,11 @@
 								<resource>

 									<directory>../org.eclipse.emf.ecp.makeithappen.model.viewmodel</directory>

 									<excludes>

-          								<exclude>bin/</exclude>

-          								<exclude>target/</exclude>

-          								<exclude>**/pom.xml</exclude>

-        							</excludes>

+										<exclude>bin/</exclude>

+										<exclude>target/</exclude>

+										<exclude>**/.checkstyle</exclude>

+										<exclude>**/pom.xml</exclude>

+									</excludes>

 									<filtering>true</filtering>

 								</resource>

 							</resources>

@@ -203,10 +211,11 @@
 								<resource>

 									<directory>../org.eclipse.emf.ecp.makeithappen.view.email.renderer</directory>

 									<excludes>

-          								<exclude>bin/</exclude>

-          								<exclude>target/</exclude>

-          								<exclude>**/pom.xml</exclude>

-        							</excludes>

+										<exclude>bin/</exclude>

+										<exclude>target/</exclude>

+										<exclude>**/.checkstyle</exclude>

+										<exclude>**/pom.xml</exclude>

+									</excludes>

 									<filtering>true</filtering>

 								</resource>

 							</resources>

@@ -224,11 +233,13 @@
 								<resource>

 									<directory>../org.eclipse.emf.ecp.makeithappen.view.group.renderer</directory>

 									<excludes>

-          								<exclude>bin/</exclude>

-          								<exclude>target/</exclude>

-          								<exclude>**/pom.xml</exclude>

-        							</excludes>

-        							<!-- Setting filtering to true will cause maven to look at the jar file and replace stuff. The result is an invalid jar -->

+										<exclude>bin/</exclude>

+										<exclude>target/</exclude>

+										<exclude>**/.checkstyle</exclude>

+										<exclude>**/pom.xml</exclude>

+									</excludes>

+									<!-- Setting filtering to true will cause maven to look at the jar 

+										file and replace stuff. The result is an invalid jar -->

 									<filtering>false</filtering>

 								</resource>

 							</resources>

@@ -236,6 +247,34 @@
 					</execution>

 				</executions>

 			</plugin>

+			<plugin>

+				<groupId>com.google.code.maven-replacer-plugin</groupId>

+				<artifactId>replacer</artifactId>

+				<version>1.5.3</version>

+				<executions>

+					<execution>

+						<phase>compile</phase>

+						<goals>

+							<goal>replace</goal>

+						</goals>

+					</execution>

+				</executions>

+				<configuration>

+					<basedir>${project.basedir}/examples</basedir>

+					<includes>

+						<include>**/.project</include>

+					</includes>

+					<regexFlags>

+						<regexFlag>MULTILINE</regexFlag>

+					</regexFlags>

+					<replacements>

+						<replacement>

+							<token>\n\t+&lt;buildCommand&gt;\s*&lt;name&gt;net.sf.eclipsecs.core.CheckstyleBuilder&lt;/name&gt;\s*&lt;arguments&gt;\s*&lt;/arguments&gt;\s*&lt;/buildCommand&gt;</token>

+							<value/>

+						</replacement>

+					</replacements>

+				</configuration>

+			</plugin>

 		</plugins>

 	</build>

 </project>

diff --git a/examples/org.eclipse.emfforms.coffee.feature/.project b/examples/org.eclipse.emfforms.coffee.feature/.project
new file mode 100644
index 0000000..e26bbf6
--- /dev/null
+++ b/examples/org.eclipse.emfforms.coffee.feature/.project
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.emfforms.coffee.feature</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.pde.FeatureBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.FeatureNature</nature>
+	</natures>
+</projectDescription>
diff --git a/examples/org.eclipse.emfforms.coffee.feature/build.properties b/examples/org.eclipse.emfforms.coffee.feature/build.properties
new file mode 100644
index 0000000..b3a611b
--- /dev/null
+++ b/examples/org.eclipse.emfforms.coffee.feature/build.properties
@@ -0,0 +1,2 @@
+bin.includes = feature.xml,\
+               feature.properties
diff --git a/examples/org.eclipse.emfforms.coffee.feature/feature.properties b/examples/org.eclipse.emfforms.coffee.feature/feature.properties
new file mode 100644
index 0000000..1e41291
--- /dev/null
+++ b/examples/org.eclipse.emfforms.coffee.feature/feature.properties
@@ -0,0 +1,15 @@
+# Copyright (c) 2011-2014 Eclipsesource Munich GmbH 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
+
+description = EMF Forms MakeItHappen Feature. This Feature contains a sample model and two renderers.
+
+copyright = Copyright (c) 2011, 2014 Eclipsesource Munich GmbH and others.\n\
+All rights reserved. This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License v1.0\n\
+which accompanies this distribution, and is available at\n\
+http://www.eclipse.org/legal/epl-v10.html\n\
+
+licenseURL = 
\ No newline at end of file
diff --git a/examples/org.eclipse.emfforms.coffee.feature/feature.xml b/examples/org.eclipse.emfforms.coffee.feature/feature.xml
new file mode 100644
index 0000000..5cf6f63
--- /dev/null
+++ b/examples/org.eclipse.emfforms.coffee.feature/feature.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<feature
+      id="org.eclipse.emfforms.coffee.feature"
+      label="Coffee Example Feature"
+      version="1.17.0.qualifier"
+      provider-name="%providerName"
+      plugin="org.eclipse.emfforms.coffee.model"
+      license-feature="org.eclipse.emf.ecp.license.feature"
+      license-feature-version="1.17.0.qualifier">
+
+   <description>
+      %description
+   </description>
+
+   <copyright url="%copyrightURL">
+      %copyright
+   </copyright>
+
+   <license url="%licenseURL">
+      %license
+   </license>
+
+   <plugin
+         id="org.eclipse.emfforms.coffee.model.edit"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="org.eclipse.emfforms.coffee.model"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="org.eclipse.emfforms.coffee.model.viewmodel"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"/>
+
+</feature>
diff --git a/examples/org.eclipse.emfforms.coffee.feature/pom.xml b/examples/org.eclipse.emfforms.coffee.feature/pom.xml
new file mode 100644
index 0000000..264cf4d
--- /dev/null
+++ b/examples/org.eclipse.emfforms.coffee.feature/pom.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
+	xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+	<modelVersion>4.0.0</modelVersion>
+	<parent>
+		<groupId>org.eclipse.emf.ecp</groupId>
+		<artifactId>ecp-examples-parent</artifactId>
+		<version>1.17.0-SNAPSHOT</version>
+		<relativePath>../../releng/org.eclipse.emf.ecp.releng.examples/</relativePath>
+	</parent>
+	<groupId>org.eclipse.emf.ecp</groupId>
+	<artifactId>org.eclipse.emfforms.coffee.feature</artifactId>
+	<version>1.17.0-SNAPSHOT</version>
+	<packaging>eclipse-feature</packaging>
+	
+	   <build>
+		<plugins>
+			<plugin>
+				<groupId>org.eclipse.tycho.extras</groupId>
+				<artifactId>tycho-source-feature-plugin</artifactId>
+				<version>${tycho-version}</version>
+				<executions>
+					<execution>
+						<id>generate-source-feature</id>
+						<goals>
+							<goal>source-feature</goal>
+						</goals>
+					</execution>
+				</executions>
+				<configuration>
+					<excludes>
+						<plugin id="org.eclipse.emfforms.coffee.model.viewmodel"/>
+					</excludes>
+				</configuration>
+			</plugin>
+		</plugins>
+	</build>
+</project>
diff --git a/examples/org.eclipse.emfforms.coffee.model.edit/.checkstyle b/examples/org.eclipse.emfforms.coffee.model.edit/.checkstyle
new file mode 100644
index 0000000..dccf8af
--- /dev/null
+++ b/examples/org.eclipse.emfforms.coffee.model.edit/.checkstyle
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<fileset-config file-format-version="1.2.0" simple-config="false" sync-formatter="false">
+  <local-check-config name="ESMCheckstyle" location="/org.eclipse.emf.ecp.makeithappen.model/checkstyle/esmCheckstyle.xml" type="project" description="">
+    <additional-data name="protect-config-file" value="false"/>
+  </local-check-config>
+  <fileset name="Java Files" enabled="true" check-config-name="ESMCheckstyle" local="true">
+    <file-match-pattern match-pattern=".java" include-pattern="true"/>
+  </fileset>
+</fileset-config>
diff --git a/examples/org.eclipse.emfforms.coffee.model.edit/.classpath b/examples/org.eclipse.emfforms.coffee.model.edit/.classpath
new file mode 100644
index 0000000..121e527
--- /dev/null
+++ b/examples/org.eclipse.emfforms.coffee.model.edit/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/examples/org.eclipse.emfforms.coffee.model.edit/.project b/examples/org.eclipse.emfforms.coffee.model.edit/.project
new file mode 100644
index 0000000..8f04f62
--- /dev/null
+++ b/examples/org.eclipse.emfforms.coffee.model.edit/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.emfforms.coffee.model.edit</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>net.sf.eclipsecs.core.CheckstyleBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>net.sf.eclipsecs.core.CheckstyleNature</nature>
+	</natures>
+</projectDescription>
diff --git a/examples/org.eclipse.emfforms.coffee.model.edit/.settings/org.eclipse.core.resources.prefs b/examples/org.eclipse.emfforms.coffee.model.edit/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..f548abb
--- /dev/null
+++ b/examples/org.eclipse.emfforms.coffee.model.edit/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,6 @@
+eclipse.preferences.version=1
+
+encoding//model/etypes.ecore=UTF-8
+
+
+encoding/<project>=UTF-8
diff --git a/examples/org.eclipse.emfforms.coffee.model.edit/.settings/org.eclipse.core.runtime.prefs b/examples/org.eclipse.emfforms.coffee.model.edit/.settings/org.eclipse.core.runtime.prefs
new file mode 100644
index 0000000..5a0ad22
--- /dev/null
+++ b/examples/org.eclipse.emfforms.coffee.model.edit/.settings/org.eclipse.core.runtime.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+line.separator=\n
diff --git a/examples/org.eclipse.emfforms.coffee.model.edit/.settings/org.eclipse.jdt.core.prefs b/examples/org.eclipse.emfforms.coffee.model.edit/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..66c53c1
--- /dev/null
+++ b/examples/org.eclipse.emfforms.coffee.model.edit/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,419 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.builder.cleanOutputFolder=clean
+org.eclipse.jdt.core.builder.duplicateResourceTask=warning
+org.eclipse.jdt.core.builder.invalidClasspath=abort
+org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
+org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=
+org.eclipse.jdt.core.circularClasspath=error
+org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
+org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
+org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error
+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.annotation.inheritNullAnnotations=disabled
+org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
+org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
+org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
+org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.6
+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.doc.comment.support=enabled
+org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
+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=enabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
+org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=disabled
+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.invalidJavadoc=warning
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=disabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=public
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
+org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=warning
+org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
+org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=public
+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=warning
+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.nonnullParameterAnnotationDropped=warning
+org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
+org.eclipse.jdt.core.compiler.problem.nullReference=warning
+org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
+org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
+org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
+org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
+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.syntacticNullAnalysisForFields=disabled
+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.unclosedCloseable=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=warning
+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.unusedTypeParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.source=1.6
+org.eclipse.jdt.core.compiler.taskCaseSensitive=enabled
+org.eclipse.jdt.core.compiler.taskPriorities=NORMAL,HIGH,HIGH,LOW,LOW,LOW,LOW,LOW,NORMAL
+org.eclipse.jdt.core.compiler.taskTags=TODO,FIXME,XXX,PERF,MEM,POLISH,@generated NOT,@ADDED,APITODO
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+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_binary_expression=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_method_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=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_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=false
+org.eclipse.jdt.core.formatter.comment.format_block_comments=true
+org.eclipse.jdt.core.formatter.comment.format_header=true
+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=do not 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=1
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=1
+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=do not 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_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_binary_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_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_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_unary_operator=do not 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_binary_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_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_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_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=false
+org.eclipse.jdt.core.formatter.join_wrapped_lines=false
+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=120
+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_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
+org.eclipse.jdt.core.incompatibleJDKLevel=ignore
+org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/examples/org.eclipse.emfforms.coffee.model.edit/.settings/org.eclipse.jdt.launching.prefs b/examples/org.eclipse.emfforms.coffee.model.edit/.settings/org.eclipse.jdt.launching.prefs
new file mode 100644
index 0000000..3bb2352
--- /dev/null
+++ b/examples/org.eclipse.emfforms.coffee.model.edit/.settings/org.eclipse.jdt.launching.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.launching.PREF_STRICTLY_COMPATIBLE_JRE_NOT_AVAILABLE=ignore
diff --git a/examples/org.eclipse.emfforms.coffee.model.edit/.settings/org.eclipse.jdt.ui.prefs b/examples/org.eclipse.emfforms.coffee.model.edit/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 0000000..8bc4bb4
--- /dev/null
+++ b/examples/org.eclipse.emfforms.coffee.model.edit/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,127 @@
+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_functional_interfaces=false
+cleanup.convert_to_enhanced_for_loop=false
+cleanup.correct_indentation=false
+cleanup.format_source_code=true
+cleanup.format_source_code_changes_only=false
+cleanup.insert_inferred_type_arguments=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=true
+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=true
+cleanup.remove_redundant_type_arguments=true
+cleanup.remove_trailing_whitespaces=true
+cleanup.remove_trailing_whitespaces_all=true
+cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_casts=false
+cleanup.remove_unnecessary_nls_tags=false
+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=true
+cleanup.remove_unused_private_types=true
+cleanup.sort_members=false
+cleanup.sort_members_all=false
+cleanup.use_anonymous_class_creation=false
+cleanup.use_blocks=true
+cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_lambda=true
+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.use_type_arguments=false
+cleanup_profile=_esmCleanUp
+cleanup_settings_version=2
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+formatter_profile=_esmFormatter
+formatter_settings_version=12
+org.eclipse.jdt.ui.exception.name=ex
+org.eclipse.jdt.ui.gettersetter.use.is=true
+org.eclipse.jdt.ui.javadoc=true
+org.eclipse.jdt.ui.keywordthis=false
+org.eclipse.jdt.ui.overrideannotation=true
+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 * Copyright (c) 2011-${year} EclipseSource Muenchen GmbH and others.\r\n * \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 * ${user} - initial API and implementation\r\n ******************************************************************************/</template><template autoinsert\="true" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * @author ${user}\r\n *\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment"/><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 * {@inheritDoc}\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">\t\t\t// TODO Auto-generated catch block\r\n\t\t\t// Do NOT catch all Exceptions ("catch (Exception e)")\r\n\t\t\t// Log AND handle Exceptions if possible \r\n            //\r\n            // You can just uncomment one of the lines below to log an exception\:\r\n\t\t\t// logException will show the logged excpetion to the user\r\n\t\t\t// ModelUtil.logException(${exception_var});\r\n\t\t\t// ModelUtil.logException("YOUR MESSAGE HERE", ${exception_var});\r\n\t\t\t// logWarning will only add the message to the error log\r\n\t\t\t// ModelUtil.logWarning("YOUR MESSAGE HERE", ${exception_var});\r\n\t\t\t// ModelUtil.logWarning("YOUR MESSAGE HERE");\r\n\t\t\t//\t\t\t\r\n\t\t\t// If handling is not possible declare and rethrow Exception</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_functional_interfaces=false
+sp_cleanup.convert_to_enhanced_for_loop=false
+sp_cleanup.correct_indentation=false
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.insert_inferred_type_arguments=false
+sp_cleanup.make_local_variable_final=true
+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=true
+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=true
+sp_cleanup.remove_redundant_type_arguments=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=false
+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=true
+sp_cleanup.remove_unused_private_types=true
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.use_anonymous_class_creation=false
+sp_cleanup.use_blocks=true
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_lambda=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
+sp_cleanup.use_type_arguments=false
diff --git a/examples/org.eclipse.emfforms.coffee.model.edit/.settings/org.eclipse.ltk.core.refactoring.prefs b/examples/org.eclipse.emfforms.coffee.model.edit/.settings/org.eclipse.ltk.core.refactoring.prefs
new file mode 100644
index 0000000..864e30f
--- /dev/null
+++ b/examples/org.eclipse.emfforms.coffee.model.edit/.settings/org.eclipse.ltk.core.refactoring.prefs
@@ -0,0 +1,3 @@
+#Thu Feb 04 09:44:24 CET 2010
+eclipse.preferences.version=1
+org.eclipse.ltk.core.refactoring.enable.project.refactoring.history=false
diff --git a/examples/org.eclipse.emfforms.coffee.model.edit/.settings/org.eclipse.pde.api.tools.prefs b/examples/org.eclipse.emfforms.coffee.model.edit/.settings/org.eclipse.pde.api.tools.prefs
new file mode 100644
index 0000000..e4e3c00
--- /dev/null
+++ b/examples/org.eclipse.emfforms.coffee.model.edit/.settings/org.eclipse.pde.api.tools.prefs
@@ -0,0 +1,97 @@
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_TYPE=Error
+API_USE_SCAN_FIELD_SEVERITY=Error
+API_USE_SCAN_METHOD_SEVERITY=Error
+API_USE_SCAN_TYPE_SEVERITY=Error
+CLASS_ELEMENT_TYPE_ADDED_METHOD=Error
+CLASS_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CLASS_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+CLASS_ELEMENT_TYPE_REMOVED_CONSTRUCTOR=Error
+CLASS_ELEMENT_TYPE_REMOVED_FIELD=Error
+CLASS_ELEMENT_TYPE_REMOVED_METHOD=Error
+CLASS_ELEMENT_TYPE_REMOVED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+ENUM_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ENUM_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ENUM_ELEMENT_TYPE_REMOVED_ENUM_CONSTANT=Error
+ENUM_ELEMENT_TYPE_REMOVED_FIELD=Error
+ENUM_ELEMENT_TYPE_REMOVED_METHOD=Error
+ENUM_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+FIELD_ELEMENT_TYPE_ADDED_VALUE=Error
+FIELD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+FIELD_ELEMENT_TYPE_CHANGED_FINAL_TO_NON_FINAL_STATIC_CONSTANT=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_TYPE=Error
+FIELD_ELEMENT_TYPE_CHANGED_VALUE=Error
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENT=Error
+FIELD_ELEMENT_TYPE_REMOVED_VALUE=Error
+ILLEGAL_EXTEND=Warning
+ILLEGAL_IMPLEMENT=Warning
+ILLEGAL_INSTANTIATE=Warning
+ILLEGAL_OVERRIDE=Warning
+ILLEGAL_REFERENCE=Warning
+INTERFACE_ELEMENT_TYPE_ADDED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_SUPER_INTERFACE_WITH_METHODS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+INVALID_JAVADOC_TAG=Warning
+INVALID_REFERENCE_IN_SYSTEM_LIBRARIES=Error
+LEAK_EXTEND=Warning
+LEAK_FIELD_DECL=Warning
+LEAK_IMPLEMENT=Warning
+LEAK_METHOD_PARAM=Warning
+LEAK_METHOD_RETURN_TYPE=Warning
+METHOD_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+METHOD_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+METHOD_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+MISSING_EE_DESCRIPTIONS=Error
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+UNUSED_PROBLEM_FILTERS=Ignore
+automatically_removed_unused_problem_filters=Disabled
+eclipse.preferences.version=1
+incompatible_api_component_version=Error
+incompatible_api_component_version_include_major_without_breaking_change=Disabled
+incompatible_api_component_version_include_minor_without_api_change=Disabled
+invalid_since_tag_version=Error
+malformed_since_tag=Error
+missing_since_tag=Error
+report_api_breakage_when_major_version_incremented=Disabled
+report_resolution_errors_api_component=Warning
diff --git a/examples/org.eclipse.emfforms.coffee.model.edit/.settings/org.eclipse.pde.ds.annotations.prefs b/examples/org.eclipse.emfforms.coffee.model.edit/.settings/org.eclipse.pde.ds.annotations.prefs
new file mode 100644
index 0000000..960a807
--- /dev/null
+++ b/examples/org.eclipse.emfforms.coffee.model.edit/.settings/org.eclipse.pde.ds.annotations.prefs
@@ -0,0 +1,6 @@
+eclipse.preferences.version=1
+enabled=true
+generateBundleActivationPolicyLazy=true
+path=OSGI-INF
+validationErrorLevel=error
+validationErrorLevel.missingImplicitUnbindMethod=error
diff --git a/examples/org.eclipse.emfforms.coffee.model.edit/.settings/org.eclipse.pde.prefs b/examples/org.eclipse.emfforms.coffee.model.edit/.settings/org.eclipse.pde.prefs
new file mode 100644
index 0000000..0bbee3c
--- /dev/null
+++ b/examples/org.eclipse.emfforms.coffee.model.edit/.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=1
+compilers.p.missing-version-import-package=1
+compilers.p.missing-version-require-bundle=1
+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/examples/org.eclipse.emfforms.coffee.model.edit/META-INF/MANIFEST.MF b/examples/org.eclipse.emfforms.coffee.model.edit/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..93e0b74
--- /dev/null
+++ b/examples/org.eclipse.emfforms.coffee.model.edit/META-INF/MANIFEST.MF
@@ -0,0 +1,16 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.emfforms.coffee.model.edit;singleton:=true
+Bundle-Version: 1.17.0.qualifier
+Bundle-ClassPath: .
+Bundle-Activator: org.eclipse.emfforms.coffee.model.coffee.provider.CoffeeEditPlugin$Implementation
+Bundle-Vendor: Eclipse Modeling Project
+Bundle-Localization: plugin
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Export-Package: org.eclipse.emfforms.coffee.model.coffee.provider;version="1.17.0"
+Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.5.0,4.0.0)",
+ org.eclipse.emfforms.coffee.model;bundle-version="[1.17.0,1.18.0)";visibility:=reexport,
+ org.eclipse.emf.edit;bundle-version="[2.5.0,3.0.0)";visibility:=reexport
+Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emfforms.coffee.model.edit
diff --git a/examples/org.eclipse.emfforms.coffee.model.edit/build.properties b/examples/org.eclipse.emfforms.coffee.model.edit/build.properties
new file mode 100644
index 0000000..f24c133
--- /dev/null
+++ b/examples/org.eclipse.emfforms.coffee.model.edit/build.properties
@@ -0,0 +1,11 @@
+#
+
+bin.includes = .,\
+               icons/,\
+               META-INF/,\
+               plugin.xml,\
+               plugin.properties
+jars.compile.order = .
+source.. = src/
+output.. = bin/
+jre.compilation.profile = JavaSE-1.6
diff --git a/examples/org.eclipse.emfforms.coffee.model.edit/icons/full/ctool16/CreateComponent_activities_Activity.gif b/examples/org.eclipse.emfforms.coffee.model.edit/icons/full/ctool16/CreateComponent_activities_Activity.gif
new file mode 100644
index 0000000..0232b55
--- /dev/null
+++ b/examples/org.eclipse.emfforms.coffee.model.edit/icons/full/ctool16/CreateComponent_activities_Activity.gif
Binary files differ
diff --git a/examples/org.eclipse.emfforms.coffee.model.edit/icons/full/ctool16/CreateComponent_children_BrewingUnit.gif b/examples/org.eclipse.emfforms.coffee.model.edit/icons/full/ctool16/CreateComponent_children_BrewingUnit.gif
new file mode 100644
index 0000000..d97ca1d
--- /dev/null
+++ b/examples/org.eclipse.emfforms.coffee.model.edit/icons/full/ctool16/CreateComponent_children_BrewingUnit.gif
Binary files differ
diff --git a/examples/org.eclipse.emfforms.coffee.model.edit/icons/full/ctool16/CreateComponent_children_ControlUnit.gif b/examples/org.eclipse.emfforms.coffee.model.edit/icons/full/ctool16/CreateComponent_children_ControlUnit.gif
new file mode 100644
index 0000000..195cfcd
--- /dev/null
+++ b/examples/org.eclipse.emfforms.coffee.model.edit/icons/full/ctool16/CreateComponent_children_ControlUnit.gif
Binary files differ
diff --git a/examples/org.eclipse.emfforms.coffee.model.edit/icons/full/ctool16/CreateComponent_children_DipTray.gif b/examples/org.eclipse.emfforms.coffee.model.edit/icons/full/ctool16/CreateComponent_children_DipTray.gif
new file mode 100644
index 0000000..d97ca1d
--- /dev/null
+++ b/examples/org.eclipse.emfforms.coffee.model.edit/icons/full/ctool16/CreateComponent_children_DipTray.gif
Binary files differ
diff --git a/examples/org.eclipse.emfforms.coffee.model.edit/icons/full/ctool16/CreateComponent_children_Machine.gif b/examples/org.eclipse.emfforms.coffee.model.edit/icons/full/ctool16/CreateComponent_children_Machine.gif
new file mode 100644
index 0000000..cc8cb04
--- /dev/null
+++ b/examples/org.eclipse.emfforms.coffee.model.edit/icons/full/ctool16/CreateComponent_children_Machine.gif
Binary files differ
diff --git a/examples/org.eclipse.emfforms.coffee.model.edit/icons/full/ctool16/CreateComponent_children_WaterTank.gif b/examples/org.eclipse.emfforms.coffee.model.edit/icons/full/ctool16/CreateComponent_children_WaterTank.gif
new file mode 100644
index 0000000..b0d6bd7
--- /dev/null
+++ b/examples/org.eclipse.emfforms.coffee.model.edit/icons/full/ctool16/CreateComponent_children_WaterTank.gif
Binary files differ
diff --git a/examples/org.eclipse.emfforms.coffee.model.edit/icons/full/ctool16/CreateControlUnit_display_Display.gif b/examples/org.eclipse.emfforms.coffee.model.edit/icons/full/ctool16/CreateControlUnit_display_Display.gif
new file mode 100644
index 0000000..1abfdde
--- /dev/null
+++ b/examples/org.eclipse.emfforms.coffee.model.edit/icons/full/ctool16/CreateControlUnit_display_Display.gif
Binary files differ
diff --git a/examples/org.eclipse.emfforms.coffee.model.edit/icons/full/ctool16/CreateControlUnit_processor_Processor.gif b/examples/org.eclipse.emfforms.coffee.model.edit/icons/full/ctool16/CreateControlUnit_processor_Processor.gif
new file mode 100644
index 0000000..a3671be
--- /dev/null
+++ b/examples/org.eclipse.emfforms.coffee.model.edit/icons/full/ctool16/CreateControlUnit_processor_Processor.gif
Binary files differ
diff --git a/examples/org.eclipse.emfforms.coffee.model.edit/icons/full/ctool16/CreateControlUnit_ram_RAM.gif b/examples/org.eclipse.emfforms.coffee.model.edit/icons/full/ctool16/CreateControlUnit_ram_RAM.gif
new file mode 100644
index 0000000..0b72453
--- /dev/null
+++ b/examples/org.eclipse.emfforms.coffee.model.edit/icons/full/ctool16/CreateControlUnit_ram_RAM.gif
Binary files differ
diff --git a/examples/org.eclipse.emfforms.coffee.model.edit/icons/full/obj16/Activity.gif b/examples/org.eclipse.emfforms.coffee.model.edit/icons/full/obj16/Activity.gif
new file mode 100644
index 0000000..6469cea
--- /dev/null
+++ b/examples/org.eclipse.emfforms.coffee.model.edit/icons/full/obj16/Activity.gif
Binary files differ
diff --git a/examples/org.eclipse.emfforms.coffee.model.edit/icons/full/obj16/BrewingUnit.gif b/examples/org.eclipse.emfforms.coffee.model.edit/icons/full/obj16/BrewingUnit.gif
new file mode 100644
index 0000000..f763a16
--- /dev/null
+++ b/examples/org.eclipse.emfforms.coffee.model.edit/icons/full/obj16/BrewingUnit.gif
Binary files differ
diff --git a/examples/org.eclipse.emfforms.coffee.model.edit/icons/full/obj16/ControlUnit.gif b/examples/org.eclipse.emfforms.coffee.model.edit/icons/full/obj16/ControlUnit.gif
new file mode 100644
index 0000000..807b862
--- /dev/null
+++ b/examples/org.eclipse.emfforms.coffee.model.edit/icons/full/obj16/ControlUnit.gif
Binary files differ
diff --git a/examples/org.eclipse.emfforms.coffee.model.edit/icons/full/obj16/Dimension.gif b/examples/org.eclipse.emfforms.coffee.model.edit/icons/full/obj16/Dimension.gif
new file mode 100644
index 0000000..2e9bc42
--- /dev/null
+++ b/examples/org.eclipse.emfforms.coffee.model.edit/icons/full/obj16/Dimension.gif
Binary files differ
diff --git a/examples/org.eclipse.emfforms.coffee.model.edit/icons/full/obj16/DipTray.gif b/examples/org.eclipse.emfforms.coffee.model.edit/icons/full/obj16/DipTray.gif
new file mode 100644
index 0000000..8443c23
--- /dev/null
+++ b/examples/org.eclipse.emfforms.coffee.model.edit/icons/full/obj16/DipTray.gif
Binary files differ
diff --git a/examples/org.eclipse.emfforms.coffee.model.edit/icons/full/obj16/Display.gif b/examples/org.eclipse.emfforms.coffee.model.edit/icons/full/obj16/Display.gif
new file mode 100644
index 0000000..d040bd0
--- /dev/null
+++ b/examples/org.eclipse.emfforms.coffee.model.edit/icons/full/obj16/Display.gif
Binary files differ
diff --git a/examples/org.eclipse.emfforms.coffee.model.edit/icons/full/obj16/Machine.gif b/examples/org.eclipse.emfforms.coffee.model.edit/icons/full/obj16/Machine.gif
new file mode 100644
index 0000000..b7bfcd1
--- /dev/null
+++ b/examples/org.eclipse.emfforms.coffee.model.edit/icons/full/obj16/Machine.gif
Binary files differ
diff --git a/examples/org.eclipse.emfforms.coffee.model.edit/icons/full/obj16/Processor.gif b/examples/org.eclipse.emfforms.coffee.model.edit/icons/full/obj16/Processor.gif
new file mode 100644
index 0000000..09275f9
--- /dev/null
+++ b/examples/org.eclipse.emfforms.coffee.model.edit/icons/full/obj16/Processor.gif
Binary files differ
diff --git a/examples/org.eclipse.emfforms.coffee.model.edit/icons/full/obj16/RAM.gif b/examples/org.eclipse.emfforms.coffee.model.edit/icons/full/obj16/RAM.gif
new file mode 100644
index 0000000..37b7c9b
--- /dev/null
+++ b/examples/org.eclipse.emfforms.coffee.model.edit/icons/full/obj16/RAM.gif
Binary files differ
diff --git a/examples/org.eclipse.emfforms.coffee.model.edit/icons/full/obj16/WaterTank.gif b/examples/org.eclipse.emfforms.coffee.model.edit/icons/full/obj16/WaterTank.gif
new file mode 100644
index 0000000..3d09261
--- /dev/null
+++ b/examples/org.eclipse.emfforms.coffee.model.edit/icons/full/obj16/WaterTank.gif
Binary files differ
diff --git a/examples/org.eclipse.emfforms.coffee.model.edit/plugin.properties b/examples/org.eclipse.emfforms.coffee.model.edit/plugin.properties
new file mode 100644
index 0000000..21e1629
--- /dev/null
+++ b/examples/org.eclipse.emfforms.coffee.model.edit/plugin.properties
@@ -0,0 +1,61 @@
+#
+
+pluginName = Coffee Edit Support
+providerName = www.example.org
+
+_UI_CreateChild_text = {0}
+_UI_CreateChild_text2 = {1} {0}
+_UI_CreateChild_text3 = {1}
+_UI_CreateChild_tooltip = Create New {0} Under {1} Feature
+_UI_CreateChild_description = Create a new child of type {0} for the {1} feature of the selected {2}.
+_UI_CreateSibling_description = Create a new sibling of type {0} for the selected {2}, under the {1} feature of their parent.
+
+_UI_PropertyDescriptor_description = The {0} of the {1}
+
+_UI_Component_type = Component
+_UI_Machine_type = Machine
+_UI_ControlUnit_type = Control Unit
+_UI_BrewingUnit_type = Brewing Unit
+_UI_DipTray_type = Dip Tray
+_UI_WaterTank_type = Water Tank
+_UI_Processor_type = Processor
+_UI_RAM_type = RAM
+_UI_Activity_type = Activity
+_UI_Dimension_type = Dimension
+_UI_Display_type = Display
+_UI_Unknown_type = Object
+
+_UI_Unknown_datatype= Value
+
+_UI_Component_children_feature = Children
+_UI_Component_parent_feature = Parent
+_UI_Component_activities_feature = Activities
+_UI_Machine_name_feature = Name
+_UI_ControlUnit_processor_feature = Processor
+_UI_ControlUnit_dimension_feature = Dimension
+_UI_ControlUnit_ram_feature = Ram
+_UI_ControlUnit_display_feature = Display
+_UI_ControlUnit_userDescription_feature = User Description
+_UI_Processor_vendor_feature = Vendor
+_UI_Processor_clockSpeed_feature = Clock Speed
+_UI_Processor_numberOfCores_feature = Number Of Cores
+_UI_Processor_socketconnectorType_feature = Socketconnector Type
+_UI_Processor_thermalDesignPower_feature = Thermal Design Power
+_UI_Processor_manufactoringProcess_feature = Manufactoring Process
+_UI_RAM_clockSpeed_feature = Clock Speed
+_UI_RAM_size_feature = Size
+_UI_RAM_type_feature = Type
+_UI_Activity_name_feature = Name
+_UI_Dimension_width_feature = Width
+_UI_Dimension_height_feature = Height
+_UI_Dimension_length_feature = Length
+_UI_Display_width_feature = Width
+_UI_Display_height_feature = Height
+_UI_Unknown_feature = Unspecified
+
+_UI_SocketConnectorType_A1T_literal = A1T
+_UI_SocketConnectorType_Z51_literal = Z51
+_UI_ManufactoringProcess_nm18_literal = 18nm
+_UI_ManufactoringProcess_nm25_literal = nm25
+_UI_RamType_SODIMM_literal = SO-DIMM
+_UI_RamType_SIDIMM_literal = SI-DIMM
diff --git a/examples/org.eclipse.emfforms.coffee.model.edit/plugin.xml b/examples/org.eclipse.emfforms.coffee.model.edit/plugin.xml
new file mode 100644
index 0000000..8ad5388
--- /dev/null
+++ b/examples/org.eclipse.emfforms.coffee.model.edit/plugin.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<!--
+-->
+
+<plugin>
+
+   <extension point="org.eclipse.emf.edit.itemProviderAdapterFactories">
+      <!-- @generated Coffee -->
+      <factory
+            uri="http://www.eclipse.org/emfforms/example/coffeemodel"
+            class="org.eclipse.emfforms.coffee.model.coffee.provider.CoffeeItemProviderAdapterFactory"
+            supportedTypes=
+              "org.eclipse.emf.edit.provider.IEditingDomainItemProvider
+               org.eclipse.emf.edit.provider.IStructuredItemContentProvider
+               org.eclipse.emf.edit.provider.ITreeItemContentProvider
+               org.eclipse.emf.edit.provider.IItemLabelProvider
+               org.eclipse.emf.edit.provider.IItemPropertySource"/>
+   </extension>
+
+</plugin>
diff --git a/examples/org.eclipse.emfforms.coffee.model.edit/pom.xml b/examples/org.eclipse.emfforms.coffee.model.edit/pom.xml
new file mode 100644
index 0000000..3ef4d5b
--- /dev/null
+++ b/examples/org.eclipse.emfforms.coffee.model.edit/pom.xml
@@ -0,0 +1,18 @@
+<?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.emf.ecp</groupId>

+    <artifactId>ecp-examples-parent</artifactId>

+    <version>1.17.0-SNAPSHOT</version>

+    <relativePath>../../releng/org.eclipse.emf.ecp.releng.examples/</relativePath>

+  </parent>

+

+  <groupId>org.eclipse.emf.ecp</groupId>

+  <artifactId>org.eclipse.emfforms.coffee.model.edit</artifactId>

+  <version>1.17.0-SNAPSHOT</version>

+  <packaging>eclipse-plugin</packaging>

+</project>

diff --git a/examples/org.eclipse.emfforms.coffee.model.edit/src/org/eclipse/emfforms/coffee/model/coffee/provider/ActivityItemProvider.java b/examples/org.eclipse.emfforms.coffee.model.edit/src/org/eclipse/emfforms/coffee/model/coffee/provider/ActivityItemProvider.java
new file mode 100644
index 0000000..85f572c
--- /dev/null
+++ b/examples/org.eclipse.emfforms.coffee.model.edit/src/org/eclipse/emfforms/coffee/model/coffee/provider/ActivityItemProvider.java
@@ -0,0 +1,167 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
+ */
+package org.eclipse.emfforms.coffee.model.coffee.provider;
+
+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.common.util.ResourceLocator;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.emfforms.coffee.model.coffee.Activity;
+import org.eclipse.emfforms.coffee.model.coffee.CoffeePackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.emfforms.coffee.model.coffee.Activity} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class ActivityItemProvider
+	extends ItemProviderAdapter
+	implements
+	IEditingDomainItemProvider,
+	ITreeItemContentProvider,
+	IItemLabelProvider,
+	IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public ActivityItemProvider(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);
+
+			addNamePropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Name feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void addNamePropertyDescriptor(Object object) {
+		itemPropertyDescriptors
+			.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+				getResourceLocator(),
+				getString("_UI_Activity_name_feature"), //$NON-NLS-1$
+				getString("_UI_PropertyDescriptor_description", "_UI_Activity_name_feature", "_UI_Activity_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				CoffeePackage.Literals.ACTIVITY__NAME,
+				true,
+				false,
+				false,
+				ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				null,
+				null));
+	}
+
+	/**
+	 * This returns Activity.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/Activity")); //$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) {
+		final String label = ((Activity) object).getName();
+		return label == null || label.length() == 0 ? getString("_UI_Activity_type") : //$NON-NLS-1$
+			getString("_UI_Activity_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+	}
+
+	/**
+	 * 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);
+
+		switch (notification.getFeatureID(Activity.class)) {
+		case CoffeePackage.ACTIVITY__NAME:
+			fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+			return;
+		}
+		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);
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return CoffeeEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/examples/org.eclipse.emfforms.coffee.model.edit/src/org/eclipse/emfforms/coffee/model/coffee/provider/BrewingUnitItemProvider.java b/examples/org.eclipse.emfforms.coffee.model.edit/src/org/eclipse/emfforms/coffee/model/coffee/provider/BrewingUnitItemProvider.java
new file mode 100644
index 0000000..0421da9
--- /dev/null
+++ b/examples/org.eclipse.emfforms.coffee.model.edit/src/org/eclipse/emfforms/coffee/model/coffee/provider/BrewingUnitItemProvider.java
@@ -0,0 +1,107 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
+ */
+package org.eclipse.emfforms.coffee.model.coffee.provider;
+
+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;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.emfforms.coffee.model.coffee.BrewingUnit} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class BrewingUnitItemProvider extends ComponentItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public BrewingUnitItemProvider(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 BrewingUnit.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/BrewingUnit")); //$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 getString("_UI_BrewingUnit_type"); //$NON-NLS-1$
+	}
+
+	/**
+	 * 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.emfforms.coffee.model.edit/src/org/eclipse/emfforms/coffee/model/coffee/provider/CoffeeEditPlugin.java b/examples/org.eclipse.emfforms.coffee.model.edit/src/org/eclipse/emfforms/coffee/model/coffee/provider/CoffeeEditPlugin.java
new file mode 100644
index 0000000..6ef84d5
--- /dev/null
+++ b/examples/org.eclipse.emfforms.coffee.model.edit/src/org/eclipse/emfforms/coffee/model/coffee/provider/CoffeeEditPlugin.java
@@ -0,0 +1,104 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
+ */
+package org.eclipse.emfforms.coffee.model.coffee.provider;
+
+import org.eclipse.emf.common.EMFPlugin;
+import org.eclipse.emf.common.util.ResourceLocator;
+
+/**
+ * This is the central singleton for the Coffee edit plugin.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public final class CoffeeEditPlugin extends EMFPlugin {
+	/**
+	 * Keep track of the singleton.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public static final CoffeeEditPlugin INSTANCE = new CoffeeEditPlugin();
+
+	/**
+	 * Keep track of the singleton.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private static Implementation plugin;
+
+	/**
+	 * Create the instance.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public CoffeeEditPlugin() {
+		super(new ResourceLocator[] {
+		});
+	}
+
+	/**
+	 * Returns the singleton instance of the Eclipse plugin.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the singleton instance.
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getPluginResourceLocator() {
+		return plugin;
+	}
+
+	/**
+	 * Returns the singleton instance of the Eclipse plugin.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the singleton instance.
+	 * @generated
+	 */
+	public static Implementation getPlugin() {
+		return plugin;
+	}
+
+	/**
+	 * The actual implementation of the Eclipse <b>Plugin</b>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public static class Implementation extends EclipsePlugin {
+		/**
+		 * Creates an instance.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		public Implementation() {
+			super();
+
+			// Remember the static instance.
+			//
+			plugin = this;
+		}
+	}
+
+}
diff --git a/examples/org.eclipse.emfforms.coffee.model.edit/src/org/eclipse/emfforms/coffee/model/coffee/provider/CoffeeItemProviderAdapterFactory.java b/examples/org.eclipse.emfforms.coffee.model.edit/src/org/eclipse/emfforms/coffee/model/coffee/provider/CoffeeItemProviderAdapterFactory.java
new file mode 100644
index 0000000..a20fd2c
--- /dev/null
+++ b/examples/org.eclipse.emfforms.coffee.model.edit/src/org/eclipse/emfforms/coffee/model/coffee/provider/CoffeeItemProviderAdapterFactory.java
@@ -0,0 +1,493 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
+ */
+package org.eclipse.emfforms.coffee.model.coffee.provider;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.Notifier;
+import org.eclipse.emf.edit.provider.ChangeNotifier;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
+import org.eclipse.emf.edit.provider.IChangeNotifier;
+import org.eclipse.emf.edit.provider.IDisposable;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.INotifyChangedListener;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emfforms.coffee.model.coffee.util.CoffeeAdapterFactory;
+
+/**
+ * This is the factory that is used to provide the interfaces needed to support Viewers.
+ * The adapters generated by this factory convert EMF adapter notifications into calls to {@link #fireNotifyChanged
+ * fireNotifyChanged}.
+ * The adapters also support Eclipse property sheets.
+ * Note that most of the adapters are shared among multiple instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class CoffeeItemProviderAdapterFactory extends CoffeeAdapterFactory
+	implements ComposeableAdapterFactory, IChangeNotifier, IDisposable {
+	/**
+	 * This keeps track of the root adapter factory that delegates to this adapter factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected ComposedAdapterFactory parentAdapterFactory;
+
+	/**
+	 * This is used to implement {@link org.eclipse.emf.edit.provider.IChangeNotifier}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected IChangeNotifier changeNotifier = new ChangeNotifier();
+
+	/**
+	 * This keeps track of all the supported types checked by {@link #isFactoryForType isFactoryForType}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected Collection<Object> supportedTypes = new ArrayList<Object>();
+
+	/**
+	 * This constructs an instance.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public CoffeeItemProviderAdapterFactory() {
+		supportedTypes.add(IEditingDomainItemProvider.class);
+		supportedTypes.add(IStructuredItemContentProvider.class);
+		supportedTypes.add(ITreeItemContentProvider.class);
+		supportedTypes.add(IItemLabelProvider.class);
+		supportedTypes.add(IItemPropertySource.class);
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.emfforms.coffee.model.coffee.Machine}
+	 * instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected MachineItemProvider machineItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.emfforms.coffee.model.coffee.Machine}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Adapter createMachineAdapter() {
+		if (machineItemProvider == null) {
+			machineItemProvider = new MachineItemProvider(this);
+		}
+
+		return machineItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.emfforms.coffee.model.coffee.ControlUnit}
+	 * instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected ControlUnitItemProvider controlUnitItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.emfforms.coffee.model.coffee.ControlUnit}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Adapter createControlUnitAdapter() {
+		if (controlUnitItemProvider == null) {
+			controlUnitItemProvider = new ControlUnitItemProvider(this);
+		}
+
+		return controlUnitItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.emfforms.coffee.model.coffee.BrewingUnit}
+	 * instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected BrewingUnitItemProvider brewingUnitItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.emfforms.coffee.model.coffee.BrewingUnit}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Adapter createBrewingUnitAdapter() {
+		if (brewingUnitItemProvider == null) {
+			brewingUnitItemProvider = new BrewingUnitItemProvider(this);
+		}
+
+		return brewingUnitItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.emfforms.coffee.model.coffee.DipTray}
+	 * instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected DipTrayItemProvider dipTrayItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.emfforms.coffee.model.coffee.DipTray}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Adapter createDipTrayAdapter() {
+		if (dipTrayItemProvider == null) {
+			dipTrayItemProvider = new DipTrayItemProvider(this);
+		}
+
+		return dipTrayItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.emfforms.coffee.model.coffee.WaterTank}
+	 * instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected WaterTankItemProvider waterTankItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.emfforms.coffee.model.coffee.WaterTank}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Adapter createWaterTankAdapter() {
+		if (waterTankItemProvider == null) {
+			waterTankItemProvider = new WaterTankItemProvider(this);
+		}
+
+		return waterTankItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.emfforms.coffee.model.coffee.Processor}
+	 * instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected ProcessorItemProvider processorItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.emfforms.coffee.model.coffee.Processor}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Adapter createProcessorAdapter() {
+		if (processorItemProvider == null) {
+			processorItemProvider = new ProcessorItemProvider(this);
+		}
+
+		return processorItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.emfforms.coffee.model.coffee.RAM} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected RAMItemProvider ramItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.emfforms.coffee.model.coffee.RAM}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Adapter createRAMAdapter() {
+		if (ramItemProvider == null) {
+			ramItemProvider = new RAMItemProvider(this);
+		}
+
+		return ramItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.emfforms.coffee.model.coffee.Activity}
+	 * instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected ActivityItemProvider activityItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.emfforms.coffee.model.coffee.Activity}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Adapter createActivityAdapter() {
+		if (activityItemProvider == null) {
+			activityItemProvider = new ActivityItemProvider(this);
+		}
+
+		return activityItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.emfforms.coffee.model.coffee.Dimension}
+	 * instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected DimensionItemProvider dimensionItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.emfforms.coffee.model.coffee.Dimension}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Adapter createDimensionAdapter() {
+		if (dimensionItemProvider == null) {
+			dimensionItemProvider = new DimensionItemProvider(this);
+		}
+
+		return dimensionItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.emfforms.coffee.model.coffee.Display}
+	 * instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected DisplayItemProvider displayItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.emfforms.coffee.model.coffee.Display}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Adapter createDisplayAdapter() {
+		if (displayItemProvider == null) {
+			displayItemProvider = new DisplayItemProvider(this);
+		}
+
+		return displayItemProvider;
+	}
+
+	/**
+	 * This returns the root adapter factory that contains this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public ComposeableAdapterFactory getRootAdapterFactory() {
+		return parentAdapterFactory == null ? this : parentAdapterFactory.getRootAdapterFactory();
+	}
+
+	/**
+	 * This sets the composed adapter factory that contains this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setParentAdapterFactory(ComposedAdapterFactory parentAdapterFactory) {
+		this.parentAdapterFactory = parentAdapterFactory;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public boolean isFactoryForType(Object type) {
+		return supportedTypes.contains(type) || super.isFactoryForType(type);
+	}
+
+	/**
+	 * This implementation substitutes the factory itself as the key for the adapter.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Adapter adapt(Notifier notifier, Object type) {
+		return super.adapt(notifier, this);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object adapt(Object object, Object type) {
+		if (isFactoryForType(type)) {
+			final Object adapter = super.adapt(object, type);
+			if (!(type instanceof Class<?>) || ((Class<?>) type).isInstance(adapter)) {
+				return adapter;
+			}
+		}
+
+		return null;
+	}
+
+	/**
+	 * This adds a listener.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void addListener(INotifyChangedListener notifyChangedListener) {
+		changeNotifier.addListener(notifyChangedListener);
+	}
+
+	/**
+	 * This removes a listener.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void removeListener(INotifyChangedListener notifyChangedListener) {
+		changeNotifier.removeListener(notifyChangedListener);
+	}
+
+	/**
+	 * This delegates to {@link #changeNotifier} and to {@link #parentAdapterFactory}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void fireNotifyChanged(Notification notification) {
+		changeNotifier.fireNotifyChanged(notification);
+
+		if (parentAdapterFactory != null) {
+			parentAdapterFactory.fireNotifyChanged(notification);
+		}
+	}
+
+	/**
+	 * This disposes all of the item providers created by this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void dispose() {
+		if (machineItemProvider != null) {
+			machineItemProvider.dispose();
+		}
+		if (controlUnitItemProvider != null) {
+			controlUnitItemProvider.dispose();
+		}
+		if (brewingUnitItemProvider != null) {
+			brewingUnitItemProvider.dispose();
+		}
+		if (dipTrayItemProvider != null) {
+			dipTrayItemProvider.dispose();
+		}
+		if (waterTankItemProvider != null) {
+			waterTankItemProvider.dispose();
+		}
+		if (processorItemProvider != null) {
+			processorItemProvider.dispose();
+		}
+		if (ramItemProvider != null) {
+			ramItemProvider.dispose();
+		}
+		if (activityItemProvider != null) {
+			activityItemProvider.dispose();
+		}
+		if (dimensionItemProvider != null) {
+			dimensionItemProvider.dispose();
+		}
+		if (displayItemProvider != null) {
+			displayItemProvider.dispose();
+		}
+	}
+
+}
diff --git a/examples/org.eclipse.emfforms.coffee.model.edit/src/org/eclipse/emfforms/coffee/model/coffee/provider/ComponentItemProvider.java b/examples/org.eclipse.emfforms.coffee.model.edit/src/org/eclipse/emfforms/coffee/model/coffee/provider/ComponentItemProvider.java
new file mode 100644
index 0000000..a940ea8
--- /dev/null
+++ b/examples/org.eclipse.emfforms.coffee.model.edit/src/org/eclipse/emfforms/coffee/model/coffee/provider/ComponentItemProvider.java
@@ -0,0 +1,183 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
+ */
+package org.eclipse.emfforms.coffee.model.coffee.provider;
+
+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.common.util.ResourceLocator;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.emfforms.coffee.model.coffee.CoffeeFactory;
+import org.eclipse.emfforms.coffee.model.coffee.CoffeePackage;
+import org.eclipse.emfforms.coffee.model.coffee.Component;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.emfforms.coffee.model.coffee.Component} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class ComponentItemProvider
+	extends ItemProviderAdapter
+	implements
+	IEditingDomainItemProvider,
+	ITreeItemContentProvider,
+	IItemLabelProvider,
+	IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public ComponentItemProvider(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 specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(CoffeePackage.Literals.COMPONENT__CHILDREN);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		return getString("_UI_Component_type"); //$NON-NLS-1$
+	}
+
+	/**
+	 * 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);
+
+		switch (notification.getFeatureID(Component.class)) {
+		case CoffeePackage.COMPONENT__ACTIVITIES:
+			fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+			return;
+		case CoffeePackage.COMPONENT__CHILDREN:
+			fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+			return;
+		}
+		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);
+
+		newChildDescriptors.add(createChildParameter(CoffeePackage.Literals.COMPONENT__CHILDREN,
+			CoffeeFactory.eINSTANCE.createMachine()));
+
+		newChildDescriptors.add(createChildParameter(CoffeePackage.Literals.COMPONENT__CHILDREN,
+			CoffeeFactory.eINSTANCE.createControlUnit()));
+
+		newChildDescriptors.add(createChildParameter(CoffeePackage.Literals.COMPONENT__CHILDREN,
+			CoffeeFactory.eINSTANCE.createBrewingUnit()));
+
+		newChildDescriptors.add(createChildParameter(CoffeePackage.Literals.COMPONENT__CHILDREN,
+			CoffeeFactory.eINSTANCE.createDipTray()));
+
+		newChildDescriptors.add(createChildParameter(CoffeePackage.Literals.COMPONENT__CHILDREN,
+			CoffeeFactory.eINSTANCE.createWaterTank()));
+
+		newChildDescriptors.add(createChildParameter(CoffeePackage.Literals.COMPONENT__ACTIVITIES,
+			CoffeeFactory.eINSTANCE.createActivity()));
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return CoffeeEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/examples/org.eclipse.emfforms.coffee.model.edit/src/org/eclipse/emfforms/coffee/model/coffee/provider/ControlUnitItemProvider.java b/examples/org.eclipse.emfforms.coffee.model.edit/src/org/eclipse/emfforms/coffee/model/coffee/provider/ControlUnitItemProvider.java
new file mode 100644
index 0000000..fdc892f
--- /dev/null
+++ b/examples/org.eclipse.emfforms.coffee.model.edit/src/org/eclipse/emfforms/coffee/model/coffee/provider/ControlUnitItemProvider.java
@@ -0,0 +1,214 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
+ */
+package org.eclipse.emfforms.coffee.model.coffee.provider;
+
+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.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.emfforms.coffee.model.coffee.CoffeeFactory;
+import org.eclipse.emfforms.coffee.model.coffee.CoffeePackage;
+import org.eclipse.emfforms.coffee.model.coffee.ControlUnit;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.emfforms.coffee.model.coffee.ControlUnit} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class ControlUnitItemProvider extends ComponentItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public ControlUnitItemProvider(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);
+
+			addDimensionPropertyDescriptor(object);
+			addUserDescriptionPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Dimension feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void addDimensionPropertyDescriptor(Object object) {
+		itemPropertyDescriptors
+			.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+				getResourceLocator(),
+				getString("_UI_ControlUnit_dimension_feature"), //$NON-NLS-1$
+				getString("_UI_PropertyDescriptor_description", "_UI_ControlUnit_dimension_feature", //$NON-NLS-1$ //$NON-NLS-2$
+					"_UI_ControlUnit_type"), //$NON-NLS-1$
+				CoffeePackage.Literals.CONTROL_UNIT__DIMENSION,
+				true,
+				false,
+				true,
+				null,
+				null,
+				null));
+	}
+
+	/**
+	 * This adds a property descriptor for the User Description feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void addUserDescriptionPropertyDescriptor(Object object) {
+		itemPropertyDescriptors
+			.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+				getResourceLocator(),
+				getString("_UI_ControlUnit_userDescription_feature"), //$NON-NLS-1$
+				getString("_UI_PropertyDescriptor_description", "_UI_ControlUnit_userDescription_feature", //$NON-NLS-1$ //$NON-NLS-2$
+					"_UI_ControlUnit_type"), //$NON-NLS-1$
+				CoffeePackage.Literals.CONTROL_UNIT__USER_DESCRIPTION,
+				true,
+				true,
+				false,
+				ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				null,
+				null));
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(CoffeePackage.Literals.CONTROL_UNIT__PROCESSOR);
+			childrenFeatures.add(CoffeePackage.Literals.CONTROL_UNIT__RAM);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns ControlUnit.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/ControlUnit")); //$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) {
+		final String label = crop(((ControlUnit) object).getUserDescription());
+		return label == null || label.length() == 0 ? getString("_UI_ControlUnit_type") : //$NON-NLS-1$
+			getString("_UI_ControlUnit_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+	}
+
+	/**
+	 * 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);
+
+		switch (notification.getFeatureID(ControlUnit.class)) {
+		case CoffeePackage.CONTROL_UNIT__DISPLAY:
+		case CoffeePackage.CONTROL_UNIT__USER_DESCRIPTION:
+			fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+			return;
+		case CoffeePackage.CONTROL_UNIT__PROCESSOR:
+		case CoffeePackage.CONTROL_UNIT__RAM:
+			fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+			return;
+		}
+		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);
+
+		newChildDescriptors.add(createChildParameter(CoffeePackage.Literals.CONTROL_UNIT__PROCESSOR,
+			CoffeeFactory.eINSTANCE.createProcessor()));
+
+		newChildDescriptors.add(createChildParameter(CoffeePackage.Literals.CONTROL_UNIT__RAM,
+			CoffeeFactory.eINSTANCE.createRAM()));
+	}
+
+}
diff --git a/examples/org.eclipse.emfforms.coffee.model.edit/src/org/eclipse/emfforms/coffee/model/coffee/provider/DimensionItemProvider.java b/examples/org.eclipse.emfforms.coffee.model.edit/src/org/eclipse/emfforms/coffee/model/coffee/provider/DimensionItemProvider.java
new file mode 100644
index 0000000..f9ed227
--- /dev/null
+++ b/examples/org.eclipse.emfforms.coffee.model.edit/src/org/eclipse/emfforms/coffee/model/coffee/provider/DimensionItemProvider.java
@@ -0,0 +1,214 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
+ */
+package org.eclipse.emfforms.coffee.model.coffee.provider;
+
+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.common.util.ResourceLocator;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.emfforms.coffee.model.coffee.CoffeePackage;
+import org.eclipse.emfforms.coffee.model.coffee.Dimension;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.emfforms.coffee.model.coffee.Dimension} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class DimensionItemProvider
+	extends ItemProviderAdapter
+	implements
+	IEditingDomainItemProvider,
+	ITreeItemContentProvider,
+	IItemLabelProvider,
+	IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public DimensionItemProvider(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);
+
+			addWidthPropertyDescriptor(object);
+			addHeightPropertyDescriptor(object);
+			addLengthPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Width feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void addWidthPropertyDescriptor(Object object) {
+		itemPropertyDescriptors
+			.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+				getResourceLocator(),
+				getString("_UI_Dimension_width_feature"), //$NON-NLS-1$
+				getString("_UI_PropertyDescriptor_description", "_UI_Dimension_width_feature", "_UI_Dimension_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				CoffeePackage.Literals.DIMENSION__WIDTH,
+				true,
+				false,
+				false,
+				ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE,
+				null,
+				null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Height feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void addHeightPropertyDescriptor(Object object) {
+		itemPropertyDescriptors
+			.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+				getResourceLocator(),
+				getString("_UI_Dimension_height_feature"), //$NON-NLS-1$
+				getString("_UI_PropertyDescriptor_description", "_UI_Dimension_height_feature", "_UI_Dimension_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				CoffeePackage.Literals.DIMENSION__HEIGHT,
+				true,
+				false,
+				false,
+				ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE,
+				null,
+				null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Length feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void addLengthPropertyDescriptor(Object object) {
+		itemPropertyDescriptors
+			.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+				getResourceLocator(),
+				getString("_UI_Dimension_length_feature"), //$NON-NLS-1$
+				getString("_UI_PropertyDescriptor_description", "_UI_Dimension_length_feature", "_UI_Dimension_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				CoffeePackage.Literals.DIMENSION__LENGTH,
+				true,
+				false,
+				false,
+				ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE,
+				null,
+				null));
+	}
+
+	/**
+	 * This returns Dimension.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/Dimension")); //$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) {
+		final Dimension dimension = (Dimension) object;
+		return getString("_UI_Dimension_type") + " " + dimension.getWidth(); //$NON-NLS-1$ //$NON-NLS-2$
+	}
+
+	/**
+	 * 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);
+
+		switch (notification.getFeatureID(Dimension.class)) {
+		case CoffeePackage.DIMENSION__WIDTH:
+		case CoffeePackage.DIMENSION__HEIGHT:
+		case CoffeePackage.DIMENSION__LENGTH:
+			fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+			return;
+		}
+		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);
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return CoffeeEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/examples/org.eclipse.emfforms.coffee.model.edit/src/org/eclipse/emfforms/coffee/model/coffee/provider/DipTrayItemProvider.java b/examples/org.eclipse.emfforms.coffee.model.edit/src/org/eclipse/emfforms/coffee/model/coffee/provider/DipTrayItemProvider.java
new file mode 100644
index 0000000..8c7855d
--- /dev/null
+++ b/examples/org.eclipse.emfforms.coffee.model.edit/src/org/eclipse/emfforms/coffee/model/coffee/provider/DipTrayItemProvider.java
@@ -0,0 +1,107 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
+ */
+package org.eclipse.emfforms.coffee.model.coffee.provider;
+
+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;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.emfforms.coffee.model.coffee.DipTray} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class DipTrayItemProvider extends ComponentItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public DipTrayItemProvider(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 DipTray.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/DipTray")); //$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 getString("_UI_DipTray_type"); //$NON-NLS-1$
+	}
+
+	/**
+	 * 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.emfforms.coffee.model.edit/src/org/eclipse/emfforms/coffee/model/coffee/provider/DisplayItemProvider.java b/examples/org.eclipse.emfforms.coffee.model.edit/src/org/eclipse/emfforms/coffee/model/coffee/provider/DisplayItemProvider.java
new file mode 100644
index 0000000..1212567
--- /dev/null
+++ b/examples/org.eclipse.emfforms.coffee.model.edit/src/org/eclipse/emfforms/coffee/model/coffee/provider/DisplayItemProvider.java
@@ -0,0 +1,190 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
+ */
+package org.eclipse.emfforms.coffee.model.coffee.provider;
+
+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.common.util.ResourceLocator;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.emfforms.coffee.model.coffee.CoffeePackage;
+import org.eclipse.emfforms.coffee.model.coffee.Display;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.emfforms.coffee.model.coffee.Display} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class DisplayItemProvider
+	extends ItemProviderAdapter
+	implements
+	IEditingDomainItemProvider,
+	ITreeItemContentProvider,
+	IItemLabelProvider,
+	IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public DisplayItemProvider(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);
+
+			addWidthPropertyDescriptor(object);
+			addHeightPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Width feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void addWidthPropertyDescriptor(Object object) {
+		itemPropertyDescriptors
+			.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+				getResourceLocator(),
+				getString("_UI_Display_width_feature"), //$NON-NLS-1$
+				getString("_UI_PropertyDescriptor_description", "_UI_Display_width_feature", "_UI_Display_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				CoffeePackage.Literals.DISPLAY__WIDTH,
+				true,
+				false,
+				false,
+				ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE,
+				null,
+				null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Height feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void addHeightPropertyDescriptor(Object object) {
+		itemPropertyDescriptors
+			.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+				getResourceLocator(),
+				getString("_UI_Display_height_feature"), //$NON-NLS-1$
+				getString("_UI_PropertyDescriptor_description", "_UI_Display_height_feature", "_UI_Display_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				CoffeePackage.Literals.DISPLAY__HEIGHT,
+				true,
+				false,
+				false,
+				ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE,
+				null,
+				null));
+	}
+
+	/**
+	 * This returns Display.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/Display")); //$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) {
+		final Display display = (Display) object;
+		return getString("_UI_Display_type") + " " + display.getWidth(); //$NON-NLS-1$ //$NON-NLS-2$
+	}
+
+	/**
+	 * 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);
+
+		switch (notification.getFeatureID(Display.class)) {
+		case CoffeePackage.DISPLAY__WIDTH:
+		case CoffeePackage.DISPLAY__HEIGHT:
+			fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+			return;
+		}
+		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);
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return CoffeeEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/examples/org.eclipse.emfforms.coffee.model.edit/src/org/eclipse/emfforms/coffee/model/coffee/provider/MachineItemProvider.java b/examples/org.eclipse.emfforms.coffee.model.edit/src/org/eclipse/emfforms/coffee/model/coffee/provider/MachineItemProvider.java
new file mode 100644
index 0000000..bb17e91
--- /dev/null
+++ b/examples/org.eclipse.emfforms.coffee.model.edit/src/org/eclipse/emfforms/coffee/model/coffee/provider/MachineItemProvider.java
@@ -0,0 +1,143 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
+ */
+package org.eclipse.emfforms.coffee.model.coffee.provider;
+
+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.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.emfforms.coffee.model.coffee.CoffeePackage;
+import org.eclipse.emfforms.coffee.model.coffee.Machine;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.emfforms.coffee.model.coffee.Machine} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class MachineItemProvider extends ComponentItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public MachineItemProvider(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);
+
+			addNamePropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Name feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void addNamePropertyDescriptor(Object object) {
+		itemPropertyDescriptors
+			.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+				getResourceLocator(),
+				getString("_UI_Machine_name_feature"), //$NON-NLS-1$
+				getString("_UI_PropertyDescriptor_description", "_UI_Machine_name_feature", "_UI_Machine_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				CoffeePackage.Literals.MACHINE__NAME,
+				true,
+				false,
+				false,
+				ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				null,
+				null));
+	}
+
+	/**
+	 * This returns Machine.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/Machine")); //$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) {
+		final String label = ((Machine) object).getName();
+		return label == null || label.length() == 0 ? getString("_UI_Machine_type") : //$NON-NLS-1$
+			getString("_UI_Machine_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+	}
+
+	/**
+	 * 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);
+
+		switch (notification.getFeatureID(Machine.class)) {
+		case CoffeePackage.MACHINE__NAME:
+			fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+			return;
+		}
+		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.emfforms.coffee.model.edit/src/org/eclipse/emfforms/coffee/model/coffee/provider/ProcessorItemProvider.java b/examples/org.eclipse.emfforms.coffee.model.edit/src/org/eclipse/emfforms/coffee/model/coffee/provider/ProcessorItemProvider.java
new file mode 100644
index 0000000..1e86ceb
--- /dev/null
+++ b/examples/org.eclipse.emfforms.coffee.model.edit/src/org/eclipse/emfforms/coffee/model/coffee/provider/ProcessorItemProvider.java
@@ -0,0 +1,292 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
+ */
+package org.eclipse.emfforms.coffee.model.coffee.provider;
+
+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.common.util.ResourceLocator;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.emfforms.coffee.model.coffee.CoffeePackage;
+import org.eclipse.emfforms.coffee.model.coffee.Processor;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.emfforms.coffee.model.coffee.Processor} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class ProcessorItemProvider
+	extends ItemProviderAdapter
+	implements
+	IEditingDomainItemProvider,
+	ITreeItemContentProvider,
+	IItemLabelProvider,
+	IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public ProcessorItemProvider(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);
+
+			addVendorPropertyDescriptor(object);
+			addClockSpeedPropertyDescriptor(object);
+			addNumberOfCoresPropertyDescriptor(object);
+			addSocketconnectorTypePropertyDescriptor(object);
+			addThermalDesignPowerPropertyDescriptor(object);
+			addManufactoringProcessPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Vendor feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void addVendorPropertyDescriptor(Object object) {
+		itemPropertyDescriptors
+			.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+				getResourceLocator(),
+				getString("_UI_Processor_vendor_feature"), //$NON-NLS-1$
+				getString("_UI_PropertyDescriptor_description", "_UI_Processor_vendor_feature", "_UI_Processor_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				CoffeePackage.Literals.PROCESSOR__VENDOR,
+				true,
+				false,
+				false,
+				ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				null,
+				null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Clock Speed feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void addClockSpeedPropertyDescriptor(Object object) {
+		itemPropertyDescriptors
+			.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+				getResourceLocator(),
+				getString("_UI_Processor_clockSpeed_feature"), //$NON-NLS-1$
+				getString("_UI_PropertyDescriptor_description", "_UI_Processor_clockSpeed_feature", //$NON-NLS-1$ //$NON-NLS-2$
+					"_UI_Processor_type"), //$NON-NLS-1$
+				CoffeePackage.Literals.PROCESSOR__CLOCK_SPEED,
+				true,
+				false,
+				false,
+				ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE,
+				null,
+				null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Number Of Cores feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void addNumberOfCoresPropertyDescriptor(Object object) {
+		itemPropertyDescriptors
+			.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+				getResourceLocator(),
+				getString("_UI_Processor_numberOfCores_feature"), //$NON-NLS-1$
+				getString("_UI_PropertyDescriptor_description", "_UI_Processor_numberOfCores_feature", //$NON-NLS-1$ //$NON-NLS-2$
+					"_UI_Processor_type"), //$NON-NLS-1$
+				CoffeePackage.Literals.PROCESSOR__NUMBER_OF_CORES,
+				true,
+				false,
+				false,
+				ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE,
+				null,
+				null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Socketconnector Type feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void addSocketconnectorTypePropertyDescriptor(Object object) {
+		itemPropertyDescriptors
+			.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+				getResourceLocator(),
+				getString("_UI_Processor_socketconnectorType_feature"), //$NON-NLS-1$
+				getString("_UI_PropertyDescriptor_description", "_UI_Processor_socketconnectorType_feature", //$NON-NLS-1$ //$NON-NLS-2$
+					"_UI_Processor_type"), //$NON-NLS-1$
+				CoffeePackage.Literals.PROCESSOR__SOCKETCONNECTOR_TYPE,
+				true,
+				false,
+				false,
+				ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				null,
+				null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Thermal Design Power feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void addThermalDesignPowerPropertyDescriptor(Object object) {
+		itemPropertyDescriptors
+			.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+				getResourceLocator(),
+				getString("_UI_Processor_thermalDesignPower_feature"), //$NON-NLS-1$
+				getString("_UI_PropertyDescriptor_description", "_UI_Processor_thermalDesignPower_feature", //$NON-NLS-1$ //$NON-NLS-2$
+					"_UI_Processor_type"), //$NON-NLS-1$
+				CoffeePackage.Literals.PROCESSOR__THERMAL_DESIGN_POWER,
+				true,
+				false,
+				false,
+				ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE,
+				null,
+				null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Manufactoring Process feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void addManufactoringProcessPropertyDescriptor(Object object) {
+		itemPropertyDescriptors
+			.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+				getResourceLocator(),
+				getString("_UI_Processor_manufactoringProcess_feature"), //$NON-NLS-1$
+				getString("_UI_PropertyDescriptor_description", "_UI_Processor_manufactoringProcess_feature", //$NON-NLS-1$ //$NON-NLS-2$
+					"_UI_Processor_type"), //$NON-NLS-1$
+				CoffeePackage.Literals.PROCESSOR__MANUFACTORING_PROCESS,
+				true,
+				false,
+				false,
+				ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				null,
+				null));
+	}
+
+	/**
+	 * This returns Processor.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/Processor")); //$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) {
+		final String label = ((Processor) object).getVendor();
+		return label == null || label.length() == 0 ? getString("_UI_Processor_type") : //$NON-NLS-1$
+			getString("_UI_Processor_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+	}
+
+	/**
+	 * 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);
+
+		switch (notification.getFeatureID(Processor.class)) {
+		case CoffeePackage.PROCESSOR__VENDOR:
+		case CoffeePackage.PROCESSOR__CLOCK_SPEED:
+		case CoffeePackage.PROCESSOR__NUMBER_OF_CORES:
+		case CoffeePackage.PROCESSOR__SOCKETCONNECTOR_TYPE:
+		case CoffeePackage.PROCESSOR__THERMAL_DESIGN_POWER:
+		case CoffeePackage.PROCESSOR__MANUFACTORING_PROCESS:
+			fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+			return;
+		}
+		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);
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return CoffeeEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/examples/org.eclipse.emfforms.coffee.model.edit/src/org/eclipse/emfforms/coffee/model/coffee/provider/RAMItemProvider.java b/examples/org.eclipse.emfforms.coffee.model.edit/src/org/eclipse/emfforms/coffee/model/coffee/provider/RAMItemProvider.java
new file mode 100644
index 0000000..3a87637
--- /dev/null
+++ b/examples/org.eclipse.emfforms.coffee.model.edit/src/org/eclipse/emfforms/coffee/model/coffee/provider/RAMItemProvider.java
@@ -0,0 +1,214 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
+ */
+package org.eclipse.emfforms.coffee.model.coffee.provider;
+
+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.common.util.ResourceLocator;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.emfforms.coffee.model.coffee.CoffeePackage;
+import org.eclipse.emfforms.coffee.model.coffee.RAM;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.emfforms.coffee.model.coffee.RAM} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class RAMItemProvider
+	extends ItemProviderAdapter
+	implements
+	IEditingDomainItemProvider,
+	ITreeItemContentProvider,
+	IItemLabelProvider,
+	IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public RAMItemProvider(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);
+
+			addClockSpeedPropertyDescriptor(object);
+			addSizePropertyDescriptor(object);
+			addTypePropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Clock Speed feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void addClockSpeedPropertyDescriptor(Object object) {
+		itemPropertyDescriptors
+			.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+				getResourceLocator(),
+				getString("_UI_RAM_clockSpeed_feature"), //$NON-NLS-1$
+				getString("_UI_PropertyDescriptor_description", "_UI_RAM_clockSpeed_feature", "_UI_RAM_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				CoffeePackage.Literals.RAM__CLOCK_SPEED,
+				true,
+				false,
+				false,
+				ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE,
+				null,
+				null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Size feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void addSizePropertyDescriptor(Object object) {
+		itemPropertyDescriptors
+			.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+				getResourceLocator(),
+				getString("_UI_RAM_size_feature"), //$NON-NLS-1$
+				getString("_UI_PropertyDescriptor_description", "_UI_RAM_size_feature", "_UI_RAM_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				CoffeePackage.Literals.RAM__SIZE,
+				true,
+				false,
+				false,
+				ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE,
+				null,
+				null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Type feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void addTypePropertyDescriptor(Object object) {
+		itemPropertyDescriptors
+			.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+				getResourceLocator(),
+				getString("_UI_RAM_type_feature"), //$NON-NLS-1$
+				getString("_UI_PropertyDescriptor_description", "_UI_RAM_type_feature", "_UI_RAM_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				CoffeePackage.Literals.RAM__TYPE,
+				true,
+				false,
+				false,
+				ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				null,
+				null));
+	}
+
+	/**
+	 * This returns RAM.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/RAM")); //$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) {
+		final RAM ram = (RAM) object;
+		return getString("_UI_RAM_type") + " " + ram.getClockSpeed(); //$NON-NLS-1$ //$NON-NLS-2$
+	}
+
+	/**
+	 * 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);
+
+		switch (notification.getFeatureID(RAM.class)) {
+		case CoffeePackage.RAM__CLOCK_SPEED:
+		case CoffeePackage.RAM__SIZE:
+		case CoffeePackage.RAM__TYPE:
+			fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+			return;
+		}
+		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);
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return CoffeeEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/examples/org.eclipse.emfforms.coffee.model.edit/src/org/eclipse/emfforms/coffee/model/coffee/provider/WaterTankItemProvider.java b/examples/org.eclipse.emfforms.coffee.model.edit/src/org/eclipse/emfforms/coffee/model/coffee/provider/WaterTankItemProvider.java
new file mode 100644
index 0000000..1f97910
--- /dev/null
+++ b/examples/org.eclipse.emfforms.coffee.model.edit/src/org/eclipse/emfforms/coffee/model/coffee/provider/WaterTankItemProvider.java
@@ -0,0 +1,107 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
+ */
+package org.eclipse.emfforms.coffee.model.coffee.provider;
+
+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;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.emfforms.coffee.model.coffee.WaterTank} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class WaterTankItemProvider extends ComponentItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public WaterTankItemProvider(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 WaterTank.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/WaterTank")); //$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 getString("_UI_WaterTank_type"); //$NON-NLS-1$
+	}
+
+	/**
+	 * 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.emfforms.coffee.model.viewmodel/.project b/examples/org.eclipse.emfforms.coffee.model.viewmodel/.project
new file mode 100644
index 0000000..8f13aea
--- /dev/null
+++ b/examples/org.eclipse.emfforms.coffee.model.viewmodel/.project
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.emfforms.coffee.model.viewmodel</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.PluginNature</nature>
+	</natures>
+</projectDescription>
diff --git a/examples/org.eclipse.emfforms.coffee.model.viewmodel/META-INF/MANIFEST.MF b/examples/org.eclipse.emfforms.coffee.model.viewmodel/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..b890721
--- /dev/null
+++ b/examples/org.eclipse.emfforms.coffee.model.viewmodel/META-INF/MANIFEST.MF
@@ -0,0 +1,6 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.emfforms.coffee.model.viewmodel
+Bundle-SymbolicName: org.eclipse.emfforms.coffee.model.viewmodel;singleton:=true
+Bundle-Version: 1.17.0.qualifier
+Require-Bundle: org.eclipse.emf.ecp.view.model.provider.xmi
diff --git a/examples/org.eclipse.emfforms.coffee.model.viewmodel/build.properties b/examples/org.eclipse.emfforms.coffee.model.viewmodel/build.properties
new file mode 100644
index 0000000..ebb529c
--- /dev/null
+++ b/examples/org.eclipse.emfforms.coffee.model.viewmodel/build.properties
@@ -0,0 +1,5 @@
+bin.includes = META-INF/,\
+               plugin.xml,\
+               viewmodels/,\
+               coffee.template
+               
\ No newline at end of file
diff --git a/examples/org.eclipse.emfforms.coffee.model.viewmodel/coffee.template b/examples/org.eclipse.emfforms.coffee.model.viewmodel/coffee.template
new file mode 100644
index 0000000..8ed87f9
--- /dev/null
+++ b/examples/org.eclipse.emfforms.coffee.model.viewmodel/coffee.template
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="ASCII"?>
+<org.eclipse.emf.ecp.view.template.model:ViewTemplate xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:org.eclipse.emf.ecp.view.template.model="http://org/eclipse/emf/ecp/view/template/model" xmlns:org.eclipse.emf.ecp.view.template.selector.viewmodelelement.model="http://www.eclipse.org/emf/ecp/view/template/selector/viewmodelelement/model" xmlns:org.eclipse.emf.ecp.view.template.style.table.model="http://www.eclipse.org/emf/ecp/view/template/style/table/model">
+  <styles>
+    <selector xsi:type="org.eclipse.emf.ecp.view.template.selector.viewmodelelement.model:ViewModelElementSelector">
+      <classType href="http://org/eclipse/emf/ecp/view/table/model/150#//TableControl"/>
+    </selector>
+    <properties xsi:type="org.eclipse.emf.ecp.view.template.style.table.model:TableStyleProperty" visibleLines="4"/>
+  </styles>
+</org.eclipse.emf.ecp.view.template.model:ViewTemplate>
diff --git a/examples/org.eclipse.emfforms.coffee.model.viewmodel/plugin.xml b/examples/org.eclipse.emfforms.coffee.model.viewmodel/plugin.xml
new file mode 100644
index 0000000..3a2990a
--- /dev/null
+++ b/examples/org.eclipse.emfforms.coffee.model.viewmodel/plugin.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<?eclipse version="3.4"?><plugin>
+   <extension point="org.eclipse.emf.ecp.view.model.provider.xmi.file">
+<file filePath="viewmodels/ControlUnit.view"/>
+
+   </extension>
+
+<extension point="org.eclipse.emf.ecp.view.template">
+<viewTemplate xmi="coffee.template"/>
+</extension>
+</plugin>
diff --git a/examples/org.eclipse.emfforms.coffee.model.viewmodel/pom.xml b/examples/org.eclipse.emfforms.coffee.model.viewmodel/pom.xml
new file mode 100644
index 0000000..3d5c03c
--- /dev/null
+++ b/examples/org.eclipse.emfforms.coffee.model.viewmodel/pom.xml
@@ -0,0 +1,18 @@
+<?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.emf.ecp</groupId>
+    <artifactId>ecp-examples-parent</artifactId>
+    <version>1.17.0-SNAPSHOT</version>
+    <relativePath>../../releng/org.eclipse.emf.ecp.releng.examples/</relativePath>
+  </parent>
+
+  <groupId>org.eclipse.emf.ecp</groupId>
+  <artifactId>org.eclipse.emfforms.coffee.model.viewmodel</artifactId>
+  <version>1.17.0-SNAPSHOT</version>
+  <packaging>eclipse-plugin</packaging>
+</project>
diff --git a/examples/org.eclipse.emfforms.coffee.model.viewmodel/viewmodels/ControlUnit.view b/examples/org.eclipse.emfforms.coffee.model.viewmodel/viewmodels/ControlUnit.view
new file mode 100644
index 0000000..0a71824
--- /dev/null
+++ b/examples/org.eclipse.emfforms.coffee.model.viewmodel/viewmodels/ControlUnit.view
@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="ASCII"?>
+<org.eclipse.emf.ecp.view.model:View xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:org.eclipse.emf.ecp.view.group.model="http://org/eclipse/emf/ecp/view/group/model" xmlns:org.eclipse.emf.ecp.view.horizontal.model="http://org/eclipse/emf/ecp/view/horizontal/model" xmlns:org.eclipse.emf.ecp.view.model="http://org/eclipse/emf/ecp/view/model/1170" xmlns:org.eclipse.emf.ecp.view.table.model="http://org/eclipse/emf/ecp/view/table/model/150" xmlns:org.eclipse.emf.ecp.view.vertical.model="http://org/eclipse/emf/ecp/view/vertical/model" xmi:id="_4iBP4EDKEeifDej7n0aGUQ" name="ControlUnit">
+  <rootEClass href="http://www.eclipse.org/emfforms/example/coffeemodel#//ControlUnit"/>
+  <children xsi:type="org.eclipse.emf.ecp.view.group.model:Group" xmi:id="_-_7ugEDKEeifDej7n0aGUQ" name="Processor">
+    <children xsi:type="org.eclipse.emf.ecp.view.horizontal.model:HorizontalLayout" xmi:id="_BTCZkEDLEeifDej7n0aGUQ">
+      <children xsi:type="org.eclipse.emf.ecp.view.vertical.model:VerticalLayout" xmi:id="_O-wisEDLEeifDej7n0aGUQ">
+        <children xsi:type="org.eclipse.emf.ecp.view.model:Control" xmi:id="_DW8yEEDLEeifDej7n0aGUQ" name="Control vendor">
+          <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_DW8yEUDLEeifDej7n0aGUQ">
+            <domainModelEFeature xsi:type="ecore:EAttribute" href="http://www.eclipse.org/emfforms/example/coffeemodel#//Processor/vendor"/>
+            <domainModelEReferencePath href="http://www.eclipse.org/emfforms/example/coffeemodel#//ControlUnit/processor"/>
+          </domainModelReference>
+        </children>
+        <children xsi:type="org.eclipse.emf.ecp.view.model:Control" xmi:id="_DXBqkEDLEeifDej7n0aGUQ" name="Control clockSpeed">
+          <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_DXBqkUDLEeifDej7n0aGUQ">
+            <domainModelEFeature xsi:type="ecore:EAttribute" href="http://www.eclipse.org/emfforms/example/coffeemodel#//Processor/clockSpeed"/>
+            <domainModelEReferencePath href="http://www.eclipse.org/emfforms/example/coffeemodel#//ControlUnit/processor"/>
+          </domainModelReference>
+        </children>
+        <children xsi:type="org.eclipse.emf.ecp.view.model:Control" xmi:id="_DXEG0EDLEeifDej7n0aGUQ" name="Control numberOfCores">
+          <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_DXEG0UDLEeifDej7n0aGUQ">
+            <domainModelEFeature xsi:type="ecore:EAttribute" href="http://www.eclipse.org/emfforms/example/coffeemodel#//Processor/numberOfCores"/>
+            <domainModelEReferencePath href="http://www.eclipse.org/emfforms/example/coffeemodel#//ControlUnit/processor"/>
+          </domainModelReference>
+        </children>
+      </children>
+      <children xsi:type="org.eclipse.emf.ecp.view.vertical.model:VerticalLayout" xmi:id="_AlXbQEDLEeifDej7n0aGUQ">
+        <children xsi:type="org.eclipse.emf.ecp.view.model:Control" xmi:id="_DXHxMEDLEeifDej7n0aGUQ" name="Control socketconnectorType">
+          <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_DXHxMUDLEeifDej7n0aGUQ">
+            <domainModelEFeature xsi:type="ecore:EAttribute" href="http://www.eclipse.org/emfforms/example/coffeemodel#//Processor/socketconnectorType"/>
+            <domainModelEReferencePath href="http://www.eclipse.org/emfforms/example/coffeemodel#//ControlUnit/processor"/>
+          </domainModelReference>
+        </children>
+        <children xsi:type="org.eclipse.emf.ecp.view.model:Control" xmi:id="_DXOe4EDLEeifDej7n0aGUQ" name="Control manufactoringProcess">
+          <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_DXOe4UDLEeifDej7n0aGUQ">
+            <domainModelEFeature xsi:type="ecore:EAttribute" href="http://www.eclipse.org/emfforms/example/coffeemodel#//Processor/manufactoringProcess"/>
+            <domainModelEReferencePath href="http://www.eclipse.org/emfforms/example/coffeemodel#//ControlUnit/processor"/>
+          </domainModelReference>
+        </children>
+        <children xsi:type="org.eclipse.emf.ecp.view.model:Control" xmi:id="_DXMCoEDLEeifDej7n0aGUQ" name="Control thermalDesignPower">
+          <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_DXMCoUDLEeifDej7n0aGUQ">
+            <domainModelEFeature xsi:type="ecore:EAttribute" href="http://www.eclipse.org/emfforms/example/coffeemodel#//Processor/thermalDesignPower"/>
+            <domainModelEReferencePath href="http://www.eclipse.org/emfforms/example/coffeemodel#//ControlUnit/processor"/>
+          </domainModelReference>
+        </children>
+      </children>
+    </children>
+  </children>
+  <children xsi:type="org.eclipse.emf.ecp.view.group.model:Group" xmi:id="_qiwOYEfKEeiITNwhimMT5w" name="Display">
+    <children xsi:type="org.eclipse.emf.ecp.view.horizontal.model:HorizontalLayout" xmi:id="_0s6VQEfKEeiITNwhimMT5w">
+      <children xsi:type="org.eclipse.emf.ecp.view.model:Control" xmi:id="_rvl08EfKEeiITNwhimMT5w" name="Control width">
+        <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_wQoXMEfKEeiITNwhimMT5w">
+          <domainModelEFeature xsi:type="ecore:EAttribute" href="http://www.eclipse.org/emfforms/example/coffeemodel#//Display/width"/>
+          <domainModelEReferencePath href="http://www.eclipse.org/emfforms/example/coffeemodel#//ControlUnit/display"/>
+        </domainModelReference>
+      </children>
+      <children xsi:type="org.eclipse.emf.ecp.view.model:Control" xmi:id="_wqhd4EfKEeiITNwhimMT5w" name="Control height">
+        <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_yTUAoEfKEeiITNwhimMT5w">
+          <domainModelEFeature xsi:type="ecore:EAttribute" href="http://www.eclipse.org/emfforms/example/coffeemodel#//Display/height"/>
+          <domainModelEReferencePath href="http://www.eclipse.org/emfforms/example/coffeemodel#//ControlUnit/display"/>
+        </domainModelReference>
+      </children>
+    </children>
+  </children>
+  <children xsi:type="org.eclipse.emf.ecp.view.table.model:TableControl" xmi:id="_9cWmcEDLEeifDej7n0aGUQ">
+    <domainModelReference xsi:type="org.eclipse.emf.ecp.view.table.model:TableDomainModelReference" xmi:id="_BM7VEEDMEeifDej7n0aGUQ">
+      <columnDomainModelReferences xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_BuvosEDMEeifDej7n0aGUQ">
+        <domainModelEFeature xsi:type="ecore:EAttribute" href="http://www.eclipse.org/emfforms/example/coffeemodel#//RAM/clockSpeed"/>
+      </columnDomainModelReferences>
+      <columnDomainModelReferences xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_BuvosUDMEeifDej7n0aGUQ">
+        <domainModelEFeature xsi:type="ecore:EAttribute" href="http://www.eclipse.org/emfforms/example/coffeemodel#//RAM/size"/>
+      </columnDomainModelReferences>
+      <columnDomainModelReferences xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_BuvoskDMEeifDej7n0aGUQ">
+        <domainModelEFeature xsi:type="ecore:EAttribute" href="http://www.eclipse.org/emfforms/example/coffeemodel#//RAM/type"/>
+      </columnDomainModelReferences>
+      <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_BM7VEUDMEeifDej7n0aGUQ">
+        <domainModelEFeature xsi:type="ecore:EReference" href="http://www.eclipse.org/emfforms/example/coffeemodel#//ControlUnit/ram"/>
+      </domainModelReference>
+    </domainModelReference>
+  </children>
+  <children xsi:type="org.eclipse.emf.ecp.view.table.model:TableControl" xmi:id="_2oWbsEDOEeifDej7n0aGUQ">
+    <domainModelReference xsi:type="org.eclipse.emf.ecp.view.table.model:TableDomainModelReference" xmi:id="_2oWbsUDOEeifDej7n0aGUQ">
+      <columnDomainModelReferences xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_2oWbskDOEeifDej7n0aGUQ">
+        <domainModelEFeature xsi:type="ecore:EAttribute" href="http://www.eclipse.org/emfforms/example/coffeemodel#//Activity/name"/>
+      </columnDomainModelReferences>
+      <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_2oWbs0DOEeifDej7n0aGUQ">
+        <domainModelEFeature xsi:type="ecore:EReference" href="http://www.eclipse.org/emfforms/example/coffeemodel#//Component/activities"/>
+      </domainModelReference>
+    </domainModelReference>
+  </children>
+  <children xsi:type="org.eclipse.emf.ecp.view.group.model:Group" xmi:id="_U2WxwEDXEeifDej7n0aGUQ" name="User Description">
+    <children xsi:type="org.eclipse.emf.ecp.view.model:Control" xmi:id="_U2XY0EDXEeifDej7n0aGUQ" name="Control userDescription" labelAlignment="None">
+      <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_U2XY0UDXEeifDej7n0aGUQ">
+        <domainModelEFeature xsi:type="ecore:EAttribute" href="http://www.eclipse.org/emfforms/example/coffeemodel#//ControlUnit/userDescription"/>
+      </domainModelReference>
+    </children>
+  </children>
+  <ecorePaths>/org.eclipse.emfforms.coffee.model/model/Coffee.ecore</ecorePaths>
+</org.eclipse.emf.ecp.view.model:View>
diff --git a/examples/org.eclipse.emfforms.coffee.model/.checkstyle b/examples/org.eclipse.emfforms.coffee.model/.checkstyle
new file mode 100644
index 0000000..dccf8af
--- /dev/null
+++ b/examples/org.eclipse.emfforms.coffee.model/.checkstyle
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<fileset-config file-format-version="1.2.0" simple-config="false" sync-formatter="false">
+  <local-check-config name="ESMCheckstyle" location="/org.eclipse.emf.ecp.makeithappen.model/checkstyle/esmCheckstyle.xml" type="project" description="">
+    <additional-data name="protect-config-file" value="false"/>
+  </local-check-config>
+  <fileset name="Java Files" enabled="true" check-config-name="ESMCheckstyle" local="true">
+    <file-match-pattern match-pattern=".java" include-pattern="true"/>
+  </fileset>
+</fileset-config>
diff --git a/examples/org.eclipse.emfforms.coffee.model/.classpath b/examples/org.eclipse.emfforms.coffee.model/.classpath
new file mode 100644
index 0000000..deb6736
--- /dev/null
+++ b/examples/org.eclipse.emfforms.coffee.model/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/examples/org.eclipse.emfforms.coffee.model/.project b/examples/org.eclipse.emfforms.coffee.model/.project
new file mode 100644
index 0000000..c42d08f
--- /dev/null
+++ b/examples/org.eclipse.emfforms.coffee.model/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.emfforms.coffee.model</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>net.sf.eclipsecs.core.CheckstyleBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>net.sf.eclipsecs.core.CheckstyleNature</nature>
+	</natures>
+</projectDescription>
diff --git a/examples/org.eclipse.emfforms.coffee.model/.settings/org.eclipse.core.resources.prefs b/examples/org.eclipse.emfforms.coffee.model/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..f548abb
--- /dev/null
+++ b/examples/org.eclipse.emfforms.coffee.model/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,6 @@
+eclipse.preferences.version=1
+
+encoding//model/etypes.ecore=UTF-8
+
+
+encoding/<project>=UTF-8
diff --git a/examples/org.eclipse.emfforms.coffee.model/.settings/org.eclipse.core.runtime.prefs b/examples/org.eclipse.emfforms.coffee.model/.settings/org.eclipse.core.runtime.prefs
new file mode 100644
index 0000000..5a0ad22
--- /dev/null
+++ b/examples/org.eclipse.emfforms.coffee.model/.settings/org.eclipse.core.runtime.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+line.separator=\n
diff --git a/examples/org.eclipse.emfforms.coffee.model/.settings/org.eclipse.jdt.core.prefs b/examples/org.eclipse.emfforms.coffee.model/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..66c53c1
--- /dev/null
+++ b/examples/org.eclipse.emfforms.coffee.model/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,419 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.builder.cleanOutputFolder=clean
+org.eclipse.jdt.core.builder.duplicateResourceTask=warning
+org.eclipse.jdt.core.builder.invalidClasspath=abort
+org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
+org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=
+org.eclipse.jdt.core.circularClasspath=error
+org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
+org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
+org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error
+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.annotation.inheritNullAnnotations=disabled
+org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
+org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
+org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
+org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.6
+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.doc.comment.support=enabled
+org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
+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=enabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
+org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=disabled
+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.invalidJavadoc=warning
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=disabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=public
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
+org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=warning
+org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
+org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=public
+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=warning
+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.nonnullParameterAnnotationDropped=warning
+org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
+org.eclipse.jdt.core.compiler.problem.nullReference=warning
+org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
+org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
+org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
+org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
+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.syntacticNullAnalysisForFields=disabled
+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.unclosedCloseable=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=warning
+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.unusedTypeParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.source=1.6
+org.eclipse.jdt.core.compiler.taskCaseSensitive=enabled
+org.eclipse.jdt.core.compiler.taskPriorities=NORMAL,HIGH,HIGH,LOW,LOW,LOW,LOW,LOW,NORMAL
+org.eclipse.jdt.core.compiler.taskTags=TODO,FIXME,XXX,PERF,MEM,POLISH,@generated NOT,@ADDED,APITODO
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+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_binary_expression=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_method_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=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_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=false
+org.eclipse.jdt.core.formatter.comment.format_block_comments=true
+org.eclipse.jdt.core.formatter.comment.format_header=true
+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=do not 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=1
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=1
+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=do not 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_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_binary_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_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_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_unary_operator=do not 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_binary_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_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_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_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=false
+org.eclipse.jdt.core.formatter.join_wrapped_lines=false
+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=120
+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_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
+org.eclipse.jdt.core.incompatibleJDKLevel=ignore
+org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/examples/org.eclipse.emfforms.coffee.model/.settings/org.eclipse.jdt.launching.prefs b/examples/org.eclipse.emfforms.coffee.model/.settings/org.eclipse.jdt.launching.prefs
new file mode 100644
index 0000000..3bb2352
--- /dev/null
+++ b/examples/org.eclipse.emfforms.coffee.model/.settings/org.eclipse.jdt.launching.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.launching.PREF_STRICTLY_COMPATIBLE_JRE_NOT_AVAILABLE=ignore
diff --git a/examples/org.eclipse.emfforms.coffee.model/.settings/org.eclipse.jdt.ui.prefs b/examples/org.eclipse.emfforms.coffee.model/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 0000000..8bc4bb4
--- /dev/null
+++ b/examples/org.eclipse.emfforms.coffee.model/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,127 @@
+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_functional_interfaces=false
+cleanup.convert_to_enhanced_for_loop=false
+cleanup.correct_indentation=false
+cleanup.format_source_code=true
+cleanup.format_source_code_changes_only=false
+cleanup.insert_inferred_type_arguments=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=true
+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=true
+cleanup.remove_redundant_type_arguments=true
+cleanup.remove_trailing_whitespaces=true
+cleanup.remove_trailing_whitespaces_all=true
+cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_casts=false
+cleanup.remove_unnecessary_nls_tags=false
+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=true
+cleanup.remove_unused_private_types=true
+cleanup.sort_members=false
+cleanup.sort_members_all=false
+cleanup.use_anonymous_class_creation=false
+cleanup.use_blocks=true
+cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_lambda=true
+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.use_type_arguments=false
+cleanup_profile=_esmCleanUp
+cleanup_settings_version=2
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+formatter_profile=_esmFormatter
+formatter_settings_version=12
+org.eclipse.jdt.ui.exception.name=ex
+org.eclipse.jdt.ui.gettersetter.use.is=true
+org.eclipse.jdt.ui.javadoc=true
+org.eclipse.jdt.ui.keywordthis=false
+org.eclipse.jdt.ui.overrideannotation=true
+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 * Copyright (c) 2011-${year} EclipseSource Muenchen GmbH and others.\r\n * \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 * ${user} - initial API and implementation\r\n ******************************************************************************/</template><template autoinsert\="true" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * @author ${user}\r\n *\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment"/><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 * {@inheritDoc}\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">\t\t\t// TODO Auto-generated catch block\r\n\t\t\t// Do NOT catch all Exceptions ("catch (Exception e)")\r\n\t\t\t// Log AND handle Exceptions if possible \r\n            //\r\n            // You can just uncomment one of the lines below to log an exception\:\r\n\t\t\t// logException will show the logged excpetion to the user\r\n\t\t\t// ModelUtil.logException(${exception_var});\r\n\t\t\t// ModelUtil.logException("YOUR MESSAGE HERE", ${exception_var});\r\n\t\t\t// logWarning will only add the message to the error log\r\n\t\t\t// ModelUtil.logWarning("YOUR MESSAGE HERE", ${exception_var});\r\n\t\t\t// ModelUtil.logWarning("YOUR MESSAGE HERE");\r\n\t\t\t//\t\t\t\r\n\t\t\t// If handling is not possible declare and rethrow Exception</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_functional_interfaces=false
+sp_cleanup.convert_to_enhanced_for_loop=false
+sp_cleanup.correct_indentation=false
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.insert_inferred_type_arguments=false
+sp_cleanup.make_local_variable_final=true
+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=true
+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=true
+sp_cleanup.remove_redundant_type_arguments=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=false
+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=true
+sp_cleanup.remove_unused_private_types=true
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.use_anonymous_class_creation=false
+sp_cleanup.use_blocks=true
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_lambda=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
+sp_cleanup.use_type_arguments=false
diff --git a/examples/org.eclipse.emfforms.coffee.model/.settings/org.eclipse.ltk.core.refactoring.prefs b/examples/org.eclipse.emfforms.coffee.model/.settings/org.eclipse.ltk.core.refactoring.prefs
new file mode 100644
index 0000000..864e30f
--- /dev/null
+++ b/examples/org.eclipse.emfforms.coffee.model/.settings/org.eclipse.ltk.core.refactoring.prefs
@@ -0,0 +1,3 @@
+#Thu Feb 04 09:44:24 CET 2010
+eclipse.preferences.version=1
+org.eclipse.ltk.core.refactoring.enable.project.refactoring.history=false
diff --git a/examples/org.eclipse.emfforms.coffee.model/.settings/org.eclipse.pde.api.tools.prefs b/examples/org.eclipse.emfforms.coffee.model/.settings/org.eclipse.pde.api.tools.prefs
new file mode 100644
index 0000000..e4e3c00
--- /dev/null
+++ b/examples/org.eclipse.emfforms.coffee.model/.settings/org.eclipse.pde.api.tools.prefs
@@ -0,0 +1,97 @@
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_TYPE=Error
+API_USE_SCAN_FIELD_SEVERITY=Error
+API_USE_SCAN_METHOD_SEVERITY=Error
+API_USE_SCAN_TYPE_SEVERITY=Error
+CLASS_ELEMENT_TYPE_ADDED_METHOD=Error
+CLASS_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CLASS_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+CLASS_ELEMENT_TYPE_REMOVED_CONSTRUCTOR=Error
+CLASS_ELEMENT_TYPE_REMOVED_FIELD=Error
+CLASS_ELEMENT_TYPE_REMOVED_METHOD=Error
+CLASS_ELEMENT_TYPE_REMOVED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+ENUM_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ENUM_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ENUM_ELEMENT_TYPE_REMOVED_ENUM_CONSTANT=Error
+ENUM_ELEMENT_TYPE_REMOVED_FIELD=Error
+ENUM_ELEMENT_TYPE_REMOVED_METHOD=Error
+ENUM_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+FIELD_ELEMENT_TYPE_ADDED_VALUE=Error
+FIELD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+FIELD_ELEMENT_TYPE_CHANGED_FINAL_TO_NON_FINAL_STATIC_CONSTANT=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_TYPE=Error
+FIELD_ELEMENT_TYPE_CHANGED_VALUE=Error
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENT=Error
+FIELD_ELEMENT_TYPE_REMOVED_VALUE=Error
+ILLEGAL_EXTEND=Warning
+ILLEGAL_IMPLEMENT=Warning
+ILLEGAL_INSTANTIATE=Warning
+ILLEGAL_OVERRIDE=Warning
+ILLEGAL_REFERENCE=Warning
+INTERFACE_ELEMENT_TYPE_ADDED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_SUPER_INTERFACE_WITH_METHODS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+INVALID_JAVADOC_TAG=Warning
+INVALID_REFERENCE_IN_SYSTEM_LIBRARIES=Error
+LEAK_EXTEND=Warning
+LEAK_FIELD_DECL=Warning
+LEAK_IMPLEMENT=Warning
+LEAK_METHOD_PARAM=Warning
+LEAK_METHOD_RETURN_TYPE=Warning
+METHOD_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+METHOD_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+METHOD_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+MISSING_EE_DESCRIPTIONS=Error
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+UNUSED_PROBLEM_FILTERS=Ignore
+automatically_removed_unused_problem_filters=Disabled
+eclipse.preferences.version=1
+incompatible_api_component_version=Error
+incompatible_api_component_version_include_major_without_breaking_change=Disabled
+incompatible_api_component_version_include_minor_without_api_change=Disabled
+invalid_since_tag_version=Error
+malformed_since_tag=Error
+missing_since_tag=Error
+report_api_breakage_when_major_version_incremented=Disabled
+report_resolution_errors_api_component=Warning
diff --git a/examples/org.eclipse.emfforms.coffee.model/.settings/org.eclipse.pde.ds.annotations.prefs b/examples/org.eclipse.emfforms.coffee.model/.settings/org.eclipse.pde.ds.annotations.prefs
new file mode 100644
index 0000000..960a807
--- /dev/null
+++ b/examples/org.eclipse.emfforms.coffee.model/.settings/org.eclipse.pde.ds.annotations.prefs
@@ -0,0 +1,6 @@
+eclipse.preferences.version=1
+enabled=true
+generateBundleActivationPolicyLazy=true
+path=OSGI-INF
+validationErrorLevel=error
+validationErrorLevel.missingImplicitUnbindMethod=error
diff --git a/examples/org.eclipse.emfforms.coffee.model/.settings/org.eclipse.pde.prefs b/examples/org.eclipse.emfforms.coffee.model/.settings/org.eclipse.pde.prefs
new file mode 100644
index 0000000..0bbee3c
--- /dev/null
+++ b/examples/org.eclipse.emfforms.coffee.model/.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=1
+compilers.p.missing-version-import-package=1
+compilers.p.missing-version-require-bundle=1
+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/examples/org.eclipse.emfforms.coffee.model/META-INF/MANIFEST.MF b/examples/org.eclipse.emfforms.coffee.model/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..151a666
--- /dev/null
+++ b/examples/org.eclipse.emfforms.coffee.model/META-INF/MANIFEST.MF
@@ -0,0 +1,16 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.emfforms.coffee.model;singleton:=true
+Bundle-Version: 1.17.0.qualifier
+Bundle-ClassPath: .
+Bundle-Vendor: Eclipse Modeling Project
+Bundle-Localization: plugin
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Export-Package: org.eclipse.emfforms.coffee.model.coffee;version="1.17.0",
+ org.eclipse.emfforms.coffee.model.coffee.impl;version="1.17.0";x-internal:=true,
+ org.eclipse.emfforms.coffee.model.coffee.util;version="1.17.0"
+Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.5.0,4.0.0)",
+ org.eclipse.emf.ecore;bundle-version="[2.5.0,3.0.0)";visibility:=reexport
+Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emfforms.coffee.model
diff --git a/examples/org.eclipse.emfforms.coffee.model/about.html b/examples/org.eclipse.emfforms.coffee.model/about.html
new file mode 100644
index 0000000..d35d5ae
--- /dev/null
+++ b/examples/org.eclipse.emfforms.coffee.model/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, 2007</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>
diff --git a/examples/org.eclipse.emfforms.coffee.model/about.ini b/examples/org.eclipse.emfforms.coffee.model/about.ini
new file mode 100644
index 0000000..911c4c7
--- /dev/null
+++ b/examples/org.eclipse.emfforms.coffee.model/about.ini
@@ -0,0 +1,14 @@
+# about.ini
+# contains information about a feature
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# "%key" are externalized strings defined in about.properties
+# This file does not need to be translated.
+
+# Property "aboutText" contains blurb for "About" dialog (translated)
+aboutText=%featureText
+
+# Property "featureImage" contains path to feature image (32x32)
+featureImage=modeling32.png
+
+# Property "appName" contains name of the application (translated)
+appName=%featureName
\ No newline at end of file
diff --git a/examples/org.eclipse.emfforms.coffee.model/about.mappings b/examples/org.eclipse.emfforms.coffee.model/about.mappings
new file mode 100644
index 0000000..f2954d5
--- /dev/null
+++ b/examples/org.eclipse.emfforms.coffee.model/about.mappings
@@ -0,0 +1,6 @@
+# about.mappings
+# contains fill-ins for about.properties
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file does not need to be translated.
+
+0=${BUILD_ID}
\ No newline at end of file
diff --git a/examples/org.eclipse.emfforms.coffee.model/about.properties b/examples/org.eclipse.emfforms.coffee.model/about.properties
new file mode 100644
index 0000000..2a7404f
--- /dev/null
+++ b/examples/org.eclipse.emfforms.coffee.model/about.properties
@@ -0,0 +1,31 @@
+# Copyright (c) 2011, 2014 Eclipsesource Munich GmbH 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:
+#    EclipseSource - initial API and implementation
+   
+# NLS_MESSAGEFORMAT_VAR
+
+# ==============================================================================
+# Do not change the properties between this line and the last line containing:
+# %%% END OF TRANSLATED PROPERTIES %%%
+# Instead, either redefine an existing property, or create a new property,
+# append it to the end of the file, and change the code to use the new name.
+# ==============================================================================
+
+featureName = EMF Forms
+featureText = EMF Forms\n\
+Version: {featureVersion}\n\
+Build id: {0}\n\
+\n\
+Copyright (c) 2011, 2018 EclipseSource Munich GmbH and others. All rights reserved.\n\
+\n\
+Visit http://www.eclipse.org/ecp
+
+# ==============================================================================
+# %%% END OF TRANSLATED PROPERTIES %%%
+# The above properties have been shipped for translation.
+# ==============================================================================
diff --git a/examples/org.eclipse.emfforms.coffee.model/build.properties b/examples/org.eclipse.emfforms.coffee.model/build.properties
new file mode 100644
index 0000000..4465407
--- /dev/null
+++ b/examples/org.eclipse.emfforms.coffee.model/build.properties
@@ -0,0 +1,10 @@
+#
+
+bin.includes = .,\
+               model/,\
+               META-INF/,\
+               plugin.xml,\
+               plugin.properties
+jars.compile.order = .
+source.. = src/
+output.. = bin/
diff --git a/examples/org.eclipse.emfforms.coffee.model/model/Coffee.ecore b/examples/org.eclipse.emfforms.coffee.model/model/Coffee.ecore
new file mode 100644
index 0000000..41f0407
--- /dev/null
+++ b/examples/org.eclipse.emfforms.coffee.model/model/Coffee.ecore
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="coffee" nsURI="http://www.eclipse.org/emfforms/example/coffeemodel"
+    nsPrefix="org.eclipse.emfforms.coffee.model">
+  <eClassifiers xsi:type="ecore:EClass" name="Component" abstract="true">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="children" upperBound="-1"
+        eType="#//Component" containment="true" eOpposite="#//Component/parent"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="parent" eType="#//Component"
+        eOpposite="#//Component/children"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="activities" upperBound="-1"
+        eType="#//Activity" containment="true"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Machine" eSuperTypes="#//Component">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="ControlUnit" eSuperTypes="#//Component">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="processor" lowerBound="1"
+        eType="#//Processor" containment="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="dimension" lowerBound="1"
+        eType="#//Dimension"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="ram" lowerBound="1" upperBound="-1"
+        eType="#//RAM" containment="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="display" eType="#//Display"
+        containment="true"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="userDescription" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="BrewingUnit" eSuperTypes="#//Component"/>
+  <eClassifiers xsi:type="ecore:EClass" name="DipTray" eSuperTypes="#//Component"/>
+  <eClassifiers xsi:type="ecore:EClass" name="WaterTank" eSuperTypes="#//Component"/>
+  <eClassifiers xsi:type="ecore:EClass" name="Processor">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="vendor" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="clockSpeed" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="numberOfCores" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="socketconnectorType" eType="#//SocketConnectorType"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="thermalDesignPower" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="manufactoringProcess" eType="#//ManufactoringProcess"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="RAM">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="clockSpeed" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="size" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="type" eType="#//RamType"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Activity">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Dimension">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="width" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="height" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="length" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EEnum" name="SocketConnectorType">
+    <eLiterals name="A1T"/>
+    <eLiterals name="Z51" value="1"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EEnum" name="ManufactoringProcess">
+    <eLiterals name="nm18" literal="18nm"/>
+    <eLiterals name="nm25" value="1"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EEnum" name="RamType">
+    <eLiterals name="SODIMM" literal="SO-DIMM"/>
+    <eLiterals name="SIDIMM" literal="SI-DIMM"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Display">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="width" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="height" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+  </eClassifiers>
+</ecore:EPackage>
diff --git a/examples/org.eclipse.emfforms.coffee.model/model/Coffee.genmodel b/examples/org.eclipse.emfforms.coffee.model/model/Coffee.genmodel
new file mode 100644
index 0000000..c8e2d77
--- /dev/null
+++ b/examples/org.eclipse.emfforms.coffee.model/model/Coffee.genmodel
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<genmodel:GenModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel"
+    copyrightText="Copyright (c) 2011-2018 EclipseSource Muenchen GmbH and others.&#xD;&#xA;&#xD;&#xA;All rights reserved. This program and the accompanying materials&#xD;&#xA;are made available under the terms of the Eclipse Public License v1.0&#xD;&#xA;which accompanies this distribution, and is available at&#xD;&#xA;http://www.eclipse.org/legal/epl-v10.html&#xD;&#xA;&#xD;&#xA;Contributors:&#xD;&#xA;EclipseSource Munich - initial API and implementation"
+    modelDirectory="/org.eclipse.emfforms.coffee.model/src" editDirectory="/org.eclipse.emfforms.coffee.model.edit/src"
+    editorDirectory="/org.eclipse.emfforms.coffee.model.editor/src-gen" modelPluginID="org.eclipse.emfforms.coffee.model"
+    redirection="" modelName="Coffee" editPluginClass="org.eclipse.emfforms.coffee.model.coffee.provider.CoffeeEditPlugin"
+    editorPluginClass="org.eclipse.emfforms.coffee.model.coffee.presentation.CoffeeEditorPlugin"
+    nonNLSMarkers="true" rootExtendsClass="org.eclipse.emf.ecore.impl.MinimalEObjectImpl$Container"
+    codeFormatting="true" commentFormatting="true" testSuiteClass="org.eclipse.emfforms.coffee.model.coffee.tests.CoffeeAllTests"
+    importerID="org.eclipse.emf.importer.ecore" complianceLevel="7.0" copyrightFields="false"
+    operationReflection="true" importOrganizing="true" cleanup="true">
+  <foreignModel>Coffee.ecore</foreignModel>
+  <testsDirectory xsi:nil="true"/>
+  <genPackages prefix="Coffee" basePackage="org.eclipse.emfforms.coffee.model" disposableProviderFactory="true"
+      ecorePackage="Coffee.ecore#/">
+    <genEnums typeSafeEnumCompatible="false" ecoreEnum="Coffee.ecore#//SocketConnectorType">
+      <genEnumLiterals ecoreEnumLiteral="Coffee.ecore#//SocketConnectorType/A1T"/>
+      <genEnumLiterals ecoreEnumLiteral="Coffee.ecore#//SocketConnectorType/Z51"/>
+    </genEnums>
+    <genEnums typeSafeEnumCompatible="false" ecoreEnum="Coffee.ecore#//ManufactoringProcess">
+      <genEnumLiterals ecoreEnumLiteral="Coffee.ecore#//ManufactoringProcess/nm18"/>
+      <genEnumLiterals ecoreEnumLiteral="Coffee.ecore#//ManufactoringProcess/nm25"/>
+    </genEnums>
+    <genEnums typeSafeEnumCompatible="false" ecoreEnum="Coffee.ecore#//RamType">
+      <genEnumLiterals ecoreEnumLiteral="Coffee.ecore#//RamType/SODIMM"/>
+      <genEnumLiterals ecoreEnumLiteral="Coffee.ecore#//RamType/SIDIMM"/>
+    </genEnums>
+    <genClasses image="false" ecoreClass="Coffee.ecore#//Component">
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Coffee.ecore#//Component/children"/>
+      <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference Coffee.ecore#//Component/parent"/>
+      <genFeatures property="None" createChild="true" ecoreFeature="ecore:EReference Coffee.ecore#//Component/activities"/>
+    </genClasses>
+    <genClasses ecoreClass="Coffee.ecore#//Machine">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Coffee.ecore#//Machine/name"/>
+    </genClasses>
+    <genClasses ecoreClass="Coffee.ecore#//ControlUnit">
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Coffee.ecore#//ControlUnit/processor"/>
+      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference Coffee.ecore#//ControlUnit/dimension"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Coffee.ecore#//ControlUnit/ram"/>
+      <genFeatures property="None" createChild="false" ecoreFeature="ecore:EReference Coffee.ecore#//ControlUnit/display"/>
+      <genFeatures createChild="false" propertyMultiLine="true" ecoreFeature="ecore:EAttribute Coffee.ecore#//ControlUnit/userDescription"/>
+    </genClasses>
+    <genClasses ecoreClass="Coffee.ecore#//BrewingUnit"/>
+    <genClasses ecoreClass="Coffee.ecore#//DipTray"/>
+    <genClasses ecoreClass="Coffee.ecore#//WaterTank"/>
+    <genClasses ecoreClass="Coffee.ecore#//Processor">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Coffee.ecore#//Processor/vendor"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Coffee.ecore#//Processor/clockSpeed"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Coffee.ecore#//Processor/numberOfCores"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Coffee.ecore#//Processor/socketconnectorType"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Coffee.ecore#//Processor/thermalDesignPower"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Coffee.ecore#//Processor/manufactoringProcess"/>
+    </genClasses>
+    <genClasses ecoreClass="Coffee.ecore#//RAM">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Coffee.ecore#//RAM/clockSpeed"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Coffee.ecore#//RAM/size"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Coffee.ecore#//RAM/type"/>
+    </genClasses>
+    <genClasses ecoreClass="Coffee.ecore#//Activity">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Coffee.ecore#//Activity/name"/>
+    </genClasses>
+    <genClasses ecoreClass="Coffee.ecore#//Dimension">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Coffee.ecore#//Dimension/width"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Coffee.ecore#//Dimension/height"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Coffee.ecore#//Dimension/length"/>
+    </genClasses>
+    <genClasses ecoreClass="Coffee.ecore#//Display">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Coffee.ecore#//Display/width"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Coffee.ecore#//Display/height"/>
+    </genClasses>
+  </genPackages>
+</genmodel:GenModel>
diff --git a/examples/org.eclipse.emfforms.coffee.model/modeling32.png b/examples/org.eclipse.emfforms.coffee.model/modeling32.png
new file mode 100644
index 0000000..6b08de2
--- /dev/null
+++ b/examples/org.eclipse.emfforms.coffee.model/modeling32.png
Binary files differ
diff --git a/examples/org.eclipse.emfforms.coffee.model/plugin.properties b/examples/org.eclipse.emfforms.coffee.model/plugin.properties
new file mode 100644
index 0000000..958974e
--- /dev/null
+++ b/examples/org.eclipse.emfforms.coffee.model/plugin.properties
@@ -0,0 +1,4 @@
+#
+
+pluginName = Coffee Model
+providerName = www.example.org
diff --git a/examples/org.eclipse.emfforms.coffee.model/plugin.xml b/examples/org.eclipse.emfforms.coffee.model/plugin.xml
new file mode 100644
index 0000000..8ad159c
--- /dev/null
+++ b/examples/org.eclipse.emfforms.coffee.model/plugin.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<!--
+-->
+
+<plugin>
+
+   <extension point="org.eclipse.emf.ecore.generated_package">
+      <!-- @generated Coffee -->
+      <package
+            uri="http://www.eclipse.org/emfforms/example/coffeemodel"
+            class="org.eclipse.emfforms.coffee.model.coffee.CoffeePackage"
+            genModel="model/Coffee.genmodel"/>
+   </extension>
+
+</plugin>
diff --git a/examples/org.eclipse.emfforms.coffee.model/pom.xml b/examples/org.eclipse.emfforms.coffee.model/pom.xml
new file mode 100644
index 0000000..f907464
--- /dev/null
+++ b/examples/org.eclipse.emfforms.coffee.model/pom.xml
@@ -0,0 +1,18 @@
+<?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.emf.ecp</groupId>

+    <artifactId>ecp-examples-parent</artifactId>

+    <version>1.17.0-SNAPSHOT</version>

+    <relativePath>../../releng/org.eclipse.emf.ecp.releng.examples/</relativePath>

+  </parent>

+

+  <groupId>org.eclipse.emf.ecp</groupId>

+  <artifactId>org.eclipse.emfforms.coffee.model</artifactId>

+  <version>1.17.0-SNAPSHOT</version>

+  <packaging>eclipse-plugin</packaging>

+</project>

diff --git a/examples/org.eclipse.emfforms.coffee.model/src/org/eclipse/emfforms/coffee/model/coffee/Activity.java b/examples/org.eclipse.emfforms.coffee.model/src/org/eclipse/emfforms/coffee/model/coffee/Activity.java
new file mode 100644
index 0000000..64c400e
--- /dev/null
+++ b/examples/org.eclipse.emfforms.coffee.model/src/org/eclipse/emfforms/coffee/model/coffee/Activity.java
@@ -0,0 +1,62 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
+ */
+package org.eclipse.emfforms.coffee.model.coffee;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Activity</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.emfforms.coffee.model.coffee.Activity#getName <em>Name</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.emfforms.coffee.model.coffee.CoffeePackage#getActivity()
+ * @model
+ * @generated
+ */
+public interface Activity extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Name</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Name</em>' attribute.
+	 * @see #setName(String)
+	 * @see org.eclipse.emfforms.coffee.model.coffee.CoffeePackage#getActivity_Name()
+	 * @model required="true"
+	 * @generated
+	 */
+	String getName();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.emfforms.coffee.model.coffee.Activity#getName <em>Name</em>}'
+	 * attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value the new value of the '<em>Name</em>' attribute.
+	 * @see #getName()
+	 * @generated
+	 */
+	void setName(String value);
+
+} // Activity
diff --git a/examples/org.eclipse.emfforms.coffee.model/src/org/eclipse/emfforms/coffee/model/coffee/BrewingUnit.java b/examples/org.eclipse.emfforms.coffee.model/src/org/eclipse/emfforms/coffee/model/coffee/BrewingUnit.java
new file mode 100644
index 0000000..62c2f96
--- /dev/null
+++ b/examples/org.eclipse.emfforms.coffee.model/src/org/eclipse/emfforms/coffee/model/coffee/BrewingUnit.java
@@ -0,0 +1,25 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
+ */
+package org.eclipse.emfforms.coffee.model.coffee;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Brewing Unit</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.emfforms.coffee.model.coffee.CoffeePackage#getBrewingUnit()
+ * @model
+ * @generated
+ */
+public interface BrewingUnit extends Component {
+} // BrewingUnit
diff --git a/examples/org.eclipse.emfforms.coffee.model/src/org/eclipse/emfforms/coffee/model/coffee/CoffeeFactory.java b/examples/org.eclipse.emfforms.coffee.model/src/org/eclipse/emfforms/coffee/model/coffee/CoffeeFactory.java
new file mode 100644
index 0000000..a386fa2
--- /dev/null
+++ b/examples/org.eclipse.emfforms.coffee.model/src/org/eclipse/emfforms/coffee/model/coffee/CoffeeFactory.java
@@ -0,0 +1,145 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
+ */
+package org.eclipse.emfforms.coffee.model.coffee;
+
+import org.eclipse.emf.ecore.EFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Factory</b> for the model.
+ * It provides a create method for each non-abstract class of the model.
+ * <!-- end-user-doc -->
+ *
+ * @see org.eclipse.emfforms.coffee.model.coffee.CoffeePackage
+ * @generated
+ */
+public interface CoffeeFactory extends EFactory {
+	/**
+	 * The singleton instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	CoffeeFactory eINSTANCE = org.eclipse.emfforms.coffee.model.coffee.impl.CoffeeFactoryImpl.init();
+
+	/**
+	 * Returns a new object of class '<em>Machine</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return a new object of class '<em>Machine</em>'.
+	 * @generated
+	 */
+	Machine createMachine();
+
+	/**
+	 * Returns a new object of class '<em>Control Unit</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return a new object of class '<em>Control Unit</em>'.
+	 * @generated
+	 */
+	ControlUnit createControlUnit();
+
+	/**
+	 * Returns a new object of class '<em>Brewing Unit</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return a new object of class '<em>Brewing Unit</em>'.
+	 * @generated
+	 */
+	BrewingUnit createBrewingUnit();
+
+	/**
+	 * Returns a new object of class '<em>Dip Tray</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return a new object of class '<em>Dip Tray</em>'.
+	 * @generated
+	 */
+	DipTray createDipTray();
+
+	/**
+	 * Returns a new object of class '<em>Water Tank</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return a new object of class '<em>Water Tank</em>'.
+	 * @generated
+	 */
+	WaterTank createWaterTank();
+
+	/**
+	 * Returns a new object of class '<em>Processor</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return a new object of class '<em>Processor</em>'.
+	 * @generated
+	 */
+	Processor createProcessor();
+
+	/**
+	 * Returns a new object of class '<em>RAM</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return a new object of class '<em>RAM</em>'.
+	 * @generated
+	 */
+	RAM createRAM();
+
+	/**
+	 * Returns a new object of class '<em>Activity</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return a new object of class '<em>Activity</em>'.
+	 * @generated
+	 */
+	Activity createActivity();
+
+	/**
+	 * Returns a new object of class '<em>Dimension</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return a new object of class '<em>Dimension</em>'.
+	 * @generated
+	 */
+	Dimension createDimension();
+
+	/**
+	 * Returns a new object of class '<em>Display</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return a new object of class '<em>Display</em>'.
+	 * @generated
+	 */
+	Display createDisplay();
+
+	/**
+	 * Returns the package supported by this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the package supported by this factory.
+	 * @generated
+	 */
+	CoffeePackage getCoffeePackage();
+
+} // CoffeeFactory
diff --git a/examples/org.eclipse.emfforms.coffee.model/src/org/eclipse/emfforms/coffee/model/coffee/CoffeePackage.java b/examples/org.eclipse.emfforms.coffee.model/src/org/eclipse/emfforms/coffee/model/coffee/CoffeePackage.java
new file mode 100644
index 0000000..5381134
--- /dev/null
+++ b/examples/org.eclipse.emfforms.coffee.model/src/org/eclipse/emfforms/coffee/model/coffee/CoffeePackage.java
@@ -0,0 +1,1737 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
+ */
+package org.eclipse.emfforms.coffee.model.coffee;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EEnum;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Package</b> for the model.
+ * It contains accessors for the meta objects to represent
+ * <ul>
+ * <li>each class,</li>
+ * <li>each feature of each class,</li>
+ * <li>each operation of each class,</li>
+ * <li>each enum,</li>
+ * <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ *
+ * @see org.eclipse.emfforms.coffee.model.coffee.CoffeeFactory
+ * @model kind="package"
+ * @generated
+ */
+public interface CoffeePackage extends EPackage {
+	/**
+	 * The package name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	String eNAME = "coffee"; //$NON-NLS-1$
+
+	/**
+	 * The package namespace URI.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	String eNS_URI = "http://www.eclipse.org/emfforms/example/coffeemodel"; //$NON-NLS-1$
+
+	/**
+	 * The package namespace name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	String eNS_PREFIX = "org.eclipse.emfforms.coffee.model"; //$NON-NLS-1$
+
+	/**
+	 * The singleton instance of the package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	CoffeePackage eINSTANCE = org.eclipse.emfforms.coffee.model.coffee.impl.CoffeePackageImpl.init();
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.emfforms.coffee.model.coffee.impl.ComponentImpl
+	 * <em>Component</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.emfforms.coffee.model.coffee.impl.ComponentImpl
+	 * @see org.eclipse.emfforms.coffee.model.coffee.impl.CoffeePackageImpl#getComponent()
+	 * @generated
+	 */
+	int COMPONENT = 0;
+
+	/**
+	 * The feature id for the '<em><b>Children</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int COMPONENT__CHILDREN = 0;
+
+	/**
+	 * The feature id for the '<em><b>Parent</b></em>' container reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int COMPONENT__PARENT = 1;
+
+	/**
+	 * The feature id for the '<em><b>Activities</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int COMPONENT__ACTIVITIES = 2;
+
+	/**
+	 * The number of structural features of the '<em>Component</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int COMPONENT_FEATURE_COUNT = 3;
+
+	/**
+	 * The number of operations of the '<em>Component</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int COMPONENT_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.emfforms.coffee.model.coffee.impl.MachineImpl <em>Machine</em>}'
+	 * class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.emfforms.coffee.model.coffee.impl.MachineImpl
+	 * @see org.eclipse.emfforms.coffee.model.coffee.impl.CoffeePackageImpl#getMachine()
+	 * @generated
+	 */
+	int MACHINE = 1;
+
+	/**
+	 * The feature id for the '<em><b>Children</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int MACHINE__CHILDREN = COMPONENT__CHILDREN;
+
+	/**
+	 * The feature id for the '<em><b>Parent</b></em>' container reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int MACHINE__PARENT = COMPONENT__PARENT;
+
+	/**
+	 * The feature id for the '<em><b>Activities</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int MACHINE__ACTIVITIES = COMPONENT__ACTIVITIES;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int MACHINE__NAME = COMPONENT_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Machine</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int MACHINE_FEATURE_COUNT = COMPONENT_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of operations of the '<em>Machine</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int MACHINE_OPERATION_COUNT = COMPONENT_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.emfforms.coffee.model.coffee.impl.ControlUnitImpl <em>Control
+	 * Unit</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.emfforms.coffee.model.coffee.impl.ControlUnitImpl
+	 * @see org.eclipse.emfforms.coffee.model.coffee.impl.CoffeePackageImpl#getControlUnit()
+	 * @generated
+	 */
+	int CONTROL_UNIT = 2;
+
+	/**
+	 * The feature id for the '<em><b>Children</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int CONTROL_UNIT__CHILDREN = COMPONENT__CHILDREN;
+
+	/**
+	 * The feature id for the '<em><b>Parent</b></em>' container reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int CONTROL_UNIT__PARENT = COMPONENT__PARENT;
+
+	/**
+	 * The feature id for the '<em><b>Activities</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int CONTROL_UNIT__ACTIVITIES = COMPONENT__ACTIVITIES;
+
+	/**
+	 * The feature id for the '<em><b>Processor</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int CONTROL_UNIT__PROCESSOR = COMPONENT_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Dimension</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int CONTROL_UNIT__DIMENSION = COMPONENT_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Ram</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int CONTROL_UNIT__RAM = COMPONENT_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>Display</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int CONTROL_UNIT__DISPLAY = COMPONENT_FEATURE_COUNT + 3;
+
+	/**
+	 * The feature id for the '<em><b>User Description</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int CONTROL_UNIT__USER_DESCRIPTION = COMPONENT_FEATURE_COUNT + 4;
+
+	/**
+	 * The number of structural features of the '<em>Control Unit</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int CONTROL_UNIT_FEATURE_COUNT = COMPONENT_FEATURE_COUNT + 5;
+
+	/**
+	 * The number of operations of the '<em>Control Unit</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int CONTROL_UNIT_OPERATION_COUNT = COMPONENT_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.emfforms.coffee.model.coffee.impl.BrewingUnitImpl <em>Brewing
+	 * Unit</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.emfforms.coffee.model.coffee.impl.BrewingUnitImpl
+	 * @see org.eclipse.emfforms.coffee.model.coffee.impl.CoffeePackageImpl#getBrewingUnit()
+	 * @generated
+	 */
+	int BREWING_UNIT = 3;
+
+	/**
+	 * The feature id for the '<em><b>Children</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int BREWING_UNIT__CHILDREN = COMPONENT__CHILDREN;
+
+	/**
+	 * The feature id for the '<em><b>Parent</b></em>' container reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int BREWING_UNIT__PARENT = COMPONENT__PARENT;
+
+	/**
+	 * The feature id for the '<em><b>Activities</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int BREWING_UNIT__ACTIVITIES = COMPONENT__ACTIVITIES;
+
+	/**
+	 * The number of structural features of the '<em>Brewing Unit</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int BREWING_UNIT_FEATURE_COUNT = COMPONENT_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>Brewing Unit</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int BREWING_UNIT_OPERATION_COUNT = COMPONENT_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.emfforms.coffee.model.coffee.impl.DipTrayImpl <em>Dip Tray</em>}'
+	 * class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.emfforms.coffee.model.coffee.impl.DipTrayImpl
+	 * @see org.eclipse.emfforms.coffee.model.coffee.impl.CoffeePackageImpl#getDipTray()
+	 * @generated
+	 */
+	int DIP_TRAY = 4;
+
+	/**
+	 * The feature id for the '<em><b>Children</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int DIP_TRAY__CHILDREN = COMPONENT__CHILDREN;
+
+	/**
+	 * The feature id for the '<em><b>Parent</b></em>' container reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int DIP_TRAY__PARENT = COMPONENT__PARENT;
+
+	/**
+	 * The feature id for the '<em><b>Activities</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int DIP_TRAY__ACTIVITIES = COMPONENT__ACTIVITIES;
+
+	/**
+	 * The number of structural features of the '<em>Dip Tray</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int DIP_TRAY_FEATURE_COUNT = COMPONENT_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>Dip Tray</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int DIP_TRAY_OPERATION_COUNT = COMPONENT_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.emfforms.coffee.model.coffee.impl.WaterTankImpl <em>Water
+	 * Tank</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.emfforms.coffee.model.coffee.impl.WaterTankImpl
+	 * @see org.eclipse.emfforms.coffee.model.coffee.impl.CoffeePackageImpl#getWaterTank()
+	 * @generated
+	 */
+	int WATER_TANK = 5;
+
+	/**
+	 * The feature id for the '<em><b>Children</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int WATER_TANK__CHILDREN = COMPONENT__CHILDREN;
+
+	/**
+	 * The feature id for the '<em><b>Parent</b></em>' container reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int WATER_TANK__PARENT = COMPONENT__PARENT;
+
+	/**
+	 * The feature id for the '<em><b>Activities</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int WATER_TANK__ACTIVITIES = COMPONENT__ACTIVITIES;
+
+	/**
+	 * The number of structural features of the '<em>Water Tank</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int WATER_TANK_FEATURE_COUNT = COMPONENT_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>Water Tank</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int WATER_TANK_OPERATION_COUNT = COMPONENT_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.emfforms.coffee.model.coffee.impl.ProcessorImpl
+	 * <em>Processor</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.emfforms.coffee.model.coffee.impl.ProcessorImpl
+	 * @see org.eclipse.emfforms.coffee.model.coffee.impl.CoffeePackageImpl#getProcessor()
+	 * @generated
+	 */
+	int PROCESSOR = 6;
+
+	/**
+	 * The feature id for the '<em><b>Vendor</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int PROCESSOR__VENDOR = 0;
+
+	/**
+	 * The feature id for the '<em><b>Clock Speed</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int PROCESSOR__CLOCK_SPEED = 1;
+
+	/**
+	 * The feature id for the '<em><b>Number Of Cores</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int PROCESSOR__NUMBER_OF_CORES = 2;
+
+	/**
+	 * The feature id for the '<em><b>Socketconnector Type</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int PROCESSOR__SOCKETCONNECTOR_TYPE = 3;
+
+	/**
+	 * The feature id for the '<em><b>Thermal Design Power</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int PROCESSOR__THERMAL_DESIGN_POWER = 4;
+
+	/**
+	 * The feature id for the '<em><b>Manufactoring Process</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int PROCESSOR__MANUFACTORING_PROCESS = 5;
+
+	/**
+	 * The number of structural features of the '<em>Processor</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int PROCESSOR_FEATURE_COUNT = 6;
+
+	/**
+	 * The number of operations of the '<em>Processor</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int PROCESSOR_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.emfforms.coffee.model.coffee.impl.RAMImpl <em>RAM</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.emfforms.coffee.model.coffee.impl.RAMImpl
+	 * @see org.eclipse.emfforms.coffee.model.coffee.impl.CoffeePackageImpl#getRAM()
+	 * @generated
+	 */
+	int RAM = 7;
+
+	/**
+	 * The feature id for the '<em><b>Clock Speed</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int RAM__CLOCK_SPEED = 0;
+
+	/**
+	 * The feature id for the '<em><b>Size</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int RAM__SIZE = 1;
+
+	/**
+	 * The feature id for the '<em><b>Type</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int RAM__TYPE = 2;
+
+	/**
+	 * The number of structural features of the '<em>RAM</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int RAM_FEATURE_COUNT = 3;
+
+	/**
+	 * The number of operations of the '<em>RAM</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int RAM_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.emfforms.coffee.model.coffee.impl.ActivityImpl <em>Activity</em>}'
+	 * class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.emfforms.coffee.model.coffee.impl.ActivityImpl
+	 * @see org.eclipse.emfforms.coffee.model.coffee.impl.CoffeePackageImpl#getActivity()
+	 * @generated
+	 */
+	int ACTIVITY = 8;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int ACTIVITY__NAME = 0;
+
+	/**
+	 * The number of structural features of the '<em>Activity</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int ACTIVITY_FEATURE_COUNT = 1;
+
+	/**
+	 * The number of operations of the '<em>Activity</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int ACTIVITY_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.emfforms.coffee.model.coffee.impl.DimensionImpl
+	 * <em>Dimension</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.emfforms.coffee.model.coffee.impl.DimensionImpl
+	 * @see org.eclipse.emfforms.coffee.model.coffee.impl.CoffeePackageImpl#getDimension()
+	 * @generated
+	 */
+	int DIMENSION = 9;
+
+	/**
+	 * The feature id for the '<em><b>Width</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int DIMENSION__WIDTH = 0;
+
+	/**
+	 * The feature id for the '<em><b>Height</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int DIMENSION__HEIGHT = 1;
+
+	/**
+	 * The feature id for the '<em><b>Length</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int DIMENSION__LENGTH = 2;
+
+	/**
+	 * The number of structural features of the '<em>Dimension</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int DIMENSION_FEATURE_COUNT = 3;
+
+	/**
+	 * The number of operations of the '<em>Dimension</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int DIMENSION_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.emfforms.coffee.model.coffee.impl.DisplayImpl <em>Display</em>}'
+	 * class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.emfforms.coffee.model.coffee.impl.DisplayImpl
+	 * @see org.eclipse.emfforms.coffee.model.coffee.impl.CoffeePackageImpl#getDisplay()
+	 * @generated
+	 */
+	int DISPLAY = 10;
+
+	/**
+	 * The feature id for the '<em><b>Width</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int DISPLAY__WIDTH = 0;
+
+	/**
+	 * The feature id for the '<em><b>Height</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int DISPLAY__HEIGHT = 1;
+
+	/**
+	 * The number of structural features of the '<em>Display</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int DISPLAY_FEATURE_COUNT = 2;
+
+	/**
+	 * The number of operations of the '<em>Display</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int DISPLAY_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.emfforms.coffee.model.coffee.SocketConnectorType <em>Socket
+	 * Connector Type</em>}' enum.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.emfforms.coffee.model.coffee.SocketConnectorType
+	 * @see org.eclipse.emfforms.coffee.model.coffee.impl.CoffeePackageImpl#getSocketConnectorType()
+	 * @generated
+	 */
+	int SOCKET_CONNECTOR_TYPE = 11;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.emfforms.coffee.model.coffee.ManufactoringProcess
+	 * <em>Manufactoring Process</em>}' enum.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.emfforms.coffee.model.coffee.ManufactoringProcess
+	 * @see org.eclipse.emfforms.coffee.model.coffee.impl.CoffeePackageImpl#getManufactoringProcess()
+	 * @generated
+	 */
+	int MANUFACTORING_PROCESS = 12;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.emfforms.coffee.model.coffee.RamType <em>Ram Type</em>}' enum.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.emfforms.coffee.model.coffee.RamType
+	 * @see org.eclipse.emfforms.coffee.model.coffee.impl.CoffeePackageImpl#getRamType()
+	 * @generated
+	 */
+	int RAM_TYPE = 13;
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.emfforms.coffee.model.coffee.Component
+	 * <em>Component</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for class '<em>Component</em>'.
+	 * @see org.eclipse.emfforms.coffee.model.coffee.Component
+	 * @generated
+	 */
+	EClass getComponent();
+
+	/**
+	 * Returns the meta object for the containment reference list
+	 * '{@link org.eclipse.emfforms.coffee.model.coffee.Component#getChildren <em>Children</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the containment reference list '<em>Children</em>'.
+	 * @see org.eclipse.emfforms.coffee.model.coffee.Component#getChildren()
+	 * @see #getComponent()
+	 * @generated
+	 */
+	EReference getComponent_Children();
+
+	/**
+	 * Returns the meta object for the container reference
+	 * '{@link org.eclipse.emfforms.coffee.model.coffee.Component#getParent <em>Parent</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the container reference '<em>Parent</em>'.
+	 * @see org.eclipse.emfforms.coffee.model.coffee.Component#getParent()
+	 * @see #getComponent()
+	 * @generated
+	 */
+	EReference getComponent_Parent();
+
+	/**
+	 * Returns the meta object for the containment reference list
+	 * '{@link org.eclipse.emfforms.coffee.model.coffee.Component#getActivities <em>Activities</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the containment reference list '<em>Activities</em>'.
+	 * @see org.eclipse.emfforms.coffee.model.coffee.Component#getActivities()
+	 * @see #getComponent()
+	 * @generated
+	 */
+	EReference getComponent_Activities();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.emfforms.coffee.model.coffee.Machine <em>Machine</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for class '<em>Machine</em>'.
+	 * @see org.eclipse.emfforms.coffee.model.coffee.Machine
+	 * @generated
+	 */
+	EClass getMachine();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.emfforms.coffee.model.coffee.Machine#getName
+	 * <em>Name</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the attribute '<em>Name</em>'.
+	 * @see org.eclipse.emfforms.coffee.model.coffee.Machine#getName()
+	 * @see #getMachine()
+	 * @generated
+	 */
+	EAttribute getMachine_Name();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.emfforms.coffee.model.coffee.ControlUnit <em>Control
+	 * Unit</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for class '<em>Control Unit</em>'.
+	 * @see org.eclipse.emfforms.coffee.model.coffee.ControlUnit
+	 * @generated
+	 */
+	EClass getControlUnit();
+
+	/**
+	 * Returns the meta object for the containment reference
+	 * '{@link org.eclipse.emfforms.coffee.model.coffee.ControlUnit#getProcessor <em>Processor</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the containment reference '<em>Processor</em>'.
+	 * @see org.eclipse.emfforms.coffee.model.coffee.ControlUnit#getProcessor()
+	 * @see #getControlUnit()
+	 * @generated
+	 */
+	EReference getControlUnit_Processor();
+
+	/**
+	 * Returns the meta object for the reference
+	 * '{@link org.eclipse.emfforms.coffee.model.coffee.ControlUnit#getDimension <em>Dimension</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the reference '<em>Dimension</em>'.
+	 * @see org.eclipse.emfforms.coffee.model.coffee.ControlUnit#getDimension()
+	 * @see #getControlUnit()
+	 * @generated
+	 */
+	EReference getControlUnit_Dimension();
+
+	/**
+	 * Returns the meta object for the containment reference list
+	 * '{@link org.eclipse.emfforms.coffee.model.coffee.ControlUnit#getRam <em>Ram</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the containment reference list '<em>Ram</em>'.
+	 * @see org.eclipse.emfforms.coffee.model.coffee.ControlUnit#getRam()
+	 * @see #getControlUnit()
+	 * @generated
+	 */
+	EReference getControlUnit_Ram();
+
+	/**
+	 * Returns the meta object for the containment reference
+	 * '{@link org.eclipse.emfforms.coffee.model.coffee.ControlUnit#getDisplay <em>Display</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the containment reference '<em>Display</em>'.
+	 * @see org.eclipse.emfforms.coffee.model.coffee.ControlUnit#getDisplay()
+	 * @see #getControlUnit()
+	 * @generated
+	 */
+	EReference getControlUnit_Display();
+
+	/**
+	 * Returns the meta object for the attribute
+	 * '{@link org.eclipse.emfforms.coffee.model.coffee.ControlUnit#getUserDescription <em>User Description</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the attribute '<em>User Description</em>'.
+	 * @see org.eclipse.emfforms.coffee.model.coffee.ControlUnit#getUserDescription()
+	 * @see #getControlUnit()
+	 * @generated
+	 */
+	EAttribute getControlUnit_UserDescription();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.emfforms.coffee.model.coffee.BrewingUnit <em>Brewing
+	 * Unit</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for class '<em>Brewing Unit</em>'.
+	 * @see org.eclipse.emfforms.coffee.model.coffee.BrewingUnit
+	 * @generated
+	 */
+	EClass getBrewingUnit();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.emfforms.coffee.model.coffee.DipTray <em>Dip Tray</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for class '<em>Dip Tray</em>'.
+	 * @see org.eclipse.emfforms.coffee.model.coffee.DipTray
+	 * @generated
+	 */
+	EClass getDipTray();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.emfforms.coffee.model.coffee.WaterTank <em>Water
+	 * Tank</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for class '<em>Water Tank</em>'.
+	 * @see org.eclipse.emfforms.coffee.model.coffee.WaterTank
+	 * @generated
+	 */
+	EClass getWaterTank();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.emfforms.coffee.model.coffee.Processor
+	 * <em>Processor</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for class '<em>Processor</em>'.
+	 * @see org.eclipse.emfforms.coffee.model.coffee.Processor
+	 * @generated
+	 */
+	EClass getProcessor();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.emfforms.coffee.model.coffee.Processor#getVendor
+	 * <em>Vendor</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the attribute '<em>Vendor</em>'.
+	 * @see org.eclipse.emfforms.coffee.model.coffee.Processor#getVendor()
+	 * @see #getProcessor()
+	 * @generated
+	 */
+	EAttribute getProcessor_Vendor();
+
+	/**
+	 * Returns the meta object for the attribute
+	 * '{@link org.eclipse.emfforms.coffee.model.coffee.Processor#getClockSpeed <em>Clock Speed</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the attribute '<em>Clock Speed</em>'.
+	 * @see org.eclipse.emfforms.coffee.model.coffee.Processor#getClockSpeed()
+	 * @see #getProcessor()
+	 * @generated
+	 */
+	EAttribute getProcessor_ClockSpeed();
+
+	/**
+	 * Returns the meta object for the attribute
+	 * '{@link org.eclipse.emfforms.coffee.model.coffee.Processor#getNumberOfCores <em>Number Of Cores</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the attribute '<em>Number Of Cores</em>'.
+	 * @see org.eclipse.emfforms.coffee.model.coffee.Processor#getNumberOfCores()
+	 * @see #getProcessor()
+	 * @generated
+	 */
+	EAttribute getProcessor_NumberOfCores();
+
+	/**
+	 * Returns the meta object for the attribute
+	 * '{@link org.eclipse.emfforms.coffee.model.coffee.Processor#getSocketconnectorType <em>Socketconnector
+	 * Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the attribute '<em>Socketconnector Type</em>'.
+	 * @see org.eclipse.emfforms.coffee.model.coffee.Processor#getSocketconnectorType()
+	 * @see #getProcessor()
+	 * @generated
+	 */
+	EAttribute getProcessor_SocketconnectorType();
+
+	/**
+	 * Returns the meta object for the attribute
+	 * '{@link org.eclipse.emfforms.coffee.model.coffee.Processor#getThermalDesignPower <em>Thermal Design Power</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the attribute '<em>Thermal Design Power</em>'.
+	 * @see org.eclipse.emfforms.coffee.model.coffee.Processor#getThermalDesignPower()
+	 * @see #getProcessor()
+	 * @generated
+	 */
+	EAttribute getProcessor_ThermalDesignPower();
+
+	/**
+	 * Returns the meta object for the attribute
+	 * '{@link org.eclipse.emfforms.coffee.model.coffee.Processor#getManufactoringProcess <em>Manufactoring
+	 * Process</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the attribute '<em>Manufactoring Process</em>'.
+	 * @see org.eclipse.emfforms.coffee.model.coffee.Processor#getManufactoringProcess()
+	 * @see #getProcessor()
+	 * @generated
+	 */
+	EAttribute getProcessor_ManufactoringProcess();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.emfforms.coffee.model.coffee.RAM <em>RAM</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for class '<em>RAM</em>'.
+	 * @see org.eclipse.emfforms.coffee.model.coffee.RAM
+	 * @generated
+	 */
+	EClass getRAM();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.emfforms.coffee.model.coffee.RAM#getClockSpeed
+	 * <em>Clock Speed</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the attribute '<em>Clock Speed</em>'.
+	 * @see org.eclipse.emfforms.coffee.model.coffee.RAM#getClockSpeed()
+	 * @see #getRAM()
+	 * @generated
+	 */
+	EAttribute getRAM_ClockSpeed();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.emfforms.coffee.model.coffee.RAM#getSize
+	 * <em>Size</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the attribute '<em>Size</em>'.
+	 * @see org.eclipse.emfforms.coffee.model.coffee.RAM#getSize()
+	 * @see #getRAM()
+	 * @generated
+	 */
+	EAttribute getRAM_Size();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.emfforms.coffee.model.coffee.RAM#getType
+	 * <em>Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the attribute '<em>Type</em>'.
+	 * @see org.eclipse.emfforms.coffee.model.coffee.RAM#getType()
+	 * @see #getRAM()
+	 * @generated
+	 */
+	EAttribute getRAM_Type();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.emfforms.coffee.model.coffee.Activity <em>Activity</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for class '<em>Activity</em>'.
+	 * @see org.eclipse.emfforms.coffee.model.coffee.Activity
+	 * @generated
+	 */
+	EClass getActivity();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.emfforms.coffee.model.coffee.Activity#getName
+	 * <em>Name</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the attribute '<em>Name</em>'.
+	 * @see org.eclipse.emfforms.coffee.model.coffee.Activity#getName()
+	 * @see #getActivity()
+	 * @generated
+	 */
+	EAttribute getActivity_Name();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.emfforms.coffee.model.coffee.Dimension
+	 * <em>Dimension</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for class '<em>Dimension</em>'.
+	 * @see org.eclipse.emfforms.coffee.model.coffee.Dimension
+	 * @generated
+	 */
+	EClass getDimension();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.emfforms.coffee.model.coffee.Dimension#getWidth
+	 * <em>Width</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the attribute '<em>Width</em>'.
+	 * @see org.eclipse.emfforms.coffee.model.coffee.Dimension#getWidth()
+	 * @see #getDimension()
+	 * @generated
+	 */
+	EAttribute getDimension_Width();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.emfforms.coffee.model.coffee.Dimension#getHeight
+	 * <em>Height</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the attribute '<em>Height</em>'.
+	 * @see org.eclipse.emfforms.coffee.model.coffee.Dimension#getHeight()
+	 * @see #getDimension()
+	 * @generated
+	 */
+	EAttribute getDimension_Height();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.emfforms.coffee.model.coffee.Dimension#getLength
+	 * <em>Length</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the attribute '<em>Length</em>'.
+	 * @see org.eclipse.emfforms.coffee.model.coffee.Dimension#getLength()
+	 * @see #getDimension()
+	 * @generated
+	 */
+	EAttribute getDimension_Length();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.emfforms.coffee.model.coffee.Display <em>Display</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for class '<em>Display</em>'.
+	 * @see org.eclipse.emfforms.coffee.model.coffee.Display
+	 * @generated
+	 */
+	EClass getDisplay();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.emfforms.coffee.model.coffee.Display#getWidth
+	 * <em>Width</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the attribute '<em>Width</em>'.
+	 * @see org.eclipse.emfforms.coffee.model.coffee.Display#getWidth()
+	 * @see #getDisplay()
+	 * @generated
+	 */
+	EAttribute getDisplay_Width();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.emfforms.coffee.model.coffee.Display#getHeight
+	 * <em>Height</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the attribute '<em>Height</em>'.
+	 * @see org.eclipse.emfforms.coffee.model.coffee.Display#getHeight()
+	 * @see #getDisplay()
+	 * @generated
+	 */
+	EAttribute getDisplay_Height();
+
+	/**
+	 * Returns the meta object for enum '{@link org.eclipse.emfforms.coffee.model.coffee.SocketConnectorType <em>Socket
+	 * Connector Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for enum '<em>Socket Connector Type</em>'.
+	 * @see org.eclipse.emfforms.coffee.model.coffee.SocketConnectorType
+	 * @generated
+	 */
+	EEnum getSocketConnectorType();
+
+	/**
+	 * Returns the meta object for enum '{@link org.eclipse.emfforms.coffee.model.coffee.ManufactoringProcess
+	 * <em>Manufactoring Process</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for enum '<em>Manufactoring Process</em>'.
+	 * @see org.eclipse.emfforms.coffee.model.coffee.ManufactoringProcess
+	 * @generated
+	 */
+	EEnum getManufactoringProcess();
+
+	/**
+	 * Returns the meta object for enum '{@link org.eclipse.emfforms.coffee.model.coffee.RamType <em>Ram Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for enum '<em>Ram Type</em>'.
+	 * @see org.eclipse.emfforms.coffee.model.coffee.RamType
+	 * @generated
+	 */
+	EEnum getRamType();
+
+	/**
+	 * 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.
+	 * @generated
+	 */
+	CoffeeFactory getCoffeeFactory();
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * Defines literals for the meta objects that represent
+	 * <ul>
+	 * <li>each class,</li>
+	 * <li>each feature of each class,</li>
+	 * <li>each operation of each class,</li>
+	 * <li>each enum,</li>
+	 * <li>and each data type</li>
+	 * </ul>
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	interface Literals {
+		/**
+		 * The meta object literal for the '{@link org.eclipse.emfforms.coffee.model.coffee.impl.ComponentImpl
+		 * <em>Component</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @see org.eclipse.emfforms.coffee.model.coffee.impl.ComponentImpl
+		 * @see org.eclipse.emfforms.coffee.model.coffee.impl.CoffeePackageImpl#getComponent()
+		 * @generated
+		 */
+		EClass COMPONENT = eINSTANCE.getComponent();
+
+		/**
+		 * The meta object literal for the '<em><b>Children</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EReference COMPONENT__CHILDREN = eINSTANCE.getComponent_Children();
+
+		/**
+		 * The meta object literal for the '<em><b>Parent</b></em>' container reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EReference COMPONENT__PARENT = eINSTANCE.getComponent_Parent();
+
+		/**
+		 * The meta object literal for the '<em><b>Activities</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EReference COMPONENT__ACTIVITIES = eINSTANCE.getComponent_Activities();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.emfforms.coffee.model.coffee.impl.MachineImpl
+		 * <em>Machine</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @see org.eclipse.emfforms.coffee.model.coffee.impl.MachineImpl
+		 * @see org.eclipse.emfforms.coffee.model.coffee.impl.CoffeePackageImpl#getMachine()
+		 * @generated
+		 */
+		EClass MACHINE = eINSTANCE.getMachine();
+
+		/**
+		 * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EAttribute MACHINE__NAME = eINSTANCE.getMachine_Name();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.emfforms.coffee.model.coffee.impl.ControlUnitImpl
+		 * <em>Control Unit</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @see org.eclipse.emfforms.coffee.model.coffee.impl.ControlUnitImpl
+		 * @see org.eclipse.emfforms.coffee.model.coffee.impl.CoffeePackageImpl#getControlUnit()
+		 * @generated
+		 */
+		EClass CONTROL_UNIT = eINSTANCE.getControlUnit();
+
+		/**
+		 * The meta object literal for the '<em><b>Processor</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EReference CONTROL_UNIT__PROCESSOR = eINSTANCE.getControlUnit_Processor();
+
+		/**
+		 * The meta object literal for the '<em><b>Dimension</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EReference CONTROL_UNIT__DIMENSION = eINSTANCE.getControlUnit_Dimension();
+
+		/**
+		 * The meta object literal for the '<em><b>Ram</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EReference CONTROL_UNIT__RAM = eINSTANCE.getControlUnit_Ram();
+
+		/**
+		 * The meta object literal for the '<em><b>Display</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EReference CONTROL_UNIT__DISPLAY = eINSTANCE.getControlUnit_Display();
+
+		/**
+		 * The meta object literal for the '<em><b>User Description</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EAttribute CONTROL_UNIT__USER_DESCRIPTION = eINSTANCE.getControlUnit_UserDescription();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.emfforms.coffee.model.coffee.impl.BrewingUnitImpl
+		 * <em>Brewing Unit</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @see org.eclipse.emfforms.coffee.model.coffee.impl.BrewingUnitImpl
+		 * @see org.eclipse.emfforms.coffee.model.coffee.impl.CoffeePackageImpl#getBrewingUnit()
+		 * @generated
+		 */
+		EClass BREWING_UNIT = eINSTANCE.getBrewingUnit();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.emfforms.coffee.model.coffee.impl.DipTrayImpl <em>Dip
+		 * Tray</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @see org.eclipse.emfforms.coffee.model.coffee.impl.DipTrayImpl
+		 * @see org.eclipse.emfforms.coffee.model.coffee.impl.CoffeePackageImpl#getDipTray()
+		 * @generated
+		 */
+		EClass DIP_TRAY = eINSTANCE.getDipTray();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.emfforms.coffee.model.coffee.impl.WaterTankImpl <em>Water
+		 * Tank</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @see org.eclipse.emfforms.coffee.model.coffee.impl.WaterTankImpl
+		 * @see org.eclipse.emfforms.coffee.model.coffee.impl.CoffeePackageImpl#getWaterTank()
+		 * @generated
+		 */
+		EClass WATER_TANK = eINSTANCE.getWaterTank();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.emfforms.coffee.model.coffee.impl.ProcessorImpl
+		 * <em>Processor</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @see org.eclipse.emfforms.coffee.model.coffee.impl.ProcessorImpl
+		 * @see org.eclipse.emfforms.coffee.model.coffee.impl.CoffeePackageImpl#getProcessor()
+		 * @generated
+		 */
+		EClass PROCESSOR = eINSTANCE.getProcessor();
+
+		/**
+		 * The meta object literal for the '<em><b>Vendor</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EAttribute PROCESSOR__VENDOR = eINSTANCE.getProcessor_Vendor();
+
+		/**
+		 * The meta object literal for the '<em><b>Clock Speed</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EAttribute PROCESSOR__CLOCK_SPEED = eINSTANCE.getProcessor_ClockSpeed();
+
+		/**
+		 * The meta object literal for the '<em><b>Number Of Cores</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EAttribute PROCESSOR__NUMBER_OF_CORES = eINSTANCE.getProcessor_NumberOfCores();
+
+		/**
+		 * The meta object literal for the '<em><b>Socketconnector Type</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EAttribute PROCESSOR__SOCKETCONNECTOR_TYPE = eINSTANCE.getProcessor_SocketconnectorType();
+
+		/**
+		 * The meta object literal for the '<em><b>Thermal Design Power</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EAttribute PROCESSOR__THERMAL_DESIGN_POWER = eINSTANCE.getProcessor_ThermalDesignPower();
+
+		/**
+		 * The meta object literal for the '<em><b>Manufactoring Process</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EAttribute PROCESSOR__MANUFACTORING_PROCESS = eINSTANCE.getProcessor_ManufactoringProcess();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.emfforms.coffee.model.coffee.impl.RAMImpl <em>RAM</em>}'
+		 * class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @see org.eclipse.emfforms.coffee.model.coffee.impl.RAMImpl
+		 * @see org.eclipse.emfforms.coffee.model.coffee.impl.CoffeePackageImpl#getRAM()
+		 * @generated
+		 */
+		EClass RAM = eINSTANCE.getRAM();
+
+		/**
+		 * The meta object literal for the '<em><b>Clock Speed</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EAttribute RAM__CLOCK_SPEED = eINSTANCE.getRAM_ClockSpeed();
+
+		/**
+		 * The meta object literal for the '<em><b>Size</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EAttribute RAM__SIZE = eINSTANCE.getRAM_Size();
+
+		/**
+		 * The meta object literal for the '<em><b>Type</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EAttribute RAM__TYPE = eINSTANCE.getRAM_Type();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.emfforms.coffee.model.coffee.impl.ActivityImpl
+		 * <em>Activity</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @see org.eclipse.emfforms.coffee.model.coffee.impl.ActivityImpl
+		 * @see org.eclipse.emfforms.coffee.model.coffee.impl.CoffeePackageImpl#getActivity()
+		 * @generated
+		 */
+		EClass ACTIVITY = eINSTANCE.getActivity();
+
+		/**
+		 * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EAttribute ACTIVITY__NAME = eINSTANCE.getActivity_Name();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.emfforms.coffee.model.coffee.impl.DimensionImpl
+		 * <em>Dimension</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @see org.eclipse.emfforms.coffee.model.coffee.impl.DimensionImpl
+		 * @see org.eclipse.emfforms.coffee.model.coffee.impl.CoffeePackageImpl#getDimension()
+		 * @generated
+		 */
+		EClass DIMENSION = eINSTANCE.getDimension();
+
+		/**
+		 * The meta object literal for the '<em><b>Width</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EAttribute DIMENSION__WIDTH = eINSTANCE.getDimension_Width();
+
+		/**
+		 * The meta object literal for the '<em><b>Height</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EAttribute DIMENSION__HEIGHT = eINSTANCE.getDimension_Height();
+
+		/**
+		 * The meta object literal for the '<em><b>Length</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EAttribute DIMENSION__LENGTH = eINSTANCE.getDimension_Length();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.emfforms.coffee.model.coffee.impl.DisplayImpl
+		 * <em>Display</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @see org.eclipse.emfforms.coffee.model.coffee.impl.DisplayImpl
+		 * @see org.eclipse.emfforms.coffee.model.coffee.impl.CoffeePackageImpl#getDisplay()
+		 * @generated
+		 */
+		EClass DISPLAY = eINSTANCE.getDisplay();
+
+		/**
+		 * The meta object literal for the '<em><b>Width</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EAttribute DISPLAY__WIDTH = eINSTANCE.getDisplay_Width();
+
+		/**
+		 * The meta object literal for the '<em><b>Height</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EAttribute DISPLAY__HEIGHT = eINSTANCE.getDisplay_Height();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.emfforms.coffee.model.coffee.SocketConnectorType
+		 * <em>Socket Connector Type</em>}' enum.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @see org.eclipse.emfforms.coffee.model.coffee.SocketConnectorType
+		 * @see org.eclipse.emfforms.coffee.model.coffee.impl.CoffeePackageImpl#getSocketConnectorType()
+		 * @generated
+		 */
+		EEnum SOCKET_CONNECTOR_TYPE = eINSTANCE.getSocketConnectorType();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.emfforms.coffee.model.coffee.ManufactoringProcess
+		 * <em>Manufactoring Process</em>}' enum.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @see org.eclipse.emfforms.coffee.model.coffee.ManufactoringProcess
+		 * @see org.eclipse.emfforms.coffee.model.coffee.impl.CoffeePackageImpl#getManufactoringProcess()
+		 * @generated
+		 */
+		EEnum MANUFACTORING_PROCESS = eINSTANCE.getManufactoringProcess();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.emfforms.coffee.model.coffee.RamType <em>Ram Type</em>}'
+		 * enum.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @see org.eclipse.emfforms.coffee.model.coffee.RamType
+		 * @see org.eclipse.emfforms.coffee.model.coffee.impl.CoffeePackageImpl#getRamType()
+		 * @generated
+		 */
+		EEnum RAM_TYPE = eINSTANCE.getRamType();
+
+	}
+
+} // CoffeePackage
diff --git a/examples/org.eclipse.emfforms.coffee.model/src/org/eclipse/emfforms/coffee/model/coffee/Component.java b/examples/org.eclipse.emfforms.coffee.model/src/org/eclipse/emfforms/coffee/model/coffee/Component.java
new file mode 100644
index 0000000..e53b031
--- /dev/null
+++ b/examples/org.eclipse.emfforms.coffee.model/src/org/eclipse/emfforms/coffee/model/coffee/Component.java
@@ -0,0 +1,105 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
+ */
+package org.eclipse.emfforms.coffee.model.coffee;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Component</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.emfforms.coffee.model.coffee.Component#getChildren <em>Children</em>}</li>
+ * <li>{@link org.eclipse.emfforms.coffee.model.coffee.Component#getParent <em>Parent</em>}</li>
+ * <li>{@link org.eclipse.emfforms.coffee.model.coffee.Component#getActivities <em>Activities</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.emfforms.coffee.model.coffee.CoffeePackage#getComponent()
+ * @model abstract="true"
+ * @generated
+ */
+public interface Component extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Children</b></em>' containment reference list.
+	 * The list contents are of type {@link org.eclipse.emfforms.coffee.model.coffee.Component}.
+	 * It is bidirectional and its opposite is '{@link org.eclipse.emfforms.coffee.model.coffee.Component#getParent
+	 * <em>Parent</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Children</em>' containment reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Children</em>' containment reference list.
+	 * @see org.eclipse.emfforms.coffee.model.coffee.CoffeePackage#getComponent_Children()
+	 * @see org.eclipse.emfforms.coffee.model.coffee.Component#getParent
+	 * @model opposite="parent" containment="true"
+	 * @generated
+	 */
+	EList<Component> getChildren();
+
+	/**
+	 * Returns the value of the '<em><b>Parent</b></em>' container reference.
+	 * It is bidirectional and its opposite is '{@link org.eclipse.emfforms.coffee.model.coffee.Component#getChildren
+	 * <em>Children</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Parent</em>' container reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Parent</em>' container reference.
+	 * @see #setParent(Component)
+	 * @see org.eclipse.emfforms.coffee.model.coffee.CoffeePackage#getComponent_Parent()
+	 * @see org.eclipse.emfforms.coffee.model.coffee.Component#getChildren
+	 * @model opposite="children" transient="false"
+	 * @generated
+	 */
+	Component getParent();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.emfforms.coffee.model.coffee.Component#getParent <em>Parent</em>}'
+	 * container reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value the new value of the '<em>Parent</em>' container reference.
+	 * @see #getParent()
+	 * @generated
+	 */
+	void setParent(Component value);
+
+	/**
+	 * Returns the value of the '<em><b>Activities</b></em>' containment reference list.
+	 * The list contents are of type {@link org.eclipse.emfforms.coffee.model.coffee.Activity}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Activities</em>' containment reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Activities</em>' containment reference list.
+	 * @see org.eclipse.emfforms.coffee.model.coffee.CoffeePackage#getComponent_Activities()
+	 * @model containment="true"
+	 * @generated
+	 */
+	EList<Activity> getActivities();
+
+} // Component
diff --git a/examples/org.eclipse.emfforms.coffee.model/src/org/eclipse/emfforms/coffee/model/coffee/ControlUnit.java b/examples/org.eclipse.emfforms.coffee.model/src/org/eclipse/emfforms/coffee/model/coffee/ControlUnit.java
new file mode 100644
index 0000000..2d8332c
--- /dev/null
+++ b/examples/org.eclipse.emfforms.coffee.model/src/org/eclipse/emfforms/coffee/model/coffee/ControlUnit.java
@@ -0,0 +1,170 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
+ */
+package org.eclipse.emfforms.coffee.model.coffee;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Control Unit</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.emfforms.coffee.model.coffee.ControlUnit#getProcessor <em>Processor</em>}</li>
+ * <li>{@link org.eclipse.emfforms.coffee.model.coffee.ControlUnit#getDimension <em>Dimension</em>}</li>
+ * <li>{@link org.eclipse.emfforms.coffee.model.coffee.ControlUnit#getRam <em>Ram</em>}</li>
+ * <li>{@link org.eclipse.emfforms.coffee.model.coffee.ControlUnit#getDisplay <em>Display</em>}</li>
+ * <li>{@link org.eclipse.emfforms.coffee.model.coffee.ControlUnit#getUserDescription <em>User Description</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.emfforms.coffee.model.coffee.CoffeePackage#getControlUnit()
+ * @model
+ * @generated
+ */
+public interface ControlUnit extends Component {
+	/**
+	 * Returns the value of the '<em><b>Processor</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Processor</em>' containment reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Processor</em>' containment reference.
+	 * @see #setProcessor(Processor)
+	 * @see org.eclipse.emfforms.coffee.model.coffee.CoffeePackage#getControlUnit_Processor()
+	 * @model containment="true" required="true"
+	 * @generated
+	 */
+	Processor getProcessor();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.emfforms.coffee.model.coffee.ControlUnit#getProcessor
+	 * <em>Processor</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value the new value of the '<em>Processor</em>' containment reference.
+	 * @see #getProcessor()
+	 * @generated
+	 */
+	void setProcessor(Processor value);
+
+	/**
+	 * Returns the value of the '<em><b>Dimension</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Dimension</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Dimension</em>' reference.
+	 * @see #setDimension(Dimension)
+	 * @see org.eclipse.emfforms.coffee.model.coffee.CoffeePackage#getControlUnit_Dimension()
+	 * @model required="true"
+	 * @generated
+	 */
+	Dimension getDimension();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.emfforms.coffee.model.coffee.ControlUnit#getDimension
+	 * <em>Dimension</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value the new value of the '<em>Dimension</em>' reference.
+	 * @see #getDimension()
+	 * @generated
+	 */
+	void setDimension(Dimension value);
+
+	/**
+	 * Returns the value of the '<em><b>Ram</b></em>' containment reference list.
+	 * The list contents are of type {@link org.eclipse.emfforms.coffee.model.coffee.RAM}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Ram</em>' containment reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Ram</em>' containment reference list.
+	 * @see org.eclipse.emfforms.coffee.model.coffee.CoffeePackage#getControlUnit_Ram()
+	 * @model containment="true" required="true"
+	 * @generated
+	 */
+	EList<RAM> getRam();
+
+	/**
+	 * Returns the value of the '<em><b>Display</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Display</em>' containment reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Display</em>' containment reference.
+	 * @see #setDisplay(Display)
+	 * @see org.eclipse.emfforms.coffee.model.coffee.CoffeePackage#getControlUnit_Display()
+	 * @model containment="true"
+	 * @generated
+	 */
+	Display getDisplay();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.emfforms.coffee.model.coffee.ControlUnit#getDisplay <em>Display</em>}'
+	 * containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value the new value of the '<em>Display</em>' containment reference.
+	 * @see #getDisplay()
+	 * @generated
+	 */
+	void setDisplay(Display value);
+
+	/**
+	 * Returns the value of the '<em><b>User Description</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>User Description</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>User Description</em>' attribute.
+	 * @see #setUserDescription(String)
+	 * @see org.eclipse.emfforms.coffee.model.coffee.CoffeePackage#getControlUnit_UserDescription()
+	 * @model
+	 * @generated
+	 */
+	String getUserDescription();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.emfforms.coffee.model.coffee.ControlUnit#getUserDescription <em>User
+	 * Description</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value the new value of the '<em>User Description</em>' attribute.
+	 * @see #getUserDescription()
+	 * @generated
+	 */
+	void setUserDescription(String value);
+
+} // ControlUnit
diff --git a/examples/org.eclipse.emfforms.coffee.model/src/org/eclipse/emfforms/coffee/model/coffee/Dimension.java b/examples/org.eclipse.emfforms.coffee.model/src/org/eclipse/emfforms/coffee/model/coffee/Dimension.java
new file mode 100644
index 0000000..03a546b
--- /dev/null
+++ b/examples/org.eclipse.emfforms.coffee.model/src/org/eclipse/emfforms/coffee/model/coffee/Dimension.java
@@ -0,0 +1,122 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
+ */
+package org.eclipse.emfforms.coffee.model.coffee;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Dimension</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.emfforms.coffee.model.coffee.Dimension#getWidth <em>Width</em>}</li>
+ * <li>{@link org.eclipse.emfforms.coffee.model.coffee.Dimension#getHeight <em>Height</em>}</li>
+ * <li>{@link org.eclipse.emfforms.coffee.model.coffee.Dimension#getLength <em>Length</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.emfforms.coffee.model.coffee.CoffeePackage#getDimension()
+ * @model
+ * @generated
+ */
+public interface Dimension extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Width</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Width</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Width</em>' attribute.
+	 * @see #setWidth(int)
+	 * @see org.eclipse.emfforms.coffee.model.coffee.CoffeePackage#getDimension_Width()
+	 * @model
+	 * @generated
+	 */
+	int getWidth();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.emfforms.coffee.model.coffee.Dimension#getWidth <em>Width</em>}'
+	 * attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value the new value of the '<em>Width</em>' attribute.
+	 * @see #getWidth()
+	 * @generated
+	 */
+	void setWidth(int value);
+
+	/**
+	 * Returns the value of the '<em><b>Height</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Height</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Height</em>' attribute.
+	 * @see #setHeight(int)
+	 * @see org.eclipse.emfforms.coffee.model.coffee.CoffeePackage#getDimension_Height()
+	 * @model
+	 * @generated
+	 */
+	int getHeight();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.emfforms.coffee.model.coffee.Dimension#getHeight <em>Height</em>}'
+	 * attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value the new value of the '<em>Height</em>' attribute.
+	 * @see #getHeight()
+	 * @generated
+	 */
+	void setHeight(int value);
+
+	/**
+	 * Returns the value of the '<em><b>Length</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Length</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Length</em>' attribute.
+	 * @see #setLength(int)
+	 * @see org.eclipse.emfforms.coffee.model.coffee.CoffeePackage#getDimension_Length()
+	 * @model
+	 * @generated
+	 */
+	int getLength();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.emfforms.coffee.model.coffee.Dimension#getLength <em>Length</em>}'
+	 * attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value the new value of the '<em>Length</em>' attribute.
+	 * @see #getLength()
+	 * @generated
+	 */
+	void setLength(int value);
+
+} // Dimension
diff --git a/examples/org.eclipse.emfforms.coffee.model/src/org/eclipse/emfforms/coffee/model/coffee/DipTray.java b/examples/org.eclipse.emfforms.coffee.model/src/org/eclipse/emfforms/coffee/model/coffee/DipTray.java
new file mode 100644
index 0000000..b3e6a97
--- /dev/null
+++ b/examples/org.eclipse.emfforms.coffee.model/src/org/eclipse/emfforms/coffee/model/coffee/DipTray.java
@@ -0,0 +1,25 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
+ */
+package org.eclipse.emfforms.coffee.model.coffee;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Dip Tray</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.emfforms.coffee.model.coffee.CoffeePackage#getDipTray()
+ * @model
+ * @generated
+ */
+public interface DipTray extends Component {
+} // DipTray
diff --git a/examples/org.eclipse.emfforms.coffee.model/src/org/eclipse/emfforms/coffee/model/coffee/Display.java b/examples/org.eclipse.emfforms.coffee.model/src/org/eclipse/emfforms/coffee/model/coffee/Display.java
new file mode 100644
index 0000000..1835223
--- /dev/null
+++ b/examples/org.eclipse.emfforms.coffee.model/src/org/eclipse/emfforms/coffee/model/coffee/Display.java
@@ -0,0 +1,92 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
+ */
+package org.eclipse.emfforms.coffee.model.coffee;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Display</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.emfforms.coffee.model.coffee.Display#getWidth <em>Width</em>}</li>
+ * <li>{@link org.eclipse.emfforms.coffee.model.coffee.Display#getHeight <em>Height</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.emfforms.coffee.model.coffee.CoffeePackage#getDisplay()
+ * @model
+ * @generated
+ */
+public interface Display extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Width</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Width</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Width</em>' attribute.
+	 * @see #setWidth(int)
+	 * @see org.eclipse.emfforms.coffee.model.coffee.CoffeePackage#getDisplay_Width()
+	 * @model
+	 * @generated
+	 */
+	int getWidth();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.emfforms.coffee.model.coffee.Display#getWidth <em>Width</em>}'
+	 * attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value the new value of the '<em>Width</em>' attribute.
+	 * @see #getWidth()
+	 * @generated
+	 */
+	void setWidth(int value);
+
+	/**
+	 * Returns the value of the '<em><b>Height</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Height</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Height</em>' attribute.
+	 * @see #setHeight(int)
+	 * @see org.eclipse.emfforms.coffee.model.coffee.CoffeePackage#getDisplay_Height()
+	 * @model
+	 * @generated
+	 */
+	int getHeight();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.emfforms.coffee.model.coffee.Display#getHeight <em>Height</em>}'
+	 * attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value the new value of the '<em>Height</em>' attribute.
+	 * @see #getHeight()
+	 * @generated
+	 */
+	void setHeight(int value);
+
+} // Display
diff --git a/examples/org.eclipse.emfforms.coffee.model/src/org/eclipse/emfforms/coffee/model/coffee/Machine.java b/examples/org.eclipse.emfforms.coffee.model/src/org/eclipse/emfforms/coffee/model/coffee/Machine.java
new file mode 100644
index 0000000..2082032
--- /dev/null
+++ b/examples/org.eclipse.emfforms.coffee.model/src/org/eclipse/emfforms/coffee/model/coffee/Machine.java
@@ -0,0 +1,59 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
+ */
+package org.eclipse.emfforms.coffee.model.coffee;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Machine</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.emfforms.coffee.model.coffee.Machine#getName <em>Name</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.emfforms.coffee.model.coffee.CoffeePackage#getMachine()
+ * @model
+ * @generated
+ */
+public interface Machine extends Component {
+	/**
+	 * Returns the value of the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Name</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Name</em>' attribute.
+	 * @see #setName(String)
+	 * @see org.eclipse.emfforms.coffee.model.coffee.CoffeePackage#getMachine_Name()
+	 * @model required="true"
+	 * @generated
+	 */
+	String getName();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.emfforms.coffee.model.coffee.Machine#getName <em>Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value the new value of the '<em>Name</em>' attribute.
+	 * @see #getName()
+	 * @generated
+	 */
+	void setName(String value);
+
+} // Machine
diff --git a/examples/org.eclipse.emfforms.coffee.model/src/org/eclipse/emfforms/coffee/model/coffee/ManufactoringProcess.java b/examples/org.eclipse.emfforms.coffee.model/src/org/eclipse/emfforms/coffee/model/coffee/ManufactoringProcess.java
new file mode 100644
index 0000000..e2d73dc
--- /dev/null
+++ b/examples/org.eclipse.emfforms.coffee.model/src/org/eclipse/emfforms/coffee/model/coffee/ManufactoringProcess.java
@@ -0,0 +1,245 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
+ */
+package org.eclipse.emfforms.coffee.model.coffee;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>Manufactoring Process</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ *
+ * @see org.eclipse.emfforms.coffee.model.coffee.CoffeePackage#getManufactoringProcess()
+ * @model
+ * @generated
+ */
+public enum ManufactoringProcess implements Enumerator {
+	/**
+	 * The '<em><b>Nm18</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #NM18_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	NM18(0, "nm18", "18nm"), //$NON-NLS-1$ //$NON-NLS-2$
+
+	/**
+	 * The '<em><b>Nm25</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #NM25_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	NM25(1, "nm25", "nm25"); //$NON-NLS-1$ //$NON-NLS-2$
+
+	/**
+	 * The '<em><b>Nm18</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Nm18</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #NM18
+	 * @model name="nm18" literal="18nm"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int NM18_VALUE = 0;
+
+	/**
+	 * The '<em><b>Nm25</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Nm25</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #NM25
+	 * @model name="nm25"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int NM25_VALUE = 1;
+
+	/**
+	 * An array of all the '<em><b>Manufactoring Process</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private static final ManufactoringProcess[] VALUES_ARRAY = new ManufactoringProcess[] {
+		NM18,
+		NM25,
+	};
+
+	/**
+	 * A public read-only list of all the '<em><b>Manufactoring Process</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public static final List<ManufactoringProcess> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+	/**
+	 * Returns the '<em><b>Manufactoring Process</b></em>' literal with the specified literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param literal the literal.
+	 * @return the matching enumerator or <code>null</code>.
+	 * @generated
+	 */
+	public static ManufactoringProcess get(String literal) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			final ManufactoringProcess result = VALUES_ARRAY[i];
+			if (result.toString().equals(literal)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Manufactoring Process</b></em>' literal with the specified name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param name the name.
+	 * @return the matching enumerator or <code>null</code>.
+	 * @generated
+	 */
+	public static ManufactoringProcess getByName(String name) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			final ManufactoringProcess result = VALUES_ARRAY[i];
+			if (result.getName().equals(name)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Manufactoring Process</b></em>' literal with the specified integer value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value the integer value.
+	 * @return the matching enumerator or <code>null</code>.
+	 * @generated
+	 */
+	public static ManufactoringProcess get(int value) {
+		switch (value) {
+		case NM18_VALUE:
+			return NM18;
+		case NM25_VALUE:
+			return NM25;
+		}
+		return null;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private final int value;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private final String name;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private final String literal;
+
+	/**
+	 * Only this class can construct instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private ManufactoringProcess(int value, String name, String literal) {
+		this.value = value;
+		this.name = name;
+		this.literal = literal;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public int getValue() {
+		return value;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getName() {
+		return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getLiteral() {
+		return literal;
+	}
+
+	/**
+	 * Returns the literal value of the enumerator, which is its string representation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		return literal;
+	}
+
+} // ManufactoringProcess
diff --git a/examples/org.eclipse.emfforms.coffee.model/src/org/eclipse/emfforms/coffee/model/coffee/Processor.java b/examples/org.eclipse.emfforms.coffee.model/src/org/eclipse/emfforms/coffee/model/coffee/Processor.java
new file mode 100644
index 0000000..eb6c74e
--- /dev/null
+++ b/examples/org.eclipse.emfforms.coffee.model/src/org/eclipse/emfforms/coffee/model/coffee/Processor.java
@@ -0,0 +1,221 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
+ */
+package org.eclipse.emfforms.coffee.model.coffee;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Processor</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.emfforms.coffee.model.coffee.Processor#getVendor <em>Vendor</em>}</li>
+ * <li>{@link org.eclipse.emfforms.coffee.model.coffee.Processor#getClockSpeed <em>Clock Speed</em>}</li>
+ * <li>{@link org.eclipse.emfforms.coffee.model.coffee.Processor#getNumberOfCores <em>Number Of Cores</em>}</li>
+ * <li>{@link org.eclipse.emfforms.coffee.model.coffee.Processor#getSocketconnectorType <em>Socketconnector
+ * Type</em>}</li>
+ * <li>{@link org.eclipse.emfforms.coffee.model.coffee.Processor#getThermalDesignPower <em>Thermal Design
+ * Power</em>}</li>
+ * <li>{@link org.eclipse.emfforms.coffee.model.coffee.Processor#getManufactoringProcess <em>Manufactoring
+ * Process</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.emfforms.coffee.model.coffee.CoffeePackage#getProcessor()
+ * @model
+ * @generated
+ */
+public interface Processor extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Vendor</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Vendor</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Vendor</em>' attribute.
+	 * @see #setVendor(String)
+	 * @see org.eclipse.emfforms.coffee.model.coffee.CoffeePackage#getProcessor_Vendor()
+	 * @model
+	 * @generated
+	 */
+	String getVendor();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.emfforms.coffee.model.coffee.Processor#getVendor <em>Vendor</em>}'
+	 * attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value the new value of the '<em>Vendor</em>' attribute.
+	 * @see #getVendor()
+	 * @generated
+	 */
+	void setVendor(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Clock Speed</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Clock Speed</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Clock Speed</em>' attribute.
+	 * @see #setClockSpeed(int)
+	 * @see org.eclipse.emfforms.coffee.model.coffee.CoffeePackage#getProcessor_ClockSpeed()
+	 * @model
+	 * @generated
+	 */
+	int getClockSpeed();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.emfforms.coffee.model.coffee.Processor#getClockSpeed <em>Clock
+	 * Speed</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value the new value of the '<em>Clock Speed</em>' attribute.
+	 * @see #getClockSpeed()
+	 * @generated
+	 */
+	void setClockSpeed(int value);
+
+	/**
+	 * Returns the value of the '<em><b>Number Of Cores</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Number Of Cores</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Number Of Cores</em>' attribute.
+	 * @see #setNumberOfCores(int)
+	 * @see org.eclipse.emfforms.coffee.model.coffee.CoffeePackage#getProcessor_NumberOfCores()
+	 * @model
+	 * @generated
+	 */
+	int getNumberOfCores();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.emfforms.coffee.model.coffee.Processor#getNumberOfCores <em>Number Of
+	 * Cores</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value the new value of the '<em>Number Of Cores</em>' attribute.
+	 * @see #getNumberOfCores()
+	 * @generated
+	 */
+	void setNumberOfCores(int value);
+
+	/**
+	 * Returns the value of the '<em><b>Socketconnector Type</b></em>' attribute.
+	 * The literals are from the enumeration {@link org.eclipse.emfforms.coffee.model.coffee.SocketConnectorType}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Socketconnector Type</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Socketconnector Type</em>' attribute.
+	 * @see org.eclipse.emfforms.coffee.model.coffee.SocketConnectorType
+	 * @see #setSocketconnectorType(SocketConnectorType)
+	 * @see org.eclipse.emfforms.coffee.model.coffee.CoffeePackage#getProcessor_SocketconnectorType()
+	 * @model
+	 * @generated
+	 */
+	SocketConnectorType getSocketconnectorType();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.emfforms.coffee.model.coffee.Processor#getSocketconnectorType
+	 * <em>Socketconnector Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value the new value of the '<em>Socketconnector Type</em>' attribute.
+	 * @see org.eclipse.emfforms.coffee.model.coffee.SocketConnectorType
+	 * @see #getSocketconnectorType()
+	 * @generated
+	 */
+	void setSocketconnectorType(SocketConnectorType value);
+
+	/**
+	 * Returns the value of the '<em><b>Thermal Design Power</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Thermal Design Power</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Thermal Design Power</em>' attribute.
+	 * @see #setThermalDesignPower(int)
+	 * @see org.eclipse.emfforms.coffee.model.coffee.CoffeePackage#getProcessor_ThermalDesignPower()
+	 * @model
+	 * @generated
+	 */
+	int getThermalDesignPower();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.emfforms.coffee.model.coffee.Processor#getThermalDesignPower
+	 * <em>Thermal Design Power</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value the new value of the '<em>Thermal Design Power</em>' attribute.
+	 * @see #getThermalDesignPower()
+	 * @generated
+	 */
+	void setThermalDesignPower(int value);
+
+	/**
+	 * Returns the value of the '<em><b>Manufactoring Process</b></em>' attribute.
+	 * The literals are from the enumeration {@link org.eclipse.emfforms.coffee.model.coffee.ManufactoringProcess}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Manufactoring Process</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Manufactoring Process</em>' attribute.
+	 * @see org.eclipse.emfforms.coffee.model.coffee.ManufactoringProcess
+	 * @see #setManufactoringProcess(ManufactoringProcess)
+	 * @see org.eclipse.emfforms.coffee.model.coffee.CoffeePackage#getProcessor_ManufactoringProcess()
+	 * @model
+	 * @generated
+	 */
+	ManufactoringProcess getManufactoringProcess();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.emfforms.coffee.model.coffee.Processor#getManufactoringProcess
+	 * <em>Manufactoring Process</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value the new value of the '<em>Manufactoring Process</em>' attribute.
+	 * @see org.eclipse.emfforms.coffee.model.coffee.ManufactoringProcess
+	 * @see #getManufactoringProcess()
+	 * @generated
+	 */
+	void setManufactoringProcess(ManufactoringProcess value);
+
+} // Processor
diff --git a/examples/org.eclipse.emfforms.coffee.model/src/org/eclipse/emfforms/coffee/model/coffee/RAM.java b/examples/org.eclipse.emfforms.coffee.model/src/org/eclipse/emfforms/coffee/model/coffee/RAM.java
new file mode 100644
index 0000000..05c033f
--- /dev/null
+++ b/examples/org.eclipse.emfforms.coffee.model/src/org/eclipse/emfforms/coffee/model/coffee/RAM.java
@@ -0,0 +1,123 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
+ */
+package org.eclipse.emfforms.coffee.model.coffee;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>RAM</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.emfforms.coffee.model.coffee.RAM#getClockSpeed <em>Clock Speed</em>}</li>
+ * <li>{@link org.eclipse.emfforms.coffee.model.coffee.RAM#getSize <em>Size</em>}</li>
+ * <li>{@link org.eclipse.emfforms.coffee.model.coffee.RAM#getType <em>Type</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.emfforms.coffee.model.coffee.CoffeePackage#getRAM()
+ * @model
+ * @generated
+ */
+public interface RAM extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Clock Speed</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Clock Speed</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Clock Speed</em>' attribute.
+	 * @see #setClockSpeed(int)
+	 * @see org.eclipse.emfforms.coffee.model.coffee.CoffeePackage#getRAM_ClockSpeed()
+	 * @model
+	 * @generated
+	 */
+	int getClockSpeed();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.emfforms.coffee.model.coffee.RAM#getClockSpeed <em>Clock Speed</em>}'
+	 * attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value the new value of the '<em>Clock Speed</em>' attribute.
+	 * @see #getClockSpeed()
+	 * @generated
+	 */
+	void setClockSpeed(int value);
+
+	/**
+	 * Returns the value of the '<em><b>Size</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Size</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Size</em>' attribute.
+	 * @see #setSize(int)
+	 * @see org.eclipse.emfforms.coffee.model.coffee.CoffeePackage#getRAM_Size()
+	 * @model
+	 * @generated
+	 */
+	int getSize();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.emfforms.coffee.model.coffee.RAM#getSize <em>Size</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value the new value of the '<em>Size</em>' attribute.
+	 * @see #getSize()
+	 * @generated
+	 */
+	void setSize(int value);
+
+	/**
+	 * Returns the value of the '<em><b>Type</b></em>' attribute.
+	 * The literals are from the enumeration {@link org.eclipse.emfforms.coffee.model.coffee.RamType}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Type</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Type</em>' attribute.
+	 * @see org.eclipse.emfforms.coffee.model.coffee.RamType
+	 * @see #setType(RamType)
+	 * @see org.eclipse.emfforms.coffee.model.coffee.CoffeePackage#getRAM_Type()
+	 * @model
+	 * @generated
+	 */
+	RamType getType();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.emfforms.coffee.model.coffee.RAM#getType <em>Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value the new value of the '<em>Type</em>' attribute.
+	 * @see org.eclipse.emfforms.coffee.model.coffee.RamType
+	 * @see #getType()
+	 * @generated
+	 */
+	void setType(RamType value);
+
+} // RAM
diff --git a/examples/org.eclipse.emfforms.coffee.model/src/org/eclipse/emfforms/coffee/model/coffee/RamType.java b/examples/org.eclipse.emfforms.coffee.model/src/org/eclipse/emfforms/coffee/model/coffee/RamType.java
new file mode 100644
index 0000000..1ce7d2d
--- /dev/null
+++ b/examples/org.eclipse.emfforms.coffee.model/src/org/eclipse/emfforms/coffee/model/coffee/RamType.java
@@ -0,0 +1,243 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
+ */
+package org.eclipse.emfforms.coffee.model.coffee;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>Ram Type</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ *
+ * @see org.eclipse.emfforms.coffee.model.coffee.CoffeePackage#getRamType()
+ * @model
+ * @generated
+ */
+public enum RamType implements Enumerator {
+	/**
+	 * The '<em><b>SODIMM</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #SODIMM_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	SODIMM(0, "SODIMM", "SO-DIMM"), //$NON-NLS-1$ //$NON-NLS-2$
+
+	/**
+	 * The '<em><b>SIDIMM</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #SIDIMM_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	SIDIMM(0, "SIDIMM", "SI-DIMM"); //$NON-NLS-1$ //$NON-NLS-2$
+
+	/**
+	 * The '<em><b>SODIMM</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>SODIMM</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #SODIMM
+	 * @model literal="SO-DIMM"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int SODIMM_VALUE = 0;
+
+	/**
+	 * The '<em><b>SIDIMM</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>SIDIMM</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #SIDIMM
+	 * @model literal="SI-DIMM"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int SIDIMM_VALUE = 0;
+
+	/**
+	 * An array of all the '<em><b>Ram Type</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private static final RamType[] VALUES_ARRAY = new RamType[] {
+		SODIMM,
+		SIDIMM,
+	};
+
+	/**
+	 * A public read-only list of all the '<em><b>Ram Type</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public static final List<RamType> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+	/**
+	 * Returns the '<em><b>Ram Type</b></em>' literal with the specified literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param literal the literal.
+	 * @return the matching enumerator or <code>null</code>.
+	 * @generated
+	 */
+	public static RamType get(String literal) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			final RamType result = VALUES_ARRAY[i];
+			if (result.toString().equals(literal)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Ram Type</b></em>' literal with the specified name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param name the name.
+	 * @return the matching enumerator or <code>null</code>.
+	 * @generated
+	 */
+	public static RamType getByName(String name) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			final RamType result = VALUES_ARRAY[i];
+			if (result.getName().equals(name)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Ram Type</b></em>' literal with the specified integer value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value the integer value.
+	 * @return the matching enumerator or <code>null</code>.
+	 * @generated
+	 */
+	public static RamType get(int value) {
+		switch (value) {
+		case SODIMM_VALUE:
+			return SODIMM;
+		}
+		return null;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private final int value;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private final String name;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private final String literal;
+
+	/**
+	 * Only this class can construct instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private RamType(int value, String name, String literal) {
+		this.value = value;
+		this.name = name;
+		this.literal = literal;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public int getValue() {
+		return value;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getName() {
+		return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getLiteral() {
+		return literal;
+	}
+
+	/**
+	 * Returns the literal value of the enumerator, which is its string representation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		return literal;
+	}
+
+} // RamType
diff --git a/examples/org.eclipse.emfforms.coffee.model/src/org/eclipse/emfforms/coffee/model/coffee/SocketConnectorType.java b/examples/org.eclipse.emfforms.coffee.model/src/org/eclipse/emfforms/coffee/model/coffee/SocketConnectorType.java
new file mode 100644
index 0000000..1e32043
--- /dev/null
+++ b/examples/org.eclipse.emfforms.coffee.model/src/org/eclipse/emfforms/coffee/model/coffee/SocketConnectorType.java
@@ -0,0 +1,245 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
+ */
+package org.eclipse.emfforms.coffee.model.coffee;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>Socket Connector Type</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ *
+ * @see org.eclipse.emfforms.coffee.model.coffee.CoffeePackage#getSocketConnectorType()
+ * @model
+ * @generated
+ */
+public enum SocketConnectorType implements Enumerator {
+	/**
+	 * The '<em><b>A1T</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #A1T_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	A1T(0, "A1T", "A1T"), //$NON-NLS-1$ //$NON-NLS-2$
+
+	/**
+	 * The '<em><b>Z51</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #Z51_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	Z51(1, "Z51", "Z51"); //$NON-NLS-1$ //$NON-NLS-2$
+
+	/**
+	 * The '<em><b>A1T</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>A1T</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #A1T
+	 * @model
+	 * @generated
+	 * @ordered
+	 */
+	public static final int A1T_VALUE = 0;
+
+	/**
+	 * The '<em><b>Z51</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Z51</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #Z51
+	 * @model
+	 * @generated
+	 * @ordered
+	 */
+	public static final int Z51_VALUE = 1;
+
+	/**
+	 * An array of all the '<em><b>Socket Connector Type</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private static final SocketConnectorType[] VALUES_ARRAY = new SocketConnectorType[] {
+		A1T,
+		Z51,
+	};
+
+	/**
+	 * A public read-only list of all the '<em><b>Socket Connector Type</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public static final List<SocketConnectorType> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+	/**
+	 * Returns the '<em><b>Socket Connector Type</b></em>' literal with the specified literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param literal the literal.
+	 * @return the matching enumerator or <code>null</code>.
+	 * @generated
+	 */
+	public static SocketConnectorType get(String literal) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			final SocketConnectorType result = VALUES_ARRAY[i];
+			if (result.toString().equals(literal)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Socket Connector Type</b></em>' literal with the specified name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param name the name.
+	 * @return the matching enumerator or <code>null</code>.
+	 * @generated
+	 */
+	public static SocketConnectorType getByName(String name) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			final SocketConnectorType result = VALUES_ARRAY[i];
+			if (result.getName().equals(name)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Socket Connector Type</b></em>' literal with the specified integer value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value the integer value.
+	 * @return the matching enumerator or <code>null</code>.
+	 * @generated
+	 */
+	public static SocketConnectorType get(int value) {
+		switch (value) {
+		case A1T_VALUE:
+			return A1T;
+		case Z51_VALUE:
+			return Z51;
+		}
+		return null;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private final int value;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private final String name;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private final String literal;
+
+	/**
+	 * Only this class can construct instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private SocketConnectorType(int value, String name, String literal) {
+		this.value = value;
+		this.name = name;
+		this.literal = literal;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public int getValue() {
+		return value;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getName() {
+		return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getLiteral() {
+		return literal;
+	}
+
+	/**
+	 * Returns the literal value of the enumerator, which is its string representation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		return literal;
+	}
+
+} // SocketConnectorType
diff --git a/examples/org.eclipse.emfforms.coffee.model/src/org/eclipse/emfforms/coffee/model/coffee/WaterTank.java b/examples/org.eclipse.emfforms.coffee.model/src/org/eclipse/emfforms/coffee/model/coffee/WaterTank.java
new file mode 100644
index 0000000..0ce3ebb
--- /dev/null
+++ b/examples/org.eclipse.emfforms.coffee.model/src/org/eclipse/emfforms/coffee/model/coffee/WaterTank.java
@@ -0,0 +1,25 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
+ */
+package org.eclipse.emfforms.coffee.model.coffee;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Water Tank</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.emfforms.coffee.model.coffee.CoffeePackage#getWaterTank()
+ * @model
+ * @generated
+ */
+public interface WaterTank extends Component {
+} // WaterTank
diff --git a/examples/org.eclipse.emfforms.coffee.model/src/org/eclipse/emfforms/coffee/model/coffee/impl/ActivityImpl.java b/examples/org.eclipse.emfforms.coffee.model/src/org/eclipse/emfforms/coffee/model/coffee/impl/ActivityImpl.java
new file mode 100644
index 0000000..8db7267
--- /dev/null
+++ b/examples/org.eclipse.emfforms.coffee.model/src/org/eclipse/emfforms/coffee/model/coffee/impl/ActivityImpl.java
@@ -0,0 +1,185 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
+ */
+package org.eclipse.emfforms.coffee.model.coffee.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+import org.eclipse.emfforms.coffee.model.coffee.Activity;
+import org.eclipse.emfforms.coffee.model.coffee.CoffeePackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Activity</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.emfforms.coffee.model.coffee.impl.ActivityImpl#getName <em>Name</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class ActivityImpl extends MinimalEObjectImpl.Container implements Activity {
+	/**
+	 * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getName()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String NAME_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getName()
+	 * @generated
+	 * @ordered
+	 */
+	protected String name = NAME_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected ActivityImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return CoffeePackage.Literals.ACTIVITY;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getName() {
+		return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setName(String newName) {
+		final String oldName = name;
+		name = newName;
+		if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, CoffeePackage.ACTIVITY__NAME, oldName, name));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case CoffeePackage.ACTIVITY__NAME:
+			return getName();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case CoffeePackage.ACTIVITY__NAME:
+			setName((String) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case CoffeePackage.ACTIVITY__NAME:
+			setName(NAME_EDEFAULT);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case CoffeePackage.ACTIVITY__NAME:
+			return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) {
+			return super.toString();
+		}
+
+		final StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (name: "); //$NON-NLS-1$
+		result.append(name);
+		result.append(')');
+		return result.toString();
+	}
+
+} // ActivityImpl
diff --git a/examples/org.eclipse.emfforms.coffee.model/src/org/eclipse/emfforms/coffee/model/coffee/impl/BrewingUnitImpl.java b/examples/org.eclipse.emfforms.coffee.model/src/org/eclipse/emfforms/coffee/model/coffee/impl/BrewingUnitImpl.java
new file mode 100644
index 0000000..9deafe6
--- /dev/null
+++ b/examples/org.eclipse.emfforms.coffee.model/src/org/eclipse/emfforms/coffee/model/coffee/impl/BrewingUnitImpl.java
@@ -0,0 +1,47 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
+ */
+package org.eclipse.emfforms.coffee.model.coffee.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emfforms.coffee.model.coffee.BrewingUnit;
+import org.eclipse.emfforms.coffee.model.coffee.CoffeePackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Brewing Unit</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class BrewingUnitImpl extends ComponentImpl implements BrewingUnit {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected BrewingUnitImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return CoffeePackage.Literals.BREWING_UNIT;
+	}
+
+} // BrewingUnitImpl
diff --git a/examples/org.eclipse.emfforms.coffee.model/src/org/eclipse/emfforms/coffee/model/coffee/impl/CoffeeFactoryImpl.java b/examples/org.eclipse.emfforms.coffee.model/src/org/eclipse/emfforms/coffee/model/coffee/impl/CoffeeFactoryImpl.java
new file mode 100644
index 0000000..ff5d751
--- /dev/null
+++ b/examples/org.eclipse.emfforms.coffee.model/src/org/eclipse/emfforms/coffee/model/coffee/impl/CoffeeFactoryImpl.java
@@ -0,0 +1,367 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
+ */
+package org.eclipse.emfforms.coffee.model.coffee.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EDataType;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+import org.eclipse.emfforms.coffee.model.coffee.Activity;
+import org.eclipse.emfforms.coffee.model.coffee.BrewingUnit;
+import org.eclipse.emfforms.coffee.model.coffee.CoffeeFactory;
+import org.eclipse.emfforms.coffee.model.coffee.CoffeePackage;
+import org.eclipse.emfforms.coffee.model.coffee.ControlUnit;
+import org.eclipse.emfforms.coffee.model.coffee.Dimension;
+import org.eclipse.emfforms.coffee.model.coffee.DipTray;
+import org.eclipse.emfforms.coffee.model.coffee.Display;
+import org.eclipse.emfforms.coffee.model.coffee.Machine;
+import org.eclipse.emfforms.coffee.model.coffee.ManufactoringProcess;
+import org.eclipse.emfforms.coffee.model.coffee.Processor;
+import org.eclipse.emfforms.coffee.model.coffee.RAM;
+import org.eclipse.emfforms.coffee.model.coffee.RamType;
+import org.eclipse.emfforms.coffee.model.coffee.SocketConnectorType;
+import org.eclipse.emfforms.coffee.model.coffee.WaterTank;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class CoffeeFactoryImpl extends EFactoryImpl implements CoffeeFactory {
+	/**
+	 * Creates the default factory implementation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public static CoffeeFactory init() {
+		try {
+			final CoffeeFactory theCoffeeFactory = (CoffeeFactory) EPackage.Registry.INSTANCE
+				.getEFactory(CoffeePackage.eNS_URI);
+			if (theCoffeeFactory != null) {
+				return theCoffeeFactory;
+			}
+		} catch (final Exception exception) {
+			EcorePlugin.INSTANCE.log(exception);
+		}
+		return new CoffeeFactoryImpl();
+	}
+
+	/**
+	 * Creates an instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public CoffeeFactoryImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EObject create(EClass eClass) {
+		switch (eClass.getClassifierID()) {
+		case CoffeePackage.MACHINE:
+			return createMachine();
+		case CoffeePackage.CONTROL_UNIT:
+			return createControlUnit();
+		case CoffeePackage.BREWING_UNIT:
+			return createBrewingUnit();
+		case CoffeePackage.DIP_TRAY:
+			return createDipTray();
+		case CoffeePackage.WATER_TANK:
+			return createWaterTank();
+		case CoffeePackage.PROCESSOR:
+			return createProcessor();
+		case CoffeePackage.RAM:
+			return createRAM();
+		case CoffeePackage.ACTIVITY:
+			return createActivity();
+		case CoffeePackage.DIMENSION:
+			return createDimension();
+		case CoffeePackage.DISPLAY:
+			return createDisplay();
+		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
+	public Object createFromString(EDataType eDataType, String initialValue) {
+		switch (eDataType.getClassifierID()) {
+		case CoffeePackage.SOCKET_CONNECTOR_TYPE:
+			return createSocketConnectorTypeFromString(eDataType, initialValue);
+		case CoffeePackage.MANUFACTORING_PROCESS:
+			return createManufactoringProcessFromString(eDataType, initialValue);
+		case CoffeePackage.RAM_TYPE:
+			return createRamTypeFromString(eDataType, initialValue);
+		default:
+			throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier"); //$NON-NLS-1$ //$NON-NLS-2$
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String convertToString(EDataType eDataType, Object instanceValue) {
+		switch (eDataType.getClassifierID()) {
+		case CoffeePackage.SOCKET_CONNECTOR_TYPE:
+			return convertSocketConnectorTypeToString(eDataType, instanceValue);
+		case CoffeePackage.MANUFACTORING_PROCESS:
+			return convertManufactoringProcessToString(eDataType, instanceValue);
+		case CoffeePackage.RAM_TYPE:
+			return convertRamTypeToString(eDataType, instanceValue);
+		default:
+			throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier"); //$NON-NLS-1$ //$NON-NLS-2$
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Machine createMachine() {
+		final MachineImpl machine = new MachineImpl();
+		return machine;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public ControlUnit createControlUnit() {
+		final ControlUnitImpl controlUnit = new ControlUnitImpl();
+		return controlUnit;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public BrewingUnit createBrewingUnit() {
+		final BrewingUnitImpl brewingUnit = new BrewingUnitImpl();
+		return brewingUnit;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public DipTray createDipTray() {
+		final DipTrayImpl dipTray = new DipTrayImpl();
+		return dipTray;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public WaterTank createWaterTank() {
+		final WaterTankImpl waterTank = new WaterTankImpl();
+		return waterTank;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Processor createProcessor() {
+		final ProcessorImpl processor = new ProcessorImpl();
+		return processor;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public RAM createRAM() {
+		final RAMImpl ram = new RAMImpl();
+		return ram;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Activity createActivity() {
+		final ActivityImpl activity = new ActivityImpl();
+		return activity;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Dimension createDimension() {
+		final DimensionImpl dimension = new DimensionImpl();
+		return dimension;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Display createDisplay() {
+		final DisplayImpl display = new DisplayImpl();
+		return display;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public SocketConnectorType createSocketConnectorTypeFromString(EDataType eDataType, String initialValue) {
+		final SocketConnectorType result = SocketConnectorType.get(initialValue);
+		if (result == null) {
+			throw new IllegalArgumentException(
+				"The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+		}
+		return result;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public String convertSocketConnectorTypeToString(EDataType eDataType, Object instanceValue) {
+		return instanceValue == null ? null : instanceValue.toString();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public ManufactoringProcess createManufactoringProcessFromString(EDataType eDataType, String initialValue) {
+		final ManufactoringProcess result = ManufactoringProcess.get(initialValue);
+		if (result == null) {
+			throw new IllegalArgumentException(
+				"The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+		}
+		return result;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public String convertManufactoringProcessToString(EDataType eDataType, Object instanceValue) {
+		return instanceValue == null ? null : instanceValue.toString();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public RamType createRamTypeFromString(EDataType eDataType, String initialValue) {
+		final RamType result = RamType.get(initialValue);
+		if (result == null) {
+			throw new IllegalArgumentException(
+				"The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+		}
+		return result;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public String convertRamTypeToString(EDataType eDataType, Object instanceValue) {
+		return instanceValue == null ? null : instanceValue.toString();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public CoffeePackage getCoffeePackage() {
+		return (CoffeePackage) getEPackage();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @deprecated
+	 * @generated
+	 */
+	@Deprecated
+	public static CoffeePackage getPackage() {
+		return CoffeePackage.eINSTANCE;
+	}
+
+} // CoffeeFactoryImpl
diff --git a/examples/org.eclipse.emfforms.coffee.model/src/org/eclipse/emfforms/coffee/model/coffee/impl/CoffeePackageImpl.java b/examples/org.eclipse.emfforms.coffee.model/src/org/eclipse/emfforms/coffee/model/coffee/impl/CoffeePackageImpl.java
new file mode 100644
index 0000000..0224f37
--- /dev/null
+++ b/examples/org.eclipse.emfforms.coffee.model/src/org/eclipse/emfforms/coffee/model/coffee/impl/CoffeePackageImpl.java
@@ -0,0 +1,878 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
+ */
+package org.eclipse.emfforms.coffee.model.coffee.impl;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EEnum;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+import org.eclipse.emfforms.coffee.model.coffee.Activity;
+import org.eclipse.emfforms.coffee.model.coffee.BrewingUnit;
+import org.eclipse.emfforms.coffee.model.coffee.CoffeeFactory;
+import org.eclipse.emfforms.coffee.model.coffee.CoffeePackage;
+import org.eclipse.emfforms.coffee.model.coffee.Component;
+import org.eclipse.emfforms.coffee.model.coffee.ControlUnit;
+import org.eclipse.emfforms.coffee.model.coffee.Dimension;
+import org.eclipse.emfforms.coffee.model.coffee.DipTray;
+import org.eclipse.emfforms.coffee.model.coffee.Display;
+import org.eclipse.emfforms.coffee.model.coffee.Machine;
+import org.eclipse.emfforms.coffee.model.coffee.ManufactoringProcess;
+import org.eclipse.emfforms.coffee.model.coffee.Processor;
+import org.eclipse.emfforms.coffee.model.coffee.RamType;
+import org.eclipse.emfforms.coffee.model.coffee.SocketConnectorType;
+import org.eclipse.emfforms.coffee.model.coffee.WaterTank;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Package</b>.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class CoffeePackageImpl extends EPackageImpl implements CoffeePackage {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EClass componentEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EClass machineEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EClass controlUnitEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EClass brewingUnitEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EClass dipTrayEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EClass waterTankEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EClass processorEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EClass ramEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EClass activityEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EClass dimensionEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EClass displayEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EEnum socketConnectorTypeEEnum = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EEnum manufactoringProcessEEnum = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EEnum ramTypeEEnum = 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>
+	 * Note: the correct way to create the package is via the static
+	 * factory method {@link #init init()}, which also performs
+	 * initialization of the package, or returns the registered package,
+	 * if one already exists.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.emf.ecore.EPackage.Registry
+	 * @see org.eclipse.emfforms.coffee.model.coffee.CoffeePackage#eNS_URI
+	 * @see #init()
+	 * @generated
+	 */
+	private CoffeePackageImpl() {
+		super(eNS_URI, CoffeeFactory.eINSTANCE);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private static boolean isInited = false;
+
+	/**
+	 * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
+	 *
+	 * <p>
+	 * This method is used to initialize {@link CoffeePackage#eINSTANCE} when that field is accessed.
+	 * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #eNS_URI
+	 * @see #createPackageContents()
+	 * @see #initializePackageContents()
+	 * @generated
+	 */
+	public static CoffeePackage init() {
+		if (isInited) {
+			return (CoffeePackage) EPackage.Registry.INSTANCE.getEPackage(CoffeePackage.eNS_URI);
+		}
+
+		// Obtain or create and register package
+		final CoffeePackageImpl theCoffeePackage = (CoffeePackageImpl) (EPackage.Registry.INSTANCE
+			.get(eNS_URI) instanceof CoffeePackageImpl ? EPackage.Registry.INSTANCE.get(eNS_URI)
+				: new CoffeePackageImpl());
+
+		isInited = true;
+
+		// Create package meta-data objects
+		theCoffeePackage.createPackageContents();
+
+		// Initialize created meta-data
+		theCoffeePackage.initializePackageContents();
+
+		// Mark meta-data to indicate it can't be changed
+		theCoffeePackage.freeze();
+
+		// Update the registry and return the package
+		EPackage.Registry.INSTANCE.put(CoffeePackage.eNS_URI, theCoffeePackage);
+		return theCoffeePackage;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EClass getComponent() {
+		return componentEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EReference getComponent_Children() {
+		return (EReference) componentEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EReference getComponent_Parent() {
+		return (EReference) componentEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EReference getComponent_Activities() {
+		return (EReference) componentEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EClass getMachine() {
+		return machineEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EAttribute getMachine_Name() {
+		return (EAttribute) machineEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EClass getControlUnit() {
+		return controlUnitEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EReference getControlUnit_Processor() {
+		return (EReference) controlUnitEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EReference getControlUnit_Dimension() {
+		return (EReference) controlUnitEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EReference getControlUnit_Ram() {
+		return (EReference) controlUnitEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EReference getControlUnit_Display() {
+		return (EReference) controlUnitEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EAttribute getControlUnit_UserDescription() {
+		return (EAttribute) controlUnitEClass.getEStructuralFeatures().get(4);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EClass getBrewingUnit() {
+		return brewingUnitEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EClass getDipTray() {
+		return dipTrayEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EClass getWaterTank() {
+		return waterTankEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EClass getProcessor() {
+		return processorEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EAttribute getProcessor_Vendor() {
+		return (EAttribute) processorEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EAttribute getProcessor_ClockSpeed() {
+		return (EAttribute) processorEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EAttribute getProcessor_NumberOfCores() {
+		return (EAttribute) processorEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EAttribute getProcessor_SocketconnectorType() {
+		return (EAttribute) processorEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EAttribute getProcessor_ThermalDesignPower() {
+		return (EAttribute) processorEClass.getEStructuralFeatures().get(4);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EAttribute getProcessor_ManufactoringProcess() {
+		return (EAttribute) processorEClass.getEStructuralFeatures().get(5);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EClass getRAM() {
+		return ramEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EAttribute getRAM_ClockSpeed() {
+		return (EAttribute) ramEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EAttribute getRAM_Size() {
+		return (EAttribute) ramEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EAttribute getRAM_Type() {
+		return (EAttribute) ramEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EClass getActivity() {
+		return activityEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EAttribute getActivity_Name() {
+		return (EAttribute) activityEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EClass getDimension() {
+		return dimensionEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EAttribute getDimension_Width() {
+		return (EAttribute) dimensionEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EAttribute getDimension_Height() {
+		return (EAttribute) dimensionEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EAttribute getDimension_Length() {
+		return (EAttribute) dimensionEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EClass getDisplay() {
+		return displayEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EAttribute getDisplay_Width() {
+		return (EAttribute) displayEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EAttribute getDisplay_Height() {
+		return (EAttribute) displayEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EEnum getSocketConnectorType() {
+		return socketConnectorTypeEEnum;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EEnum getManufactoringProcess() {
+		return manufactoringProcessEEnum;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EEnum getRamType() {
+		return ramTypeEEnum;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public CoffeeFactory getCoffeeFactory() {
+		return (CoffeeFactory) getEFactoryInstance();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private boolean isCreated = false;
+
+	/**
+	 * Creates the meta-model objects for the package. This method is
+	 * guarded to have no affect on any invocation but its first.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public void createPackageContents() {
+		if (isCreated) {
+			return;
+		}
+		isCreated = true;
+
+		// Create classes and their features
+		componentEClass = createEClass(COMPONENT);
+		createEReference(componentEClass, COMPONENT__CHILDREN);
+		createEReference(componentEClass, COMPONENT__PARENT);
+		createEReference(componentEClass, COMPONENT__ACTIVITIES);
+
+		machineEClass = createEClass(MACHINE);
+		createEAttribute(machineEClass, MACHINE__NAME);
+
+		controlUnitEClass = createEClass(CONTROL_UNIT);
+		createEReference(controlUnitEClass, CONTROL_UNIT__PROCESSOR);
+		createEReference(controlUnitEClass, CONTROL_UNIT__DIMENSION);
+		createEReference(controlUnitEClass, CONTROL_UNIT__RAM);
+		createEReference(controlUnitEClass, CONTROL_UNIT__DISPLAY);
+		createEAttribute(controlUnitEClass, CONTROL_UNIT__USER_DESCRIPTION);
+
+		brewingUnitEClass = createEClass(BREWING_UNIT);
+
+		dipTrayEClass = createEClass(DIP_TRAY);
+
+		waterTankEClass = createEClass(WATER_TANK);
+
+		processorEClass = createEClass(PROCESSOR);
+		createEAttribute(processorEClass, PROCESSOR__VENDOR);
+		createEAttribute(processorEClass, PROCESSOR__CLOCK_SPEED);
+		createEAttribute(processorEClass, PROCESSOR__NUMBER_OF_CORES);
+		createEAttribute(processorEClass, PROCESSOR__SOCKETCONNECTOR_TYPE);
+		createEAttribute(processorEClass, PROCESSOR__THERMAL_DESIGN_POWER);
+		createEAttribute(processorEClass, PROCESSOR__MANUFACTORING_PROCESS);
+
+		ramEClass = createEClass(RAM);
+		createEAttribute(ramEClass, RAM__CLOCK_SPEED);
+		createEAttribute(ramEClass, RAM__SIZE);
+		createEAttribute(ramEClass, RAM__TYPE);
+
+		activityEClass = createEClass(ACTIVITY);
+		createEAttribute(activityEClass, ACTIVITY__NAME);
+
+		dimensionEClass = createEClass(DIMENSION);
+		createEAttribute(dimensionEClass, DIMENSION__WIDTH);
+		createEAttribute(dimensionEClass, DIMENSION__HEIGHT);
+		createEAttribute(dimensionEClass, DIMENSION__LENGTH);
+
+		displayEClass = createEClass(DISPLAY);
+		createEAttribute(displayEClass, DISPLAY__WIDTH);
+		createEAttribute(displayEClass, DISPLAY__HEIGHT);
+
+		// Create enums
+		socketConnectorTypeEEnum = createEEnum(SOCKET_CONNECTOR_TYPE);
+		manufactoringProcessEEnum = createEEnum(MANUFACTORING_PROCESS);
+		ramTypeEEnum = createEEnum(RAM_TYPE);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private boolean isInitialized = false;
+
+	/**
+	 * Complete the initialization of the package and its meta-model. This
+	 * method is guarded to have no affect on any invocation but its first.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public void initializePackageContents() {
+		if (isInitialized) {
+			return;
+		}
+		isInitialized = true;
+
+		// Initialize package
+		setName(eNAME);
+		setNsPrefix(eNS_PREFIX);
+		setNsURI(eNS_URI);
+
+		// Create type parameters
+
+		// Set bounds for type parameters
+
+		// Add supertypes to classes
+		machineEClass.getESuperTypes().add(getComponent());
+		controlUnitEClass.getESuperTypes().add(getComponent());
+		brewingUnitEClass.getESuperTypes().add(getComponent());
+		dipTrayEClass.getESuperTypes().add(getComponent());
+		waterTankEClass.getESuperTypes().add(getComponent());
+
+		// Initialize classes, features, and operations; add parameters
+		initEClass(componentEClass, Component.class, "Component", IS_ABSTRACT, !IS_INTERFACE, //$NON-NLS-1$
+			IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getComponent_Children(), getComponent(), getComponent_Parent(), "children", null, 0, //$NON-NLS-1$
+			-1, Component.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES,
+			!IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getComponent_Parent(), getComponent(), getComponent_Children(), "parent", null, 0, 1, //$NON-NLS-1$
+			Component.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES,
+			!IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getComponent_Activities(), getActivity(), null, "activities", null, 0, -1, Component.class, //$NON-NLS-1$
+			!IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE,
+			!IS_DERIVED, IS_ORDERED);
+
+		initEClass(machineEClass, Machine.class, "Machine", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+		initEAttribute(getMachine_Name(), ecorePackage.getEString(), "name", null, 1, 1, Machine.class, !IS_TRANSIENT, //$NON-NLS-1$
+			!IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(controlUnitEClass, ControlUnit.class, "ControlUnit", !IS_ABSTRACT, !IS_INTERFACE, //$NON-NLS-1$
+			IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getControlUnit_Processor(), getProcessor(), null, "processor", null, 1, 1, //$NON-NLS-1$
+			ControlUnit.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES,
+			!IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getControlUnit_Dimension(), getDimension(), null, "dimension", null, 1, 1, //$NON-NLS-1$
+			ControlUnit.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES,
+			!IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getControlUnit_Ram(), getRAM(), null, "ram", null, 1, -1, ControlUnit.class, !IS_TRANSIENT, //$NON-NLS-1$
+			!IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED,
+			IS_ORDERED);
+		initEReference(getControlUnit_Display(), getDisplay(), null, "display", null, 0, 1, ControlUnit.class, //$NON-NLS-1$
+			!IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE,
+			!IS_DERIVED, IS_ORDERED);
+		initEAttribute(getControlUnit_UserDescription(), ecorePackage.getEString(), "userDescription", null, 0, 1, //$NON-NLS-1$
+			ControlUnit.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+			!IS_DERIVED, IS_ORDERED);
+
+		initEClass(brewingUnitEClass, BrewingUnit.class, "BrewingUnit", !IS_ABSTRACT, !IS_INTERFACE, //$NON-NLS-1$
+			IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(dipTrayEClass, DipTray.class, "DipTray", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+		initEClass(waterTankEClass, WaterTank.class, "WaterTank", !IS_ABSTRACT, !IS_INTERFACE, //$NON-NLS-1$
+			IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(processorEClass, Processor.class, "Processor", !IS_ABSTRACT, !IS_INTERFACE, //$NON-NLS-1$
+			IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getProcessor_Vendor(), ecorePackage.getEString(), "vendor", null, 0, 1, Processor.class, //$NON-NLS-1$
+			!IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getProcessor_ClockSpeed(), ecorePackage.getEInt(), "clockSpeed", null, 0, 1, Processor.class, //$NON-NLS-1$
+			!IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getProcessor_NumberOfCores(), ecorePackage.getEInt(), "numberOfCores", null, 0, 1, //$NON-NLS-1$
+			Processor.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED,
+			IS_ORDERED);
+		initEAttribute(getProcessor_SocketconnectorType(), getSocketConnectorType(), "socketconnectorType", null, //$NON-NLS-1$
+			0, 1, Processor.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+			!IS_DERIVED, IS_ORDERED);
+		initEAttribute(getProcessor_ThermalDesignPower(), ecorePackage.getEInt(), "thermalDesignPower", null, 0, 1, //$NON-NLS-1$
+			Processor.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED,
+			IS_ORDERED);
+		initEAttribute(getProcessor_ManufactoringProcess(), getManufactoringProcess(), "manufactoringProcess", //$NON-NLS-1$
+			null, 0, 1, Processor.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+			!IS_DERIVED, IS_ORDERED);
+
+		initEClass(ramEClass, org.eclipse.emfforms.coffee.model.coffee.RAM.class, "RAM", !IS_ABSTRACT, !IS_INTERFACE, //$NON-NLS-1$
+			IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getRAM_ClockSpeed(), ecorePackage.getEInt(), "clockSpeed", null, 0, 1, //$NON-NLS-1$
+			org.eclipse.emfforms.coffee.model.coffee.RAM.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE,
+			!IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getRAM_Size(), ecorePackage.getEInt(), "size", null, 0, 1, //$NON-NLS-1$
+			org.eclipse.emfforms.coffee.model.coffee.RAM.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE,
+			!IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getRAM_Type(), getRamType(), "type", null, 0, 1, //$NON-NLS-1$
+			org.eclipse.emfforms.coffee.model.coffee.RAM.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE,
+			!IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(activityEClass, Activity.class, "Activity", !IS_ABSTRACT, !IS_INTERFACE, //$NON-NLS-1$
+			IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getActivity_Name(), ecorePackage.getEString(), "name", null, 1, 1, Activity.class, !IS_TRANSIENT, //$NON-NLS-1$
+			!IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(dimensionEClass, Dimension.class, "Dimension", !IS_ABSTRACT, !IS_INTERFACE, //$NON-NLS-1$
+			IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getDimension_Width(), ecorePackage.getEInt(), "width", null, 0, 1, Dimension.class, //$NON-NLS-1$
+			!IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getDimension_Height(), ecorePackage.getEInt(), "height", null, 0, 1, Dimension.class, //$NON-NLS-1$
+			!IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getDimension_Length(), ecorePackage.getEInt(), "length", null, 0, 1, Dimension.class, //$NON-NLS-1$
+			!IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(displayEClass, Display.class, "Display", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+		initEAttribute(getDisplay_Width(), ecorePackage.getEInt(), "width", null, 0, 1, Display.class, !IS_TRANSIENT, //$NON-NLS-1$
+			!IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getDisplay_Height(), ecorePackage.getEInt(), "height", null, 0, 1, Display.class, !IS_TRANSIENT, //$NON-NLS-1$
+			!IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		// Initialize enums and add enum literals
+		initEEnum(socketConnectorTypeEEnum, SocketConnectorType.class, "SocketConnectorType"); //$NON-NLS-1$
+		addEEnumLiteral(socketConnectorTypeEEnum, SocketConnectorType.A1T);
+		addEEnumLiteral(socketConnectorTypeEEnum, SocketConnectorType.Z51);
+
+		initEEnum(manufactoringProcessEEnum, ManufactoringProcess.class, "ManufactoringProcess"); //$NON-NLS-1$
+		addEEnumLiteral(manufactoringProcessEEnum, ManufactoringProcess.NM18);
+		addEEnumLiteral(manufactoringProcessEEnum, ManufactoringProcess.NM25);
+
+		initEEnum(ramTypeEEnum, RamType.class, "RamType"); //$NON-NLS-1$
+		addEEnumLiteral(ramTypeEEnum, RamType.SODIMM);
+		addEEnumLiteral(ramTypeEEnum, RamType.SIDIMM);
+
+		// Create resource
+		createResource(eNS_URI);
+	}
+
+} // CoffeePackageImpl
diff --git a/examples/org.eclipse.emfforms.coffee.model/src/org/eclipse/emfforms/coffee/model/coffee/impl/ComponentImpl.java b/examples/org.eclipse.emfforms.coffee.model/src/org/eclipse/emfforms/coffee/model/coffee/impl/ComponentImpl.java
new file mode 100644
index 0000000..7b2d400
--- /dev/null
+++ b/examples/org.eclipse.emfforms.coffee.model/src/org/eclipse/emfforms/coffee/model/coffee/impl/ComponentImpl.java
@@ -0,0 +1,316 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
+ */
+package org.eclipse.emfforms.coffee.model.coffee.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.EObjectContainmentWithInverseEList;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.emf.ecore.util.InternalEList;
+import org.eclipse.emfforms.coffee.model.coffee.Activity;
+import org.eclipse.emfforms.coffee.model.coffee.CoffeePackage;
+import org.eclipse.emfforms.coffee.model.coffee.Component;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Component</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.emfforms.coffee.model.coffee.impl.ComponentImpl#getChildren <em>Children</em>}</li>
+ * <li>{@link org.eclipse.emfforms.coffee.model.coffee.impl.ComponentImpl#getParent <em>Parent</em>}</li>
+ * <li>{@link org.eclipse.emfforms.coffee.model.coffee.impl.ComponentImpl#getActivities <em>Activities</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public abstract class ComponentImpl extends MinimalEObjectImpl.Container implements Component {
+	/**
+	 * The cached value of the '{@link #getChildren() <em>Children</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getChildren()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Component> children;
+
+	/**
+	 * The cached value of the '{@link #getActivities() <em>Activities</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getActivities()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Activity> activities;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected ComponentImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return CoffeePackage.Literals.COMPONENT;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EList<Component> getChildren() {
+		if (children == null) {
+			children = new EObjectContainmentWithInverseEList<Component>(Component.class, this,
+				CoffeePackage.COMPONENT__CHILDREN, CoffeePackage.COMPONENT__PARENT);
+		}
+		return children;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Component getParent() {
+		if (eContainerFeatureID() != CoffeePackage.COMPONENT__PARENT) {
+			return null;
+		}
+		return (Component) eInternalContainer();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public NotificationChain basicSetParent(Component newParent, NotificationChain msgs) {
+		msgs = eBasicSetContainer((InternalEObject) newParent, CoffeePackage.COMPONENT__PARENT, msgs);
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setParent(Component newParent) {
+		if (newParent != eInternalContainer()
+			|| eContainerFeatureID() != CoffeePackage.COMPONENT__PARENT && newParent != null) {
+			if (EcoreUtil.isAncestor(this, newParent)) {
+				throw new IllegalArgumentException("Recursive containment not allowed for " + toString()); //$NON-NLS-1$
+			}
+			NotificationChain msgs = null;
+			if (eInternalContainer() != null) {
+				msgs = eBasicRemoveFromContainer(msgs);
+			}
+			if (newParent != null) {
+				msgs = ((InternalEObject) newParent).eInverseAdd(this, CoffeePackage.COMPONENT__CHILDREN,
+					Component.class, msgs);
+			}
+			msgs = basicSetParent(newParent, msgs);
+			if (msgs != null) {
+				msgs.dispatch();
+			}
+		} else if (eNotificationRequired()) {
+			eNotify(
+				new ENotificationImpl(this, Notification.SET, CoffeePackage.COMPONENT__PARENT, newParent, newParent));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EList<Activity> getActivities() {
+		if (activities == null) {
+			activities = new EObjectContainmentEList<Activity>(Activity.class, this,
+				CoffeePackage.COMPONENT__ACTIVITIES);
+		}
+		return activities;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+		case CoffeePackage.COMPONENT__CHILDREN:
+			return ((InternalEList<InternalEObject>) (InternalEList<?>) getChildren()).basicAdd(otherEnd, msgs);
+		case CoffeePackage.COMPONENT__PARENT:
+			if (eInternalContainer() != null) {
+				msgs = eBasicRemoveFromContainer(msgs);
+			}
+			return basicSetParent((Component) otherEnd, msgs);
+		}
+		return super.eInverseAdd(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+		case CoffeePackage.COMPONENT__CHILDREN:
+			return ((InternalEList<?>) getChildren()).basicRemove(otherEnd, msgs);
+		case CoffeePackage.COMPONENT__PARENT:
+			return basicSetParent(null, msgs);
+		case CoffeePackage.COMPONENT__ACTIVITIES:
+			return ((InternalEList<?>) getActivities()).basicRemove(otherEnd, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eBasicRemoveFromContainerFeature(NotificationChain msgs) {
+		switch (eContainerFeatureID()) {
+		case CoffeePackage.COMPONENT__PARENT:
+			return eInternalContainer().eInverseRemove(this, CoffeePackage.COMPONENT__CHILDREN, Component.class, msgs);
+		}
+		return super.eBasicRemoveFromContainerFeature(msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case CoffeePackage.COMPONENT__CHILDREN:
+			return getChildren();
+		case CoffeePackage.COMPONENT__PARENT:
+			return getParent();
+		case CoffeePackage.COMPONENT__ACTIVITIES:
+			return getActivities();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case CoffeePackage.COMPONENT__CHILDREN:
+			getChildren().clear();
+			getChildren().addAll((Collection<? extends Component>) newValue);
+			return;
+		case CoffeePackage.COMPONENT__PARENT:
+			setParent((Component) newValue);
+			return;
+		case CoffeePackage.COMPONENT__ACTIVITIES:
+			getActivities().clear();
+			getActivities().addAll((Collection<? extends Activity>) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case CoffeePackage.COMPONENT__CHILDREN:
+			getChildren().clear();
+			return;
+		case CoffeePackage.COMPONENT__PARENT:
+			setParent((Component) null);
+			return;
+		case CoffeePackage.COMPONENT__ACTIVITIES:
+			getActivities().clear();
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case CoffeePackage.COMPONENT__CHILDREN:
+			return children != null && !children.isEmpty();
+		case CoffeePackage.COMPONENT__PARENT:
+			return getParent() != null;
+		case CoffeePackage.COMPONENT__ACTIVITIES:
+			return activities != null && !activities.isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+
+} // ComponentImpl
diff --git a/examples/org.eclipse.emfforms.coffee.model/src/org/eclipse/emfforms/coffee/model/coffee/impl/ControlUnitImpl.java b/examples/org.eclipse.emfforms.coffee.model/src/org/eclipse/emfforms/coffee/model/coffee/impl/ControlUnitImpl.java
new file mode 100644
index 0000000..d4a8468
--- /dev/null
+++ b/examples/org.eclipse.emfforms.coffee.model/src/org/eclipse/emfforms/coffee/model/coffee/impl/ControlUnitImpl.java
@@ -0,0 +1,491 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
+ */
+package org.eclipse.emfforms.coffee.model.coffee.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+import org.eclipse.emfforms.coffee.model.coffee.CoffeePackage;
+import org.eclipse.emfforms.coffee.model.coffee.ControlUnit;
+import org.eclipse.emfforms.coffee.model.coffee.Dimension;
+import org.eclipse.emfforms.coffee.model.coffee.Display;
+import org.eclipse.emfforms.coffee.model.coffee.Processor;
+import org.eclipse.emfforms.coffee.model.coffee.RAM;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Control Unit</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.emfforms.coffee.model.coffee.impl.ControlUnitImpl#getProcessor <em>Processor</em>}</li>
+ * <li>{@link org.eclipse.emfforms.coffee.model.coffee.impl.ControlUnitImpl#getDimension <em>Dimension</em>}</li>
+ * <li>{@link org.eclipse.emfforms.coffee.model.coffee.impl.ControlUnitImpl#getRam <em>Ram</em>}</li>
+ * <li>{@link org.eclipse.emfforms.coffee.model.coffee.impl.ControlUnitImpl#getDisplay <em>Display</em>}</li>
+ * <li>{@link org.eclipse.emfforms.coffee.model.coffee.impl.ControlUnitImpl#getUserDescription <em>User
+ * Description</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class ControlUnitImpl extends ComponentImpl implements ControlUnit {
+	/**
+	 * The cached value of the '{@link #getProcessor() <em>Processor</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getProcessor()
+	 * @generated
+	 * @ordered
+	 */
+	protected Processor processor;
+
+	/**
+	 * The cached value of the '{@link #getDimension() <em>Dimension</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getDimension()
+	 * @generated
+	 * @ordered
+	 */
+	protected Dimension dimension;
+
+	/**
+	 * The cached value of the '{@link #getRam() <em>Ram</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getRam()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<RAM> ram;
+
+	/**
+	 * The cached value of the '{@link #getDisplay() <em>Display</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getDisplay()
+	 * @generated
+	 * @ordered
+	 */
+	protected Display display;
+
+	/**
+	 * The default value of the '{@link #getUserDescription() <em>User Description</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getUserDescription()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String USER_DESCRIPTION_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getUserDescription() <em>User Description</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getUserDescription()
+	 * @generated
+	 * @ordered
+	 */
+	protected String userDescription = USER_DESCRIPTION_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected ControlUnitImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return CoffeePackage.Literals.CONTROL_UNIT;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Processor getProcessor() {
+		return processor;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public NotificationChain basicSetProcessor(Processor newProcessor, NotificationChain msgs) {
+		final Processor oldProcessor = processor;
+		processor = newProcessor;
+		if (eNotificationRequired()) {
+			final ENotificationImpl notification = new ENotificationImpl(this, Notification.SET,
+				CoffeePackage.CONTROL_UNIT__PROCESSOR, oldProcessor, newProcessor);
+			if (msgs == null) {
+				msgs = notification;
+			} else {
+				msgs.add(notification);
+			}
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setProcessor(Processor newProcessor) {
+		if (newProcessor != processor) {
+			NotificationChain msgs = null;
+			if (processor != null) {
+				msgs = ((InternalEObject) processor).eInverseRemove(this,
+					EOPPOSITE_FEATURE_BASE - CoffeePackage.CONTROL_UNIT__PROCESSOR, null, msgs);
+			}
+			if (newProcessor != null) {
+				msgs = ((InternalEObject) newProcessor).eInverseAdd(this,
+					EOPPOSITE_FEATURE_BASE - CoffeePackage.CONTROL_UNIT__PROCESSOR, null, msgs);
+			}
+			msgs = basicSetProcessor(newProcessor, msgs);
+			if (msgs != null) {
+				msgs.dispatch();
+			}
+		} else if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, CoffeePackage.CONTROL_UNIT__PROCESSOR, newProcessor,
+				newProcessor));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Dimension getDimension() {
+		if (dimension != null && dimension.eIsProxy()) {
+			final InternalEObject oldDimension = (InternalEObject) dimension;
+			dimension = (Dimension) eResolveProxy(oldDimension);
+			if (dimension != oldDimension) {
+				if (eNotificationRequired()) {
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, CoffeePackage.CONTROL_UNIT__DIMENSION,
+						oldDimension, dimension));
+				}
+			}
+		}
+		return dimension;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public Dimension basicGetDimension() {
+		return dimension;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setDimension(Dimension newDimension) {
+		final Dimension oldDimension = dimension;
+		dimension = newDimension;
+		if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, CoffeePackage.CONTROL_UNIT__DIMENSION, oldDimension,
+				dimension));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EList<RAM> getRam() {
+		if (ram == null) {
+			ram = new EObjectContainmentEList<RAM>(RAM.class, this, CoffeePackage.CONTROL_UNIT__RAM);
+		}
+		return ram;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Display getDisplay() {
+		return display;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public NotificationChain basicSetDisplay(Display newDisplay, NotificationChain msgs) {
+		final Display oldDisplay = display;
+		display = newDisplay;
+		if (eNotificationRequired()) {
+			final ENotificationImpl notification = new ENotificationImpl(this, Notification.SET,
+				CoffeePackage.CONTROL_UNIT__DISPLAY, oldDisplay, newDisplay);
+			if (msgs == null) {
+				msgs = notification;
+			} else {
+				msgs.add(notification);
+			}
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setDisplay(Display newDisplay) {
+		if (newDisplay != display) {
+			NotificationChain msgs = null;
+			if (display != null) {
+				msgs = ((InternalEObject) display).eInverseRemove(this,
+					EOPPOSITE_FEATURE_BASE - CoffeePackage.CONTROL_UNIT__DISPLAY, null, msgs);
+			}
+			if (newDisplay != null) {
+				msgs = ((InternalEObject) newDisplay).eInverseAdd(this,
+					EOPPOSITE_FEATURE_BASE - CoffeePackage.CONTROL_UNIT__DISPLAY, null, msgs);
+			}
+			msgs = basicSetDisplay(newDisplay, msgs);
+			if (msgs != null) {
+				msgs.dispatch();
+			}
+		} else if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, CoffeePackage.CONTROL_UNIT__DISPLAY, newDisplay,
+				newDisplay));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getUserDescription() {
+		return userDescription;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setUserDescription(String newUserDescription) {
+		final String oldUserDescription = userDescription;
+		userDescription = newUserDescription;
+		if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, CoffeePackage.CONTROL_UNIT__USER_DESCRIPTION,
+				oldUserDescription, userDescription));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+		case CoffeePackage.CONTROL_UNIT__PROCESSOR:
+			return basicSetProcessor(null, msgs);
+		case CoffeePackage.CONTROL_UNIT__RAM:
+			return ((InternalEList<?>) getRam()).basicRemove(otherEnd, msgs);
+		case CoffeePackage.CONTROL_UNIT__DISPLAY:
+			return basicSetDisplay(null, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case CoffeePackage.CONTROL_UNIT__PROCESSOR:
+			return getProcessor();
+		case CoffeePackage.CONTROL_UNIT__DIMENSION:
+			if (resolve) {
+				return getDimension();
+			}
+			return basicGetDimension();
+		case CoffeePackage.CONTROL_UNIT__RAM:
+			return getRam();
+		case CoffeePackage.CONTROL_UNIT__DISPLAY:
+			return getDisplay();
+		case CoffeePackage.CONTROL_UNIT__USER_DESCRIPTION:
+			return getUserDescription();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case CoffeePackage.CONTROL_UNIT__PROCESSOR:
+			setProcessor((Processor) newValue);
+			return;
+		case CoffeePackage.CONTROL_UNIT__DIMENSION:
+			setDimension((Dimension) newValue);
+			return;
+		case CoffeePackage.CONTROL_UNIT__RAM:
+			getRam().clear();
+			getRam().addAll((Collection<? extends RAM>) newValue);
+			return;
+		case CoffeePackage.CONTROL_UNIT__DISPLAY:
+			setDisplay((Display) newValue);
+			return;
+		case CoffeePackage.CONTROL_UNIT__USER_DESCRIPTION:
+			setUserDescription((String) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case CoffeePackage.CONTROL_UNIT__PROCESSOR:
+			setProcessor((Processor) null);
+			return;
+		case CoffeePackage.CONTROL_UNIT__DIMENSION:
+			setDimension((Dimension) null);
+			return;
+		case CoffeePackage.CONTROL_UNIT__RAM:
+			getRam().clear();
+			return;
+		case CoffeePackage.CONTROL_UNIT__DISPLAY:
+			setDisplay((Display) null);
+			return;
+		case CoffeePackage.CONTROL_UNIT__USER_DESCRIPTION:
+			setUserDescription(USER_DESCRIPTION_EDEFAULT);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case CoffeePackage.CONTROL_UNIT__PROCESSOR:
+			return processor != null;
+		case CoffeePackage.CONTROL_UNIT__DIMENSION:
+			return dimension != null;
+		case CoffeePackage.CONTROL_UNIT__RAM:
+			return ram != null && !ram.isEmpty();
+		case CoffeePackage.CONTROL_UNIT__DISPLAY:
+			return display != null;
+		case CoffeePackage.CONTROL_UNIT__USER_DESCRIPTION:
+			return USER_DESCRIPTION_EDEFAULT == null ? userDescription != null
+				: !USER_DESCRIPTION_EDEFAULT.equals(userDescription);
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) {
+			return super.toString();
+		}
+
+		final StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (userDescription: "); //$NON-NLS-1$
+		result.append(userDescription);
+		result.append(')');
+		return result.toString();
+	}
+
+} // ControlUnitImpl
diff --git a/examples/org.eclipse.emfforms.coffee.model/src/org/eclipse/emfforms/coffee/model/coffee/impl/DimensionImpl.java b/examples/org.eclipse.emfforms.coffee.model/src/org/eclipse/emfforms/coffee/model/coffee/impl/DimensionImpl.java
new file mode 100644
index 0000000..53820b1
--- /dev/null
+++ b/examples/org.eclipse.emfforms.coffee.model/src/org/eclipse/emfforms/coffee/model/coffee/impl/DimensionImpl.java
@@ -0,0 +1,307 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
+ */
+package org.eclipse.emfforms.coffee.model.coffee.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+import org.eclipse.emfforms.coffee.model.coffee.CoffeePackage;
+import org.eclipse.emfforms.coffee.model.coffee.Dimension;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Dimension</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.emfforms.coffee.model.coffee.impl.DimensionImpl#getWidth <em>Width</em>}</li>
+ * <li>{@link org.eclipse.emfforms.coffee.model.coffee.impl.DimensionImpl#getHeight <em>Height</em>}</li>
+ * <li>{@link org.eclipse.emfforms.coffee.model.coffee.impl.DimensionImpl#getLength <em>Length</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class DimensionImpl extends MinimalEObjectImpl.Container implements Dimension {
+	/**
+	 * The default value of the '{@link #getWidth() <em>Width</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getWidth()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int WIDTH_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getWidth() <em>Width</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getWidth()
+	 * @generated
+	 * @ordered
+	 */
+	protected int width = WIDTH_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getHeight() <em>Height</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getHeight()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int HEIGHT_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getHeight() <em>Height</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getHeight()
+	 * @generated
+	 * @ordered
+	 */
+	protected int height = HEIGHT_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getLength() <em>Length</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getLength()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int LENGTH_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getLength() <em>Length</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getLength()
+	 * @generated
+	 * @ordered
+	 */
+	protected int length = LENGTH_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected DimensionImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return CoffeePackage.Literals.DIMENSION;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public int getWidth() {
+		return width;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setWidth(int newWidth) {
+		final int oldWidth = width;
+		width = newWidth;
+		if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, CoffeePackage.DIMENSION__WIDTH, oldWidth, width));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public int getHeight() {
+		return height;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setHeight(int newHeight) {
+		final int oldHeight = height;
+		height = newHeight;
+		if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, CoffeePackage.DIMENSION__HEIGHT, oldHeight, height));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public int getLength() {
+		return length;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setLength(int newLength) {
+		final int oldLength = length;
+		length = newLength;
+		if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, CoffeePackage.DIMENSION__LENGTH, oldLength, length));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case CoffeePackage.DIMENSION__WIDTH:
+			return getWidth();
+		case CoffeePackage.DIMENSION__HEIGHT:
+			return getHeight();
+		case CoffeePackage.DIMENSION__LENGTH:
+			return getLength();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case CoffeePackage.DIMENSION__WIDTH:
+			setWidth((Integer) newValue);
+			return;
+		case CoffeePackage.DIMENSION__HEIGHT:
+			setHeight((Integer) newValue);
+			return;
+		case CoffeePackage.DIMENSION__LENGTH:
+			setLength((Integer) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case CoffeePackage.DIMENSION__WIDTH:
+			setWidth(WIDTH_EDEFAULT);
+			return;
+		case CoffeePackage.DIMENSION__HEIGHT:
+			setHeight(HEIGHT_EDEFAULT);
+			return;
+		case CoffeePackage.DIMENSION__LENGTH:
+			setLength(LENGTH_EDEFAULT);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case CoffeePackage.DIMENSION__WIDTH:
+			return width != WIDTH_EDEFAULT;
+		case CoffeePackage.DIMENSION__HEIGHT:
+			return height != HEIGHT_EDEFAULT;
+		case CoffeePackage.DIMENSION__LENGTH:
+			return length != LENGTH_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) {
+			return super.toString();
+		}
+
+		final StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (width: "); //$NON-NLS-1$
+		result.append(width);
+		result.append(", height: "); //$NON-NLS-1$
+		result.append(height);
+		result.append(", length: "); //$NON-NLS-1$
+		result.append(length);
+		result.append(')');
+		return result.toString();
+	}
+
+} // DimensionImpl
diff --git a/examples/org.eclipse.emfforms.coffee.model/src/org/eclipse/emfforms/coffee/model/coffee/impl/DipTrayImpl.java b/examples/org.eclipse.emfforms.coffee.model/src/org/eclipse/emfforms/coffee/model/coffee/impl/DipTrayImpl.java
new file mode 100644
index 0000000..81c49d1
--- /dev/null
+++ b/examples/org.eclipse.emfforms.coffee.model/src/org/eclipse/emfforms/coffee/model/coffee/impl/DipTrayImpl.java
@@ -0,0 +1,47 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
+ */
+package org.eclipse.emfforms.coffee.model.coffee.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emfforms.coffee.model.coffee.CoffeePackage;
+import org.eclipse.emfforms.coffee.model.coffee.DipTray;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Dip Tray</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class DipTrayImpl extends ComponentImpl implements DipTray {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected DipTrayImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return CoffeePackage.Literals.DIP_TRAY;
+	}
+
+} // DipTrayImpl
diff --git a/examples/org.eclipse.emfforms.coffee.model/src/org/eclipse/emfforms/coffee/model/coffee/impl/DisplayImpl.java b/examples/org.eclipse.emfforms.coffee.model/src/org/eclipse/emfforms/coffee/model/coffee/impl/DisplayImpl.java
new file mode 100644
index 0000000..9e52a99
--- /dev/null
+++ b/examples/org.eclipse.emfforms.coffee.model/src/org/eclipse/emfforms/coffee/model/coffee/impl/DisplayImpl.java
@@ -0,0 +1,246 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
+ */
+package org.eclipse.emfforms.coffee.model.coffee.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+import org.eclipse.emfforms.coffee.model.coffee.CoffeePackage;
+import org.eclipse.emfforms.coffee.model.coffee.Display;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Display</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.emfforms.coffee.model.coffee.impl.DisplayImpl#getWidth <em>Width</em>}</li>
+ * <li>{@link org.eclipse.emfforms.coffee.model.coffee.impl.DisplayImpl#getHeight <em>Height</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class DisplayImpl extends MinimalEObjectImpl.Container implements Display {
+	/**
+	 * The default value of the '{@link #getWidth() <em>Width</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getWidth()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int WIDTH_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getWidth() <em>Width</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getWidth()
+	 * @generated
+	 * @ordered
+	 */
+	protected int width = WIDTH_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getHeight() <em>Height</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getHeight()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int HEIGHT_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getHeight() <em>Height</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getHeight()
+	 * @generated
+	 * @ordered
+	 */
+	protected int height = HEIGHT_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected DisplayImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return CoffeePackage.Literals.DISPLAY;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public int getWidth() {
+		return width;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setWidth(int newWidth) {
+		final int oldWidth = width;
+		width = newWidth;
+		if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, CoffeePackage.DISPLAY__WIDTH, oldWidth, width));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public int getHeight() {
+		return height;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setHeight(int newHeight) {
+		final int oldHeight = height;
+		height = newHeight;
+		if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, CoffeePackage.DISPLAY__HEIGHT, oldHeight, height));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case CoffeePackage.DISPLAY__WIDTH:
+			return getWidth();
+		case CoffeePackage.DISPLAY__HEIGHT:
+			return getHeight();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case CoffeePackage.DISPLAY__WIDTH:
+			setWidth((Integer) newValue);
+			return;
+		case CoffeePackage.DISPLAY__HEIGHT:
+			setHeight((Integer) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case CoffeePackage.DISPLAY__WIDTH:
+			setWidth(WIDTH_EDEFAULT);
+			return;
+		case CoffeePackage.DISPLAY__HEIGHT:
+			setHeight(HEIGHT_EDEFAULT);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case CoffeePackage.DISPLAY__WIDTH:
+			return width != WIDTH_EDEFAULT;
+		case CoffeePackage.DISPLAY__HEIGHT:
+			return height != HEIGHT_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) {
+			return super.toString();
+		}
+
+		final StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (width: "); //$NON-NLS-1$
+		result.append(width);
+		result.append(", height: "); //$NON-NLS-1$
+		result.append(height);
+		result.append(')');
+		return result.toString();
+	}
+
+} // DisplayImpl
diff --git a/examples/org.eclipse.emfforms.coffee.model/src/org/eclipse/emfforms/coffee/model/coffee/impl/MachineImpl.java b/examples/org.eclipse.emfforms.coffee.model/src/org/eclipse/emfforms/coffee/model/coffee/impl/MachineImpl.java
new file mode 100644
index 0000000..8db9ede
--- /dev/null
+++ b/examples/org.eclipse.emfforms.coffee.model/src/org/eclipse/emfforms/coffee/model/coffee/impl/MachineImpl.java
@@ -0,0 +1,184 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
+ */
+package org.eclipse.emfforms.coffee.model.coffee.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emfforms.coffee.model.coffee.CoffeePackage;
+import org.eclipse.emfforms.coffee.model.coffee.Machine;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Machine</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.emfforms.coffee.model.coffee.impl.MachineImpl#getName <em>Name</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class MachineImpl extends ComponentImpl implements Machine {
+	/**
+	 * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getName()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String NAME_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getName()
+	 * @generated
+	 * @ordered
+	 */
+	protected String name = NAME_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected MachineImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return CoffeePackage.Literals.MACHINE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getName() {
+		return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setName(String newName) {
+		final String oldName = name;
+		name = newName;
+		if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, CoffeePackage.MACHINE__NAME, oldName, name));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case CoffeePackage.MACHINE__NAME:
+			return getName();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case CoffeePackage.MACHINE__NAME:
+			setName((String) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case CoffeePackage.MACHINE__NAME:
+			setName(NAME_EDEFAULT);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case CoffeePackage.MACHINE__NAME:
+			return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) {
+			return super.toString();
+		}
+
+		final StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (name: "); //$NON-NLS-1$
+		result.append(name);
+		result.append(')');
+		return result.toString();
+	}
+
+} // MachineImpl
diff --git a/examples/org.eclipse.emfforms.coffee.model/src/org/eclipse/emfforms/coffee/model/coffee/impl/ProcessorImpl.java b/examples/org.eclipse.emfforms.coffee.model/src/org/eclipse/emfforms/coffee/model/coffee/impl/ProcessorImpl.java
new file mode 100644
index 0000000..edf07d8
--- /dev/null
+++ b/examples/org.eclipse.emfforms.coffee.model/src/org/eclipse/emfforms/coffee/model/coffee/impl/ProcessorImpl.java
@@ -0,0 +1,502 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
+ */
+package org.eclipse.emfforms.coffee.model.coffee.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+import org.eclipse.emfforms.coffee.model.coffee.CoffeePackage;
+import org.eclipse.emfforms.coffee.model.coffee.ManufactoringProcess;
+import org.eclipse.emfforms.coffee.model.coffee.Processor;
+import org.eclipse.emfforms.coffee.model.coffee.SocketConnectorType;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Processor</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.emfforms.coffee.model.coffee.impl.ProcessorImpl#getVendor <em>Vendor</em>}</li>
+ * <li>{@link org.eclipse.emfforms.coffee.model.coffee.impl.ProcessorImpl#getClockSpeed <em>Clock Speed</em>}</li>
+ * <li>{@link org.eclipse.emfforms.coffee.model.coffee.impl.ProcessorImpl#getNumberOfCores <em>Number Of
+ * Cores</em>}</li>
+ * <li>{@link org.eclipse.emfforms.coffee.model.coffee.impl.ProcessorImpl#getSocketconnectorType <em>Socketconnector
+ * Type</em>}</li>
+ * <li>{@link org.eclipse.emfforms.coffee.model.coffee.impl.ProcessorImpl#getThermalDesignPower <em>Thermal Design
+ * Power</em>}</li>
+ * <li>{@link org.eclipse.emfforms.coffee.model.coffee.impl.ProcessorImpl#getManufactoringProcess <em>Manufactoring
+ * Process</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class ProcessorImpl extends MinimalEObjectImpl.Container implements Processor {
+	/**
+	 * The default value of the '{@link #getVendor() <em>Vendor</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getVendor()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String VENDOR_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getVendor() <em>Vendor</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getVendor()
+	 * @generated
+	 * @ordered
+	 */
+	protected String vendor = VENDOR_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getClockSpeed() <em>Clock Speed</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getClockSpeed()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int CLOCK_SPEED_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getClockSpeed() <em>Clock Speed</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getClockSpeed()
+	 * @generated
+	 * @ordered
+	 */
+	protected int clockSpeed = CLOCK_SPEED_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getNumberOfCores() <em>Number Of Cores</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getNumberOfCores()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int NUMBER_OF_CORES_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getNumberOfCores() <em>Number Of Cores</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getNumberOfCores()
+	 * @generated
+	 * @ordered
+	 */
+	protected int numberOfCores = NUMBER_OF_CORES_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getSocketconnectorType() <em>Socketconnector Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getSocketconnectorType()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final SocketConnectorType SOCKETCONNECTOR_TYPE_EDEFAULT = SocketConnectorType.A1T;
+
+	/**
+	 * The cached value of the '{@link #getSocketconnectorType() <em>Socketconnector Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getSocketconnectorType()
+	 * @generated
+	 * @ordered
+	 */
+	protected SocketConnectorType socketconnectorType = SOCKETCONNECTOR_TYPE_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getThermalDesignPower() <em>Thermal Design Power</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getThermalDesignPower()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int THERMAL_DESIGN_POWER_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getThermalDesignPower() <em>Thermal Design Power</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getThermalDesignPower()
+	 * @generated
+	 * @ordered
+	 */
+	protected int thermalDesignPower = THERMAL_DESIGN_POWER_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getManufactoringProcess() <em>Manufactoring Process</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getManufactoringProcess()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final ManufactoringProcess MANUFACTORING_PROCESS_EDEFAULT = ManufactoringProcess.NM18;
+
+	/**
+	 * The cached value of the '{@link #getManufactoringProcess() <em>Manufactoring Process</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getManufactoringProcess()
+	 * @generated
+	 * @ordered
+	 */
+	protected ManufactoringProcess manufactoringProcess = MANUFACTORING_PROCESS_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected ProcessorImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return CoffeePackage.Literals.PROCESSOR;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getVendor() {
+		return vendor;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setVendor(String newVendor) {
+		final String oldVendor = vendor;
+		vendor = newVendor;
+		if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, CoffeePackage.PROCESSOR__VENDOR, oldVendor, vendor));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public int getClockSpeed() {
+		return clockSpeed;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setClockSpeed(int newClockSpeed) {
+		final int oldClockSpeed = clockSpeed;
+		clockSpeed = newClockSpeed;
+		if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, CoffeePackage.PROCESSOR__CLOCK_SPEED, oldClockSpeed,
+				clockSpeed));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public int getNumberOfCores() {
+		return numberOfCores;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setNumberOfCores(int newNumberOfCores) {
+		final int oldNumberOfCores = numberOfCores;
+		numberOfCores = newNumberOfCores;
+		if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, CoffeePackage.PROCESSOR__NUMBER_OF_CORES,
+				oldNumberOfCores, numberOfCores));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public SocketConnectorType getSocketconnectorType() {
+		return socketconnectorType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setSocketconnectorType(SocketConnectorType newSocketconnectorType) {
+		final SocketConnectorType oldSocketconnectorType = socketconnectorType;
+		socketconnectorType = newSocketconnectorType == null ? SOCKETCONNECTOR_TYPE_EDEFAULT : newSocketconnectorType;
+		if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, CoffeePackage.PROCESSOR__SOCKETCONNECTOR_TYPE,
+				oldSocketconnectorType, socketconnectorType));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public int getThermalDesignPower() {
+		return thermalDesignPower;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setThermalDesignPower(int newThermalDesignPower) {
+		final int oldThermalDesignPower = thermalDesignPower;
+		thermalDesignPower = newThermalDesignPower;
+		if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, CoffeePackage.PROCESSOR__THERMAL_DESIGN_POWER,
+				oldThermalDesignPower, thermalDesignPower));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public ManufactoringProcess getManufactoringProcess() {
+		return manufactoringProcess;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setManufactoringProcess(ManufactoringProcess newManufactoringProcess) {
+		final ManufactoringProcess oldManufactoringProcess = manufactoringProcess;
+		manufactoringProcess = newManufactoringProcess == null ? MANUFACTORING_PROCESS_EDEFAULT
+			: newManufactoringProcess;
+		if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, CoffeePackage.PROCESSOR__MANUFACTORING_PROCESS,
+				oldManufactoringProcess, manufactoringProcess));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case CoffeePackage.PROCESSOR__VENDOR:
+			return getVendor();
+		case CoffeePackage.PROCESSOR__CLOCK_SPEED:
+			return getClockSpeed();
+		case CoffeePackage.PROCESSOR__NUMBER_OF_CORES:
+			return getNumberOfCores();
+		case CoffeePackage.PROCESSOR__SOCKETCONNECTOR_TYPE:
+			return getSocketconnectorType();
+		case CoffeePackage.PROCESSOR__THERMAL_DESIGN_POWER:
+			return getThermalDesignPower();
+		case CoffeePackage.PROCESSOR__MANUFACTORING_PROCESS:
+			return getManufactoringProcess();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case CoffeePackage.PROCESSOR__VENDOR:
+			setVendor((String) newValue);
+			return;
+		case CoffeePackage.PROCESSOR__CLOCK_SPEED:
+			setClockSpeed((Integer) newValue);
+			return;
+		case CoffeePackage.PROCESSOR__NUMBER_OF_CORES:
+			setNumberOfCores((Integer) newValue);
+			return;
+		case CoffeePackage.PROCESSOR__SOCKETCONNECTOR_TYPE:
+			setSocketconnectorType((SocketConnectorType) newValue);
+			return;
+		case CoffeePackage.PROCESSOR__THERMAL_DESIGN_POWER:
+			setThermalDesignPower((Integer) newValue);
+			return;
+		case CoffeePackage.PROCESSOR__MANUFACTORING_PROCESS:
+			setManufactoringProcess((ManufactoringProcess) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case CoffeePackage.PROCESSOR__VENDOR:
+			setVendor(VENDOR_EDEFAULT);
+			return;
+		case CoffeePackage.PROCESSOR__CLOCK_SPEED:
+			setClockSpeed(CLOCK_SPEED_EDEFAULT);
+			return;
+		case CoffeePackage.PROCESSOR__NUMBER_OF_CORES:
+			setNumberOfCores(NUMBER_OF_CORES_EDEFAULT);
+			return;
+		case CoffeePackage.PROCESSOR__SOCKETCONNECTOR_TYPE:
+			setSocketconnectorType(SOCKETCONNECTOR_TYPE_EDEFAULT);
+			return;
+		case CoffeePackage.PROCESSOR__THERMAL_DESIGN_POWER:
+			setThermalDesignPower(THERMAL_DESIGN_POWER_EDEFAULT);
+			return;
+		case CoffeePackage.PROCESSOR__MANUFACTORING_PROCESS:
+			setManufactoringProcess(MANUFACTORING_PROCESS_EDEFAULT);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case CoffeePackage.PROCESSOR__VENDOR:
+			return VENDOR_EDEFAULT == null ? vendor != null : !VENDOR_EDEFAULT.equals(vendor);
+		case CoffeePackage.PROCESSOR__CLOCK_SPEED:
+			return clockSpeed != CLOCK_SPEED_EDEFAULT;
+		case CoffeePackage.PROCESSOR__NUMBER_OF_CORES:
+			return numberOfCores != NUMBER_OF_CORES_EDEFAULT;
+		case CoffeePackage.PROCESSOR__SOCKETCONNECTOR_TYPE:
+			return socketconnectorType != SOCKETCONNECTOR_TYPE_EDEFAULT;
+		case CoffeePackage.PROCESSOR__THERMAL_DESIGN_POWER:
+			return thermalDesignPower != THERMAL_DESIGN_POWER_EDEFAULT;
+		case CoffeePackage.PROCESSOR__MANUFACTORING_PROCESS:
+			return manufactoringProcess != MANUFACTORING_PROCESS_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) {
+			return super.toString();
+		}
+
+		final StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (vendor: "); //$NON-NLS-1$
+		result.append(vendor);
+		result.append(", clockSpeed: "); //$NON-NLS-1$
+		result.append(clockSpeed);
+		result.append(", numberOfCores: "); //$NON-NLS-1$
+		result.append(numberOfCores);
+		result.append(", socketconnectorType: "); //$NON-NLS-1$
+		result.append(socketconnectorType);
+		result.append(", thermalDesignPower: "); //$NON-NLS-1$
+		result.append(thermalDesignPower);
+		result.append(", manufactoringProcess: "); //$NON-NLS-1$
+		result.append(manufactoringProcess);
+		result.append(')');
+		return result.toString();
+	}
+
+} // ProcessorImpl
diff --git a/examples/org.eclipse.emfforms.coffee.model/src/org/eclipse/emfforms/coffee/model/coffee/impl/RAMImpl.java b/examples/org.eclipse.emfforms.coffee.model/src/org/eclipse/emfforms/coffee/model/coffee/impl/RAMImpl.java
new file mode 100644
index 0000000..c297f8f
--- /dev/null
+++ b/examples/org.eclipse.emfforms.coffee.model/src/org/eclipse/emfforms/coffee/model/coffee/impl/RAMImpl.java
@@ -0,0 +1,309 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
+ */
+package org.eclipse.emfforms.coffee.model.coffee.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+import org.eclipse.emfforms.coffee.model.coffee.CoffeePackage;
+import org.eclipse.emfforms.coffee.model.coffee.RAM;
+import org.eclipse.emfforms.coffee.model.coffee.RamType;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>RAM</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.emfforms.coffee.model.coffee.impl.RAMImpl#getClockSpeed <em>Clock Speed</em>}</li>
+ * <li>{@link org.eclipse.emfforms.coffee.model.coffee.impl.RAMImpl#getSize <em>Size</em>}</li>
+ * <li>{@link org.eclipse.emfforms.coffee.model.coffee.impl.RAMImpl#getType <em>Type</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class RAMImpl extends MinimalEObjectImpl.Container implements RAM {
+	/**
+	 * The default value of the '{@link #getClockSpeed() <em>Clock Speed</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getClockSpeed()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int CLOCK_SPEED_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getClockSpeed() <em>Clock Speed</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getClockSpeed()
+	 * @generated
+	 * @ordered
+	 */
+	protected int clockSpeed = CLOCK_SPEED_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getSize() <em>Size</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getSize()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int SIZE_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getSize() <em>Size</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getSize()
+	 * @generated
+	 * @ordered
+	 */
+	protected int size = SIZE_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getType() <em>Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getType()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final RamType TYPE_EDEFAULT = RamType.SODIMM;
+
+	/**
+	 * The cached value of the '{@link #getType() <em>Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getType()
+	 * @generated
+	 * @ordered
+	 */
+	protected RamType type = TYPE_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected RAMImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return CoffeePackage.Literals.RAM;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public int getClockSpeed() {
+		return clockSpeed;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setClockSpeed(int newClockSpeed) {
+		final int oldClockSpeed = clockSpeed;
+		clockSpeed = newClockSpeed;
+		if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, CoffeePackage.RAM__CLOCK_SPEED, oldClockSpeed,
+				clockSpeed));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public int getSize() {
+		return size;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setSize(int newSize) {
+		final int oldSize = size;
+		size = newSize;
+		if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, CoffeePackage.RAM__SIZE, oldSize, size));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public RamType getType() {
+		return type;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setType(RamType newType) {
+		final RamType oldType = type;
+		type = newType == null ? TYPE_EDEFAULT : newType;
+		if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, CoffeePackage.RAM__TYPE, oldType, type));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case CoffeePackage.RAM__CLOCK_SPEED:
+			return getClockSpeed();
+		case CoffeePackage.RAM__SIZE:
+			return getSize();
+		case CoffeePackage.RAM__TYPE:
+			return getType();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case CoffeePackage.RAM__CLOCK_SPEED:
+			setClockSpeed((Integer) newValue);
+			return;
+		case CoffeePackage.RAM__SIZE:
+			setSize((Integer) newValue);
+			return;
+		case CoffeePackage.RAM__TYPE:
+			setType((RamType) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case CoffeePackage.RAM__CLOCK_SPEED:
+			setClockSpeed(CLOCK_SPEED_EDEFAULT);
+			return;
+		case CoffeePackage.RAM__SIZE:
+			setSize(SIZE_EDEFAULT);
+			return;
+		case CoffeePackage.RAM__TYPE:
+			setType(TYPE_EDEFAULT);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case CoffeePackage.RAM__CLOCK_SPEED:
+			return clockSpeed != CLOCK_SPEED_EDEFAULT;
+		case CoffeePackage.RAM__SIZE:
+			return size != SIZE_EDEFAULT;
+		case CoffeePackage.RAM__TYPE:
+			return type != TYPE_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) {
+			return super.toString();
+		}
+
+		final StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (clockSpeed: "); //$NON-NLS-1$
+		result.append(clockSpeed);
+		result.append(", size: "); //$NON-NLS-1$
+		result.append(size);
+		result.append(", type: "); //$NON-NLS-1$
+		result.append(type);
+		result.append(')');
+		return result.toString();
+	}
+
+} // RAMImpl
diff --git a/examples/org.eclipse.emfforms.coffee.model/src/org/eclipse/emfforms/coffee/model/coffee/impl/WaterTankImpl.java b/examples/org.eclipse.emfforms.coffee.model/src/org/eclipse/emfforms/coffee/model/coffee/impl/WaterTankImpl.java
new file mode 100644
index 0000000..3222098
--- /dev/null
+++ b/examples/org.eclipse.emfforms.coffee.model/src/org/eclipse/emfforms/coffee/model/coffee/impl/WaterTankImpl.java
@@ -0,0 +1,47 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
+ */
+package org.eclipse.emfforms.coffee.model.coffee.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emfforms.coffee.model.coffee.CoffeePackage;
+import org.eclipse.emfforms.coffee.model.coffee.WaterTank;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Water Tank</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class WaterTankImpl extends ComponentImpl implements WaterTank {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected WaterTankImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return CoffeePackage.Literals.WATER_TANK;
+	}
+
+} // WaterTankImpl
diff --git a/examples/org.eclipse.emfforms.coffee.model/src/org/eclipse/emfforms/coffee/model/coffee/util/CoffeeAdapterFactory.java b/examples/org.eclipse.emfforms.coffee.model/src/org/eclipse/emfforms/coffee/model/coffee/util/CoffeeAdapterFactory.java
new file mode 100644
index 0000000..9262ba9
--- /dev/null
+++ b/examples/org.eclipse.emfforms.coffee.model/src/org/eclipse/emfforms/coffee/model/coffee/util/CoffeeAdapterFactory.java
@@ -0,0 +1,355 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
+ */
+package org.eclipse.emfforms.coffee.model.coffee.util;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notifier;
+import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emfforms.coffee.model.coffee.Activity;
+import org.eclipse.emfforms.coffee.model.coffee.BrewingUnit;
+import org.eclipse.emfforms.coffee.model.coffee.CoffeePackage;
+import org.eclipse.emfforms.coffee.model.coffee.Component;
+import org.eclipse.emfforms.coffee.model.coffee.ControlUnit;
+import org.eclipse.emfforms.coffee.model.coffee.Dimension;
+import org.eclipse.emfforms.coffee.model.coffee.DipTray;
+import org.eclipse.emfforms.coffee.model.coffee.Display;
+import org.eclipse.emfforms.coffee.model.coffee.Machine;
+import org.eclipse.emfforms.coffee.model.coffee.Processor;
+import org.eclipse.emfforms.coffee.model.coffee.RAM;
+import org.eclipse.emfforms.coffee.model.coffee.WaterTank;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Adapter Factory</b> for the model.
+ * It provides an adapter <code>createXXX</code> method for each class of the model.
+ * <!-- end-user-doc -->
+ *
+ * @see org.eclipse.emfforms.coffee.model.coffee.CoffeePackage
+ * @generated
+ */
+public class CoffeeAdapterFactory extends AdapterFactoryImpl {
+	/**
+	 * The cached model package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected static CoffeePackage modelPackage;
+
+	/**
+	 * Creates an instance of the adapter factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public CoffeeAdapterFactory() {
+		if (modelPackage == null) {
+			modelPackage = CoffeePackage.eINSTANCE;
+		}
+	}
+
+	/**
+	 * Returns whether this factory is applicable for the type of the object.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns <code>true</code> if the object is either the model's package or is an instance
+	 * object of the model.
+	 * <!-- end-user-doc -->
+	 *
+	 * @return whether this factory is applicable for the type of the object.
+	 * @generated
+	 */
+	@Override
+	public boolean isFactoryForType(Object object) {
+		if (object == modelPackage) {
+			return true;
+		}
+		if (object instanceof EObject) {
+			return ((EObject) object).eClass().getEPackage() == modelPackage;
+		}
+		return false;
+	}
+
+	/**
+	 * The switch that delegates to the <code>createXXX</code> methods.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected CoffeeSwitch<Adapter> modelSwitch = new CoffeeSwitch<Adapter>() {
+		@Override
+		public Adapter caseComponent(Component object) {
+			return createComponentAdapter();
+		}
+
+		@Override
+		public Adapter caseMachine(Machine object) {
+			return createMachineAdapter();
+		}
+
+		@Override
+		public Adapter caseControlUnit(ControlUnit object) {
+			return createControlUnitAdapter();
+		}
+
+		@Override
+		public Adapter caseBrewingUnit(BrewingUnit object) {
+			return createBrewingUnitAdapter();
+		}
+
+		@Override
+		public Adapter caseDipTray(DipTray object) {
+			return createDipTrayAdapter();
+		}
+
+		@Override
+		public Adapter caseWaterTank(WaterTank object) {
+			return createWaterTankAdapter();
+		}
+
+		@Override
+		public Adapter caseProcessor(Processor object) {
+			return createProcessorAdapter();
+		}
+
+		@Override
+		public Adapter caseRAM(RAM object) {
+			return createRAMAdapter();
+		}
+
+		@Override
+		public Adapter caseActivity(Activity object) {
+			return createActivityAdapter();
+		}
+
+		@Override
+		public Adapter caseDimension(Dimension object) {
+			return createDimensionAdapter();
+		}
+
+		@Override
+		public Adapter caseDisplay(Display object) {
+			return createDisplayAdapter();
+		}
+
+		@Override
+		public Adapter defaultCase(EObject object) {
+			return createEObjectAdapter();
+		}
+	};
+
+	/**
+	 * Creates an adapter for the <code>target</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param target the object to adapt.
+	 * @return the adapter for the <code>target</code>.
+	 * @generated
+	 */
+	@Override
+	public Adapter createAdapter(Notifier target) {
+		return modelSwitch.doSwitch((EObject) target);
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.emfforms.coffee.model.coffee.Component
+	 * <em>Component</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.emfforms.coffee.model.coffee.Component
+	 * @generated
+	 */
+	public Adapter createComponentAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.emfforms.coffee.model.coffee.Machine
+	 * <em>Machine</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.emfforms.coffee.model.coffee.Machine
+	 * @generated
+	 */
+	public Adapter createMachineAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.emfforms.coffee.model.coffee.ControlUnit
+	 * <em>Control Unit</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.emfforms.coffee.model.coffee.ControlUnit
+	 * @generated
+	 */
+	public Adapter createControlUnitAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.emfforms.coffee.model.coffee.BrewingUnit
+	 * <em>Brewing Unit</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.emfforms.coffee.model.coffee.BrewingUnit
+	 * @generated
+	 */
+	public Adapter createBrewingUnitAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.emfforms.coffee.model.coffee.DipTray <em>Dip
+	 * Tray</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.emfforms.coffee.model.coffee.DipTray
+	 * @generated
+	 */
+	public Adapter createDipTrayAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.emfforms.coffee.model.coffee.WaterTank <em>Water
+	 * Tank</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.emfforms.coffee.model.coffee.WaterTank
+	 * @generated
+	 */
+	public Adapter createWaterTankAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.emfforms.coffee.model.coffee.Processor
+	 * <em>Processor</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.emfforms.coffee.model.coffee.Processor
+	 * @generated
+	 */
+	public Adapter createProcessorAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.emfforms.coffee.model.coffee.RAM <em>RAM</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.emfforms.coffee.model.coffee.RAM
+	 * @generated
+	 */
+	public Adapter createRAMAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.emfforms.coffee.model.coffee.Activity
+	 * <em>Activity</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.emfforms.coffee.model.coffee.Activity
+	 * @generated
+	 */
+	public Adapter createActivityAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.emfforms.coffee.model.coffee.Dimension
+	 * <em>Dimension</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.emfforms.coffee.model.coffee.Dimension
+	 * @generated
+	 */
+	public Adapter createDimensionAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.emfforms.coffee.model.coffee.Display
+	 * <em>Display</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.emfforms.coffee.model.coffee.Display
+	 * @generated
+	 */
+	public Adapter createDisplayAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for the default case.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null.
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the new adapter.
+	 * @generated
+	 */
+	public Adapter createEObjectAdapter() {
+		return null;
+	}
+
+} // CoffeeAdapterFactory
diff --git a/examples/org.eclipse.emfforms.coffee.model/src/org/eclipse/emfforms/coffee/model/coffee/util/CoffeeSwitch.java b/examples/org.eclipse.emfforms.coffee.model/src/org/eclipse/emfforms/coffee/model/coffee/util/CoffeeSwitch.java
new file mode 100644
index 0000000..e6cc39c
--- /dev/null
+++ b/examples/org.eclipse.emfforms.coffee.model/src/org/eclipse/emfforms/coffee/model/coffee/util/CoffeeSwitch.java
@@ -0,0 +1,394 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
+ */
+package org.eclipse.emfforms.coffee.model.coffee.util;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.util.Switch;
+import org.eclipse.emfforms.coffee.model.coffee.Activity;
+import org.eclipse.emfforms.coffee.model.coffee.BrewingUnit;
+import org.eclipse.emfforms.coffee.model.coffee.CoffeePackage;
+import org.eclipse.emfforms.coffee.model.coffee.Component;
+import org.eclipse.emfforms.coffee.model.coffee.ControlUnit;
+import org.eclipse.emfforms.coffee.model.coffee.Dimension;
+import org.eclipse.emfforms.coffee.model.coffee.DipTray;
+import org.eclipse.emfforms.coffee.model.coffee.Display;
+import org.eclipse.emfforms.coffee.model.coffee.Machine;
+import org.eclipse.emfforms.coffee.model.coffee.Processor;
+import org.eclipse.emfforms.coffee.model.coffee.RAM;
+import org.eclipse.emfforms.coffee.model.coffee.WaterTank;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Switch</b> for the model's inheritance hierarchy.
+ * It supports the call {@link #doSwitch(EObject) doSwitch(object)}
+ * to invoke the <code>caseXXX</code> method for each class of the model,
+ * starting with the actual class of the object
+ * and proceeding up the inheritance hierarchy
+ * until a non-null result is returned,
+ * which is the result of the switch.
+ * <!-- end-user-doc -->
+ *
+ * @see org.eclipse.emfforms.coffee.model.coffee.CoffeePackage
+ * @generated
+ */
+public class CoffeeSwitch<T> extends Switch<T> {
+	/**
+	 * The cached model package
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected static CoffeePackage modelPackage;
+
+	/**
+	 * Creates an instance of the switch.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public CoffeeSwitch() {
+		if (modelPackage == null) {
+			modelPackage = CoffeePackage.eINSTANCE;
+		}
+	}
+
+	/**
+	 * Checks whether this is a switch for the given package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param ePackage the package in question.
+	 * @return whether this is a switch for the given package.
+	 * @generated
+	 */
+	@Override
+	protected boolean isSwitchFor(EPackage ePackage) {
+		return ePackage == modelPackage;
+	}
+
+	/**
+	 * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that
+	 * result.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the first non-null result returned by a <code>caseXXX</code> call.
+	 * @generated
+	 */
+	@Override
+	protected T doSwitch(int classifierID, EObject theEObject) {
+		switch (classifierID) {
+		case CoffeePackage.COMPONENT: {
+			final Component component = (Component) theEObject;
+			T result = caseComponent(component);
+			if (result == null) {
+				result = defaultCase(theEObject);
+			}
+			return result;
+		}
+		case CoffeePackage.MACHINE: {
+			final Machine machine = (Machine) theEObject;
+			T result = caseMachine(machine);
+			if (result == null) {
+				result = caseComponent(machine);
+			}
+			if (result == null) {
+				result = defaultCase(theEObject);
+			}
+			return result;
+		}
+		case CoffeePackage.CONTROL_UNIT: {
+			final ControlUnit controlUnit = (ControlUnit) theEObject;
+			T result = caseControlUnit(controlUnit);
+			if (result == null) {
+				result = caseComponent(controlUnit);
+			}
+			if (result == null) {
+				result = defaultCase(theEObject);
+			}
+			return result;
+		}
+		case CoffeePackage.BREWING_UNIT: {
+			final BrewingUnit brewingUnit = (BrewingUnit) theEObject;
+			T result = caseBrewingUnit(brewingUnit);
+			if (result == null) {
+				result = caseComponent(brewingUnit);
+			}
+			if (result == null) {
+				result = defaultCase(theEObject);
+			}
+			return result;
+		}
+		case CoffeePackage.DIP_TRAY: {
+			final DipTray dipTray = (DipTray) theEObject;
+			T result = caseDipTray(dipTray);
+			if (result == null) {
+				result = caseComponent(dipTray);
+			}
+			if (result == null) {
+				result = defaultCase(theEObject);
+			}
+			return result;
+		}
+		case CoffeePackage.WATER_TANK: {
+			final WaterTank waterTank = (WaterTank) theEObject;
+			T result = caseWaterTank(waterTank);
+			if (result == null) {
+				result = caseComponent(waterTank);
+			}
+			if (result == null) {
+				result = defaultCase(theEObject);
+			}
+			return result;
+		}
+		case CoffeePackage.PROCESSOR: {
+			final Processor processor = (Processor) theEObject;
+			T result = caseProcessor(processor);
+			if (result == null) {
+				result = defaultCase(theEObject);
+			}
+			return result;
+		}
+		case CoffeePackage.RAM: {
+			final RAM ram = (RAM) theEObject;
+			T result = caseRAM(ram);
+			if (result == null) {
+				result = defaultCase(theEObject);
+			}
+			return result;
+		}
+		case CoffeePackage.ACTIVITY: {
+			final Activity activity = (Activity) theEObject;
+			T result = caseActivity(activity);
+			if (result == null) {
+				result = defaultCase(theEObject);
+			}
+			return result;
+		}
+		case CoffeePackage.DIMENSION: {
+			final Dimension dimension = (Dimension) theEObject;
+			T result = caseDimension(dimension);
+			if (result == null) {
+				result = defaultCase(theEObject);
+			}
+			return result;
+		}
+		case CoffeePackage.DISPLAY: {
+			final Display display = (Display) theEObject;
+			T result = caseDisplay(display);
+			if (result == null) {
+				result = defaultCase(theEObject);
+			}
+			return result;
+		}
+		default:
+			return defaultCase(theEObject);
+		}
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Component</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>Component</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseComponent(Component object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Machine</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>Machine</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseMachine(Machine object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Control Unit</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>Control Unit</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseControlUnit(ControlUnit object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Brewing Unit</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>Brewing Unit</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseBrewingUnit(BrewingUnit object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Dip Tray</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>Dip Tray</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseDipTray(DipTray object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Water Tank</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>Water Tank</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseWaterTank(WaterTank object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Processor</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>Processor</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseProcessor(Processor object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>RAM</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>RAM</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseRAM(RAM object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Activity</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>Activity</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseActivity(Activity object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Dimension</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>Dimension</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseDimension(Dimension object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Display</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>Display</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseDisplay(Display object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch, but this is the last case anyway.
+	 * <!-- end-user-doc -->
+	 *
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject)
+	 * @generated
+	 */
+	@Override
+	public T defaultCase(EObject object) {
+		return null;
+	}
+
+} // CoffeeSwitch
diff --git a/features/org.eclipse.emf.ecp.cdo.feature/feature.xml b/features/org.eclipse.emf.ecp.cdo.feature/feature.xml
index 966dd0b..f10d2f7 100644
--- a/features/org.eclipse.emf.ecp.cdo.feature/feature.xml
+++ b/features/org.eclipse.emf.ecp.cdo.feature/feature.xml
@@ -12,12 +12,12 @@
 <feature
       id="org.eclipse.emf.ecp.cdo.feature"
       label="ECP CDO Integration (Experimental)"
-      version="1.16.0.qualifier"
+      version="1.17.0.qualifier"
       provider-name="Eclipse Modeling Project"
       plugin="org.eclipse.emf.ecp.cdo.core"
       image="eclipse_update_120.jpg"
       license-feature="org.eclipse.emf.ecp.license.feature"
-      license-feature-version="1.16.0.qualifier">
+      license-feature-version="1.17.0.qualifier">
 
    <description>
       Integration of the CDO model repository.
diff --git a/features/org.eclipse.emf.ecp.cdo.feature/pom.xml b/features/org.eclipse.emf.ecp.cdo.feature/pom.xml
index 0aaf2ed..118d8d5 100644
--- a/features/org.eclipse.emf.ecp.cdo.feature/pom.xml
+++ b/features/org.eclipse.emf.ecp.cdo.feature/pom.xml
@@ -5,11 +5,11 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-features-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.features/</relativePath>
   </parent>
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emf.ecp.cdo.feature</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-feature</packaging>
 </project>
diff --git a/features/org.eclipse.emf.ecp.changebroker.feature/feature.xml b/features/org.eclipse.emf.ecp.changebroker.feature/feature.xml
index 0df4769..55d5197 100644
--- a/features/org.eclipse.emf.ecp.changebroker.feature/feature.xml
+++ b/features/org.eclipse.emf.ecp.changebroker.feature/feature.xml
@@ -2,11 +2,11 @@
 <feature
       id="org.eclipse.emf.ecp.changebroker.feature"
       label="ECP Change Broker Feature (do not install into IDE)"
-      version="1.16.0.qualifier"
+      version="1.17.0.qualifier"
       provider-name="Eclipse Modeling Project"
       plugin="org.eclipse.emf.ecp.changebroker"
       license-feature="org.eclipse.emf.ecp.license.feature"
-      license-feature-version="1.16.0.qualifier">
+      license-feature-version="1.17.0.qualifier">
 
    <description>
       Generic Observer Bus for EMF Notifications including an ECP/EMFStore-Bridge.
diff --git a/features/org.eclipse.emf.ecp.changebroker.feature/pom.xml b/features/org.eclipse.emf.ecp.changebroker.feature/pom.xml
index 1f6366d..d11d654 100644
--- a/features/org.eclipse.emf.ecp.changebroker.feature/pom.xml
+++ b/features/org.eclipse.emf.ecp.changebroker.feature/pom.xml
@@ -5,11 +5,11 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-features-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.features/</relativePath>
   </parent>
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emf.ecp.changebroker.feature</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-feature</packaging>
 </project>
diff --git a/features/org.eclipse.emf.ecp.demo.e3.feature/feature.xml b/features/org.eclipse.emf.ecp.demo.e3.feature/feature.xml
index 2881a6d..dc8d2c7 100644
--- a/features/org.eclipse.emf.ecp.demo.e3.feature/feature.xml
+++ b/features/org.eclipse.emf.ecp.demo.e3.feature/feature.xml
@@ -2,12 +2,12 @@
 <feature
       id="org.eclipse.emf.ecp.demo.e3.feature"
       label="ECP e3 Demo Application"
-      version="1.16.0.qualifier"
+      version="1.17.0.qualifier"
       provider-name="%providerName"
       plugin="org.eclipse.emf.ecp.application.e3"
       image="eclipse_update_120.jpg"
       license-feature="org.eclipse.emf.ecp.license.feature"
-      license-feature-version="1.16.0.qualifier">
+      license-feature-version="1.17.0.qualifier">
 
    <description>
       %description
diff --git a/features/org.eclipse.emf.ecp.demo.e3.feature/pom.xml b/features/org.eclipse.emf.ecp.demo.e3.feature/pom.xml
index e0d9878..209159b 100644
--- a/features/org.eclipse.emf.ecp.demo.e3.feature/pom.xml
+++ b/features/org.eclipse.emf.ecp.demo.e3.feature/pom.xml
@@ -5,11 +5,11 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-features-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.features/</relativePath>
   </parent>
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emf.ecp.demo.e3.feature</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-feature</packaging>
 </project>
diff --git a/features/org.eclipse.emf.ecp.demo.e4.feature/feature.xml b/features/org.eclipse.emf.ecp.demo.e4.feature/feature.xml
index 15637f1..06625e3 100644
--- a/features/org.eclipse.emf.ecp.demo.e4.feature/feature.xml
+++ b/features/org.eclipse.emf.ecp.demo.e4.feature/feature.xml
@@ -2,12 +2,12 @@
 <feature
       id="org.eclipse.emf.ecp.demo.e4.feature"
       label="ECP e4 Demo Application"
-      version="1.16.0.qualifier"
+      version="1.17.0.qualifier"
       provider-name="%providerName"
       plugin="org.eclipse.emf.ecp.application.e4"
       image="eclipse_update_120.jpg"
       license-feature="org.eclipse.emf.ecp.license.feature"
-      license-feature-version="1.16.0.qualifier">
+      license-feature-version="1.17.0.qualifier">
 
    <description>
       %description
diff --git a/features/org.eclipse.emf.ecp.demo.e4.feature/pom.xml b/features/org.eclipse.emf.ecp.demo.e4.feature/pom.xml
index 8d40606..8535fb2 100644
--- a/features/org.eclipse.emf.ecp.demo.e4.feature/pom.xml
+++ b/features/org.eclipse.emf.ecp.demo.e4.feature/pom.xml
@@ -5,12 +5,12 @@
 	<parent>
 		<groupId>org.eclipse.emf.ecp</groupId>
 		<artifactId>ecp-features-parent</artifactId>
-		<version>1.16.0-SNAPSHOT</version>
+		<version>1.17.0-SNAPSHOT</version>
 		<relativePath>../../releng/org.eclipse.emf.ecp.releng.features/</relativePath>
 	</parent>
 	<groupId>org.eclipse.emf.ecp</groupId>
 	<artifactId>org.eclipse.emf.ecp.demo.e4.feature</artifactId>
-	<version>1.16.0-SNAPSHOT</version>
+	<version>1.17.0-SNAPSHOT</version>
 	<packaging>eclipse-feature</packaging>
 
 	<build>
diff --git a/features/org.eclipse.emf.ecp.diffmerge.feature/feature.xml b/features/org.eclipse.emf.ecp.diffmerge.feature/feature.xml
index 3ce361c..3920f53 100644
--- a/features/org.eclipse.emf.ecp.diffmerge.feature/feature.xml
+++ b/features/org.eclipse.emf.ecp.diffmerge.feature/feature.xml
@@ -2,12 +2,12 @@
 <feature
       id="org.eclipse.emf.ecp.diffmerge.feature"
       label="ECP DiffMerge Feature"
-      version="1.16.0.qualifier"
+      version="1.17.0.qualifier"
       provider-name="Eclipse Modeling Project"
       plugin="org.eclipse.emf.ecp.diffmerge.context"
       image="eclipse_update_120.jpg"
       license-feature="org.eclipse.emf.ecp.license.feature"
-      license-feature-version="1.16.0.qualifier">
+      license-feature-version="1.17.0.qualifier">
 
    <description>
       %description
diff --git a/features/org.eclipse.emf.ecp.diffmerge.feature/pom.xml b/features/org.eclipse.emf.ecp.diffmerge.feature/pom.xml
index 5a608ca..ece1472 100644
--- a/features/org.eclipse.emf.ecp.diffmerge.feature/pom.xml
+++ b/features/org.eclipse.emf.ecp.diffmerge.feature/pom.xml
@@ -5,11 +5,11 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-features-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.features/</relativePath>
   </parent>
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emf.ecp.diffmerge.feature</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-feature</packaging>
 </project>
diff --git a/features/org.eclipse.emf.ecp.e3.feature/feature.xml b/features/org.eclipse.emf.ecp.e3.feature/feature.xml
index f0989cf..3336f93 100644
--- a/features/org.eclipse.emf.ecp.e3.feature/feature.xml
+++ b/features/org.eclipse.emf.ecp.e3.feature/feature.xml
@@ -2,12 +2,12 @@
 <feature
       id="org.eclipse.emf.ecp.e3.feature"
       label="ECP 3.x UI Integration"
-      version="1.16.0.qualifier"
+      version="1.17.0.qualifier"
       provider-name="Eclipse Modeling Project"
       plugin="org.eclipse.emf.ecp.ui.e3"
       image="eclipse_update_120.jpg"
       license-feature="org.eclipse.emf.ecp.license.feature"
-      license-feature-version="1.16.0.qualifier">
+      license-feature-version="1.17.0.qualifier">
 
    <description>
       Integration of the EMF Client Platform UI into the Eclipse 3.x workbench, including views and perspectives.
diff --git a/features/org.eclipse.emf.ecp.e3.feature/pom.xml b/features/org.eclipse.emf.ecp.e3.feature/pom.xml
index 128813b..75f79d9 100644
--- a/features/org.eclipse.emf.ecp.e3.feature/pom.xml
+++ b/features/org.eclipse.emf.ecp.e3.feature/pom.xml
@@ -5,11 +5,11 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-features-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.features/</relativePath>
   </parent>
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emf.ecp.e3.feature</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-feature</packaging>
 </project>
diff --git a/features/org.eclipse.emf.ecp.e4.feature/feature.xml b/features/org.eclipse.emf.ecp.e4.feature/feature.xml
index e410074..c03bc83 100644
--- a/features/org.eclipse.emf.ecp.e4.feature/feature.xml
+++ b/features/org.eclipse.emf.ecp.e4.feature/feature.xml
@@ -2,12 +2,12 @@
 <feature
       id="org.eclipse.emf.ecp.e4.feature"
       label="ECP e4 UI Integration"
-      version="1.16.0.qualifier"
+      version="1.17.0.qualifier"
       provider-name="%providerName"
       plugin="org.eclipse.emf.ecp.ui.e4"
       image="eclipse_update_120.jpg"
       license-feature="org.eclipse.emf.ecp.license.feature"
-      license-feature-version="1.16.0.qualifier">
+      license-feature-version="1.17.0.qualifier">
 
    <description>
       %description
diff --git a/features/org.eclipse.emf.ecp.e4.feature/pom.xml b/features/org.eclipse.emf.ecp.e4.feature/pom.xml
index c8ae92a..d695edb 100644
--- a/features/org.eclipse.emf.ecp.e4.feature/pom.xml
+++ b/features/org.eclipse.emf.ecp.e4.feature/pom.xml
@@ -5,11 +5,11 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-features-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.features/</relativePath>
   </parent>
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emf.ecp.e4.feature</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-feature</packaging>
 </project>
diff --git a/features/org.eclipse.emf.ecp.ecore.editor.feature/feature.xml b/features/org.eclipse.emf.ecp.ecore.editor.feature/feature.xml
index ef15a3e..f4be43c 100644
--- a/features/org.eclipse.emf.ecp.ecore.editor.feature/feature.xml
+++ b/features/org.eclipse.emf.ecp.ecore.editor.feature/feature.xml
@@ -2,11 +2,11 @@
 <feature

       id="org.eclipse.emf.ecp.ecore.editor.feature"

       label="Ecore Editor Wizard Feature"

-      version="1.16.0.qualifier"

+      version="1.17.0.qualifier"

       provider-name="%providerName"

       plugin="org.eclipse.emf.ecp.ecore.editor.ui"

       license-feature="org.eclipse.emf.ecp.license.feature"

-      license-feature-version="1.16.0.qualifier">

+      license-feature-version="1.17.0.qualifier">

 

    <description>

       %description

diff --git a/features/org.eclipse.emf.ecp.ecore.editor.feature/pom.xml b/features/org.eclipse.emf.ecp.ecore.editor.feature/pom.xml
index 68b6596..337629c 100644
--- a/features/org.eclipse.emf.ecp.ecore.editor.feature/pom.xml
+++ b/features/org.eclipse.emf.ecp.ecore.editor.feature/pom.xml
@@ -5,11 +5,11 @@
   <parent>

     <groupId>org.eclipse.emf.ecp</groupId>

     <artifactId>ecp-features-parent</artifactId>

-    <version>1.16.0-SNAPSHOT</version>

+    <version>1.17.0-SNAPSHOT</version>

     <relativePath>../../releng/org.eclipse.emf.ecp.releng.features/</relativePath>

   </parent>

   <groupId>org.eclipse.emf.ecp</groupId>

   <artifactId>org.eclipse.emf.ecp.ecore.editor.feature</artifactId>

-  <version>1.16.0-SNAPSHOT</version>

+  <version>1.17.0-SNAPSHOT</version>

   <packaging>eclipse-feature</packaging>

 </project>

diff --git a/features/org.eclipse.emf.ecp.ecore.feature/feature.xml b/features/org.eclipse.emf.ecp.ecore.feature/feature.xml
index 5591cd6..42f6821 100644
--- a/features/org.eclipse.emf.ecp.ecore.feature/feature.xml
+++ b/features/org.eclipse.emf.ecp.ecore.feature/feature.xml
@@ -2,12 +2,12 @@
 <feature
       id="org.eclipse.emf.ecp.ecore.feature"
       label="EMF Forms Ecore Model Controls"
-      version="1.16.0.qualifier"
+      version="1.17.0.qualifier"
       provider-name="%providerName"
       plugin="org.eclipse.emf.ecp.edit.ecore.swt"
       image="eclipse_update_120.jpg"
       license-feature="org.eclipse.emf.ecp.license.feature"
-      license-feature-version="1.16.0.qualifier">
+      license-feature-version="1.17.0.qualifier">
 
    <description>
       %description
diff --git a/features/org.eclipse.emf.ecp.ecore.feature/pom.xml b/features/org.eclipse.emf.ecp.ecore.feature/pom.xml
index 348798d..6ab82fb 100644
--- a/features/org.eclipse.emf.ecp.ecore.feature/pom.xml
+++ b/features/org.eclipse.emf.ecp.ecore.feature/pom.xml
@@ -5,11 +5,11 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-features-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.features/</relativePath>
   </parent>
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emf.ecp.ecore.feature</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-feature</packaging>
 </project>
diff --git a/features/org.eclipse.emf.ecp.emf2web.feature/feature.xml b/features/org.eclipse.emf.ecp.emf2web.feature/feature.xml
index 314b983..c46f40d 100644
--- a/features/org.eclipse.emf.ecp.emf2web.feature/feature.xml
+++ b/features/org.eclipse.emf.ecp.emf2web.feature/feature.xml
@@ -2,10 +2,10 @@
 <feature
       id="org.eclipse.emf.ecp.emf2web.feature"
       label="JSON Forms Integration"
-      version="1.16.0.qualifier"
+      version="1.17.0.qualifier"
       provider-name="Eclipse Modeling Project"
       license-feature="org.eclipse.emf.ecp.license.feature"
-      license-feature-version="1.16.0.qualifier">
+      license-feature-version="1.17.0.qualifier">
 
    <description>
       %description
diff --git a/features/org.eclipse.emf.ecp.emf2web.feature/pom.xml b/features/org.eclipse.emf.ecp.emf2web.feature/pom.xml
index be0378d..e81f41a 100644
--- a/features/org.eclipse.emf.ecp.emf2web.feature/pom.xml
+++ b/features/org.eclipse.emf.ecp.emf2web.feature/pom.xml
@@ -6,12 +6,12 @@
 	<parent>
 		<groupId>org.eclipse.emf.ecp</groupId>
 		<artifactId>ecp-features-parent</artifactId>
-		<version>1.16.0-SNAPSHOT</version>
+		<version>1.17.0-SNAPSHOT</version>
 		<relativePath>../../releng/org.eclipse.emf.ecp.releng.features/</relativePath>
 	</parent>
 	<groupId>org.eclipse.emf.ecp</groupId>
 	<artifactId>org.eclipse.emf.ecp.emf2web.feature</artifactId>
-	<version>1.16.0-SNAPSHOT</version>
+	<version>1.17.0-SNAPSHOT</version>
 	<packaging>eclipse-feature</packaging>
 	
 	<build>
diff --git a/features/org.eclipse.emf.ecp.emfforms.idetooling.feature/feature.xml b/features/org.eclipse.emf.ecp.emfforms.idetooling.feature/feature.xml
index be3b88c..eba721d 100644
--- a/features/org.eclipse.emf.ecp.emfforms.idetooling.feature/feature.xml
+++ b/features/org.eclipse.emf.ecp.emfforms.idetooling.feature/feature.xml
@@ -2,10 +2,10 @@
 <feature
       id="org.eclipse.emf.ecp.emfforms.idetooling.feature"
       label="EMF Forms IDE Tooling"
-      version="1.16.0.qualifier"
+      version="1.17.0.qualifier"
       provider-name="Eclipse Modeling Project"
       license-feature="org.eclipse.emf.ecp.license.feature"
-      license-feature-version="1.16.0.qualifier">
+      license-feature-version="1.17.0.qualifier">
 
    <description>
       %description
diff --git a/features/org.eclipse.emf.ecp.emfforms.idetooling.feature/pom.xml b/features/org.eclipse.emf.ecp.emfforms.idetooling.feature/pom.xml
index b102b1b..f34bbb0 100644
--- a/features/org.eclipse.emf.ecp.emfforms.idetooling.feature/pom.xml
+++ b/features/org.eclipse.emf.ecp.emfforms.idetooling.feature/pom.xml
@@ -5,11 +5,11 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-features-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.features/</relativePath>
   </parent>
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emf.ecp.emfforms.idetooling.feature</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-feature</packaging>
 </project>
diff --git a/features/org.eclipse.emf.ecp.emfforms.runtime.feature/feature.xml b/features/org.eclipse.emf.ecp.emfforms.runtime.feature/feature.xml
index f193f1d..52a9ed4 100644
--- a/features/org.eclipse.emf.ecp.emfforms.runtime.feature/feature.xml
+++ b/features/org.eclipse.emf.ecp.emfforms.runtime.feature/feature.xml
@@ -2,10 +2,10 @@
 <feature
       id="org.eclipse.emf.ecp.emfforms.runtime.feature"
       label="EMF Forms Runtime"
-      version="1.16.0.qualifier"
+      version="1.17.0.qualifier"
       provider-name="%providerName"
       license-feature="org.eclipse.emf.ecp.license.feature"
-      license-feature-version="1.16.0.qualifier">
+      license-feature-version="1.17.0.qualifier">
 
    <description>
       %description
@@ -83,4 +83,8 @@
          id="org.eclipse.emfforms.core.bazaar.feature"
          version="0.0.0"/>
 
+   <includes
+         id="org.eclipse.emfforms.view.annotation.feature"
+         version="0.0.0"/>
+
 </feature>
diff --git a/features/org.eclipse.emf.ecp.emfforms.runtime.feature/pom.xml b/features/org.eclipse.emf.ecp.emfforms.runtime.feature/pom.xml
index dcea7a4..d8fab34 100644
--- a/features/org.eclipse.emf.ecp.emfforms.runtime.feature/pom.xml
+++ b/features/org.eclipse.emf.ecp.emfforms.runtime.feature/pom.xml
@@ -6,11 +6,11 @@
 	<parent>
 		<groupId>org.eclipse.emf.ecp</groupId>
 		<artifactId>ecp-features-parent</artifactId>
-		<version>1.16.0-SNAPSHOT</version>
+		<version>1.17.0-SNAPSHOT</version>
 		<relativePath>../../releng/org.eclipse.emf.ecp.releng.features/</relativePath>
 	</parent>
 	<groupId>org.eclipse.emf.ecp</groupId>
 	<artifactId>org.eclipse.emf.ecp.emfforms.runtime.feature</artifactId>
-	<version>1.16.0-SNAPSHOT</version>
+	<version>1.17.0-SNAPSHOT</version>
 	<packaging>eclipse-feature</packaging>
 </project>
diff --git a/features/org.eclipse.emf.ecp.emfforms.sdk.feature/feature.xml b/features/org.eclipse.emf.ecp.emfforms.sdk.feature/feature.xml
index 560247f..ccd898a 100644
--- a/features/org.eclipse.emf.ecp.emfforms.sdk.feature/feature.xml
+++ b/features/org.eclipse.emf.ecp.emfforms.sdk.feature/feature.xml
@@ -2,10 +2,10 @@
 <feature
       id="org.eclipse.emf.ecp.emfforms.sdk.feature"
       label="EMF Forms SDK"
-      version="1.16.0.qualifier"
+      version="1.17.0.qualifier"
       provider-name="%providerName"
       license-feature="org.eclipse.emf.ecp.license.feature"
-      license-feature-version="1.16.0.qualifier">
+      license-feature-version="1.17.0.qualifier">
 
    <description>
       %description
@@ -62,11 +62,11 @@
    <includes
          id="org.eclipse.emf.ecp.workspace.feature"
          version="0.0.0"/>
-   
+
    <includes
          id="org.eclipse.emf.ecp.emf2web.feature"
          version="0.0.0"/>
-         
+
    <includes
          id="org.eclipse.emf.ecp.emf2web.feature.source"
          version="0.0.0"/>
@@ -127,6 +127,10 @@
          id="org.eclipse.emf.ecp.view.viewproxy.feature.source"
          version="0.0.0"/>
 
+   <includes
+         id="org.eclipse.emfforms.swt.control.multiattribute.feature.source"
+         version="0.0.0"/>
+
    <plugin
          id="org.eclipse.emfforms.setup.base"
          download-size="0"
diff --git a/features/org.eclipse.emf.ecp.emfforms.sdk.feature/pom.xml b/features/org.eclipse.emf.ecp.emfforms.sdk.feature/pom.xml
index 764640b..7f0bab8 100644
--- a/features/org.eclipse.emf.ecp.emfforms.sdk.feature/pom.xml
+++ b/features/org.eclipse.emf.ecp.emfforms.sdk.feature/pom.xml
@@ -6,12 +6,12 @@
 	<parent>
 		<groupId>org.eclipse.emf.ecp</groupId>
 		<artifactId>ecp-features-parent</artifactId>
-		<version>1.16.0-SNAPSHOT</version>
+		<version>1.17.0-SNAPSHOT</version>
 		<relativePath>../../releng/org.eclipse.emf.ecp.releng.features/</relativePath>
 	</parent>
 	<groupId>org.eclipse.emf.ecp</groupId>
 	<artifactId>org.eclipse.emf.ecp.emfforms.sdk.feature</artifactId>
-	<version>1.16.0-SNAPSHOT</version>
+	<version>1.17.0-SNAPSHOT</version>
 	<packaging>eclipse-feature</packaging>
 	
 	<build>
diff --git a/features/org.eclipse.emf.ecp.emfstore.feature/feature.xml b/features/org.eclipse.emf.ecp.emfstore.feature/feature.xml
index 7460e54..0d4fd03 100644
--- a/features/org.eclipse.emf.ecp.emfstore.feature/feature.xml
+++ b/features/org.eclipse.emf.ecp.emfstore.feature/feature.xml
@@ -2,12 +2,12 @@
 <feature
       id="org.eclipse.emf.ecp.emfstore.feature"
       label="ECP EMFStore Integration"
-      version="1.16.0.qualifier"
+      version="1.17.0.qualifier"
       provider-name="%providerName"
       plugin="org.eclipse.emf.ecp.emfstore.core"
       image="eclipse_update_120.jpg"
       license-feature="org.eclipse.emf.ecp.license.feature"
-      license-feature-version="1.16.0.qualifier">
+      license-feature-version="1.17.0.qualifier">
 
    <description>
       %description
diff --git a/features/org.eclipse.emf.ecp.emfstore.feature/pom.xml b/features/org.eclipse.emf.ecp.emfstore.feature/pom.xml
index db7e93b..af6c094 100644
--- a/features/org.eclipse.emf.ecp.emfstore.feature/pom.xml
+++ b/features/org.eclipse.emf.ecp.emfstore.feature/pom.xml
@@ -5,11 +5,11 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-features-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.features/</relativePath>
   </parent>
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emf.ecp.emfstore.feature</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-feature</packaging>
 </project>
diff --git a/features/org.eclipse.emf.ecp.examplemodel.ui.feature/feature.xml b/features/org.eclipse.emf.ecp.examplemodel.ui.feature/feature.xml
index 83d699b..85ffcd8 100644
--- a/features/org.eclipse.emf.ecp.examplemodel.ui.feature/feature.xml
+++ b/features/org.eclipse.emf.ecp.examplemodel.ui.feature/feature.xml
@@ -2,12 +2,12 @@
 <feature
       id="org.eclipse.emf.ecp.examplemodel.ui.feature"
       label="Example Model UI Feature"
-      version="1.16.0.qualifier"
+      version="1.17.0.qualifier"
       provider-name="Eclipse Modeling Project"
       plugin="org.eclipse.emf.ecp.examplemodel.ui"
       image="eclipse_update_120.jpg"
       license-feature="org.eclipse.emf.ecp.license.feature"
-      license-feature-version="1.16.0.qualifier">
+      license-feature-version="1.17.0.qualifier">
 
    <description>
       %description
diff --git a/features/org.eclipse.emf.ecp.examplemodel.ui.feature/pom.xml b/features/org.eclipse.emf.ecp.examplemodel.ui.feature/pom.xml
index 8fdd29b..a02f909 100644
--- a/features/org.eclipse.emf.ecp.examplemodel.ui.feature/pom.xml
+++ b/features/org.eclipse.emf.ecp.examplemodel.ui.feature/pom.xml
@@ -5,12 +5,12 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-features-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.features/</relativePath>
   </parent>
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emf.ecp.examplemodel.ui.feature</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-feature</packaging>
   
   	<build>
diff --git a/features/org.eclipse.emf.ecp.feature/feature.xml b/features/org.eclipse.emf.ecp.feature/feature.xml
index 6575711..4429169 100644
--- a/features/org.eclipse.emf.ecp.feature/feature.xml
+++ b/features/org.eclipse.emf.ecp.feature/feature.xml
@@ -12,12 +12,12 @@
 <feature
       id="org.eclipse.emf.ecp.feature"
       label="ECP Core"
-      version="1.16.0.qualifier"
+      version="1.17.0.qualifier"
       provider-name="Eclipse Modeling Project"
       plugin="org.eclipse.emf.ecp.core"
       image="eclipse_update_120.jpg"
       license-feature="org.eclipse.emf.ecp.license.feature"
-      license-feature-version="1.16.0.qualifier">
+      license-feature-version="1.17.0.qualifier">
 
    <description>
       The core platform containing the model workspace, the navigator, the editor and the repository browser.
diff --git a/features/org.eclipse.emf.ecp.feature/pom.xml b/features/org.eclipse.emf.ecp.feature/pom.xml
index d2bd190..b455b4a 100644
--- a/features/org.eclipse.emf.ecp.feature/pom.xml
+++ b/features/org.eclipse.emf.ecp.feature/pom.xml
@@ -5,11 +5,11 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-features-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.features/</relativePath>
   </parent>
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emf.ecp.feature</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-feature</packaging>
 </project>
diff --git a/features/org.eclipse.emf.ecp.i18n.feature/.project b/features/org.eclipse.emf.ecp.i18n.feature/.project
new file mode 100644
index 0000000..618c7e3
--- /dev/null
+++ b/features/org.eclipse.emf.ecp.i18n.feature/.project
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.emf.ecp.i18n.feature</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.pde.FeatureBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.FeatureNature</nature>
+	</natures>
+</projectDescription>
diff --git a/features/org.eclipse.emf.ecp.i18n.feature/build.properties b/features/org.eclipse.emf.ecp.i18n.feature/build.properties
new file mode 100644
index 0000000..b3a611b
--- /dev/null
+++ b/features/org.eclipse.emf.ecp.i18n.feature/build.properties
@@ -0,0 +1,2 @@
+bin.includes = feature.xml,\
+               feature.properties
diff --git a/features/org.eclipse.emf.ecp.i18n.feature/feature.properties b/features/org.eclipse.emf.ecp.i18n.feature/feature.properties
new file mode 100644
index 0000000..10bf107
--- /dev/null
+++ b/features/org.eclipse.emf.ecp.i18n.feature/feature.properties
@@ -0,0 +1,7 @@
+# Copyright (c) 2011-2018 EclipseSource Munich GmbH 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
+
+description=ECP i18n. This feature contains translation fragments for ECP.
\ No newline at end of file
diff --git a/features/org.eclipse.emf.ecp.i18n.feature/feature.xml b/features/org.eclipse.emf.ecp.i18n.feature/feature.xml
new file mode 100644
index 0000000..e6b5588
--- /dev/null
+++ b/features/org.eclipse.emf.ecp.i18n.feature/feature.xml
@@ -0,0 +1,246 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<feature
+      id="org.eclipse.emf.ecp.i18n.feature"
+      label="ECP i18n Feature"
+      version="1.17.0.qualifier"
+      provider-name="Eclipse Modeling Project"
+      license-feature="org.eclipse.emf.ecp.license.feature"
+      license-feature-version="1.17.0.qualifier">
+
+   <description>
+      %description
+   </description>
+
+   <copyright url="%copyrightURL">
+      %copyright
+   </copyright>
+
+   <license url="%licenseURL">
+      %license
+   </license>
+
+   <plugin
+         id="org.eclipse.emf.ecp.core.nl_de"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         fragment="true"/>
+
+   <plugin
+         id="org.eclipse.emf.ecp.diffmerge.model.edit.nl_de"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         fragment="true"/>
+
+   <plugin
+         id="org.eclipse.emf.ecp.diffmerge.swt.nl_de"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         fragment="true"/>
+
+   <plugin
+         id="org.eclipse.emf.ecp.edit.nl_de"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         fragment="true"/>
+
+   <plugin
+         id="org.eclipse.emf.ecp.edit.swt.nl_de"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         fragment="true"/>
+
+   <plugin
+         id="org.eclipse.emf.ecp.ide.editor.view.nl_de"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         fragment="true"/>
+
+   <plugin
+         id="org.eclipse.emf.ecp.makeithappen.model.edit.nl_de"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         fragment="true"/>
+
+   <plugin
+         id="org.eclipse.emf.ecp.makeithappen.wizards.nl_de"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         fragment="true"/>
+
+   <plugin
+         id="org.eclipse.emf.ecp.test.model.edit.nl_de"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         fragment="true"/>
+
+   <plugin
+         id="org.eclipse.emf.ecp.ui.e3.nl_de"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         fragment="true"/>
+
+   <plugin
+         id="org.eclipse.emf.ecp.ui.nl_de"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         fragment="true"/>
+
+   <plugin
+         id="org.eclipse.emf.ecp.ui.validation.nl_de"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         fragment="true"/>
+
+   <plugin
+         id="org.eclipse.emf.ecp.ui.view.editor.controls.nl_de"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         fragment="true"/>
+
+   <plugin
+         id="org.eclipse.emf.ecp.validation.nl_de"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         fragment="true"/>
+
+   <plugin
+         id="org.eclipse.emf.ecp.view.categorization.model.edit.nl_de"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         fragment="true"/>
+
+   <plugin
+         id="org.eclipse.emf.ecp.view.core.swt.nl_de"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         fragment="true"/>
+
+   <plugin
+         id="org.eclipse.emf.ecp.view.custom.model.edit.nl_de"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         fragment="true"/>
+
+   <plugin
+         id="org.eclipse.emf.ecp.view.custom.model.nl_de"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         fragment="true"/>
+
+   <plugin
+         id="org.eclipse.emf.ecp.view.dynamictree.model.edit.nl_de"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         fragment="true"/>
+
+   <plugin
+         id="org.eclipse.emf.ecp.view.group.model.edit.nl_de"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         fragment="true"/>
+
+   <plugin
+         id="org.eclipse.emf.ecp.view.groupedgrid.model.edit.nl_de"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         fragment="true"/>
+
+   <plugin
+         id="org.eclipse.emf.ecp.view.horizontal.model.edit.nl_de"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         fragment="true"/>
+
+   <plugin
+         id="org.eclipse.emf.ecp.view.label.model.edit.nl_de"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         fragment="true"/>
+
+   <plugin
+         id="org.eclipse.emf.ecp.view.model.edit.nl_de"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         fragment="true"/>
+
+   <plugin
+         id="org.eclipse.emf.ecp.view.model.editor.nl_de"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         fragment="true"/>
+
+   <plugin
+         id="org.eclipse.emf.ecp.view.model.nl_de"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         fragment="true"/>
+
+   <plugin
+         id="org.eclipse.emf.ecp.view.rule.model.edit.nl_de"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         fragment="true"/>
+
+   <plugin
+         id="org.eclipse.emf.ecp.view.table.model.edit.nl_de"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         fragment="true"/>
+
+   <plugin
+         id="org.eclipse.emf.ecp.view.table.model.nl_de"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         fragment="true"/>
+
+   <plugin
+         id="org.eclipse.emf.ecp.view.template.model.edit.nl_de"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         fragment="true"/>
+
+   <plugin
+         id="org.eclipse.emf.ecp.view.treemasterdetail.model.edit.nl_de"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         fragment="true"/>
+
+   <plugin
+         id="org.eclipse.emf.ecp.view.vertical.model.edit.nl_de"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         fragment="true"/>
+
+</feature>
diff --git a/features/org.eclipse.emf.ecp.i18n.feature/pom.xml b/features/org.eclipse.emf.ecp.i18n.feature/pom.xml
new file mode 100644
index 0000000..235345d
--- /dev/null
+++ b/features/org.eclipse.emf.ecp.i18n.feature/pom.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.eclipse.emf.ecp</groupId>
+    <artifactId>ecp-features-parent</artifactId>
+    <version>1.17.0-SNAPSHOT</version>
+    <relativePath>../../releng/org.eclipse.emf.ecp.releng.features/</relativePath>
+  </parent>
+  <groupId>org.eclipse.emf.ecp</groupId>
+  <artifactId>org.eclipse.emf.ecp.i18n.feature</artifactId>
+  <version>1.17.0-SNAPSHOT</version>
+  <packaging>eclipse-feature</packaging>
+
+	<build>
+		<plugins>
+			<plugin>
+				<groupId>org.eclipse.tycho.extras</groupId>
+				<artifactId>tycho-source-feature-plugin</artifactId>
+				<version>${tycho-version}</version>
+				<executions>
+					<execution>
+						<id>generate-source-feature</id>
+						<goals>
+							<goal>source-feature</goal>
+						</goals>
+					</execution>
+				</executions>
+				<configuration>
+					<skip>true</skip>
+				</configuration>
+			</plugin>
+		</plugins>
+	</build>
+</project>
diff --git a/features/org.eclipse.emf.ecp.ide.migration.feature/feature.xml b/features/org.eclipse.emf.ecp.ide.migration.feature/feature.xml
index aa2da44..d99ab1b 100644
--- a/features/org.eclipse.emf.ecp.ide.migration.feature/feature.xml
+++ b/features/org.eclipse.emf.ecp.ide.migration.feature/feature.xml
@@ -2,10 +2,10 @@
 <feature
       id="org.eclipse.emf.ecp.ide.migration.feature"
       label="Namespace View Model Migration Feature"
-      version="1.16.0.qualifier"
+      version="1.17.0.qualifier"
       provider-name="Eclipse Modeling Project"
       license-feature="org.eclipse.emf.ecp.license.feature"
-      license-feature-version="1.16.0.qualifier">
+      license-feature-version="1.17.0.qualifier">
 
    <description>
       %description
diff --git a/features/org.eclipse.emf.ecp.ide.migration.feature/pom.xml b/features/org.eclipse.emf.ecp.ide.migration.feature/pom.xml
index e58acad..5ed64de 100644
--- a/features/org.eclipse.emf.ecp.ide.migration.feature/pom.xml
+++ b/features/org.eclipse.emf.ecp.ide.migration.feature/pom.xml
@@ -5,11 +5,11 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-features-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.features/</relativePath>
   </parent>
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emf.ecp.ide.migration.feature</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-feature</packaging>
 </project>
diff --git a/features/org.eclipse.emf.ecp.license.feature/feature.xml b/features/org.eclipse.emf.ecp.license.feature/feature.xml
index 67cb5ad..8cceb88 100644
--- a/features/org.eclipse.emf.ecp.license.feature/feature.xml
+++ b/features/org.eclipse.emf.ecp.license.feature/feature.xml
@@ -2,7 +2,7 @@
 <feature

       id="org.eclipse.emf.ecp.license.feature"

       label="EMF Client Platform License"

-      version="1.16.0.qualifier"

+      version="1.17.0.qualifier"

       provider-name="Eclipse Modeling Project"

       image="eclipse_update_120.jpg">

 

diff --git a/features/org.eclipse.emf.ecp.license.feature/pom.xml b/features/org.eclipse.emf.ecp.license.feature/pom.xml
index 57e2298..8222c0a 100644
--- a/features/org.eclipse.emf.ecp.license.feature/pom.xml
+++ b/features/org.eclipse.emf.ecp.license.feature/pom.xml
@@ -5,11 +5,11 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-features-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.features/</relativePath>
   </parent>
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emf.ecp.license.feature</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-feature</packaging>
 </project>
diff --git a/features/org.eclipse.emf.ecp.rap.feature/feature.xml b/features/org.eclipse.emf.ecp.rap.feature/feature.xml
index 4b7d8cf..1fe8f75 100644
--- a/features/org.eclipse.emf.ecp.rap.feature/feature.xml
+++ b/features/org.eclipse.emf.ecp.rap.feature/feature.xml
@@ -2,12 +2,12 @@
 <feature
       id="org.eclipse.emf.ecp.rap.feature"
       label="ECP RAP Demo Application (Experimental)"
-      version="1.16.0.qualifier"
+      version="1.17.0.qualifier"
       provider-name="%providerName"
       plugin="org.eclipse.emf.ecp.rap"
       image="eclipse_update_120.jpg"
       license-feature="org.eclipse.emf.ecp.license.feature"
-      license-feature-version="1.16.0.qualifier">
+      license-feature-version="1.17.0.qualifier">
 
    <description>
       %description
diff --git a/features/org.eclipse.emf.ecp.rap.feature/pom.xml b/features/org.eclipse.emf.ecp.rap.feature/pom.xml
index 70be723..9e6ab98 100644
--- a/features/org.eclipse.emf.ecp.rap.feature/pom.xml
+++ b/features/org.eclipse.emf.ecp.rap.feature/pom.xml
@@ -5,11 +5,11 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-features-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.features/</relativePath>
   </parent>
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emf.ecp.rap.feature</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-feature</packaging>
 </project>
diff --git a/features/org.eclipse.emf.ecp.rap.sdk.feature/feature.xml b/features/org.eclipse.emf.ecp.rap.sdk.feature/feature.xml
index 8ed6a21..5ebcabc 100644
--- a/features/org.eclipse.emf.ecp.rap.sdk.feature/feature.xml
+++ b/features/org.eclipse.emf.ecp.rap.sdk.feature/feature.xml
@@ -2,10 +2,10 @@
 <feature
       id="org.eclipse.emf.ecp.rap.sdk.feature"
       label="ECP RAP SDK (Experimental)"
-      version="1.16.0.qualifier"
+      version="1.17.0.qualifier"
       provider-name="%providerName"
       license-feature="org.eclipse.emf.ecp.license.feature"
-      license-feature-version="1.16.0.qualifier">
+      license-feature-version="1.17.0.qualifier">
 
    <description>
       %description
diff --git a/features/org.eclipse.emf.ecp.rap.sdk.feature/pom.xml b/features/org.eclipse.emf.ecp.rap.sdk.feature/pom.xml
index 67dae9c..d48df38 100644
--- a/features/org.eclipse.emf.ecp.rap.sdk.feature/pom.xml
+++ b/features/org.eclipse.emf.ecp.rap.sdk.feature/pom.xml
@@ -6,12 +6,12 @@
 	<parent>
 		<groupId>org.eclipse.emf.ecp</groupId>
 		<artifactId>ecp-features-parent</artifactId>
-		<version>1.16.0-SNAPSHOT</version>
+		<version>1.17.0-SNAPSHOT</version>
 		<relativePath>../../releng/org.eclipse.emf.ecp.releng.features/</relativePath>
 	</parent>
 	<groupId>org.eclipse.emf.ecp</groupId>
 	<artifactId>org.eclipse.emf.ecp.rap.sdk.feature</artifactId>
-	<version>1.16.0-SNAPSHOT</version>
+	<version>1.17.0-SNAPSHOT</version>
 	<packaging>eclipse-feature</packaging>
 	
 	<build>
diff --git a/features/org.eclipse.emf.ecp.rap.util.feature/feature.xml b/features/org.eclipse.emf.ecp.rap.util.feature/feature.xml
index 46c45d5..32acb59 100644
--- a/features/org.eclipse.emf.ecp.rap.util.feature/feature.xml
+++ b/features/org.eclipse.emf.ecp.rap.util.feature/feature.xml
@@ -2,12 +2,12 @@
 <feature
       id="org.eclipse.emf.ecp.rap.util.feature"
       label="ECP RAP UI Integration"
-      version="1.16.0.qualifier"
+      version="1.17.0.qualifier"
       provider-name="%providerName"
       plugin="org.eclipse.emf.ecp.rap.util"
       image="eclipse_update_120.jpg"
       license-feature="org.eclipse.emf.ecp.license.feature"
-      license-feature-version="1.16.0.qualifier">
+      license-feature-version="1.17.0.qualifier">
 
    <description>
       %description
diff --git a/features/org.eclipse.emf.ecp.rap.util.feature/pom.xml b/features/org.eclipse.emf.ecp.rap.util.feature/pom.xml
index f8ccc72..5f94fe8 100644
--- a/features/org.eclipse.emf.ecp.rap.util.feature/pom.xml
+++ b/features/org.eclipse.emf.ecp.rap.util.feature/pom.xml
@@ -5,11 +5,11 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-features-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.features/</relativePath>
   </parent>
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emf.ecp.rap.util.feature</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-feature</packaging>
 </project>
diff --git a/features/org.eclipse.emf.ecp.sdk.e4.feature/feature.xml b/features/org.eclipse.emf.ecp.sdk.e4.feature/feature.xml
index e6df6ef..75da66a 100644
--- a/features/org.eclipse.emf.ecp.sdk.e4.feature/feature.xml
+++ b/features/org.eclipse.emf.ecp.sdk.e4.feature/feature.xml
@@ -2,10 +2,10 @@
 <feature
       id="org.eclipse.emf.ecp.sdk.e4.feature"
       label="ECP SDK e4 (Target Feature)"
-      version="1.16.0.qualifier"
+      version="1.17.0.qualifier"
       provider-name="Eclipse Modeling Project"
       license-feature="org.eclipse.emf.ecp.license.feature"
-      license-feature-version="1.16.0.qualifier">
+      license-feature-version="1.17.0.qualifier">
 
    <description>
       %description
@@ -19,38 +19,7 @@
       %license
    </license>
 
-   <includes
-         id="org.eclipse.emf.ecp.cdo.feature.source"
-         version="0.0.0"/>
-
-   <includes
-         id="org.eclipse.emf.ecp.emfstore.feature.source"
-         version="0.0.0"/>
-
-   <includes
-         id="org.eclipse.emf.ecp.workspace.feature.source"
-         version="0.0.0"/>
-
-   <includes
-         id="org.eclipse.emf.ecp.emfforms.runtime.feature.source"
-         version="0.0.0"/>
-
-   <includes
-         id="org.eclipse.emf.ecp.feature.source"
-         version="0.0.0"/>
-
-   <includes
-         id="org.eclipse.emf.ecp.demo.e4.feature.source"
-         version="0.0.0"/>
-
-   <includes
-         id="org.eclipse.emf.ecp.e4.feature.source"
-         version="0.0.0"/>
-
-   <includes
-         id="org.eclipse.emf.ecp.view.model.editor.feature.source"
-         version="0.0.0"/>
-
+   
    <includes
          id="org.eclipse.emf.ecp.cdo.feature"
          version="0.0.0"/>
@@ -91,8 +60,5 @@
          id="org.eclipse.emf.ecp.view.model.controls.feature"
          version="0.0.0"/>
 
-   <includes
-         id="org.eclipse.emf.ecp.view.model.controls.feature.source"
-         version="0.0.0"/>
 
 </feature>
diff --git a/features/org.eclipse.emf.ecp.sdk.e4.feature/pom.xml b/features/org.eclipse.emf.ecp.sdk.e4.feature/pom.xml
index b9e2753..dc5dabf 100644
--- a/features/org.eclipse.emf.ecp.sdk.e4.feature/pom.xml
+++ b/features/org.eclipse.emf.ecp.sdk.e4.feature/pom.xml
@@ -6,12 +6,12 @@
 	<parent>
 		<groupId>org.eclipse.emf.ecp</groupId>
 		<artifactId>ecp-features-parent</artifactId>
-		<version>1.16.0-SNAPSHOT</version>
+		<version>1.17.0-SNAPSHOT</version>
 		<relativePath>../../releng/org.eclipse.emf.ecp.releng.features/</relativePath>
 	</parent>
 	<groupId>org.eclipse.emf.ecp</groupId>
 	<artifactId>org.eclipse.emf.ecp.sdk.e4.feature</artifactId>
-	<version>1.16.0-SNAPSHOT</version>
+	<version>1.17.0-SNAPSHOT</version>
 	<packaging>eclipse-feature</packaging>
 	
 	<build>
diff --git a/features/org.eclipse.emf.ecp.sdk.feature/feature.xml b/features/org.eclipse.emf.ecp.sdk.feature/feature.xml
index f13050a..2b78486 100644
--- a/features/org.eclipse.emf.ecp.sdk.feature/feature.xml
+++ b/features/org.eclipse.emf.ecp.sdk.feature/feature.xml
@@ -2,10 +2,10 @@
 <feature
       id="org.eclipse.emf.ecp.sdk.feature"
       label="ECP SDK 3.x"
-      version="1.16.0.qualifier"
+      version="1.17.0.qualifier"
       provider-name="Eclipse Modeling Project"
       license-feature="org.eclipse.emf.ecp.license.feature"
-      license-feature-version="1.16.0.qualifier">
+      license-feature-version="1.17.0.qualifier">
 
    <description>
       %description
diff --git a/features/org.eclipse.emf.ecp.sdk.feature/pom.xml b/features/org.eclipse.emf.ecp.sdk.feature/pom.xml
index a40e45a..0a0b833 100644
--- a/features/org.eclipse.emf.ecp.sdk.feature/pom.xml
+++ b/features/org.eclipse.emf.ecp.sdk.feature/pom.xml
@@ -6,12 +6,12 @@
 	<parent>
 		<groupId>org.eclipse.emf.ecp</groupId>
 		<artifactId>ecp-features-parent</artifactId>
-		<version>1.16.0-SNAPSHOT</version>
+		<version>1.17.0-SNAPSHOT</version>
 		<relativePath>../../releng/org.eclipse.emf.ecp.releng.features/</relativePath>
 	</parent>
 	<groupId>org.eclipse.emf.ecp</groupId>
 	<artifactId>org.eclipse.emf.ecp.sdk.feature</artifactId>
-	<version>1.16.0-SNAPSHOT</version>
+	<version>1.17.0-SNAPSHOT</version>
 	<packaging>eclipse-feature</packaging>
 	
 	<build>
diff --git a/features/org.eclipse.emf.ecp.target.feature/feature.xml b/features/org.eclipse.emf.ecp.target.feature/feature.xml
index 0060d7c..bb77b97 100644
--- a/features/org.eclipse.emf.ecp.target.feature/feature.xml
+++ b/features/org.eclipse.emf.ecp.target.feature/feature.xml
@@ -2,10 +2,10 @@
 <feature
       id="org.eclipse.emf.ecp.target.feature"
       label="ECP Target Feature"
-      version="1.16.0.qualifier"
+      version="1.17.0.qualifier"
       provider-name="Eclipse Modeling Project"
       license-feature="org.eclipse.emf.ecp.license.feature"
-      license-feature-version="1.16.0.qualifier">
+      license-feature-version="1.17.0.qualifier">
 
    <description>
       The target platform feature for the EMF Client Platform, for developer use only.
diff --git a/features/org.eclipse.emf.ecp.target.feature/pom.xml b/features/org.eclipse.emf.ecp.target.feature/pom.xml
index eb83e12..7a6e2ea 100644
--- a/features/org.eclipse.emf.ecp.target.feature/pom.xml
+++ b/features/org.eclipse.emf.ecp.target.feature/pom.xml
@@ -5,12 +5,12 @@
 	<parent>
 		<groupId>org.eclipse.emf.ecp</groupId>
 		<artifactId>ecp-features-parent</artifactId>
-		<version>1.16.0-SNAPSHOT</version>
+		<version>1.17.0-SNAPSHOT</version>
 		<relativePath>../../releng/org.eclipse.emf.ecp.releng.features/</relativePath>
 	</parent>
 	<groupId>org.eclipse.emf.ecp</groupId>
 	<artifactId>org.eclipse.emf.ecp.target.feature</artifactId>
-	<version>1.16.0-SNAPSHOT</version>
+	<version>1.17.0-SNAPSHOT</version>
 	<packaging>eclipse-feature</packaging>
 
 	<build>
diff --git a/features/org.eclipse.emf.ecp.transaction.feature/feature.xml b/features/org.eclipse.emf.ecp.transaction.feature/feature.xml
index 9ce09ce..6aee7aa 100644
--- a/features/org.eclipse.emf.ecp.transaction.feature/feature.xml
+++ b/features/org.eclipse.emf.ecp.transaction.feature/feature.xml
@@ -2,12 +2,12 @@
 <feature
       id="org.eclipse.emf.ecp.transaction.feature"
       label="ECP Transactional Feature"
-      version="1.16.0.qualifier"
+      version="1.17.0.qualifier"
       provider-name="%providerName"
       plugin="org.eclipse.emf.ecp.ui.transaction"
       image="eclipse_update_120.jpg"
       license-feature="org.eclipse.emf.ecp.license.feature"
-      license-feature-version="1.16.0.qualifier">
+      license-feature-version="1.17.0.qualifier">
 
    <description>
       %description
diff --git a/features/org.eclipse.emf.ecp.transaction.feature/pom.xml b/features/org.eclipse.emf.ecp.transaction.feature/pom.xml
index 4e75e3b..12ff403 100644
--- a/features/org.eclipse.emf.ecp.transaction.feature/pom.xml
+++ b/features/org.eclipse.emf.ecp.transaction.feature/pom.xml
@@ -5,11 +5,11 @@
   <parent>

     <groupId>org.eclipse.emf.ecp</groupId>

     <artifactId>ecp-features-parent</artifactId>

-    <version>1.16.0-SNAPSHOT</version>

+    <version>1.17.0-SNAPSHOT</version>

     <relativePath>../../releng/org.eclipse.emf.ecp.releng.features/</relativePath>

   </parent>

   <groupId>org.eclipse.emf.ecp</groupId>

   <artifactId>org.eclipse.emf.ecp.transaction.feature</artifactId>

-  <version>1.16.0-SNAPSHOT</version>

+  <version>1.17.0-SNAPSHOT</version>

   <packaging>eclipse-feature</packaging>

 </project>

diff --git a/features/org.eclipse.emf.ecp.validation.view.feature/feature.xml b/features/org.eclipse.emf.ecp.validation.view.feature/feature.xml
index 2759430..8ec332c 100644
--- a/features/org.eclipse.emf.ecp.validation.view.feature/feature.xml
+++ b/features/org.eclipse.emf.ecp.validation.view.feature/feature.xml
@@ -2,12 +2,12 @@
 <feature
       id="org.eclipse.emf.ecp.validation.view.feature"
       label="ECP Validation View (Highly Experimental)"
-      version="1.16.0.qualifier"
+      version="1.17.0.qualifier"
       provider-name="Eclipse Modeling Project"
       plugin="org.eclipse.emf.ecp.ui.validation"
       image="eclipse_update_120.jpg"
       license-feature="org.eclipse.emf.ecp.license.feature"
-      license-feature-version="1.16.0.qualifier">
+      license-feature-version="1.17.0.qualifier">
 
    <description>
       %description
diff --git a/features/org.eclipse.emf.ecp.validation.view.feature/pom.xml b/features/org.eclipse.emf.ecp.validation.view.feature/pom.xml
index 4d6d313..2747d59 100644
--- a/features/org.eclipse.emf.ecp.validation.view.feature/pom.xml
+++ b/features/org.eclipse.emf.ecp.validation.view.feature/pom.xml
@@ -5,11 +5,11 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-features-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.features/</relativePath>
   </parent>
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emf.ecp.validation.view.feature</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-feature</packaging>
 </project>
diff --git a/features/org.eclipse.emf.ecp.view.categorization.feature/feature.xml b/features/org.eclipse.emf.ecp.view.categorization.feature/feature.xml
index ff0ac69..12f816f 100644
--- a/features/org.eclipse.emf.ecp.view.categorization.feature/feature.xml
+++ b/features/org.eclipse.emf.ecp.view.categorization.feature/feature.xml
@@ -2,12 +2,12 @@
 <feature
       id="org.eclipse.emf.ecp.view.categorization.feature"
       label="EMF Forms Categorization Model"
-      version="1.16.0.qualifier"
+      version="1.17.0.qualifier"
       provider-name="%providerName"
       plugin="org.eclipse.emf.ecp.view.categorization.model"
       image="eclipse_update_120.jpg"
       license-feature="org.eclipse.emf.ecp.license.feature"
-      license-feature-version="1.16.0.qualifier">
+      license-feature-version="1.17.0.qualifier">
 
    <description>
       %description
diff --git a/features/org.eclipse.emf.ecp.view.categorization.feature/pom.xml b/features/org.eclipse.emf.ecp.view.categorization.feature/pom.xml
index a3c3a14..606af42 100644
--- a/features/org.eclipse.emf.ecp.view.categorization.feature/pom.xml
+++ b/features/org.eclipse.emf.ecp.view.categorization.feature/pom.xml
@@ -5,11 +5,11 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-features-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.features/</relativePath>
   </parent>
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emf.ecp.view.categorization.feature</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-feature</packaging>
 </project>
diff --git a/features/org.eclipse.emf.ecp.view.compoundcontrol.feature/feature.xml b/features/org.eclipse.emf.ecp.view.compoundcontrol.feature/feature.xml
index 7c80c2e..7141b16 100644
--- a/features/org.eclipse.emf.ecp.view.compoundcontrol.feature/feature.xml
+++ b/features/org.eclipse.emf.ecp.view.compoundcontrol.feature/feature.xml
@@ -2,11 +2,11 @@
 <feature
       id="org.eclipse.emf.ecp.view.compoundcontrol.feature"
       label="EMF Forms Compound Control Feature"
-      version="1.16.0.qualifier"
+      version="1.17.0.qualifier"
       provider-name="Eclipse Modeling Project"
       plugin="org.eclipse.emf.ecp.view.compoundcontrol.model"
       license-feature="org.eclipse.emf.ecp.license.feature"
-      license-feature-version="1.16.0.qualifier">
+      license-feature-version="1.17.0.qualifier">
 
    <description>
       %description
diff --git a/features/org.eclipse.emf.ecp.view.compoundcontrol.feature/pom.xml b/features/org.eclipse.emf.ecp.view.compoundcontrol.feature/pom.xml
index b6a19fa..e9d6961 100644
--- a/features/org.eclipse.emf.ecp.view.compoundcontrol.feature/pom.xml
+++ b/features/org.eclipse.emf.ecp.view.compoundcontrol.feature/pom.xml
@@ -7,7 +7,7 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-features-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.features/</relativePath>
   </parent>
 
diff --git a/features/org.eclipse.emf.ecp.view.custom.feature/feature.xml b/features/org.eclipse.emf.ecp.view.custom.feature/feature.xml
index 93049b8..366573f 100644
--- a/features/org.eclipse.emf.ecp.view.custom.feature/feature.xml
+++ b/features/org.eclipse.emf.ecp.view.custom.feature/feature.xml
@@ -2,12 +2,12 @@
 <feature
       id="org.eclipse.emf.ecp.view.custom.feature"
       label="EMF Forms Custom Control Model"
-      version="1.16.0.qualifier"
+      version="1.17.0.qualifier"
       provider-name="%providerName"
       plugin="org.eclipse.emf.ecp.view.custom.model"
       image="eclipse_update_120.jpg"
       license-feature="org.eclipse.emf.ecp.license.feature"
-      license-feature-version="1.16.0.qualifier">
+      license-feature-version="1.17.0.qualifier">
 
    <description>
       %description
diff --git a/features/org.eclipse.emf.ecp.view.custom.feature/pom.xml b/features/org.eclipse.emf.ecp.view.custom.feature/pom.xml
index ba29f5d..282701f 100644
--- a/features/org.eclipse.emf.ecp.view.custom.feature/pom.xml
+++ b/features/org.eclipse.emf.ecp.view.custom.feature/pom.xml
@@ -5,11 +5,11 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-features-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.features/</relativePath>
   </parent>
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emf.ecp.view.custom.feature</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-feature</packaging>
 </project>
diff --git a/features/org.eclipse.emf.ecp.view.di.feature/feature.xml b/features/org.eclipse.emf.ecp.view.di.feature/feature.xml
index 55a1226..d201582 100644
--- a/features/org.eclipse.emf.ecp.view.di.feature/feature.xml
+++ b/features/org.eclipse.emf.ecp.view.di.feature/feature.xml
@@ -2,11 +2,11 @@
 <feature
       id="org.eclipse.emf.ecp.view.di.feature"
       label="EMF Forms Dependency Injection Feature (Experimental)"
-      version="1.16.0.qualifier"
+      version="1.17.0.qualifier"
       provider-name="Eclipse Modeling Project"
       plugin="org.eclipse.emf.ecp.view.model.common.di"
       license-feature="org.eclipse.emf.ecp.license.feature"
-      license-feature-version="1.16.0.qualifier">
+      license-feature-version="1.17.0.qualifier">
 
    <description>
       %description
diff --git a/features/org.eclipse.emf.ecp.view.di.feature/pom.xml b/features/org.eclipse.emf.ecp.view.di.feature/pom.xml
index a1780cd..4da3742 100644
--- a/features/org.eclipse.emf.ecp.view.di.feature/pom.xml
+++ b/features/org.eclipse.emf.ecp.view.di.feature/pom.xml
@@ -6,7 +6,7 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-features-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.features/</relativePath>
   </parent>
 
diff --git a/features/org.eclipse.emf.ecp.view.edapt.feature/feature.xml b/features/org.eclipse.emf.ecp.view.edapt.feature/feature.xml
index 1158043..84c1958 100644
--- a/features/org.eclipse.emf.ecp.view.edapt.feature/feature.xml
+++ b/features/org.eclipse.emf.ecp.view.edapt.feature/feature.xml
@@ -2,11 +2,11 @@
 <feature
       id="org.eclipse.emf.ecp.view.edapt.feature"
       label="EMF Forms IDE Tooling Edapt View Model Migration Feature"
-      version="1.16.0.qualifier"
+      version="1.17.0.qualifier"
       provider-name="Eclipse Modeling Project"
       plugin="org.eclipse.emf.ecp.view.edapt"
       license-feature="org.eclipse.emf.ecp.license.feature"
-      license-feature-version="1.16.0.qualifier">
+      license-feature-version="1.17.0.qualifier">
 
    <description>
       %description
diff --git a/features/org.eclipse.emf.ecp.view.edapt.feature/pom.xml b/features/org.eclipse.emf.ecp.view.edapt.feature/pom.xml
index 7c50689..367df289 100644
--- a/features/org.eclipse.emf.ecp.view.edapt.feature/pom.xml
+++ b/features/org.eclipse.emf.ecp.view.edapt.feature/pom.xml
@@ -5,12 +5,12 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-features-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.features/</relativePath>
   </parent>
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emf.ecp.view.edapt.feature</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-feature</packaging>
   
   	<build>
diff --git a/features/org.eclipse.emf.ecp.view.group.feature/feature.xml b/features/org.eclipse.emf.ecp.view.group.feature/feature.xml
index 68146e4..d79cc7d 100644
--- a/features/org.eclipse.emf.ecp.view.group.feature/feature.xml
+++ b/features/org.eclipse.emf.ecp.view.group.feature/feature.xml
@@ -2,12 +2,12 @@
 <feature
       id="org.eclipse.emf.ecp.view.group.feature"
       label="EMF Forms Group Model"
-      version="1.16.0.qualifier"
+      version="1.17.0.qualifier"
       provider-name="%providerName"
       plugin="org.eclipse.emf.ecp.view.group.model"
       image="eclipse_update_120.jpg"
       license-feature="org.eclipse.emf.ecp.license.feature"
-      license-feature-version="1.16.0.qualifier">
+      license-feature-version="1.17.0.qualifier">
 
    <description>
       %description
diff --git a/features/org.eclipse.emf.ecp.view.group.feature/pom.xml b/features/org.eclipse.emf.ecp.view.group.feature/pom.xml
index faf72cb..d111824 100644
--- a/features/org.eclipse.emf.ecp.view.group.feature/pom.xml
+++ b/features/org.eclipse.emf.ecp.view.group.feature/pom.xml
@@ -5,11 +5,11 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-features-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.features/</relativePath>
   </parent>
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emf.ecp.view.group.feature</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-feature</packaging>
 </project>
diff --git a/features/org.eclipse.emf.ecp.view.group.swt.collapsible.pgroup.feature/feature.xml b/features/org.eclipse.emf.ecp.view.group.swt.collapsible.pgroup.feature/feature.xml
index c0555ba..c9dc27e 100644
--- a/features/org.eclipse.emf.ecp.view.group.swt.collapsible.pgroup.feature/feature.xml
+++ b/features/org.eclipse.emf.ecp.view.group.swt.collapsible.pgroup.feature/feature.xml
@@ -2,11 +2,11 @@
 <feature
       id="org.eclipse.emf.ecp.view.group.swt.collapsible.pgroup.feature"
       label="EMF Forms Collapsible Group Renderer using Nebula PGroup"
-      version="1.16.0.qualifier"
+      version="1.17.0.qualifier"
       provider-name="Eclipse Modeling Project"
       plugin="org.eclipse.emf.ecp.view.group.swt.collapsible.pgroup"
       license-feature="org.eclipse.emf.ecp.license.feature"
-      license-feature-version="1.16.0.qualifier">
+      license-feature-version="1.17.0.qualifier">
 
    <description>
       %description
diff --git a/features/org.eclipse.emf.ecp.view.group.swt.collapsible.pgroup.feature/pom.xml b/features/org.eclipse.emf.ecp.view.group.swt.collapsible.pgroup.feature/pom.xml
index a5df63c..a8a7d39 100644
--- a/features/org.eclipse.emf.ecp.view.group.swt.collapsible.pgroup.feature/pom.xml
+++ b/features/org.eclipse.emf.ecp.view.group.swt.collapsible.pgroup.feature/pom.xml
@@ -5,11 +5,11 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-features-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.features/</relativePath>
   </parent>
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emf.ecp.view.group.swt.collapsible.pgroup.feature</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-feature</packaging>
 </project>
diff --git a/features/org.eclipse.emf.ecp.view.groupedgrid.feature/feature.xml b/features/org.eclipse.emf.ecp.view.groupedgrid.feature/feature.xml
index c6121de..eac4e54 100644
--- a/features/org.eclipse.emf.ecp.view.groupedgrid.feature/feature.xml
+++ b/features/org.eclipse.emf.ecp.view.groupedgrid.feature/feature.xml
@@ -2,11 +2,11 @@
 <feature
       id="org.eclipse.emf.ecp.view.groupedgrid.feature"
       label="EMF Forms Grouped Grid Model"
-      version="1.16.0.qualifier"
+      version="1.17.0.qualifier"
       provider-name="Eclipse Modeling Project"
       plugin="org.eclipse.emf.ecp.view.groupedgrid.model"
       license-feature="org.eclipse.emf.ecp.license.feature"
-      license-feature-version="1.16.0.qualifier">
+      license-feature-version="1.17.0.qualifier">
 
    <description>
       %description
diff --git a/features/org.eclipse.emf.ecp.view.groupedgrid.feature/pom.xml b/features/org.eclipse.emf.ecp.view.groupedgrid.feature/pom.xml
index e947582..330e267 100644
--- a/features/org.eclipse.emf.ecp.view.groupedgrid.feature/pom.xml
+++ b/features/org.eclipse.emf.ecp.view.groupedgrid.feature/pom.xml
@@ -5,11 +5,11 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-features-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.features/</relativePath>
   </parent>
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emf.ecp.view.groupedgrid.feature</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-feature</packaging>
 </project>
diff --git a/features/org.eclipse.emf.ecp.view.horizontal.feature/feature.xml b/features/org.eclipse.emf.ecp.view.horizontal.feature/feature.xml
index bdcb902..9855337 100644
--- a/features/org.eclipse.emf.ecp.view.horizontal.feature/feature.xml
+++ b/features/org.eclipse.emf.ecp.view.horizontal.feature/feature.xml
@@ -2,12 +2,12 @@
 <feature
       id="org.eclipse.emf.ecp.view.horizontal.feature"
       label="EMF Forms Horizontal Model"
-      version="1.16.0.qualifier"
+      version="1.17.0.qualifier"
       provider-name="Eclipse Modeling Project"
       plugin="org.eclipse.emf.ecp.view.horizontal.model"
       image="eclipse_update_120.jpg"
       license-feature="org.eclipse.emf.ecp.license.feature"
-      license-feature-version="1.16.0.qualifier">
+      license-feature-version="1.17.0.qualifier">
 
    <description>
       %description
diff --git a/features/org.eclipse.emf.ecp.view.horizontal.feature/pom.xml b/features/org.eclipse.emf.ecp.view.horizontal.feature/pom.xml
index 20919c9..5bd50d2 100644
--- a/features/org.eclipse.emf.ecp.view.horizontal.feature/pom.xml
+++ b/features/org.eclipse.emf.ecp.view.horizontal.feature/pom.xml
@@ -5,11 +5,11 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-features-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.features/</relativePath>
   </parent>
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emf.ecp.view.horizontal.feature</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-feature</packaging>
 </project>
diff --git a/features/org.eclipse.emf.ecp.view.indexdmr.feature/feature.xml b/features/org.eclipse.emf.ecp.view.indexdmr.feature/feature.xml
index 5cafe23..21d27cb 100644
--- a/features/org.eclipse.emf.ecp.view.indexdmr.feature/feature.xml
+++ b/features/org.eclipse.emf.ecp.view.indexdmr.feature/feature.xml
@@ -2,12 +2,12 @@
 <feature
       id="org.eclipse.emf.ecp.view.indexdmr.feature"
       label="EMF Forms Index DMR Feature"
-      version="1.16.0.qualifier"
+      version="1.17.0.qualifier"
       provider-name="%providerName"
       plugin="org.eclipse.emf.ecp.view.indexdmr.model"
       image="eclipse_update_120.jpg"
       license-feature="org.eclipse.emf.ecp.license.feature"
-      license-feature-version="1.16.0.qualifier">
+      license-feature-version="1.17.0.qualifier">
 
    <description>
       %description
diff --git a/features/org.eclipse.emf.ecp.view.indexdmr.feature/pom.xml b/features/org.eclipse.emf.ecp.view.indexdmr.feature/pom.xml
index b0ef598..1391ad4 100644
--- a/features/org.eclipse.emf.ecp.view.indexdmr.feature/pom.xml
+++ b/features/org.eclipse.emf.ecp.view.indexdmr.feature/pom.xml
@@ -5,11 +5,11 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-features-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.features/</relativePath>
   </parent>
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emf.ecp.view.indexdmr.feature</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-feature</packaging>
 </project>
diff --git a/features/org.eclipse.emf.ecp.view.keyattributedmr.feature/feature.xml b/features/org.eclipse.emf.ecp.view.keyattributedmr.feature/feature.xml
index 243b403..0084537 100644
--- a/features/org.eclipse.emf.ecp.view.keyattributedmr.feature/feature.xml
+++ b/features/org.eclipse.emf.ecp.view.keyattributedmr.feature/feature.xml
@@ -2,12 +2,12 @@
 <feature
       id="org.eclipse.emf.ecp.view.keyattributedmr.feature"
       label="EMF Forms Key Attribute DMR Feature"
-      version="1.16.0.qualifier"
+      version="1.17.0.qualifier"
       provider-name="%providerName"
       plugin="org.eclipse.emf.ecp.view.keyattributedmr.model"
       image="eclipse_update_120.jpg"
       license-feature="org.eclipse.emf.ecp.license.feature"
-      license-feature-version="1.16.0.qualifier">
+      license-feature-version="1.17.0.qualifier">
 
    <description>
       %description
diff --git a/features/org.eclipse.emf.ecp.view.keyattributedmr.feature/pom.xml b/features/org.eclipse.emf.ecp.view.keyattributedmr.feature/pom.xml
index e4853d5..ad2b794 100644
--- a/features/org.eclipse.emf.ecp.view.keyattributedmr.feature/pom.xml
+++ b/features/org.eclipse.emf.ecp.view.keyattributedmr.feature/pom.xml
@@ -5,11 +5,11 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-features-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.features/</relativePath>
   </parent>
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emf.ecp.view.keyattributedmr.feature</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-feature</packaging>
 </project>
diff --git a/features/org.eclipse.emf.ecp.view.label.feature/feature.xml b/features/org.eclipse.emf.ecp.view.label.feature/feature.xml
index c78f480..3e89d68 100644
--- a/features/org.eclipse.emf.ecp.view.label.feature/feature.xml
+++ b/features/org.eclipse.emf.ecp.view.label.feature/feature.xml
@@ -2,12 +2,12 @@
 <feature
       id="org.eclipse.emf.ecp.view.label.feature"
       label="EMF Forms Label Model"
-      version="1.16.0.qualifier"
+      version="1.17.0.qualifier"
       provider-name="Eclipse Modeling Project"
       plugin="org.eclipse.emf.ecp.view.label.model"
       image="eclipse_update_120.jpg"
       license-feature="org.eclipse.emf.ecp.license.feature"
-      license-feature-version="1.16.0.qualifier">
+      license-feature-version="1.17.0.qualifier">
 
    <description>
       %description
diff --git a/features/org.eclipse.emf.ecp.view.label.feature/pom.xml b/features/org.eclipse.emf.ecp.view.label.feature/pom.xml
index e1bf6c8..94a00b1 100644
--- a/features/org.eclipse.emf.ecp.view.label.feature/pom.xml
+++ b/features/org.eclipse.emf.ecp.view.label.feature/pom.xml
@@ -5,11 +5,11 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-features-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.features/</relativePath>
   </parent>
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emf.ecp.view.label.feature</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-feature</packaging>
 </project>
diff --git a/features/org.eclipse.emf.ecp.view.mappingdmr.feature/feature.xml b/features/org.eclipse.emf.ecp.view.mappingdmr.feature/feature.xml
index c55d558..e0a84a4 100644
--- a/features/org.eclipse.emf.ecp.view.mappingdmr.feature/feature.xml
+++ b/features/org.eclipse.emf.ecp.view.mappingdmr.feature/feature.xml
@@ -2,12 +2,12 @@
 <feature
       id="org.eclipse.emf.ecp.view.mappingdmr.feature"
       label="EMF Forms Mapping DMR Feature"
-      version="1.16.0.qualifier"
+      version="1.17.0.qualifier"
       provider-name="%providerName"
       plugin="org.eclipse.emf.ecp.view.mappingdmr.model"
       image="eclipse_update_120.jpg"
       license-feature="org.eclipse.emf.ecp.license.feature"
-      license-feature-version="1.16.0.qualifier">
+      license-feature-version="1.17.0.qualifier">
 
    <description>
       %description
diff --git a/features/org.eclipse.emf.ecp.view.mappingdmr.feature/pom.xml b/features/org.eclipse.emf.ecp.view.mappingdmr.feature/pom.xml
index 6aa276e..c0baef7 100644
--- a/features/org.eclipse.emf.ecp.view.mappingdmr.feature/pom.xml
+++ b/features/org.eclipse.emf.ecp.view.mappingdmr.feature/pom.xml
@@ -5,11 +5,11 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-features-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.features/</relativePath>
   </parent>
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emf.ecp.view.mappingdmr.feature</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-feature</packaging>
 </project>
diff --git a/features/org.eclipse.emf.ecp.view.model.controls.feature/feature.xml b/features/org.eclipse.emf.ecp.view.model.controls.feature/feature.xml
index e754f8a..824ec21 100644
--- a/features/org.eclipse.emf.ecp.view.model.controls.feature/feature.xml
+++ b/features/org.eclipse.emf.ecp.view.model.controls.feature/feature.xml
@@ -2,12 +2,12 @@
 <feature
       id="org.eclipse.emf.ecp.view.model.controls.feature"
       label="EMF Forms View Model Controls"
-      version="1.16.0.qualifier"
+      version="1.17.0.qualifier"
       provider-name="%providerName"
       plugin="org.eclipse.emf.ecp.ui.view.editor.controls"
       image="eclipse_update_120.jpg"
       license-feature="org.eclipse.emf.ecp.license.feature"
-      license-feature-version="1.16.0.qualifier">
+      license-feature-version="1.17.0.qualifier">
 
    <description>
       %description
diff --git a/features/org.eclipse.emf.ecp.view.model.controls.feature/pom.xml b/features/org.eclipse.emf.ecp.view.model.controls.feature/pom.xml
index 61e34db..79857c0 100644
--- a/features/org.eclipse.emf.ecp.view.model.controls.feature/pom.xml
+++ b/features/org.eclipse.emf.ecp.view.model.controls.feature/pom.xml
@@ -5,11 +5,11 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-features-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.features/</relativePath>
   </parent>
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emf.ecp.view.model.controls.feature</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-feature</packaging>
 </project>
diff --git a/features/org.eclipse.emf.ecp.view.model.editor.feature/feature.xml b/features/org.eclipse.emf.ecp.view.model.editor.feature/feature.xml
index 3f51b9c..55a9bc8 100644
--- a/features/org.eclipse.emf.ecp.view.model.editor.feature/feature.xml
+++ b/features/org.eclipse.emf.ecp.view.model.editor.feature/feature.xml
@@ -2,12 +2,12 @@
 <feature
       id="org.eclipse.emf.ecp.view.model.editor.feature"
       label="EMF Forms View Model Wizard"
-      version="1.16.0.qualifier"
+      version="1.17.0.qualifier"
       provider-name="%providerName"
       plugin="org.eclipse.emf.ecp.view.model.editor"
       image="eclipse_update_120.jpg"
       license-feature="org.eclipse.emf.ecp.license.feature"
-      license-feature-version="1.16.0.qualifier">
+      license-feature-version="1.17.0.qualifier">
 
    <description>
       %description
diff --git a/features/org.eclipse.emf.ecp.view.model.editor.feature/pom.xml b/features/org.eclipse.emf.ecp.view.model.editor.feature/pom.xml
index f6e8e96..6c3abd2 100644
--- a/features/org.eclipse.emf.ecp.view.model.editor.feature/pom.xml
+++ b/features/org.eclipse.emf.ecp.view.model.editor.feature/pom.xml
@@ -5,11 +5,11 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-features-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.features/</relativePath>
   </parent>
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emf.ecp.view.model.editor.feature</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-feature</packaging>
 </project>
diff --git a/features/org.eclipse.emf.ecp.view.model.feature/ECP IDE Tooling.launch b/features/org.eclipse.emf.ecp.view.model.feature/ECP IDE Tooling.launch
index 9e2c572..f2ab895 100644
--- a/features/org.eclipse.emf.ecp.view.model.feature/ECP IDE Tooling.launch
+++ b/features/org.eclipse.emf.ecp.view.model.feature/ECP IDE Tooling.launch
@@ -65,7 +65,7 @@
 <setEntry value="org.eclipse.rcp:default"/>
 </setAttribute>
 <stringAttribute key="selected_target_plugins" value="com.ibm.icu@default:default,javax.annotation@default:default,javax.inject@default:default,javax.servlet@default:default,lpg.runtime.java@default:default,org.apache.ant@default:default,org.apache.batik.css*1.7.0.v201011041433@default:default,org.apache.batik.css*1.8.0.v20170214-1941@default:default,org.apache.batik.dom@default:default,org.apache.batik.ext.awt@default:default,org.apache.batik.svggen@default:default,org.apache.batik.util*1.7.0.v201011041433@default:default,org.apache.batik.util*1.8.0.v20170214-1941@default:default,org.apache.batik.util.gui*1.7.0.v200903091627@default:default,org.apache.batik.util.gui*1.8.0.v20170214-1941@default:default,org.apache.batik.xml@default:default,org.apache.commons.codec@default:default,org.apache.commons.jxpath@default:default,org.apache.commons.logging@default:default,org.apache.felix.gogo.command@default:default,org.apache.felix.gogo.runtime@default:default,org.apache.felix.scr@default:default,org.apache.lucene.analyzers-common@default:default,org.apache.lucene.analyzers-smartcn@default:default,org.apache.lucene.core@default:default,org.apache.lucene.misc@default:default,org.eclipse.ant.core@default:default,org.eclipse.ant.launching@default:default,org.eclipse.ant.ui@default:default,org.eclipse.compare.core@default:default,org.eclipse.compare@default:default,org.eclipse.core.commands@default:default,org.eclipse.core.contenttype@default:default,org.eclipse.core.databinding*1.5.0.v20150422-0725@default:default,org.eclipse.core.databinding*1.6.100.v20170515-1119@default:default,org.eclipse.core.databinding.beans*1.3.0.v20150422-0725@default:default,org.eclipse.core.databinding.beans*1.4.0.v20170210-0856@default:default,org.eclipse.core.databinding.observable*1.5.0.v20150422-0725@default:default,org.eclipse.core.databinding.observable*1.6.100.v20170515-1119@default:default,org.eclipse.core.databinding.property*1.5.0.v20150422-0725@default:default,org.eclipse.core.databinding.property*1.6.100.v20170515-1119@default:default,org.eclipse.core.expressions@default:default,org.eclipse.core.externaltools@default:default,org.eclipse.core.filebuffers@default:default,org.eclipse.core.filesystem.linux.x86_64@default:false,org.eclipse.core.filesystem@default:default,org.eclipse.core.jobs@default:default,org.eclipse.core.net.linux.x86_64@default:false,org.eclipse.core.net@default:default,org.eclipse.core.resources@default:default,org.eclipse.core.runtime@default:true,org.eclipse.core.variables@default:default,org.eclipse.debug.core@default:default,org.eclipse.debug.ui@default:default,org.eclipse.draw2d@default:default,org.eclipse.e4.core.commands@default:default,org.eclipse.e4.core.contexts@default:default,org.eclipse.e4.core.di.annotations@default:default,org.eclipse.e4.core.di.extensions.supplier@default:default,org.eclipse.e4.core.di.extensions@default:default,org.eclipse.e4.core.di@default:default,org.eclipse.e4.core.services@default:default,org.eclipse.e4.emf.xpath@default:default,org.eclipse.e4.ui.bindings@default:default,org.eclipse.e4.ui.css.core@default:default,org.eclipse.e4.ui.css.swt.theme@default:default,org.eclipse.e4.ui.css.swt@default:default,org.eclipse.e4.ui.di@default:default,org.eclipse.e4.ui.model.workbench@default:default,org.eclipse.e4.ui.services@default:default,org.eclipse.e4.ui.swt.gtk@default:false,org.eclipse.e4.ui.widgets@default:default,org.eclipse.e4.ui.workbench.addons.swt@default:default,org.eclipse.e4.ui.workbench.renderers.swt@default:default,org.eclipse.e4.ui.workbench.swt@default:default,org.eclipse.e4.ui.workbench3@default:default,org.eclipse.e4.ui.workbench@default:default,org.eclipse.emf.codegen.ecore.ui@default:default,org.eclipse.emf.codegen.ecore@default:default,org.eclipse.emf.codegen@default:default,org.eclipse.emf.common.ui@default:default,org.eclipse.emf.common@default:default,org.eclipse.emf.converter@default:default,org.eclipse.emf.databinding.edit@default:default,org.eclipse.emf.databinding@default:default,org.eclipse.emf.ecore.change@default:default,org.eclipse.emf.ecore.edit@default:default,org.eclipse.emf.ecore.editor@default:default,org.eclipse.emf.ecore.xmi@default:default,org.eclipse.emf.ecore@default:default,org.eclipse.emf.edapt.common@default:default,org.eclipse.emf.edapt.declaration@default:default,org.eclipse.emf.edapt.history@default:default,org.eclipse.emf.edapt.migration@default:default,org.eclipse.emf.edit.ui@default:default,org.eclipse.emf.edit@default:default,org.eclipse.emf.emfstore.client.model.edit@default:default,org.eclipse.emf.emfstore.client.ui.rcp@default:false,org.eclipse.emf.emfstore.client.ui@default:default,org.eclipse.emf.emfstore.client@default:default,org.eclipse.emf.emfstore.common.model.edit@default:default,org.eclipse.emf.emfstore.common.model@default:default,org.eclipse.emf.emfstore.common@default:default,org.eclipse.emf.emfstore.examplemodel.edit@default:default,org.eclipse.emf.emfstore.examplemodel@default:default,org.eclipse.emf.emfstore.migration@default:default,org.eclipse.emf.emfstore.server.model.edit@default:default,org.eclipse.emf.emfstore.server.model@default:default,org.eclipse.emf.emfstore.server@default:default,org.eclipse.emf.importer.ecore@default:default,org.eclipse.emf.importer@default:default,org.eclipse.emf.transaction@default:default,org.eclipse.emf.validation@default:default,org.eclipse.emf.workspace@default:default,org.eclipse.equinox.app@default:default,org.eclipse.equinox.bidi@default:default,org.eclipse.equinox.common@2:true,org.eclipse.equinox.ds@1:true,org.eclipse.equinox.event@default:default,org.eclipse.equinox.frameworkadmin.equinox@default:default,org.eclipse.equinox.frameworkadmin@default:default,org.eclipse.equinox.http.registry@default:default,org.eclipse.equinox.p2.artifact.repository@default:default,org.eclipse.equinox.p2.core@default:default,org.eclipse.equinox.p2.director.app@default:default,org.eclipse.equinox.p2.director@default:default,org.eclipse.equinox.p2.engine@default:default,org.eclipse.equinox.p2.garbagecollector@default:default,org.eclipse.equinox.p2.jarprocessor@default:default,org.eclipse.equinox.p2.metadata.repository@default:default,org.eclipse.equinox.p2.metadata@default:default,org.eclipse.equinox.p2.operations@default:default,org.eclipse.equinox.p2.publisher.eclipse@default:default,org.eclipse.equinox.p2.publisher@default:default,org.eclipse.equinox.p2.repository.tools@default:default,org.eclipse.equinox.p2.repository@default:default,org.eclipse.equinox.p2.touchpoint.eclipse@default:default,org.eclipse.equinox.p2.ui@default:default,org.eclipse.equinox.preferences@default:default,org.eclipse.equinox.region@default:false,org.eclipse.equinox.registry@default:default,org.eclipse.equinox.security.ui@default:default,org.eclipse.equinox.security@default:default,org.eclipse.equinox.simpleconfigurator.manipulator@default:default,org.eclipse.equinox.simpleconfigurator@1:true,org.eclipse.equinox.supplement@default:default,org.eclipse.equinox.transforms.hook@default:false,org.eclipse.equinox.util@default:default,org.eclipse.equinox.weaving.hook@default:false,org.eclipse.gef@default:default,org.eclipse.help.base@default:default,org.eclipse.help@default:default,org.eclipse.jdt.compiler.apt@default:false,org.eclipse.jdt.compiler.tool@default:false,org.eclipse.jdt.core.manipulation@default:default,org.eclipse.jdt.core@default:default,org.eclipse.jdt.debug.ui@default:default,org.eclipse.jdt.debug@default:default,org.eclipse.jdt.junit.core@default:default,org.eclipse.jdt.junit.runtime@default:default,org.eclipse.jdt.junit@default:default,org.eclipse.jdt.launching@default:default,org.eclipse.jdt.ui@default:default,org.eclipse.jdt@default:default,org.eclipse.jface.databinding@default:default,org.eclipse.jface.text@default:default,org.eclipse.jface@default:default,org.eclipse.ltk.core.refactoring@default:default,org.eclipse.ltk.ui.refactoring@default:default,org.eclipse.net4j.db.h2@default:default,org.eclipse.net4j.db.jdbc@default:default,org.eclipse.net4j.db@default:default,org.eclipse.net4j.jvm@default:default,org.eclipse.net4j.ui.shared@default:default,org.eclipse.net4j.util.ui@default:default,org.eclipse.net4j.util@default:default,org.eclipse.net4j@default:default,org.eclipse.ocl.common@default:default,org.eclipse.ocl.ecore@default:default,org.eclipse.ocl@default:default,org.eclipse.osgi.compatibility.state@default:false,org.eclipse.osgi.services@default:default,org.eclipse.osgi.util@default:default,org.eclipse.osgi@-1:true,org.eclipse.pde.build@default:default,org.eclipse.pde.core@default:default,org.eclipse.search@default:default,org.eclipse.swt.gtk.linux.x86_64@default:false,org.eclipse.swt@default:default,org.eclipse.swtbot.ant.junit@default:false,org.eclipse.team.core@default:default,org.eclipse.team.ui@default:default,org.eclipse.text@default:default,org.eclipse.ui.cheatsheets@default:default,org.eclipse.ui.console@default:default,org.eclipse.ui.editors@default:default,org.eclipse.ui.externaltools@default:default,org.eclipse.ui.forms@default:default,org.eclipse.ui.ide.application@default:default,org.eclipse.ui.ide@default:default,org.eclipse.ui.intro@default:default,org.eclipse.ui.navigator.resources@default:default,org.eclipse.ui.navigator@default:default,org.eclipse.ui.trace@default:default,org.eclipse.ui.views.properties.tabbed@default:default,org.eclipse.ui.views@default:default,org.eclipse.ui.workbench.texteditor@default:default,org.eclipse.ui.workbench@default:default,org.eclipse.ui@default:default,org.eclipse.update.configurator@3:true,org.h2@default:default,org.hamcrest.core@default:default,org.junit@default:default,org.mockito.mockito-core-hamcrest-modified@default:default,org.objenesis@default:default,org.sat4j.core@default:default,org.sat4j.pb@default:default,org.slf4j.api@default:default,org.tukaani.xz@default:default,org.w3c.css.sac@default:default,org.w3c.dom.events@default:default,org.w3c.dom.smil*1.0.0.v200806040011@default:default,org.w3c.dom.smil*1.0.1.v200903091627@default:default,org.w3c.dom.svg@default:default"/>
-<stringAttribute key="selected_workspace_plugins" value="org.eclipse.emf.ecp.application.e3@default:default,org.eclipse.emf.ecp.common.ui@default:default,org.eclipse.emf.ecp.common@default:default,org.eclipse.emf.ecp.core.emffilter@default:default,org.eclipse.emf.ecp.core@default:default,org.eclipse.emf.ecp.doc@default:default,org.eclipse.emf.ecp.edit.ecore.swt@default:default,org.eclipse.emf.ecp.edit.swt@default:default,org.eclipse.emf.ecp.edit@default:default,org.eclipse.emf.ecp.editor.e3@default:default,org.eclipse.emf.ecp.emfstore.core@default:default,org.eclipse.emf.ecp.emfstore.ui.search@default:default,org.eclipse.emf.ecp.emfstore.ui@default:default,org.eclipse.emf.ecp.examplemodel.ui@default:default,org.eclipse.emf.ecp.explorereditorbridge@default:default,org.eclipse.emf.ecp.ide.editor.view@default:default,org.eclipse.emf.ecp.ide.editor.viewmodel@default:default,org.eclipse.emf.ecp.ide.util@default:default,org.eclipse.emf.ecp.ide.view.service@default:default,org.eclipse.emf.ecp.makeithappen.wizards@default:default,org.eclipse.emf.ecp.ui.e3@default:default,org.eclipse.emf.ecp.ui.rcp@default:false,org.eclipse.emf.ecp.ui.transaction@default:default,org.eclipse.emf.ecp.ui.view.editor.controls@default:default,org.eclipse.emf.ecp.ui.view.swt@default:default,org.eclipse.emf.ecp.ui.view@default:default,org.eclipse.emf.ecp.ui@default:default,org.eclipse.emf.ecp.validation.connector@default:default,org.eclipse.emf.ecp.validation@default:default,org.eclipse.emf.ecp.view.categorization.model.edit@default:default,org.eclipse.emf.ecp.view.categorization.model@default:default,org.eclipse.emf.ecp.view.categorization.swt@default:default,org.eclipse.emf.ecp.view.context.locale@default:default,org.eclipse.emf.ecp.view.context@default:default,org.eclipse.emf.ecp.view.control.multireference@default:default,org.eclipse.emf.ecp.view.core.swt@default:default,org.eclipse.emf.ecp.view.custom.model.edit@default:default,org.eclipse.emf.ecp.view.custom.model@default:default,org.eclipse.emf.ecp.view.custom.ui.swt@default:default,org.eclipse.emf.ecp.view.edapt@default:default,org.eclipse.emf.ecp.view.group.model.edit@default:default,org.eclipse.emf.ecp.view.group.model@default:default,org.eclipse.emf.ecp.view.group.ui.swt@default:default,org.eclipse.emf.ecp.view.groupedgrid.model.edit@default:default,org.eclipse.emf.ecp.view.groupedgrid.model@default:default,org.eclipse.emf.ecp.view.groupedgrid.ui.swt@default:default,org.eclipse.emf.ecp.view.horizontal.model.edit@default:default,org.eclipse.emf.ecp.view.horizontal.model@default:default,org.eclipse.emf.ecp.view.horizontal.ui.swt@default:default,org.eclipse.emf.ecp.view.indexdmr.model.edit@default:default,org.eclipse.emf.ecp.view.indexdmr.model@default:default,org.eclipse.emf.ecp.view.label.model.edit@default:default,org.eclipse.emf.ecp.view.label.model@default:default,org.eclipse.emf.ecp.view.label.ui.swt@default:default,org.eclipse.emf.ecp.view.mappingdmr.model.edit@default:default,org.eclipse.emf.ecp.view.mappingdmr.model@default:default,org.eclipse.emf.ecp.view.migrator@default:default,org.eclipse.emf.ecp.view.model.common@default:default,org.eclipse.emf.ecp.view.model.edit@default:default,org.eclipse.emf.ecp.view.model.editor@default:default,org.eclipse.emf.ecp.view.model.preview.common@default:default,org.eclipse.emf.ecp.view.model.preview.e3@default:default,org.eclipse.emf.ecp.view.model.project.installer@default:default,org.eclipse.emf.ecp.view.model.provider.generator@default:default,org.eclipse.emf.ecp.view.model.provider.xmi@default:default,org.eclipse.emf.ecp.view.model@default:default,org.eclipse.emf.ecp.view.rule.model.edit@default:default,org.eclipse.emf.ecp.view.rule.model@default:default,org.eclipse.emf.ecp.view.rule@default:default,org.eclipse.emf.ecp.view.stack.model@default:default,org.eclipse.emf.ecp.view.swt.layout@default:default,org.eclipse.emf.ecp.view.table.columnservice@default:default,org.eclipse.emf.ecp.view.table.edapt@default:default,org.eclipse.emf.ecp.view.table.model.edit@default:default,org.eclipse.emf.ecp.view.table.model@default:default,org.eclipse.emf.ecp.view.table.ui.swt@default:default,org.eclipse.emf.ecp.view.table.validation@default:default,org.eclipse.emf.ecp.view.template.model.edit@default:default,org.eclipse.emf.ecp.view.template.model@default:default,org.eclipse.emf.ecp.view.template.service@default:default,org.eclipse.emf.ecp.view.template.tooling@default:default,org.eclipse.emf.ecp.view.treemasterdetail.model.edit@default:default,org.eclipse.emf.ecp.view.treemasterdetail.model@default:default,org.eclipse.emf.ecp.view.treemasterdetail.ui.swt@default:default,org.eclipse.emf.ecp.view.treemasterdetail.validation@default:default,org.eclipse.emf.ecp.view.unset@default:default,org.eclipse.emf.ecp.view.util.swt@default:default,org.eclipse.emf.ecp.view.validation@default:default,org.eclipse.emf.ecp.view.vertical.model.edit@default:default,org.eclipse.emf.ecp.view.vertical.model@default:default,org.eclipse.emf.ecp.view.vertical.ui.swt@default:default,org.eclipse.emf.ecp.workspace.core@default:default,org.eclipse.emf.ecp.workspace.ui@default:default,org.eclipse.emfforms.common.prevalidation@default:default,org.eclipse.emfforms.common.validation@default:default,org.eclipse.emfforms.common@default:default,org.eclipse.emfforms.core.services.databinding.featurepath@default:default,org.eclipse.emfforms.core.services.databinding.index@default:default,org.eclipse.emfforms.core.services.databinding.mapping@default:default,org.eclipse.emfforms.core.services.domainexpander.default@default:default,org.eclipse.emfforms.core.services.domainexpander.index@default:default,org.eclipse.emfforms.core.services.domainexpander.mapping@default:default,org.eclipse.emfforms.core.services.domainexpander.table@default:default,org.eclipse.emfforms.core.services.editsupport@default:default,org.eclipse.emfforms.core.services.emf@default:default,org.eclipse.emfforms.core.services.emfspecificservice@default:default,org.eclipse.emfforms.core.services.legacy@default:default,org.eclipse.emfforms.core.services.locale.default@default:default,org.eclipse.emfforms.core.services.mappingprovider.default@default:default,org.eclipse.emfforms.core.services.mappingprovider.table@default:default,org.eclipse.emfforms.core.services.structuralchange.default@default:default,org.eclipse.emfforms.core.services.structuralchange.index@default:default,org.eclipse.emfforms.core.services.structuralchange.mapping@default:default,org.eclipse.emfforms.core.services.structuralchange.table@default:default,org.eclipse.emfforms.core.services.structuralchange@default:default,org.eclipse.emfforms.core.services@default:default,org.eclipse.emfforms.editor.ecore@default:default,org.eclipse.emfforms.editor.genmodel.util@default:default,org.eclipse.emfforms.editor.genmodel@default:default,org.eclipse.emfforms.editor.viewmodel@default:default,org.eclipse.emfforms.editor@default:default,org.eclipse.emfforms.localization@default:default,org.eclipse.emfforms.setup.base@default:default,org.eclipse.emfforms.swt.control.multiattribute@default:default,org.eclipse.emfforms.swt.controlgrid@default:default,org.eclipse.emfforms.swt.core.di.extension@default:default,org.eclipse.emfforms.swt.core.di@default:default,org.eclipse.emfforms.swt.core.plugin@default:default,org.eclipse.emfforms.swt.core@default:default,org.eclipse.emfforms.swt.table@default:default,org.eclipse.emfforms.swt.treemasterdetail.decorator.validation.default@default:default,org.eclipse.emfforms.swt.treemasterdetail@default:default,org.eclipse.emfforms.view.annotation.model.edit@default:default,org.eclipse.emfforms.view.annotation.model@default:default,org.eclipse.emfforms.view.controlgrid.model.edit@default:default,org.eclipse.emfforms.view.controlgrid.model@default:default,org.eclipse.emfforms.view.model.localization@default:default"/>
+<stringAttribute key="selected_workspace_plugins" value="org.eclipse.emf.ecp.application.e3@default:default,org.eclipse.emf.ecp.common.ui@default:default,org.eclipse.emf.ecp.common@default:default,org.eclipse.emf.ecp.core.emffilter@default:default,org.eclipse.emf.ecp.core@default:default,org.eclipse.emf.ecp.doc@default:default,org.eclipse.emf.ecp.edit.ecore.swt@default:default,org.eclipse.emf.ecp.edit.swt@default:default,org.eclipse.emf.ecp.edit@default:default,org.eclipse.emf.ecp.editor.e3@default:default,org.eclipse.emf.ecp.emfstore.core@default:default,org.eclipse.emf.ecp.emfstore.ui.search@default:default,org.eclipse.emf.ecp.emfstore.ui@default:default,org.eclipse.emf.ecp.examplemodel.ui@default:default,org.eclipse.emf.ecp.explorereditorbridge@default:default,org.eclipse.emf.ecp.ide.editor.view.templatebridge@default:default,org.eclipse.emf.ecp.ide.editor.view@default:default,org.eclipse.emf.ecp.ide.editor.viewmodel@default:default,org.eclipse.emf.ecp.ide.util@default:default,org.eclipse.emf.ecp.ide.view.service@default:default,org.eclipse.emf.ecp.makeithappen.wizards@default:default,org.eclipse.emf.ecp.ui.e3@default:default,org.eclipse.emf.ecp.ui.rcp@default:false,org.eclipse.emf.ecp.ui.transaction@default:default,org.eclipse.emf.ecp.ui.view.editor.controls@default:default,org.eclipse.emf.ecp.ui.view.swt@default:default,org.eclipse.emf.ecp.ui.view@default:default,org.eclipse.emf.ecp.ui@default:default,org.eclipse.emf.ecp.validation.connector@default:default,org.eclipse.emf.ecp.validation@default:default,org.eclipse.emf.ecp.view.categorization.model.edit@default:default,org.eclipse.emf.ecp.view.categorization.model@default:default,org.eclipse.emf.ecp.view.categorization.swt@default:default,org.eclipse.emf.ecp.view.context.locale@default:default,org.eclipse.emf.ecp.view.context@default:default,org.eclipse.emf.ecp.view.control.multireference@default:default,org.eclipse.emf.ecp.view.core.swt@default:default,org.eclipse.emf.ecp.view.custom.model.edit@default:default,org.eclipse.emf.ecp.view.custom.model@default:default,org.eclipse.emf.ecp.view.custom.ui.swt@default:default,org.eclipse.emf.ecp.view.edapt@default:default,org.eclipse.emf.ecp.view.group.model.edit@default:default,org.eclipse.emf.ecp.view.group.model@default:default,org.eclipse.emf.ecp.view.group.ui.swt@default:default,org.eclipse.emf.ecp.view.groupedgrid.model.edit@default:default,org.eclipse.emf.ecp.view.groupedgrid.model@default:default,org.eclipse.emf.ecp.view.groupedgrid.ui.swt@default:default,org.eclipse.emf.ecp.view.horizontal.model.edit@default:default,org.eclipse.emf.ecp.view.horizontal.model@default:default,org.eclipse.emf.ecp.view.horizontal.ui.swt@default:default,org.eclipse.emf.ecp.view.indexdmr.model.edit@default:default,org.eclipse.emf.ecp.view.indexdmr.model@default:default,org.eclipse.emf.ecp.view.label.model.edit@default:default,org.eclipse.emf.ecp.view.label.model@default:default,org.eclipse.emf.ecp.view.label.ui.swt@default:default,org.eclipse.emf.ecp.view.mappingdmr.model.edit@default:default,org.eclipse.emf.ecp.view.mappingdmr.model@default:default,org.eclipse.emf.ecp.view.migrator@default:default,org.eclipse.emf.ecp.view.model.common@default:default,org.eclipse.emf.ecp.view.model.edit@default:default,org.eclipse.emf.ecp.view.model.editor@default:default,org.eclipse.emf.ecp.view.model.preview.common@default:default,org.eclipse.emf.ecp.view.model.preview.e3@default:default,org.eclipse.emf.ecp.view.model.project.installer@default:default,org.eclipse.emf.ecp.view.model.provider.generator@default:default,org.eclipse.emf.ecp.view.model.provider.xmi@default:default,org.eclipse.emf.ecp.view.model@default:default,org.eclipse.emf.ecp.view.rule.model.edit@default:default,org.eclipse.emf.ecp.view.rule.model@default:default,org.eclipse.emf.ecp.view.rule@default:default,org.eclipse.emf.ecp.view.stack.model@default:default,org.eclipse.emf.ecp.view.swt.layout@default:default,org.eclipse.emf.ecp.view.table.columnservice@default:default,org.eclipse.emf.ecp.view.table.edapt@default:default,org.eclipse.emf.ecp.view.table.model.edit@default:default,org.eclipse.emf.ecp.view.table.model@default:default,org.eclipse.emf.ecp.view.table.ui.swt@default:default,org.eclipse.emf.ecp.view.table.validation@default:default,org.eclipse.emf.ecp.view.template.annotation.model.edit@default:default,org.eclipse.emf.ecp.view.template.annotation.model@default:default,org.eclipse.emf.ecp.view.template.model.edit@default:default,org.eclipse.emf.ecp.view.template.model@default:default,org.eclipse.emf.ecp.view.template.service@default:default,org.eclipse.emf.ecp.view.template.tooling@default:default,org.eclipse.emf.ecp.view.treemasterdetail.model.edit@default:default,org.eclipse.emf.ecp.view.treemasterdetail.model@default:default,org.eclipse.emf.ecp.view.treemasterdetail.ui.swt@default:default,org.eclipse.emf.ecp.view.treemasterdetail.validation@default:default,org.eclipse.emf.ecp.view.unset@default:default,org.eclipse.emf.ecp.view.util.swt@default:default,org.eclipse.emf.ecp.view.validation@default:default,org.eclipse.emf.ecp.view.vertical.model.edit@default:default,org.eclipse.emf.ecp.view.vertical.model@default:default,org.eclipse.emf.ecp.view.vertical.ui.swt@default:default,org.eclipse.emf.ecp.workspace.core@default:default,org.eclipse.emf.ecp.workspace.ui@default:default,org.eclipse.emfforms.common.prevalidation@default:default,org.eclipse.emfforms.common.validation@default:default,org.eclipse.emfforms.common@default:default,org.eclipse.emfforms.core.bazaar@default:default,org.eclipse.emfforms.core.services.databinding.featurepath@default:default,org.eclipse.emfforms.core.services.databinding.index@default:default,org.eclipse.emfforms.core.services.databinding.mapping@default:default,org.eclipse.emfforms.core.services.domainexpander.default@default:default,org.eclipse.emfforms.core.services.domainexpander.index@default:default,org.eclipse.emfforms.core.services.domainexpander.mapping@default:default,org.eclipse.emfforms.core.services.domainexpander.table@default:default,org.eclipse.emfforms.core.services.editsupport@default:default,org.eclipse.emfforms.core.services.emf@default:default,org.eclipse.emfforms.core.services.emfspecificservice@default:default,org.eclipse.emfforms.core.services.legacy@default:default,org.eclipse.emfforms.core.services.locale.default@default:default,org.eclipse.emfforms.core.services.mappingprovider.default@default:default,org.eclipse.emfforms.core.services.mappingprovider.table@default:default,org.eclipse.emfforms.core.services.structuralchange.default@default:default,org.eclipse.emfforms.core.services.structuralchange.index@default:default,org.eclipse.emfforms.core.services.structuralchange.mapping@default:default,org.eclipse.emfforms.core.services.structuralchange.table@default:default,org.eclipse.emfforms.core.services.structuralchange@default:default,org.eclipse.emfforms.core.services@default:default,org.eclipse.emfforms.editor.ecore@default:default,org.eclipse.emfforms.editor.genmodel.util@default:default,org.eclipse.emfforms.editor.genmodel@default:default,org.eclipse.emfforms.editor.viewmodel@default:default,org.eclipse.emfforms.editor@default:default,org.eclipse.emfforms.localization@default:default,org.eclipse.emfforms.setup.base@default:default,org.eclipse.emfforms.swt.control.multiattribute@default:default,org.eclipse.emfforms.swt.controlgrid@default:default,org.eclipse.emfforms.swt.core.di.extension@default:default,org.eclipse.emfforms.swt.core.di@default:default,org.eclipse.emfforms.swt.core.plugin@default:default,org.eclipse.emfforms.swt.core@default:default,org.eclipse.emfforms.swt.table@default:default,org.eclipse.emfforms.swt.treemasterdetail.decorator.validation.default@default:default,org.eclipse.emfforms.swt.treemasterdetail@default:default,org.eclipse.emfforms.view.annotation.model.edit@default:default,org.eclipse.emfforms.view.annotation.model@default:default,org.eclipse.emfforms.view.controlgrid.model.edit@default:default,org.eclipse.emfforms.view.controlgrid.model@default:default,org.eclipse.emfforms.view.model.localization@default:default"/>
 <booleanAttribute key="show_selected_only" value="false"/>
 <stringAttribute key="timestamp" value="1366714902913"/>
 <booleanAttribute key="tracing" value="false"/>
diff --git a/features/org.eclipse.emf.ecp.view.model.feature/feature.xml b/features/org.eclipse.emf.ecp.view.model.feature/feature.xml
index 2888cdc..ea2c480 100644
--- a/features/org.eclipse.emf.ecp.view.model.feature/feature.xml
+++ b/features/org.eclipse.emf.ecp.view.model.feature/feature.xml
@@ -2,12 +2,12 @@
 <feature

       id="org.eclipse.emf.ecp.viewmodel.feature"

       label="EMF Forms Core Model"

-      version="1.16.0.qualifier"

+      version="1.17.0.qualifier"

       provider-name="Eclipse Modeling Project"

       plugin="org.eclipse.emf.ecp.view.model"

       image="eclipse_update_120.jpg"

       license-feature="org.eclipse.emf.ecp.license.feature"

-      license-feature-version="1.16.0.qualifier">

+      license-feature-version="1.17.0.qualifier">

 

    <description>

       %description

diff --git a/features/org.eclipse.emf.ecp.view.model.feature/pom.xml b/features/org.eclipse.emf.ecp.view.model.feature/pom.xml
index 7cc623f..1a0f785 100644
--- a/features/org.eclipse.emf.ecp.view.model.feature/pom.xml
+++ b/features/org.eclipse.emf.ecp.view.model.feature/pom.xml
@@ -5,11 +5,11 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-features-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.features/</relativePath>
   </parent>
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emf.ecp.viewmodel.feature</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-feature</packaging>
 </project>
diff --git a/features/org.eclipse.emf.ecp.view.rule.feature/feature.xml b/features/org.eclipse.emf.ecp.view.rule.feature/feature.xml
index bea59c6..a2e0d3a 100644
--- a/features/org.eclipse.emf.ecp.view.rule.feature/feature.xml
+++ b/features/org.eclipse.emf.ecp.view.rule.feature/feature.xml
@@ -2,12 +2,12 @@
 <feature
       id="org.eclipse.emf.ecp.view.rule.feature"
       label="EMF Forms Rule Model"
-      version="1.16.0.qualifier"
+      version="1.17.0.qualifier"
       provider-name="Eclipse Modeling Project"
       plugin="org.eclipse.emf.ecp.view.rule"
       image="eclipse_update_120.jpg"
       license-feature="org.eclipse.emf.ecp.license.feature"
-      license-feature-version="1.16.0.qualifier">
+      license-feature-version="1.17.0.qualifier">
 
    <description>
       %description
diff --git a/features/org.eclipse.emf.ecp.view.rule.feature/pom.xml b/features/org.eclipse.emf.ecp.view.rule.feature/pom.xml
index 2bb683d..04312b6 100644
--- a/features/org.eclipse.emf.ecp.view.rule.feature/pom.xml
+++ b/features/org.eclipse.emf.ecp.view.rule.feature/pom.xml
@@ -5,11 +5,11 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-features-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.features/</relativePath>
   </parent>
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emf.ecp.view.rule.feature</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-feature</packaging>
 </project>
diff --git a/features/org.eclipse.emf.ecp.view.section.feature/feature.xml b/features/org.eclipse.emf.ecp.view.section.feature/feature.xml
index c92b8e7..85a2ae0 100644
--- a/features/org.eclipse.emf.ecp.view.section.feature/feature.xml
+++ b/features/org.eclipse.emf.ecp.view.section.feature/feature.xml
@@ -2,11 +2,11 @@
 <feature
       id="org.eclipse.emf.ecp.view.section.feature"
       label="EMF Forms Section Model (Experimental)"
-      version="1.16.0.qualifier"
+      version="1.17.0.qualifier"
       provider-name="%providerName"
       plugin="org.eclipse.emf.ecp.view.section.model"
       license-feature="org.eclipse.emf.ecp.license.feature"
-      license-feature-version="1.16.0.qualifier">
+      license-feature-version="1.17.0.qualifier">
 
    <description>
       %description
diff --git a/features/org.eclipse.emf.ecp.view.section.feature/pom.xml b/features/org.eclipse.emf.ecp.view.section.feature/pom.xml
index 50bb81b..ac75c88 100644
--- a/features/org.eclipse.emf.ecp.view.section.feature/pom.xml
+++ b/features/org.eclipse.emf.ecp.view.section.feature/pom.xml
@@ -5,11 +5,11 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-features-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.features/</relativePath>
   </parent>
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emf.ecp.view.section.feature</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-feature</packaging>
 </project>
diff --git a/features/org.eclipse.emf.ecp.view.stack.feature/feature.xml b/features/org.eclipse.emf.ecp.view.stack.feature/feature.xml
index f273eb5..c2ea019 100644
--- a/features/org.eclipse.emf.ecp.view.stack.feature/feature.xml
+++ b/features/org.eclipse.emf.ecp.view.stack.feature/feature.xml
@@ -2,12 +2,12 @@
 <feature
       id="org.eclipse.emf.ecp.view.stack.feature"
       label="EMF Forms Stack Model"
-      version="1.16.0.qualifier"
+      version="1.17.0.qualifier"
       provider-name="%providerName"
       plugin="org.eclipse.emf.ecp.view.stack.model"
       image="eclipse_update_120.jpg"
       license-feature="org.eclipse.emf.ecp.license.feature"
-      license-feature-version="1.16.0.qualifier">
+      license-feature-version="1.17.0.qualifier">
 
    <description>
       %description
diff --git a/features/org.eclipse.emf.ecp.view.stack.feature/pom.xml b/features/org.eclipse.emf.ecp.view.stack.feature/pom.xml
index 8458160..421fd66 100644
--- a/features/org.eclipse.emf.ecp.view.stack.feature/pom.xml
+++ b/features/org.eclipse.emf.ecp.view.stack.feature/pom.xml
@@ -5,12 +5,12 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-features-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.features/</relativePath>
   </parent>
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emf.ecp.view.stack.feature</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-feature</packaging>
   
     <build>
diff --git a/features/org.eclipse.emf.ecp.view.table.celleditor.rcp.feature/feature.xml b/features/org.eclipse.emf.ecp.view.table.celleditor.rcp.feature/feature.xml
index 8f1952f..39150d7 100644
--- a/features/org.eclipse.emf.ecp.view.table.celleditor.rcp.feature/feature.xml
+++ b/features/org.eclipse.emf.ecp.view.table.celleditor.rcp.feature/feature.xml
@@ -2,11 +2,11 @@
 <feature
       id="org.eclipse.emf.ecp.view.table.celleditor.rcp.feature"
       label="EMF Forms Table UI SWT Additional Cell Editors (non-RAP)"
-      version="1.16.0.qualifier"
+      version="1.17.0.qualifier"
       provider-name="%providerName"
       plugin="org.eclipse.emf.ecp.view.table.celleditor.rcp"
       license-feature="org.eclipse.emf.ecp.license.feature"
-      license-feature-version="1.16.0.qualifier">
+      license-feature-version="1.17.0.qualifier">
 
    <description>
       %description
diff --git a/features/org.eclipse.emf.ecp.view.table.celleditor.rcp.feature/pom.xml b/features/org.eclipse.emf.ecp.view.table.celleditor.rcp.feature/pom.xml
index 5dc146f..a93b81e 100644
--- a/features/org.eclipse.emf.ecp.view.table.celleditor.rcp.feature/pom.xml
+++ b/features/org.eclipse.emf.ecp.view.table.celleditor.rcp.feature/pom.xml
@@ -5,11 +5,11 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-features-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.features/</relativePath>
   </parent>
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emf.ecp.view.table.celleditor.rcp.feature</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-feature</packaging>
 </project>
diff --git a/features/org.eclipse.emf.ecp.view.table.feature/feature.xml b/features/org.eclipse.emf.ecp.view.table.feature/feature.xml
index 197e719..3475218 100644
--- a/features/org.eclipse.emf.ecp.view.table.feature/feature.xml
+++ b/features/org.eclipse.emf.ecp.view.table.feature/feature.xml
@@ -2,12 +2,12 @@
 <feature
       id="org.eclipse.emf.ecp.view.table.feature"
       label="EMF Forms Table Model"
-      version="1.16.0.qualifier"
+      version="1.17.0.qualifier"
       provider-name="Eclipse Modeling Project"
       plugin="org.eclipse.emf.ecp.view.table.model"
       image="eclipse_update_120.jpg"
       license-feature="org.eclipse.emf.ecp.license.feature"
-      license-feature-version="1.16.0.qualifier">
+      license-feature-version="1.17.0.qualifier">
 
    <description>
       %description
diff --git a/features/org.eclipse.emf.ecp.view.table.feature/pom.xml b/features/org.eclipse.emf.ecp.view.table.feature/pom.xml
index 46b8bfe..2911dd0 100644
--- a/features/org.eclipse.emf.ecp.view.table.feature/pom.xml
+++ b/features/org.eclipse.emf.ecp.view.table.feature/pom.xml
@@ -5,11 +5,11 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-features-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.features/</relativePath>
   </parent>
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emf.ecp.view.table.feature</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-feature</packaging>
 </project>
diff --git a/features/org.eclipse.emf.ecp.view.table.ui.nebula.grid.feature/feature.xml b/features/org.eclipse.emf.ecp.view.table.ui.nebula.grid.feature/feature.xml
index 40a0094..a0eef4a 100644
--- a/features/org.eclipse.emf.ecp.view.table.ui.nebula.grid.feature/feature.xml
+++ b/features/org.eclipse.emf.ecp.view.table.ui.nebula.grid.feature/feature.xml
@@ -2,11 +2,11 @@
 <feature
       id="org.eclipse.emf.ecp.view.table.ui.nebula.grid.feature"
       label="EMF Forms Nebula Grid Table UI Feature"
-      version="1.16.0.qualifier"
+      version="1.17.0.qualifier"
       provider-name="Eclipse Modeling Project"
       plugin="org.eclipse.emf.ecp.view.table.ui.nebula.grid"
       license-feature="org.eclipse.emf.ecp.license.feature"
-      license-feature-version="1.16.0.qualifier">
+      license-feature-version="1.17.0.qualifier">
 
    <description>
       %description
diff --git a/features/org.eclipse.emf.ecp.view.table.ui.nebula.grid.feature/pom.xml b/features/org.eclipse.emf.ecp.view.table.ui.nebula.grid.feature/pom.xml
index 676cbfb..f7865a6 100644
--- a/features/org.eclipse.emf.ecp.view.table.ui.nebula.grid.feature/pom.xml
+++ b/features/org.eclipse.emf.ecp.view.table.ui.nebula.grid.feature/pom.xml
@@ -5,11 +5,11 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-features-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.features/</relativePath>
   </parent>
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emf.ecp.view.table.ui.nebula.grid.feature</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-feature</packaging>
 </project>
diff --git a/features/org.eclipse.emf.ecp.view.table.ui.rcp.feature/feature.xml b/features/org.eclipse.emf.ecp.view.table.ui.rcp.feature/feature.xml
index 726586e..a7a32bd 100644
--- a/features/org.eclipse.emf.ecp.view.table.ui.rcp.feature/feature.xml
+++ b/features/org.eclipse.emf.ecp.view.table.ui.rcp.feature/feature.xml
@@ -2,11 +2,11 @@
 <feature
       id="org.eclipse.emf.ecp.view.table.ui.rcp.feature"
       label="EMF Forms Table UI RCP Feature"
-      version="1.16.0.qualifier"
+      version="1.17.0.qualifier"
       provider-name="Eclipse Modeling Project"
       plugin="org.eclipse.emf.ecp.view.table.ui.rcp"
       license-feature="org.eclipse.emf.ecp.license.feature"
-      license-feature-version="1.16.0.qualifier">
+      license-feature-version="1.17.0.qualifier">
 
    <description>
       %description
diff --git a/features/org.eclipse.emf.ecp.view.table.ui.rcp.feature/pom.xml b/features/org.eclipse.emf.ecp.view.table.ui.rcp.feature/pom.xml
index d0a8faf..4d0c2a4 100644
--- a/features/org.eclipse.emf.ecp.view.table.ui.rcp.feature/pom.xml
+++ b/features/org.eclipse.emf.ecp.view.table.ui.rcp.feature/pom.xml
@@ -5,11 +5,11 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-features-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.features/</relativePath>
   </parent>
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emf.ecp.view.table.ui.rcp.feature</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-feature</packaging>
 </project>
diff --git a/features/org.eclipse.emf.ecp.view.table.ui.swt.persistedstate.feature/feature.xml b/features/org.eclipse.emf.ecp.view.table.ui.swt.persistedstate.feature/feature.xml
index bda9b7d..5b38d4d 100644
--- a/features/org.eclipse.emf.ecp.view.table.ui.swt.persistedstate.feature/feature.xml
+++ b/features/org.eclipse.emf.ecp.view.table.ui.swt.persistedstate.feature/feature.xml
@@ -2,11 +2,11 @@
 <feature
       id="org.eclipse.emf.ecp.view.table.ui.swt.persistedstate.feature"
       label="EMF Forms Persist Table State Feature"
-      version="1.16.0.qualifier"
+      version="1.17.0.qualifier"
       provider-name="Eclipse Modeling Project"
       plugin="org.eclipse.emf.ecp.view.table.ui.swt.persistedstate"
       license-feature="org.eclipse.emf.ecp.license.feature"
-      license-feature-version="1.16.0.qualifier">
+      license-feature-version="1.17.0.qualifier">
 
    <description>
       %description
diff --git a/features/org.eclipse.emf.ecp.view.table.ui.swt.persistedstate.feature/pom.xml b/features/org.eclipse.emf.ecp.view.table.ui.swt.persistedstate.feature/pom.xml
index bb24122..c0c5a20 100644
--- a/features/org.eclipse.emf.ecp.view.table.ui.swt.persistedstate.feature/pom.xml
+++ b/features/org.eclipse.emf.ecp.view.table.ui.swt.persistedstate.feature/pom.xml
@@ -5,11 +5,11 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-features-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.features/</relativePath>
   </parent>
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emf.ecp.view.table.ui.swt.persistedstate.feature</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-feature</packaging>
 </project>
diff --git a/features/org.eclipse.emf.ecp.view.template.feature/feature.xml b/features/org.eclipse.emf.ecp.view.template.feature/feature.xml
index 93b619d..080bbcd 100644
--- a/features/org.eclipse.emf.ecp.view.template.feature/feature.xml
+++ b/features/org.eclipse.emf.ecp.view.template.feature/feature.xml
@@ -2,12 +2,12 @@
 <feature
       id="org.eclipse.emf.ecp.view.template.feature"
       label="EMF Forms Template  Model"
-      version="1.16.0.qualifier"
+      version="1.17.0.qualifier"
       provider-name="%providerName"
       plugin="org.eclipse.emf.ecp.view.template.model"
       image="eclipse_update_120.jpg"
       license-feature="org.eclipse.emf.ecp.license.feature"
-      license-feature-version="1.16.0.qualifier">
+      license-feature-version="1.17.0.qualifier">
 
    <description>
       %description
diff --git a/features/org.eclipse.emf.ecp.view.template.feature/pom.xml b/features/org.eclipse.emf.ecp.view.template.feature/pom.xml
index 861ed0c..7c94513 100644
--- a/features/org.eclipse.emf.ecp.view.template.feature/pom.xml
+++ b/features/org.eclipse.emf.ecp.view.template.feature/pom.xml
@@ -5,11 +5,11 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-features-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.features/</relativePath>
   </parent>
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emf.ecp.view.template.feature</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-feature</packaging>
 </project>
diff --git a/features/org.eclipse.emf.ecp.view.treemasterdetail.feature/feature.xml b/features/org.eclipse.emf.ecp.view.treemasterdetail.feature/feature.xml
index 9ad628e..a2dd9eb 100644
--- a/features/org.eclipse.emf.ecp.view.treemasterdetail.feature/feature.xml
+++ b/features/org.eclipse.emf.ecp.view.treemasterdetail.feature/feature.xml
@@ -2,12 +2,12 @@
 <feature
       id="org.eclipse.emf.ecp.view.treemasterdetail.feature"
       label="EMF Forms Master-Detail Model"
-      version="1.16.0.qualifier"
+      version="1.17.0.qualifier"
       provider-name="%providerName"
       plugin="org.eclipse.emf.ecp.view.treemasterdetail.model"
       image="eclipse_update_120.jpg"
       license-feature="org.eclipse.emf.ecp.license.feature"
-      license-feature-version="1.16.0.qualifier">
+      license-feature-version="1.17.0.qualifier">
 
    <description>
       %description
diff --git a/features/org.eclipse.emf.ecp.view.treemasterdetail.feature/pom.xml b/features/org.eclipse.emf.ecp.view.treemasterdetail.feature/pom.xml
index ad4f7c1..3618e4b 100644
--- a/features/org.eclipse.emf.ecp.view.treemasterdetail.feature/pom.xml
+++ b/features/org.eclipse.emf.ecp.view.treemasterdetail.feature/pom.xml
@@ -5,11 +5,11 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-features-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.features/</relativePath>
   </parent>
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emf.ecp.view.treemasterdetail.feature</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-feature</packaging>
 </project>
diff --git a/features/org.eclipse.emf.ecp.view.unset.feature/feature.xml b/features/org.eclipse.emf.ecp.view.unset.feature/feature.xml
index 5994b8e..f0e42ab 100644
--- a/features/org.eclipse.emf.ecp.view.unset.feature/feature.xml
+++ b/features/org.eclipse.emf.ecp.view.unset.feature/feature.xml
@@ -2,12 +2,12 @@
 <feature
       id="org.eclipse.emf.ecp.view.unset.feature"
       label="EMF Forms Unset Service"
-      version="1.16.0.qualifier"
+      version="1.17.0.qualifier"
       provider-name="%providerName"
       plugin="org.eclipse.emf.ecp.view.unset"
       image="eclipse_update_120.jpg"
       license-feature="org.eclipse.emf.ecp.license.feature"
-      license-feature-version="1.16.0.qualifier">
+      license-feature-version="1.17.0.qualifier">
 
    <description>
       %description
diff --git a/features/org.eclipse.emf.ecp.view.unset.feature/pom.xml b/features/org.eclipse.emf.ecp.view.unset.feature/pom.xml
index c33c09b..a10b8b5 100644
--- a/features/org.eclipse.emf.ecp.view.unset.feature/pom.xml
+++ b/features/org.eclipse.emf.ecp.view.unset.feature/pom.xml
@@ -5,11 +5,11 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-features-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.features/</relativePath>
   </parent>
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emf.ecp.view.unset.feature</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-feature</packaging>
 </project>
diff --git a/features/org.eclipse.emf.ecp.view.validation.bean.feature/feature.xml b/features/org.eclipse.emf.ecp.view.validation.bean.feature/feature.xml
index d3123f7..fcf1a30 100644
--- a/features/org.eclipse.emf.ecp.view.validation.bean.feature/feature.xml
+++ b/features/org.eclipse.emf.ecp.view.validation.bean.feature/feature.xml
@@ -2,12 +2,12 @@
 <feature
       id="org.eclipse.emf.ecp.view.validation.bean.feature"
       label="EMF Forms Bean Validation Feature"
-      version="1.16.0.qualifier"
+      version="1.17.0.qualifier"
       provider-name="Eclipse Modeling Project"
       plugin="org.eclipse.emf.ecp.view.validation.bean"
       image="eclipse_update_120.jpg"
       license-feature="org.eclipse.emf.ecp.license.feature"
-      license-feature-version="1.16.0.qualifier">
+      license-feature-version="1.17.0.qualifier">
 
    <description>
       %description
diff --git a/features/org.eclipse.emf.ecp.view.validation.bean.feature/pom.xml b/features/org.eclipse.emf.ecp.view.validation.bean.feature/pom.xml
index e01acef..6e2c8ae 100644
--- a/features/org.eclipse.emf.ecp.view.validation.bean.feature/pom.xml
+++ b/features/org.eclipse.emf.ecp.view.validation.bean.feature/pom.xml
@@ -5,11 +5,11 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-features-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.features/</relativePath>
   </parent>
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emf.ecp.view.validation.bean.feature</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-feature</packaging>
 </project>
diff --git a/features/org.eclipse.emf.ecp.view.validation.feature/feature.xml b/features/org.eclipse.emf.ecp.view.validation.feature/feature.xml
index cc2c4db..675c7d7 100644
--- a/features/org.eclipse.emf.ecp.view.validation.feature/feature.xml
+++ b/features/org.eclipse.emf.ecp.view.validation.feature/feature.xml
@@ -2,12 +2,12 @@
 <feature
       id="org.eclipse.emf.ecp.view.validation.feature"
       label="EMF Forms Validation Service"
-      version="1.16.0.qualifier"
+      version="1.17.0.qualifier"
       provider-name="Eclipse Modeling Project"
       plugin="org.eclipse.emf.ecp.view.validation"
       image="eclipse_update_120.jpg"
       license-feature="org.eclipse.emf.ecp.license.feature"
-      license-feature-version="1.16.0.qualifier">
+      license-feature-version="1.17.0.qualifier">
 
    <description>
       %description
diff --git a/features/org.eclipse.emf.ecp.view.validation.feature/pom.xml b/features/org.eclipse.emf.ecp.view.validation.feature/pom.xml
index b7b7b5c..90d6a57 100644
--- a/features/org.eclipse.emf.ecp.view.validation.feature/pom.xml
+++ b/features/org.eclipse.emf.ecp.view.validation.feature/pom.xml
@@ -5,11 +5,11 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-features-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.features/</relativePath>
   </parent>
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emf.ecp.view.validation.feature</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-feature</packaging>
 </project>
diff --git a/features/org.eclipse.emf.ecp.view.validation.initial.feature/feature.xml b/features/org.eclipse.emf.ecp.view.validation.initial.feature/feature.xml
index 17e3d99..da2dcc2 100644
--- a/features/org.eclipse.emf.ecp.view.validation.initial.feature/feature.xml
+++ b/features/org.eclipse.emf.ecp.view.validation.initial.feature/feature.xml
@@ -2,12 +2,12 @@
 <feature
       id="org.eclipse.emf.ecp.view.validation.initial.feature"
       label="EMF Forms Deep Validation Initial Feature"
-      version="1.16.0.qualifier"
+      version="1.17.0.qualifier"
       provider-name="Eclipse Modeling Project"
       plugin="org.eclipse.emf.ecp.view.validation"
       image="eclipse_update_120.jpg"
       license-feature="org.eclipse.emf.ecp.license.feature"
-      license-feature-version="1.16.0.qualifier">
+      license-feature-version="1.17.0.qualifier">
 
    <description>
       %description
diff --git a/features/org.eclipse.emf.ecp.view.validation.initial.feature/pom.xml b/features/org.eclipse.emf.ecp.view.validation.initial.feature/pom.xml
index b980e56..8b9c095 100644
--- a/features/org.eclipse.emf.ecp.view.validation.initial.feature/pom.xml
+++ b/features/org.eclipse.emf.ecp.view.validation.initial.feature/pom.xml
@@ -5,11 +5,11 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-features-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.features/</relativePath>
   </parent>
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emf.ecp.view.validation.initial.feature</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-feature</packaging>
 </project>
diff --git a/features/org.eclipse.emf.ecp.view.vertical.feature/feature.xml b/features/org.eclipse.emf.ecp.view.vertical.feature/feature.xml
index 60a826d..3612df4 100644
--- a/features/org.eclipse.emf.ecp.view.vertical.feature/feature.xml
+++ b/features/org.eclipse.emf.ecp.view.vertical.feature/feature.xml
@@ -2,12 +2,12 @@
 <feature
       id="org.eclipse.emf.ecp.view.vertical.feature"
       label="EMF Forms Vertical Model"
-      version="1.16.0.qualifier"
+      version="1.17.0.qualifier"
       provider-name="Eclipse Modeling Project"
       plugin="org.eclipse.emf.ecp.view.vertical.model"
       image="eclipse_update_120.jpg"
       license-feature="org.eclipse.emf.ecp.license.feature"
-      license-feature-version="1.16.0.qualifier">
+      license-feature-version="1.17.0.qualifier">
 
    <description>
       %description
diff --git a/features/org.eclipse.emf.ecp.view.vertical.feature/pom.xml b/features/org.eclipse.emf.ecp.view.vertical.feature/pom.xml
index 01d28cd..199683e 100644
--- a/features/org.eclipse.emf.ecp.view.vertical.feature/pom.xml
+++ b/features/org.eclipse.emf.ecp.view.vertical.feature/pom.xml
@@ -5,11 +5,11 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-features-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.features/</relativePath>
   </parent>
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emf.ecp.view.vertical.feature</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-feature</packaging>
 </project>
diff --git a/features/org.eclipse.emf.ecp.view.viewproxy.feature/feature.xml b/features/org.eclipse.emf.ecp.view.viewproxy.feature/feature.xml
index 3fdf1f3..1f9c736 100644
--- a/features/org.eclipse.emf.ecp.view.viewproxy.feature/feature.xml
+++ b/features/org.eclipse.emf.ecp.view.viewproxy.feature/feature.xml
@@ -2,12 +2,12 @@
 <feature
       id="org.eclipse.emf.ecp.view.viewproxy.feature"
       label="EMF Forms View Proxy Model"
-      version="1.16.0.qualifier"
+      version="1.17.0.qualifier"
       provider-name="Eclipse Modeling Project"
       plugin="org.eclipse.emf.ecp.view.viewproxy.model"
       image="eclipse_update_120.jpg"
       license-feature="org.eclipse.emf.ecp.license.feature"
-      license-feature-version="1.16.0.qualifier">
+      license-feature-version="1.17.0.qualifier">
 
    <description>
       %description
diff --git a/features/org.eclipse.emf.ecp.view.viewproxy.feature/pom.xml b/features/org.eclipse.emf.ecp.view.viewproxy.feature/pom.xml
index fd5e125..2d000f0 100644
--- a/features/org.eclipse.emf.ecp.view.viewproxy.feature/pom.xml
+++ b/features/org.eclipse.emf.ecp.view.viewproxy.feature/pom.xml
@@ -5,11 +5,11 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-features-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.features/</relativePath>
   </parent>
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emf.ecp.view.viewproxy.feature</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-feature</packaging>
 </project>
diff --git a/features/org.eclipse.emf.ecp.workspace.feature/feature.xml b/features/org.eclipse.emf.ecp.workspace.feature/feature.xml
index 4b1d22c..eb7781a 100644
--- a/features/org.eclipse.emf.ecp.workspace.feature/feature.xml
+++ b/features/org.eclipse.emf.ecp.workspace.feature/feature.xml
@@ -12,12 +12,12 @@
 <feature
       id="org.eclipse.emf.ecp.workspace.feature"
       label="ECP File Integration (Experimental)"
-      version="1.16.0.qualifier"
+      version="1.17.0.qualifier"
       provider-name="Eclipse Modeling Project"
       plugin="org.eclipse.emf.ecp.workspace.core"
       image="eclipse_update_120.jpg"
       license-feature="org.eclipse.emf.ecp.license.feature"
-      license-feature-version="1.16.0.qualifier">
+      license-feature-version="1.17.0.qualifier">
 
    <description>
       Integration for file and Eclipse workspace persistence.
diff --git a/features/org.eclipse.emf.ecp.workspace.feature/pom.xml b/features/org.eclipse.emf.ecp.workspace.feature/pom.xml
index 5e2163b..dc9b907 100644
--- a/features/org.eclipse.emf.ecp.workspace.feature/pom.xml
+++ b/features/org.eclipse.emf.ecp.workspace.feature/pom.xml
@@ -5,11 +5,11 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-features-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.features/</relativePath>
   </parent>
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emf.ecp.workspace.feature</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-feature</packaging>
 </project>
diff --git a/features/org.eclipse.emfforms.common.prevalidation.feature/feature.xml b/features/org.eclipse.emfforms.common.prevalidation.feature/feature.xml
index b583ac5..42f29f6 100644
--- a/features/org.eclipse.emfforms.common.prevalidation.feature/feature.xml
+++ b/features/org.eclipse.emfforms.common.prevalidation.feature/feature.xml
@@ -2,11 +2,11 @@
 <feature
       id="org.eclipse.emfforms.common.prevalidation.feature"
       label="EMFForms PreValidation Feature"
-      version="1.16.0.qualifier"
+      version="1.17.0.qualifier"
       provider-name="Eclipse Modeling Project"
       plugin="org.eclipse.emfforms.common.prevalidation"
       license-feature="org.eclipse.emf.ecp.license.feature"
-      license-feature-version="1.16.0.qualifier">
+      license-feature-version="1.17.0.qualifier">
 
    <description>
       %description
diff --git a/features/org.eclipse.emfforms.common.prevalidation.feature/pom.xml b/features/org.eclipse.emfforms.common.prevalidation.feature/pom.xml
index e975eee..68db194 100644
--- a/features/org.eclipse.emfforms.common.prevalidation.feature/pom.xml
+++ b/features/org.eclipse.emfforms.common.prevalidation.feature/pom.xml
@@ -5,11 +5,11 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-features-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.features/</relativePath>
   </parent>
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emfforms.common.prevalidation.feature</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-feature</packaging>
 </project>
diff --git a/features/org.eclipse.emfforms.core.bazaar.feature/feature.xml b/features/org.eclipse.emfforms.core.bazaar.feature/feature.xml
index 9d3f00f..72fc8e0 100644
--- a/features/org.eclipse.emfforms.core.bazaar.feature/feature.xml
+++ b/features/org.eclipse.emfforms.core.bazaar.feature/feature.xml
@@ -2,12 +2,12 @@
 <feature
       id="org.eclipse.emfforms.core.bazaar.feature"
       label="Bazaar Feature"
-      version="1.16.0.qualifier"
+      version="1.17.0.qualifier"
       provider-name="Eclipse Modeling Project"
       plugin="org.eclipse.emfforms.core.bazaar"
       image="eclipse_update_120.jpg"
       license-feature="org.eclipse.emf.ecp.license.feature"
-      license-feature-version="1.16.0.qualifier">
+      license-feature-version="1.17.0.qualifier">
 
    <description>
       %description
diff --git a/features/org.eclipse.emfforms.core.bazaar.feature/pom.xml b/features/org.eclipse.emfforms.core.bazaar.feature/pom.xml
index a9c2f8f..aa4011d 100644
--- a/features/org.eclipse.emfforms.core.bazaar.feature/pom.xml
+++ b/features/org.eclipse.emfforms.core.bazaar.feature/pom.xml
@@ -5,11 +5,11 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-features-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.features/</relativePath>
   </parent>
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emfforms.core.bazaar.feature</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-feature</packaging>
 </project>
diff --git a/features/org.eclipse.emfforms.datatemplate.feature/.project b/features/org.eclipse.emfforms.datatemplate.feature/.project
new file mode 100644
index 0000000..2be19c6
--- /dev/null
+++ b/features/org.eclipse.emfforms.datatemplate.feature/.project
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.emfforms.datatemplate.feature</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.pde.FeatureBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.FeatureNature</nature>
+	</natures>
+</projectDescription>
diff --git a/features/org.eclipse.emfforms.datatemplate.feature/build.properties b/features/org.eclipse.emfforms.datatemplate.feature/build.properties
new file mode 100644
index 0000000..b3a611b
--- /dev/null
+++ b/features/org.eclipse.emfforms.datatemplate.feature/build.properties
@@ -0,0 +1,2 @@
+bin.includes = feature.xml,\
+               feature.properties
diff --git a/features/org.eclipse.emfforms.datatemplate.feature/feature.properties b/features/org.eclipse.emfforms.datatemplate.feature/feature.properties
new file mode 100644
index 0000000..31ac959
--- /dev/null
+++ b/features/org.eclipse.emfforms.datatemplate.feature/feature.properties
@@ -0,0 +1,7 @@
+# Copyright (c) 2011-2018 EclipseSource Munich GmbH 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
+
+description = EMF Forms Data Templates. This feature provides a model and a service that allows to register template instances for the creation of new instances in an EReference.
diff --git a/features/org.eclipse.emfforms.datatemplate.feature/feature.xml b/features/org.eclipse.emfforms.datatemplate.feature/feature.xml
new file mode 100644
index 0000000..b354d86
--- /dev/null
+++ b/features/org.eclipse.emfforms.datatemplate.feature/feature.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<feature
+      id="org.eclipse.emfforms.datatemplate.feature"
+      label="EMF Forms Data Templates"
+      version="1.17.0.qualifier"
+      provider-name="Eclipse Modeling Project"
+      plugin="org.eclipse.emfforms.datatemplate.model"
+      license-feature="org.eclipse.emf.ecp.license.feature"
+      license-feature-version="1.17.0.qualifier">
+
+   <description>
+      %description
+   </description>
+
+   <copyright url="%copyrightURL">
+      %copyright
+   </copyright>
+
+   <license url="http://www.example.com/license">
+      [Enter License Description here.]
+   </license>
+
+   <plugin
+         id="org.eclipse.emfforms.core.services.datatemplate"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="org.eclipse.emfforms.datatemplate.model"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="org.eclipse.emfforms.datatemplate.model.edit"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+</feature>
diff --git a/features/org.eclipse.emfforms.datatemplate.feature/pom.xml b/features/org.eclipse.emfforms.datatemplate.feature/pom.xml
new file mode 100644
index 0000000..6fd910c
--- /dev/null
+++ b/features/org.eclipse.emfforms.datatemplate.feature/pom.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.eclipse.emf.ecp</groupId>
+    <artifactId>ecp-features-parent</artifactId>
+    <version>1.17.0-SNAPSHOT</version>
+    <relativePath>../../releng/org.eclipse.emf.ecp.releng.features/</relativePath>
+  </parent>
+  <groupId>org.eclipse.emf.ecp</groupId>
+  <artifactId>org.eclipse.emfforms.datatemplate.feature</artifactId>
+  <version>1.17.0-SNAPSHOT</version>
+  <packaging>eclipse-feature</packaging>
+</project>
diff --git a/features/org.eclipse.emfforms.datatemplate.ide.feature/.project b/features/org.eclipse.emfforms.datatemplate.ide.feature/.project
new file mode 100644
index 0000000..edb955b
--- /dev/null
+++ b/features/org.eclipse.emfforms.datatemplate.ide.feature/.project
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.emfforms.datatemplate.ide.feature</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.pde.FeatureBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.FeatureNature</nature>
+	</natures>
+</projectDescription>
diff --git a/features/org.eclipse.emfforms.datatemplate.ide.feature/build.properties b/features/org.eclipse.emfforms.datatemplate.ide.feature/build.properties
new file mode 100644
index 0000000..b3a611b
--- /dev/null
+++ b/features/org.eclipse.emfforms.datatemplate.ide.feature/build.properties
@@ -0,0 +1,2 @@
+bin.includes = feature.xml,\
+               feature.properties
diff --git a/features/org.eclipse.emfforms.datatemplate.ide.feature/feature.properties b/features/org.eclipse.emfforms.datatemplate.ide.feature/feature.properties
new file mode 100644
index 0000000..d4aa8a5
--- /dev/null
+++ b/features/org.eclipse.emfforms.datatemplate.ide.feature/feature.properties
@@ -0,0 +1,7 @@
+# Copyright (c) 2011-2018 EclipseSource Munich GmbH 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
+
+description = Provides a wizard that eases the creation of data templates, as well as an editor.
diff --git a/features/org.eclipse.emfforms.datatemplate.ide.feature/feature.xml b/features/org.eclipse.emfforms.datatemplate.ide.feature/feature.xml
new file mode 100644
index 0000000..bafbaa0
--- /dev/null
+++ b/features/org.eclipse.emfforms.datatemplate.ide.feature/feature.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<feature
+      id="org.eclipse.emfforms.datatemplate.ide.feature"
+      label="EMF Forms Datatemplate Feature"
+      version="1.17.0.qualifier"
+      provider-name="%providerName"
+      plugin="org.eclipse.emfforms.datatemplate.tooling"
+      license-feature="org.eclipse.emf.ecp.license.feature"
+      license-feature-version="1.17.0.qualifier">
+
+   <description>
+      %description
+   </description>
+
+   <copyright url="%copyrightURL">
+      %copyright
+   </copyright>
+
+   <license url="%licenseURL">
+      %license
+   </license>
+
+   <requires>
+      <import feature="org.eclipse.emfforms.datatemplate.feature" version="1.17.0.qualifier"/>
+   </requires>
+
+   <plugin
+         id="org.eclipse.emfforms.datatemplate.tooling"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+</feature>
diff --git a/features/org.eclipse.emfforms.datatemplate.ide.feature/pom.xml b/features/org.eclipse.emfforms.datatemplate.ide.feature/pom.xml
new file mode 100644
index 0000000..d299ed5
--- /dev/null
+++ b/features/org.eclipse.emfforms.datatemplate.ide.feature/pom.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.eclipse.emf.ecp</groupId>
+    <artifactId>ecp-features-parent</artifactId>
+    <version>1.17.0-SNAPSHOT</version>
+    <relativePath>../../releng/org.eclipse.emf.ecp.releng.features/</relativePath>
+  </parent>
+  <groupId>org.eclipse.emf.ecp</groupId>
+  <artifactId>org.eclipse.emfforms.datatemplate.ide.feature</artifactId>
+  <version>1.17.0-SNAPSHOT</version>
+  <packaging>eclipse-feature</packaging>
+</project>
diff --git a/features/org.eclipse.emfforms.editor.feature/feature.xml b/features/org.eclipse.emfforms.editor.feature/feature.xml
index 50a9f7a..dab6678 100644
--- a/features/org.eclipse.emfforms.editor.feature/feature.xml
+++ b/features/org.eclipse.emfforms.editor.feature/feature.xml
@@ -2,11 +2,11 @@
 <feature
       id="org.eclipse.emfforms.editor.feature"
       label="EMF Forms Ecore Editor"
-      version="1.16.0.qualifier"
+      version="1.17.0.qualifier"
       provider-name="%providerName"
       plugin="org.eclipse.emfforms.editor"
       license-feature="org.eclipse.emf.ecp.license.feature"
-      license-feature-version="1.16.0.qualifier">
+      license-feature-version="1.17.0.qualifier">
 
    <description>
       %description
diff --git a/features/org.eclipse.emfforms.editor.feature/pom.xml b/features/org.eclipse.emfforms.editor.feature/pom.xml
index 00d75eb..8917640 100644
--- a/features/org.eclipse.emfforms.editor.feature/pom.xml
+++ b/features/org.eclipse.emfforms.editor.feature/pom.xml
@@ -5,11 +5,11 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-features-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.features/</relativePath>
   </parent>
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emfforms.editor.feature</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-feature</packaging>
 </project>
diff --git a/features/org.eclipse.emfforms.editor.genmodel.util.feature/feature.xml b/features/org.eclipse.emfforms.editor.genmodel.util.feature/feature.xml
index 2239b14..b96f393 100644
--- a/features/org.eclipse.emfforms.editor.genmodel.util.feature/feature.xml
+++ b/features/org.eclipse.emfforms.editor.genmodel.util.feature/feature.xml
@@ -2,11 +2,11 @@
 <feature
       id="org.eclipse.emfforms.editor.genmodel.util.feature"
       label="EMF Forms GenModel Editor Util"
-      version="1.16.0.qualifier"
+      version="1.17.0.qualifier"
       provider-name="Eclipse Modeling Project"
       plugin="org.eclipse.emfforms.editor.genmodel.util"
       license-feature="org.eclipse.emf.ecp.license.feature"
-      license-feature-version="1.16.0.qualifier">
+      license-feature-version="1.17.0.qualifier">
 
    <description>
       %description
diff --git a/features/org.eclipse.emfforms.editor.genmodel.util.feature/pom.xml b/features/org.eclipse.emfforms.editor.genmodel.util.feature/pom.xml
index cc79a70..314b62f 100644
--- a/features/org.eclipse.emfforms.editor.genmodel.util.feature/pom.xml
+++ b/features/org.eclipse.emfforms.editor.genmodel.util.feature/pom.xml
@@ -5,11 +5,11 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-features-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.features/</relativePath>
   </parent>
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emfforms.editor.genmodel.util.feature</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-feature</packaging>
 </project>
diff --git a/features/org.eclipse.emfforms.rulerepository.feature/feature.xml b/features/org.eclipse.emfforms.rulerepository.feature/feature.xml
index 7ba511e..cfb4e7d 100644
--- a/features/org.eclipse.emfforms.rulerepository.feature/feature.xml
+++ b/features/org.eclipse.emfforms.rulerepository.feature/feature.xml
@@ -2,12 +2,12 @@
 <feature
       id="org.eclipse.emfforms.rulerepository.feature"
       label="EMF Forms Rule Repository Feature"
-      version="1.16.0.qualifier"
+      version="1.17.0.qualifier"
       provider-name="Eclipse Modeling Project"
       plugin="org.eclipse.emfforms.rulerepository.model"
       image="eclipse_update_120.jpg"
       license-feature="org.eclipse.emf.ecp.license.feature"
-      license-feature-version="1.16.0.qualifier">
+      license-feature-version="1.17.0.qualifier">
 
    <description>
       %description
diff --git a/features/org.eclipse.emfforms.rulerepository.feature/pom.xml b/features/org.eclipse.emfforms.rulerepository.feature/pom.xml
index 85100b0..e698ffb 100644
--- a/features/org.eclipse.emfforms.rulerepository.feature/pom.xml
+++ b/features/org.eclipse.emfforms.rulerepository.feature/pom.xml
@@ -5,11 +5,11 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-features-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.features/</relativePath>
   </parent>
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emfforms.rulerepository.feature</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-feature</packaging>
 </project>
diff --git a/features/org.eclipse.emfforms.swt.control.multiattribute.feature/feature.xml b/features/org.eclipse.emfforms.swt.control.multiattribute.feature/feature.xml
index 44d4a58..8408f89 100644
--- a/features/org.eclipse.emfforms.swt.control.multiattribute.feature/feature.xml
+++ b/features/org.eclipse.emfforms.swt.control.multiattribute.feature/feature.xml
@@ -2,11 +2,11 @@
 <feature
       id="org.eclipse.emfforms.swt.control.multiattribute.feature"
       label="EMF Forms SWT Control for Multi EAttribtues"
-      version="1.16.0.qualifier"
+      version="1.17.0.qualifier"
       provider-name="%providerName"
       plugin="org.eclipse.emfforms.swt.control.multiattribute"
       license-feature="org.eclipse.emf.ecp.license.feature"
-      license-feature-version="1.16.0.qualifier">
+      license-feature-version="1.17.0.qualifier">
 
    <description>
       %description
diff --git a/features/org.eclipse.emfforms.swt.control.multiattribute.feature/pom.xml b/features/org.eclipse.emfforms.swt.control.multiattribute.feature/pom.xml
index fdcfa42..d13734d 100644
--- a/features/org.eclipse.emfforms.swt.control.multiattribute.feature/pom.xml
+++ b/features/org.eclipse.emfforms.swt.control.multiattribute.feature/pom.xml
@@ -5,11 +5,11 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-features-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.features/</relativePath>
   </parent>
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emfforms.swt.control.multiattribute.feature</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-feature</packaging>
 </project>
diff --git a/features/org.eclipse.emfforms.swt.control.text.autocomplete.feature/feature.xml b/features/org.eclipse.emfforms.swt.control.text.autocomplete.feature/feature.xml
index b7854a0..087c87a 100644
--- a/features/org.eclipse.emfforms.swt.control.text.autocomplete.feature/feature.xml
+++ b/features/org.eclipse.emfforms.swt.control.text.autocomplete.feature/feature.xml
@@ -2,11 +2,11 @@
 <feature
       id="org.eclipse.emfforms.swt.control.text.autocomplete.feature"
       label="EMF Forms SWT Text Control with Autocomplete Feature"
-      version="1.16.0.qualifier"
+      version="1.17.0.qualifier"
       provider-name="Eclipse Modeling Project"
       plugin="org.eclipse.emfforms.swt.control.text.autocomplete"
       license-feature="org.eclipse.emf.ecp.license.feature"
-      license-feature-version="1.16.0.qualifier">
+      license-feature-version="1.17.0.qualifier">
 
    <description>
       %description
diff --git a/features/org.eclipse.emfforms.swt.control.text.autocomplete.feature/pom.xml b/features/org.eclipse.emfforms.swt.control.text.autocomplete.feature/pom.xml
index a9b7363..ef1860b 100644
--- a/features/org.eclipse.emfforms.swt.control.text.autocomplete.feature/pom.xml
+++ b/features/org.eclipse.emfforms.swt.control.text.autocomplete.feature/pom.xml
@@ -5,11 +5,11 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-features-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.features/</relativePath>
   </parent>
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emfforms.swt.control.text.autocomplete.feature</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-feature</packaging>
 </project>
diff --git a/features/org.eclipse.emfforms.swt.control.text.richtext.feature/feature.xml b/features/org.eclipse.emfforms.swt.control.text.richtext.feature/feature.xml
index 5d8f16c..e0d3b2c 100644
--- a/features/org.eclipse.emfforms.swt.control.text.richtext.feature/feature.xml
+++ b/features/org.eclipse.emfforms.swt.control.text.richtext.feature/feature.xml
@@ -2,11 +2,11 @@
 <feature
       id="org.eclipse.emfforms.swt.control.text.richtext.feature"
       label="EMF Forms Rich Text Feature"
-      version="1.16.0.qualifier"
+      version="1.17.0.qualifier"
       provider-name="Eclipse Modeling Project"
       plugin="org.eclipse.emfforms.swt.control.text.richtext"
       license-feature="org.eclipse.emf.ecp.license.feature"
-      license-feature-version="1.16.0.qualifier">
+      license-feature-version="1.17.0.qualifier">
 
    <description>
       %description
diff --git a/features/org.eclipse.emfforms.swt.control.text.richtext.feature/pom.xml b/features/org.eclipse.emfforms.swt.control.text.richtext.feature/pom.xml
index bee9a8b..96bd115 100644
--- a/features/org.eclipse.emfforms.swt.control.text.richtext.feature/pom.xml
+++ b/features/org.eclipse.emfforms.swt.control.text.richtext.feature/pom.xml
@@ -5,11 +5,11 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-features-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.features/</relativePath>
   </parent>
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emfforms.swt.control.text.richtext.feature</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-feature</packaging>
 </project>
diff --git a/features/org.eclipse.emfforms.swt.controlgrid.feature/feature.xml b/features/org.eclipse.emfforms.swt.controlgrid.feature/feature.xml
index e640deb..6671fc2 100644
--- a/features/org.eclipse.emfforms.swt.controlgrid.feature/feature.xml
+++ b/features/org.eclipse.emfforms.swt.controlgrid.feature/feature.xml
@@ -2,11 +2,11 @@
 <feature
       id="org.eclipse.emfforms.swt.controlgrid.feature"
       label="EMF Forms Control Grid SWT Feature (Experimental)"
-      version="1.16.0.qualifier"
+      version="1.17.0.qualifier"
       provider-name="Eclipse Modeling Project"
       plugin="org.eclipse.emfforms.view.controlgrid.model"
       license-feature="org.eclipse.emf.ecp.license.feature"
-      license-feature-version="1.16.0.qualifier">
+      license-feature-version="1.17.0.qualifier">
 
    <description>
       %description
diff --git a/features/org.eclipse.emfforms.swt.controlgrid.feature/pom.xml b/features/org.eclipse.emfforms.swt.controlgrid.feature/pom.xml
index f26a631..da46835 100644
--- a/features/org.eclipse.emfforms.swt.controlgrid.feature/pom.xml
+++ b/features/org.eclipse.emfforms.swt.controlgrid.feature/pom.xml
@@ -5,11 +5,11 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-features-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.features/</relativePath>
   </parent>
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emfforms.swt.controlgrid.feature</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-feature</packaging>
 </project>
diff --git a/features/org.eclipse.emfforms.view.annotation.feature/feature.xml b/features/org.eclipse.emfforms.view.annotation.feature/feature.xml
index df0d426..bb3998e 100644
--- a/features/org.eclipse.emfforms.view.annotation.feature/feature.xml
+++ b/features/org.eclipse.emfforms.view.annotation.feature/feature.xml
@@ -2,11 +2,11 @@
 <feature
       id="org.eclipse.emfforms.view.annotation.feature"
       label="EMF Forms Annotation View Model Feature"
-      version="1.16.0.qualifier"
+      version="1.17.0.qualifier"
       provider-name="Eclipse Modeling Project"
       plugin="org.eclipse.emfforms.view.annotation.model"
       license-feature="org.eclipse.emf.ecp.license.feature"
-      license-feature-version="1.16.0.qualifier">
+      license-feature-version="1.17.0.qualifier">
 
    <description>
       %description
@@ -34,4 +34,18 @@
          version="0.0.0"
          unpack="false"/>
 
+   <plugin
+         id="org.eclipse.emf.ecp.view.template.annotation.model"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="org.eclipse.emf.ecp.view.template.annotation.model.edit"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
 </feature>
diff --git a/features/org.eclipse.emfforms.view.annotation.feature/pom.xml b/features/org.eclipse.emfforms.view.annotation.feature/pom.xml
index f8aaaf5..247563b 100644
--- a/features/org.eclipse.emfforms.view.annotation.feature/pom.xml
+++ b/features/org.eclipse.emfforms.view.annotation.feature/pom.xml
@@ -5,11 +5,11 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-features-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.features/</relativePath>
   </parent>
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emfforms.view.annotation.feature</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-feature</packaging>
 </project>
diff --git a/features/spreadsheet/org.eclipse.emfforms.spreadsheet.feature/feature.xml b/features/spreadsheet/org.eclipse.emfforms.spreadsheet.feature/feature.xml
index 42bfeff..8a2a36f 100644
--- a/features/spreadsheet/org.eclipse.emfforms.spreadsheet.feature/feature.xml
+++ b/features/spreadsheet/org.eclipse.emfforms.spreadsheet.feature/feature.xml
@@ -7,7 +7,7 @@
       plugin="org.eclipse.emfforms.spreadsheet.core"
       image="eclipse_update_120.jpg"
       license-feature="org.eclipse.emf.ecp.license.feature"
-      license-feature-version="1.16.0.qualifier">
+      license-feature-version="1.17.0.qualifier">
 
    <description>
       %description
diff --git a/i18n/org.eclipse.emf.ecp.core.nl_de/.project b/i18n/org.eclipse.emf.ecp.core.nl_de/.project
new file mode 100644
index 0000000..15b7f34
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.core.nl_de/.project
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.emf.ecp.core.nl_de</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.sonar.ide.eclipse.core.sonarNature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+	</natures>
+</projectDescription>
diff --git a/i18n/org.eclipse.emf.ecp.core.nl_de/META-INF/MANIFEST.MF b/i18n/org.eclipse.emf.ecp.core.nl_de/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..d2d98c7
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.core.nl_de/META-INF/MANIFEST.MF
@@ -0,0 +1,7 @@
+Manifest-Version: 1.0
+Bundle-Name: org.eclipse.emf.ecp.core German NLS Support
+Bundle-SymbolicName: org.eclipse.emf.ecp.core.nl_de ;singleton:=true
+Bundle-Version: 1.17.0.qualifier
+Bundle-Vendor: Eclipse Modeling Project
+Fragment-Host: org.eclipse.emf.ecp.core;bundle-version="[1.17.0,1.18.0)"
+Bundle-ManifestVersion: 2
diff --git a/i18n/org.eclipse.emf.ecp.core.nl_de/about.html b/i18n/org.eclipse.emf.ecp.core.nl_de/about.html
new file mode 100644
index 0000000..c80c773
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.core.nl_de/about.html
@@ -0,0 +1,22 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
+<html>
+<head>
+<title>About</title>
+<meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+ 
+<p>January 22, 2008</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.</p>
+
+</body>
+</html>
diff --git a/i18n/org.eclipse.emf.ecp.core.nl_de/about_de.properties b/i18n/org.eclipse.emf.ecp.core.nl_de/about_de.properties
new file mode 100644
index 0000000..1c84278
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.core.nl_de/about_de.properties
@@ -0,0 +1,2 @@
+# Copyright by many contributors; see http://babel.eclipse.org/
+featureName=ECP EMF Client Platform
\ No newline at end of file
diff --git a/i18n/org.eclipse.emf.ecp.core.nl_de/build.properties b/i18n/org.eclipse.emf.ecp.core.nl_de/build.properties
new file mode 100644
index 0000000..b9a3396
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.core.nl_de/build.properties
@@ -0,0 +1,4 @@
+bin.includes = META-INF/,\
+               about_de.properties,\
+               about.html
+
diff --git a/i18n/org.eclipse.emf.ecp.core.nl_de/pom.xml b/i18n/org.eclipse.emf.ecp.core.nl_de/pom.xml
new file mode 100644
index 0000000..61265d0
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.core.nl_de/pom.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.eclipse.emf.ecp</groupId>
+    <artifactId>ecp-i18n-parent</artifactId>
+    <version>1.17.0-SNAPSHOT</version>
+    <relativePath>../../releng/org.eclipse.emf.ecp.releng.i18n/</relativePath>
+  </parent>
+  <groupId>org.eclipse.emf.ecp</groupId>
+  <artifactId>org.eclipse.emf.ecp.core.nl_de</artifactId>
+  <version>1.17.0-SNAPSHOT</version>
+  <packaging>eclipse-plugin</packaging>
+</project>
diff --git a/i18n/org.eclipse.emf.ecp.diffmerge.model.edit.nl_de/.project b/i18n/org.eclipse.emf.ecp.diffmerge.model.edit.nl_de/.project
new file mode 100644
index 0000000..b6a92ba
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.diffmerge.model.edit.nl_de/.project
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.emf.ecp.diffmerge.model.edit.nl_de</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.sonar.ide.eclipse.core.sonarNature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+	</natures>
+</projectDescription>
diff --git a/i18n/org.eclipse.emf.ecp.diffmerge.model.edit.nl_de/META-INF/MANIFEST.MF b/i18n/org.eclipse.emf.ecp.diffmerge.model.edit.nl_de/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..985f13b
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.diffmerge.model.edit.nl_de/META-INF/MANIFEST.MF
@@ -0,0 +1,7 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.emf.ecp.diffmerge.model.edit German NLS Support
+Bundle-SymbolicName: org.eclipse.emf.ecp.diffmerge.model.edit.nl_de;singleton:=true
+Bundle-Version: 1.17.0.qualifier
+Bundle-Vendor: Eclipse Modeling Project
+Fragment-Host: org.eclipse.emf.ecp.diffmerge.model.edit
diff --git a/i18n/org.eclipse.emf.ecp.diffmerge.model.edit.nl_de/about.html b/i18n/org.eclipse.emf.ecp.diffmerge.model.edit.nl_de/about.html
new file mode 100644
index 0000000..c80c773
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.diffmerge.model.edit.nl_de/about.html
@@ -0,0 +1,22 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
+<html>
+<head>
+<title>About</title>
+<meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+ 
+<p>January 22, 2008</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.</p>
+
+</body>
+</html>
diff --git a/i18n/org.eclipse.emf.ecp.diffmerge.model.edit.nl_de/build.properties b/i18n/org.eclipse.emf.ecp.diffmerge.model.edit.nl_de/build.properties
new file mode 100644
index 0000000..fff72c7
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.diffmerge.model.edit.nl_de/build.properties
@@ -0,0 +1,4 @@
+bin.includes = META-INF/,\
+               about.html,\
+               plugin_de.properties
+
diff --git a/i18n/org.eclipse.emf.ecp.diffmerge.model.edit.nl_de/plugin_de.properties b/i18n/org.eclipse.emf.ecp.diffmerge.model.edit.nl_de/plugin_de.properties
new file mode 100644
index 0000000..6a673c0
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.diffmerge.model.edit.nl_de/plugin_de.properties
@@ -0,0 +1,13 @@
+# Copyright by many contributors; see http://babel.eclipse.org/
+providerName=Eclipse-Modeling-Projekt
+_UI_CreateChild_text={0}
+_UI_CreateChild_text2={1} {0}
+_UI_CreateChild_text3={1}
+_UI_CreateChild_tooltip=Neues Element {0} unter dem Feature {1} erstellen
+_UI_CreateChild_description=Ein neues untergeordnetes Element des Typs {0} f\u00fcr das Feature {1} des ausgew\u00e4hlten Elements {2} erstellen.
+_UI_CreateSibling_description=Ein neues gleichgeordnetes Element des Typs {0} f\u00fcr das ausgew\u00e4hlte Element {2} unter dem Feature {1} des entsprechenden \u00fcbergeordneten Elements erstellen.
+_UI_PropertyDescriptor_description={0} von {1}
+_UI_Unknown_type=Objekt
+_UI_Unknown_datatype=Wert
+_UI_Unknown_feature=Unspezifiziert
+_UI_DiffAttachment_text={0}^/{1}
\ No newline at end of file
diff --git a/i18n/org.eclipse.emf.ecp.diffmerge.model.edit.nl_de/pom.xml b/i18n/org.eclipse.emf.ecp.diffmerge.model.edit.nl_de/pom.xml
new file mode 100644
index 0000000..737d6b9
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.diffmerge.model.edit.nl_de/pom.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.eclipse.emf.ecp</groupId>
+    <artifactId>ecp-i18n-parent</artifactId>
+    <version>1.17.0-SNAPSHOT</version>
+    <relativePath>../../releng/org.eclipse.emf.ecp.releng.i18n/</relativePath>
+  </parent>
+  <groupId>org.eclipse.emf.ecp</groupId>
+  <artifactId>org.eclipse.emf.ecp.diffmerge.model.edit.nl_de</artifactId>
+  <version>1.17.0-SNAPSHOT</version>
+  <packaging>eclipse-plugin</packaging>
+</project>
diff --git a/i18n/org.eclipse.emf.ecp.diffmerge.swt.nl_de/.project b/i18n/org.eclipse.emf.ecp.diffmerge.swt.nl_de/.project
new file mode 100644
index 0000000..7ad8622
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.diffmerge.swt.nl_de/.project
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.emf.ecp.diffmerge.swt.nl_de</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.sonar.ide.eclipse.core.sonarNature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+	</natures>
+</projectDescription>
diff --git a/i18n/org.eclipse.emf.ecp.diffmerge.swt.nl_de/META-INF/MANIFEST.MF b/i18n/org.eclipse.emf.ecp.diffmerge.swt.nl_de/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..b290110
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.diffmerge.swt.nl_de/META-INF/MANIFEST.MF
@@ -0,0 +1,7 @@
+Manifest-Version: 1.0
+Bundle-Name: org.eclipse.emf.ecp.diffmerge.swt German NLS Support
+Bundle-SymbolicName: org.eclipse.emf.ecp.diffmerge.swt.nl_de ;singleton:=true
+Bundle-Version: 1.17.0.qualifier
+Bundle-Vendor: Eclipse Modeling Project
+Fragment-Host: org.eclipse.emf.ecp.diffmerge.swt;bundle-version="[1.17.0,1.18.0)"
+Bundle-ManifestVersion: 2
diff --git a/i18n/org.eclipse.emf.ecp.diffmerge.swt.nl_de/OSGI-INF/l10n/bundle_de.properties b/i18n/org.eclipse.emf.ecp.diffmerge.swt.nl_de/OSGI-INF/l10n/bundle_de.properties
new file mode 100644
index 0000000..b56632a
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.diffmerge.swt.nl_de/OSGI-INF/l10n/bundle_de.properties
@@ -0,0 +1,7 @@
+# Copyright by many contributors; see http://babel.eclipse.org/
+DiffDialog_Confirm=Best\u00e4tigen
+DiffDialog_DifferenceGroup=Differenz
+DiffDialog_targetObject=Ziel
+DiffDialog_Next=N\u00e4chste
+DiffDialog_Previous=Vorherige
+DiffDialog_rightObject=Rechts
\ No newline at end of file
diff --git a/i18n/org.eclipse.emf.ecp.diffmerge.swt.nl_de/about.html b/i18n/org.eclipse.emf.ecp.diffmerge.swt.nl_de/about.html
new file mode 100644
index 0000000..c80c773
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.diffmerge.swt.nl_de/about.html
@@ -0,0 +1,22 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
+<html>
+<head>
+<title>About</title>
+<meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+ 
+<p>January 22, 2008</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.</p>
+
+</body>
+</html>
diff --git a/i18n/org.eclipse.emf.ecp.diffmerge.swt.nl_de/build.properties b/i18n/org.eclipse.emf.ecp.diffmerge.swt.nl_de/build.properties
new file mode 100644
index 0000000..b27c0c2
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.diffmerge.swt.nl_de/build.properties
@@ -0,0 +1,4 @@
+bin.includes = META-INF/,\
+               about.html,\
+               OSGI-INF/
+
diff --git a/i18n/org.eclipse.emf.ecp.diffmerge.swt.nl_de/pom.xml b/i18n/org.eclipse.emf.ecp.diffmerge.swt.nl_de/pom.xml
new file mode 100644
index 0000000..8f842b2
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.diffmerge.swt.nl_de/pom.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.eclipse.emf.ecp</groupId>
+    <artifactId>ecp-i18n-parent</artifactId>
+    <version>1.17.0-SNAPSHOT</version>
+    <relativePath>../../releng/org.eclipse.emf.ecp.releng.i18n/</relativePath>
+  </parent>
+  <groupId>org.eclipse.emf.ecp</groupId>
+  <artifactId>org.eclipse.emf.ecp.diffmerge.swt.nl_de</artifactId>
+  <version>1.17.0-SNAPSHOT</version>
+  <packaging>eclipse-plugin</packaging>
+</project>
diff --git a/i18n/org.eclipse.emf.ecp.edit.nl_de/.project b/i18n/org.eclipse.emf.ecp.edit.nl_de/.project
new file mode 100644
index 0000000..17ba164
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.edit.nl_de/.project
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.emf.ecp.edit.nl_de</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.sonar.ide.eclipse.core.sonarNature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+	</natures>
+</projectDescription>
diff --git a/i18n/org.eclipse.emf.ecp.edit.nl_de/META-INF/MANIFEST.MF b/i18n/org.eclipse.emf.ecp.edit.nl_de/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..6f79eb4
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.edit.nl_de/META-INF/MANIFEST.MF
@@ -0,0 +1,7 @@
+Manifest-Version: 1.0
+Bundle-Name: org.eclipse.emf.ecp.edit German NLS Support
+Bundle-SymbolicName: org.eclipse.emf.ecp.edit.nl_de ;singleton:=true
+Bundle-Version: 1.17.0.qualifier
+Bundle-Vendor: Eclipse Modeling Project
+Fragment-Host: org.eclipse.emf.ecp.edit;bundle-version="[1.17.0,1.18.0)"
+Bundle-ManifestVersion: 2
diff --git a/i18n/org.eclipse.emf.ecp.edit.nl_de/OSGI-INF/l10n/bundle_de.properties b/i18n/org.eclipse.emf.ecp.edit.nl_de/OSGI-INF/l10n/bundle_de.properties
new file mode 100644
index 0000000..1d73fc5
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.edit.nl_de/OSGI-INF/l10n/bundle_de.properties
@@ -0,0 +1,2 @@
+# Copyright by many contributors; see http://babel.eclipse.org/
+Bundle-Vendor=Eclipse-Modeling-Projekt
\ No newline at end of file
diff --git a/i18n/org.eclipse.emf.ecp.edit.nl_de/about.html b/i18n/org.eclipse.emf.ecp.edit.nl_de/about.html
new file mode 100644
index 0000000..c80c773
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.edit.nl_de/about.html
@@ -0,0 +1,22 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
+<html>
+<head>
+<title>About</title>
+<meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+ 
+<p>January 22, 2008</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.</p>
+
+</body>
+</html>
diff --git a/i18n/org.eclipse.emf.ecp.edit.nl_de/build.properties b/i18n/org.eclipse.emf.ecp.edit.nl_de/build.properties
new file mode 100644
index 0000000..f40cd67
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.edit.nl_de/build.properties
@@ -0,0 +1,4 @@
+bin.includes = META-INF/,\
+               OSGI-INF/,\
+               about.html
+
diff --git a/i18n/org.eclipse.emf.ecp.edit.nl_de/pom.xml b/i18n/org.eclipse.emf.ecp.edit.nl_de/pom.xml
new file mode 100644
index 0000000..252be53
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.edit.nl_de/pom.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.eclipse.emf.ecp</groupId>
+    <artifactId>ecp-i18n-parent</artifactId>
+    <version>1.17.0-SNAPSHOT</version>
+    <relativePath>../../releng/org.eclipse.emf.ecp.releng.i18n/</relativePath>
+  </parent>
+  <groupId>org.eclipse.emf.ecp</groupId>
+  <artifactId>org.eclipse.emf.ecp.edit.nl_de</artifactId>
+  <version>1.17.0-SNAPSHOT</version>
+  <packaging>eclipse-plugin</packaging>
+</project>
diff --git a/i18n/org.eclipse.emf.ecp.edit.swt.nl_de/.project b/i18n/org.eclipse.emf.ecp.edit.swt.nl_de/.project
new file mode 100644
index 0000000..a6bb998
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.edit.swt.nl_de/.project
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.emf.ecp.edit.swt.nl_de</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.sonar.ide.eclipse.core.sonarNature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+	</natures>
+</projectDescription>
diff --git a/i18n/org.eclipse.emf.ecp.edit.swt.nl_de/META-INF/MANIFEST.MF b/i18n/org.eclipse.emf.ecp.edit.swt.nl_de/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..6f08120
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.edit.swt.nl_de/META-INF/MANIFEST.MF
@@ -0,0 +1,7 @@
+Manifest-Version: 1.0
+Bundle-Name: org.eclipse.emf.ecp.edit.swt German NLS Support
+Bundle-SymbolicName: org.eclipse.emf.ecp.edit.swt.nl_de ;singleton:=true
+Bundle-Version: 1.17.0.qualifier
+Bundle-Vendor: Eclipse Modeling Project
+Fragment-Host: org.eclipse.emf.ecp.edit.swt;bundle-version="[1.17.0,1.18.0)"
+Bundle-ManifestVersion: 2
diff --git a/i18n/org.eclipse.emf.ecp.edit.swt.nl_de/OSGI-INF/l10n/bundle_de.properties b/i18n/org.eclipse.emf.ecp.edit.swt.nl_de/OSGI-INF/l10n/bundle_de.properties
new file mode 100644
index 0000000..19c3f88
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.edit.swt.nl_de/OSGI-INF/l10n/bundle_de.properties
@@ -0,0 +1,15 @@
+# Copyright by many contributors; see http://babel.eclipse.org/
+#attribute action messages
+AddAttributeAction_AddEntry=Eintrag hinzuf\u00fcgen
+
+AbstractTextControl_Unset=<nicht gesetzt>
+
+#reference messages
+DeleteReferenceAction_Confirmation=Best\u00e4tigung
+DeleteReferenceAction_Yes=Ja
+DeleteReferenceAction_No=Nein
+DeleteReferenceAction_Questionmark=?
+
+#unused
+#SWTControl_Help=Hilfe
+#AbstractTextControl_InvalidInput=Ung\u00fcltige Eingabe (input)
\ No newline at end of file
diff --git a/i18n/org.eclipse.emf.ecp.edit.swt.nl_de/about.html b/i18n/org.eclipse.emf.ecp.edit.swt.nl_de/about.html
new file mode 100644
index 0000000..c80c773
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.edit.swt.nl_de/about.html
@@ -0,0 +1,22 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
+<html>
+<head>
+<title>About</title>
+<meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+ 
+<p>January 22, 2008</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.</p>
+
+</body>
+</html>
diff --git a/i18n/org.eclipse.emf.ecp.edit.swt.nl_de/build.properties b/i18n/org.eclipse.emf.ecp.edit.swt.nl_de/build.properties
new file mode 100644
index 0000000..0475d46
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.edit.swt.nl_de/build.properties
@@ -0,0 +1,3 @@
+bin.includes = META-INF/,\
+               OSGI-INF/,\
+               about.html
diff --git a/i18n/org.eclipse.emf.ecp.edit.swt.nl_de/pom.xml b/i18n/org.eclipse.emf.ecp.edit.swt.nl_de/pom.xml
new file mode 100644
index 0000000..da2481b
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.edit.swt.nl_de/pom.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.eclipse.emf.ecp</groupId>
+    <artifactId>ecp-i18n-parent</artifactId>
+    <version>1.17.0-SNAPSHOT</version>
+    <relativePath>../../releng/org.eclipse.emf.ecp.releng.i18n/</relativePath>
+  </parent>
+  <groupId>org.eclipse.emf.ecp</groupId>
+  <artifactId>org.eclipse.emf.ecp.edit.swt.nl_de</artifactId>
+  <version>1.17.0-SNAPSHOT</version>
+  <packaging>eclipse-plugin</packaging>
+</project>
diff --git a/i18n/org.eclipse.emf.ecp.ide.editor.view.nl_de/.project b/i18n/org.eclipse.emf.ecp.ide.editor.view.nl_de/.project
new file mode 100644
index 0000000..7bc451e
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.ide.editor.view.nl_de/.project
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.emf.ecp.ide.editor.view.nl_de</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.sonar.ide.eclipse.core.sonarNature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+	</natures>
+</projectDescription>
diff --git a/i18n/org.eclipse.emf.ecp.ide.editor.view.nl_de/META-INF/MANIFEST.MF b/i18n/org.eclipse.emf.ecp.ide.editor.view.nl_de/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..a4e74c9
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.ide.editor.view.nl_de/META-INF/MANIFEST.MF
@@ -0,0 +1,7 @@
+Manifest-Version: 1.0
+Bundle-Name: org.eclipse.emf.ecp.ide.editor.view German NLS Support
+Bundle-SymbolicName: org.eclipse.emf.ecp.ide.editor.view.nl_de ;singleton:=true
+Bundle-Version: 1.17.0.qualifier
+Bundle-Vendor: Eclipse Modeling Project
+Fragment-Host: org.eclipse.emf.ecp.ide.editor.view;bundle-version="[1.17.0,1.18.0)"
+Bundle-ManifestVersion: 2
diff --git a/i18n/org.eclipse.emf.ecp.ide.editor.view.nl_de/about.html b/i18n/org.eclipse.emf.ecp.ide.editor.view.nl_de/about.html
new file mode 100644
index 0000000..c80c773
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.ide.editor.view.nl_de/about.html
@@ -0,0 +1,22 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
+<html>
+<head>
+<title>About</title>
+<meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+ 
+<p>January 22, 2008</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.</p>
+
+</body>
+</html>
diff --git a/i18n/org.eclipse.emf.ecp.ide.editor.view.nl_de/build.properties b/i18n/org.eclipse.emf.ecp.ide.editor.view.nl_de/build.properties
new file mode 100644
index 0000000..19b5179
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.ide.editor.view.nl_de/build.properties
@@ -0,0 +1,3 @@
+bin.includes = META-INF/,\
+               about.html
+
diff --git a/i18n/org.eclipse.emf.ecp.ide.editor.view.nl_de/pom.xml b/i18n/org.eclipse.emf.ecp.ide.editor.view.nl_de/pom.xml
new file mode 100644
index 0000000..b7fab3a
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.ide.editor.view.nl_de/pom.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.eclipse.emf.ecp</groupId>
+    <artifactId>ecp-i18n-parent</artifactId>
+    <version>1.17.0-SNAPSHOT</version>
+    <relativePath>../../releng/org.eclipse.emf.ecp.releng.i18n/</relativePath>
+  </parent>
+  <groupId>org.eclipse.emf.ecp</groupId>
+  <artifactId>org.eclipse.emf.ecp.ide.editor.view.nl_de</artifactId>
+  <version>1.17.0-SNAPSHOT</version>
+  <packaging>eclipse-plugin</packaging>
+</project>
diff --git a/i18n/org.eclipse.emf.ecp.makeithappen.model.edit.nl_de/.project b/i18n/org.eclipse.emf.ecp.makeithappen.model.edit.nl_de/.project
new file mode 100644
index 0000000..46861e4
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.makeithappen.model.edit.nl_de/.project
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.emf.ecp.makeithappen.model.edit.nl_de</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.sonar.ide.eclipse.core.sonarNature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+	</natures>
+</projectDescription>
diff --git a/i18n/org.eclipse.emf.ecp.makeithappen.model.edit.nl_de/META-INF/MANIFEST.MF b/i18n/org.eclipse.emf.ecp.makeithappen.model.edit.nl_de/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..58f1d9f
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.makeithappen.model.edit.nl_de/META-INF/MANIFEST.MF
@@ -0,0 +1,7 @@
+Manifest-Version: 1.0
+Bundle-Name: org.eclipse.emf.ecp.makeithappen.model.edit German NLS Support
+Bundle-SymbolicName: org.eclipse.emf.ecp.makeithappen.model.edit.nl_de ;singleton:=true
+Bundle-Version: 1.17.0.qualifier
+Bundle-Vendor: Eclipse Modeling Project
+Fragment-Host: org.eclipse.emf.ecp.makeithappen.model.edit;bundle-version="[1.17.0,1.18.0)"
+Bundle-ManifestVersion: 2
diff --git a/i18n/org.eclipse.emf.ecp.makeithappen.model.edit.nl_de/about.html b/i18n/org.eclipse.emf.ecp.makeithappen.model.edit.nl_de/about.html
new file mode 100644
index 0000000..c80c773
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.makeithappen.model.edit.nl_de/about.html
@@ -0,0 +1,22 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
+<html>
+<head>
+<title>About</title>
+<meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+ 
+<p>January 22, 2008</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.</p>
+
+</body>
+</html>
diff --git a/i18n/org.eclipse.emf.ecp.makeithappen.model.edit.nl_de/build.properties b/i18n/org.eclipse.emf.ecp.makeithappen.model.edit.nl_de/build.properties
new file mode 100644
index 0000000..ac48882
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.makeithappen.model.edit.nl_de/build.properties
@@ -0,0 +1,3 @@
+bin.includes = META-INF/,\
+               plugin_de.properties
+
diff --git a/i18n/org.eclipse.emf.ecp.makeithappen.model.edit.nl_de/plugin_de.properties b/i18n/org.eclipse.emf.ecp.makeithappen.model.edit.nl_de/plugin_de.properties
new file mode 100644
index 0000000..bc0ecd4
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.makeithappen.model.edit.nl_de/plugin_de.properties
@@ -0,0 +1,31 @@
+# Copyright by many contributors; see http://babel.eclipse.org/
+_UI_CreateChild_text={0}
+_UI_CreateChild_text2={1} {0}
+_UI_CreateChild_text3={1}
+_UI_CreateChild_tooltip=Neues Element {0} unter dem Feature {1} erstellen
+_UI_CreateChild_description=Ein neues untergeordnetes Element des Typs {0} f\u00fcr das Feature {1} des ausgew\u00e4hlten Elements {2} erstellen.
+_UI_CreateSibling_description=Ein neues gleichgeordnetes Element des Typs {0} f\u00fcr das ausgew\u00e4hlte Element {2} unter dem Feature {1} des entsprechenden \u00fcbergeordneten Elements erstellen.
+_UI_PropertyDescriptor_description={0} von {1}
+_UI_Task_type=Aufgabe
+_UI_User_type=Benutzer
+_UI_Unknown_type=Objekt
+_UI_Unknown_datatype=Wert
+_UI_Task_name_feature=Name:
+_UI_Task_description_feature=Beschreibung
+_UI_Task_dueDate_feature=F\u00e4lligkeitstag
+_UI_User_firstName_feature=Vorname
+_UI_User_lastName_feature=Nachname
+_UI_User_tasks_feature=Aufgaben
+_UI_UserGroup_name_feature=Name:
+_UI_UserGroup_users_feature=Benutzer
+_UI_Unknown_feature=Unspezifiziert
+_UI_Task_done_feature=Fertig
+_UI_User_active_feature=Aktiv
+_UI_User_weight_feature=Gewichtung
+_UI_Nationality_German_literal=Deutsch
+_UI_Nationality_French_literal=Franz\u00f6sisch
+_UI_Nationality_US_literal=US
+_UI_Nationality_Spanish_literal=Spanisch
+_UI_Nationality_Italian_literal=Italienisch
+_UI_Nationality_Russian_literal=Russisch
+_UI_User_email_feature=E-Mail
\ No newline at end of file
diff --git a/i18n/org.eclipse.emf.ecp.makeithappen.model.edit.nl_de/pom.xml b/i18n/org.eclipse.emf.ecp.makeithappen.model.edit.nl_de/pom.xml
new file mode 100644
index 0000000..c832503
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.makeithappen.model.edit.nl_de/pom.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.eclipse.emf.ecp</groupId>
+    <artifactId>ecp-i18n-parent</artifactId>
+    <version>1.17.0-SNAPSHOT</version>
+    <relativePath>../../releng/org.eclipse.emf.ecp.releng.i18n/</relativePath>
+  </parent>
+  <groupId>org.eclipse.emf.ecp</groupId>
+  <artifactId>org.eclipse.emf.ecp.makeithappen.model.edit.nl_de</artifactId>
+  <version>1.17.0-SNAPSHOT</version>
+  <packaging>eclipse-plugin</packaging>
+</project>
diff --git a/i18n/org.eclipse.emf.ecp.makeithappen.wizards.nl_de/.project b/i18n/org.eclipse.emf.ecp.makeithappen.wizards.nl_de/.project
new file mode 100644
index 0000000..02efce8
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.makeithappen.wizards.nl_de/.project
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.emf.ecp.makeithappen.wizards.nl_de</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.sonar.ide.eclipse.core.sonarNature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+	</natures>
+</projectDescription>
diff --git a/i18n/org.eclipse.emf.ecp.makeithappen.wizards.nl_de/META-INF/MANIFEST.MF b/i18n/org.eclipse.emf.ecp.makeithappen.wizards.nl_de/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..8537205
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.makeithappen.wizards.nl_de/META-INF/MANIFEST.MF
@@ -0,0 +1,7 @@
+Manifest-Version: 1.0
+Bundle-Name: org.eclipse.emf.ecp.makeithappen.wizards German NLS Support
+Bundle-SymbolicName: org.eclipse.emf.ecp.makeithappen.wizards.nl_de ;singleton:=true
+Bundle-Version: 1.17.0.qualifier
+Bundle-Vendor: Eclipse Modeling Project
+Fragment-Host: org.eclipse.emf.ecp.makeithappen.wizards;bundle-version="[1.17.0,1.18.0)"
+Bundle-ManifestVersion: 2
diff --git a/i18n/org.eclipse.emf.ecp.makeithappen.wizards.nl_de/about.html b/i18n/org.eclipse.emf.ecp.makeithappen.wizards.nl_de/about.html
new file mode 100644
index 0000000..c80c773
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.makeithappen.wizards.nl_de/about.html
@@ -0,0 +1,22 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
+<html>
+<head>
+<title>About</title>
+<meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+ 
+<p>January 22, 2008</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.</p>
+
+</body>
+</html>
diff --git a/i18n/org.eclipse.emf.ecp.makeithappen.wizards.nl_de/build.properties b/i18n/org.eclipse.emf.ecp.makeithappen.wizards.nl_de/build.properties
new file mode 100644
index 0000000..ac48882
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.makeithappen.wizards.nl_de/build.properties
@@ -0,0 +1,3 @@
+bin.includes = META-INF/,\
+               plugin_de.properties
+
diff --git a/i18n/org.eclipse.emf.ecp.makeithappen.wizards.nl_de/plugin_de.properties b/i18n/org.eclipse.emf.ecp.makeithappen.wizards.nl_de/plugin_de.properties
new file mode 100644
index 0000000..719e508
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.makeithappen.wizards.nl_de/plugin_de.properties
@@ -0,0 +1,4 @@
+# Copyright by many contributors; see http://babel.eclipse.org/
+_UI_ExistingProjectName_message=*{0}
+_UI_CreatingProjects_message=Erstellen der Projekte
+_UI_NoProjectError_message=F\u00fcr dieses Beispiel sind keine zu installierenden Projekte vorhanden
\ No newline at end of file
diff --git a/i18n/org.eclipse.emf.ecp.makeithappen.wizards.nl_de/pom.xml b/i18n/org.eclipse.emf.ecp.makeithappen.wizards.nl_de/pom.xml
new file mode 100644
index 0000000..00edaf1
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.makeithappen.wizards.nl_de/pom.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.eclipse.emf.ecp</groupId>
+    <artifactId>ecp-i18n-parent</artifactId>
+    <version>1.17.0-SNAPSHOT</version>
+    <relativePath>../../releng/org.eclipse.emf.ecp.releng.i18n/</relativePath>
+  </parent>
+  <groupId>org.eclipse.emf.ecp</groupId>
+  <artifactId>org.eclipse.emf.ecp.makeithappen.wizards.nl_de</artifactId>
+  <version>1.17.0-SNAPSHOT</version>
+  <packaging>eclipse-plugin</packaging>
+</project>
diff --git a/i18n/org.eclipse.emf.ecp.test.model.edit.nl_de/.project b/i18n/org.eclipse.emf.ecp.test.model.edit.nl_de/.project
new file mode 100644
index 0000000..9277205
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.test.model.edit.nl_de/.project
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.emf.ecp.test.model.edit.nl_de</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.sonar.ide.eclipse.core.sonarNature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+	</natures>
+</projectDescription>
diff --git a/i18n/org.eclipse.emf.ecp.test.model.edit.nl_de/META-INF/MANIFEST.MF b/i18n/org.eclipse.emf.ecp.test.model.edit.nl_de/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..c10b3ab
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.test.model.edit.nl_de/META-INF/MANIFEST.MF
@@ -0,0 +1,7 @@
+Manifest-Version: 1.0
+Bundle-Name: org.eclipse.emf.ecp.test.model.edit German NLS Support
+Bundle-SymbolicName: org.eclipse.emf.ecp.test.model.edit.nl_de ;singleton:=true
+Bundle-Version: 1.17.0.qualifier
+Bundle-Vendor: Eclipse Modeling Project
+Fragment-Host: org.eclipse.emf.ecp.test.model.edit;bundle-version="[1.17.0,1.18.0)"
+Bundle-ManifestVersion: 2
diff --git a/i18n/org.eclipse.emf.ecp.test.model.edit.nl_de/about.html b/i18n/org.eclipse.emf.ecp.test.model.edit.nl_de/about.html
new file mode 100644
index 0000000..c80c773
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.test.model.edit.nl_de/about.html
@@ -0,0 +1,22 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
+<html>
+<head>
+<title>About</title>
+<meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+ 
+<p>January 22, 2008</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.</p>
+
+</body>
+</html>
diff --git a/i18n/org.eclipse.emf.ecp.test.model.edit.nl_de/build.properties b/i18n/org.eclipse.emf.ecp.test.model.edit.nl_de/build.properties
new file mode 100644
index 0000000..58cadc4
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.test.model.edit.nl_de/build.properties
@@ -0,0 +1,4 @@
+bin.includes = META-INF/,\
+               plugin_de.properties,\
+               about.html
+
diff --git a/i18n/org.eclipse.emf.ecp.test.model.edit.nl_de/plugin_de.properties b/i18n/org.eclipse.emf.ecp.test.model.edit.nl_de/plugin_de.properties
new file mode 100644
index 0000000..6fa54ba
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.test.model.edit.nl_de/plugin_de.properties
@@ -0,0 +1,13 @@
+# Copyright by many contributors; see http://babel.eclipse.org/
+_UI_CreateChild_text={0}
+_UI_CreateChild_text2={1} {0}
+_UI_CreateChild_text3={1}
+_UI_CreateChild_tooltip=Neues Element {0} unter dem Feature {1} erstellen
+_UI_CreateChild_description=Ein neues untergeordnetes Element des Typs {0} f\u00fcr das Feature {1} des ausgew\u00e4hlten Elements {2} erstellen.
+_UI_CreateSibling_description=Ein neues gleichgeordnetes Element des Typs {0} f\u00fcr das ausgew\u00e4hlte Element {2} unter dem Feature {1} des entsprechenden \u00fcbergeordneten Elements erstellen.
+_UI_PropertyDescriptor_description={0} von {1}
+_UI_Unknown_type=Objekt
+_UI_Unknown_datatype=Wert
+_UI_Course_id_feature=ID
+_UI_Course_name_feature=Name:
+_UI_Unknown_feature=Unspezifiziert
\ No newline at end of file
diff --git a/i18n/org.eclipse.emf.ecp.test.model.edit.nl_de/pom.xml b/i18n/org.eclipse.emf.ecp.test.model.edit.nl_de/pom.xml
new file mode 100644
index 0000000..bd5f017
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.test.model.edit.nl_de/pom.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.eclipse.emf.ecp</groupId>
+    <artifactId>ecp-i18n-parent</artifactId>
+    <version>1.17.0-SNAPSHOT</version>
+    <relativePath>../../releng/org.eclipse.emf.ecp.releng.i18n/</relativePath>
+  </parent>
+  <groupId>org.eclipse.emf.ecp</groupId>
+  <artifactId>org.eclipse.emf.ecp.test.model.edit.nl_de</artifactId>
+  <version>1.17.0-SNAPSHOT</version>
+  <packaging>eclipse-plugin</packaging>
+</project>
diff --git a/i18n/org.eclipse.emf.ecp.ui.e3.nl_de/.project b/i18n/org.eclipse.emf.ecp.ui.e3.nl_de/.project
new file mode 100644
index 0000000..37e17f9
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.ui.e3.nl_de/.project
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.emf.ecp.ui.e3.nl_de</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.sonar.ide.eclipse.core.sonarNature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+	</natures>
+</projectDescription>
diff --git a/i18n/org.eclipse.emf.ecp.ui.e3.nl_de/META-INF/MANIFEST.MF b/i18n/org.eclipse.emf.ecp.ui.e3.nl_de/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..48e31a8
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.ui.e3.nl_de/META-INF/MANIFEST.MF
@@ -0,0 +1,7 @@
+Manifest-Version: 1.0
+Bundle-Name: org.eclipse.emf.ecp.ui.e3 German NLS Support
+Bundle-SymbolicName: org.eclipse.emf.ecp.ui.e3.nl_de ;singleton:=true
+Bundle-Version: 1.17.0.qualifier
+Bundle-Vendor: Eclipse Modeling Project
+Fragment-Host: org.eclipse.emf.ecp.ui.e3;bundle-version="[1.17.0,1.18.0)"
+Bundle-ManifestVersion: 2
diff --git a/i18n/org.eclipse.emf.ecp.ui.e3.nl_de/OSGI-INF/l10n/bundle_de.properties b/i18n/org.eclipse.emf.ecp.ui.e3.nl_de/OSGI-INF/l10n/bundle_de.properties
new file mode 100644
index 0000000..d6c0048
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.ui.e3.nl_de/OSGI-INF/l10n/bundle_de.properties
@@ -0,0 +1,15 @@
+# Copyright by many contributors; see http://babel.eclipse.org/
+Bundle-Name=ECP Komponenten f\u00fcr die Workbench
+ModelExplorerView=Modell-Explorer
+ModelRepositoryView=Modell\u2010Repositories
+ECPProviderView=ECP Anbieter
+RepositoryProperties=Eigenschaften
+ProjectProperties=Eigenschaften
+OpenClosable=\u00d6ffnen
+CloseClosable=Schlie\u00dfen
+DelteProject=L\u00f6schen
+CheckoutProject=Auschecken...
+CreateNewProject=Neues Projekt erstellen
+FilterProject=Filtere Modellelemente
+NewModelElement=Neues Modellelement
+SaveProject=Projekt speichern
\ No newline at end of file
diff --git a/i18n/org.eclipse.emf.ecp.ui.e3.nl_de/about.html b/i18n/org.eclipse.emf.ecp.ui.e3.nl_de/about.html
new file mode 100644
index 0000000..c80c773
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.ui.e3.nl_de/about.html
@@ -0,0 +1,22 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
+<html>
+<head>
+<title>About</title>
+<meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+ 
+<p>January 22, 2008</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.</p>
+
+</body>
+</html>
diff --git a/i18n/org.eclipse.emf.ecp.ui.e3.nl_de/build.properties b/i18n/org.eclipse.emf.ecp.ui.e3.nl_de/build.properties
new file mode 100644
index 0000000..f40cd67
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.ui.e3.nl_de/build.properties
@@ -0,0 +1,4 @@
+bin.includes = META-INF/,\
+               OSGI-INF/,\
+               about.html
+
diff --git a/i18n/org.eclipse.emf.ecp.ui.e3.nl_de/pom.xml b/i18n/org.eclipse.emf.ecp.ui.e3.nl_de/pom.xml
new file mode 100644
index 0000000..a705e04
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.ui.e3.nl_de/pom.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.eclipse.emf.ecp</groupId>
+    <artifactId>ecp-i18n-parent</artifactId>
+    <version>1.17.0-SNAPSHOT</version>
+    <relativePath>../../releng/org.eclipse.emf.ecp.releng.i18n/</relativePath>
+  </parent>
+  <groupId>org.eclipse.emf.ecp</groupId>
+  <artifactId>org.eclipse.emf.ecp.ui.e3.nl_de</artifactId>
+  <version>1.17.0-SNAPSHOT</version>
+  <packaging>eclipse-plugin</packaging>
+</project>
diff --git a/i18n/org.eclipse.emf.ecp.ui.nl_de/.project b/i18n/org.eclipse.emf.ecp.ui.nl_de/.project
new file mode 100644
index 0000000..0d6e29e
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.ui.nl_de/.project
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.emf.ecp.ui.nl_de</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.sonar.ide.eclipse.core.sonarNature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+	</natures>
+</projectDescription>
diff --git a/i18n/org.eclipse.emf.ecp.ui.nl_de/META-INF/MANIFEST.MF b/i18n/org.eclipse.emf.ecp.ui.nl_de/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..8950c1d
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.ui.nl_de/META-INF/MANIFEST.MF
@@ -0,0 +1,7 @@
+Manifest-Version: 1.0
+Bundle-Name: org.eclipse.emf.ecp.ui German NLS Support
+Bundle-SymbolicName: org.eclipse.emf.ecp.ui.nl_de ;singleton:=true
+Bundle-Version: 1.17.0.qualifier
+Bundle-Vendor: Eclipse Modeling Project
+Fragment-Host: org.eclipse.emf.ecp.ui;bundle-version="[1.17.0,1.18.0)"
+Bundle-ManifestVersion: 2
diff --git a/i18n/org.eclipse.emf.ecp.ui.nl_de/about.html b/i18n/org.eclipse.emf.ecp.ui.nl_de/about.html
new file mode 100644
index 0000000..c80c773
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.ui.nl_de/about.html
@@ -0,0 +1,22 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
+<html>
+<head>
+<title>About</title>
+<meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+ 
+<p>January 22, 2008</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.</p>
+
+</body>
+</html>
diff --git a/i18n/org.eclipse.emf.ecp.ui.nl_de/build.properties b/i18n/org.eclipse.emf.ecp.ui.nl_de/build.properties
new file mode 100644
index 0000000..daec14f
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.ui.nl_de/build.properties
@@ -0,0 +1,4 @@
+bin.includes = META-INF/,\
+               about.html,\
+               org/
+
diff --git a/i18n/org.eclipse.emf.ecp.ui.nl_de/org/eclipse/emf/ecp/ui/messages_de.properties b/i18n/org.eclipse.emf.ecp.ui.nl_de/org/eclipse/emf/ecp/ui/messages_de.properties
new file mode 100644
index 0000000..d92b727
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.ui.nl_de/org/eclipse/emf/ecp/ui/messages_de.properties
@@ -0,0 +1,40 @@
+# Copyright by many contributors; see http://babel.eclipse.org/
+AbstractModelElementHelper_FilterLabel=Suchen
+AbstractModelElementHelper_FilterText=Modellelement-Klasse
+ActionHelper_ErrorMessage_ElementDeleted=Das zu \u00f6ffnenden Modellelement wurde gel\u00f6scht\!
+ActionHelper_ErrorTitle_ElementDeleted=Das Element wurde gel\u00f6scht
+AddRepositoryComposite_RepositoryDescription=Beschreibung:
+AddRepositoryComposite_RepositoryLabel=Bezeichnung:
+AddRepositoryComposite_RepositoryName=Name\:
+AddRepositoryComposite_RepositoryProvider=Anbieter:
+AddRepositoryPage_PageTitle_AddRepository=Repository hinzuf\u00fcgen
+CheckedModelElementHelper_DeselectAllLabel=Alles abw\u00e4hlen
+CheckedModelElementHelper_SelectAllLabel=Alles ausw\u00e4hlen
+CheckoutProjectComposite_ProjectName=Projektname:
+CheckoutProjectWizard_PageTitle_CheckoutProject=Umstellen
+CheckoutProjectWizard_Title_Checkout=Umstellen
+DeleteDialog_DialogTitle=L\u00f6schen
+DeleteDialog_Message_element_plural=s
+DeleteDialog_Title=L\u00f6schen
+FilterModelElementWizard_Title_FilterProject=Filter
+ModelelementSelectionDialog_DialogMessage_SearchPattern=Pr\u00e4fix oder Muster (z.B. *Trun?) eines Modellelementnamens eingeben
+ModelelementSelectionDialog_DialogTitle=Suche nach Modellelement
+ModelelementSelectionDialog_ProgressMonitor_Searching=Suche l\u00e4uft
+ProjectPropertiesDialog_ProjectProvider=Anbieter:
+PropertiesComposite_AddProperty=&Hinzuf\u00fcgen ...
+PropertiesComposite_EditProperty=Bearbeiten...
+PropertiesComposite_RemoveProperty=Ent&fernen
+PropertiesComposite_TableColumnName_Key=Schl\u00fcssel
+PropertiesComposite_TableColumnName_Value=Wert
+PropertiesDialog_DialogTitle=Eigenschaften
+PropertyDialog_Key=Schl\u00fcssel:
+PropertyDialog_Message=Nachricht
+PropertyDialog_Title=Titel
+PropertyDialog_Value=Wert:
+RepositoryPropertiesDialog_RepositoryProvider=Anbieter:
+SelectEStructuralFeaturesWizard_Title=Filter
+SelectOrCreateRepositoryPage_CreateNewRepository=Neues Repository erstellen
+TreeContentProvider_ErrorElement_Error=Fehler
+TreeContentProvider_SlowElement_Pending=Anstehend...
+UICreateProject_ProjectName=Projektname
+UICreateProject_ProjectProvider=Anbieter
\ No newline at end of file
diff --git a/i18n/org.eclipse.emf.ecp.ui.nl_de/pom.xml b/i18n/org.eclipse.emf.ecp.ui.nl_de/pom.xml
new file mode 100644
index 0000000..a2a089a
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.ui.nl_de/pom.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.eclipse.emf.ecp</groupId>
+    <artifactId>ecp-i18n-parent</artifactId>
+    <version>1.17.0-SNAPSHOT</version>
+    <relativePath>../../releng/org.eclipse.emf.ecp.releng.i18n/</relativePath>
+  </parent>
+  <groupId>org.eclipse.emf.ecp</groupId>
+  <artifactId>org.eclipse.emf.ecp.ui.nl_de</artifactId>
+  <version>1.17.0-SNAPSHOT</version>
+  <packaging>eclipse-plugin</packaging>
+</project>
diff --git a/i18n/org.eclipse.emf.ecp.ui.validation.nl_de/.project b/i18n/org.eclipse.emf.ecp.ui.validation.nl_de/.project
new file mode 100644
index 0000000..bdcbe29
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.ui.validation.nl_de/.project
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.emf.ecp.ui.validation.nl_de</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.sonar.ide.eclipse.core.sonarNature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+	</natures>
+</projectDescription>
diff --git a/i18n/org.eclipse.emf.ecp.ui.validation.nl_de/META-INF/MANIFEST.MF b/i18n/org.eclipse.emf.ecp.ui.validation.nl_de/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..b54c678
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.ui.validation.nl_de/META-INF/MANIFEST.MF
@@ -0,0 +1,7 @@
+Manifest-Version: 1.0
+Bundle-Name: org.eclipse.emf.ecp.ui.validation German NLS Support
+Bundle-SymbolicName: org.eclipse.emf.ecp.ui.validation.nl_de ;singleton:=true
+Bundle-Version: 1.17.0.qualifier
+Bundle-Vendor: Eclipse Modeling Project
+Fragment-Host: org.eclipse.emf.ecp.ui.validation;bundle-version="[1.17.0,1.18.0)"
+Bundle-ManifestVersion: 2
diff --git a/i18n/org.eclipse.emf.ecp.ui.validation.nl_de/about.html b/i18n/org.eclipse.emf.ecp.ui.validation.nl_de/about.html
new file mode 100644
index 0000000..c80c773
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.ui.validation.nl_de/about.html
@@ -0,0 +1,22 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
+<html>
+<head>
+<title>About</title>
+<meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+ 
+<p>January 22, 2008</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.</p>
+
+</body>
+</html>
diff --git a/i18n/org.eclipse.emf.ecp.ui.validation.nl_de/build.properties b/i18n/org.eclipse.emf.ecp.ui.validation.nl_de/build.properties
new file mode 100644
index 0000000..77edcdf
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.ui.validation.nl_de/build.properties
@@ -0,0 +1,3 @@
+bin.includes = META-INF/,\
+               org/
+
diff --git a/i18n/org.eclipse.emf.ecp.ui.validation.nl_de/org/eclipse/emf/ecp/internal/ui/validation/messages_de.properties b/i18n/org.eclipse.emf.ecp.ui.validation.nl_de/org/eclipse/emf/ecp/internal/ui/validation/messages_de.properties
new file mode 100644
index 0000000..6af602a
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.ui.validation.nl_de/org/eclipse/emf/ecp/internal/ui/validation/messages_de.properties
@@ -0,0 +1,3 @@
+# Copyright by many contributors; see http://babel.eclipse.org/
+ValidationTreeViewerFactory_Description=Beschreibung
+ValidationTreeViewerFactory_Object=EObject
\ No newline at end of file
diff --git a/i18n/org.eclipse.emf.ecp.ui.validation.nl_de/pom.xml b/i18n/org.eclipse.emf.ecp.ui.validation.nl_de/pom.xml
new file mode 100644
index 0000000..81959e3
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.ui.validation.nl_de/pom.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.eclipse.emf.ecp</groupId>
+    <artifactId>ecp-i18n-parent</artifactId>
+    <version>1.17.0-SNAPSHOT</version>
+    <relativePath>../../releng/org.eclipse.emf.ecp.releng.i18n/</relativePath>
+  </parent>
+  <groupId>org.eclipse.emf.ecp</groupId>
+  <artifactId>org.eclipse.emf.ecp.ui.validation.nl_de</artifactId>
+  <version>1.17.0-SNAPSHOT</version>
+  <packaging>eclipse-plugin</packaging>
+</project>
diff --git a/i18n/org.eclipse.emf.ecp.ui.view.editor.controls.nl_de/.project b/i18n/org.eclipse.emf.ecp.ui.view.editor.controls.nl_de/.project
new file mode 100644
index 0000000..a0528e4
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.ui.view.editor.controls.nl_de/.project
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.emf.ecp.ui.view.editor.controls.nl_de</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.sonar.ide.eclipse.core.sonarNature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+	</natures>
+</projectDescription>
diff --git a/i18n/org.eclipse.emf.ecp.ui.view.editor.controls.nl_de/META-INF/MANIFEST.MF b/i18n/org.eclipse.emf.ecp.ui.view.editor.controls.nl_de/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..fb6e96e
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.ui.view.editor.controls.nl_de/META-INF/MANIFEST.MF
@@ -0,0 +1,7 @@
+Manifest-Version: 1.0
+Bundle-Name: org.eclipse.emf.ecp.ui.view.editor.controls German NLS Support
+Bundle-SymbolicName: org.eclipse.emf.ecp.ui.view.editor.controls.nl_de ;singleton:=true
+Bundle-Version: 1.17.0.qualifier
+Bundle-Vendor: Eclipse Modeling Project
+Fragment-Host: org.eclipse.emf.ecp.ui.view.editor.controls;bundle-version="[1.17.0,1.18.0)"
+Bundle-ManifestVersion: 2
diff --git a/i18n/org.eclipse.emf.ecp.ui.view.editor.controls.nl_de/about.html b/i18n/org.eclipse.emf.ecp.ui.view.editor.controls.nl_de/about.html
new file mode 100644
index 0000000..c80c773
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.ui.view.editor.controls.nl_de/about.html
@@ -0,0 +1,22 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
+<html>
+<head>
+<title>About</title>
+<meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+ 
+<p>January 22, 2008</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.</p>
+
+</body>
+</html>
diff --git a/i18n/org.eclipse.emf.ecp.ui.view.editor.controls.nl_de/build.properties b/i18n/org.eclipse.emf.ecp.ui.view.editor.controls.nl_de/build.properties
new file mode 100644
index 0000000..79b05f9
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.ui.view.editor.controls.nl_de/build.properties
@@ -0,0 +1,2 @@
+bin.includes = META-INF/,\
+
diff --git a/i18n/org.eclipse.emf.ecp.ui.view.editor.controls.nl_de/pom.xml b/i18n/org.eclipse.emf.ecp.ui.view.editor.controls.nl_de/pom.xml
new file mode 100644
index 0000000..1c1f5e9
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.ui.view.editor.controls.nl_de/pom.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.eclipse.emf.ecp</groupId>
+    <artifactId>ecp-i18n-parent</artifactId>
+    <version>1.17.0-SNAPSHOT</version>
+    <relativePath>../../releng/org.eclipse.emf.ecp.releng.i18n/</relativePath>
+  </parent>
+  <groupId>org.eclipse.emf.ecp</groupId>
+  <artifactId>org.eclipse.emf.ecp.ui.view.editor.controls.nl_de</artifactId>
+  <version>1.17.0-SNAPSHOT</version>
+  <packaging>eclipse-plugin</packaging>
+</project>
diff --git a/i18n/org.eclipse.emf.ecp.validation.nl_de/.project b/i18n/org.eclipse.emf.ecp.validation.nl_de/.project
new file mode 100644
index 0000000..ab2bb2d
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.validation.nl_de/.project
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.emf.ecp.validation.nl_de</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.sonar.ide.eclipse.core.sonarNature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+	</natures>
+</projectDescription>
diff --git a/i18n/org.eclipse.emf.ecp.validation.nl_de/META-INF/MANIFEST.MF b/i18n/org.eclipse.emf.ecp.validation.nl_de/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..12d1dee
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.validation.nl_de/META-INF/MANIFEST.MF
@@ -0,0 +1,7 @@
+Manifest-Version: 1.0
+Bundle-Name: org.eclipse.emf.ecp.validation German NLS Support
+Bundle-SymbolicName: org.eclipse.emf.ecp.validation.nl_de ;singleton:=true
+Bundle-Version: 1.17.0.qualifier
+Bundle-Vendor: Eclipse Modeling Project
+Fragment-Host: org.eclipse.emf.ecp.validation;bundle-version="[1.17.0,1.18.0)"
+Bundle-ManifestVersion: 2
diff --git a/i18n/org.eclipse.emf.ecp.validation.nl_de/about.html b/i18n/org.eclipse.emf.ecp.validation.nl_de/about.html
new file mode 100644
index 0000000..c80c773
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.validation.nl_de/about.html
@@ -0,0 +1,22 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
+<html>
+<head>
+<title>About</title>
+<meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+ 
+<p>January 22, 2008</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.</p>
+
+</body>
+</html>
diff --git a/i18n/org.eclipse.emf.ecp.validation.nl_de/build.properties b/i18n/org.eclipse.emf.ecp.validation.nl_de/build.properties
new file mode 100644
index 0000000..19b5179
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.validation.nl_de/build.properties
@@ -0,0 +1,3 @@
+bin.includes = META-INF/,\
+               about.html
+
diff --git a/i18n/org.eclipse.emf.ecp.validation.nl_de/pom.xml b/i18n/org.eclipse.emf.ecp.validation.nl_de/pom.xml
new file mode 100644
index 0000000..3f4ed89
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.validation.nl_de/pom.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.eclipse.emf.ecp</groupId>
+    <artifactId>ecp-i18n-parent</artifactId>
+    <version>1.17.0-SNAPSHOT</version>
+    <relativePath>../../releng/org.eclipse.emf.ecp.releng.i18n/</relativePath>
+  </parent>
+  <groupId>org.eclipse.emf.ecp</groupId>
+  <artifactId>org.eclipse.emf.ecp.validation.nl_de</artifactId>
+  <version>1.17.0-SNAPSHOT</version>
+  <packaging>eclipse-plugin</packaging>
+</project>
diff --git a/i18n/org.eclipse.emf.ecp.view.categorization.model.edit.nl_de/.project b/i18n/org.eclipse.emf.ecp.view.categorization.model.edit.nl_de/.project
new file mode 100644
index 0000000..b4443af
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.view.categorization.model.edit.nl_de/.project
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.emf.ecp.view.categorization.model.edit.nl_de</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.sonar.ide.eclipse.core.sonarNature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+	</natures>
+</projectDescription>
diff --git a/i18n/org.eclipse.emf.ecp.view.categorization.model.edit.nl_de/META-INF/MANIFEST.MF b/i18n/org.eclipse.emf.ecp.view.categorization.model.edit.nl_de/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..7f14467
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.view.categorization.model.edit.nl_de/META-INF/MANIFEST.MF
@@ -0,0 +1,7 @@
+Manifest-Version: 1.0
+Bundle-Name: org.eclipse.emf.ecp.view.categorization.model.edit German NLS Support
+Bundle-SymbolicName: org.eclipse.emf.ecp.view.categorization.model.edit.nl_de ;singleton:=true
+Bundle-Version: 1.17.0.qualifier
+Bundle-Vendor: Eclipse Modeling Project
+Fragment-Host: org.eclipse.emf.ecp.view.categorization.model.edit;bundle-version="[1.17.0,1.18.0)"
+Bundle-ManifestVersion: 2
diff --git a/i18n/org.eclipse.emf.ecp.view.categorization.model.edit.nl_de/about.html b/i18n/org.eclipse.emf.ecp.view.categorization.model.edit.nl_de/about.html
new file mode 100644
index 0000000..c80c773
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.view.categorization.model.edit.nl_de/about.html
@@ -0,0 +1,22 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
+<html>
+<head>
+<title>About</title>
+<meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+ 
+<p>January 22, 2008</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.</p>
+
+</body>
+</html>
diff --git a/i18n/org.eclipse.emf.ecp.view.categorization.model.edit.nl_de/build.properties b/i18n/org.eclipse.emf.ecp.view.categorization.model.edit.nl_de/build.properties
new file mode 100644
index 0000000..58cadc4
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.view.categorization.model.edit.nl_de/build.properties
@@ -0,0 +1,4 @@
+bin.includes = META-INF/,\
+               plugin_de.properties,\
+               about.html
+
diff --git a/i18n/org.eclipse.emf.ecp.view.categorization.model.edit.nl_de/plugin_de.properties b/i18n/org.eclipse.emf.ecp.view.categorization.model.edit.nl_de/plugin_de.properties
new file mode 100644
index 0000000..df701ba
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.view.categorization.model.edit.nl_de/plugin_de.properties
@@ -0,0 +1,19 @@
+# Copyright by many contributors; see http://babel.eclipse.org/
+providerName=Eclipse-Modeling-Projekt
+_UI_CreateChild_text={0}
+_UI_CreateChild_text2={1} {0}
+_UI_CreateChild_text3={1}
+_UI_CreateChild_tooltip=Neues Element {0} unter dem Feature {1} erstellen
+_UI_CreateChild_description=Ein neues untergeordnetes Element des Typs {0} f\u00fcr das Feature {1} des ausgew\u00e4hlten Elements {2} erstellen.
+_UI_CreateSibling_description=Ein neues gleichgeordnetes Element des Typs {0} f\u00fcr das ausgew\u00e4hlte Element {2} unter dem Feature {1} des entsprechenden \u00fcbergeordneten Elements erstellen.
+_UI_PropertyDescriptor_description={0} von {1}
+_UI_Action_type=Aktion
+_UI_Unknown_type=Objekt
+_UI_Unknown_datatype=Wert
+_UI_AbstractCategorization_actions_feature=Aktionen
+_UI_Action_bundle_feature=B\u00fcndel
+_UI_Action_className_feature=Klassenname
+_UI_Unknown_feature=Unspezifiziert
+_UI_CategorizationElement_currentSelection_feature=Aktuelle Auswahl
+_UI_CategorizableElement_children_feature=Untergeordnete Elemente
+_UI_CategorizableElement_label_feature=Bezeichnung
\ No newline at end of file
diff --git a/i18n/org.eclipse.emf.ecp.view.categorization.model.edit.nl_de/pom.xml b/i18n/org.eclipse.emf.ecp.view.categorization.model.edit.nl_de/pom.xml
new file mode 100644
index 0000000..6e0aff8
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.view.categorization.model.edit.nl_de/pom.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.eclipse.emf.ecp</groupId>
+    <artifactId>ecp-i18n-parent</artifactId>
+    <version>1.17.0-SNAPSHOT</version>
+    <relativePath>../../releng/org.eclipse.emf.ecp.releng.i18n/</relativePath>
+  </parent>
+  <groupId>org.eclipse.emf.ecp</groupId>
+  <artifactId>org.eclipse.emf.ecp.view.categorization.model.edit.nl_de</artifactId>
+  <version>1.17.0-SNAPSHOT</version>
+  <packaging>eclipse-plugin</packaging>
+</project>
diff --git a/i18n/org.eclipse.emf.ecp.view.core.swt.nl_de/.project b/i18n/org.eclipse.emf.ecp.view.core.swt.nl_de/.project
new file mode 100644
index 0000000..d939764
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.view.core.swt.nl_de/.project
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.emf.ecp.view.core.swt.nl_de</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.sonar.ide.eclipse.core.sonarNature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+	</natures>
+</projectDescription>
diff --git a/i18n/org.eclipse.emf.ecp.view.core.swt.nl_de/META-INF/MANIFEST.MF b/i18n/org.eclipse.emf.ecp.view.core.swt.nl_de/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..0cf72f8
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.view.core.swt.nl_de/META-INF/MANIFEST.MF
@@ -0,0 +1,7 @@
+Manifest-Version: 1.0
+Bundle-Name: org.eclipse.emf.ecp.view.core.swt German NLS Support
+Bundle-SymbolicName: org.eclipse.emf.ecp.view.core.swt.nl_de ;singleton:=true
+Bundle-Version: 1.17.0.qualifier
+Bundle-Vendor: Eclipse Modeling Project
+Fragment-Host: org.eclipse.emf.ecp.view.core.swt;bundle-version="[1.17.0,1.18.0)"
+Bundle-ManifestVersion: 2
diff --git a/i18n/org.eclipse.emf.ecp.view.core.swt.nl_de/OSGI-INF/l10n/bundle_de.properties b/i18n/org.eclipse.emf.ecp.view.core.swt.nl_de/OSGI-INF/l10n/bundle_de.properties
new file mode 100644
index 0000000..0e676e3
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.view.core.swt.nl_de/OSGI-INF/l10n/bundle_de.properties
@@ -0,0 +1,4 @@
+# Copyright by many contributors; see http://babel.eclipse.org/
+AbstractTextControl_InvalidInput=Ung\u00fcltige Eingabe (input)
+AbstractTextControl_Unset=<nicht gesetzt>
+SimpleControlSWTRenderer_Set=Setzen
\ No newline at end of file
diff --git a/i18n/org.eclipse.emf.ecp.view.core.swt.nl_de/about.html b/i18n/org.eclipse.emf.ecp.view.core.swt.nl_de/about.html
new file mode 100644
index 0000000..c80c773
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.view.core.swt.nl_de/about.html
@@ -0,0 +1,22 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
+<html>
+<head>
+<title>About</title>
+<meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+ 
+<p>January 22, 2008</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.</p>
+
+</body>
+</html>
diff --git a/i18n/org.eclipse.emf.ecp.view.core.swt.nl_de/build.properties b/i18n/org.eclipse.emf.ecp.view.core.swt.nl_de/build.properties
new file mode 100644
index 0000000..049491c
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.view.core.swt.nl_de/build.properties
@@ -0,0 +1,3 @@
+bin.includes = META-INF/,\
+               OSGI-INF/
+
diff --git a/i18n/org.eclipse.emf.ecp.view.core.swt.nl_de/pom.xml b/i18n/org.eclipse.emf.ecp.view.core.swt.nl_de/pom.xml
new file mode 100644
index 0000000..be5e750
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.view.core.swt.nl_de/pom.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.eclipse.emf.ecp</groupId>
+    <artifactId>ecp-i18n-parent</artifactId>
+    <version>1.17.0-SNAPSHOT</version>
+    <relativePath>../../releng/org.eclipse.emf.ecp.releng.i18n/</relativePath>
+  </parent>
+  <groupId>org.eclipse.emf.ecp</groupId>
+  <artifactId>org.eclipse.emf.ecp.view.core.swt.nl_de</artifactId>
+  <version>1.17.0-SNAPSHOT</version>
+  <packaging>eclipse-plugin</packaging>
+</project>
diff --git a/i18n/org.eclipse.emf.ecp.view.custom.model.edit.nl_de/.project b/i18n/org.eclipse.emf.ecp.view.custom.model.edit.nl_de/.project
new file mode 100644
index 0000000..98809fd
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.view.custom.model.edit.nl_de/.project
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.emf.ecp.view.custom.model.edit.nl_de</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.sonar.ide.eclipse.core.sonarNature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+	</natures>
+</projectDescription>
diff --git a/i18n/org.eclipse.emf.ecp.view.custom.model.edit.nl_de/META-INF/MANIFEST.MF b/i18n/org.eclipse.emf.ecp.view.custom.model.edit.nl_de/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..d63456b
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.view.custom.model.edit.nl_de/META-INF/MANIFEST.MF
@@ -0,0 +1,7 @@
+Manifest-Version: 1.0
+Bundle-Name: org.eclipse.emf.ecp.view.custom.model.edit German NLS Support
+Bundle-SymbolicName: org.eclipse.emf.ecp.view.custom.model.edit.nl_de ;singleton:=true
+Bundle-Version: 1.17.0.qualifier
+Bundle-Vendor: Eclipse Modeling Project
+Fragment-Host: org.eclipse.emf.ecp.view.custom.model.edit;bundle-version="[1.17.0,1.18.0)"
+Bundle-ManifestVersion: 2
diff --git a/i18n/org.eclipse.emf.ecp.view.custom.model.edit.nl_de/about.html b/i18n/org.eclipse.emf.ecp.view.custom.model.edit.nl_de/about.html
new file mode 100644
index 0000000..c80c773
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.view.custom.model.edit.nl_de/about.html
@@ -0,0 +1,22 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
+<html>
+<head>
+<title>About</title>
+<meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+ 
+<p>January 22, 2008</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.</p>
+
+</body>
+</html>
diff --git a/i18n/org.eclipse.emf.ecp.view.custom.model.edit.nl_de/build.properties b/i18n/org.eclipse.emf.ecp.view.custom.model.edit.nl_de/build.properties
new file mode 100644
index 0000000..58cadc4
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.view.custom.model.edit.nl_de/build.properties
@@ -0,0 +1,4 @@
+bin.includes = META-INF/,\
+               plugin_de.properties,\
+               about.html
+
diff --git a/i18n/org.eclipse.emf.ecp.view.custom.model.edit.nl_de/plugin_de.properties b/i18n/org.eclipse.emf.ecp.view.custom.model.edit.nl_de/plugin_de.properties
new file mode 100644
index 0000000..fe1d1ce
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.view.custom.model.edit.nl_de/plugin_de.properties
@@ -0,0 +1,14 @@
+# Copyright by many contributors; see http://babel.eclipse.org/
+providerName=Eclipse-Modeling-Projekt
+_UI_CreateChild_text={0}
+_UI_CreateChild_text2={1} {0}
+_UI_CreateChild_text3={1}
+_UI_CreateChild_tooltip=Neues Element {0} unter dem Feature {1} erstellen
+_UI_CreateChild_description=Ein neues untergeordnetes Element des Typs {0} f\u00fcr das Feature {1} des ausgew\u00e4hlten Elements {2} erstellen.
+_UI_CreateSibling_description=Ein neues gleichgeordnetes Element des Typs {0} f\u00fcr das ausgew\u00e4hlte Element {2} unter dem Feature {1} des entsprechenden \u00fcbergeordneten Elements erstellen.
+_UI_PropertyDescriptor_description={0} von {1}
+_UI_Unknown_type=Objekt
+_UI_Unknown_datatype=Wert
+_UI_Unknown_feature=Unspezifiziert
+_UI_CustomControl_className_feature=Klassenname
+_UI_CustomDomainModelReference_className_feature=Klassenname
\ No newline at end of file
diff --git a/i18n/org.eclipse.emf.ecp.view.custom.model.edit.nl_de/pom.xml b/i18n/org.eclipse.emf.ecp.view.custom.model.edit.nl_de/pom.xml
new file mode 100644
index 0000000..a5722e2
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.view.custom.model.edit.nl_de/pom.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.eclipse.emf.ecp</groupId>
+    <artifactId>ecp-i18n-parent</artifactId>
+    <version>1.17.0-SNAPSHOT</version>
+    <relativePath>../../releng/org.eclipse.emf.ecp.releng.i18n/</relativePath>
+  </parent>
+  <groupId>org.eclipse.emf.ecp</groupId>
+  <artifactId>org.eclipse.emf.ecp.view.custom.model.edit.nl_de</artifactId>
+  <version>1.17.0-SNAPSHOT</version>
+  <packaging>eclipse-plugin</packaging>
+</project>
diff --git a/i18n/org.eclipse.emf.ecp.view.custom.model.nl_de/.project b/i18n/org.eclipse.emf.ecp.view.custom.model.nl_de/.project
new file mode 100644
index 0000000..8c82cac
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.view.custom.model.nl_de/.project
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.emf.ecp.view.custom.model.nl_de</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.sonar.ide.eclipse.core.sonarNature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+	</natures>
+</projectDescription>
diff --git a/i18n/org.eclipse.emf.ecp.view.custom.model.nl_de/META-INF/MANIFEST.MF b/i18n/org.eclipse.emf.ecp.view.custom.model.nl_de/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..45a42a6
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.view.custom.model.nl_de/META-INF/MANIFEST.MF
@@ -0,0 +1,7 @@
+Manifest-Version: 1.0
+Bundle-Name: org.eclipse.emf.ecp.view.custom.model German NLS Support
+Bundle-SymbolicName: org.eclipse.emf.ecp.view.custom.model.nl_de ;singleton:=true
+Bundle-Version: 1.17.0.qualifier
+Bundle-Vendor: Eclipse Modeling Project
+Fragment-Host: org.eclipse.emf.ecp.view.custom.model;bundle-version="[1.17.0,1.18.0)"
+Bundle-ManifestVersion: 2
diff --git a/i18n/org.eclipse.emf.ecp.view.custom.model.nl_de/about.html b/i18n/org.eclipse.emf.ecp.view.custom.model.nl_de/about.html
new file mode 100644
index 0000000..c80c773
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.view.custom.model.nl_de/about.html
@@ -0,0 +1,22 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
+<html>
+<head>
+<title>About</title>
+<meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+ 
+<p>January 22, 2008</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.</p>
+
+</body>
+</html>
diff --git a/i18n/org.eclipse.emf.ecp.view.custom.model.nl_de/build.properties b/i18n/org.eclipse.emf.ecp.view.custom.model.nl_de/build.properties
new file mode 100644
index 0000000..19b5179
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.view.custom.model.nl_de/build.properties
@@ -0,0 +1,3 @@
+bin.includes = META-INF/,\
+               about.html
+
diff --git a/i18n/org.eclipse.emf.ecp.view.custom.model.nl_de/pom.xml b/i18n/org.eclipse.emf.ecp.view.custom.model.nl_de/pom.xml
new file mode 100644
index 0000000..be6c732
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.view.custom.model.nl_de/pom.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.eclipse.emf.ecp</groupId>
+    <artifactId>ecp-i18n-parent</artifactId>
+    <version>1.17.0-SNAPSHOT</version>
+    <relativePath>../../releng/org.eclipse.emf.ecp.releng.i18n/</relativePath>
+  </parent>
+  <groupId>org.eclipse.emf.ecp</groupId>
+  <artifactId>org.eclipse.emf.ecp.view.custom.model.nl_de</artifactId>
+  <version>1.17.0-SNAPSHOT</version>
+  <packaging>eclipse-plugin</packaging>
+</project>
diff --git a/i18n/org.eclipse.emf.ecp.view.dynamictree.model.edit.nl_de/.project b/i18n/org.eclipse.emf.ecp.view.dynamictree.model.edit.nl_de/.project
new file mode 100644
index 0000000..4254999
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.view.dynamictree.model.edit.nl_de/.project
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.emf.ecp.view.dynamictree.model.edit.nl_de</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.sonar.ide.eclipse.core.sonarNature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+	</natures>
+</projectDescription>
diff --git a/i18n/org.eclipse.emf.ecp.view.dynamictree.model.edit.nl_de/META-INF/MANIFEST.MF b/i18n/org.eclipse.emf.ecp.view.dynamictree.model.edit.nl_de/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..08518ef
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.view.dynamictree.model.edit.nl_de/META-INF/MANIFEST.MF
@@ -0,0 +1,7 @@
+Manifest-Version: 1.0
+Bundle-Name: org.eclipse.emf.ecp.view.dynamictree.model.edit German NLS Support
+Bundle-SymbolicName: org.eclipse.emf.ecp.view.dynamictree.model.edit.nl_de ;singleton:=true
+Bundle-Version: 1.17.0.qualifier
+Bundle-Vendor: Eclipse Modeling Project
+Fragment-Host: org.eclipse.emf.ecp.view.dynamictree.model.edit;bundle-version="[1.17.0,1.18.0)"
+Bundle-ManifestVersion: 2
diff --git a/i18n/org.eclipse.emf.ecp.view.dynamictree.model.edit.nl_de/about.html b/i18n/org.eclipse.emf.ecp.view.dynamictree.model.edit.nl_de/about.html
new file mode 100644
index 0000000..c80c773
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.view.dynamictree.model.edit.nl_de/about.html
@@ -0,0 +1,22 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
+<html>
+<head>
+<title>About</title>
+<meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+ 
+<p>January 22, 2008</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.</p>
+
+</body>
+</html>
diff --git a/i18n/org.eclipse.emf.ecp.view.dynamictree.model.edit.nl_de/build.properties b/i18n/org.eclipse.emf.ecp.view.dynamictree.model.edit.nl_de/build.properties
new file mode 100644
index 0000000..58cadc4
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.view.dynamictree.model.edit.nl_de/build.properties
@@ -0,0 +1,4 @@
+bin.includes = META-INF/,\
+               plugin_de.properties,\
+               about.html
+
diff --git a/i18n/org.eclipse.emf.ecp.view.dynamictree.model.edit.nl_de/plugin_de.properties b/i18n/org.eclipse.emf.ecp.view.dynamictree.model.edit.nl_de/plugin_de.properties
new file mode 100644
index 0000000..754851c
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.view.dynamictree.model.edit.nl_de/plugin_de.properties
@@ -0,0 +1,21 @@
+# Copyright by many contributors; see http://babel.eclipse.org/
+providerName=Eclipse-Modeling-Projekt
+_UI_CreateChild_text={0}
+_UI_CreateChild_text2={1} {0}
+_UI_CreateChild_text3={1}
+_UI_CreateChild_tooltip=Neues Element {0} unter dem Feature {1} erstellen
+_UI_CreateChild_description=Ein neues untergeordnetes Element des Typs {0} f\u00fcr das Feature {1} des ausgew\u00e4hlten Elements {2} erstellen.
+_UI_CreateSibling_description=Ein neues gleichgeordnetes Element des Typs {0} f\u00fcr das ausgew\u00e4hlte Element {2} unter dem Feature {1} des entsprechenden \u00fcbergeordneten Elements erstellen.
+_UI_PropertyDescriptor_description={0} von {1}
+_UI_Unknown_type=Objekt
+_UI_Unknown_datatype=Wert
+_UI_Unknown_feature=Unspezifiziert
+_UI_TestElement_id_feature=ID
+_UI_TestElement_elements_feature=Elemente
+_UI_TestElement_element_feature=Element
+_UI_ArticleType_id_feature=ID
+_UI_DomainRoot_intermediate_feature=Zwischen
+_UI_TestElementContainer_id_feature=ID
+_UI_DynamicContainmentTree_items_feature=Elemente
+_UI_DynamicContainmentItem_items_feature=Elemente
+_UI_TestElement_name_feature=Name:
\ No newline at end of file
diff --git a/i18n/org.eclipse.emf.ecp.view.dynamictree.model.edit.nl_de/pom.xml b/i18n/org.eclipse.emf.ecp.view.dynamictree.model.edit.nl_de/pom.xml
new file mode 100644
index 0000000..a503ab7
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.view.dynamictree.model.edit.nl_de/pom.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.eclipse.emf.ecp</groupId>
+    <artifactId>ecp-i18n-parent</artifactId>
+    <version>1.17.0-SNAPSHOT</version>
+    <relativePath>../../releng/org.eclipse.emf.ecp.releng.i18n/</relativePath>
+  </parent>
+  <groupId>org.eclipse.emf.ecp</groupId>
+  <artifactId>org.eclipse.emf.ecp.view.dynamictree.model.edit.nl_de</artifactId>
+  <version>1.17.0-SNAPSHOT</version>
+  <packaging>eclipse-plugin</packaging>
+</project>
diff --git a/i18n/org.eclipse.emf.ecp.view.group.model.edit.nl_de/.project b/i18n/org.eclipse.emf.ecp.view.group.model.edit.nl_de/.project
new file mode 100644
index 0000000..11dd204
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.view.group.model.edit.nl_de/.project
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.emf.ecp.view.group.model.edit.nl_de</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.sonar.ide.eclipse.core.sonarNature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+	</natures>
+</projectDescription>
diff --git a/i18n/org.eclipse.emf.ecp.view.group.model.edit.nl_de/META-INF/MANIFEST.MF b/i18n/org.eclipse.emf.ecp.view.group.model.edit.nl_de/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..bdbfaa4
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.view.group.model.edit.nl_de/META-INF/MANIFEST.MF
@@ -0,0 +1,7 @@
+Manifest-Version: 1.0
+Bundle-Name: org.eclipse.emf.ecp.view.group.model.edit German NLS Support
+Bundle-SymbolicName: org.eclipse.emf.ecp.view.group.model.edit.nl_de ;singleton:=true
+Bundle-Version: 1.17.0.qualifier
+Bundle-Vendor: Eclipse Modeling Project
+Fragment-Host: org.eclipse.emf.ecp.view.group.model.edit;bundle-version="[1.17.0,1.18.0)"
+Bundle-ManifestVersion: 2
diff --git a/i18n/org.eclipse.emf.ecp.view.group.model.edit.nl_de/about.html b/i18n/org.eclipse.emf.ecp.view.group.model.edit.nl_de/about.html
new file mode 100644
index 0000000..c80c773
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.view.group.model.edit.nl_de/about.html
@@ -0,0 +1,22 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
+<html>
+<head>
+<title>About</title>
+<meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+ 
+<p>January 22, 2008</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.</p>
+
+</body>
+</html>
diff --git a/i18n/org.eclipse.emf.ecp.view.group.model.edit.nl_de/build.properties b/i18n/org.eclipse.emf.ecp.view.group.model.edit.nl_de/build.properties
new file mode 100644
index 0000000..a23e4c4
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.view.group.model.edit.nl_de/build.properties
@@ -0,0 +1,3 @@
+bin.includes = META-INF/,\
+               plugin_de.properties,\
+               about.html
diff --git a/i18n/org.eclipse.emf.ecp.view.group.model.edit.nl_de/plugin_de.properties b/i18n/org.eclipse.emf.ecp.view.group.model.edit.nl_de/plugin_de.properties
new file mode 100644
index 0000000..489d64f
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.view.group.model.edit.nl_de/plugin_de.properties
@@ -0,0 +1,13 @@
+# Copyright by many contributors; see http://babel.eclipse.org/
+providerName=Eclipse-Modeling-Projekt
+_UI_CreateChild_text={0}
+_UI_CreateChild_text2={1} {0}
+_UI_CreateChild_text3={1}
+_UI_CreateChild_tooltip=Neues Element {0} unter dem Feature {1} erstellen
+_UI_CreateChild_description=Ein neues untergeordnetes Element des Typs {0} f\u00fcr das Feature {1} des ausgew\u00e4hlten Elements {2} erstellen.
+_UI_CreateSibling_description=Ein neues gleichgeordnetes Element des Typs {0} f\u00fcr das ausgew\u00e4hlte Element {2} unter dem Feature {1} des entsprechenden \u00fcbergeordneten Elements erstellen.
+_UI_PropertyDescriptor_description={0} von {1}
+_UI_Group_type=Gruppe
+_UI_Unknown_type=Objekt
+_UI_Unknown_datatype=Wert
+_UI_Unknown_feature=Unspezifiziert
\ No newline at end of file
diff --git a/i18n/org.eclipse.emf.ecp.view.group.model.edit.nl_de/pom.xml b/i18n/org.eclipse.emf.ecp.view.group.model.edit.nl_de/pom.xml
new file mode 100644
index 0000000..4318ec3
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.view.group.model.edit.nl_de/pom.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.eclipse.emf.ecp</groupId>
+    <artifactId>ecp-i18n-parent</artifactId>
+    <version>1.17.0-SNAPSHOT</version>
+    <relativePath>../../releng/org.eclipse.emf.ecp.releng.i18n/</relativePath>
+  </parent>
+  <groupId>org.eclipse.emf.ecp</groupId>
+  <artifactId>org.eclipse.emf.ecp.view.group.model.edit.nl_de</artifactId>
+  <version>1.17.0-SNAPSHOT</version>
+  <packaging>eclipse-plugin</packaging>
+</project>
diff --git a/i18n/org.eclipse.emf.ecp.view.groupedgrid.model.edit.nl_de/.project b/i18n/org.eclipse.emf.ecp.view.groupedgrid.model.edit.nl_de/.project
new file mode 100644
index 0000000..59a5753
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.view.groupedgrid.model.edit.nl_de/.project
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.emf.ecp.view.groupedgrid.model.edit.nl_de</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.sonar.ide.eclipse.core.sonarNature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+	</natures>
+</projectDescription>
diff --git a/i18n/org.eclipse.emf.ecp.view.groupedgrid.model.edit.nl_de/META-INF/MANIFEST.MF b/i18n/org.eclipse.emf.ecp.view.groupedgrid.model.edit.nl_de/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..bbe26db
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.view.groupedgrid.model.edit.nl_de/META-INF/MANIFEST.MF
@@ -0,0 +1,7 @@
+Manifest-Version: 1.0
+Bundle-Name: org.eclipse.emf.ecp.view.groupedgrid.model.edit German NLS Support
+Bundle-SymbolicName: org.eclipse.emf.ecp.view.groupedgrid.model.edit.nl_de ;singleton:=true
+Bundle-Version: 1.17.0.qualifier
+Bundle-Vendor: Eclipse Modeling Project
+Fragment-Host: org.eclipse.emf.ecp.view.groupedgrid.model.edit;bundle-version="[1.17.0,1.18.0)"
+Bundle-ManifestVersion: 2
diff --git a/i18n/org.eclipse.emf.ecp.view.groupedgrid.model.edit.nl_de/about.html b/i18n/org.eclipse.emf.ecp.view.groupedgrid.model.edit.nl_de/about.html
new file mode 100644
index 0000000..c80c773
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.view.groupedgrid.model.edit.nl_de/about.html
@@ -0,0 +1,22 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
+<html>
+<head>
+<title>About</title>
+<meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+ 
+<p>January 22, 2008</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.</p>
+
+</body>
+</html>
diff --git a/i18n/org.eclipse.emf.ecp.view.groupedgrid.model.edit.nl_de/build.properties b/i18n/org.eclipse.emf.ecp.view.groupedgrid.model.edit.nl_de/build.properties
new file mode 100644
index 0000000..a23e4c4
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.view.groupedgrid.model.edit.nl_de/build.properties
@@ -0,0 +1,3 @@
+bin.includes = META-INF/,\
+               plugin_de.properties,\
+               about.html
diff --git a/i18n/org.eclipse.emf.ecp.view.groupedgrid.model.edit.nl_de/plugin_de.properties b/i18n/org.eclipse.emf.ecp.view.groupedgrid.model.edit.nl_de/plugin_de.properties
new file mode 100644
index 0000000..800edd7
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.view.groupedgrid.model.edit.nl_de/plugin_de.properties
@@ -0,0 +1,19 @@
+# Copyright by many contributors; see http://babel.eclipse.org/
+providerName=Eclipse-Modeling-Projekt
+_UI_CreateChild_text={0}
+_UI_CreateChild_text2={1} {0}
+_UI_CreateChild_text3={1}
+_UI_CreateChild_tooltip=Neues Element {0} unter dem Feature {1} erstellen
+_UI_CreateChild_description=Ein neues untergeordnetes Element des Typs {0} f\u00fcr das Feature {1} des ausgew\u00e4hlten Elements {2} erstellen.
+_UI_CreateSibling_description=Ein neues gleichgeordnetes Element des Typs {0} f\u00fcr das ausgew\u00e4hlte Element {2} unter dem Feature {1} des entsprechenden \u00fcbergeordneten Elements erstellen.
+_UI_PropertyDescriptor_description={0} von {1}
+_UI_Group_type=Gruppe
+_UI_Row_type=Zeile
+_UI_Unknown_type=Objekt
+_UI_Unknown_datatype=Wert
+_UI_GroupedGrid_groups_feature=Gruppen
+_UI_Group_rows_feature=Zeilen
+_UI_Group_name_feature=Name:
+_UI_Row_children_feature=Untergeordnete Elemente
+_UI_Span_control_feature=Steuerung
+_UI_Unknown_feature=Unspezifiziert
\ No newline at end of file
diff --git a/i18n/org.eclipse.emf.ecp.view.groupedgrid.model.edit.nl_de/pom.xml b/i18n/org.eclipse.emf.ecp.view.groupedgrid.model.edit.nl_de/pom.xml
new file mode 100644
index 0000000..8e3b571
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.view.groupedgrid.model.edit.nl_de/pom.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.eclipse.emf.ecp</groupId>
+    <artifactId>ecp-i18n-parent</artifactId>
+    <version>1.17.0-SNAPSHOT</version>
+    <relativePath>../../releng/org.eclipse.emf.ecp.releng.i18n/</relativePath>
+  </parent>
+  <groupId>org.eclipse.emf.ecp</groupId>
+  <artifactId>org.eclipse.emf.ecp.view.groupedgrid.model.edit.nl_de</artifactId>
+  <version>1.17.0-SNAPSHOT</version>
+  <packaging>eclipse-plugin</packaging>
+</project>
diff --git a/i18n/org.eclipse.emf.ecp.view.horizontal.model.edit.nl_de/.project b/i18n/org.eclipse.emf.ecp.view.horizontal.model.edit.nl_de/.project
new file mode 100644
index 0000000..dd436cf
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.view.horizontal.model.edit.nl_de/.project
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.emf.ecp.view.horizontal.model.edit.nl_de</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.sonar.ide.eclipse.core.sonarNature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+	</natures>
+</projectDescription>
diff --git a/i18n/org.eclipse.emf.ecp.view.horizontal.model.edit.nl_de/META-INF/MANIFEST.MF b/i18n/org.eclipse.emf.ecp.view.horizontal.model.edit.nl_de/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..a236bea
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.view.horizontal.model.edit.nl_de/META-INF/MANIFEST.MF
@@ -0,0 +1,7 @@
+Manifest-Version: 1.0
+Bundle-Name: org.eclipse.emf.ecp.view.horizontal.model.edit German NLS Support
+Bundle-SymbolicName: org.eclipse.emf.ecp.view.horizontal.model.edit.nl_de ;singleton:=true
+Bundle-Version: 1.17.0.qualifier
+Bundle-Vendor: Eclipse Modeling Project
+Fragment-Host: org.eclipse.emf.ecp.view.horizontal.model.edit;bundle-version="[1.17.0,1.18.0)"
+Bundle-ManifestVersion: 2
diff --git a/i18n/org.eclipse.emf.ecp.view.horizontal.model.edit.nl_de/about.html b/i18n/org.eclipse.emf.ecp.view.horizontal.model.edit.nl_de/about.html
new file mode 100644
index 0000000..c80c773
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.view.horizontal.model.edit.nl_de/about.html
@@ -0,0 +1,22 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
+<html>
+<head>
+<title>About</title>
+<meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+ 
+<p>January 22, 2008</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.</p>
+
+</body>
+</html>
diff --git a/i18n/org.eclipse.emf.ecp.view.horizontal.model.edit.nl_de/build.properties b/i18n/org.eclipse.emf.ecp.view.horizontal.model.edit.nl_de/build.properties
new file mode 100644
index 0000000..a23e4c4
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.view.horizontal.model.edit.nl_de/build.properties
@@ -0,0 +1,3 @@
+bin.includes = META-INF/,\
+               plugin_de.properties,\
+               about.html
diff --git a/i18n/org.eclipse.emf.ecp.view.horizontal.model.edit.nl_de/plugin_de.properties b/i18n/org.eclipse.emf.ecp.view.horizontal.model.edit.nl_de/plugin_de.properties
new file mode 100644
index 0000000..ba03b68
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.view.horizontal.model.edit.nl_de/plugin_de.properties
@@ -0,0 +1,13 @@
+# Copyright by many contributors; see http://babel.eclipse.org/
+providerName=Eclipse-Modeling-Projekt
+_UI_CreateChild_text={0}
+_UI_CreateChild_text2={1} {0}
+_UI_CreateChild_text3={1}
+_UI_CreateChild_tooltip=Neues Element {0} unter dem Feature {1} erstellen
+_UI_CreateChild_description=Ein neues untergeordnetes Element des Typs {0} f\u00fcr das Feature {1} des ausgew\u00e4hlten Elements {2} erstellen.
+_UI_CreateSibling_description=Ein neues gleichgeordnetes Element des Typs {0} f\u00fcr das ausgew\u00e4hlte Element {2} unter dem Feature {1} des entsprechenden \u00fcbergeordneten Elements erstellen.
+_UI_PropertyDescriptor_description={0} von {1}
+_UI_Horizontal_type=Horizontal
+_UI_Unknown_type=Objekt
+_UI_Unknown_datatype=Wert
+_UI_Unknown_feature=Unspezifiziert
\ No newline at end of file
diff --git a/i18n/org.eclipse.emf.ecp.view.horizontal.model.edit.nl_de/pom.xml b/i18n/org.eclipse.emf.ecp.view.horizontal.model.edit.nl_de/pom.xml
new file mode 100644
index 0000000..2a50820
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.view.horizontal.model.edit.nl_de/pom.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.eclipse.emf.ecp</groupId>
+    <artifactId>ecp-i18n-parent</artifactId>
+    <version>1.17.0-SNAPSHOT</version>
+    <relativePath>../../releng/org.eclipse.emf.ecp.releng.i18n/</relativePath>
+  </parent>
+  <groupId>org.eclipse.emf.ecp</groupId>
+  <artifactId>org.eclipse.emf.ecp.view.horizontal.model.edit.nl_de</artifactId>
+  <version>1.17.0-SNAPSHOT</version>
+  <packaging>eclipse-plugin</packaging>
+</project>
diff --git a/i18n/org.eclipse.emf.ecp.view.label.model.edit.nl_de/.project b/i18n/org.eclipse.emf.ecp.view.label.model.edit.nl_de/.project
new file mode 100644
index 0000000..58cf32d
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.view.label.model.edit.nl_de/.project
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.emf.ecp.view.label.model.edit.nl_de</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.sonar.ide.eclipse.core.sonarNature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+	</natures>
+</projectDescription>
diff --git a/i18n/org.eclipse.emf.ecp.view.label.model.edit.nl_de/META-INF/MANIFEST.MF b/i18n/org.eclipse.emf.ecp.view.label.model.edit.nl_de/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..01b2296
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.view.label.model.edit.nl_de/META-INF/MANIFEST.MF
@@ -0,0 +1,7 @@
+Manifest-Version: 1.0
+Bundle-Name: org.eclipse.emf.ecp.view.label.model.edit German NLS Support
+Bundle-SymbolicName: org.eclipse.emf.ecp.view.label.model.edit.nl_de ;singleton:=true
+Bundle-Version: 1.17.0.qualifier
+Bundle-Vendor: Eclipse Modeling Project
+Fragment-Host: org.eclipse.emf.ecp.view.label.model.edit;bundle-version="[1.17.0,1.18.0)"
+Bundle-ManifestVersion: 2
diff --git a/i18n/org.eclipse.emf.ecp.view.label.model.edit.nl_de/about.html b/i18n/org.eclipse.emf.ecp.view.label.model.edit.nl_de/about.html
new file mode 100644
index 0000000..c80c773
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.view.label.model.edit.nl_de/about.html
@@ -0,0 +1,22 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
+<html>
+<head>
+<title>About</title>
+<meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+ 
+<p>January 22, 2008</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.</p>
+
+</body>
+</html>
diff --git a/i18n/org.eclipse.emf.ecp.view.label.model.edit.nl_de/build.properties b/i18n/org.eclipse.emf.ecp.view.label.model.edit.nl_de/build.properties
new file mode 100644
index 0000000..a23e4c4
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.view.label.model.edit.nl_de/build.properties
@@ -0,0 +1,3 @@
+bin.includes = META-INF/,\
+               plugin_de.properties,\
+               about.html
diff --git a/i18n/org.eclipse.emf.ecp.view.label.model.edit.nl_de/plugin_de.properties b/i18n/org.eclipse.emf.ecp.view.label.model.edit.nl_de/plugin_de.properties
new file mode 100644
index 0000000..52b91dd
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.view.label.model.edit.nl_de/plugin_de.properties
@@ -0,0 +1,16 @@
+# Copyright by many contributors; see http://babel.eclipse.org/
+providerName=Eclipse-Modeling-Projekt
+_UI_CreateChild_text={0}
+_UI_CreateChild_text2={1} {0}
+_UI_CreateChild_text3={1}
+_UI_CreateChild_tooltip=Neues Element {0} unter dem Feature {1} erstellen
+_UI_CreateChild_description=Ein neues untergeordnetes Element des Typs {0} f\u00fcr das Feature {1} des ausgew\u00e4hlten Elements {2} erstellen.
+_UI_CreateSibling_description=Ein neues gleichgeordnetes Element des Typs {0} f\u00fcr das ausgew\u00e4hlte Element {2} unter dem Feature {1} des entsprechenden \u00fcbergeordneten Elements erstellen.
+_UI_PropertyDescriptor_description={0} von {1}
+_UI_Label_type=Bezeichnung
+_UI_Unknown_type=Objekt
+_UI_Unknown_datatype=Wert
+_UI_Label_style_feature=Darstellung
+_UI_Unknown_feature=Unspezifiziert
+_UI_LabelStyle_Separator_literal=Trennzeichen
+_UI_VLabelStyle_Separator_literal=Trennzeichen
\ No newline at end of file
diff --git a/i18n/org.eclipse.emf.ecp.view.label.model.edit.nl_de/pom.xml b/i18n/org.eclipse.emf.ecp.view.label.model.edit.nl_de/pom.xml
new file mode 100644
index 0000000..f9a8e04
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.view.label.model.edit.nl_de/pom.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.eclipse.emf.ecp</groupId>
+    <artifactId>ecp-i18n-parent</artifactId>
+    <version>1.17.0-SNAPSHOT</version>
+    <relativePath>../../releng/org.eclipse.emf.ecp.releng.i18n/</relativePath>
+  </parent>
+  <groupId>org.eclipse.emf.ecp</groupId>
+  <artifactId>org.eclipse.emf.ecp.view.label.model.edit.nl_de</artifactId>
+  <version>1.17.0-SNAPSHOT</version>
+  <packaging>eclipse-plugin</packaging>
+</project>
diff --git a/i18n/org.eclipse.emf.ecp.view.model.edit.nl_de/.project b/i18n/org.eclipse.emf.ecp.view.model.edit.nl_de/.project
new file mode 100644
index 0000000..c30c94e
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.view.model.edit.nl_de/.project
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.emf.ecp.view.model.edit.nl_de</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.sonar.ide.eclipse.core.sonarNature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+	</natures>
+</projectDescription>
diff --git a/i18n/org.eclipse.emf.ecp.view.model.edit.nl_de/META-INF/MANIFEST.MF b/i18n/org.eclipse.emf.ecp.view.model.edit.nl_de/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..317b2d7
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.view.model.edit.nl_de/META-INF/MANIFEST.MF
@@ -0,0 +1,7 @@
+Manifest-Version: 1.0
+Bundle-Name: org.eclipse.emf.ecp.view.model.edit German NLS Support
+Bundle-SymbolicName: org.eclipse.emf.ecp.view.model.edit.nl_de ;singleton:=true
+Bundle-Version: 1.17.0.qualifier
+Bundle-Vendor: Eclipse Modeling Project
+Fragment-Host: org.eclipse.emf.ecp.view.model.edit;bundle-version="[1.17.0,1.18.0)"
+Bundle-ManifestVersion: 2
diff --git a/i18n/org.eclipse.emf.ecp.view.model.edit.nl_de/about.html b/i18n/org.eclipse.emf.ecp.view.model.edit.nl_de/about.html
new file mode 100644
index 0000000..c80c773
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.view.model.edit.nl_de/about.html
@@ -0,0 +1,22 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
+<html>
+<head>
+<title>About</title>
+<meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+ 
+<p>January 22, 2008</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.</p>
+
+</body>
+</html>
diff --git a/i18n/org.eclipse.emf.ecp.view.model.edit.nl_de/build.properties b/i18n/org.eclipse.emf.ecp.view.model.edit.nl_de/build.properties
new file mode 100644
index 0000000..a23e4c4
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.view.model.edit.nl_de/build.properties
@@ -0,0 +1,3 @@
+bin.includes = META-INF/,\
+               plugin_de.properties,\
+               about.html
diff --git a/i18n/org.eclipse.emf.ecp.view.model.edit.nl_de/plugin_de.properties b/i18n/org.eclipse.emf.ecp.view.model.edit.nl_de/plugin_de.properties
new file mode 100644
index 0000000..171a83c
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.view.model.edit.nl_de/plugin_de.properties
@@ -0,0 +1,74 @@
+# Copyright by many contributors; see http://babel.eclipse.org/
+_UI_CreateChild_text={0}
+_UI_CreateChild_text2={1} {0}
+_UI_CreateChild_text3={1}
+_UI_CreateChild_tooltip=Neues Element {0} unter dem Feature {1} erstellen
+_UI_CreateChild_description=Ein neues untergeordnetes Element des Typs {0} f\u00fcr das Feature {1} des ausgew\u00e4hlten Elements {2} erstellen.
+_UI_CreateSibling_description=Ein neues gleichgeordnetes Element des Typs {0} f\u00fcr das ausgew\u00e4hlte Element {2} unter dem Feature {1} des entsprechenden \u00fcbergeordneten Elements erstellen.
+_UI_PropertyDescriptor_description={0} von {1}
+_UI_ViewConfiguration_type=Konfiguration
+_UI_View_type=Ansicht
+_UI_Category_type=Kategorie
+_UI_Control_type=Steuerung
+_UI_Column_type=Spalte
+_UI_Group_type=Gruppe
+_UI_Unknown_type=Objekt
+_UI_Unknown_datatype=Wert
+_UI_ViewConfiguration_views_feature=Ansichten
+_UI_AbstractCategorization_name_feature=Name:
+_UI_Composite_name_feature=Name:
+_UI_Control_data_feature=Daten
+_UI_Control_targetFeature_feature=Ziel-Feature
+_UI_Control_hint_feature=Hinweis
+_UI_Control_readonly_feature=Schreibgesch\u00fctzt
+_UI_CustomComposite_bundle_feature=B\u00fcndel
+_UI_CustomComposite_className_feature=Klassenname
+_UI_Unknown_feature=Unspezifiziert
+_UI_Condition_type=Bedingung
+_UI_AbstractCategorization_condition_feature=Bedingung
+_UI_Composite_condition_feature=Bedingung
+_UI_Condition_attribute_feature=Attribut
+_UI_Rule_type=Regel
+_UI_AbstractCategorization_rule_feature=Regel
+_UI_Rule_condition_feature=Bedingung
+_UI_LeafCondition_attribute_feature=Attribut
+_UI_OrCondition_conditions_feature=Bedingungen
+_UI_AndCondition_conditions_feature=Bedingungen
+_UI_Composite_rule_feature=Regel
+_UI_ShowRule_hide_feature=Ausblenden
+_UI_EnableRule_disable_feature=Deaktivieren
+_UI_TreeCategory_targetFeature_feature=Ziel-Feature
+_UI_TableControl_columns_feature=Spalten
+_UI_TableColumn_attribute_feature=Attribut
+_UI_TableColumn_readOnly_feature=Schreibgesch\u00fctzt
+_UI_Renderable_rule_feature=Regel
+_UI_Action_type=Aktion
+_UI_AbstractCategorization_actions_feature=Aktionen
+_UI_Action_bundle_feature=B\u00fcndel
+_UI_Action_className_feature=Klassenname
+_UI_View_children_feature=Untergeordnete Elemente
+_UI_Attachment_type=Anhang
+_UI_Composite_attachments_feature=Anh\u00e4nge
+_UI_Alignment_Left_literal=Nach links
+_UI_Alignment_Top_literal=Oben
+_UI_Alignment_None_literal=Keine
+_UI_Renderable_visible_feature=Sichtbar
+_UI_Renderable_enabled_feature=Aktiviert
+_UI_Renderable_readonly_feature=Schreibgesch\u00fctzt
+_UI_Renderable_attachments_feature=Anh\u00e4nge
+_UI_Renderable_diagnostic_feature=Diagnose
+_UI_VDiagnostic_diagnostics_feature=Diagnose
+_UI_Element_type=Element
+_UI_Diagnostic_type=Diagnose
+_UI_Container_type=Beh\u00e4ltern
+_UI_Element_visible_feature=Sichtbar
+_UI_Element_enabled_feature=Aktiviert
+_UI_Element_readonly_feature=Schreibgesch\u00fctzt
+_UI_Element_diagnostic_feature=Diagnose
+_UI_Element_attachments_feature=Anh\u00e4nge
+_UI_Diagnostic_diagnostics_feature=Diagnose
+_UI_ContainableElement_name_feature=Name:
+_UI_Container_children_feature=Untergeordnete Elemente
+_UI_Element_name_feature=Name:
+_UI_LabelAlignment_Left_literal=Nach links
+_UI_LabelAlignment_None_literal=Keine
\ No newline at end of file
diff --git a/i18n/org.eclipse.emf.ecp.view.model.edit.nl_de/pom.xml b/i18n/org.eclipse.emf.ecp.view.model.edit.nl_de/pom.xml
new file mode 100644
index 0000000..93a8b2f
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.view.model.edit.nl_de/pom.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.eclipse.emf.ecp</groupId>
+    <artifactId>ecp-i18n-parent</artifactId>
+    <version>1.17.0-SNAPSHOT</version>
+    <relativePath>../../releng/org.eclipse.emf.ecp.releng.i18n/</relativePath>
+  </parent>
+  <groupId>org.eclipse.emf.ecp</groupId>
+  <artifactId>org.eclipse.emf.ecp.view.model.edit.nl_de</artifactId>
+  <version>1.17.0-SNAPSHOT</version>
+  <packaging>eclipse-plugin</packaging>
+</project>
diff --git a/i18n/org.eclipse.emf.ecp.view.model.editor.nl_de/.project b/i18n/org.eclipse.emf.ecp.view.model.editor.nl_de/.project
new file mode 100644
index 0000000..ab497f0
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.view.model.editor.nl_de/.project
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.emf.ecp.view.model.editor.nl_de</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.sonar.ide.eclipse.core.sonarNature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+	</natures>
+</projectDescription>
diff --git a/i18n/org.eclipse.emf.ecp.view.model.editor.nl_de/META-INF/MANIFEST.MF b/i18n/org.eclipse.emf.ecp.view.model.editor.nl_de/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..1eab0ad
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.view.model.editor.nl_de/META-INF/MANIFEST.MF
@@ -0,0 +1,7 @@
+Manifest-Version: 1.0
+Bundle-Name: org.eclipse.emf.ecp.view.model.editor German NLS Support
+Bundle-SymbolicName: org.eclipse.emf.ecp.view.model.editor.nl_de ;singleton:=true
+Bundle-Version: 1.17.0.qualifier
+Bundle-Vendor: Eclipse Modeling Project
+Fragment-Host: org.eclipse.emf.ecp.view.model.editor;bundle-version="[1.17.0,1.18.0)"
+Bundle-ManifestVersion: 2
diff --git a/i18n/org.eclipse.emf.ecp.view.model.editor.nl_de/about.html b/i18n/org.eclipse.emf.ecp.view.model.editor.nl_de/about.html
new file mode 100644
index 0000000..c80c773
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.view.model.editor.nl_de/about.html
@@ -0,0 +1,22 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
+<html>
+<head>
+<title>About</title>
+<meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+ 
+<p>January 22, 2008</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.</p>
+
+</body>
+</html>
diff --git a/i18n/org.eclipse.emf.ecp.view.model.editor.nl_de/build.properties b/i18n/org.eclipse.emf.ecp.view.model.editor.nl_de/build.properties
new file mode 100644
index 0000000..a23e4c4
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.view.model.editor.nl_de/build.properties
@@ -0,0 +1,3 @@
+bin.includes = META-INF/,\
+               plugin_de.properties,\
+               about.html
diff --git a/i18n/org.eclipse.emf.ecp.view.model.editor.nl_de/plugin_de.properties b/i18n/org.eclipse.emf.ecp.view.model.editor.nl_de/plugin_de.properties
new file mode 100644
index 0000000..052a47d
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.view.model.editor.nl_de/plugin_de.properties
@@ -0,0 +1,28 @@
+# Copyright by many contributors; see http://babel.eclipse.org/
+_UI_CreateChild_menu_item=&Neues untergeordnetes Element
+_UI_CreateSibling_menu_item=N&eues gleichgeordnetes Element
+_UI_ShowPropertiesView_menu_item=Sicht '&Eigenschaften' anzeigen
+_UI_RefreshViewer_menu_item=&Aktualisieren
+_UI_SelectionPage_label=Auswahl
+_UI_ParentPage_label=\u00dcbergeordnet
+_UI_ListPage_label=Liste
+_UI_TreePage_label=Baumstruktur
+_UI_TablePage_label=Tabelle
+_UI_TreeWithColumnsPage_label=Baumstruktur mit Spalten
+_UI_ObjectColumn_label=Objekt
+_UI_SelfColumn_label=Selbst
+_UI_NoObjectSelected=Kein Objekt ausgew\u00e4hlt
+_UI_SingleObjectSelected=Ausgew\u00e4hltes Objekt: {0}
+_UI_MultiObjectSelected={0} Objekte ausgew\u00e4hlt
+_UI_OpenEditorError_label=Editor \u00f6ffnen
+_UI_CreateModelError_message=Es sind Probleme in der Datei '{0}'  gefunden worden
+_UI_ViewEditorFilenameDefaultBase=Eigenes
+_UI_ViewEditorFilenameExtensions=Ansicht
+_UI_Wizard_label=Neu
+_WARN_FilenameExtension=Der Dateiname muss auf ".{0}" enden
+_WARN_FilenameExtensions=Der Dateiname mu\u00df eine der folgenden Erweiterungen besitzen: {0}
+_UI_ModelObject=Modellobjekt
+_UI_XMLEncoding=XML-Codierung
+_UI_Wizard_initial_object_description=Zu erstellendes Modellobjekt ausw\u00e4hlen
+_UI_FileConflict_label=Dateikonflikt
+_WARN_FileConflict=Es sind nicht gespeicherte \u00c4nderungen vorhanden, die nicht mit au\u00dferhalb des Editors vorgenommenen \u00c4nderungen vertr\u00e4glich sind.  Sollen die \u00c4nderungen dieses Editors gel\u00f6scht werden?
\ No newline at end of file
diff --git a/i18n/org.eclipse.emf.ecp.view.model.editor.nl_de/pom.xml b/i18n/org.eclipse.emf.ecp.view.model.editor.nl_de/pom.xml
new file mode 100644
index 0000000..5f31b62
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.view.model.editor.nl_de/pom.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.eclipse.emf.ecp</groupId>
+    <artifactId>ecp-i18n-parent</artifactId>
+    <version>1.17.0-SNAPSHOT</version>
+    <relativePath>../../releng/org.eclipse.emf.ecp.releng.i18n/</relativePath>
+  </parent>
+  <groupId>org.eclipse.emf.ecp</groupId>
+  <artifactId>org.eclipse.emf.ecp.view.model.editor.nl_de</artifactId>
+  <version>1.17.0-SNAPSHOT</version>
+  <packaging>eclipse-plugin</packaging>
+</project>
diff --git a/i18n/org.eclipse.emf.ecp.view.model.nl_de/.project b/i18n/org.eclipse.emf.ecp.view.model.nl_de/.project
new file mode 100644
index 0000000..ad88fcb
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.view.model.nl_de/.project
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.emf.ecp.view.model.nl_de</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.sonar.ide.eclipse.core.sonarNature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+	</natures>
+</projectDescription>
diff --git a/i18n/org.eclipse.emf.ecp.view.model.nl_de/META-INF/MANIFEST.MF b/i18n/org.eclipse.emf.ecp.view.model.nl_de/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..5bd8800
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.view.model.nl_de/META-INF/MANIFEST.MF
@@ -0,0 +1,7 @@
+Manifest-Version: 1.0
+Bundle-Name: org.eclipse.emf.ecp.view.model German NLS Support
+Bundle-SymbolicName: org.eclipse.emf.ecp.view.model.nl_de ;singleton:=true
+Bundle-Version: 1.17.0.qualifier
+Bundle-Vendor: Eclipse Modeling Project
+Fragment-Host: org.eclipse.emf.ecp.view.model;bundle-version="[1.17.0,1.18.0)"
+Bundle-ManifestVersion: 2
diff --git a/i18n/org.eclipse.emf.ecp.view.model.nl_de/about.html b/i18n/org.eclipse.emf.ecp.view.model.nl_de/about.html
new file mode 100644
index 0000000..c80c773
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.view.model.nl_de/about.html
@@ -0,0 +1,22 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
+<html>
+<head>
+<title>About</title>
+<meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+ 
+<p>January 22, 2008</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.</p>
+
+</body>
+</html>
diff --git a/i18n/org.eclipse.emf.ecp.view.model.nl_de/build.properties b/i18n/org.eclipse.emf.ecp.view.model.nl_de/build.properties
new file mode 100644
index 0000000..fff72c7
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.view.model.nl_de/build.properties
@@ -0,0 +1,4 @@
+bin.includes = META-INF/,\
+               about.html,\
+               plugin_de.properties
+
diff --git a/i18n/org.eclipse.emf.ecp.view.model.nl_de/plugin_de.properties b/i18n/org.eclipse.emf.ecp.view.model.nl_de/plugin_de.properties
new file mode 100644
index 0000000..102d567
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.view.model.nl_de/plugin_de.properties
@@ -0,0 +1,37 @@
+# Copyright by many contributors; see http://babel.eclipse.org/
+_UI_CreateChild_text={0}
+_UI_CreateChild_text2={1} {0}
+_UI_CreateChild_text3={1}
+_UI_CreateChild_tooltip=Neues Element {0} unter dem Feature {1} erstellen
+_UI_CreateChild_description=Ein neues untergeordnetes Element des Typs {0} f\u00fcr das Feature {1} des ausgew\u00e4hlten Elements {2} erstellen.
+_UI_CreateSibling_description=Ein neues gleichgeordnetes Element des Typs {0} f\u00fcr das ausgew\u00e4hlte Element {2} unter dem Feature {1} des entsprechenden \u00fcbergeordneten Elements erstellen.
+_UI_PropertyDescriptor_description={0} von {1}
+_UI_View_type=Ansicht
+_UI_Rule_type=Regel
+_UI_Condition_type=Bedingung
+_UI_Category_type=Kategorie
+_UI_Control_type=Steuerung
+_UI_Column_type=Spalte
+_UI_Group_type=Gruppe
+_UI_Unknown_type=Objekt
+_UI_Unknown_datatype=Wert
+_UI_AbstractCategorization_name_feature=Name:
+_UI_AbstractCategorization_rule_feature=Regel
+_UI_Rule_condition_feature=Bedingung
+_UI_ShowRule_hide_feature=Ausblenden
+_UI_EnableRule_disable_feature=Deaktivieren
+_UI_LeafCondition_attribute_feature=Attribut
+_UI_OrCondition_conditions_feature=Bedingungen
+_UI_AndCondition_conditions_feature=Bedingungen
+_UI_Composite_name_feature=Name:
+_UI_Composite_rule_feature=Regel
+_UI_Control_targetFeature_feature=Ziel-Feature
+_UI_Control_hint_feature=Hinweis
+_UI_Control_readonly_feature=Schreibgesch\u00fctzt
+_UI_TableControl_columns_feature=Spalten
+_UI_TableColumn_attribute_feature=Attribut
+_UI_TableColumn_readOnly_feature=Schreibgesch\u00fctzt
+_UI_CustomComposite_bundle_feature=B\u00fcndel
+_UI_CustomComposite_className_feature=Klassenname
+_UI_TreeCategory_targetFeature_feature=Ziel-Feature
+_UI_Unknown_feature=Unspezifiziert
\ No newline at end of file
diff --git a/i18n/org.eclipse.emf.ecp.view.model.nl_de/pom.xml b/i18n/org.eclipse.emf.ecp.view.model.nl_de/pom.xml
new file mode 100644
index 0000000..1a42ac5
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.view.model.nl_de/pom.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.eclipse.emf.ecp</groupId>
+    <artifactId>ecp-i18n-parent</artifactId>
+    <version>1.17.0-SNAPSHOT</version>
+    <relativePath>../../releng/org.eclipse.emf.ecp.releng.i18n/</relativePath>
+  </parent>
+  <groupId>org.eclipse.emf.ecp</groupId>
+  <artifactId>org.eclipse.emf.ecp.view.model.nl_de</artifactId>
+  <version>1.17.0-SNAPSHOT</version>
+  <packaging>eclipse-plugin</packaging>
+</project>
diff --git a/i18n/org.eclipse.emf.ecp.view.rule.model.edit.nl_de/.project b/i18n/org.eclipse.emf.ecp.view.rule.model.edit.nl_de/.project
new file mode 100644
index 0000000..0435a80
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.view.rule.model.edit.nl_de/.project
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.emf.ecp.view.rule.model.edit.nl_de</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.sonar.ide.eclipse.core.sonarNature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+	</natures>
+</projectDescription>
diff --git a/i18n/org.eclipse.emf.ecp.view.rule.model.edit.nl_de/META-INF/MANIFEST.MF b/i18n/org.eclipse.emf.ecp.view.rule.model.edit.nl_de/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..b599489
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.view.rule.model.edit.nl_de/META-INF/MANIFEST.MF
@@ -0,0 +1,7 @@
+Manifest-Version: 1.0
+Bundle-Name: org.eclipse.emf.ecp.view.rule.model.edit German NLS Support
+Bundle-SymbolicName: org.eclipse.emf.ecp.view.rule.model.edit.nl_de ;singleton:=true
+Bundle-Version: 1.17.0.qualifier
+Bundle-Vendor: Eclipse Modeling Project
+Fragment-Host: org.eclipse.emf.ecp.view.rule.model.edit;bundle-version="[1.17.0,1.18.0)"
+Bundle-ManifestVersion: 2
diff --git a/i18n/org.eclipse.emf.ecp.view.rule.model.edit.nl_de/about.html b/i18n/org.eclipse.emf.ecp.view.rule.model.edit.nl_de/about.html
new file mode 100644
index 0000000..c80c773
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.view.rule.model.edit.nl_de/about.html
@@ -0,0 +1,22 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
+<html>
+<head>
+<title>About</title>
+<meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+ 
+<p>January 22, 2008</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.</p>
+
+</body>
+</html>
diff --git a/i18n/org.eclipse.emf.ecp.view.rule.model.edit.nl_de/build.properties b/i18n/org.eclipse.emf.ecp.view.rule.model.edit.nl_de/build.properties
new file mode 100644
index 0000000..1f1d4d6
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.view.rule.model.edit.nl_de/build.properties
@@ -0,0 +1,3 @@
+bin.includes = META-INF/,\
+               about.html,\
+               plugin_de.properties
diff --git a/i18n/org.eclipse.emf.ecp.view.rule.model.edit.nl_de/plugin_de.properties b/i18n/org.eclipse.emf.ecp.view.rule.model.edit.nl_de/plugin_de.properties
new file mode 100644
index 0000000..ad41143
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.view.rule.model.edit.nl_de/plugin_de.properties
@@ -0,0 +1,46 @@
+# Copyright by many contributors; see http://babel.eclipse.org/
+_UI_CreateChild_text={0}
+_UI_CreateChild_text2={1} {0}
+_UI_CreateChild_text3={1}
+_UI_CreateChild_tooltip=Neues Element {0} unter dem Feature {1} erstellen
+_UI_CreateChild_description=Ein neues untergeordnetes Element des Typs {0} f\u00fcr das Feature {1} des ausgew\u00e4hlten Elements {2} erstellen.
+_UI_CreateSibling_description=Ein neues gleichgeordnetes Element des Typs {0} f\u00fcr das ausgew\u00e4hlte Element {2} unter dem Feature {1} des entsprechenden \u00fcbergeordneten Elements erstellen.
+_UI_PropertyDescriptor_description={0} von {1}
+_UI_Condition_type=Bedingung
+_UI_Rule_type=Regel
+_UI_Unknown_type=Objekt
+_UI_Unknown_datatype=Wert
+_UI_LeafCondition_attribute_feature=Attribut
+_UI_OrCondition_conditions_feature=Bedingungen
+_UI_AndCondition_conditions_feature=Bedingungen
+_UI_Rule_condition_feature=Bedingung
+_UI_ShowRule_hide_feature=Ausblenden
+_UI_EnableRule_disable_feature=Deaktivieren
+_UI_Unknown_feature=Unspezifiziert
+_UI_View_type=Ansicht
+_UI_Category_type=Kategorie
+_UI_Control_type=Steuerung
+_UI_Column_type=Spalte
+_UI_Group_type=Gruppe
+_UI_Action_type=Aktion
+_UI_Attachment_type=Anhang
+_UI_View_children_feature=Untergeordnete Elemente
+_UI_AbstractCategorization_name_feature=Name:
+_UI_AbstractCategorization_actions_feature=Aktionen
+_UI_Composite_name_feature=Name:
+_UI_Control_targetFeature_feature=Ziel-Feature
+_UI_Control_hint_feature=Hinweis
+_UI_TableControl_columns_feature=Spalten
+_UI_TableColumn_attribute_feature=Attribut
+_UI_TableColumn_readOnly_feature=Schreibgesch\u00fctzt
+_UI_CustomComposite_bundle_feature=B\u00fcndel
+_UI_CustomComposite_className_feature=Klassenname
+_UI_Renderable_visible_feature=Sichtbar
+_UI_Renderable_enabled_feature=Aktiviert
+_UI_Renderable_readonly_feature=Schreibgesch\u00fctzt
+_UI_Renderable_attachments_feature=Anh\u00e4nge
+_UI_Action_bundle_feature=B\u00fcndel
+_UI_Action_className_feature=Klassenname
+_UI_Alignment_Left_literal=Nach links
+_UI_Alignment_Top_literal=Oben
+_UI_Alignment_None_literal=Keine
\ No newline at end of file
diff --git a/i18n/org.eclipse.emf.ecp.view.rule.model.edit.nl_de/pom.xml b/i18n/org.eclipse.emf.ecp.view.rule.model.edit.nl_de/pom.xml
new file mode 100644
index 0000000..9f4dae1
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.view.rule.model.edit.nl_de/pom.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.eclipse.emf.ecp</groupId>
+    <artifactId>ecp-i18n-parent</artifactId>
+    <version>1.17.0-SNAPSHOT</version>
+    <relativePath>../../releng/org.eclipse.emf.ecp.releng.i18n/</relativePath>
+  </parent>
+  <groupId>org.eclipse.emf.ecp</groupId>
+  <artifactId>org.eclipse.emf.ecp.view.rule.model.edit.nl_de</artifactId>
+  <version>1.17.0-SNAPSHOT</version>
+  <packaging>eclipse-plugin</packaging>
+</project>
diff --git a/i18n/org.eclipse.emf.ecp.view.table.model.edit.nl_de/.project b/i18n/org.eclipse.emf.ecp.view.table.model.edit.nl_de/.project
new file mode 100644
index 0000000..7fb9d32
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.view.table.model.edit.nl_de/.project
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.emf.ecp.view.table.model.edit.nl_de</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.sonar.ide.eclipse.core.sonarNature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+	</natures>
+</projectDescription>
diff --git a/i18n/org.eclipse.emf.ecp.view.table.model.edit.nl_de/META-INF/MANIFEST.MF b/i18n/org.eclipse.emf.ecp.view.table.model.edit.nl_de/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..f3349b6
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.view.table.model.edit.nl_de/META-INF/MANIFEST.MF
@@ -0,0 +1,7 @@
+Manifest-Version: 1.0
+Bundle-Name: org.eclipse.emf.ecp.view.table.model.edit German NLS Support
+Bundle-SymbolicName: org.eclipse.emf.ecp.view.table.model.edit.nl_de ;singleton:=true
+Bundle-Version: 1.17.0.qualifier
+Bundle-Vendor: Eclipse Modeling Project
+Fragment-Host: org.eclipse.emf.ecp.view.table.model.edit;bundle-version="[1.17.0,1.18.0)"
+Bundle-ManifestVersion: 2
diff --git a/i18n/org.eclipse.emf.ecp.view.table.model.edit.nl_de/about.html b/i18n/org.eclipse.emf.ecp.view.table.model.edit.nl_de/about.html
new file mode 100644
index 0000000..c80c773
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.view.table.model.edit.nl_de/about.html
@@ -0,0 +1,22 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
+<html>
+<head>
+<title>About</title>
+<meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+ 
+<p>January 22, 2008</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.</p>
+
+</body>
+</html>
diff --git a/i18n/org.eclipse.emf.ecp.view.table.model.edit.nl_de/build.properties b/i18n/org.eclipse.emf.ecp.view.table.model.edit.nl_de/build.properties
new file mode 100644
index 0000000..fff72c7
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.view.table.model.edit.nl_de/build.properties
@@ -0,0 +1,4 @@
+bin.includes = META-INF/,\
+               about.html,\
+               plugin_de.properties
+
diff --git a/i18n/org.eclipse.emf.ecp.view.table.model.edit.nl_de/plugin_de.properties b/i18n/org.eclipse.emf.ecp.view.table.model.edit.nl_de/plugin_de.properties
new file mode 100644
index 0000000..ada259f
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.view.table.model.edit.nl_de/plugin_de.properties
@@ -0,0 +1,18 @@
+# Copyright by many contributors; see http://babel.eclipse.org/
+_UI_CreateChild_text={0}
+_UI_CreateChild_text2={1} {0}
+_UI_CreateChild_text3={1}
+_UI_CreateChild_tooltip=Neues Element {0} unter dem Feature {1} erstellen
+_UI_CreateChild_description=Ein neues untergeordnetes Element des Typs {0} f\u00fcr das Feature {1} des ausgew\u00e4hlten Elements {2} erstellen.
+_UI_CreateSibling_description=Ein neues gleichgeordnetes Element des Typs {0} f\u00fcr das ausgew\u00e4hlte Element {2} unter dem Feature {1} des entsprechenden \u00fcbergeordneten Elements erstellen.
+_UI_PropertyDescriptor_description={0} von {1}
+_UI_TableColumn_type=Spalte
+_UI_Unknown_type=Objekt
+_UI_Unknown_datatype=Wert
+_UI_TableControl_columns_feature=Spalten
+_UI_TableColumn_attribute_feature=Attribut
+_UI_TableColumn_readOnly_feature=Schreibgesch\u00fctzt
+_UI_Unknown_feature=Unspezifiziert
+_UI_TableDomainModelReference_columns_feature=Spalten
+_UI_TableColumnConfiguration_readOnly_feature=Schreibgesch\u00fctzt
+_UI_ReadOnlyColumnConfiguration_readOnly_feature=Schreibgesch\u00fctzt
\ No newline at end of file
diff --git a/i18n/org.eclipse.emf.ecp.view.table.model.edit.nl_de/pom.xml b/i18n/org.eclipse.emf.ecp.view.table.model.edit.nl_de/pom.xml
new file mode 100644
index 0000000..b2974ec
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.view.table.model.edit.nl_de/pom.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.eclipse.emf.ecp</groupId>
+    <artifactId>ecp-i18n-parent</artifactId>
+    <version>1.17.0-SNAPSHOT</version>
+    <relativePath>../../releng/org.eclipse.emf.ecp.releng.i18n/</relativePath>
+  </parent>
+  <groupId>org.eclipse.emf.ecp</groupId>
+  <artifactId>org.eclipse.emf.ecp.view.table.model.edit.nl_de</artifactId>
+  <version>1.17.0-SNAPSHOT</version>
+  <packaging>eclipse-plugin</packaging>
+</project>
diff --git a/i18n/org.eclipse.emf.ecp.view.table.model.nl_de/.project b/i18n/org.eclipse.emf.ecp.view.table.model.nl_de/.project
new file mode 100644
index 0000000..549e5cc
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.view.table.model.nl_de/.project
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.emf.ecp.view.table.model.nl_de</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.sonar.ide.eclipse.core.sonarNature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+	</natures>
+</projectDescription>
diff --git a/i18n/org.eclipse.emf.ecp.view.table.model.nl_de/META-INF/MANIFEST.MF b/i18n/org.eclipse.emf.ecp.view.table.model.nl_de/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..14d20f6
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.view.table.model.nl_de/META-INF/MANIFEST.MF
@@ -0,0 +1,7 @@
+Manifest-Version: 1.0
+Bundle-Name: org.eclipse.emf.ecp.view.table.model German NLS Support
+Bundle-SymbolicName: org.eclipse.emf.ecp.view.table.model.nl_de ;singleton:=true
+Bundle-Version: 1.17.0.qualifier
+Bundle-Vendor: Eclipse Modeling Project
+Fragment-Host: org.eclipse.emf.ecp.view.table.model;bundle-version="[1.17.0,1.18.0)"
+Bundle-ManifestVersion: 2
diff --git a/i18n/org.eclipse.emf.ecp.view.table.model.nl_de/about.html b/i18n/org.eclipse.emf.ecp.view.table.model.nl_de/about.html
new file mode 100644
index 0000000..c80c773
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.view.table.model.nl_de/about.html
@@ -0,0 +1,22 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
+<html>
+<head>
+<title>About</title>
+<meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+ 
+<p>January 22, 2008</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.</p>
+
+</body>
+</html>
diff --git a/i18n/org.eclipse.emf.ecp.view.table.model.nl_de/build.properties b/i18n/org.eclipse.emf.ecp.view.table.model.nl_de/build.properties
new file mode 100644
index 0000000..a854d1d
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.view.table.model.nl_de/build.properties
@@ -0,0 +1,2 @@
+bin.includes = META-INF/,\
+               about.html
diff --git a/i18n/org.eclipse.emf.ecp.view.table.model.nl_de/pom.xml b/i18n/org.eclipse.emf.ecp.view.table.model.nl_de/pom.xml
new file mode 100644
index 0000000..e493f13
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.view.table.model.nl_de/pom.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.eclipse.emf.ecp</groupId>
+    <artifactId>ecp-i18n-parent</artifactId>
+    <version>1.17.0-SNAPSHOT</version>
+    <relativePath>../../releng/org.eclipse.emf.ecp.releng.i18n/</relativePath>
+  </parent>
+  <groupId>org.eclipse.emf.ecp</groupId>
+  <artifactId>org.eclipse.emf.ecp.view.table.model.nl_de</artifactId>
+  <version>1.17.0-SNAPSHOT</version>
+  <packaging>eclipse-plugin</packaging>
+</project>
diff --git a/i18n/org.eclipse.emf.ecp.view.template.model.edit.nl_de/.project b/i18n/org.eclipse.emf.ecp.view.template.model.edit.nl_de/.project
new file mode 100644
index 0000000..47086db
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.view.template.model.edit.nl_de/.project
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.emf.ecp.view.template.model.edit.nl_de</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.sonar.ide.eclipse.core.sonarNature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+	</natures>
+</projectDescription>
diff --git a/i18n/org.eclipse.emf.ecp.view.template.model.edit.nl_de/META-INF/MANIFEST.MF b/i18n/org.eclipse.emf.ecp.view.template.model.edit.nl_de/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..f151e77
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.view.template.model.edit.nl_de/META-INF/MANIFEST.MF
@@ -0,0 +1,7 @@
+Manifest-Version: 1.0
+Bundle-Name: org.eclipse.emf.ecp.view.template.model.edit German NLS Support
+Bundle-SymbolicName: org.eclipse.emf.ecp.view.template.model.edit.nl_de ;singleton:=true
+Bundle-Version: 1.17.0.qualifier
+Bundle-Vendor: Eclipse Modeling Project
+Fragment-Host: org.eclipse.emf.ecp.view.template.model.edit;bundle-version="[1.17.0,1.18.0)"
+Bundle-ManifestVersion: 2
diff --git a/i18n/org.eclipse.emf.ecp.view.template.model.edit.nl_de/about.html b/i18n/org.eclipse.emf.ecp.view.template.model.edit.nl_de/about.html
new file mode 100644
index 0000000..c80c773
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.view.template.model.edit.nl_de/about.html
@@ -0,0 +1,22 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
+<html>
+<head>
+<title>About</title>
+<meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+ 
+<p>January 22, 2008</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.</p>
+
+</body>
+</html>
diff --git a/i18n/org.eclipse.emf.ecp.view.template.model.edit.nl_de/build.properties b/i18n/org.eclipse.emf.ecp.view.template.model.edit.nl_de/build.properties
new file mode 100644
index 0000000..58cadc4
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.view.template.model.edit.nl_de/build.properties
@@ -0,0 +1,4 @@
+bin.includes = META-INF/,\
+               plugin_de.properties,\
+               about.html
+
diff --git a/i18n/org.eclipse.emf.ecp.view.template.model.edit.nl_de/plugin_de.properties b/i18n/org.eclipse.emf.ecp.view.template.model.edit.nl_de/plugin_de.properties
new file mode 100644
index 0000000..2bc5ab3
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.view.template.model.edit.nl_de/plugin_de.properties
@@ -0,0 +1,107 @@
+# Copyright by many contributors; see http://babel.eclipse.org/
+_UI_CreateChild_text={0}
+_UI_CreateChild_text2={1} {0}
+_UI_CreateChild_text3={1}
+_UI_CreateChild_tooltip=Neues Element {0} unter dem Feature {1} erstellen
+_UI_CreateChild_description=Ein neues untergeordnetes Element des Typs {0} f\u00fcr das Feature {1} des ausgew\u00e4hlten Elements {2} erstellen.
+_UI_CreateSibling_description=Ein neues gleichgeordnetes Element des Typs {0} f\u00fcr das ausgew\u00e4hlte Element {2} unter dem Feature {1} des entsprechenden \u00fcbergeordneten Elements erstellen.
+_UI_PropertyDescriptor_description={0} von {1}
+_UI_Unknown_type=Objekt
+_UI_Unknown_datatype=Wert
+_UI_Unknown_feature=Unspezifiziert
+_UI_Style_type=Darstellung
+_UI_ViewTemplate_styles_feature=Stile
+_UI_Style_selector_feature=Selektor
+_UI_Style_properties_feature=Eigenschaften
+_UI_AlignmentStyleProperty_type_feature=Typ
+_UI_FontPropertiesStyleProperty_italic_feature=Kursiv
+_UI_FontPropertiesStyleProperty_bold_feature=Fett
+_UI_FontPropertiesStyleProperty_height_feature=H\u00f6he
+_UI_FontPropertiesStyleProperty_fontName_feature=Schriftname
+_UI_ViewModelElementSelector_type=Selektor
+_UI_EAttribute_type=EAttribute
+_UI_EAnnotation_type=EAnnotation
+_UI_EClass_type=EClass
+_UI_EClassifier_type=EClassifier
+_UI_EDataType_type=EData Type
+_UI_EEnum_type=EEnum
+_UI_EEnumLiteral_type=EEnum Literal
+_UI_EFactory_type=EFactory
+_UI_EModelElement_type=EModel-Element
+_UI_ENamedElement_type=ENamed Element
+_UI_EObject_type=EObject
+_UI_EOperation_type=EOperation
+_UI_EPackage_type=EPackage
+_UI_EParameter_type=EParameter
+_UI_EReference_type=EReference
+_UI_EStructuralFeature_type=EStructural-Funktion
+_UI_ETypedElement_type=ETyped Element
+_UI_ViewModelElementSelector_attribute_feature=Attribut
+_UI_ViewModelElementSelector_attributeValue_feature=Attributwert
+_UI_EAttribute_iD_feature=Kennung
+_UI_EAttribute_eAttributeType_feature=EAttribute Type
+_UI_EAnnotation_source_feature=Quelle
+_UI_EAnnotation_details_feature=Details
+_UI_EAnnotation_eModelElement_feature=EModel-Element
+_UI_EAnnotation_contents_feature=Inhalte
+_UI_EAnnotation_references_feature=Referenzen
+_UI_EClass_abstract_feature=Abstrakt
+_UI_EClass_interface_feature=Schnittstelle
+_UI_EClass_eSuperTypes_feature=ESuper Types
+_UI_EClass_eOperations_feature=EOperations
+_UI_EClass_eAllAttributes_feature=EAll Attributes
+_UI_EClass_eAllReferences_feature=EAll References
+_UI_EClass_eReferences_feature=EReferences
+_UI_EClass_eAttributes_feature=EAttributes
+_UI_EClass_eAllContainments_feature=EAll Containments
+_UI_EClass_eAllOperations_feature=EAll Operations
+_UI_EClass_eAllStructuralFeatures_feature=EAll Structural Features
+_UI_EClass_eAllSuperTypes_feature=EAll Super Types
+_UI_EClass_eIDAttribute_feature=EID-Attribut
+_UI_EClass_eStructuralFeatures_feature=EStructural Features
+_UI_EClassifier_instanceClassName_feature=Instance Class Name
+_UI_EClassifier_instanceClass_feature=Exemplarklasse
+_UI_EClassifier_defaultValue_feature=Standardwert
+_UI_EClassifier_ePackage_feature=EPackage
+_UI_EDataType_serializable_feature=Serializable
+_UI_EEnum_eLiterals_feature=ELiterals
+_UI_EEnumLiteral_value_feature=Wert
+_UI_EEnumLiteral_instance_feature=Instance
+_UI_EEnumLiteral_literal_feature=Literal
+_UI_EEnumLiteral_eEnum_feature=EEnum
+_UI_EFactory_ePackage_feature=EPackage
+_UI_EModelElement_eAnnotations_feature=EAnnotations
+_UI_ENamedElement_name_feature=Name:
+_UI_EOperation_eContainingClass_feature=EContaining Class
+_UI_EOperation_eParameters_feature=EParameters
+_UI_EOperation_eExceptions_feature=EExceptions
+_UI_EPackage_nsURI_feature=Ns URI
+_UI_EPackage_nsPrefix_feature=Ns Prefix
+_UI_EPackage_eFactoryInstance_feature=EFactory Instance
+_UI_EPackage_eClassifiers_feature=EClassifiers
+_UI_EPackage_eSubpackages_feature=ESubpackages
+_UI_EPackage_eSuperPackage_feature=ESuper Package
+_UI_EParameter_eOperation_feature=EOperation
+_UI_EReference_containment_feature=Eind\u00e4mmung
+_UI_EReference_container_feature=Beh\u00e4ltern
+_UI_EReference_resolveProxies_feature=Resolve Proxies
+_UI_EReference_eOpposite_feature=EOpposite
+_UI_EReference_eReferenceType_feature=EReference Type
+_UI_EStructuralFeature_changeable_feature=Changeable
+_UI_EStructuralFeature_volatile_feature=Volatile
+_UI_EStructuralFeature_transient_feature=Transient
+_UI_EStructuralFeature_defaultValueLiteral_feature=Default Value Literal
+_UI_EStructuralFeature_defaultValue_feature=Standardwert
+_UI_EStructuralFeature_unsettable_feature=Unsettable
+_UI_EStructuralFeature_derived_feature=Abgeleitet (Derived)
+_UI_EStructuralFeature_eContainingClass_feature=EContaining Class
+_UI_ETypedElement_ordered_feature=Sortiert
+_UI_ETypedElement_unique_feature=Eindeutig
+_UI_ETypedElement_lowerBound_feature=Unterer Grenze
+_UI_ETypedElement_upperBound_feature=Obere Grenze
+_UI_ETypedElement_many_feature=Viele
+_UI_ETypedElement_required_feature=Erforderlich
+_UI_ETypedElement_eType_feature=EType
+_UI_EStringToStringMapEntry_key_feature=Schl\u00fcssel
+_UI_EStringToStringMapEntry_value_feature=Wert
+_UI_EGenericType_eClassifier_feature=EClassifier
\ No newline at end of file
diff --git a/i18n/org.eclipse.emf.ecp.view.template.model.edit.nl_de/pom.xml b/i18n/org.eclipse.emf.ecp.view.template.model.edit.nl_de/pom.xml
new file mode 100644
index 0000000..ee23837
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.view.template.model.edit.nl_de/pom.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.eclipse.emf.ecp</groupId>
+    <artifactId>ecp-i18n-parent</artifactId>
+    <version>1.17.0-SNAPSHOT</version>
+    <relativePath>../../releng/org.eclipse.emf.ecp.releng.i18n/</relativePath>
+  </parent>
+  <groupId>org.eclipse.emf.ecp</groupId>
+  <artifactId>org.eclipse.emf.ecp.view.template.model.edit.nl_de</artifactId>
+  <version>1.17.0-SNAPSHOT</version>
+  <packaging>eclipse-plugin</packaging>
+</project>
diff --git a/i18n/org.eclipse.emf.ecp.view.treemasterdetail.model.edit.nl_de/.project b/i18n/org.eclipse.emf.ecp.view.treemasterdetail.model.edit.nl_de/.project
new file mode 100644
index 0000000..96cc1bb
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.view.treemasterdetail.model.edit.nl_de/.project
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.emf.ecp.view.treemasterdetail.model.edit.nl_de</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.sonar.ide.eclipse.core.sonarNature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+	</natures>
+</projectDescription>
diff --git a/i18n/org.eclipse.emf.ecp.view.treemasterdetail.model.edit.nl_de/META-INF/MANIFEST.MF b/i18n/org.eclipse.emf.ecp.view.treemasterdetail.model.edit.nl_de/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..f4babf0
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.view.treemasterdetail.model.edit.nl_de/META-INF/MANIFEST.MF
@@ -0,0 +1,7 @@
+Manifest-Version: 1.0
+Bundle-Name: org.eclipse.emf.ecp.view.treemasterdetail.model.edit German NLS Support
+Bundle-SymbolicName: org.eclipse.emf.ecp.view.treemasterdetail.model.edit.nl_de ;singleton:=true
+Bundle-Version: 1.17.0.qualifier
+Bundle-Vendor: Eclipse Modeling Project
+Fragment-Host: org.eclipse.emf.ecp.view.treemasterdetail.model.edit;bundle-version="[1.17.0,1.18.0)"
+Bundle-ManifestVersion: 2
diff --git a/i18n/org.eclipse.emf.ecp.view.treemasterdetail.model.edit.nl_de/about.html b/i18n/org.eclipse.emf.ecp.view.treemasterdetail.model.edit.nl_de/about.html
new file mode 100644
index 0000000..c80c773
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.view.treemasterdetail.model.edit.nl_de/about.html
@@ -0,0 +1,22 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
+<html>
+<head>
+<title>About</title>
+<meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+ 
+<p>January 22, 2008</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.</p>
+
+</body>
+</html>
diff --git a/i18n/org.eclipse.emf.ecp.view.treemasterdetail.model.edit.nl_de/build.properties b/i18n/org.eclipse.emf.ecp.view.treemasterdetail.model.edit.nl_de/build.properties
new file mode 100644
index 0000000..58cadc4
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.view.treemasterdetail.model.edit.nl_de/build.properties
@@ -0,0 +1,4 @@
+bin.includes = META-INF/,\
+               plugin_de.properties,\
+               about.html
+
diff --git a/i18n/org.eclipse.emf.ecp.view.treemasterdetail.model.edit.nl_de/plugin_de.properties b/i18n/org.eclipse.emf.ecp.view.treemasterdetail.model.edit.nl_de/plugin_de.properties
new file mode 100644
index 0000000..6c83a50
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.view.treemasterdetail.model.edit.nl_de/plugin_de.properties
@@ -0,0 +1,11 @@
+# Copyright by many contributors; see http://babel.eclipse.org/
+_UI_CreateChild_text={0}
+_UI_CreateChild_text2={1} {0}
+_UI_CreateChild_text3={1}
+_UI_CreateChild_tooltip=Neues Element {0} unter dem Feature {1} erstellen
+_UI_CreateChild_description=Ein neues untergeordnetes Element des Typs {0} f\u00fcr das Feature {1} des ausgew\u00e4hlten Elements {2} erstellen.
+_UI_CreateSibling_description=Ein neues gleichgeordnetes Element des Typs {0} f\u00fcr das ausgew\u00e4hlte Element {2} unter dem Feature {1} des entsprechenden \u00fcbergeordneten Elements erstellen.
+_UI_PropertyDescriptor_description={0} von {1}
+_UI_Unknown_type=Objekt
+_UI_Unknown_datatype=Wert
+_UI_Unknown_feature=Unspezifiziert
\ No newline at end of file
diff --git a/i18n/org.eclipse.emf.ecp.view.treemasterdetail.model.edit.nl_de/pom.xml b/i18n/org.eclipse.emf.ecp.view.treemasterdetail.model.edit.nl_de/pom.xml
new file mode 100644
index 0000000..899d184
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.view.treemasterdetail.model.edit.nl_de/pom.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.eclipse.emf.ecp</groupId>
+    <artifactId>ecp-i18n-parent</artifactId>
+    <version>1.17.0-SNAPSHOT</version>
+    <relativePath>../../releng/org.eclipse.emf.ecp.releng.i18n/</relativePath>
+  </parent>
+  <groupId>org.eclipse.emf.ecp</groupId>
+  <artifactId>org.eclipse.emf.ecp.view.treemasterdetail.model.edit.nl_de</artifactId>
+  <version>1.17.0-SNAPSHOT</version>
+  <packaging>eclipse-plugin</packaging>
+</project>
diff --git a/i18n/org.eclipse.emf.ecp.view.vertical.model.edit.nl_de/.project b/i18n/org.eclipse.emf.ecp.view.vertical.model.edit.nl_de/.project
new file mode 100644
index 0000000..fe02527c
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.view.vertical.model.edit.nl_de/.project
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.emf.ecp.view.vertical.model.edit.nl_de</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.sonar.ide.eclipse.core.sonarNature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+	</natures>
+</projectDescription>
diff --git a/i18n/org.eclipse.emf.ecp.view.vertical.model.edit.nl_de/META-INF/MANIFEST.MF b/i18n/org.eclipse.emf.ecp.view.vertical.model.edit.nl_de/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..629cff6
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.view.vertical.model.edit.nl_de/META-INF/MANIFEST.MF
@@ -0,0 +1,7 @@
+Manifest-Version: 1.0
+Bundle-Name: org.eclipse.emf.ecp.view.vertical.model.edit German NLS Support
+Bundle-SymbolicName: org.eclipse.emf.ecp.view.vertical.model.edit.nl_de ;singleton:=true
+Bundle-Version: 1.17.0.qualifier
+Bundle-Vendor: Eclipse Modeling Project
+Fragment-Host: org.eclipse.emf.ecp.view.vertical.model.edit;bundle-version="[1.17.0,1.18.0)"
+Bundle-ManifestVersion: 2
diff --git a/i18n/org.eclipse.emf.ecp.view.vertical.model.edit.nl_de/about.html b/i18n/org.eclipse.emf.ecp.view.vertical.model.edit.nl_de/about.html
new file mode 100644
index 0000000..c80c773
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.view.vertical.model.edit.nl_de/about.html
@@ -0,0 +1,22 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
+<html>
+<head>
+<title>About</title>
+<meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+ 
+<p>January 22, 2008</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.</p>
+
+</body>
+</html>
diff --git a/i18n/org.eclipse.emf.ecp.view.vertical.model.edit.nl_de/build.properties b/i18n/org.eclipse.emf.ecp.view.vertical.model.edit.nl_de/build.properties
new file mode 100644
index 0000000..58cadc4
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.view.vertical.model.edit.nl_de/build.properties
@@ -0,0 +1,4 @@
+bin.includes = META-INF/,\
+               plugin_de.properties,\
+               about.html
+
diff --git a/i18n/org.eclipse.emf.ecp.view.vertical.model.edit.nl_de/plugin_de.properties b/i18n/org.eclipse.emf.ecp.view.vertical.model.edit.nl_de/plugin_de.properties
new file mode 100644
index 0000000..5bd2a59
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.view.vertical.model.edit.nl_de/plugin_de.properties
@@ -0,0 +1,13 @@
+# Copyright by many contributors; see http://babel.eclipse.org/
+providerName=Eclipse-Modeling-Projekt
+_UI_CreateChild_text={0}
+_UI_CreateChild_text2={1} {0}
+_UI_CreateChild_text3={1}
+_UI_CreateChild_tooltip=Neues Element {0} unter dem Feature {1} erstellen
+_UI_CreateChild_description=Ein neues untergeordnetes Element des Typs {0} f\u00fcr das Feature {1} des ausgew\u00e4hlten Elements {2} erstellen.
+_UI_CreateSibling_description=Ein neues gleichgeordnetes Element des Typs {0} f\u00fcr das ausgew\u00e4hlte Element {2} unter dem Feature {1} des entsprechenden \u00fcbergeordneten Elements erstellen.
+_UI_PropertyDescriptor_description={0} von {1}
+_UI_Vertical_type=Vertikal
+_UI_Unknown_type=Objekt
+_UI_Unknown_datatype=Wert
+_UI_Unknown_feature=Unspezifiziert
\ No newline at end of file
diff --git a/i18n/org.eclipse.emf.ecp.view.vertical.model.edit.nl_de/pom.xml b/i18n/org.eclipse.emf.ecp.view.vertical.model.edit.nl_de/pom.xml
new file mode 100644
index 0000000..cf9d0f5
--- /dev/null
+++ b/i18n/org.eclipse.emf.ecp.view.vertical.model.edit.nl_de/pom.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.eclipse.emf.ecp</groupId>
+    <artifactId>ecp-i18n-parent</artifactId>
+    <version>1.17.0-SNAPSHOT</version>
+    <relativePath>../../releng/org.eclipse.emf.ecp.releng.i18n/</relativePath>
+  </parent>
+  <groupId>org.eclipse.emf.ecp</groupId>
+  <artifactId>org.eclipse.emf.ecp.view.vertical.model.edit.nl_de</artifactId>
+  <version>1.17.0-SNAPSHOT</version>
+  <packaging>eclipse-plugin</packaging>
+</project>
diff --git a/releng/org.eclipse.emf.ecp.products/org.eclipse.emf.ecp.3x.product b/releng/org.eclipse.emf.ecp.products/org.eclipse.emf.ecp.3x.product
index e08b0f6..e109469 100644
--- a/releng/org.eclipse.emf.ecp.products/org.eclipse.emf.ecp.3x.product
+++ b/releng/org.eclipse.emf.ecp.products/org.eclipse.emf.ecp.3x.product
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <?pde version="3.5"?>
 
-<product name="%productName" uid="org.eclipse.emf.ecp.3x" id="org.eclipse.emf.ecp.application.e3.product" application="org.eclipse.emf.ecp.application.e3.application" version="1.16.0.qualifier" useFeatures="true" includeLaunchers="true">
+<product name="%productName" uid="org.eclipse.emf.ecp.3x" id="org.eclipse.emf.ecp.application.e3.product" application="org.eclipse.emf.ecp.application.e3.application" version="1.17.0.qualifier" useFeatures="true" includeLaunchers="true">
 
    <aboutInfo>
       <image path="/org.eclipse.emf.ecp.application.e3/icons/eclipse_lg.gif"/>
@@ -64,6 +64,7 @@
       <feature id="org.eclipse.emf.ecp.emfforms.idetooling.feature"/>
       <feature id="org.eclipse.e4.rcp"/>
       <feature id="org.eclipse.rcp"/>
+      <feature id="org.eclipse.emfforms.swt.control.multiattribute.feature"/>
    </features>
 
    <configurations>
diff --git a/releng/org.eclipse.emf.ecp.products/org.eclipse.emf.ecp.application.e4.product b/releng/org.eclipse.emf.ecp.products/org.eclipse.emf.ecp.application.e4.product
index 4bdeca3..7c472bb 100644
--- a/releng/org.eclipse.emf.ecp.products/org.eclipse.emf.ecp.application.e4.product
+++ b/releng/org.eclipse.emf.ecp.products/org.eclipse.emf.ecp.application.e4.product
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <?pde version="3.5"?>
 
-<product name="org.eclipse.emf.ecp.e4.application" uid="org.eclipse.emf.ecp.application.e4.demo" id="org.eclipse.emf.ecp.application.e4.product" application="org.eclipse.e4.ui.workbench.swt.E4Application" version="1.16.0.qualifier" useFeatures="false" includeLaunchers="true">
+<product name="org.eclipse.emf.ecp.e4.application" uid="org.eclipse.emf.ecp.application.e4.demo" id="org.eclipse.emf.ecp.application.e4.product" application="org.eclipse.e4.ui.workbench.swt.E4Application" version="1.17.0.qualifier" useFeatures="false" includeLaunchers="true">
 
    <configIni use="default">
    </configIni>
diff --git a/releng/org.eclipse.emf.ecp.products/pom.xml b/releng/org.eclipse.emf.ecp.products/pom.xml
index ba2e6ca..edee774 100644
--- a/releng/org.eclipse.emf.ecp.products/pom.xml
+++ b/releng/org.eclipse.emf.ecp.products/pom.xml
@@ -5,12 +5,12 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng/</relativePath>
   </parent>
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emf.ecp.products</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-repository</packaging>
   
   <build>
diff --git a/releng/org.eclipse.emf.ecp.rap.parent/pom.xml b/releng/org.eclipse.emf.ecp.rap.parent/pom.xml
index 071b035..b8834af 100644
--- a/releng/org.eclipse.emf.ecp.rap.parent/pom.xml
+++ b/releng/org.eclipse.emf.ecp.rap.parent/pom.xml
@@ -5,7 +5,7 @@
 	<modelVersion>4.0.0</modelVersion>
 	<groupId>org.eclipse.emf.ecp</groupId>
 	<artifactId>ecp-rap-parent</artifactId>
-	<version>1.16.0-SNAPSHOT</version>
+	<version>1.17.0-SNAPSHOT</version>
 	<packaging>pom</packaging>
 	
 	<!-- Parent for the rap product. Needed to reduce environments.
diff --git a/releng/org.eclipse.emf.ecp.rap.products/pom.xml b/releng/org.eclipse.emf.ecp.rap.products/pom.xml
index 66747c1..1a0fe98 100644
--- a/releng/org.eclipse.emf.ecp.rap.products/pom.xml
+++ b/releng/org.eclipse.emf.ecp.rap.products/pom.xml
@@ -5,12 +5,12 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-rap-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../org.eclipse.emf.ecp.rap.parent/</relativePath>
   </parent>
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emf.ecp.rap.products</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-repository</packaging>
 
   <properties>
diff --git a/releng/org.eclipse.emf.ecp.releng.bundles/pom.xml b/releng/org.eclipse.emf.ecp.releng.bundles/pom.xml
index 16bd6da..3bb9977 100644
--- a/releng/org.eclipse.emf.ecp.releng.bundles/pom.xml
+++ b/releng/org.eclipse.emf.ecp.releng.bundles/pom.xml
@@ -6,12 +6,12 @@
 	<parent>
 		<groupId>org.eclipse.emf.ecp</groupId>
 		<artifactId>ecp-parent</artifactId>
-		<version>1.16.0-SNAPSHOT</version>
+		<version>1.17.0-SNAPSHOT</version>
 		<relativePath>../../releng/org.eclipse.emf.ecp.releng/</relativePath>
 	</parent>
 	<groupId>org.eclipse.emf.ecp</groupId>
 	<artifactId>ecp-bundles-parent</artifactId>
-	<version>1.16.0-SNAPSHOT</version>
+	<version>1.17.0-SNAPSHOT</version>
 	<packaging>pom</packaging>
 
 	<modules>
@@ -180,6 +180,8 @@
 		<module>../../bundles/org.eclipse.emf.ecp.view.template.model.edit</module>
 		<!-- Template Helper Feature -->
 		<module>../../bundles/org.eclipse.emf.ecp.view.template.service</module>
+		<module>../../bundles/org.eclipse.emf.ecp.view.template.annotation.model</module>
+		<module>../../bundles/org.eclipse.emf.ecp.view.template.annotation.model.edit</module>
 
 		<!-- IDE -->
 		<module>../../bundles/org.eclipse.emf.ecp.ide.editor.view</module>
@@ -296,7 +298,13 @@
 		<!-- Localization Services -->
 		<module>../../bundles/org.eclipse.emfforms.localization</module>
 		<module>../../bundles/org.eclipse.emfforms.view.model.localization</module>
-		
+	
+        <!-- DataTemplate Services -->
+        <module>../../bundles/org.eclipse.emfforms.core.services.datatemplate</module>
+        <module>../../bundles/org.eclipse.emfforms.datatemplate.model</module>
+        <module>../../bundles/org.eclipse.emfforms.datatemplate.model.edit</module>
+        <module>../../bundles/org.eclipse.emfforms.datatemplate.tooling</module>
+	
 		<module>../../bundles/org.eclipse.emfforms.swt.control.text.autocomplete</module>
 		<module>../../bundles/org.eclipse.emfforms.swt.control.text.richtext</module>
 		
diff --git a/releng/org.eclipse.emf.ecp.releng.examples/pom.xml b/releng/org.eclipse.emf.ecp.releng.examples/pom.xml
index 1242629..d2a85b1 100644
--- a/releng/org.eclipse.emf.ecp.releng.examples/pom.xml
+++ b/releng/org.eclipse.emf.ecp.releng.examples/pom.xml
@@ -6,12 +6,12 @@
 	<parent>
 		<groupId>org.eclipse.emf.ecp</groupId>
 		<artifactId>ecp-parent</artifactId>
-		<version>1.16.0-SNAPSHOT</version>
+		<version>1.17.0-SNAPSHOT</version>
 		<relativePath>../../releng/org.eclipse.emf.ecp.releng/</relativePath>
 	</parent>
 	<groupId>org.eclipse.emf.ecp</groupId>
 	<artifactId>ecp-examples-parent</artifactId>
-	<version>1.16.0-SNAPSHOT</version>
+	<version>1.17.0-SNAPSHOT</version>
 	<packaging>pom</packaging>
 
 	<modules>
@@ -27,7 +27,12 @@
 		<module>../../examples/org.eclipse.emf.ecp.makeithappen.application.sample.e3</module>
 		<module>../../examples/org.eclipse.emf.ecp.makeithappen.application.sample.e4</module>
 		<module>../../examples/org.eclipse.emf.ecp.makeithappen.application.sample.rap</module>
-		<module>../../examples/org.eclipse.emf.ecp.makeithappen.application.sample.rap.j2ee</module>		
+		<module>../../examples/org.eclipse.emf.ecp.makeithappen.application.sample.rap.j2ee</module>
+		<!--  coffee example -->
+		<module>../../examples/org.eclipse.emfforms.coffee.feature</module>
+		<module>../../examples/org.eclipse.emfforms.coffee.model</module>
+		<module>../../examples/org.eclipse.emfforms.coffee.model.edit</module>		
+		<module>../../examples/org.eclipse.emfforms.coffee.model.viewmodel</module>
 	</modules>
 
 	<build>
diff --git a/releng/org.eclipse.emf.ecp.releng.features/pom.xml b/releng/org.eclipse.emf.ecp.releng.features/pom.xml
index 032ca4f..758a4a5 100644
--- a/releng/org.eclipse.emf.ecp.releng.features/pom.xml
+++ b/releng/org.eclipse.emf.ecp.releng.features/pom.xml
@@ -6,12 +6,12 @@
 	<parent>
 		<groupId>org.eclipse.emf.ecp</groupId>
 		<artifactId>ecp-parent</artifactId>
-		<version>1.16.0-SNAPSHOT</version>
+		<version>1.17.0-SNAPSHOT</version>
 		<relativePath>../../releng/org.eclipse.emf.ecp.releng/</relativePath>
 	</parent>
 	<groupId>org.eclipse.emf.ecp</groupId>
 	<artifactId>ecp-features-parent</artifactId>
-	<version>1.16.0-SNAPSHOT</version>
+	<version>1.17.0-SNAPSHOT</version>
 	<packaging>pom</packaging>
 
 	<modules>
@@ -109,6 +109,10 @@
 		
 		<module>../../features/org.eclipse.emfforms.rulerepository.feature</module>
 		
+		<module>../../features/org.eclipse.emfforms.datatemplate.feature</module>
+		<module>../../features/org.eclipse.emfforms.datatemplate.ide.feature</module>
+		
+		<module>../../features/org.eclipse.emf.ecp.i18n.feature</module>
 	</modules>
 
 	<!-- Parent used for features. This POM contains all build steps for code signing. -->
@@ -129,6 +133,7 @@
 				</executions>
 				<configuration>
 					<excludes>
+						<feature id="org.eclipse.emf.ecp.i18n.feature"/>
 						<feature id="org.eclipse.emf.ecp.license.feature"/>
 					</excludes>
 					<labelSuffix>&#xA0;incl. Sources</labelSuffix>
diff --git a/releng/org.eclipse.emf.ecp.releng.i18n/.project b/releng/org.eclipse.emf.ecp.releng.i18n/.project
new file mode 100644
index 0000000..a3077bb
--- /dev/null
+++ b/releng/org.eclipse.emf.ecp.releng.i18n/.project
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.emf.ecp.releng.i18n</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+	</buildSpec>
+	<natures>
+	</natures>
+</projectDescription>
diff --git a/releng/org.eclipse.emf.ecp.releng.i18n/pom.xml b/releng/org.eclipse.emf.ecp.releng.i18n/pom.xml
new file mode 100644
index 0000000..3570ace
--- /dev/null
+++ b/releng/org.eclipse.emf.ecp.releng.i18n/pom.xml
@@ -0,0 +1,143 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
+	xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+	<modelVersion>4.0.0</modelVersion>
+	<parent>
+		<groupId>org.eclipse.emf.ecp</groupId>
+		<artifactId>ecp-parent</artifactId>
+		<version>1.17.0-SNAPSHOT</version>
+		<relativePath>../../releng/org.eclipse.emf.ecp.releng/</relativePath>
+	</parent>
+	<groupId>org.eclipse.emf.ecp</groupId>
+	<artifactId>ecp-i18n-parent</artifactId>
+	<version>1.17.0-SNAPSHOT</version>
+	<packaging>pom</packaging>
+
+	<!-- modules -->
+	<modules>
+		<module>../../i18n/org.eclipse.emf.ecp.core.nl_de</module>
+		<module>../../i18n/org.eclipse.emf.ecp.diffmerge.model.edit.nl_de</module>
+		<module>../../i18n/org.eclipse.emf.ecp.diffmerge.swt.nl_de</module>
+		<module>../../i18n/org.eclipse.emf.ecp.edit.nl_de</module>
+		<module>../../i18n/org.eclipse.emf.ecp.edit.swt.nl_de</module>
+		<module>../../i18n/org.eclipse.emf.ecp.ide.editor.view.nl_de</module>
+		<module>../../i18n/org.eclipse.emf.ecp.makeithappen.model.edit.nl_de</module>
+		<module>../../i18n/org.eclipse.emf.ecp.makeithappen.wizards.nl_de</module>
+		<module>../../i18n/org.eclipse.emf.ecp.test.model.edit.nl_de</module>
+		<module>../../i18n/org.eclipse.emf.ecp.ui.e3.nl_de</module>
+		<module>../../i18n/org.eclipse.emf.ecp.ui.nl_de</module>
+		<module>../../i18n/org.eclipse.emf.ecp.ui.validation.nl_de</module>
+		<module>../../i18n/org.eclipse.emf.ecp.ui.view.editor.controls.nl_de</module>
+		<module>../../i18n/org.eclipse.emf.ecp.validation.nl_de</module>
+		<module>../../i18n/org.eclipse.emf.ecp.view.categorization.model.edit.nl_de</module>
+		<module>../../i18n/org.eclipse.emf.ecp.view.core.swt.nl_de</module>
+		<module>../../i18n/org.eclipse.emf.ecp.view.custom.model.edit.nl_de</module>
+		<module>../../i18n/org.eclipse.emf.ecp.view.custom.model.nl_de</module>
+		<module>../../i18n/org.eclipse.emf.ecp.view.dynamictree.model.edit.nl_de</module>
+		<module>../../i18n/org.eclipse.emf.ecp.view.group.model.edit.nl_de</module>
+		<module>../../i18n/org.eclipse.emf.ecp.view.groupedgrid.model.edit.nl_de</module>
+		<module>../../i18n/org.eclipse.emf.ecp.view.horizontal.model.edit.nl_de</module>
+		<module>../../i18n/org.eclipse.emf.ecp.view.label.model.edit.nl_de</module>
+		<module>../../i18n/org.eclipse.emf.ecp.view.model.edit.nl_de</module>
+		<module>../../i18n/org.eclipse.emf.ecp.view.model.editor.nl_de</module>
+		<module>../../i18n/org.eclipse.emf.ecp.view.model.nl_de</module>
+		<module>../../i18n/org.eclipse.emf.ecp.view.rule.model.edit.nl_de</module>
+		<module>../../i18n/org.eclipse.emf.ecp.view.table.model.edit.nl_de</module>
+		<module>../../i18n/org.eclipse.emf.ecp.view.table.model.nl_de</module>
+		<module>../../i18n/org.eclipse.emf.ecp.view.template.model.edit.nl_de</module>
+		<module>../../i18n/org.eclipse.emf.ecp.view.treemasterdetail.model.edit.nl_de</module>
+		<module>../../i18n/org.eclipse.emf.ecp.view.vertical.model.edit.nl_de</module>
+	</modules>
+
+	<!-- <build>
+		<plugins>
+			1.
+			<plugin>
+				<groupId>org.eclipse.tycho</groupId>
+				<artifactId>tycho-source-plugin</artifactId>
+				<executions>
+					<execution>
+						<id>attach-source</id>
+						<goals>
+							<goal>plugin-source</goal>
+						</goals>
+					</execution>
+				</executions>
+			</plugin>
+		</plugins>
+	</build> -->
+	
+	<profiles>
+		<!-- 2. -->
+		<profile>
+			<id>build-server</id>
+			<build>
+				<plugins>
+					<!-- 3.a -->
+					<plugin>
+						<groupId>org.eclipse.tycho.extras</groupId>
+						<artifactId>tycho-pack200a-plugin</artifactId>
+						<version>${tycho-version}</version>
+						<executions>
+							<execution>
+								<id>pack200-normalize</id>
+								<goals>
+									<goal>normalize</goal>
+								</goals>
+							</execution>
+						</executions>
+					</plugin>
+					<plugin>
+						<groupId>org.eclipse.cbi.maven.plugins</groupId>
+						<artifactId>eclipse-jarsigner-plugin</artifactId>
+						<version>${jarsigner-version}</version>
+						<executions>
+							<execution>
+								<id>sign</id>
+								<goals>
+									<goal>sign</goal>
+								</goals>
+							</execution>
+						</executions>
+						<configuration>
+							<excludeInnerJars>true</excludeInnerJars>
+						</configuration>
+					</plugin>
+					<!-- 3.b -->
+					<plugin>
+						<groupId>org.eclipse.tycho.extras</groupId>
+						<artifactId>tycho-pack200b-plugin</artifactId>
+						<version>${tycho-version}</version>
+						<executions>
+							<execution>
+								<id>pack200-pack</id>
+								<goals>
+									<goal>pack</goal>
+								</goals>
+							</execution>
+						</executions>
+					</plugin>
+					<!-- 4. -->
+					<plugin>
+						<groupId>org.eclipse.tycho</groupId>
+						<artifactId>tycho-p2-plugin</artifactId>
+						<version>${tycho-version}</version>
+						<executions>
+							<execution>
+								<id>attach-p2-metadata</id>
+								<phase>package</phase>
+								<goals>
+									<goal>p2-metadata</goal>
+								</goals>
+							</execution>
+						</executions>
+						<configuration>
+							<defaultP2Metadata>false</defaultP2Metadata>
+						</configuration>
+					</plugin>
+				</plugins>
+			</build>
+		</profile>
+	</profiles>
+</project>
diff --git a/releng/org.eclipse.emf.ecp.releng.tests/pom.xml b/releng/org.eclipse.emf.ecp.releng.tests/pom.xml
index 4881ce8..e3af6bf 100644
--- a/releng/org.eclipse.emf.ecp.releng.tests/pom.xml
+++ b/releng/org.eclipse.emf.ecp.releng.tests/pom.xml
@@ -5,18 +5,18 @@
 	<modelVersion>4.0.0</modelVersion>
 	<groupId>org.eclipse.emf.ecp</groupId>
 	<artifactId>ecp-tests-parent</artifactId>
-	<version>1.16.0-SNAPSHOT</version>
+	<version>1.17.0-SNAPSHOT</version>
 	<packaging>pom</packaging>
 	<parent>
 		<groupId>org.eclipse.emf.ecp</groupId>
 		<artifactId>ecp-parent</artifactId>
-		<version>1.16.0-SNAPSHOT</version>
+		<version>1.17.0-SNAPSHOT</version>
 		<relativePath>../../releng/org.eclipse.emf.ecp.releng/</relativePath>
 	</parent>
 	
 	
 	<properties>
-		<test-vmargs></test-vmargs>
+		<baseTestArgLine></baseTestArgLine>
 	</properties>
 	
 	<profiles>
@@ -28,7 +28,7 @@
 				</os>
 			</activation>
 			<properties>
-				<test-vmargs>-XstartOnFirstThread</test-vmargs>
+				<baseTestArgLine>-XstartOnFirstThread</baseTestArgLine>
 			</properties>
 		</profile>
 		<profile>
@@ -77,6 +77,7 @@
 	<modules>
 		<!-- Bundles/Features -->
 		<module>../../bundles/org.eclipse.emf.ecp.test.common</module>
+		<module>../../tests/org.eclipse.emf.ecp.view.table.test.common</module>
 		<module>../../tests/org.eclipse.emfforms.swt.common.test</module>
 		<module>../../tests/org.eclipse.emf.ecp.view.dynamictree.model</module>
         	<module>../../tests/org.eclipse.emf.ecp.view.dynamictree.model.edit</module>
@@ -109,8 +110,7 @@
 		<module>../../tests/org.eclipse.emf.ecp.view.model.edit.test</module>
 		<module>../../tests/org.eclipse.emf.ecp.view.model.integrationtest</module>
 		<module>../../tests/org.eclipse.emf.ecp.view.model.provider.xmi.test</module>
-		
-		
+		<module>../../tests/org.eclipse.emf.ecp.view.model.preview.common.test</module>		
 		
 		<module>../../tests/org.eclipse.emf.ecp.view.table.ui.swt.test</module>
 		<module>../../tests/org.eclipse.emf.ecp.view.table.ui.nebula.grid.test</module>
@@ -137,6 +137,7 @@
 		<module>../../tests/org.eclipse.emf.ecp.view.treemasterdetail.validation.test</module>
 		<module>../../tests/org.eclipse.emf.ecp.view.model.common.test</module>
 		<module>../../tests/org.eclipse.emf.ecp.common.test</module>
+		<module>../../tests/org.eclipse.emf.ecp.common.ui.test</module>
 		<module>../../tests/org.eclipse.emf.ecp.view.control.multireference.tests</module>
 		
 		<module>../../tests/org.eclipse.emfforms.editor.ecore.test</module>
@@ -159,6 +160,7 @@
 		<module>../../tests/org.eclipse.emf.ecp.view.edapt.util.test</module>
 		
 		<!-- Core Services -->
+		<module>../../tests/org.eclipse.emfforms.core.services.datatemplate.test</module>
 		<module>../../tests/org.eclipse.emfforms.core.services.databinding.featurepath.tests</module>
 		<module>../../tests/org.eclipse.emfforms.core.services.databinding.index.tests</module>
 		<module>../../tests/org.eclipse.emfforms.core.services.databinding.keyattribute.tests</module>
@@ -169,6 +171,7 @@
 		<module>../../tests/org.eclipse.emfforms.core.services.domainexpander.index.tests</module>
 		<module>../../tests/org.eclipse.emfforms.core.services.domainexpander.keyattribute.tests</module>
 		<module>../../tests/org.eclipse.emfforms.core.services.domainexpander.mapping.tests</module>
+		<module>../../tests/org.eclipse.emfforms.core.services.mappingprovider.table.test</module>
 		<module>../../tests/org.eclipse.emfforms.core.services.structuralchange.keyattribute.tests</module>
 		<module>../../tests/org.eclipse.emfforms.swt.core.tests</module>
 		<module>../../tests/org.eclipse.emfforms.swt.core.di.tests</module>
@@ -200,11 +203,14 @@
 
         <module>../../tests/org.eclipse.emfforms.swt.treemasterdetail.test</module>
         
+        <module>../../tests/org.eclipse.emfforms.swt.control.multiattribute.tests</module>
         <module>../../tests/org.eclipse.emfforms.rulerepository.tooling.test</module>
 
         <!-- EMF2Web -->
 		<module>../../tests/org.eclipse.emf.ecp.emf2web.json.test</module>
 		
+		<module>../../tests/org.eclipse.emfforms.datatemplate.tooling.tests</module>
+		
 	</modules>
 	
 	<build>
@@ -232,11 +238,11 @@
 			<plugin>
 				<groupId>org.apache.maven.plugins</groupId>
 				<artifactId>maven-checkstyle-plugin</artifactId>
-				<version>2.17</version>
+				<version>${mav-checkstyle-version}</version>
 				<configuration>
-				<configLocation>../org.eclipse.emf.ecp.releng/checkstyle/esmCheckstyleTest.xml</configLocation>
-				<excludes>**/xtend/**/*</excludes>
-				<failsOnError>false</failsOnError>
+					<configLocation>../org.eclipse.emf.ecp.releng/checkstyle/esmCheckstyleTest.xml</configLocation>
+					<excludes>**/xtend/**/*</excludes>
+					<failsOnError>false</failsOnError>
 				</configuration>
 				<executions>
 					<execution>
@@ -246,6 +252,13 @@
 						<phase>verify</phase>
 					</execution>
 				</executions>
+				<dependencies>
+					<dependency>
+						<groupId>com.puppycrawl.tools</groupId>
+						<artifactId>checkstyle</artifactId>
+						<version>${checkstyle-version}</version>
+					</dependency>
+				</dependencies>
 			</plugin>
 			
 			<!-- tycho surefire include/exclude pattern -->
@@ -254,12 +267,13 @@
 				<artifactId>tycho-surefire-plugin</artifactId>
 				<version>${tycho-version}</version>
 				<configuration>
-					<argLine>${test-vmargs}</argLine>
+					<argLine>${jacocoArgs} ${baseTestArgLine}</argLine>
 					<includes>
 						<include>**/*_PTest.java</include>
 						<include>**/*_ITest.java</include>
 					</includes>
 					<testFailureIgnore>true</testFailureIgnore>
+					<failIfNoTests>false</failIfNoTests>
 				</configuration>
 			</plugin>
 			
@@ -275,15 +289,19 @@
 						<configuration>
 							<testClassesDirectory>${project.build.outputDirectory}</testClassesDirectory>
 							<includes>
-				            	<include>**/*_Test.java</include>
+								<include>**/*_Test.java</include>
 							</includes>
 							<testFailureIgnore>true</testFailureIgnore>
-				        </configuration>
+							<failIfNoTests>false</failIfNoTests>
+							<!-- Sets the VM argument line used when unit tests are run. -->
+							<argLine>${jacocoArgs} ${baseTestArgLine}</argLine>
+						</configuration>
 						<goals>
 							<goal>test</goal>
 						</goals>
 					</execution>
 				</executions>
+				<configuration></configuration>
 			</plugin>
 		</plugins>
 	</build>
diff --git a/releng/org.eclipse.emf.ecp.releng/pom.xml b/releng/org.eclipse.emf.ecp.releng/pom.xml
index e4cc0cc..b92eb93 100644
--- a/releng/org.eclipse.emf.ecp.releng/pom.xml
+++ b/releng/org.eclipse.emf.ecp.releng/pom.xml
@@ -5,22 +5,23 @@
 	<modelVersion>4.0.0</modelVersion>
 	<groupId>org.eclipse.emf.ecp</groupId>
 	<artifactId>ecp-parent</artifactId>
-	<version>1.16.0-SNAPSHOT</version>
+	<version>1.17.0-SNAPSHOT</version>
 	<packaging>pom</packaging>
 
 	<properties>
 		<tycho-version>0.25.0</tycho-version>
 		<tycho-extras-version>0.25.0</tycho-extras-version>
 		<javadoc-version>2.10.3</javadoc-version>
-		<ecp-version>1.16.0</ecp-version>
+		<ecp-version>1.17.0</ecp-version>
 		<javadoc-title>EMF Client Platform ${ecp-version} API</javadoc-title>
 		<maven.antrun.plugin.version>1.7</maven.antrun.plugin.version>
 		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
 		<tycho.scmUrl>scm:git:git://git.eclipse.org/gitroot/emfclient/org.eclipse.emf.ecp.core.git</tycho.scmUrl>
 		<jarsigner-version>1.1.0</jarsigner-version>
-		<mav-surefire-version>2.16</mav-surefire-version>
-		<junit-version>4.11</junit-version>
-		<checkstyle-version>8.5</checkstyle-version>
+		<mav-surefire-version>2.20.1</mav-surefire-version>
+		<junit-version>4.12</junit-version>
+		<mav-checkstyle-version>3.0.0</mav-checkstyle-version>
+		<checkstyle-version>8.8</checkstyle-version>
 		<jacoco-version>0.8.0</jacoco-version>
 		
 		<jacoco.percentage.instruction>0.5</jacoco.percentage.instruction>
@@ -97,6 +98,7 @@
 		<module>../../releng/org.eclipse.emf.ecp.rap.products</module>
 		
 		<module>../../releng/org.eclipse.emf.ecp.releng.bundles</module>
+		<module>../../releng/org.eclipse.emf.ecp.releng.i18n</module>
 		<module>../../releng/org.eclipse.emf.ecp.releng.features</module>
 		<module>../../releng/org.eclipse.emf.ecp.releng.tests</module>
 		<module>../../releng/org.eclipse.emf.ecp.releng.examples</module>
@@ -221,7 +223,7 @@
 			<plugin>
 				<groupId>org.apache.maven.plugins</groupId>
 				<artifactId>maven-checkstyle-plugin</artifactId>
-				<version>2.17</version>
+				<version>${mav-checkstyle-version}</version>
 				<!-- https://maven.apache.org/plugins/maven-checkstyle-plugin/history.html -->
 				<configuration>
 					<configLocation>../org.eclipse.emf.ecp.releng/checkstyle/esmCheckstyle.xml</configLocation>
@@ -270,10 +272,14 @@
 				</configuration>
 				<executions>
 					<execution>
+						<phase>process-test-classes</phase>
 						<id>jacoco-initialize</id>
 						<goals>
 							<goal>prepare-agent</goal>
 						</goals>
+						<configuration>
+							<propertyName>jacocoArgs</propertyName>
+						</configuration>
 					</execution>
 				</executions>
 			</plugin>
diff --git a/releng/org.eclipse.emf.ecp.repository.target/category.xml b/releng/org.eclipse.emf.ecp.repository.target/category.xml
index 61ce795..411c60a 100644
--- a/releng/org.eclipse.emf.ecp.repository.target/category.xml
+++ b/releng/org.eclipse.emf.ecp.repository.target/category.xml
@@ -120,6 +120,9 @@
    <feature id="org.eclipse.emf.ecp.makeithappen.feature.source" version="0.0.0">
       <category name="org.eclipse.emf.ecp.emfforms"/>
    </feature>
+   <feature id="org.eclipse.emfforms.coffee.feature.source" version="0.0.0">
+      <category name="org.eclipse.emf.ecp.emfforms"/>
+   </feature>
    <feature id="org.eclipse.emf.ecp.view.mappingdmr.feature.source" version="0.0.0">
       <category name="org.eclipse.emf.ecp.emfforms"/>
    </feature>
@@ -207,6 +210,15 @@
    <feature id="org.eclipse.emf.ecp.ide.migration.feature.source" version="0.0.0">
       <category name="org.eclipse.emf.ecp.edapt"/>
    </feature>
+   <feature id="org.eclipse.emfforms.datatemplate.feature.source" version="0.0.0">
+      <category name="org.eclipse.emf.ecp.emfforms"/>
+   </feature>
+   <feature id="org.eclipse.emfforms.datatemplate.ide.feature.source" version="0.0.0">
+      <category name="org.eclipse.emf.ecp.ide"/>
+   </feature>
+   <feature id="org.eclipse.emf.ecp.i18n.feature" version="0.0.0">
+      <category name="org.eclipse.emf.ecp.i18n"/>
+   </feature>
    <category-def name="org.eclipse.emf.ecp.sdk" label="All SDKs  (install one of these)">
       <description>
          Contains the ECP SDKs. Please install only one of these.
@@ -234,4 +246,6 @@
    </category-def>
    <category-def name="org.eclipse.emf.ecp.jsonforms" label="EMF Forms to JSON Forms"/>
    <category-def name="org.eclipse.emf.ecp.edapt" label="Edapt Migration Support"/>
+   <category-def name="org.eclipse.emf.ecp.ide" label="EMF Forms IDE Features"/>
+   <category-def name="org.eclipse.emf.ecp.i18n" label="EMF Forms Internationalization"/>
 </site>
diff --git a/releng/org.eclipse.emf.ecp.repository.target/pom.xml b/releng/org.eclipse.emf.ecp.repository.target/pom.xml
index ab29de6..0da3844 100644
--- a/releng/org.eclipse.emf.ecp.repository.target/pom.xml
+++ b/releng/org.eclipse.emf.ecp.repository.target/pom.xml
@@ -6,12 +6,12 @@
 	<parent>
 		<groupId>org.eclipse.emf.ecp</groupId>
 		<artifactId>ecp-features-parent</artifactId>
-		<version>1.16.0-SNAPSHOT</version>
+		<version>1.17.0-SNAPSHOT</version>
 		<relativePath>../../releng/org.eclipse.emf.ecp.releng.features/</relativePath>
 	</parent>
 	<groupId>org.eclipse.emf.ecp</groupId>
 	<artifactId>org.eclipse.emf.ecp.site.target.feature</artifactId>
-	<version>1.16.0-SNAPSHOT</version>
+	<version>1.17.0-SNAPSHOT</version>
 	<packaging>eclipse-repository</packaging>
 
 	<build>
diff --git a/releng/org.eclipse.emf.ecp.repository/category.xml b/releng/org.eclipse.emf.ecp.repository/category.xml
index b339c71..20d31fd 100644
--- a/releng/org.eclipse.emf.ecp.repository/category.xml
+++ b/releng/org.eclipse.emf.ecp.repository/category.xml
@@ -102,6 +102,9 @@
    <feature id="org.eclipse.emf.ecp.makeithappen.feature.source" version="0.0.0">
       <category name="org.eclipse.emf.ecp.emfforms"/>
    </feature>
+   <feature id="org.eclipse.emfforms.coffee.feature.source" version="0.0.0">
+      <category name="org.eclipse.emf.ecp.emfforms"/>
+   </feature>
    <feature id="org.eclipse.emf.ecp.view.mappingdmr.feature.source" version="0.0.0">
       <category name="org.eclipse.emf.ecp.emfforms"/>
    </feature>
@@ -186,6 +189,15 @@
    <feature id="org.eclipse.emf.ecp.ide.migration.feature.source" version="0.0.0">
       <category name="org.eclipse.emf.ecp.edapt"/>
    </feature>
+   <feature id="org.eclipse.emfforms.datatemplate.feature.source" version="0.0.0">
+      <category name="org.eclipse.emf.ecp.emfforms"/>
+   </feature>
+   <feature id="org.eclipse.emfforms.datatemplate.ide.feature.source" version="0.0.0">
+      <category name="org.eclipse.emf.ecp.ide"/>
+   </feature>
+   <feature id="org.eclipse.emf.ecp.i18n.feature" version="0.0.0">
+      <category name="org.eclipse.emf.ecp.i18n"/>
+   </feature>
    <category-def name="org.eclipse.emf.ecp.sdk" label="All SDKs  (install one of these)">
       <description>
          Contains the ECP SDKs. Please install only one of these.
@@ -212,4 +224,6 @@
       </description>
    </category-def>
    <category-def name="org.eclipse.emf.ecp.edapt" label="Edapt Migration Support"/>
+   <category-def name="org.eclipse.emf.ecp.ide" label="EMF Forms IDE Features"/>
+   <category-def name="org.eclipse.emf.ecp.i18n" label="EMF Forms Internationalization"/>
 </site>
diff --git a/releng/org.eclipse.emf.ecp.repository/pom.xml b/releng/org.eclipse.emf.ecp.repository/pom.xml
index af740e6..5dfb8fa 100644
--- a/releng/org.eclipse.emf.ecp.repository/pom.xml
+++ b/releng/org.eclipse.emf.ecp.repository/pom.xml
@@ -6,12 +6,12 @@
 	<parent>
 		<groupId>org.eclipse.emf.ecp</groupId>
 		<artifactId>ecp-features-parent</artifactId>
-		<version>1.16.0-SNAPSHOT</version>
+		<version>1.17.0-SNAPSHOT</version>
 		<relativePath>../../releng/org.eclipse.emf.ecp.releng.features/</relativePath>
 	</parent>
 	<groupId>org.eclipse.emf.ecp</groupId>
 	<artifactId>org.eclipse.emf.ecp.site.feature</artifactId>
-	<version>1.16.0-SNAPSHOT</version>
+	<version>1.17.0-SNAPSHOT</version>
 	<packaging>eclipse-repository</packaging>
 
 	<build>
diff --git a/releng/org.eclipse.emf.ecp.target.rap/ecpRAP.target b/releng/org.eclipse.emf.ecp.target.rap/ecpRAP.target
index 7f02b03..a56ba31 100644
--- a/releng/org.eclipse.emf.ecp.target.rap/ecpRAP.target
+++ b/releng/org.eclipse.emf.ecp.target.rap/ecpRAP.target
@@ -1,50 +1,91 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<?pde version="3.8"?><target name="ECP RAP" sequenceNumber="253">
-<locations>
-<location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="slicer" includeSource="true" type="InstallableUnit">
-<unit id="org.h2" version="0.0.0"/>
-<unit id="org.h2.source" version="0.0.0"/>
-<unit id="org.apache.log4j.source" version="0.0.0"/>
-<unit id="org.apache.log4j" version="0.0.0"/>
-<repository location="http://download.eclipse.org/tools/orbit/downloads/drops/R20160221192158/repository/"/>
-</location>
-<location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="slicer" includeSource="true" type="InstallableUnit">
-<unit id="org.eclipse.equinox.sdk.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.platform.ide" version="0.0.0"/>
-<repository location="http://download.eclipse.org/eclipse/updates/4.7"/>
-</location>
-<location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="slicer" includeSource="true" type="InstallableUnit">
-<unit id="org.eclipse.emf.cdo.sdk.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.emf.rap.sdk.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.emf.sdk.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.emf.transaction.sdk.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.emf.validation.sdk.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.gef.sdk.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.graphiti.export.feature.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.graphiti.feature.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.jdt.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.net4j.sdk.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.rap.equinox.target.feature.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.rap.feature.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.rap.sdk.feature.feature.group" version="0.0.0"/>
-<repository location="http://download.eclipse.org/releases/oxygen/"/>
-</location>
-<location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="slicer" includeSource="true" type="InstallableUnit">
-<unit id="org.eclipse.emf.emfstore.client.transaction.feature.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.emf.emfstore.client.feature.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.emf.emfstore.common.feature.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.emf.emfstore.server.feature.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.emf.emfstore.example.feature.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.emf.emfstore.client.ui.feature.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.emf.emfstore.client.ui.rap.feature.feature.group" version="0.0.0"/>
-<repository location="http://download.eclipse.org/emfstore/releases_19"/>
-</location>
-<location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="slicer" includeSource="true" type="InstallableUnit">
-<unit id="org.eclipse.swtbot.eclipse.gef.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.swtbot.eclipse.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.swtbot.forms.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.swtbot.feature.group" version="0.0.0"/>
-<repository location="http://download.eclipse.org/technology/swtbot/releases/latest/"/>
-</location>
-</locations>
+<?pde?>
+<!-- generated with https://github.com/mbarbero/fr.obeo.releng.targetplatform -->
+<target name="ECP RAP" sequenceNumber="1521989643">
+  <locations>
+    <location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit">
+      <unit id="org.eclipse.swtbot.eclipse.feature.group" version="0.0.0"/>
+      <unit id="org.eclipse.swtbot.eclipse.gef.feature.group" version="0.0.0"/>
+      <unit id="org.eclipse.swtbot.eclipse.test.junit.feature.group" version="0.0.0"/>
+      <unit id="org.eclipse.swtbot.forms.feature.group" version="0.0.0"/>
+      <unit id="org.eclipse.swtbot.feature.group" version="0.0.0"/>
+      <repository location="http://download.eclipse.org/technology/swtbot/releases/latest/"/>
+    </location>
+    <location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit">
+      <unit id="org.eclipse.equinox.sdk.feature.group" version="0.0.0"/>
+      <unit id="org.eclipse.platform.ide" version="0.0.0"/>
+      <repository location="http://download.eclipse.org/eclipse/updates/4.7"/>
+    </location>
+    <location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit">
+      <unit id="org.eclipse.core.databinding" version="1.5.0.v20150422-0725"/>
+      <unit id="org.eclipse.core.databinding.beans" version="1.3.0.v20150422-0725"/>
+      <unit id="org.eclipse.core.databinding.observable" version="1.5.0.v20150422-0725"/>
+      <unit id="org.eclipse.core.databinding.property" version="1.5.0.v20150422-0725"/>
+      <repository location="http://download.eclipse.org/eclipse/updates/4.5"/>
+    </location>
+    <location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit">
+      <unit id="org.mockito.mockito-core-hamcrest-modified" version="1.9.5"/>
+      <repository location="http://build.eclipse.org/rt/rap/base-platforms/3.1/extra-dependencies/"/>
+    </location>
+    <location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit">
+      <unit id="com.google.gson" version="2.2.4.v201311231704"/>
+      <unit id="com.google.gson.source" version="2.2.4.v201311231704"/>
+      <unit id="com.google.guava" version="15.0.0.v201403281430"/>
+      <unit id="com.google.guava.source" version="15.0.0.v201403281430"/>
+      <unit id="javax.validation" version="1.0.0.GA_v201205091237"/>
+      <unit id="javax.validation.source" version="1.0.0.GA_v201205091237"/>
+      <unit id="org.apache.log4j" version="1.2.15.v201012070815"/>
+      <unit id="org.apache.log4j.source" version="1.2.15.v201012070815"/>
+      <unit id="org.apache.poi" version="3.9.0.v201405241750"/>
+      <unit id="org.apache.poi.source" version="3.9.0.v201405241750"/>
+      <unit id="org.h2" version="1.3.168.v201212121212"/>
+      <unit id="org.h2.source" version="1.3.168.v201212121212"/>
+      <unit id="org.hamcrest.core" version="1.3.0.v201303031735"/>
+      <unit id="org.hamcrest.library" version="1.3.0.v201505072020"/>
+      <unit id="org.hamcrest.library.source" version="1.3.0.v201505072020"/>
+      <unit id="org.objenesis" version="1.0.0.v201505121915"/>
+      <unit id="org.objenesis.source" version="1.0.0.v201505121915"/>
+      <repository location="http://download.eclipse.org/tools/orbit/downloads/drops/R20160221192158/repository/"/>
+    </location>
+    <location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit">
+      <unit id="org.eclipse.emf.edapt.runtime.feature.feature.group" version="0.0.0"/>
+      <unit id="org.eclipse.emf.edapt.runtime.feature.source.feature.group" version="0.0.0"/>
+      <repository location="http://download.eclipse.org/edapt/releases/13x"/>
+    </location>
+    <location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit">
+      <unit id="org.eclipse.nebula.widgets.grid.feature.feature.group" version="0.0.0"/>
+      <repository location="http://download.eclipse.org/nebula/releases/1.0.0"/>
+    </location>
+    <location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit">
+      <unit id="org.eclipse.rap.equinox.target.feature.feature.group" version="0.0.0"/>
+      <unit id="org.eclipse.rap.feature.feature.group" version="0.0.0"/>
+      <unit id="org.eclipse.rap.sdk.feature.feature.group" version="0.0.0"/>
+      <unit id="org.eclipse.emf.rap.sdk.feature.group" version="0.0.0"/>
+      <unit id="org.eclipse.emf.cdo.sdk.feature.group" version="0.0.0"/>
+      <unit id="org.eclipse.emf.sdk.feature.group" version="0.0.0"/>
+      <unit id="org.eclipse.emf.transaction.sdk.feature.group" version="0.0.0"/>
+      <unit id="org.eclipse.emf.validation.sdk.feature.group" version="0.0.0"/>
+      <unit id="org.eclipse.gef.sdk.feature.group" version="0.0.0"/>
+      <unit id="org.eclipse.graphiti.export.feature.feature.group" version="0.0.0"/>
+      <unit id="org.eclipse.graphiti.feature.feature.group" version="0.0.0"/>
+      <unit id="org.eclipse.jdt.feature.group" version="0.0.0"/>
+      <unit id="org.eclipse.net4j.sdk.feature.group" version="0.0.0"/>
+      <unit id="org.eclipse.ocl.all.sdk.feature.group" version="0.0.0"/>
+      <unit id="org.eclipse.pde.feature.group" version="0.0.0"/>
+      <unit id="org.eclipse.xpand.sdk.feature.group" version="0.0.0"/>
+      <unit id="org.eclipse.xtend.sdk.feature.group" version="0.0.0"/>
+      <unit id="org.eclipse.xtext.sdk.feature.group" version="0.0.0"/>
+      <repository location="http://download.eclipse.org/releases/oxygen"/>
+    </location>
+    <location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit">
+      <unit id="org.eclipse.emf.emfstore.client.ui.rap.feature.feature.group" version="0.0.0"/>
+      <unit id="org.eclipse.emf.emfstore.client.feature.feature.group" version="0.0.0"/>
+      <unit id="org.eclipse.emf.emfstore.client.transaction.feature.feature.group" version="0.0.0"/>
+      <unit id="org.eclipse.emf.emfstore.client.ui.feature.feature.group" version="0.0.0"/>
+      <unit id="org.eclipse.emf.emfstore.common.feature.feature.group" version="0.0.0"/>
+      <unit id="org.eclipse.emf.emfstore.example.feature.feature.group" version="0.0.0"/>
+      <unit id="org.eclipse.emf.emfstore.server.feature.feature.group" version="0.0.0"/>
+      <repository location="http://download.eclipse.org/emfstore/releases_19"/>
+    </location>
+  </locations>
 </target>
diff --git a/releng/org.eclipse.emf.ecp.target.rap/ecpRAP.target.README b/releng/org.eclipse.emf.ecp.target.rap/ecpRAP.target.README
new file mode 100644
index 0000000..cd1c596
--- /dev/null
+++ b/releng/org.eclipse.emf.ecp.target.rap/ecpRAP.target.README
@@ -0,0 +1,9 @@
+We use the The Target Platform Definition DSL and Generator
+(https://github.com/mbarbero/fr.obeo.releng.targetplatform)
+to manage our Target Defintion.
+
+* Changes MUST ONLY be applied to the ecp.tpd file.
+* After every change, the .target file must be re-generated, use the right click action on TPD "Generate Target Defintion File".
+* After every change, you must commit both files (.target and .tpd)
+* Target can be set by right clicking the TPD file.
+
diff --git a/releng/org.eclipse.emf.ecp.target.rap/ecpRAP.tpd b/releng/org.eclipse.emf.ecp.target.rap/ecpRAP.tpd
new file mode 100644
index 0000000..827ac08
--- /dev/null
+++ b/releng/org.eclipse.emf.ecp.target.rap/ecpRAP.tpd
@@ -0,0 +1,21 @@
+target "ECP RAP"
+
+with source configurePhase	
+
+include "../org.eclipse.emf.ecp.target.rcp/ecp.tpd"
+
+location "http://download.eclipse.org/releases/oxygen" {
+	org.eclipse.rap.equinox.target.feature.feature.group lazy
+	org.eclipse.rap.feature.feature.group lazy
+	org.eclipse.rap.sdk.feature.feature.group lazy
+	org.eclipse.emf.rap.sdk.feature.group lazy
+}
+
+location "http://download.eclipse.org/emfstore/releases_19" {
+	org.eclipse.emf.emfstore.client.ui.rap.feature.feature.group lazy
+}
+
+
+
+
+
diff --git a/releng/org.eclipse.emf.ecp.target.rap/ecpRAP_withECP.target b/releng/org.eclipse.emf.ecp.target.rap/ecpRAP_withECP.target
index a4e8bb3..efea570 100644
--- a/releng/org.eclipse.emf.ecp.target.rap/ecpRAP_withECP.target
+++ b/releng/org.eclipse.emf.ecp.target.rap/ecpRAP_withECP.target
@@ -1,59 +1,97 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<?pde version="3.8"?><target name="ECP RAP" sequenceNumber="5">
-<locations>
-<location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="slicer" includeSource="true" type="InstallableUnit">
-<unit id="org.eclipse.swtbot.forms.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.swtbot.eclipse.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.swtbot.eclipse.gef.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.swtbot.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.swtbot.eclipse.test.junit.feature.group" version="0.0.0"/>
-<unit id="org.hamcrest.core" version="0.0.0"/>
-<unit id="org.hamcrest.library" version="0.0.0"/>
-<unit id="org.hamcrest.library.source" version="0.0.0"/>
-<repository location="http://download.eclipse.org/technology/swtbot/releases/latest/"/>
-</location>
-<location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="slicer" includeSource="true" type="InstallableUnit">
-<unit id="org.h2" version="0.0.0"/>
-<unit id="org.h2.source" version="0.0.0"/>
-<unit id="org.apache.log4j.source" version="0.0.0"/>
-<unit id="org.apache.log4j" version="0.0.0"/>
-<repository location="http://download.eclipse.org/tools/orbit/downloads/drops/R20160221192158/repository/"/>
-</location>
-<location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="slicer" includeSource="true" type="InstallableUnit">
-<unit id="org.eclipse.equinox.sdk.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.platform.ide" version="0.0.0"/>
-<repository location="http://download.eclipse.org/eclipse/updates/4.7"/>
-</location>
-<location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="slicer" includeSource="true" type="InstallableUnit">
-<unit id="org.eclipse.emf.ecp.rap.sdk.feature.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.emf.ecp.rap.util.feature.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.emf.ecp.emfforms.sdk.feature.feature.group" version="0.0.0"/>
-<repository location="http://download.eclipse.org/ecp/releases/releases_target_116"/>
-</location>
-<location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="slicer" includeSource="true" type="InstallableUnit">
-<unit id="org.eclipse.emf.cdo.sdk.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.emf.rap.sdk.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.emf.sdk.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.emf.transaction.sdk.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.emf.validation.sdk.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.gef.sdk.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.graphiti.export.feature.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.graphiti.feature.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.jdt.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.net4j.sdk.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.rap.equinox.target.feature.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.rap.feature.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.rap.sdk.feature.feature.group" version="0.0.0"/>
-<repository location="http://download.eclipse.org/releases/oxygen/"/>
-</location>
-<location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="slicer" includeSource="true" type="InstallableUnit">
-<unit id="org.eclipse.emf.emfstore.client.transaction.feature.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.emf.emfstore.client.feature.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.emf.emfstore.common.feature.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.emf.emfstore.server.feature.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.emf.emfstore.example.feature.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.emf.emfstore.client.ui.feature.feature.group" version="0.0.0"/>
-<repository location="http://download.eclipse.org/emfstore/releases_19"/>
-</location>
-</locations>
+<?pde?>
+<!-- generated with https://github.com/mbarbero/fr.obeo.releng.targetplatform -->
+<target name="ECP RAP with ECP" sequenceNumber="1521989646">
+  <locations>
+    <location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit">
+      <unit id="org.eclipse.swtbot.eclipse.feature.group" version="0.0.0"/>
+      <unit id="org.eclipse.swtbot.eclipse.gef.feature.group" version="0.0.0"/>
+      <unit id="org.eclipse.swtbot.eclipse.test.junit.feature.group" version="0.0.0"/>
+      <unit id="org.eclipse.swtbot.forms.feature.group" version="0.0.0"/>
+      <unit id="org.eclipse.swtbot.feature.group" version="0.0.0"/>
+      <repository location="http://download.eclipse.org/technology/swtbot/releases/latest/"/>
+    </location>
+    <location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit">
+      <unit id="org.eclipse.equinox.sdk.feature.group" version="0.0.0"/>
+      <unit id="org.eclipse.platform.ide" version="0.0.0"/>
+      <repository location="http://download.eclipse.org/eclipse/updates/4.7"/>
+    </location>
+    <location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit">
+      <unit id="org.eclipse.core.databinding" version="1.5.0.v20150422-0725"/>
+      <unit id="org.eclipse.core.databinding.beans" version="1.3.0.v20150422-0725"/>
+      <unit id="org.eclipse.core.databinding.observable" version="1.5.0.v20150422-0725"/>
+      <unit id="org.eclipse.core.databinding.property" version="1.5.0.v20150422-0725"/>
+      <repository location="http://download.eclipse.org/eclipse/updates/4.5"/>
+    </location>
+    <location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit">
+      <unit id="org.mockito.mockito-core-hamcrest-modified" version="1.9.5"/>
+      <repository location="http://build.eclipse.org/rt/rap/base-platforms/3.1/extra-dependencies/"/>
+    </location>
+    <location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit">
+      <unit id="com.google.gson" version="2.2.4.v201311231704"/>
+      <unit id="com.google.gson.source" version="2.2.4.v201311231704"/>
+      <unit id="com.google.guava" version="15.0.0.v201403281430"/>
+      <unit id="com.google.guava.source" version="15.0.0.v201403281430"/>
+      <unit id="javax.validation" version="1.0.0.GA_v201205091237"/>
+      <unit id="javax.validation.source" version="1.0.0.GA_v201205091237"/>
+      <unit id="org.apache.log4j" version="1.2.15.v201012070815"/>
+      <unit id="org.apache.log4j.source" version="1.2.15.v201012070815"/>
+      <unit id="org.apache.poi" version="3.9.0.v201405241750"/>
+      <unit id="org.apache.poi.source" version="3.9.0.v201405241750"/>
+      <unit id="org.h2" version="1.3.168.v201212121212"/>
+      <unit id="org.h2.source" version="1.3.168.v201212121212"/>
+      <unit id="org.hamcrest.core" version="1.3.0.v201303031735"/>
+      <unit id="org.hamcrest.library" version="1.3.0.v201505072020"/>
+      <unit id="org.hamcrest.library.source" version="1.3.0.v201505072020"/>
+      <unit id="org.objenesis" version="1.0.0.v201505121915"/>
+      <unit id="org.objenesis.source" version="1.0.0.v201505121915"/>
+      <repository location="http://download.eclipse.org/tools/orbit/downloads/drops/R20160221192158/repository/"/>
+    </location>
+    <location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit">
+      <unit id="org.eclipse.emf.edapt.runtime.feature.feature.group" version="0.0.0"/>
+      <unit id="org.eclipse.emf.edapt.runtime.feature.source.feature.group" version="0.0.0"/>
+      <repository location="http://download.eclipse.org/edapt/releases/13x"/>
+    </location>
+    <location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit">
+      <unit id="org.eclipse.nebula.widgets.grid.feature.feature.group" version="0.0.0"/>
+      <repository location="http://download.eclipse.org/nebula/releases/1.0.0"/>
+    </location>
+    <location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit">
+      <unit id="org.eclipse.rap.equinox.target.feature.feature.group" version="0.0.0"/>
+      <unit id="org.eclipse.rap.feature.feature.group" version="0.0.0"/>
+      <unit id="org.eclipse.rap.sdk.feature.feature.group" version="0.0.0"/>
+      <unit id="org.eclipse.emf.rap.sdk.feature.group" version="0.0.0"/>
+      <unit id="org.eclipse.emf.cdo.sdk.feature.group" version="0.0.0"/>
+      <unit id="org.eclipse.emf.sdk.feature.group" version="0.0.0"/>
+      <unit id="org.eclipse.emf.transaction.sdk.feature.group" version="0.0.0"/>
+      <unit id="org.eclipse.emf.validation.sdk.feature.group" version="0.0.0"/>
+      <unit id="org.eclipse.gef.sdk.feature.group" version="0.0.0"/>
+      <unit id="org.eclipse.graphiti.export.feature.feature.group" version="0.0.0"/>
+      <unit id="org.eclipse.graphiti.feature.feature.group" version="0.0.0"/>
+      <unit id="org.eclipse.jdt.feature.group" version="0.0.0"/>
+      <unit id="org.eclipse.net4j.sdk.feature.group" version="0.0.0"/>
+      <unit id="org.eclipse.ocl.all.sdk.feature.group" version="0.0.0"/>
+      <unit id="org.eclipse.pde.feature.group" version="0.0.0"/>
+      <unit id="org.eclipse.xpand.sdk.feature.group" version="0.0.0"/>
+      <unit id="org.eclipse.xtend.sdk.feature.group" version="0.0.0"/>
+      <unit id="org.eclipse.xtext.sdk.feature.group" version="0.0.0"/>
+      <repository location="http://download.eclipse.org/releases/oxygen"/>
+    </location>
+    <location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit">
+      <unit id="org.eclipse.emf.emfstore.client.ui.rap.feature.feature.group" version="0.0.0"/>
+      <unit id="org.eclipse.emf.emfstore.client.feature.feature.group" version="0.0.0"/>
+      <unit id="org.eclipse.emf.emfstore.client.transaction.feature.feature.group" version="0.0.0"/>
+      <unit id="org.eclipse.emf.emfstore.client.ui.feature.feature.group" version="0.0.0"/>
+      <unit id="org.eclipse.emf.emfstore.common.feature.feature.group" version="0.0.0"/>
+      <unit id="org.eclipse.emf.emfstore.example.feature.feature.group" version="0.0.0"/>
+      <unit id="org.eclipse.emf.emfstore.server.feature.feature.group" version="0.0.0"/>
+      <repository location="http://download.eclipse.org/emfstore/releases_19"/>
+    </location>
+    <location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit">
+      <unit id="org.eclipse.emf.ecp.rap.sdk.feature.feature.group" version="0.0.0"/>
+      <unit id="org.eclipse.emf.ecp.rap.util.feature.feature.group" version="0.0.0"/>
+      <unit id="org.eclipse.emf.ecp.emfforms.sdk.feature.feature.group" version="0.0.0"/>
+      <repository location="http://download.eclipse.org/ecp/releases/releases_target_117"/>
+    </location>
+  </locations>
 </target>
diff --git a/releng/org.eclipse.emf.ecp.target.rap/ecpRAP_withECP.target.README b/releng/org.eclipse.emf.ecp.target.rap/ecpRAP_withECP.target.README
new file mode 100644
index 0000000..cd1c596
--- /dev/null
+++ b/releng/org.eclipse.emf.ecp.target.rap/ecpRAP_withECP.target.README
@@ -0,0 +1,9 @@
+We use the The Target Platform Definition DSL and Generator
+(https://github.com/mbarbero/fr.obeo.releng.targetplatform)
+to manage our Target Defintion.
+
+* Changes MUST ONLY be applied to the ecp.tpd file.
+* After every change, the .target file must be re-generated, use the right click action on TPD "Generate Target Defintion File".
+* After every change, you must commit both files (.target and .tpd)
+* Target can be set by right clicking the TPD file.
+
diff --git a/releng/org.eclipse.emf.ecp.target.rap/ecpRAP_withECP.tpd b/releng/org.eclipse.emf.ecp.target.rap/ecpRAP_withECP.tpd
new file mode 100644
index 0000000..43dec97
--- /dev/null
+++ b/releng/org.eclipse.emf.ecp.target.rap/ecpRAP_withECP.tpd
@@ -0,0 +1,16 @@
+target "ECP RAP with ECP"
+
+with source configurePhase	
+
+include "ecpRAP.tpd"
+
+location "http://download.eclipse.org/ecp/releases/releases_target_117"{
+	org.eclipse.emf.ecp.rap.sdk.feature.feature.group lazy
+	org.eclipse.emf.ecp.rap.util.feature.feature.group lazy
+	org.eclipse.emf.ecp.emfforms.sdk.feature.feature.group lazy
+}
+
+
+
+
+
diff --git a/releng/org.eclipse.emf.ecp.target.rap/pom.xml b/releng/org.eclipse.emf.ecp.target.rap/pom.xml
index 7f0b665..7a83b2e 100644
--- a/releng/org.eclipse.emf.ecp.target.rap/pom.xml
+++ b/releng/org.eclipse.emf.ecp.target.rap/pom.xml
@@ -5,11 +5,11 @@
   <parent>

     <groupId>org.eclipse.emf.ecp</groupId>

     <artifactId>ecp-parent</artifactId>

-    <version>1.16.0-SNAPSHOT</version>

+    <version>1.17.0-SNAPSHOT</version>

     <relativePath>../../releng/org.eclipse.emf.ecp.releng/</relativePath>

   </parent>

   <groupId>org.eclipse.emf.ecp</groupId>

   <artifactId>ecpRAP</artifactId>

-  <version>1.16.0-SNAPSHOT</version>

+  <version>1.17.0-SNAPSHOT</version>

   <packaging>eclipse-target-definition</packaging>

 </project>
\ No newline at end of file
diff --git a/releng/org.eclipse.emf.ecp.target.rcp/.gitignore b/releng/org.eclipse.emf.ecp.target.rcp/.gitignore
index ea8c4bf..5b67000 100644
--- a/releng/org.eclipse.emf.ecp.target.rcp/.gitignore
+++ b/releng/org.eclipse.emf.ecp.target.rcp/.gitignore
@@ -1 +1,2 @@
 /target
+/workspace
diff --git a/releng/org.eclipse.emf.ecp.target.rcp/ecp.target b/releng/org.eclipse.emf.ecp.target.rcp/ecp.target
index 3178ba2..5f88052 100644
--- a/releng/org.eclipse.emf.ecp.target.rcp/ecp.target
+++ b/releng/org.eclipse.emf.ecp.target.rcp/ecp.target
@@ -1,84 +1,84 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<?pde version="3.8"?><target name="ECP RCP" sequenceNumber="1472048294">
-<locations>
-<location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="slicer" includeSource="true" type="InstallableUnit">
-<unit id="org.eclipse.swtbot.eclipse.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.swtbot.eclipse.gef.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.swtbot.eclipse.test.junit.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.swtbot.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.swtbot.forms.feature.group" version="0.0.0"/>
-<repository location="http://download.eclipse.org/technology/swtbot/releases/latest/"/>
-</location>
-<location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="slicer" includeSource="true" type="InstallableUnit">
-<unit id="org.eclipse.equinox.sdk.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.platform.ide" version="0.0.0"/>
-<repository location="http://download.eclipse.org/eclipse/updates/4.7"/>
-</location>
-<location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="slicer" includeSource="true" type="InstallableUnit">
-<unit id="org.eclipse.core.databinding" version="1.5.0.v20150422-0725"/>
-<unit id="org.eclipse.core.databinding.beans" version="1.3.0.v20150422-0725"/>
-<unit id="org.eclipse.core.databinding.observable" version="1.5.0.v20150422-0725"/>
-<unit id="org.eclipse.core.databinding.property" version="1.5.0.v20150422-0725"/>
-<repository location="http://download.eclipse.org/eclipse/updates/4.5"/>
-</location>
-<location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="slicer" includeSource="true" type="InstallableUnit">
-<unit id="org.eclipse.emf.emfstore.client.feature.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.emf.emfstore.client.transaction.feature.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.emf.emfstore.client.ui.feature.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.emf.emfstore.common.feature.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.emf.emfstore.example.feature.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.emf.emfstore.server.feature.feature.group" version="0.0.0"/>
-<repository location="http://download.eclipse.org/emfstore/releases_19"/>
-</location>
-<location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="slicer" includeSource="true" type="InstallableUnit">
-<unit id="org.mockito.mockito-core-hamcrest-modified" version="1.9.5"/>
-<repository location="http://build.eclipse.org/rt/rap/base-platforms/3.1/extra-dependencies/"/>
-</location>
-<location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="slicer" includeSource="true" type="InstallableUnit">
-<unit id="com.google.gson" version="2.2.4.v201311231704"/>
-<unit id="com.google.gson.source" version="2.2.4.v201311231704"/>
-<unit id="com.google.guava" version="15.0.0.v201403281430"/>
-<unit id="com.google.guava.source" version="15.0.0.v201403281430"/>
-<unit id="javax.validation" version="1.0.0.GA_v201205091237"/>
-<unit id="javax.validation.source" version="1.0.0.GA_v201205091237"/>
-<unit id="org.apache.log4j" version="1.2.15.v201012070815"/>
-<unit id="org.apache.log4j.source" version="1.2.15.v201012070815"/>
-<unit id="org.apache.poi" version="3.9.0.v201405241750"/>
-<unit id="org.apache.poi.source" version="3.9.0.v201405241750"/>
-<unit id="org.h2" version="1.3.168.v201212121212"/>
-<unit id="org.h2.source" version="1.3.168.v201212121212"/>
-<unit id="org.hamcrest.core" version="1.3.0.v201303031735"/>
-<unit id="org.hamcrest.library" version="1.3.0.v201505072020"/>
-<unit id="org.hamcrest.library.source" version="1.3.0.v201505072020"/>
-<unit id="org.objenesis" version="1.0.0.v201505121915"/>
-<unit id="org.objenesis.source" version="1.0.0.v201505121915"/>
-<repository location="http://download.eclipse.org/tools/orbit/downloads/drops/R20160221192158/repository/"/>
-</location>
-<location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="slicer" includeSource="true" type="InstallableUnit">
-<unit id="org.eclipse.emf.edapt.runtime.feature.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.emf.edapt.runtime.feature.source.feature.group" version="0.0.0"/>
-<repository location="http://download.eclipse.org/edapt/releases/13x"/>
-</location>
-<location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="slicer" includeSource="true" type="InstallableUnit">
-<unit id="org.eclipse.nebula.widgets.grid.feature.feature.group" version="0.0.0"/>
-<repository location="http://download.eclipse.org/nebula/releases/1.0.0"/>
-</location>
-<location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="slicer" includeSource="true" type="InstallableUnit">
-<unit id="org.eclipse.emf.cdo.sdk.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.emf.sdk.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.emf.transaction.sdk.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.emf.validation.sdk.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.gef.sdk.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.graphiti.export.feature.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.graphiti.feature.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.jdt.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.net4j.sdk.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.ocl.all.sdk.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.pde.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.xpand.sdk.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.xtend.sdk.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.xtext.sdk.feature.group" version="0.0.0"/>
-<repository location="http://download.eclipse.org/releases/oxygen"/>
-</location>
-</locations>
+<?pde?>
+<!-- generated with https://github.com/mbarbero/fr.obeo.releng.targetplatform -->
+<target name="ECP RCP" sequenceNumber="1522139107">
+  <locations>
+    <location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit">
+      <unit id="org.eclipse.swtbot.eclipse.feature.group" version="0.0.0"/>
+      <unit id="org.eclipse.swtbot.eclipse.gef.feature.group" version="0.0.0"/>
+      <unit id="org.eclipse.swtbot.eclipse.test.junit.feature.group" version="0.0.0"/>
+      <unit id="org.eclipse.swtbot.forms.feature.group" version="0.0.0"/>
+      <unit id="org.eclipse.swtbot.feature.group" version="0.0.0"/>
+      <repository location="http://download.eclipse.org/technology/swtbot/releases/latest/"/>
+    </location>
+    <location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit">
+      <unit id="org.eclipse.equinox.sdk.feature.group" version="0.0.0"/>
+      <unit id="org.eclipse.platform.ide" version="0.0.0"/>
+      <repository location="http://download.eclipse.org/eclipse/updates/4.7"/>
+    </location>
+    <location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit">
+      <unit id="org.eclipse.core.databinding" version="1.5.0.v20150422-0725"/>
+      <unit id="org.eclipse.core.databinding.beans" version="1.3.0.v20150422-0725"/>
+      <unit id="org.eclipse.core.databinding.observable" version="1.5.0.v20150422-0725"/>
+      <unit id="org.eclipse.core.databinding.property" version="1.5.0.v20150422-0725"/>
+      <repository location="http://download.eclipse.org/eclipse/updates/4.5"/>
+    </location>
+    <location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit">
+      <unit id="org.eclipse.emf.emfstore.client.feature.feature.group" version="0.0.0"/>
+      <unit id="org.eclipse.emf.emfstore.client.transaction.feature.feature.group" version="0.0.0"/>
+      <unit id="org.eclipse.emf.emfstore.client.ui.feature.feature.group" version="0.0.0"/>
+      <unit id="org.eclipse.emf.emfstore.common.feature.feature.group" version="0.0.0"/>
+      <unit id="org.eclipse.emf.emfstore.example.feature.feature.group" version="0.0.0"/>
+      <unit id="org.eclipse.emf.emfstore.server.feature.feature.group" version="0.0.0"/>
+      <repository location="http://download.eclipse.org/emfstore/releases_19"/>
+    </location>
+    <location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit">
+      <unit id="org.mockito.mockito-core-hamcrest-modified" version="1.9.5"/>
+      <repository location="http://build.eclipse.org/rt/rap/base-platforms/3.1/extra-dependencies/"/>
+    </location>
+    <location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit">
+      <unit id="com.google.gson" version="2.2.4.v201311231704"/>
+      <unit id="com.google.gson.source" version="2.2.4.v201311231704"/>
+      <unit id="com.google.guava" version="15.0.0.v201403281430"/>
+      <unit id="com.google.guava.source" version="15.0.0.v201403281430"/>
+      <unit id="javax.validation" version="1.0.0.GA_v201205091237"/>
+      <unit id="javax.validation.source" version="1.0.0.GA_v201205091237"/>
+      <unit id="org.apache.log4j" version="1.2.15.v201012070815"/>
+      <unit id="org.apache.log4j.source" version="1.2.15.v201012070815"/>
+      <unit id="org.h2" version="1.3.168.v201212121212"/>
+      <unit id="org.h2.source" version="1.3.168.v201212121212"/>
+      <unit id="org.hamcrest.core" version="1.3.0.v201303031735"/>
+      <unit id="org.hamcrest.library" version="1.3.0.v201505072020"/>
+      <unit id="org.hamcrest.library.source" version="1.3.0.v201505072020"/>
+      <unit id="org.objenesis" version="1.0.0.v201505121915"/>
+      <unit id="org.objenesis.source" version="1.0.0.v201505121915"/>
+      <repository location="http://download.eclipse.org/tools/orbit/downloads/drops/R20160221192158/repository/"/>
+    </location>
+    <location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit">
+      <unit id="org.eclipse.emf.edapt.runtime.feature.feature.group" version="0.0.0"/>
+      <unit id="org.eclipse.emf.edapt.runtime.feature.source.feature.group" version="0.0.0"/>
+      <repository location="http://download.eclipse.org/edapt/releases/13x"/>
+    </location>
+    <location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit">
+      <unit id="org.eclipse.nebula.widgets.grid.feature.feature.group" version="0.0.0"/>
+      <repository location="http://download.eclipse.org/nebula/releases/1.0.0"/>
+    </location>
+    <location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit">
+      <unit id="org.eclipse.emf.cdo.sdk.feature.group" version="0.0.0"/>
+      <unit id="org.eclipse.emf.sdk.feature.group" version="0.0.0"/>
+      <unit id="org.eclipse.emf.transaction.sdk.feature.group" version="0.0.0"/>
+      <unit id="org.eclipse.emf.validation.sdk.feature.group" version="0.0.0"/>
+      <unit id="org.eclipse.gef.sdk.feature.group" version="0.0.0"/>
+      <unit id="org.eclipse.graphiti.export.feature.feature.group" version="0.0.0"/>
+      <unit id="org.eclipse.graphiti.feature.feature.group" version="0.0.0"/>
+      <unit id="org.eclipse.jdt.feature.group" version="0.0.0"/>
+      <unit id="org.eclipse.net4j.sdk.feature.group" version="0.0.0"/>
+      <unit id="org.eclipse.ocl.all.sdk.feature.group" version="0.0.0"/>
+      <unit id="org.eclipse.pde.feature.group" version="0.0.0"/>
+      <unit id="org.eclipse.xpand.sdk.feature.group" version="0.0.0"/>
+      <unit id="org.eclipse.xtend.sdk.feature.group" version="0.0.0"/>
+      <unit id="org.eclipse.xtext.sdk.feature.group" version="0.0.0"/>
+      <repository location="http://download.eclipse.org/releases/oxygen"/>
+    </location>
+  </locations>
 </target>
diff --git a/releng/org.eclipse.emf.ecp.target.rcp/ecp.target.README b/releng/org.eclipse.emf.ecp.target.rcp/ecp.target.README
new file mode 100644
index 0000000..cd1c596
--- /dev/null
+++ b/releng/org.eclipse.emf.ecp.target.rcp/ecp.target.README
@@ -0,0 +1,9 @@
+We use the The Target Platform Definition DSL and Generator
+(https://github.com/mbarbero/fr.obeo.releng.targetplatform)
+to manage our Target Defintion.
+
+* Changes MUST ONLY be applied to the ecp.tpd file.
+* After every change, the .target file must be re-generated, use the right click action on TPD "Generate Target Defintion File".
+* After every change, you must commit both files (.target and .tpd)
+* Target can be set by right clicking the TPD file.
+
diff --git a/releng/org.eclipse.emf.ecp.target.rcp/ecp.tpd b/releng/org.eclipse.emf.ecp.target.rcp/ecp.tpd
index cca004c..cdbd188 100644
--- a/releng/org.eclipse.emf.ecp.target.rcp/ecp.tpd
+++ b/releng/org.eclipse.emf.ecp.target.rcp/ecp.tpd
@@ -3,79 +3,82 @@
 with source configurePhase	
 
 location "http://download.eclipse.org/technology/swtbot/releases/latest/" {
-	org.eclipse.swtbot.forms.feature.group
-	org.eclipse.swtbot.eclipse.feature.group
-	org.eclipse.swtbot.eclipse.gef.feature.group
-	org.eclipse.swtbot.feature.group
-	org.eclipse.swtbot.eclipse.test.junit.feature.group
+	org.eclipse.swtbot.eclipse.feature.group lazy
+	org.eclipse.swtbot.eclipse.gef.feature.group lazy
+	org.eclipse.swtbot.eclipse.test.junit.feature.group lazy
+	org.eclipse.swtbot.forms.feature.group lazy
+	org.eclipse.swtbot.feature.group lazy
 }
 
-location "http://download.eclipse.org/eclipse/updates/4.6" {
-	org.eclipse.equinox.sdk.feature.group
-	org.eclipse.platform.ide
+location "http://download.eclipse.org/eclipse/updates/4.7" {
+	org.eclipse.equinox.sdk.feature.group lazy
+	org.eclipse.platform.ide lazy
 }
 
 location "http://download.eclipse.org/eclipse/updates/4.5" {
-	org.eclipse.core.databinding
-	org.eclipse.core.databinding.beans
-	org.eclipse.core.databinding.observable
-	org.eclipse.core.databinding.property
+	org.eclipse.core.databinding [1.5.0.v20150422-0725,1.5.0.v20150422-0725]
+	org.eclipse.core.databinding.beans [1.3.0.v20150422-0725,1.3.0.v20150422-0725]
+	org.eclipse.core.databinding.observable [1.5.0.v20150422-0725,1.5.0.v20150422-0725]
+	org.eclipse.core.databinding.property [1.5.0.v20150422-0725,1.5.0.v20150422-0725]
 }
 
-location "http://download.eclipse.org/emfstore/releases_18" {
-	org.eclipse.emf.emfstore.client.transaction.feature.feature.group
-	org.eclipse.emf.emfstore.client.feature.feature.group
-	org.eclipse.emf.emfstore.common.feature.feature.group
-	org.eclipse.emf.emfstore.server.feature.feature.group
-	org.eclipse.emf.emfstore.example.feature.feature.group
-	org.eclipse.emf.emfstore.client.ui.feature.feature.group
-	org.eclipse.emf.emfstore.ecore.feature.feature.group
-}
-
-location "http://download.eclipse.org/releases/neon" {
-	org.eclipse.jdt.feature.group
-	org.eclipse.emf.sdk.feature.group
-	org.eclipse.gef.sdk.feature.group
-	org.eclipse.graphiti.feature.feature.group
-	org.eclipse.graphiti.export.feature.feature.group
-	org.eclipse.emf.validation.sdk.feature.group
-	org.eclipse.emf.transaction.sdk.feature.group
-	org.eclipse.net4j.sdk.feature.group
-	org.eclipse.emf.cdo.sdk.feature.group
-	org.eclipse.pde.feature.group
-	org.eclipse.ocl.all.sdk.feature.group
-	org.eclipse.xtend.sdk.feature.group
+location "http://download.eclipse.org/emfstore/releases_19" {
+	org.eclipse.emf.emfstore.client.feature.feature.group lazy
+	org.eclipse.emf.emfstore.client.transaction.feature.feature.group lazy
+	org.eclipse.emf.emfstore.client.ui.feature.feature.group lazy
+	org.eclipse.emf.emfstore.common.feature.feature.group lazy
+	org.eclipse.emf.emfstore.example.feature.feature.group lazy
+	org.eclipse.emf.emfstore.server.feature.feature.group lazy
 }
 
 location "http://build.eclipse.org/rt/rap/base-platforms/3.1/extra-dependencies/" {
-	org.mockito.mockito-core-hamcrest-modified
+	org.mockito.mockito-core-hamcrest-modified [1.9.5,1.9.5]
 }
 
 location "http://download.eclipse.org/tools/orbit/downloads/drops/R20160221192158/repository/" {
-	javax.validation
-	org.apache.poi.source
-	org.apache.poi
-	org.apache.log4j.source
-	org.objenesis
-	org.objenesis.source
-	org.h2
-	javax.validation.source
-	org.apache.log4j
-	org.h2.source
-	com.google.gson.source
-	com.google.gson
-	com.google.guava
-	com.google.guava.source
-	org.hamcrest.core
-	org.hamcrest.library
-	org.hamcrest.library.source
+	com.google.gson [2.2.4.v201311231704,2.2.4.v201311231704]
+	com.google.gson.source [2.2.4.v201311231704,2.2.4.v201311231704]
+	com.google.guava [15.0.0.v201403281430,15.0.0.v201403281430]
+	com.google.guava.source [15.0.0.v201403281430,15.0.0.v201403281430] 
+	javax.validation [1.0.0.GA_v201205091237,1.0.0.GA_v201205091237]
+	javax.validation.source [1.0.0.GA_v201205091237,1.0.0.GA_v201205091237]
+	org.apache.log4j [1.2.15.v201012070815,1.2.15.v201012070815]
+	org.apache.log4j.source [1.2.15.v201012070815,1.2.15.v201012070815]
+	org.h2 [1.3.168.v201212121212,1.3.168.v201212121212]
+	org.h2.source [1.3.168.v201212121212,1.3.168.v201212121212]
+	org.hamcrest.core [1.3.0.v201303031735,1.3.0.v201303031735]
+	org.hamcrest.library [1.3.0.v201505072020,1.3.0.v201505072020]
+	org.hamcrest.library.source [1.3.0.v201505072020,1.3.0.v201505072020]
+	org.objenesis [1.0.0.v201505121915,1.0.0.v201505121915]
+	org.objenesis.source [1.0.0.v201505121915,1.0.0.v201505121915]
 }
 
 location "http://download.eclipse.org/edapt/releases/13x" {
-	org.eclipse.emf.edapt.runtime.feature.feature.group
-	org.eclipse.emf.edapt.runtime.feature.source.feature.group
+	org.eclipse.emf.edapt.runtime.feature.feature.group lazy
+	org.eclipse.emf.edapt.runtime.feature.source.feature.group lazy
 }
 
 location "http://download.eclipse.org/nebula/releases/1.0.0" {
-	org.eclipse.nebula.widgets.grid.feature.feature.group
+	org.eclipse.nebula.widgets.grid.feature.feature.group lazy
 }
+
+location "http://download.eclipse.org/releases/oxygen" {
+	org.eclipse.emf.cdo.sdk.feature.group lazy
+	org.eclipse.emf.sdk.feature.group lazy
+	org.eclipse.emf.transaction.sdk.feature.group lazy
+	org.eclipse.emf.validation.sdk.feature.group lazy
+	org.eclipse.gef.sdk.feature.group lazy
+	org.eclipse.graphiti.export.feature.feature.group lazy
+	org.eclipse.graphiti.feature.feature.group lazy
+	org.eclipse.jdt.feature.group lazy
+	org.eclipse.net4j.sdk.feature.group lazy
+	org.eclipse.ocl.all.sdk.feature.group lazy
+	org.eclipse.pde.feature.group lazy
+	org.eclipse.xpand.sdk.feature.group lazy
+	org.eclipse.xtend.sdk.feature.group lazy
+	org.eclipse.xtext.sdk.feature.group lazy
+}
+
+
+
+
diff --git a/releng/org.eclipse.emf.ecp.target.rcp/pom.xml b/releng/org.eclipse.emf.ecp.target.rcp/pom.xml
index da06a2d..b0d6a46 100644
--- a/releng/org.eclipse.emf.ecp.target.rcp/pom.xml
+++ b/releng/org.eclipse.emf.ecp.target.rcp/pom.xml
@@ -5,11 +5,11 @@
   <parent>

     <groupId>org.eclipse.emf.ecp</groupId>

     <artifactId>ecp-parent</artifactId>

-    <version>1.16.0-SNAPSHOT</version>

+    <version>1.17.0-SNAPSHOT</version>

     <relativePath>../../releng/org.eclipse.emf.ecp.releng/</relativePath>

   </parent>

   <groupId>org.eclipse.emf.ecp</groupId>

   <artifactId>ecp</artifactId>

-  <version>1.16.0-SNAPSHOT</version>

+  <version>1.17.0-SNAPSHOT</version>

   <packaging>eclipse-target-definition</packaging>

 </project>
\ No newline at end of file
diff --git a/releng/spreadsheet/org.eclipse.emfforms.spreadsheet.releng.target/emfforms_spreadsheet.README b/releng/spreadsheet/org.eclipse.emfforms.spreadsheet.releng.target/emfforms_spreadsheet.README
new file mode 100644
index 0000000..cd1c596
--- /dev/null
+++ b/releng/spreadsheet/org.eclipse.emfforms.spreadsheet.releng.target/emfforms_spreadsheet.README
@@ -0,0 +1,9 @@
+We use the The Target Platform Definition DSL and Generator
+(https://github.com/mbarbero/fr.obeo.releng.targetplatform)
+to manage our Target Defintion.
+
+* Changes MUST ONLY be applied to the ecp.tpd file.
+* After every change, the .target file must be re-generated, use the right click action on TPD "Generate Target Defintion File".
+* After every change, you must commit both files (.target and .tpd)
+* Target can be set by right clicking the TPD file.
+
diff --git a/releng/spreadsheet/org.eclipse.emfforms.spreadsheet.releng.target/emfforms_spreadsheet.target b/releng/spreadsheet/org.eclipse.emfforms.spreadsheet.releng.target/emfforms_spreadsheet.target
index 7f03b64..f236750 100644
--- a/releng/spreadsheet/org.eclipse.emfforms.spreadsheet.releng.target/emfforms_spreadsheet.target
+++ b/releng/spreadsheet/org.eclipse.emfforms.spreadsheet.releng.target/emfforms_spreadsheet.target
@@ -1,52 +1,87 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<?pde version="3.8"?><target name="ecpfx" sequenceNumber="10">
-<locations>
-<location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="slicer" includeSource="true" type="InstallableUnit">
-<unit id="org.eclipse.jdt.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.emf.sdk.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.ocl.all.sdk.feature.group" version="0.0.0"/>
-<repository location="http://download.eclipse.org/releases/oxygen"/>
-</location>
-<location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="slicer" includeSource="true" type="InstallableUnit">
-<unit id="org.eclipse.emf.ecp.emfforms.runtime.feature.feature.group" version="0.0.0"/>
-<repository location="http://download.eclipse.org/ecp/releases/releases_target_116/"/>
-</location>
-<location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="slicer" includeSource="true" type="InstallableUnit">
-<unit id="org.eclipse.emf.emfstore.example.feature.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.emf.emfstore.server.feature.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.emf.emfstore.client.ui.feature.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.emf.emfstore.common.feature.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.emf.emfstore.client.feature.feature.group" version="0.0.0"/>
-<repository location="http://download.eclipse.org/emfstore/releases_19"/>
-</location>
-<location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="slicer" includeSource="true" type="InstallableUnit">
-<unit id="org.eclipse.equinox.sdk.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.platform.ide" version="0.0.0"/>
-<repository location="http://download.eclipse.org/eclipse/updates/4.7"/>
-</location>
-<location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="slicer" includeSource="true" type="InstallableUnit">
-<unit id="org.apache.poi.source" version="0.0.0"/>
-<unit id="org.apache.poi" version="0.0.0"/>
-<unit id="org.apache.commons.codec" version="0.0.0"/>
-<unit id="org.hamcrest.core" version="0.0.0"/>
-<unit id="org.hamcrest.library" version="0.0.0"/>
-<unit id="org.hamcrest.library.source" version="0.0.0"/>
-<unit id="org.objenesis" version="0.0.0"/>
-<unit id="org.objenesis.source" version="0.0.0"/>
-<repository location="http://download.eclipse.org/tools/orbit/downloads/drops/R20160221192158/repository/"/>
-</location>
-<location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="slicer" includeSource="true" type="InstallableUnit">
-<unit id="org.mockito.mockito-core-hamcrest-modified" version="0.0.0"/>
-<repository location="http://build.eclipse.org/rt/rap/base-platforms/3.1/extra-dependencies/"/>
-</location>
-<location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="slicer" includeSource="true" type="InstallableUnit">
-<unit id="org.eclipse.emf.edapt.runtime.feature.source.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.emf.edapt.runtime.feature.feature.group" version="0.0.0"/>
-<repository location="http://download.eclipse.org/edapt/releases/13x"/>
-</location>
-<location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="slicer" includeSource="true" type="InstallableUnit">
-<unit id="org.eclipse.nebula.widgets.grid.feature.feature.group" version="0.0.0"/>
-<repository location="http://download.eclipse.org/nebula/releases/1.0.0"/>
-</location>
-</locations>
+<?pde?>
+<!-- generated with https://github.com/mbarbero/fr.obeo.releng.targetplatform -->
+<target name="emfforms_spreadsheet" sequenceNumber="1522138927">
+  <locations>
+    <location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit">
+      <unit id="org.eclipse.swtbot.eclipse.feature.group" version="0.0.0"/>
+      <unit id="org.eclipse.swtbot.eclipse.gef.feature.group" version="0.0.0"/>
+      <unit id="org.eclipse.swtbot.eclipse.test.junit.feature.group" version="0.0.0"/>
+      <unit id="org.eclipse.swtbot.forms.feature.group" version="0.0.0"/>
+      <unit id="org.eclipse.swtbot.feature.group" version="0.0.0"/>
+      <repository location="http://download.eclipse.org/technology/swtbot/releases/latest/"/>
+    </location>
+    <location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit">
+      <unit id="org.eclipse.equinox.sdk.feature.group" version="0.0.0"/>
+      <unit id="org.eclipse.platform.ide" version="0.0.0"/>
+      <repository location="http://download.eclipse.org/eclipse/updates/4.7"/>
+    </location>
+    <location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit">
+      <unit id="org.eclipse.core.databinding" version="1.5.0.v20150422-0725"/>
+      <unit id="org.eclipse.core.databinding.beans" version="1.3.0.v20150422-0725"/>
+      <unit id="org.eclipse.core.databinding.observable" version="1.5.0.v20150422-0725"/>
+      <unit id="org.eclipse.core.databinding.property" version="1.5.0.v20150422-0725"/>
+      <repository location="http://download.eclipse.org/eclipse/updates/4.5"/>
+    </location>
+    <location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit">
+      <unit id="org.eclipse.emf.emfstore.client.feature.feature.group" version="0.0.0"/>
+      <unit id="org.eclipse.emf.emfstore.client.transaction.feature.feature.group" version="0.0.0"/>
+      <unit id="org.eclipse.emf.emfstore.client.ui.feature.feature.group" version="0.0.0"/>
+      <unit id="org.eclipse.emf.emfstore.common.feature.feature.group" version="0.0.0"/>
+      <unit id="org.eclipse.emf.emfstore.example.feature.feature.group" version="0.0.0"/>
+      <unit id="org.eclipse.emf.emfstore.server.feature.feature.group" version="0.0.0"/>
+      <repository location="http://download.eclipse.org/emfstore/releases_19"/>
+    </location>
+    <location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit">
+      <unit id="org.mockito.mockito-core-hamcrest-modified" version="1.9.5"/>
+      <repository location="http://build.eclipse.org/rt/rap/base-platforms/3.1/extra-dependencies/"/>
+    </location>
+    <location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit">
+      <unit id="org.eclipse.emf.edapt.runtime.feature.feature.group" version="0.0.0"/>
+      <unit id="org.eclipse.emf.edapt.runtime.feature.source.feature.group" version="0.0.0"/>
+      <repository location="http://download.eclipse.org/edapt/releases/13x"/>
+    </location>
+    <location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit">
+      <unit id="org.eclipse.nebula.widgets.grid.feature.feature.group" version="0.0.0"/>
+      <repository location="http://download.eclipse.org/nebula/releases/1.0.0"/>
+    </location>
+    <location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit">
+      <unit id="org.eclipse.emf.cdo.sdk.feature.group" version="0.0.0"/>
+      <unit id="org.eclipse.emf.sdk.feature.group" version="0.0.0"/>
+      <unit id="org.eclipse.emf.transaction.sdk.feature.group" version="0.0.0"/>
+      <unit id="org.eclipse.emf.validation.sdk.feature.group" version="0.0.0"/>
+      <unit id="org.eclipse.gef.sdk.feature.group" version="0.0.0"/>
+      <unit id="org.eclipse.graphiti.export.feature.feature.group" version="0.0.0"/>
+      <unit id="org.eclipse.graphiti.feature.feature.group" version="0.0.0"/>
+      <unit id="org.eclipse.jdt.feature.group" version="0.0.0"/>
+      <unit id="org.eclipse.net4j.sdk.feature.group" version="0.0.0"/>
+      <unit id="org.eclipse.ocl.all.sdk.feature.group" version="0.0.0"/>
+      <unit id="org.eclipse.pde.feature.group" version="0.0.0"/>
+      <unit id="org.eclipse.xpand.sdk.feature.group" version="0.0.0"/>
+      <unit id="org.eclipse.xtend.sdk.feature.group" version="0.0.0"/>
+      <unit id="org.eclipse.xtext.sdk.feature.group" version="0.0.0"/>
+      <repository location="http://download.eclipse.org/releases/oxygen"/>
+    </location>
+    <location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit">
+      <unit id="org.apache.commons.codec" version="0.0.0"/>
+      <unit id="org.apache.poi" version="0.0.0"/>
+      <unit id="org.apache.poi.source" version="0.0.0"/>
+      <unit id="com.google.gson" version="2.2.4.v201311231704"/>
+      <unit id="com.google.gson.source" version="2.2.4.v201311231704"/>
+      <unit id="com.google.guava" version="15.0.0.v201403281430"/>
+      <unit id="com.google.guava.source" version="15.0.0.v201403281430"/>
+      <unit id="javax.validation" version="1.0.0.GA_v201205091237"/>
+      <unit id="javax.validation.source" version="1.0.0.GA_v201205091237"/>
+      <unit id="org.apache.log4j" version="1.2.15.v201012070815"/>
+      <unit id="org.apache.log4j.source" version="1.2.15.v201012070815"/>
+      <unit id="org.h2" version="1.3.168.v201212121212"/>
+      <unit id="org.h2.source" version="1.3.168.v201212121212"/>
+      <unit id="org.hamcrest.core" version="1.3.0.v201303031735"/>
+      <unit id="org.hamcrest.library" version="1.3.0.v201505072020"/>
+      <unit id="org.hamcrest.library.source" version="1.3.0.v201505072020"/>
+      <unit id="org.objenesis" version="1.0.0.v201505121915"/>
+      <unit id="org.objenesis.source" version="1.0.0.v201505121915"/>
+      <repository location="http://download.eclipse.org/tools/orbit/downloads/drops/R20160221192158/repository/"/>
+    </location>
+  </locations>
 </target>
diff --git a/releng/spreadsheet/org.eclipse.emfforms.spreadsheet.releng.target/emfforms_spreadsheet.tpd b/releng/spreadsheet/org.eclipse.emfforms.spreadsheet.releng.target/emfforms_spreadsheet.tpd
new file mode 100644
index 0000000..e44a720
--- /dev/null
+++ b/releng/spreadsheet/org.eclipse.emfforms.spreadsheet.releng.target/emfforms_spreadsheet.tpd
@@ -0,0 +1,16 @@
+target "emfforms_spreadsheet"
+
+with source configurePhase	
+// TPD validation uses workspace path, but the generation uses real path. Therefore, the following line will not validated, but the generation should still be work.
+include "../../org.eclipse.emf.ecp.target.rcp/ecp.tpd"
+
+location "http://download.eclipse.org/tools/orbit/downloads/drops/R20160221192158/repository/" {
+	org.apache.commons.codec lazy
+	org.apache.poi lazy
+	org.apache.poi.source lazy
+}
+
+
+
+
+
diff --git a/releng/spreadsheet/org.eclipse.emfforms.spreadsheet.releng.tests/pom.xml b/releng/spreadsheet/org.eclipse.emfforms.spreadsheet.releng.tests/pom.xml
index abb1a96..dc7feec 100644
--- a/releng/spreadsheet/org.eclipse.emfforms.spreadsheet.releng.tests/pom.xml
+++ b/releng/spreadsheet/org.eclipse.emfforms.spreadsheet.releng.tests/pom.xml
@@ -14,9 +14,11 @@
 	<version>1.0.0-SNAPSHOT</version>
 	<packaging>pom</packaging>
 	
+	<properties>
+		<baseTestArgLine></baseTestArgLine>
+	</properties>
+	
 	<profiles>
-		
-		
 		<profile>
 			<id>build-server</id>
 			<build>
@@ -84,6 +86,7 @@
 						<include>**/*_ITest.java</include>
 					</includes>
 					<testFailureIgnore>true</testFailureIgnore>
+					<argLine>${jacocoArgs} ${baseTestArgLine}</argLine>
 				</configuration>
 			</plugin>
 			
@@ -102,6 +105,7 @@
 				            	<include>**/*_Test.java</include>
 							</includes>
 							<testFailureIgnore>true</testFailureIgnore>
+							<argLine>${jacocoArgs} ${baseTestArgLine}</argLine>
 				        </configuration>
 						<goals>
 							<goal>test</goal>
diff --git a/releng/spreadsheet/org.eclipse.emfforms.spreadsheet.releng/pom.xml b/releng/spreadsheet/org.eclipse.emfforms.spreadsheet.releng/pom.xml
index 6b2a573..8571875 100644
--- a/releng/spreadsheet/org.eclipse.emfforms.spreadsheet.releng/pom.xml
+++ b/releng/spreadsheet/org.eclipse.emfforms.spreadsheet.releng/pom.xml
@@ -17,8 +17,8 @@
 		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
 		<tycho.scmUrl>scm:git:git://git.eclipse.org/gitroot/emfclient/org.eclipse.emf.ecp.core.git</tycho.scmUrl>
 		<jarsigner-version>1.1.0</jarsigner-version>
-		<mav-surefire-version>2.16</mav-surefire-version>
-		<junit-version>4.11</junit-version>
+		<mav-surefire-version>2.20.1</mav-surefire-version>
+		<junit-version>4.12</junit-version>
 		<checkstyle-version>8.5</checkstyle-version>
 		<jacoco-version>0.8.0</jacoco-version>
 		
@@ -243,10 +243,14 @@
 				</configuration>
 				<executions>
 					<execution>
+						<phase>process-test-classes</phase>
 						<id>jacoco-initialize</id>
 						<goals>
 							<goal>prepare-agent</goal>
 						</goals>
+						<configuration>
+							<propertyName>jacocoArgs</propertyName>
+						</configuration>
 					</execution>
 				</executions>
 			</plugin>
diff --git a/tests/ECPQ7Tests/EPPTests/download.sh b/tests/ECPQ7Tests/EPPTests/download.sh
index 0cc44bc..fc7d726 100755
--- a/tests/ECPQ7Tests/EPPTests/download.sh
+++ b/tests/ECPQ7Tests/EPPTests/download.sh
@@ -5,4 +5,4 @@
 rm -rf ${AUT_DIR}/*
 mkdir -p ${AUT_DIR}
 cd ${AUT_DIR}
-wget -q -O $2_$3.tar.gz https://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/$2/$3/eclipse-modeling-$2-$3-linux-gtk-x86_64.tar.gz --proxy=off
\ No newline at end of file
+wget -O $2_$3.tar.gz https://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/$2/$3/eclipse-committers-$2-$3-linux-gtk-x86_64.tar.gz\&r=1 --proxy=off
diff --git a/tests/ECPQ7Tests/EPPTests/pom.xml b/tests/ECPQ7Tests/EPPTests/pom.xml
index 32c309c..2403d7f 100644
--- a/tests/ECPQ7Tests/EPPTests/pom.xml
+++ b/tests/ECPQ7Tests/EPPTests/pom.xml
@@ -83,6 +83,22 @@
 								<site>${currentBuild}/org.eclipse.emf.ecp.repository.target/target/repository</site>
 								<features>
 									<feature>org.eclipse.emf.ecp.sdk.feature.feature.group</feature>
+									<feature>org.eclipse.emf.ecp.emfforms.sdk.feature.feature.group</feature>
+									<feature>org.eclipse.emfforms.view.annotation.feature.feature.group</feature>
+								</features>
+							</injection>
+							<injection>
+								<site>http://download.eclipse.org/edapt/releases/13x</site>
+								<features>
+									<feature>org.eclipse.emf.edapt.runtime.feature.feature.group</feature>
+								</features>
+							</injection>
+							<injection>
+								<site>http://download.eclipse.org/releases/oxygen</site>
+								<features>
+									<feature>org.eclipse.net4j.sdk.feature.group</feature>
+									<feature>org.eclipse.ocl.all.sdk.feature.group</feature>
+									<feature>org.eclipse.emf.feature.group</feature>
 								</features>
 							</injection>
 						</injections>
diff --git a/tests/ECPQ7Tests/EPPTests/update-site/current/pom.xml b/tests/ECPQ7Tests/EPPTests/update-site/current/pom.xml
index 0c2ce43..8b6a559 100644
--- a/tests/ECPQ7Tests/EPPTests/update-site/current/pom.xml
+++ b/tests/ECPQ7Tests/EPPTests/update-site/current/pom.xml
@@ -12,8 +12,8 @@
   <packaging>rcpttTest</packaging>
 
 	<properties>
-    <eclipse-name>oxygen</eclipse-name>
-	<eclipse-sr>R</eclipse-sr>
+    <eclipse-name>photon</eclipse-name>
+	<eclipse-sr>M6</eclipse-sr>
   </properties>
   <build>
   	<plugins>
diff --git a/tests/ECPQ7Tests/EPPTests/update-site/previous/pom.xml b/tests/ECPQ7Tests/EPPTests/update-site/previous/pom.xml
index ebffae3..9dbe854 100644
--- a/tests/ECPQ7Tests/EPPTests/update-site/previous/pom.xml
+++ b/tests/ECPQ7Tests/EPPTests/update-site/previous/pom.xml
@@ -12,7 +12,7 @@
   <packaging>rcpttTest</packaging>
 
   <properties>
-    <eclipse-name>neon</eclipse-name>
+    <eclipse-name>oxygen</eclipse-name>
 	<eclipse-sr>3</eclipse-sr>
   </properties>
   <build>
diff --git a/tests/ECPQ7Tests/EPPTests/update-site/project/Add Initial Ecore Path Project.ctx b/tests/ECPQ7Tests/EPPTests/update-site/project/Add Initial Ecore Path Project.ctx
new file mode 100644
index 0000000..e965710
--- /dev/null
+++ b/tests/ECPQ7Tests/EPPTests/update-site/project/Add Initial Ecore Path Project.ctx
@@ -0,0 +1,109 @@
+--- RCPTT testcase ---
+Format-Version: 1.0
+Context-Type: org.eclipse.rcptt.ctx.workspace
+Element-Name: Add Initial Ecore Path Project
+Element-Type: context
+Element-Version: 2.0
+Id: _s1O00DnIEeiT54i24ck9dw
+Runtime-Version: 2.2.0.201706152316
+Save-Time: 4/6/18 8:33 PM
+
+------=_contents/ecorePathsModel/model/My.ecore-1b2fb007-94b2-3847-b5a8-bf5577af4dfb
+Content-Type: q7/binary
+Entry-Name: contents/ecorePathsModel/model/My.ecore
+
+UEsDBBQACAgIAAAAIQAAAAAAAAAAAAAAAAAIAAkALmNvbnRlbnRVVAUAAQAAAACVUl1vwiAUffdXEPas
+aPeyNFazuZqYbInxI9kro7eVrEADdHX/fhesZiY+TB7gcjnncE5gOj+qmnyDddLojE5GY0pAC1NIXWV0
+v1sOn+h8NpiCMBbSfM3FF6+AHJVML6QkkFBGuxT7GT1436SMdV03MqoaGVuxj/fVBeKuId1jRCTj8QRh
+b1txAMWHUjvPtQA6IDhOzOjhiguilo2DKACqDCIJywOMEs0VgjkWbr9Z9dXaQimPYTND4Sksau6cLCVG
+IWgs9T8Nkvqw8fAstDHGR1Kgbb1thW8tr5fAcYUb7A2UYCFE6BXEQdYFdihpmwbsi2l1kdHh5BQxDNhF
+gQfGFgFLiTDac6kVaJ9RvBMoi77ZX+P3Jjlp3xPl2XsrP1t/iRJmerbbg16556FB/vU+mDHHq/GX3Y6E
++6sfNxv8AlBLBwiTD8sbQAEAAKoCAABQSwECFAAUAAgICAAAACEAkw/LG0ABAACqAgAACAAJAAAAAAAA
+AAAAAAAAAAAALmNvbnRlbnRVVAUAAQAAAABQSwUGAAAAAAEAAQA/AAAAfwEAAAAA
+------=_contents/ecorePathsModel/model/My.ecore-1b2fb007-94b2-3847-b5a8-bf5577af4dfb--
+------=_contents/ecorePathsModel/model/Sub1.ecore-5268bd5d-5c21-3c8b-a359-fbb7e8f32958
+Content-Type: q7/binary
+Entry-Name: contents/ecorePathsModel/model/Sub1.ecore
+
+UEsDBBQACAgIAAAAIQAAAAAAAAAAAAAAAAAIAAkALmNvbnRlbnRVVAUAAQAAAACNkV9rgzAUxd/9FCF7
+rrHuZUhtGV0LhRXKtLDXmF41TBNJ4my//a5ZJy30YXnJv985uSd3sTq3DfkGY6VWKZ2HESWghD5JVaX0
+mG9nL3S1DBYgtIFkc+Dii1dAzq1MJlE8itBG2QTPU1o71yWMDcMQ6rYKtanY5343IfYeGZ49EUfRHLH3
+TNTQ8plU1nElgAYEx6/S13CnBdHIzoI3gLYcTWK2GTFKFG8RLnBhjx+76+pgoJTncbNE4wWsG26tLCVG
+IVhY4i4diq5h/eWfUdYX61o2pzn+T9Z3YHJEbUr3l9DjT4z5e288WmfO9ML1hjdb4DjDgxdenTOy6N1U
+bqk1+ue3zBt3fDwg/8qNZWzwZeweZT4iu82IjWT3nVwGP1BLBwil0sfEHwEAAAICAABQSwECFAAUAAgI
+CAAAACEApdLHxB8BAAACAgAACAAJAAAAAAAAAAAAAAAAAAAALmNvbnRlbnRVVAUAAQAAAABQSwUGAAAA
+AAEAAQA/AAAAXgEAAAAA
+------=_contents/ecorePathsModel/model/Sub1.ecore-5268bd5d-5c21-3c8b-a359-fbb7e8f32958--
+------=_contents/ecorePathsModel/META-INF/MANIFEST.MF-1ac5f98e-56a3-3ed2-840e-2ae6d1211232
+Content-Type: q7/binary
+Entry-Name: contents/ecorePathsModel/META-INF/MANIFEST.MF
+
+UEsDBBQACAgIAAAAIQAAAAAAAAAAAAAAAAAIAAkALmNvbnRlbnRVVAUAAQAAAADzTczLTEstLtENSy0q
+zszPs1Iw1DPgcirNS8lJ1fWFSsLljGAyfom5qVYKrsn5RakBiSUZxb75Kak5MMngytyk/JzMZIiiVFRF
+1sWZeek5qSVA42xLikpTYZqQ7QfCwtLEnMy0zNQiLgBQSwcIsa2C/mkAAACiAAAAUEsBAhQAFAAICAgA
+AAAhALGtgv5pAAAAogAAAAgACQAAAAAAAAAAAAAAAAAAAC5jb250ZW50VVQFAAEAAAAAUEsFBgAAAAAB
+AAEAPwAAAKgAAAAAAA==
+------=_contents/ecorePathsModel/META-INF/MANIFEST.MF-1ac5f98e-56a3-3ed2-840e-2ae6d1211232--
+------=_contents/ecorePathsModel/.project-4273c10e-bf88-311e-90f0-1081ed0ebcc8
+Content-Type: q7/binary
+Entry-Name: contents/ecorePathsModel/.project
+
+UEsDBBQACAgIAAAAIQAAAAAAAAAAAAAAAAAIAAkALmNvbnRlbnRVVAUAAQAAAAClkc1uwjAQhM/wFCh3
+4nLrwQSJVtyokIAHMPYQXPlPtlP18bETE5VyQeK2Mzu7n9amq1+tZj/wQVqzrBb1WzWD4VZI0y6r42Ez
+f69WzZQ6b7/B4ycC99LFFG6mE2qYRgNuPXYsXsLWCihKejd1udUaJjaU3KpklkUh1+SvOHVSib0DT6Ko
+jzTGjMhGYVnf1uBKuoDaCdRbZuQZIa5zHH5kpzzzbZehYZDkTlPyH/Ascc8v0OxlXjHKvQkVO48hOtQP
+4J3qWmm++mbm9qG8aJwd3/Pul65QSwcIgusZWtUAAADiAQAAUEsBAhQAFAAICAgAAAAhAILrGVrVAAAA
+4gEAAAgACQAAAAAAAAAAAAAAAAAAAC5jb250ZW50VVQFAAEAAAAAUEsFBgAAAAABAAEAPwAAABQBAAAA
+AA==
+------=_contents/ecorePathsModel/.project-4273c10e-bf88-311e-90f0-1081ed0ebcc8--
+------=_contents/ecorePathsModel/model/Sub2.ecore-adf5aa60-ce6f-3dc4-98f6-21d80373f281
+Content-Type: q7/binary
+Entry-Name: contents/ecorePathsModel/model/Sub2.ecore
+
+UEsDBBQACAgIAAAAIQAAAAAAAAAAAAAAAAAIAAkALmNvbnRlbnRVVAUAAQAAAACNkV9rgzAUxd/9FCF7
+rrHuZYi2jM5CYYUyW9hrTG81TKMkcdpvv2vWSYU+LC/59zsn9+TG66GuyDdoIxuV0KUfUAJKNGepioSe
+jtvFC12vvBhEoyFKD1x88QLIUMtoEoWjCG2UifA8oaW1bcRY3/d+Uxd+owv2ud9NiJkj/bMjwiBYIvae
+iRJqvpDKWK4EUI/g+FW6GmZaEJVsDTgDqC+jScjSEaNE8RphgQtz+tjdVgcNFzmMmxUax7CpuDHyIjEK
+wcIie21RdAvrLv+Msi7flLI6h/g/WdeCPiJqErq/+g5/YszdO+PROrO6E7bTvNoCxxkevPBqrZZ5Z6dy
+c67R/3jPvHHLxwPyr9xYRoovY/cocxHZfUZsJJt3cuX9AFBLBwhZOfTtHwEAAAICAABQSwECFAAUAAgI
+CAAAACEAWTn07R8BAAACAgAACAAJAAAAAAAAAAAAAAAAAAAALmNvbnRlbnRVVAUAAQAAAABQSwUGAAAA
+AAEAAQA/AAAAXgEAAAAA
+------=_contents/ecorePathsModel/model/Sub2.ecore-adf5aa60-ce6f-3dc4-98f6-21d80373f281--
+------=_contents/ecorePathsModel/build.properties-043b37ae-c4c3-32f4-919b-18844b7bdddc
+Content-Type: q7/binary
+Entry-Name: contents/ecorePathsModel/build.properties
+
+UEsDBBQACAgIAAAAIQAAAAAAAAAAAAAAAAAIAAkALmNvbnRlbnRVVAUAAQAAAAAry0wt19eJ4UrKzNPL
+zEvOKU1JLVawVfB1DXHU9fRz0+cCAFBLBwjdSHbHIwAAACEAAABQSwECFAAUAAgICAAAACEA3Uh2xyMA
+AAAhAAAACAAJAAAAAAAAAAAAAAAAAAAALmNvbnRlbnRVVAUAAQAAAABQSwUGAAAAAAEAAQA/AAAAYgAA
+AAAA
+------=_contents/ecorePathsModel/build.properties-043b37ae-c4c3-32f4-919b-18844b7bdddc--
+------=_.q7.content-3d2e0690-ce48-3609-83e0-c704d49f1eaf
+Content-Type: q7/binary
+Entry-Name: .q7.content
+
+UEsDBBQACAgIAAAAIQAAAAAAAAAAAAAAAAAIAAkALmNvbnRlbnRVVAUAAQAAAACVklFPwjAQgN/5FU3f
+aYFgossGITqSPQyJkOibGe0Bla1d1sLmv7cb28QpUd+u7XfftXd1p0USoxNkWijp4SEZYASSKS7kzsNH
+s+3f4umk56psR4DFItVAMpYaQ5gpSK6yg04jBs5zE90raaAwqEiE02pHpdYWktqx+x7eG5M6lOZ5TlSy
+I1ZOX8KgQX6p1aY3TJlecdRytOUwklFi6RnnKJDCiChGPlMZoGVk9miZqTdgBiPBPfyqh4+DwYMMfBDr
+m7EYjdnhjud40kPIZeWTpClju0rPebq2Q2kshTpUHGJ8piy3FTE00OYoYk5sZgqZEaAx/REjtfvyWMXc
+drEGQn896weLeVulIwhni2Dur9YknF84aC25Ij0JyK8Jn5QypAL+rEu+tKHjWx03I1K17FP4HRn+goTv
+XaBzKZc2U6oGSNsJuvS/H3nS+wBQSwcIKw5rpE0BAAAjAwAAUEsBAhQAFAAICAgAAAAhACsOa6RNAQAA
+IwMAAAgACQAAAAAAAAAAAAAAAAAAAC5jb250ZW50VVQFAAEAAAAAUEsFBgAAAAABAAEAPwAAAIwBAAAA
+AA==
+------=_.q7.content-3d2e0690-ce48-3609-83e0-c704d49f1eaf--
+------=_contents/ecorePathsModel/view/Root.view-028852f0-0ec9-3930-898b-b48081ed8924
+Content-Type: q7/binary
+Entry-Name: contents/ecorePathsModel/view/Root.view
+
+UEsDBBQACAgIAAAAIQAAAAAAAAAAAAAAAAAIAAkALmNvbnRlbnRVVAUAAQAAAACllG9PwjAQxt/zKZb6
+2nVMiHHZIAamzkiC/DG+I3U7WOPakq0y+PZ2HZsjghJ9d+k997vn7pK6/S1LjA2kGRXcQ23TQgbwUESU
+rzx0Ox0EAer3Wq5IVyaECV1nYAJbqnhtbijkJhMRJM6LCo0to05NsguSYvPMUe8eiqVcOxjneW4KtjIV
+D7+OglqSHUryK62wLautZE/TMAZGLinPJOEhVFUQihQO6iqLRbGyWQBs7BeyqubnQWqYBpQyDVIyXMiw
+luF2+9r6lSjJWwLncrW4onc1nDo08tDimT8E8yFb+EBn3Q61O+H7TZQjgxOmhp8IIVGvZRiu3saYyDjr
+4a94pIkld7QzdcJt5HVpqiD+ICFZZsQpLD1ELjDWZKzzYUyTKAVuqDs5crdWfc+Z2pkV8UBwmYqkMdH0
+/nEafJ+oaKWaRYIRyrXvCSxBtQ3hT42HR0ANF/POmB3Za+niHz5KB3dA5Ee543N8zE76OHTi77kNI/qW
+jt9AH94QV9crj6mJ+Nhw+/2fzLk1SX0I+Iwfodf6BFBLBwh4CT4hlAEAAF8EAABQSwECFAAUAAgICAAA
+ACEAeAk+IZQBAABfBAAACAAJAAAAAAAAAAAAAAAAAAAALmNvbnRlbnRVVAUAAQAAAABQSwUGAAAAAAEA
+AQA/AAAA0wEAAAAA
+------=_contents/ecorePathsModel/view/Root.view-028852f0-0ec9-3930-898b-b48081ed8924--
diff --git a/tests/ECPQ7Tests/EPPTests/update-site/project/CreateEmptyTemplate.ctx b/tests/ECPQ7Tests/EPPTests/update-site/project/CreateEmptyTemplate.ctx
new file mode 100644
index 0000000..ca9cb43
--- /dev/null
+++ b/tests/ECPQ7Tests/EPPTests/update-site/project/CreateEmptyTemplate.ctx
@@ -0,0 +1,22 @@
+--- RCPTT testcase ---
+Format-Version: 1.0
+Context-Type: org.eclipse.rcptt.ctx.ecl
+Element-Name: CreateEmptyTemplate
+Element-Type: context
+Element-Version: 2.0
+Id: _DD4ysDmlEeiV5MMKft7xVA
+Runtime-Version: 2.3.0.201804052311
+Save-Time: 4/6/18 4:16 PM
+
+------=_.ecl.context-718f04b4-ed39-33e3-af62-0995e4561998
+Content-Type: text/ecl
+Entry-Name: .ecl.context
+
+get-view "Project Explorer" | get-tree | select "com.eclipsesource.makeithappen.model" | get-menu -path "New/Other..." 
+    | click
+with [get-window New] {
+    get-tree | select "EMF Forms/Template Model"
+    get-button "Next >" | click
+}
+get-window -class WizardDialog | get-button Finish | click
+------=_.ecl.context-718f04b4-ed39-33e3-af62-0995e4561998--
diff --git a/tests/ECPQ7Tests/EPPTests/update-site/project/EPPTestsSuite.suite b/tests/ECPQ7Tests/EPPTests/update-site/project/EPPTestsSuite.suite
index fc73009..0e2ffc1 100644
--- a/tests/ECPQ7Tests/EPPTests/update-site/project/EPPTestsSuite.suite
+++ b/tests/ECPQ7Tests/EPPTests/update-site/project/EPPTestsSuite.suite
@@ -6,7 +6,7 @@
 Id: _MY-BIBiHEeiwib4PmrBZZQ
 Manually-Ordered: true
 Runtime-Version: 2.2.0.201706152316
-Save-Time: 2/23/18 11:49 AM
+Save-Time: 5/23/18 5:31 PM
 
 ------=_testcase-items-62c497da-4241-31f4-811a-6b453a3ecff8
 Content-Type: text/testcase
@@ -23,10 +23,13 @@
 _5muW4DNtEeSiS7b7ptZeHw	// kind: 'test' name: 'GenerateControls' path: 'GenerateControls.test'
 _DKqGwBO1EeeY1-76dQ9m2g	// kind: 'test' name: 'GenModelEditorGenerateJavaCode' path: 'GenModelEditorGenerateJavaCode.test'
 _lx7aYE_YEeWlOMw7vcjT4A	// kind: 'test' name: 'GettingStarted' path: 'GettingStarted.test'
-_jbzigJ7xEeOleLZC7V9mLg	// kind: 'test' name: 'Installation' path: 'Installation.test'
 _2IkQMNnHEee0McrTbR2zPw	// kind: 'test' name: 'TableControlMoveUpDownTooling' path: 'TableControlMoveUpDownTooling.test'
 _O-MQUNwVEeeMsObmKZ9qhw	// kind: 'test' name: 'TableControlReadOnlyBehavior' path: 'TableControlReadOnlyBehavior.test'
 _cR1mwLKLEeebScL4g4WExw	// kind: 'test' name: 'TreeMasterDetailSmokeTest' path: 'TreeMasterDetailSmokeTest.test'
 _foqG8GzgEeWQGtcwdcx-qw	// kind: 'test' name: 'ViewEditor_smoke' path: 'ViewEditor_smoke.test'
+_uCoUgDmmEeiV5MMKft7xVA	// kind: 'test' name: 'TemplateAndSelector' path: 'TemplateAndSelector.test'
+_PcpI0DmJEeiUsKIXZxWPjg	// kind: 'test' name: 'TemplateAnnotationSelector' path: 'TemplateAnnotationSelector.test'
+_JU4aMDmmEeiV5MMKft7xVA	// kind: 'test' name: 'TemplateHierarchySelector' path: 'TemplateHierarchySelector.test'
+_RKICsDmnEeiV5MMKft7xVA	// kind: 'test' name: 'TemplateLabelWrapStyle' path: 'TemplateLabelWrapStyle.test'
 
 ------=_testcase-items-62c497da-4241-31f4-811a-6b453a3ecff8--
diff --git a/tests/ECPQ7Tests/EPPTests/update-site/project/EmptyViews.ctx b/tests/ECPQ7Tests/EPPTests/update-site/project/EmptyViews.ctx
index 1cefc71..0a4e2ac 100644
--- a/tests/ECPQ7Tests/EPPTests/update-site/project/EmptyViews.ctx
+++ b/tests/ECPQ7Tests/EPPTests/update-site/project/EmptyViews.ctx
@@ -5,21 +5,21 @@
 Element-Type: context
 Element-Version: 2.0
 Id: _D4Pj4C3lEeSwhO5Nwx0hPg
-Runtime-Version: 1.5.4.201412181238
-Save-Time: 9/15/15 10:46 AM
+Runtime-Version: 2.3.0.201802190021
+Save-Time: 4/6/18 12:15 AM
 
 ------=_contents/org.eclipse.emf.ecp.makeithappen.model.viewmodel/viewmodels/User.view-4b17062a-9831-3eda-a15b-bb9bea4319f4
 Content-Type: q7/binary
 Entry-Name: contents/org.eclipse.emf.ecp.makeithappen.model.viewmodel/viewmodels/User.view
 
-UEsDBBQACAgIAAAAIQAAAAAAAAAAAAAAAAAIAAkALmNvbnRlbnRVVAUAAQAAAACNkkFPwjAYhu8m/oem
-nm0HHkwWJiFkB1SMCVG4mWb72Cpru7SVgb/etrgJBuNuzfK8z/d2/UbjnajQFrThSiZ4QCKMQGYq57JI
-8GQxnc3w+O7yYqR0QSCreG2AgFi7c022HBoiVA5V/OqOaCd43KmGXuXk0sTue4JLa+uY0qZpiBIFcT66
-ms86xJwizU0ghlE0cNjjIitBsGsujWUygzYFmdJwkmsr+rCr6QVDmnqszfx5kUKrj/pwnU4ZNAc46BxM
-PUwDTAP8r7hUmn8qaVnV1/6T6DmipzdgdHAbXobHPE/w20av2DxdTlJYrh/uGXvfP+X7idsC/9OemS0T
-TM/NFWwD3JasrkEe5n/rLTMbEtLYLQ5CI62UTacVMwaVGtZdzbZi+1a+5rH1yHdF6YsBjalfxbN1fu2i
-474AUEsHCNIf3RM8AQAA2wIAAFBLAQIUABQACAgIAAAAIQDSH90TPAEAANsCAAAIAAkAAAAAAAAAAAAA
-AAAAAAAuY29udGVudFVUBQABAAAAAFBLBQYAAAAAAQABAD8AAAB7AQAAAAA=
+UEsDBBQACAgIAAAAIQAAAAAAAAAAAAAAAAAIAAkALmNvbnRlbnRVVAUAAQAAAACNkkFPwjAYhu8k/Iel
+nm0ZHkyWDULIDqgYE6JwM832sVXWdmkrA3+9bWETDEZuzfK8z/e23+LxjlfBFpRmUiQoxAMUgMhkzkSR
+oMliOpuh8ajfi6UqMGQVqzVg4Gt7rvGWQYO5zKGK3uwx2HEWdaqhU1m50JH9nqDSmDoipGkaLHmBrY+s
+5rMO0edIc+eJ4WAQWuxpkZXA6S0T2lCRQZuCTCo4y7UVXdjWdIIhSR3WZv68SKHkZ324Tqf0mgPsdRYm
+DiYeJh7+V1xKxb6kMLS61v6TuHLElV6PkTC896thEcsT9L5RKzpPl5MUluvHB0o/9s/5foLc0v37vlBT
+6hG5NJvTDTBT0roGcehwHGGo3mCfjsmJpN8LglhJadJpRbUOSgXrrnXbuF2da3064ER9Q8irBoWIK3mx
+2a9f03LfUEsHCPwIQ2g/AQAA6gIAAFBLAQIUABQACAgIAAAAIQD8CENoPwEAAOoCAAAIAAkAAAAAAAAA
+AAAAAAAAAAAuY29udGVudFVUBQABAAAAAFBLBQYAAAAAAQABAD8AAAB+AQAAAAA=
 ------=_contents/org.eclipse.emf.ecp.makeithappen.model.viewmodel/viewmodels/User.view-4b17062a-9831-3eda-a15b-bb9bea4319f4--
 ------=_contents/org.eclipse.emf.ecp.makeithappen.model.edit/plugin.properties-1b087d01-70de-3e6f-ad73-bcdeb8c841e9
 Content-Type: q7/binary
@@ -609,51 +609,6 @@
 AAgICAAAACEAEqrapoYGAACUEQAACAAJAAAAAAAAAAAAAAAAAAAALmNvbnRlbnRVVAUAAQAAAABQSwUG
 AAAAAAEAAQA/AAAAxQYAAAAA
 ------=_contents/org.eclipse.emf.ecp.makeithappen.model.edit/bin/org/eclipse/emf/ecp/makeithappen/model/task/provider/TaskItemProviderAdapterFactory.class-f4cbf519-4d54-319f-9fe6-84276d6cc08e--
-------=_contents/org.eclipse.emf.ecp.makeithappen.model.viewmodel/target/org.eclipse.emf.ecp.makeithappen.model.viewmodel-1.7.0-SNAPSHOT.jar-dd0da251-21de-334e-8325-7cfa8744618c
-Content-Type: q7/binary
-Entry-Name: contents/org.eclipse.emf.ecp.makeithappen.model.viewmodel/target/org.eclipse.emf.ecp.makeithappen.model.viewmodel-1.7.0-SNAPSHOT.jar
-
-UEsDBBQACAgIAAAAIQAAAAAAAAAAAAAAAAAIAAkALmNvbnRlbnRVVAUAAQAAAAAL8GZm4WIAgfOxIu4M
-SIATiH1dQxx1Pf3c9AOgyjgYzgGVHZ0j35rJyMCwlImBQQRZma+jn6eba3CInq/b3EBf/0MGDHv1b9Zn
-7Fk/pVezp0DgsKNwT+OR1ZpvpUOul5XJPtq/nXmOXAf75S0vj7+u1n+vuzNQVWq+zWHTU7OaeDS7F1dm
-p7Sm/F1pvi3o0cRskSO7dFtXhNxtcJqeGB989v6CP33XTXmuhi1aVN3a/zhPyn1JYFr0QfZHM8t1q579
-N/x2v37n3oU9y3JmbC48JWTmqV5Y8vqI39uHdQn+ony5zvvkreRCf6b8i5zguru1c7HoveinE+aw6EW/
-rpmje/Xcu6kti9nXVoWfLp6xN0fKvVvYfdO2tcIRC1uaBTO4LnHE5ky1P3dQYc3euAvvzp2Lsue49dBM
-hfMx+3QfztcOzFVRxftnxz48UBq7cGfH1cbn/RXrlx3KWvtn75yN2Z0XVc5eNhK/mTIn9abHJl75Lulj
-RzNkKmZMSD23MXG/l+GlXRNeeE7VsT53wb6y6JvooeMX5zJ/n3D8Tn62Xhnjke8GKosT50RNPNlc87pL
-NvjbpGeFIu7xAfAYbK856YYeg/7B7p4oMYipjA9ZWY6hQR6SWo28MyhquYG4LDO1PDc/JTWnGClZgAw1
-3rXHRhzIUwZieQxDk0rzUnJS9QqK8gtSi0oyU4u5NU6d8dVZtYW34ULMwZUnf1ZqKghacDMgzNxcddIt
-/ej8zPlA3l8gBokW5JSmZ+bpVeTmuPrtFmoyEHjzWXTml7iSLRs8nNJzFeUfHGg0n3xdpaNmH0vAtl17
-a8+syiqa1j/DiHX9Uc6+psX5Tt77ri+qu8MXHii5TCtH52jP7q880107v92dbN5TvK5A6oL4zg2ihhPk
-t3CsbF/LdKH0s2yiyp8Gbt2oDs2eK0lNJwVLUgJnrHUS3Xb9rEb/7+KKzECuaTXTSucdbn3vGNnzWu+n
-fJpE8Cfzn9wIb4DCsLTWmikQmFsKRSA5BikMQ4tTi/RA/Kcz7ufPNhA4fl/9bb2DT7WM32bzKWtebcrp
-vpIXuti3drXNjobQHOXfQrP+frWuaytZ6Ta1xOkR75rd/e+r46WZJ39mn2khbRCWYVp6fs/E1w1cJRoh
-JqX60zYfPWT7/8Ovqy6zTzQrCK5k5X/StS44X1nh8xI+xY/1l5Z+Vmi9v+CYZdeDU79M7EqTj1xJ1zlt
-5H/6hLLc7r1RJopl9irV8S497ouNuXbHsBl6/PPT6I5hDUh3XMD75ulV1WcnQ9L4JDZXyoU9t9FUMaqa
-O61IKqVRs5lbhnWzzQzRg2s4/qlbXHP7c42r8tLUfadfWLi657Fq3yo7azhv1xuBoE/VAhKfTVhDF532
-abtzr9p1m3f2oUI1t+w554Xy1gpLR5iKXtl83eyJ6JaVuvekj9VFGOhpdzrqTLrQUJTh+mOH78l753q/
-7jdjnl6z+npE2E+frGzZH/Gfsq8HxgQdu52trGJ+e9YvnzzPOYGVbuqmm3ftjeZM/ijN+/ZBC//WJ06x
-TzvNNzDN0mh4F1zL1vf60gt/doe3M789nxU+c+1Krst/f7IuEtx/zWP3S4/9N/0Ms73T2k3eS5171be/
-gX1LT3uqo/IOfb4LxnEqzZn1K7fp7+W3PPT9qnuigVwPc+7Z2o+KTKKXCi1EuLV2Hi/5/77xssx376DV
-h8StPhgLBPY0b9w56fZ0X7FgS+aqc6FFvy/Vyi24wfPcdDVQ9N3iCSUv7jqo6Ej1fdloJ6HO5/G+W3uV
-Rrs60/bmjYvX/mzRZ+jP999evKLs9p/gH/7nSopTp1f8UdMM2bRsu3/VxuvPTx609+z/JxB0Rz4AZ9nO
-j1xo5yaWpSLneXTFypiK84vS9VKTczILilP1UnPTgOwCPAaEEGcAFjG93MTs1MySjMSCgtQ8PXCG0YNn
-HaTSxyvkkVvTRd2+EGCldAeYzaJpZGNBfi6o6OkNCvQ/rCBQ9359xq+4F1dcNhuIxfeozY7elFmj+uXa
-oygvruzfn/cezJozc2YL+473u9+/s0v4vHDdI76o1VK23moq3kkXNp2cqpd28vY3zVqPZzZJy3LtHHdJ
-3Lx1btIlS+OlW8RkM5R6JqhOWKb7omrrknIV56kax57evHxw1fuefe8961/vNI80Wyh/+ijb5OyJWrlz
-Lwj5zQzzXcsu1ityzrx8a8Yf8eQNlRzL5rl/mFew5vArtfZXtj7nbY+9iNSx2tST4Wj9TjrZ9bbMGe9z
-gdMb1kzZ6LDg3sObBlZNjVpRy8ucrHgUZh1SyApu9G2WW2z/YUJBFbud4ncVb/P1/a/Pfs46/UKCf42Y
-VsmS5q0Fquotj44JvGiKe9HJ0tFzVHNx+s/jP19YJJTc+6K6M+qN484giWax6tUeyxd8X35feGFhkT7X
-H68/KpNnvWr4nnxU8KPr/+xXpe0BVjWhcrWMiMgEJZ8d/j88e4C85UCcRMPIRNRGuSdPczUbCDhcrFX4
-b/BgV/NEuxUPnLwyd79g/sIeZHwswNepZ9q/2qWv3/F9V1PfJJKiwnqeP+apz7TNS96paajzRnI5PXmd
-O+/tw4I1r1Q7eNONWy9aRHPcSdy1Ku/pYqv72edKCibvX3GItffKl2P9LSZbum3TjVwun1L799/ihPjM
-G57vTz56IPLVQrrq/5Gb4gHejEwizLibZRAgwPDWkQG1kQbThr2ZBgNLGtUZsDfakC3G1ppAWHyIEaVt
-gVsbH4q2l4yYbQ2EXmytDYReUSa0tgfCt9haHwjf2jERbIsgG4at2YEwbBITciMEWR+2eh6hL5IZe62P
-L675Ufx/hxVLoY1bszKKZk42Igtx3AaGoBjoRZyBZBTqiBDFVqwjQnQPjVwALeSRHYKtSEI4pJODHgVU
-gDcrG8g+XiAUZWFgmArOkABQSwcIgu0Ivo4IAADADQAAUEsBAhQAFAAICAgAAAAhAILtCL6OCAAAwA0A
-AAgACQAAAAAAAAAAAAAAAAAAAC5jb250ZW50VVQFAAEAAAAAUEsFBgAAAAABAAEAPwAAAM0IAAAAAA==
-
-------=_contents/org.eclipse.emf.ecp.makeithappen.model.viewmodel/target/org.eclipse.emf.ecp.makeithappen.model.viewmodel-1.7.0-SNAPSHOT.jar-dd0da251-21de-334e-8325-7cfa8744618c--
 ------=_contents/org.eclipse.emf.ecp.makeithappen.model/src/org/eclipse/emf/ecp/makeithappen/model/task/Gender.java-3adc2e56-41a5-370d-a4e7-a8f82a086a7e
 Content-Type: q7/binary
 Entry-Name: contents/org.eclipse.emf.ecp.makeithappen.model/src/org/eclipse/emf/ecp/makeithappen/model/task/Gender.java
@@ -777,14 +732,14 @@
 Content-Type: q7/binary
 Entry-Name: contents/org.eclipse.emf.ecp.makeithappen.model.viewmodel/viewmodels/UserGroup.view
 
-UEsDBBQACAgIAAAAIQAAAAAAAAAAAAAAAAAIAAkALmNvbnRlbnRVVAUAAQAAAACNkkFLwzAYhu+C/6HE
-s8k6D0JZHWMUmToRhm43Ce3XNq5JShLXzV9vkq51k4m7hfC8T94k32i85VWwAaWZFDEK8QAFIFKZMVHE
-aLKYzmZofHd5MZKqwJBWrNaAged2XeMNgwZzmUEVvdllsOUs6lVDp7JyoSO7H6PSmDoipGkaLHmBrY+s
-5rMe0cdIc+OJ4WAQWuxpkZbA6TUT2lCRQpeCVCo4ynUVXdjWdIIhSRzWZf68SKHkZ91ep1d6TQt7nYWJ
-g4mHiYf/FZdSsS8pDK3Otf8kzjziTK/HSHjrf4ZFLIvR+1qt6DxZThJY5o8PlH7snrPdxE6Be7QXasoY
-kVPncroGZkpa1yDa8/d6Q/Ua+zSygxMEIyWlSaYV1TooFeR9za5i91eu5qH1wHdFyKsGde9eHRE3jyc7
-/RpIy30DUEsHCAdxc5E/AQAA4AIAAFBLAQIUABQACAgIAAAAIQAHcXORPwEAAOACAAAIAAkAAAAAAAAA
-AAAAAAAAAAAuY29udGVudFVUBQABAAAAAFBLBQYAAAAAAQABAD8AAAB+AQAAAAA=
+UEsDBBQACAgIAAAAIQAAAAAAAAAAAAAAAAAIAAkALmNvbnRlbnRVVAUAAQAAAACNktFOwjAUhu95iqVe
+2zK8MFm2EUIWg4oxIQp3ptkOW2Vtl7Yy8Olti5tgMHLXLN//nb87jcc7XgdbUJpJkaAQD1EAIpcFE2WC
+JovpbIbG6SCWqsSQ16zRgIGv7bnBWwYt5rKAOnq1x2DHWdSbRs5k3UJH9nuCKmOaiJC2bbHkJbY+sprP
+ekSfIu2NJ0bDYWixx0VeAafXTGhDRQ5dCnKp4CTXVXRhW9MJRiRzWJf58yKlkh/N4Tq90msOsNdZmDiY
+eJh4+F9xJRX7lMLQ+lL7T+LCERd6PUbC8NavhkWsSNDbRq3oPFtOMliuH+4pfd8/FfsJSgdBEPsf/ExN
+pVNybjinG2Cmok0D4lDie4aheoN9OiZHEudUUppsWlOtg0rBum/dNe5W51of+4/MV4S8aFB3bgmI2Nd5
+ttyv55kOvgBQSwcIoz4cPUEBAADsAgAAUEsBAhQAFAAICAgAAAAhAKM+HD1BAQAA7AIAAAgACQAAAAAA
+AAAAAAAAAAAAAC5jb250ZW50VVQFAAEAAAAAUEsFBgAAAAABAAEAPwAAAIABAAAAAA==
 ------=_contents/org.eclipse.emf.ecp.makeithappen.model.viewmodel/viewmodels/UserGroup.view-f4ba32a3-cebb-3d7d-81cb-bb504c62a4a7--
 ------=_contents/org.eclipse.emf.ecp.makeithappen.model/plugin.properties-01bff0e4-a577-34a5-8989-585a7d1fa858
 Content-Type: q7/binary
@@ -969,6 +924,15 @@
 FAAICAgAAAAhAEi382THAgAArwkAAAgACQAAAAAAAAAAAAAAAAAAAC5jb250ZW50VVQFAAEAAAAAUEsF
 BgAAAAABAAEAPwAAAAYDAAAAAA==
 ------=_contents/org.eclipse.emf.ecp.makeithappen.model/bin/org/eclipse/emf/ecp/makeithappen/model/task/util/TaskAdapterFactory$1.class-709eb7a5-4239-3b40-aff6-eb276a4da97b--
+------=_contents/org.eclipse.emf.ecp.makeithappen.model.viewmodel/target/checkstyle-cachefile-fb909f74-d41f-3c3b-a79d-f4b564aedcc1
+Content-Type: q7/binary
+Entry-Name: contents/org.eclipse.emf.ecp.makeithappen.model.viewmodel/target/checkstyle-cachefile
+
+UEsDBBQACAgIAAAAIQAAAAAAAAAAAAAAAAAIAAkALmNvbnRlbnRVVAUAAQAAAAANyzEKgDAMBdDdUwTc
+nH6bmlRBHGrdnPQCRVC6KBS9v7791Wt6aEmFrCNjemjPoBA3sjC+2u/ryOdb0pPvqxkHcRwYnTC8gYPY
+OaKdpuBUvECDRijLHz9QSwcIU/bsAFcAAABXAAAAUEsBAhQAFAAICAgAAAAhAFP27ABXAAAAVwAAAAgA
+CQAAAAAAAAAAAAAAAAAAAC5jb250ZW50VVQFAAEAAAAAUEsFBgAAAAABAAEAPwAAAJYAAAAAAA==
+------=_contents/org.eclipse.emf.ecp.makeithappen.model.viewmodel/target/checkstyle-cachefile-fb909f74-d41f-3c3b-a79d-f4b564aedcc1--
 ------=_contents/org.eclipse.emf.ecp.makeithappen.model.edit/.project-5c6fe19a-b186-31c8-b138-e0f1a11692ab
 Content-Type: q7/binary
 Entry-Name: contents/org.eclipse.emf.ecp.makeithappen.model.edit/.project
@@ -1083,18 +1047,18 @@
 Content-Type: q7/binary
 Entry-Name: contents/org.eclipse.emf.ecp.makeithappen.model.viewmodel/target/p2content.xml
 
-UEsDBBQACAgIAAAAIQAAAAAAAAAAAAAAAAAIAAkALmNvbnRlbnRVVAUAAQAAAADFVVFv0zAQfkfiP1hC
-wkIijlc0sXUL0xAgeGBM6uCFJy+5dscS29hO1/LrsdM6SausY0WIN+vu8t133+ecT88WVUnmYCwqmdED
-xikBmasC5SyjX68+JEf07M3TJ6e1RGeJxV/gq6iPENLECBYZVWbGIC9RW2BQTf1Zs0rcAroboTVIVqkC
-SjZHuGtOtN/xNeNsxA8O+dGIJ/x4dLxCD/i6EA727GCEnHmu37mH5y8H2rygxILngW6ZUU7T2FUbpcE4
-hDjuYSTUJZdEigq2aP2sUaoF0yMWkn5GUdbbNX9CPX1sO181xwJM2/L9qoZ8DnjeSXJp1A/I3Q7oSsxB
-JjOjav2p2MX9QQzhtZuK3O2G2VeCVY/19WkbNPYmk4vzy8nHL1edl2lnZs/eIFY099WmuSFVNK2sFvn9
-kmNNhzz5+7ufPkDHzpBd17Io4T8RGNYjhtxSt8Qizf52YXzTnMaKGDAB0MDWmumn9tEiDL7WIP4obFFh
-uyH4FqvIIgbifR6iFXMkL4W1OEUwW7z+wXrsqLbUYsSpOr/RCuXAXu7MCgTvt6XDeCecGBgapXWmzp3/
-eECTzQJyC8vw00qcgnX9KkLeNhIlk2V1rUrML7yDY/JYrU6s328lOCXHmW8Kz58tzk/WyN9WE47JgIpN
-XY9z2iPdjdqPtiKnmwqt3sI0PIbhoWwOofY3UEsHCDPCNTwIAgAAWwcAAFBLAQIUABQACAgIAAAAIQAz
-wjU8CAIAAFsHAAAIAAkAAAAAAAAAAAAAAAAAAAAuY29udGVudFVUBQABAAAAAFBLBQYAAAAAAQABAD8A
-AABHAgAAAAA=
+UEsDBBQACAgIAAAAIQAAAAAAAAAAAAAAAAAIAAkALmNvbnRlbnRVVAUAAQAAAADFVV1v0zAUfd+vsISE
+hUSdtAVRunXTECB4YJvUwQtPXnLbXZbYxna6hl8/O9/t0sIqEE9xfG/OPfcc5/rkbJ0mZAXaoBQzOmQh
+JSAiGaNYzujX64+DCT07PTrJBFpDDP4Cl0RPjwgptgjGMyr1kkGUoDLAIF24tWIpvwO0t1wpECyVMSRs
+hXBfrGi33vANC9koHE7C8ejVIHw7Dgt0j69ibuHACpqLpaP6PXTo4cu+Mi8oMeCIoM1nNKRBVVVpqUBb
+hLrb1xWfNpYTwVPYYvUzQyHXTI2YD7oWeZJt5/wJ8+CJ1VzWCmPQTcUPZQ754uGci+RKyx8Q2d3IKV+B
+GCy1zNTneB/z30Fwp9uCR3Y/yoH9lyWqk9Pgl84O5hfnV/NPl9eNjUHrY2usF6q2dbxhq4/ERSGjeLRb
+bcxonx1/4dAH++mYJbKbTMQJ/CcC/XrUWzZXDbGaZneosHDDmcKI6l17OA2bw6UbOUQI33UlQP2DsHWK
+7VwoJfCDYcLcKGjI1Wyq9/pE97CrQyRKuDG4QNBb9P7FbGyINsyqDSuz6FZJFD0zufXL89vpTAvxnlv+
+uGMUxuossu7Tx3psxskd5P6XFbgAYztJhLwr1BnM8/RGJhhdOA+n5KkyHRs32RKwUkxnriY8f7Y+P66Q
+v5XdTUmfgEViSznocG767G7W8gab4hQXYOBvQHc3Fk+X+ABQSwcIXf3HVBACAABMBwAAUEsBAhQAFAAI
+CAgAAAAhAF39x1QQAgAATAcAAAgACQAAAAAAAAAAAAAAAAAAAC5jb250ZW50VVQFAAEAAAAAUEsFBgAA
+AAABAAEAPwAAAE8CAAAAAA==
 ------=_contents/org.eclipse.emf.ecp.makeithappen.model.viewmodel/target/p2content.xml-9b66ce65-f78d-348f-8597-5b05280516a6--
 ------=_contents/org.eclipse.emf.ecp.makeithappen.model/modeling32.png-b8aedda2-5919-389c-b8e6-1712db80effb
 Content-Type: q7/binary
@@ -1209,14 +1173,14 @@
 Content-Type: q7/binary
 Entry-Name: contents/org.eclipse.emf.ecp.makeithappen.model.viewmodel/viewmodels/Task.view
 
-UEsDBBQACAgIAAAAIQAAAAAAAAAAAAAAAAAIAAkALmNvbnRlbnRVVAUAAQAAAACNkkFPwjAYhu8m/oem
-nm0HHkwWJiFkB1SMCUa4mWb72Cpru7SVgb/etrgJBuNOa5bnffq2/UbjnajQFrThSiZ4QCKMQGYq57JI
-8GQxnc3w+O7yYqR0QSCreG2AgFi7dU22HBoiVA5V/OqWaCd43KmGXuXk0sTuf4JLa+uY0qZpiBIFcT66
-ms86xJwizU0ghlE0cNjjIitBsGsujWUygzYFmdJwkmsr+rCr6QVDmnqszfx5kEKrj/pwnE4ZNAc46BxM
-PUwDTAP8r7hUmn8qaVnV1/6T6LlFT2/A6OA2vAyPeZ7gt41esXm6nKSwXD/cM/a+f8r3EzcF/tKemS0T
-TM/tK9gGuC1ZXYM87P+tt8xsSEhjNzgIjbRSNp1WzBhUalh3NduK7Vv5msfWI98VpS/ug6kfxbN1fs2i
-474AUEsHCIxXYqE8AQAA2wIAAFBLAQIUABQACAgIAAAAIQCMV2KhPAEAANsCAAAIAAkAAAAAAAAAAAAA
-AAAAAAAuY29udGVudFVUBQABAAAAAFBLBQYAAAAAAQABAD8AAAB7AQAAAAA=
+UEsDBBQACAgIAAAAIQAAAAAAAAAAAAAAAAAIAAkALmNvbnRlbnRVVAUAAQAAAACNkk9PwjAYh+98iqWe
+bRkeTJZthJAdUDEmGOFmmu1lq6zt0lYGfnrb4gYYjJzWLM/veX/9E493vA62oDSTIkEhHqIARC4LJsoE
+TRbT2QyN00EsVYkhr1mjAQNf23WDtwxazGUBdfRml8GOs6g3jZzJuoWO7P8EVcY0ESFt22LJS2x9ZDWf
+9Yg+R9o7T4yGw9BiT4u8Ak5vmdCGihy6FORSwVmuq+jCtqYTjEjmsC7z50ZKJT+bw3Z6pdccYK+zMHEw
+8TDx8L/iSir2JYWh9bX2Y+LKEVd6PUbC8N5fDYtYkaD3jVrRebacZLBcPz5Q+rF/LvYTlA6CIPYH/EJN
+pVNyaTinG2Cmok0D4lDiZ4aheoN9OiYnEudUUppsWlOtg0rBum/dNe6uzrU+9Z+Ybwh5tR9E7MO82OvX
+y0wH31BLBwhO0nUJPQEAAOcCAABQSwECFAAUAAgICAAAACEATtJ1CT0BAADnAgAACAAJAAAAAAAAAAAA
+AAAAAAAALmNvbnRlbnRVVAUAAQAAAABQSwUGAAAAAAEAAQA/AAAAfAEAAAAA
 ------=_contents/org.eclipse.emf.ecp.makeithappen.model.viewmodel/viewmodels/Task.view-e3c72d28-be8a-354e-971a-cad170c9f9cc--
 ------=_contents/org.eclipse.emf.ecp.makeithappen.model/bin/org/eclipse/emf/ecp/makeithappen/model/task/TaskFactory.class-6ff9faeb-58a6-36b7-8335-cb1f10fa7caf
 Content-Type: q7/binary
@@ -1857,12 +1821,12 @@
 Content-Type: q7/binary
 Entry-Name: contents/org.eclipse.emf.ecp.makeithappen.model.viewmodel/target/local-artifacts.properties
 
-UEsDBBQACAgIAAAAIQAAAAAAAAAAAAAAAAAIAAkALmNvbnRlbnRVVAUAAQAAAADFkDFrwzAQhfdC/4Mh
-sw/bJC01ZAjGkCkJ2N1uOeSLrNaShXRO/fNrWlo6eOmU7fG4d3x8m7afksOkkyJL8rzcPpXFS1LVTbsU
-+e7xgYKYKykBEiHVcwe+sCzUkdC+whLxNXKIiPWk2SFqI4hj0MBqMD4ysL0u2YMaAyPyTNYPHNdvLL2z
-kZ68Zwd27HiAm+GPr4QoFDQv332hRifsBGY7/CG0ZNydkP67THN4hixtTodLczy38EZhXfVPF+/m+pfg
-2/YnUEsHCAExBZ3EAAAAMAIAAFBLAQIUABQACAgIAAAAIQABMQWdxAAAADACAAAIAAkAAAAAAAAAAAAA
-AAAAAAAuY29udGVudFVUBQABAAAAAFBLBQYAAAAAAQABAD8AAAADAQAAAAA=
+UEsDBBQACAgIAAAAIQAAAAAAAAAAAAAAAAAIAAkALmNvbnRlbnRVVAUAAQAAAAC9kLsKwkAURHu/YsE6
+d7NRUAIWIqKND4g/cNlck9Xsg8318fmGgNrY2KQbhhlmOOMCWewwimwqlMrTWT5JxWp9Elmq5iOMbM6o
+GZAZdU0lhMwSY4mMC1l7S5JuFTm5MSx9rIB0Y0JLQPbc6QDaxy7yRBsaan8mLF7JcI0hkAPrS2rgbujR
+K8kYK2IZMu0dk2N42uZ7yqJxA774t5coUDNIk2K/PBbbwwkuGH8SfXvtoEg/qz3UF1BLBwgQX6letgAA
+AAgCAABQSwECFAAUAAgICAAAACEAEF+pXrYAAAAIAgAACAAJAAAAAAAAAAAAAAAAAAAALmNvbnRlbnRV
+VAUAAQAAAABQSwUGAAAAAAEAAQA/AAAA9QAAAAAA
 ------=_contents/org.eclipse.emf.ecp.makeithappen.model.viewmodel/target/local-artifacts.properties-f3abdc72-c70b-3011-abf3-baa5607b6cbf--
 ------=_contents/org.eclipse.emf.ecp.makeithappen.model/target/sourcebundle-l10n-gen/OSGI-INF/l10n/bundle-src.properties-670b32df-5a04-3f25-9aab-2b2fb93c50d4
 Content-Type: q7/binary
@@ -2790,14 +2754,14 @@
 Content-Type: q7/binary
 Entry-Name: contents/org.eclipse.emf.ecp.makeithappen.model.viewmodel/target/MANIFEST.MF
 
-UEsDBBQACAgIAAAAIQAAAAAAAAAAAAAAAAAIAAkALmNvbnRlbnRVVAUAAQAAAACdkTtvwjAUhfdI+Q8R
-exyTkJYEsVTq0IGqAqm7sU/Abfyo7VD672seihhQhw627rWOv3N9vGJadvAhf4fz0ug2mxKaJk+DFj3y
-zY/aml7yV6bQZsbtCHgvrQeB6mJtiWKfkGHPrIUmygj05CDxfa4WaZJ5qXc9QgQvgxswkv9HHK/fTPtI
-KCnptKbzkua0KZs0WeNrkA75RXzf5sS84q0zByngyFHJ0WF1DWZ0KtPk+cLIN2ZwHGt0cNAcvs08V+1O
-hvMqiriPftH71DtjQhG942lMBToU94bixoFE9cKysF9OcGTK9vB3tSpy/ohqsuBGKRlexJI+CMyasi67
-mlfNvKqqmaBbNuWPlPHZPHIoF13NsKU3AWthXJtdn5ytTsz4l9mbMx/gIU3S5BdQSwcIIpqSESwBAAA8
-AgAAUEsBAhQAFAAICAgAAAAhACKakhEsAQAAPAIAAAgACQAAAAAAAAAAAAAAAAAAAC5jb250ZW50VVQF
-AAEAAAAAUEsFBgAAAAABAAEAPwAAAGsBAAAAAA==
+UEsDBBQACAgIAAAAIQAAAAAAAAAAAAAAAAAIAAkALmNvbnRlbnRVVAUAAQAAAACdkU9vgyAYh+8mfgfi
+bclE1I5ajZclO+zQZWmTXXai8NqyCTjErvv2o7UxPZgdduBvXp7fA6yZlg30Ln4D20ujS5RiEgaPgxYt
+xNsftTOt5C9MQYmM3WPgrex6wKAaP++wYp8g3YF1HWisjIAWHyV8X2ZVGKBe6n0LzoNrZweYyP8jTsdv
+bNMlJjgjaUHybBGTVe71N/A1SAvxWD2fc4Ze+Z01RynA4pOS1W5MOIK96BtdR+9jyr0fCkzuokljfX29
+SScLg6cxJ96awXLYQAMWNIe+RD1X5V66S0sS309O3u+8tsa4xPv5XZ8N2iVz4txYwL666pg71BGcmOpa
+6Gdrlef88Z5RxY1S0j2LerlcpXy3oITSQogFoTmIB6CCpznNaO45hDWCFRSym1/QwtgSXa+M1mem/3D0
+as0HcBcGYfALUEsHCM0q15tCAQAAYQIAAFBLAQIUABQACAgIAAAAIQDNKtebQgEAAGECAAAIAAkAAAAA
+AAAAAAAAAAAAAAAuY29udGVudFVUBQABAAAAAFBLBQYAAAAAAQABAD8AAACBAQAAAAA=
 ------=_contents/org.eclipse.emf.ecp.makeithappen.model.viewmodel/target/MANIFEST.MF-b0239d18-7d5b-33cb-b912-47fe56bf0730--
 ------=_contents/org.eclipse.emf.ecp.makeithappen.model/src/org/eclipse/emf/ecp/makeithappen/model/task/util/TaskValidator.java-103f229c-2633-37be-aa48-cfe3b308635a
 Content-Type: q7/binary
@@ -2836,20 +2800,6 @@
 AOIdAAAIAAkAAAAAAAAAAAAAAAAAAAAuY29udGVudFVUBQABAAAAAFBLBQYAAAAAAQABAD8AAADxBgAA
 AAA=
 ------=_contents/org.eclipse.emf.ecp.makeithappen.model/src/org/eclipse/emf/ecp/makeithappen/model/task/util/TaskValidator.java-103f229c-2633-37be-aa48-cfe3b308635a--
-------=_contents/org.eclipse.emf.ecp.makeithappen.model.viewmodel/pom.xml-8a2fdef8-0029-3e2c-aad0-a3ea0c52fb79
-Content-Type: q7/binary
-Entry-Name: contents/org.eclipse.emf.ecp.makeithappen.model.viewmodel/pom.xml
-
-UEsDBBQACAgIAAAAIQAAAAAAAAAAAAAAAAAIAAkALmNvbnRlbnRVVAUAAQAAAACNUlFPwyAQfu+vaPpe
-6NREszAWX4wmm1uyaXwl9NbiWkoKa/vzvcFqnJmZhAe477vv7j5g86Gu4g5aqxo9SyYkS2LQssmVLmbJ
-2/YpfUjmPGKmbT5BuhjZ2s6S0jkzpbQWHWgijJAlkKYt6Hq1pHckQ5UoxuXZ08Gq74y+70l/67k3WTah
-H8vFBpNrkSptndASTplWTa0HFo0Uzjd3tWj8F2OweQimnkfwnnCsw+omh+o9TM89xuhZLDqyjGhBO+4b
-Y0XbHMxLzlGXgKyUsUCg3uHZMDqCgSpap3ZCOgwgmsIgalOBTYMeoz/wkHB6Bz4h9yRLN6+P683zasvo
-GA+sFip0pIO1cCUnhOLGEOiCXuiJBIiMxSmjZ/nH+eg4YHTe9CW5WuxBuVIYgxZ7q0inoPen3xOhcXIv
-CvxK/CSTmuqA92PFEfFF/2vqdYdQOnxVHn0BUEsHCILRLY5UAQAA3AIAAFBLAQIUABQACAgIAAAAIQCC
-0S2OVAEAANwCAAAIAAkAAAAAAAAAAAAAAAAAAAAuY29udGVudFVUBQABAAAAAFBLBQYAAAAAAQABAD8A
-AACTAQAAAAA=
-------=_contents/org.eclipse.emf.ecp.makeithappen.model.viewmodel/pom.xml-8a2fdef8-0029-3e2c-aad0-a3ea0c52fb79--
 ------=_contents/org.eclipse.emf.ecp.makeithappen.model/target/local-artifacts.properties-af9c1344-e389-32af-91a4-d7a7cb9c620e
 Content-Type: q7/binary
 Entry-Name: contents/org.eclipse.emf.ecp.makeithappen.model/target/local-artifacts.properties
@@ -2977,30 +2927,31 @@
 Content-Type: q7/binary
 Entry-Name: .q7.content
 
-UEsDBBQACAgIAAAAIQAAAAAAAAAAAAAAAAAIAAkALmNvbnRlbnRVVAUAAQAAAADtWl1v4jgUfV9p/wOK
-+kpSOrMfquiOqi7tIm0pEt3ZfUMmuQSD40S2A/TfrxMSIB9O4kBnZnd4AuJzru1rx+f6iP6nrUc6a2Ac
-+/TO6JnXRgeo7TuYundGKObdX41Pv/34Q99nrgk2wQEHk9mBEKYttubGZyseIBtu/06/PfhUwFZ0th6+
-3ce9ieLKnii/lc/vjIUQwa1lbTYb0/dcUwa3/nkeppCavvb0FBPRY5wlcdYeZ3Qo8iR64AXi7TOGDTc6
-2Lkzpr9/HC8/PnwgA5hsFi8/jTbb68XYNeQ0O52+HY2fiviH/Bkwfwm24Ems46GBN5ffA9NDK8BigYIA
-qOn5DhAjYUv+HBNIyaa9AHvFxRsBw1JBCOJy9GKhRLhYYJf6TB0jGbOqHc38UJgL4ZFqBKa4GuDJKct9
-wqtRcjQBMIFBiZuFmDgNcHFuZYcfbsyAuipUQEIX0wbhEuBWnYfA9wrNPnHkrk5TzUGIOAV7RC7E8Yax
-5aKZDLgfMhu4HCHMjwdXywypwB7o8JaO2HE1OQSF1F7IiekSQ6zDIGKVJmWObOEzzR4DB0wUYFP4PtHK
-Z0TMw/tWsraqxZ5hml3mTKsMf9xaaE+6zmKKKG+eR5RECoqYAur4VCqDFwnZk6sSKxBfqaC5tD8BlcTd
-uZZZnArOCAkpG4hg8aZHfJXj0mc8xnuvRVdjZK+QC1d/YgEMyS3YNoIe8S+um9CI8cT8MGhAyyw09gLl
-nqjK5VDyavsqobflJXmM6Fe9EwPo0vfJbUtuxCseT8W4maULBdZbunsHBXIfJyvYLo3ZGG0iTDZY2Is2
-zM/ywHCQ7PfkXFa3V7Wq21Qt5c/LnpYIVJ1kHRWcKlkE7j3sUflqpy7+8+D1vjscPSqjP9+Pho+Dyav5
-/KgTt6BFmaCR+kgpz5bASoyDkVuDc4HuetQYImf2pRpoWw0s0Rq1KQZ0eHEtoEtIDy5dXqrjOrxYxnUJ
-OxWvZZ1PxGu6Umm4Pu1YgfXYWQHW5zahfWn5bZHARDn1iQfhPDEJ/xvdFIi5IJQCRHwbkS5iAkfXVl7u
-NTRSwoo7qtpe6vbMX8zr7mR0P5788fLaTQ2FJWJnDl0dMrg5pCBbOBSAiatWAsvkXQqxvEgJcNI5VYoo
-otQXsTrk8l62CfJ6uAYqV9Be4DWwfC85C0i1vPXd7GYxC6lDoEt617Tr5vU3x3iZPA3zFVUJLIpVVhpk
-XLW4V1mnqCagmkTb16hvpW5p+qCVe2rKkk182xZqU8fynF5kjJhCo2gX3/LiW158yyK27qaSAcv3bI2d
-vDrkKblaaiDPrnH8ql5FZSV4UvViiWrjaByCtfLSBHjjZA6n8k/zdQ4F+glDiit1Hf53U61iO6qA1K/4
-PCSk8h23o4Oo93PxHT9K/wMDWZhF+2LKw1n0yafxFdvF82JVUWTu98A0lN/4NL79anCnoqpLRX5zR91s
-WTPJmcwUiKnLINJZ6lYPLkEzcOqxzaYboxrF2vkAjQLuoMWoZ9p97+UBXgy2ryJbbQyf41P5NPpJJki5
-zLTwgzTo343IfNuWSHxnfEdfpCz+xRy5mCPqZ+9ljqwxbCr/ZHYu66LEQ6g3LL5IZVC2DWq3QMnyN9+7
-//XTcb9pvvIR9j4nS+3q7Kev9rviyjvCqWcZXz2qIYdyO4erOQ361uFvp31L97+2kvQvUEsHCHB3pSPw
-BAAAyCsAAFBLAQIUABQACAgIAAAAIQBwd6Uj8AQAAMgrAAAIAAkAAAAAAAAAAAAAAAAAAAAuY29udGVu
-dFVUBQABAAAAAFBLBQYAAAAAAQABAD8AAAAvBQAAAAA=
+UEsDBBQACAgIAAAAIQAAAAAAAAAAAAAAAAAIAAkALmNvbnRlbnRVVAUAAQAAAADtWm1v4jgQ/r6/AkX9
+SijdvRdVtKuq1/YqXVskenv3DZlkCAbHiWIH6L+/SUggb07i0K72Vnwi4OcZj8fOPOMRo69bl/XWEAjq
+8StjaJ4bPeCWZ1PuXBmhnPd/N75efxp5gWOCxagvwAwsX0rTkltz4wUr4RMLLv9Jn249LmEre1uXXu7N
+XkRmcSIuLvH3K2MhpX85GGw2G9NzHROND/59ekwhDXPt6Skmose4AeIGe5zR48RF9J3ry7dvFDbC6FH7
+ypj+8WW8/HL7md3BZLN4+eV5sz1fjB3j+lOvN7Ii97mMnvGbH3hLsKRILGUdA3eOz77pkhVQuSC+D9x0
+PRuYsSMjfU4ZpFzTWoC1EvKNgTFQIBgR6LlcqAAOldThXqC0kPirGCYzL5TmQrqsFkA5rR13ca14OkQt
+CD3xIZAUVLBZSJndDIsjirN9vjB97ihAPgsdypuNJbitMgC+5xZHPWbjKU4DLEDKeO0poGAge0Is3Cgz
+AOGFgQUCvYN5xrFGYsgldUGDtrTljqpHYSTk1gIXpckLqQaByVUajzmxpBfozefbYBKfmtLzmE4kI14B
+PRokW6rY4hnluc3NDaLtzGBpOJk2BymD3HkBUGHHL0FKoGziqUCX8bncVAuVRKwUyEKwH4Ajb5e5sjtS
+Q3kmEjWBMCrftHiv6JQ24T4+bPoTjYm1Ig6c/UUlBATPXEcDWry/hWYoI8JD4IV+Myu3v9T1VSehLoqP
+SGuaqYLdkZZEMGKfDY/ja7L3Ye3IbUMrpaGy1dyWhZJqbdmNTXw8usnOdQpg3kQHA5MNldaiA/EbZgeb
+4KxHRrF2uGZQOaQYqPy54sey9jSIUaZmVKgdCPd2DyrULg3Gn+5eb/qPz/cq0083z4/3d5NX8+m+vdGi
+yuQsRrqC2pwrYJUQmxKnHuYA303X2jsRWCdx1xX3JVmTDtquQYulXROfpiVNWqrLGrRYljXxO1VuIr2b
+KNdPpNJkbVZWUrXIeUXVprZgfV891Q9dooXavIMUHrX+/70SShI4IFXCwjyLsD7Bu390uxSVnYA26lZz
+lVT3e/pD8zfzvD95vhlP/nx57acX/iUJ3tdyrUX/4rD8XBlQwiUtrjIqF3AUV7z5SLDT9dRpI+Hck3Hu
+zwe8YuOLOrcGjhtnLegagsIUhcaMYlMb59j5Pwu5zaDPhue87xREtUB4mTw8FgqjClRkqULrcy2ueEos
+OhS+K/zv9MaMBmmzMvneqXdpYtklf9gGZsue4fu1A2PAFNrYOnUOT53DU+ew4XKRw+I7taZ2IesXGYVy
+6A7T0zh+K8+iohBcFLJYdzp0GQ62ujS1JLjjZAFH0o/qsxwq6+4OxSW2Bv1nrzWpFdUxyld5HjJW9y5b
+Ua4Z/lp6lzMRvw0AS6voIExFOIs+xTS+BDt0XioQysT9pk9DfBLT+IbanjqVNRNWR7WQzGbL+vXNMEQg
+p04AkXZyp9axBByA3QhttdAY1MbS7pLextwOWbL5HoftQ7pwpz7X95SiDu2XbLY9in1MX6JaO/S7M+3Z
+P7ty/MBdivhm93Gtiirzp37FqV/x0f2KNYVNzb+u9DoG6k5AVWPi42V8vzhl1yCudSKY8v05lC+1sLgY
+zCOOS3aHblE/ABGyive3QzbIWI0fcfUdk4fCKMEv0dix6XC/dZgTh62TYpt031ZFPjpvNR2PiqzUlJEq
+slFHb/LZZTTY/61zNND9J+v1p/8AUEsHCOtCiO4OBQAAJCsAAFBLAQIUABQACAgIAAAAIQDrQojuDgUA
+ACQrAAAIAAkAAAAAAAAAAAAAAAAAAAAuY29udGVudFVUBQABAAAAAFBLBQYAAAAAAQABAD8AAABNBQAA
+AAA=
 ------=_.q7.content-3d2e0690-ce48-3609-83e0-c704d49f1eaf--
 ------=_contents/org.eclipse.emf.ecp.makeithappen.model/.settings/org.eclipse.pde.prefs-2f183a4a-24ae-397a-a0e9-2d7de0b446de
 Content-Type: q7/binary
@@ -3333,6 +3284,15 @@
 ABQACAgIAAAAIQDxQazzcAAAAIYAAAAIAAkAAAAAAAAAAAAAAAAAAAAuY29udGVudFVUBQABAAAAAFBL
 BQYAAAAAAQABAD8AAACvAAAAAAA=
 ------=_contents/org.eclipse.emf.ecp.makeithappen.model/.settings/org.eclipse.ltk.core.refactoring.prefs-37c4d299-c6ce-3676-8c52-7cb943743a58--
+------=_contents/org.eclipse.emf.ecp.makeithappen.model.viewmodel/target/checkstyle-result.xml-ad782526-71c0-3810-be42-3b53dbf31fa9
+Content-Type: q7/binary
+Entry-Name: contents/org.eclipse.emf.ecp.makeithappen.model.viewmodel/target/checkstyle-result.xml
+
+UEsDBBQACAgIAAAAIQAAAAAAAAAAAAAAAAAIAAkALmNvbnRlbnRVVAUAAQAAAACzsa/IzVEoSy0qzszP
+s1Uy1DNQUkjNS85PycxLt1UKDXHTtVCyt+OySc5ITc4uLqnMSUUottCzUAJK6SPk7LgAUEsHCHcD+aBA
+AAAAUAAAAFBLAQIUABQACAgIAAAAIQB3A/mgQAAAAFAAAAAIAAkAAAAAAAAAAAAAAAAAAAAuY29udGVu
+dFVUBQABAAAAAFBLBQYAAAAAAQABAD8AAAB/AAAAAAA=
+------=_contents/org.eclipse.emf.ecp.makeithappen.model.viewmodel/target/checkstyle-result.xml-ad782526-71c0-3810-be42-3b53dbf31fa9--
 ------=_contents/org.eclipse.emf.ecp.makeithappen.model/checkstyle/esmCheckstyle.xml-9a251cfa-9e3d-34f0-8f5f-5064061e17a9
 Content-Type: q7/binary
 Entry-Name: contents/org.eclipse.emf.ecp.makeithappen.model/checkstyle/esmCheckstyle.xml
@@ -3416,12 +3376,12 @@
 Content-Type: q7/binary
 Entry-Name: contents/org.eclipse.emf.ecp.makeithappen.model.viewmodel/target/p2artifacts.xml
 
-UEsDBBQACAgIAAAAIQAAAAAAAAAAAAAAAAAIAAkALmNvbnRlbnRVVAUAAQAAAACVUktOwzAU3CNxB++8
-iuMGRbRSQsQGwQYQLQcw8Uuw8E92klJOj5PitAtoxc6eefNmNHZRfSqJBnBeGF3iBaEYga4NF7ot8evm
-Llni6ubyoqiY60TD6u4FrPGiM253LBuF01wc88iLLwgUDihCM45qybwXjQBXYuNbQd56zSVgJHgAXEug
-lsJ6IKCacLZEsQ8Q3TuzFjRRhoMkg4DtdMLHGa4JJRld5HSZ0YSustXeOphbZyyEABBT5ZE6kDukmQpU
-DErGybCfyT6gV3lGcfqniJutlobxf4kUG0AnrTO9feCz6JcKzu6ImU+vOd3kOY+fomeDqe9k/Xj7vL5/
-2szyIj2UvX/5NKYbv8d8GclvUEsHCLqvmpYPAQAAfQIAAFBLAQIUABQACAgIAAAAIQC6r5qWDwEAAH0C
+UEsDBBQACAgIAAAAIQAAAAAAAAAAAAAAAAAIAAkALmNvbnRlbnRVVAUAAQAAAACVUkFOwzAQvPcVvvkU
+x01AbaWkERcEF0C0PMCNN8HCsS07SSmvxwl1ChK04rba2ZmdHTsr3huJerBOaJXjOaEYgSo1F6rO8cv2
+NlriYj3LCmZbUbGyfQajnWi1PXxnDbxhLEw55MQHeASvZwhNbVRK5pyoBNgca1cLsusUl4CR4L5hawKl
+FMYBgabytSENewPRvjJjQJFGc5CkF7AfK/zDwYJQktD5kqbJVURXKR1X++XGagPeAART10fkhB2QYo1H
+gk8yDHp5JjvfTRerBMd/cbjeK6kZ/w+nYT2oqLa6M/d84vxy/yWJYPi8yvkUL6w4Zjzpf0UdbR5unjZ3
+j9tAz+JTzuObx8Gb/xZT7aFPUEsHCF3yn+EPAQAAcgIAAFBLAQIUABQACAgIAAAAIQBd8p/hDwEAAHIC
 AAAIAAkAAAAAAAAAAAAAAAAAAAAuY29udGVudFVUBQABAAAAAFBLBQYAAAAAAQABAD8AAABOAQAAAAA=
 
 ------=_contents/org.eclipse.emf.ecp.makeithappen.model.viewmodel/target/p2artifacts.xml-22361431-73aa-3a58-b199-5e8c3f9134e4--
@@ -3708,12 +3668,12 @@
 Content-Type: q7/binary
 Entry-Name: contents/org.eclipse.emf.ecp.makeithappen.model.viewmodel/META-INF/MANIFEST.MF
 
-UEsDBBQACAgIAAAAIQAAAAAAAAAAAAAAAAAIAAkALmNvbnRlbnRVVAUAAQAAAACdj7kOwkAQQ/t8xf5A
-RkCDFESDRBmEQKJfEgcG9spkw/H3hCNAQUVnyeNnT64dV2hiuoE07F2mhjRIZq0rDdL8Zb69Ue8stEWm
-vOwIheHQgGCrTgey+giOex0CHFlfwtCJcX6oPr2+2q03XPxHmTTsdgaxGzSN0qKnfn0wpgHVrTZcMSRZ
-oW5ZkD7vfhfe6a+iIP7EJYQulj9sV3rJ1PwZU/n9spuhluIPKGJyA1BLBwhVCVCMrQAAAEgBAABQSwEC
-FAAUAAgICAAAACEAVQlQjK0AAABIAQAACAAJAAAAAAAAAAAAAAAAAAAALmNvbnRlbnRVVAUAAQAAAABQ
-SwUGAAAAAAEAAQA/AAAA7AAAAAAA
+UEsDBBQACAgIAAAAIQAAAAAAAAAAAAAAAAAIAAkALmNvbnRlbnRVVAUAAQAAAACdj71Ow0AQhHs/xSkd
+El45aYIcpUGiNEKJlIbqYo/DJveX9dmBt8fhYqCgotqRZnb220o7btHFfAfp2LtSzanIHnvXGOTVzfz2
+FpPzrC1K5eVAqA2HDgTbjjqQ1SdwfNMhwJH1DQwNjMuXmra3H3bvDdf/a1l17A4GcQRaR+kxtf76YL6k
+gs69Ntwy5CfgGi+lekrHVHVtG7vUi/gj6phtcO5ZkKf832RXjBtRED9wA6F3y6t9ujEkiPXsNVHcj+OB
+irtZ9glQSwcIIMx078YAAABqAQAAUEsBAhQAFAAICAgAAAAhACDMdO/GAAAAagEAAAgACQAAAAAAAAAA
+AAAAAAAAAC5jb250ZW50VVQFAAEAAAAAUEsFBgAAAAABAAEAPwAAAAUBAAAAAA==
 ------=_contents/org.eclipse.emf.ecp.makeithappen.model.viewmodel/META-INF/MANIFEST.MF-04b6569f-3e21-3d30-9b3d-9add97b910ca--
 ------=_contents/org.eclipse.emf.ecp.makeithappen.model/bin/org/eclipse/emf/ecp/makeithappen/model/task/TaskPackage$Literals.class-102a2286-f19e-38ed-b3d3-669b786e9cad
 Content-Type: q7/binary
@@ -4094,6 +4054,54 @@
 CAgIAAAAIQAs/pGtIQEAAB8BAAAIAAkAAAAAAAAAAAAAAAAAAAAuY29udGVudFVUBQABAAAAAFBLBQYA
 AAAAAQABAD8AAABgAQAAAAA=
 ------=_contents/org.eclipse.emf.ecp.makeithappen.model.edit/icons/full/obj16/bullet_red.png-02a2415a-54ff-3731-9bf2-020a4b8b042b--
+------=_contents/org.eclipse.emf.ecp.makeithappen.model.viewmodel/target/org.eclipse.emf.ecp.makeithappen.model.viewmodel-1.17.0-SNAPSHOT.jar-6ce9c2e9-a119-30f5-9b3d-3b6b00bf58db
+Content-Type: q7/binary
+Entry-Name: contents/org.eclipse.emf.ecp.makeithappen.model.viewmodel/target/org.eclipse.emf.ecp.makeithappen.model.viewmodel-1.17.0-SNAPSHOT.jar
+
+UEsDBBQACAgIAAAAIQAAAAAAAAAAAAAAAAAIAAkALmNvbnRlbnRVVAUAAQAAAAC9Vnk41P0WH2MZRhJG
+JIUQwhghkiXLWDNxrVkzDIbBMAhRtrxvKGuLULJE3hRj37IVJvseSlkbZbm9lrHFpe7NjNS9/3R/8/ye
+Z2aecz7nfL/nnM/56OtS04ABAHoAYM7M9xyA7GHYevXgRiri2ggNCf0tMwiAnp7+BzMIuZmeCkJbA25o
+BNXTSImrdRvjhcBJt9eZhStinUNmerS5UZ03HTp1Dhk/7tHj4AfKMuRSMTegV0mhYz0zx+7BOWqoj5KO
+lD4pNbCQVvILcUmQEdQWiUwf6msCE8Yqhl/rXH9nmS7QNyOsnvmRDuJ/ePSe8wZ4glT51Da7mJVdUbgy
+JQ3OHauRaEXLE3ZnuIgzoTpLjntTNQkhkn5I11Gs/ThD0geqzYbrVfI1gZOKRnLFTCuviWFGE/FDpLjU
+t7UvOrmuWkzELLBDC7x5HR8NDoTGYReye5Hdhilh2qbY0/6zhKd1sPTpRqezNik2AWebR4mmNkJ+hbls
+ZnaMIP6OhAyW8jciV53HPIigRzX9rSlFV7iX65yzmcYa79Rc807lu2yAq7a5iR0vf9ph2dKr8kH5aNTB
+Oufc9RRLRNa8EeY4rWhEYgKbyXhMv3CG1vwx0b9T65dN/r4QPB2J0zA3jZu/Rcjp3vcgTEFuDTgyRsyi
+JsUIubs5Q5f4rvNc1ELg5OdS4glVATNvmN3XhKoQY8I3N6j0dUH0dbc5GMKpAIBmIACg/73c0+beFHVk
+3Hp90KhLru72KAxOYsfQARGqs7svzhtqan/vi29mg1GUZvvJzTCSMDeyHtodG0IZ2xiH8oRu/241s3JP
+gkECHxRuBt1dlUv2Yo7X7zoxg88dGvTW7o7OekUNqgy6gclCL326JMnzkEYjxyFUFmn1ABfYpvgCiV3n
+pGugZonzPCW9ZtIuTY8r1U2Uldbs7i6Qml8mLv5FxXEfnhykEWcmkFyPs1fUx+NVZ+Nqnodrjklm+Oz3
+5lSjkos/9YRZz+Zxk4ZTkfkFhQWxGrWSD45+1wPM8f5ZovsvVyklBCbJKzF8tniVUdfCNwAdxarcn242
+j5JVS5Ks4eNqRA3cHwz1DZFIH5c7nRGuHSHDDUkv5ZxCZkQeDg6EEt3bIPt94O+mX8ciNS2twle/kAa5
+nA0vOQ1LvBBX4nkX1TDusLHI2FDdxzHrbx8yFS7ZAbZBTjTzG708Okr78FWjgbpZF1wnLc/SzJ8EYD8r
+nf3e8sZ5arHMEcaT7Wtt/m0tkWtQVkjqO17pePW7wipeAVylITDqySaTT/ThSMcz0+0rdbKVk7rGfQ4m
+ua1SaMYx1NWIB83SkeJcoSMHeJmhtEz5Zo6F7QII4fMjQSEgVJf1EbT5VeUs1RxGs8E86upmtXMDflEK
+fDhgipw9yVqJ9cltgnpANuDEoq+BVJJxa5QhUVXCf3n6s5aIylUoe2o1drJDg9Woh8b4Oj5/H+r+zNDL
+inieIfAty7AnRehjhWaH026fa2Gfivij6HO7QpjyWa5Cx/dLSWlW1Gyn5UeHMySDoSbja+th4ImSyZEM
+Fz6xiC52ocM4IstkXWu6DFvFwRdG0XeWS6ryqpN63xIKTyWDDGNCyzZH3WgLh9Ciel0R+u2muXpdXpd7
+hlIyjKJvVjI8unHJjmfV9bP3ld6iSI8cTc31CucWHh9IoNMcIqC3aD3T3+tldcO6CFfdoq2qwolbNRGe
+fffuFDxF5asm3VyWd2kR7P4yGpTjfTncRzwZbrDk239i801Sc+vUtXrCuuHg5sLSqoTt29Z+4N+RoTmo
+s2VnityUPJz1V2SKF1SOftwAbM/nBaFy89Gt2XzP8W0+v83I7nni+WGekN5u9hgUFOvpjkV5eqFROEbh
+Vy16YjmFTEEdlrWPCSt+IrwscoxfY0iVVypswQP4AeQxaK+c0SWPsTXJACzG2xHtBvV1xcDPV7CGwA5M
+r0S0LFp7FeZppRYUxzBffF+TRHABHnsgoSJt8XZ2ePbNY+d8jRaI5hKiniGat6nouZ2sUzZPST17Dl6f
+vSi8XstvMepOK8OkTJ5opCr9Q6fEJkHlfAlLO21qez5fn3g6HtAb3VhMdRuV4yNZ83extQe+tByBW4rZ
+tYenvhE1Qpa5wVlnWxd6YsDF68KfPJiE7oeeFHc7R9jM/DShs3F/+evxwpZ8SFlbyTNTkVPc7lXFTL6q
+XG19UG4SPzfm/9HY3dMRirLDoLE4FBTl6rD1HfsLAKP/DWCP/6Cuti4otJeTLRaLcoN+JUXod3r8BY1a
+/KaIWHfX7X648Q+D8/W8B67MPXNatXbqVS+AHbSJOp5kgUcHCC70jZrrgF1I81W1zsmJHmGg0rmKuVml
+iwVqho2KXiZF/vfGBXSRHXjxBGgWYWhSJFDLQQH5yEVZpZxzYBAR/+q01MNCFkWnY1Ex7DHFolPOZamX
+BNRuCTdMDMSHGr87VA+LGenDuePFsngiV7jiD8eecE3pYEUkmug9AU3mQtpkSe6dyxINtQf57vofrb1c
+l7/fZRD4kQRTJHGmO+YTm06mUc+UukfdsqqQlaDVtALiTRqAwQ6RjvVEerocYvIgeAoW5AQGdd7lwnAt
+cH4J/iOs+8w/k8dJArr9z6L/Wpz33DKkMQfJmHfV65RGsKl62NF7aUtIw4HqDR8TOgvWx4K8kmHyc6tx
+lvw+qZaCUSrRVaYZprDl7rnYjtNlbIIbglfitPWqGtfyR/9cTusv978Gzz6iJBr9/Gv3Bgd34Yy3OncY
+SD6cu/sJ+Ruru8MhrgRdcB3sAKAjEMFCHOR7rJrZcQ1iwHGFt6rm9TmXvJWYhj9LSkp9SO/ZQZ4QydhJ
+ErOy3fFG8DW07fhEuO6FyBxrxuHZM9bgMlTiKKbSRaAJ/ELHykfWu9IHE7XBjij/7EHzUYjNAYivH62B
+HZe6+GBD1iwgTpt5XzC32TN0CIb4hW0NuH0p+Pg0wrWtI6d9ZSwqIIT65zL123MAMKMCAFCI1m23ndsk
+F0IQMoiMYCHA3iKWPPBeguk/gWtU5qh2yacdx70E1E7GnEAKObXjtpeg2nFTBv4or3ZOu50r+VqhPK0L
+cG+5RY6wHZ18afBQIETT/tdlRA62vWfIKRpMATZPS751flVrZoor6KLbg85/7sxP4bz5o/Pe9P5zQCMK
+wLOg30X3lGUlJwsLinvE/6YM/k3/u6eJfECRFInEMPw/mEpfl5ZuOx7T1oedBgDI/NpV/wJQSwcI/Bfz
+KWYJAADQDgAAUEsBAhQAFAAICAgAAAAhAPwX8ylmCQAA0A4AAAgACQAAAAAAAAAAAAAAAAAAAC5jb250
+ZW50VVQFAAEAAAAAUEsFBgAAAAABAAEAPwAAAKUJAAAAAA==
+------=_contents/org.eclipse.emf.ecp.makeithappen.model.viewmodel/target/org.eclipse.emf.ecp.makeithappen.model.viewmodel-1.17.0-SNAPSHOT.jar-6ce9c2e9-a119-30f5-9b3d-3b6b00bf58db--
 ------=_contents/org.eclipse.emf.ecp.makeithappen.model/bin/org/eclipse/emf/ecp/makeithappen/model/task/impl/UserGroupImpl.class-9bf06f46-e998-3875-ad7b-abdaafeb774b
 Content-Type: q7/binary
 Entry-Name: contents/org.eclipse.emf.ecp.makeithappen.model/bin/org/eclipse/emf/ecp/makeithappen/model/task/impl/UserGroupImpl.class
@@ -4277,6 +4285,48 @@
 TJ3KNXR1X3j4P1BLBwgD2xCt/wgAAFQvAABQSwECFAAUAAgICAAAACEAA9sQrf8IAABULwAACAAJAAAA
 AAAAAAAAAAAAAAAALmNvbnRlbnRVVAUAAQAAAABQSwUGAAAAAAEAAQA/AAAAPgkAAAAA
 ------=_contents/org.eclipse.emf.ecp.makeithappen.model/.settings/org.eclipse.jdt.ui.prefs-22290238-0ce5-3718-bed5-a029337c9ed1--
+------=_contents/org.eclipse.emf.ecp.makeithappen.model.viewmodel/target/checkstyle-checker.xml-b4f74eb4-7daf-336a-bd39-2192ab6c033e
+Content-Type: q7/binary
+Entry-Name: contents/org.eclipse.emf.ecp.makeithappen.model.viewmodel/target/checkstyle-checker.xml
+
+UEsDBBQACAgIAAAAIQAAAAAAAAAAAAAAAAAIAAkALmNvbnRlbnRVVAUAAQAAAADVWutz27gR/+z8Fagm
+H2yfRcWXdqbjyaM2RZ3VSpRGj/Nlyl4GIlciLiDAgqBldfLHd0FST4t6pEkaxTORBC5+WCz2Db55/xRx
+8ggqYVK8rVxbryoEhC8DJiZvK8NBo/rXyvt3L978qd6xBx+6DolkkHIg3eFdq2mTSrVW66ZxPCO2olNe
+q9UHdWKH4H8ithRjNkkV1YhMrq3XtZrjVkgl1Dq+qdWm06kVm5m+mWj5MqoFOkhq/uq0j9cfX1s4XHn3
+AlmoVl8Q/DcIWULWyMiYIUtTmpCpYlqDIKMZ0SEQ8DmLE6j6CYl5OmFiYx4ETEv1olp9t4TPuE/0jEN1
+bQs3xOm3lw8z2jokvmJx/lhIATlUISNBI3hbyaaAwi0Q8iZWMgalZ8WzBFDyTM8q5JHyFAemVAmUfKWW
+Ua/hDBTAA+VzqOdgmo4eWKDDBdifc5hNoL/TRxpIvw06lEGBtYU1H38uoGLqf6ITWADWcsQd8IMZTi8D
+p5zL6VB8EnIqBnSSLNbRKj1mkV+pYnTEyxf64l30UTUVJMYqbBlFIHSDcV0qezkez8mkiqheLHn+twkI
+QA2C4OXF5/NaDa0rIHJM/DTRMkJ9DODlxYKjTVixF5W4nUGBPAKj4aXYEWgaUE0LbLQ4i2pOk2RqaSl5
+YhXWYvkLJTdmaZZfLIxiMVIhD7meJgSNyGk3yJIds6hFXEk2SA1lREVKeUbyv3GV7a+N6OY057zNF0qK
+o0NmRuDTNIFsRYJeY8kmOgjk21pwB8LoUWC4XJFeYYcrevJttAQP7875pemS/rDbc/p9Yt8O7Hvi/GY7
+3UGz4x6rH4jnuPVj0aJcoBtY1qXz5EPm46zLb6FMNtV+uFjjYc0Dfj/JN39xOz2HDF3XsW0U2m3vA2m2
+u53e4AuFfzxgmfxZFEulv7LwmxMhFZBUCPB9s7CakXwhUgSh5Lufgd1pd1vOb/hZd75Q6lshvoa87tkk
+xJwmijk8YcTGr+hS5t5jRRLPhXZ2jNTOzo4RW88Z9h3cdOu235/v9jnAboltw/j+EjtbFdnZN1I0+96x
+/9EffGg5VqfR8G7I+T+9qff5Xz8dHYBXkdxDgDI5bYC8vM6pzw7IdPpGxNvzOcxSE02FdvHXdoqW9Clv
+MEH5PGHaQ7ufrA3RCNSu5ya7LH/ezVOxXQQKP/WuNfoaE3N/P68mFS1/evsoWYBQqpl5v+1ETc5hQvku
+kh4EqQjwHHYRDQWmI0FOkZQcABPQAjHBRL40q90sG1jmzOd4z+1XgLaS8dxo/QRtVYGF9qydPO/pP0MU
+oRk4JFXOj7pgec9ZpkZrthM5UaxnaCFNbVI0qbp0R3HyAwog2+TpMO3Kh5BpSLAmgtvx0pl+Cd+bhaj8
+BGJZ091hhXJVd+yrOn42XfuqZQaGLiZEH9tNd9gvvndbw/4PIIw7GJvdncYpduLcWB4UjU+EZbQTEKdj
+JyZ4+Ah1Ymx/PeP+P3GtJEbTE2G7LQM2ZqA6KiiLbovsYE67IxlxIdEQ3HGJmfWJSCAL3hnHJ8JwC8ba
+ThWfnQi/LqBGKDSMkqyxh8XWSW0o0/Sm4JjtYgETMNP7ofyk9N3UH5CVvNsT2n+nuKF7moT2WsNzleae
+BQGIBgN+Kr5uXgnlNSfLrkZKaiYhQN1i1T4R5UJq0wnzi7LgNATQZrglMelPmfbDOoxpykv21mdRzNl4
+diclByqcp/Ue0R7yHuhUlZDWwUgViyXnSWOqbSBPQ3hZE8I2jaRSe4ChZhzhM6qst6FSH1PcMiXD7GaM
+frGZZDdOW4l+ZQkbZaB7oq9SdGZgdnRbsh0sCtpT8VcDGciik3UiHA9j5M3hfPspPDOpZZ+xdH8RfVow
+8pdDWLBnPpeR6TEdiX59ELzbpTo8Evnnn18dej3q2qv93I12KiibS1HWVzPPMz1n/9ndvqvj2VO1Iwbk
+qWxzXId4Rz9rbYdHBKHs5qgUlQXLy46cfnHJlE88fKFBqOS03NZZwY7xWKbRuOx9/IEHgRYhJlYGYazi
+iiwHHaWkWh3opRhTI1gwukY8HyzvvOQWGyybr0tOxsV5XhGfcn5FMHwrbT5kjP+DHuKHBqrqcioOMg75
+aBqvQudpTlmcysIjKjkkLfQLJYnSE8Y9n+mmwCzQMLlDoRrIvBFlOinpNd4KKbLMY08PdVXnXh9kVLkS
+2FiXlvvQNdSD3Jwork3w1Cgr2fRRjmhF7f0ldanK7Pdb5ReADcbXW9X7Q4oYy33XigZ1QEd2iJ7FL7/l
+2ROuvnKwKmfXhakpYm4RJ+iMDfM/OMMDRUXCV2zsGUUPJvAU3wMNltI/iLvNK0Anf9yXqfKBUPPmiw5N
+1lRySxbmS86n/+7VvMufXnrid+JdElvGM2XK3HPinfvexcV74gX533l1/g0Hz63Li2LO+TkZgB8Klvgh
+kKFg2YtumoIm7RQEDgrPuvhsZsynkFvOSbZMQjC3APUIgWflL50htxNM/LKNmNfLqG8sjIqZudFE+0Tp
+oyucA1EFOBgg2SNl3BwZSQVuL5uKtFFi3tUxPwoxkW46QkdIWszHpB7I47VnvZqjTUPmh4sVGSQ4E1kK
+GObHbJSa0/SuMs5wdLki1XMA896dd4MSNa/eefOT8yypJl4ti19eDWJefbx+5Vmhjngx0bpcHoDI15Iq
+8W6y8bKDNC/kLWqT9XC4qZ7Lb/8FUEsHCIlExGbeBwAAjCgAAFBLAQIUABQACAgIAAAAIQCJRMRm3gcA
+AIwoAAAIAAkAAAAAAAAAAAAAAAAAAAAuY29udGVudFVUBQABAAAAAFBLBQYAAAAAAQABAD8AAAAdCAAA
+AAA=
+------=_contents/org.eclipse.emf.ecp.makeithappen.model.viewmodel/target/checkstyle-checker.xml-b4f74eb4-7daf-336a-bd39-2192ab6c033e--
 ------=_contents/org.eclipse.emf.ecp.makeithappen.model.edit/icons/full/obj16/bullet_green.png-92394088-77aa-3550-ac7f-ace38f9c9e20
 Content-Type: q7/binary
 Entry-Name: contents/org.eclipse.emf.ecp.makeithappen.model.edit/icons/full/obj16/bullet_green.png
@@ -4587,11 +4637,11 @@
 Content-Type: q7/binary
 Entry-Name: contents/org.eclipse.emf.ecp.makeithappen.model.viewmodel/target/maven-archiver/pom.properties
 
-UEsDBBQACAgIAAAAIQAAAAAAAAAAAAAAAAAIAAkALmNvbnRlbnRVVAUAAQAAAABtycsKgzAQQNF9IP8w
-4LqDkT6o4EJKabvoA/QHUjPGUE1CjJb+faXr7g73JieyFGQkBc8PXOVMlrOk7iYoJw1ZCkLk622e7eFw
-rOoliA1nM4XROFsI3GG6qm7lozrfa850cJO/qMIFjdT0xo+ENLSLPWcyRNPKJv7/OMgXmdhJ78ni4BT1
-OBt6/8TZF1BLBwi4T/hJjAAAAKcAAABQSwECFAAUAAgICAAAACEAuE/4SYwAAACnAAAACAAJAAAAAAAA
-AAAAAAAAAAAALmNvbnRlbnRVVAUAAQAAAABQSwUGAAAAAAEAAQA/AAAAywAAAAAA
+UEsDBBQACAgIAAAAIQAAAAAAAAAAAAAAAAAIAAkALmNvbnRlbnRVVAUAAQAAAABtyUsKwjAQANB9ThHo
+2iGpQqXQhRRRF34gvcDYTGuw+ZDGiLe3uHb34BUHchQxkeb3Dz9jJscKhWlh5OWGS1mLql4L3u47Xgq5
+ZZnibLxrJMgKxEpddjd1vHZsjP4VTrrxcQTqJxNmArLD4sAwJjNgn/43WHySSQ8MgRxYr2mCbOj9E/sC
+UEsHCLKTosmFAAAAogAAAFBLAQIUABQACAgIAAAAIQCyk6LJhQAAAKIAAAAIAAkAAAAAAAAAAAAAAAAA
+AAAuY29udGVudFVUBQABAAAAAFBLBQYAAAAAAQABAD8AAADEAAAAAAA=
 ------=_contents/org.eclipse.emf.ecp.makeithappen.model.viewmodel/target/maven-archiver/pom.properties-8870a1e7-efe4-3b86-86e8-8ecda832d172--
 ------=_contents/org.eclipse.emf.ecp.makeithappen.model/target/maven-archiver/pom.properties-2aaec20d-74bb-32ed-904b-de3586064e10
 Content-Type: q7/binary
diff --git a/tests/ECPQ7Tests/EPPTests/update-site/project/TableSubTypeSupport.test b/tests/ECPQ7Tests/EPPTests/update-site/project/TableSubTypeSupport.test
new file mode 100644
index 0000000..22cd7f3
--- /dev/null
+++ b/tests/ECPQ7Tests/EPPTests/update-site/project/TableSubTypeSupport.test
@@ -0,0 +1,243 @@
+--- RCPTT testcase ---
+Format-Version: 1.0
+Contexts: _ZOi4wZ77EeOm87IlbkWrfQ,_ihvnUC3mEeSwhO5Nwx0hPg
+Element-Name: TableSubTypeSupport
+Element-Type: testcase
+Element-Version: 3.0
+External-Reference: 
+Id: _uDtLYDnOEeiT54i24ck9dw
+Runtime-Version: 2.2.0.201706152316
+Save-Time: 4/6/18 9:30 PM
+Testcase-Type: ecl
+
+------=_.content-0a7243a0-75d3-3d5f-9791-539de0e5b7ac
+Content-Type: text/ecl
+Entry-Name: .content
+
+get-view "Project Explorer" | get-tree | get-menu -path "New/Project..." | click
+get-window "New Project" | get-tree | select "EMF Forms/View Model Project" | double-click
+with [get-window "New View Model Project"] {
+    get-editbox -after [get-label "Project name:"] | set-text TableSubTypes
+    get-button "Next >" | click
+    get-button "Browse Package Registry" | click
+    with [get-window "Package Selection"] {
+        get-table | select "http:\\/\\/www.eclipse.org\\/emf\\/2002\\/Ecore"
+        get-button OK | click
+    }
+    get-button "Next >" | click
+    get-button "Fill view model with default layout" | uncheck
+    get-tree | select "EClass -> EClassifier [org.eclipse.emf.ecore.EClass]"
+    get-button Finish | click
+}
+get-editor "EClass.view" | close
+get-view "Project Explorer" | get-tree | select "TableSubTypes/viewmodels/EClass.view" 
+    | select "TableSubTypes/viewmodels/EClass.view" | get-menu -path "Open With/View Model Editor" | click
+with [get-editor "EClass.view"] {
+    with [get-tree] {
+        select EClass | get-menu -path TableControl | click
+        select "EClass/TableControl"
+    }
+    get-button "Create and link new Domain Model Reference" | click
+}
+with [get-window "Configure TableDomainModelReference"] {
+    get-button "Create and link new Domain Model Reference" | click
+    with [get-window "New Reference Element"] {
+        get-tree | select "model/FeaturePathDomainModelReference"
+        get-button "Next >" | click
+        get-button "Link Domain Model EFeature" | click
+        with [get-window "Select a EStructuralFeature"] {
+            get-tree | select "eStructuralFeatures : EStructuralFeature"
+            get-button OK | click
+        }
+        get-button Finish | click
+    }
+    get-button Finish | click
+}
+get-editor "EClass.view" | get-tree | select "EClass/TableControl" | get-menu -path "Generate Columns for Subclass" 
+    | click
+with [get-window "Select EClass"] {
+    get-table | select "EAttribute -> EStructuralFeature \\[org.eclipse.emf.ecore.EAttribute\\]"
+    get-button OK | click
+}
+get-editor "EClass.view" | get-table | get-property itemCount | equals 15 | verify-true
+get-editor "EClass.view" | get-tree | select "EClass/TableControl" | get-menu -path "Generate Columns for Subclass" 
+    | click
+with [get-window "Select EClass"] {
+    get-table | select "EReference -> EStructuralFeature \\[org.eclipse.emf.ecore.EReference\\]"
+    get-button OK | click
+}
+get-editor "EClass.view" | get-table | get-property itemCount | equals 18 | verify-true
+get-view "EMF Forms Preview" | get-button "Clear Sample Data" | click
+get-view "EMF Forms Preview" | get-button "Refresh Preview View" | click
+get-view "EMF Forms Preview" | get-table | get-property "getColumnCount()" | equals 19 | verify-true
+get-view "EMF Forms Preview" | get-button "Add an instance of EStructuralFeature" | click
+with [get-window "New Reference Element" | get-tree] {
+    get-property itemCount | equals 2 | verify-true
+    get-property "getItems().TreeItem[0].getText()" | equals EAttribute | verify-true
+    get-property "getItems().TreeItem[1].getText()" | equals EReference | verify-true
+}
+with [get-window "New Reference Element"] {
+    get-tree | select EAttribute
+    get-button Finish | click
+}
+with [get-view "EMF Forms Preview"] {
+    with [get-table] {
+        select true -column Ordered | activate-cell-edit -column 1 -type MouseClickSelection
+        with [get-editbox] {
+            set-text foo
+            key-type "TRAVERSE_TAB_NEXT"
+        }
+        apply-cell-edit -deactivate
+        select foo -column Name | activate-cell-edit -column 2 -type Traversal
+        get-editbox | key-type "TRAVERSE_TAB_NEXT"
+        apply-cell-edit -deactivate
+        select foo -column Name | activate-cell-edit -column 3 -type Traversal
+        get-editbox | key-type "TRAVERSE_TAB_NEXT"
+        apply-cell-edit -deactivate
+        select foo -column Name | activate-cell-edit -column 4 -type Traversal
+        get-editbox | key-type "TRAVERSE_TAB_NEXT"
+        apply-cell-edit -deactivate
+        select foo -column Name | activate-cell-edit -column 5 -type Traversal
+        get-editbox | key-type "TRAVERSE_TAB_NEXT"
+        apply-cell-edit -deactivate
+        select foo -column Name | activate-cell-edit -column 6 -type Traversal
+        get-editbox | key-type "TRAVERSE_TAB_NEXT"
+        apply-cell-edit -deactivate
+        select foo -column Name | activate-cell-edit -column 7 -type Traversal
+        get-editbox | key-type "TRAVERSE_TAB_NEXT"
+        apply-cell-edit -deactivate
+        select foo -column Name | activate-cell-edit -column 8 -type Traversal
+        get-editbox | key-type "TRAVERSE_TAB_NEXT"
+        apply-cell-edit -deactivate
+        select foo -column Name | activate-cell-edit -column 9 -type Traversal
+        get-editbox | key-type "TRAVERSE_TAB_NEXT"
+        apply-cell-edit -deactivate
+        select foo -column Name | activate-cell-edit -column 10 -type Traversal
+        get-editbox | key-type "TRAVERSE_TAB_NEXT"
+        apply-cell-edit -deactivate
+        select foo -column Name | activate-cell-edit -column 11 -type Traversal
+        get-editbox | key-type "TRAVERSE_TAB_NEXT"
+        apply-cell-edit -deactivate
+        select foo -column Name | activate-cell-edit -column 12 -type Traversal
+        get-editbox | key-type "TRAVERSE_TAB_NEXT"
+        apply-cell-edit -deactivate
+        select foo -column Name | activate-cell-edit -column 13 -type Traversal
+        get-editbox | key-type "TRAVERSE_TAB_NEXT"
+        apply-cell-edit -deactivate
+        select foo -column Name | activate-cell-edit -column 14 -type Traversal
+        get-editbox | key-type "TRAVERSE_TAB_NEXT"
+        apply-cell-edit -deactivate
+        select foo -column Name | activate-cell-edit -column 15 -type Traversal
+        with [get-editbox] {
+            key-type "TRAVERSE_TAB_NEXT"
+            key-type Enter
+        }
+        apply-cell-edit -deactivate
+    }
+    get-button "Add an instance of EStructuralFeature" | click
+}
+with [get-window "New Reference Element"] {
+    get-tree | select EReference
+    get-button Finish | click
+}
+with [get-view "EMF Forms Preview" | get-table] {
+    select [get-item -path true -column Ordered -index 1] | activate-cell-edit -column 1 -type MouseClickSelection
+    with [get-editbox] {
+        set-text bar
+        key-type "TRAVERSE_TAB_NEXT"
+    }
+    apply-cell-edit -deactivate
+    select bar -column Name | activate-cell-edit -column 2 -type Traversal
+    get-editbox | key-type "TRAVERSE_TAB_NEXT"
+    apply-cell-edit -deactivate
+    select bar -column Name | activate-cell-edit -column 3 -type Traversal
+    get-editbox | key-type "TRAVERSE_TAB_NEXT"
+    apply-cell-edit -deactivate
+    select bar -column Name | activate-cell-edit -column 4 -type Traversal
+    get-editbox | key-type "TRAVERSE_TAB_NEXT"
+    apply-cell-edit -deactivate
+    select bar -column Name | activate-cell-edit -column 5 -type Traversal
+    get-editbox | key-type "TRAVERSE_TAB_NEXT"
+    apply-cell-edit -deactivate
+    select bar -column Name | activate-cell-edit -column 6 -type Traversal
+    get-editbox | key-type "TRAVERSE_TAB_NEXT"
+    apply-cell-edit -deactivate
+    select bar -column Name | activate-cell-edit -column 7 -type Traversal
+    get-editbox | key-type "TRAVERSE_TAB_NEXT"
+    apply-cell-edit -deactivate
+    select bar -column Name | activate-cell-edit -column 8 -type Traversal
+    get-editbox | key-type "TRAVERSE_TAB_NEXT"
+    apply-cell-edit -deactivate
+    select bar -column Name | activate-cell-edit -column 9 -type Traversal
+    get-editbox | key-type "TRAVERSE_TAB_NEXT"
+    apply-cell-edit -deactivate
+    select bar -column Name | activate-cell-edit -column 10 -type Traversal
+    get-editbox | key-type "TRAVERSE_TAB_NEXT"
+    apply-cell-edit -deactivate
+    select bar -column Name | activate-cell-edit -column 11 -type Traversal
+    get-editbox | key-type "TRAVERSE_TAB_NEXT"
+    apply-cell-edit -deactivate
+    select bar -column Name | activate-cell-edit -column 12 -type Traversal
+    get-editbox | key-type "TRAVERSE_TAB_NEXT"
+    apply-cell-edit -deactivate
+    select bar -column Name | activate-cell-edit -column 13 -type Traversal
+    get-editbox | key-type "TRAVERSE_TAB_NEXT"
+    apply-cell-edit -deactivate
+    select bar -column Name | activate-cell-edit -column 14 -type Traversal
+    get-editbox | key-type "TRAVERSE_TAB_NEXT"
+    apply-cell-edit -deactivate
+    select bar -column Name | activate-cell-edit -column 16 -type Traversal
+    get-editbox | key-type "TRAVERSE_TAB_NEXT"
+    apply-cell-edit -deactivate
+    select bar -column Name | activate-cell-edit -column 17 -type Traversal
+    get-editbox | key-type "TRAVERSE_TAB_NEXT"
+    apply-cell-edit -deactivate
+    select bar -column Name | activate-cell-edit -column 18 -type Traversal
+    with [get-editbox] {
+        key-type "TRAVERSE_TAB_NEXT"
+        key-type Enter
+    }
+    apply-cell-edit -deactivate
+}
+with [get-view "EMF Forms Preview" | get-table] {
+    get-item -path foo -column Name | get-property "values['Containment']" | equals "" | verify-true
+    get-item -path foo -column Name | get-property "values['Validation Status']" | equals "" | verify-true
+    get-item -path foo -column Name | get-property "values['Lower Bound']" | equals 0 | verify-true
+    get-item -path foo -column Name | get-property "values['Default Value Literal']" | equals "" | verify-true
+    get-item -path foo -column Name | get-property "values['Ordered']" | equals true | verify-true
+    get-item -path foo -column Name | get-property "values['Required']" | equals false | verify-true
+    get-item -path foo -column Name | get-property "values['Volatile']" | equals false | verify-true
+    get-item -path foo -column Name | get-property "values['Changeable']" | equals true | verify-true
+    get-item -path foo -column Name | get-property "values['Name']" | equals foo | verify-true
+    get-item -path foo -column Name | get-property "values['Unsettable']" | equals false | verify-true
+    get-item -path foo -column Name | get-property "values['Container']" | equals "" | verify-true
+    get-item -path foo -column Name | get-property "values['Upper Bound']" | equals 1 | verify-true
+    get-item -path foo -column Name | get-property "values['Transient']" | equals false | verify-true
+    get-item -path foo -column Name | get-property "values['Derived']" | equals false | verify-true
+    get-item -path foo -column Name | get-property "values['Unique']" | equals true | verify-true
+    get-item -path foo -column Name | get-property "values['Default Value']" | equals "" | verify-true
+    get-item -path foo -column Name | get-property "values['ID']" | equals false | verify-true
+    get-item -path foo -column Name | get-property "values['Many']" | equals false | verify-true
+    get-item -path foo -column Name | get-property "values['Resolve Proxies']" | equals "" | verify-true
+    get-item -path bar -column Name | get-property "values['Containment']" | equals false | verify-true
+    get-item -path bar -column Name | get-property "values['Validation Status']" | equals "" | verify-true
+    get-item -path bar -column Name | get-property "values['Lower Bound']" | equals 0 | verify-true
+    get-item -path bar -column Name | get-property "values['Default Value Literal']" | equals "" | verify-true
+    get-item -path bar -column Name | get-property "values['Ordered']" | equals true | verify-true
+    get-item -path bar -column Name | get-property "values['Required']" | equals false | verify-true
+    get-item -path bar -column Name | get-property "values['Volatile']" | equals false | verify-true
+    get-item -path bar -column Name | get-property "values['Changeable']" | equals true | verify-true
+    get-item -path bar -column Name | get-property "values['Name']" | equals bar | verify-true
+    get-item -path bar -column Name | get-property "values['Unsettable']" | equals false | verify-true
+    get-item -path bar -column Name | get-property "values['Container']" | equals false | verify-true
+    get-item -path bar -column Name | get-property "values['Upper Bound']" | equals 1 | verify-true
+    get-item -path bar -column Name | get-property "values['Transient']" | equals false | verify-true
+    get-item -path bar -column Name | get-property "values['Derived']" | equals false | verify-true
+    get-item -path bar -column Name | get-property "values['Unique']" | equals true | verify-true
+    get-item -path bar -column Name | get-property "values['Default Value']" | equals "" | verify-true
+    get-item -path bar -column Name | get-property "values['ID']" | equals "" | verify-true
+    get-item -path bar -column Name | get-property "values['Many']" | equals false | verify-true
+    get-item -path bar -column Name | get-property "values['Resolve Proxies']" | equals true | verify-true
+}
+
+------=_.content-0a7243a0-75d3-3d5f-9791-539de0e5b7ac--
diff --git a/tests/ECPQ7Tests/EPPTests/update-site/project/TemplateAndSelector.test b/tests/ECPQ7Tests/EPPTests/update-site/project/TemplateAndSelector.test
new file mode 100644
index 0000000..37d8d95
--- /dev/null
+++ b/tests/ECPQ7Tests/EPPTests/update-site/project/TemplateAndSelector.test
@@ -0,0 +1,69 @@
+--- RCPTT testcase ---
+Format-Version: 1.0
+Contexts: _D4Pj4C3lEeSwhO5Nwx0hPg,_Iu0EsS36EeSYRYqCbC6LMQ,_2bS8sTNtEeSiS7b7ptZeHw,_DD4ysDmlEeiV5MMKft7xVA
+Element-Name: TemplateAndSelector
+Element-Type: testcase
+Element-Version: 3.0
+External-Reference: 
+Id: _uCoUgDmmEeiV5MMKft7xVA
+Runtime-Version: 2.3.0.201804052311
+Save-Time: 4/6/18 4:30 PM
+Testcase-Type: ecl
+
+------=_.content-0a7243a0-75d3-3d5f-9791-539de0e5b7ac
+Content-Type: text/ecl
+Entry-Name: .content
+
+with [get-editor "new_file.template"] {
+    get-tree | select "View Template" | get-menu -path Style | click
+    get-button "Create and link new Selector" | click
+}
+with [get-window "New Reference Element"] {
+    get-tree | select "bool/AndSelector"
+    get-button Finish | click
+}
+with [get-window AndSelector] {
+    get-button "Create and link new Style Selector" | click
+    with [get-window "New Reference Element"] {
+        get-tree | select "viewModelElement/ViewModelElementSelector"
+        get-button Finish | click
+    }
+    get-window ViewModelElementSelector | get-button OK | click
+    get-button "Create and link new Style Selector" | click
+    with [get-window "New Reference Element"] {
+        get-tree | select "annotation/AnnotationSelector"
+        get-button Finish | click
+    }
+    get-window AnnotationSelector | get-button OK | click
+    get-button OK | click
+}
+with [get-editor "new_file.template" | get-tree] {
+    get-item -path "View Template/Style/And Selector" | get-property caption | equals "And Selector" | verify-true
+    get-item -path "View Template/Style/And Selector" | get-property childCount | equals 2 | verify-true
+    get-item -path "View Template/Style/And Selector/View Model Element Selector false" | get-property caption 
+        | equals "View Model Element Selector false" | verify-true
+    get-item -path "View Template/Style/And Selector/Annotation Selector \\[null, null\\]" | get-property caption 
+        | equals "Annotation Selector [null, null]" | verify-true
+}
+with [get-editor "new_file.template" | get-tree] {
+    select "View Template" | get-menu -path Style | click
+    select [get-item -path "View Template" | get-item -path Style -index 1] | get-menu -path "And Selector" | click
+    select [get-item -path "View Template" | get-item -path Style -index 1 | get-item -path "And Selector"] | get-menu 
+        -path "View Model Element Selector" | click
+    select [get-item -path "View Template" | get-item -path Style -index 1 | get-item -path "And Selector"] | get-menu 
+        -path "Annotation Selector" | click
+}
+with [get-editor "new_file.template" | get-tree] {
+    get-item -path "View Template" | get-item -path Style -index 1 | get-item -path "And Selector" 
+        | get-property caption | equals "And Selector" | verify-true
+    get-item -path "View Template" | get-item -path Style -index 1 | get-item -path "And Selector" 
+        | get-property childCount | equals 2 | verify-true
+    get-item -path "View Template" | get-item -path Style -index 1 | get-item 
+        -path "And Selector/View Model Element Selector false" | get-property caption 
+        | equals "View Model Element Selector false" | verify-true
+    get-item -path "View Template" | get-item -path Style -index 1 | get-item 
+        -path "And Selector/Annotation Selector \\[null, null\\]" | get-property caption 
+        | equals "Annotation Selector [null, null]" | verify-true
+}
+get-eclipse-window | key-type "M1+s"
+------=_.content-0a7243a0-75d3-3d5f-9791-539de0e5b7ac--
diff --git a/tests/ECPQ7Tests/EPPTests/update-site/project/TemplateAnnotationSelector.test b/tests/ECPQ7Tests/EPPTests/update-site/project/TemplateAnnotationSelector.test
new file mode 100644
index 0000000..ed7e959
--- /dev/null
+++ b/tests/ECPQ7Tests/EPPTests/update-site/project/TemplateAnnotationSelector.test
@@ -0,0 +1,63 @@
+--- RCPTT testcase ---
+Format-Version: 1.0
+Contexts: _D4Pj4C3lEeSwhO5Nwx0hPg,_Iu0EsS36EeSYRYqCbC6LMQ,_2bS8sTNtEeSiS7b7ptZeHw,_DD4ysDmlEeiV5MMKft7xVA
+Element-Name: TemplateAnnotationSelector
+Element-Type: testcase
+Element-Version: 3.0
+External-Reference: 
+Id: _PcpI0DmJEeiUsKIXZxWPjg
+Runtime-Version: 2.3.0.201804052311
+Save-Time: 4/6/18 4:22 PM
+Testcase-Type: ecl
+
+------=_.content-0a7243a0-75d3-3d5f-9791-539de0e5b7ac
+Content-Type: text/ecl
+Entry-Name: .content
+
+with [get-editor "new_file.template"] {
+    get-tree | select "View Template" | get-menu -path Style | click
+    get-button "Create and link new Selector" | click
+}
+with [get-window "New Reference Element"] {
+    get-tree | select "annotation/AnnotationSelector"
+    get-button Finish | click
+}
+with [get-window AnnotationSelector] {
+    with [get-editbox -after [get-label "Key*"]] {
+        set-text Foo
+        key-type "TRAVERSE_TAB_NEXT"
+    }
+    get-editbox -after [get-label Value] | set-text Bar
+    get-button OK | click
+}
+with [get-editor "new_file.template"] {
+    get-link "<a>Annotation Selector [\"Foo\", \"Bar\"]</a>" | get-property caption 
+        | equals "<a>Annotation Selector [\"Foo\", \"Bar\"]</a>" | verify-true
+    with [get-tree] {
+        get-item -path "View Template/Style/Annotation Selector \\[\"Foo\", \"Bar\"\\]" | get-property caption 
+            | equals "Annotation Selector [\"Foo\", \"Bar\"]" | verify-true
+        get-item -path "View Template/Style/Annotation Selector \\[\"Foo\", \"Bar\"\\]" | get-property index | equals 0 
+            | verify-true
+        get-item -path "View Template/Style/Annotation Selector \\[\"Foo\", \"Bar\"\\]" | get-property childCount 
+            | equals 0 | verify-true
+    }
+}
+with [get-editor "new_file.template"] {
+    with [get-tree] {
+        select "View Template" | get-menu -path Style | click
+        select [get-item -path "View Template" | get-item -path Style -index 1] | get-menu -path "Annotation Selector" 
+            | click
+    }
+    get-editbox -after [get-label "Key*"] | set-text Bar
+    get-editbox -after [get-label Value] | set-text Foo
+    get-editbox -after [get-label "Key*"] | click-text 4
+}
+with [get-editor "new_file.template" | get-tree] {
+    get-item -path "View Template" | get-item -path Style -index 1 | get-item 
+        -path "Annotation Selector \\[\"Bar\", \"Foo\"\\]" | get-property caption 
+        | equals "Annotation Selector [\"Bar\", \"Foo\"]" | verify-true
+    get-item -path "View Template" | get-item -path Style -index 1 | get-item 
+        -path "Annotation Selector \\[\"Bar\", \"Foo\"\\]" | get-property childCount | equals 0 | verify-true
+}
+get-eclipse-window | key-type "M1+s"
+------=_.content-0a7243a0-75d3-3d5f-9791-539de0e5b7ac--
diff --git a/tests/ECPQ7Tests/EPPTests/update-site/project/TemplateHierarchySelector.test b/tests/ECPQ7Tests/EPPTests/update-site/project/TemplateHierarchySelector.test
new file mode 100644
index 0000000..950f0d7
--- /dev/null
+++ b/tests/ECPQ7Tests/EPPTests/update-site/project/TemplateHierarchySelector.test
@@ -0,0 +1,64 @@
+--- RCPTT testcase ---
+Format-Version: 1.0
+Contexts: _D4Pj4C3lEeSwhO5Nwx0hPg,_Iu0EsS36EeSYRYqCbC6LMQ,_2bS8sTNtEeSiS7b7ptZeHw,_DD4ysDmlEeiV5MMKft7xVA
+Element-Name: TemplateHierarchySelector
+Element-Type: testcase
+Element-Version: 3.0
+External-Reference: 
+Id: _JU4aMDmmEeiV5MMKft7xVA
+Runtime-Version: 2.3.0.201804052311
+Save-Time: 4/6/18 4:26 PM
+Testcase-Type: ecl
+
+------=_.content-0a7243a0-75d3-3d5f-9791-539de0e5b7ac
+Content-Type: text/ecl
+Entry-Name: .content
+
+with [get-editor "new_file.template"] {
+    get-tree | select "View Template" | get-menu -path Style | click
+    get-button "Create and link new Selector" | click
+}
+with [get-window "New Reference Element"] {
+    get-tree | select "hierarchy/HierarchySelector"
+    get-button Finish | click
+}
+with [get-window HierarchySelector] {
+    get-button "Create and link new Selector" | click
+    with [get-window "New Reference Element"] {
+        get-tree | select "viewModelElement/ViewModelElementSelector"
+        get-button Finish | click
+    }
+    get-window ViewModelElementSelector | get-button OK | click
+    get-button OK | click
+}
+with [get-editor "new_file.template" | get-tree] {
+    get-item -path "View Template/Style/Hierarchy Selector" | get-property caption | equals "Hierarchy Selector" 
+        | verify-true
+    get-item -path "View Template/Style/Hierarchy Selector" | get-property childCount | equals 1 | verify-true
+    get-item -path "View Template/Style/Hierarchy Selector/View Model Element Selector false" | get-property caption 
+        | equals "View Model Element Selector false" | verify-true
+}
+with [get-editor "new_file.template"] {
+    with [get-tree] {
+        select "View Template" | get-menu -path Style | click
+        select [get-item -path "View Template" | get-item -path Style -index 1] | get-menu -path "Hierarchy Selector" 
+            | click
+    }
+    get-button "Create and link new Selector" | click
+}
+with [get-window "New Reference Element"] {
+    get-tree | select "viewModelElement/ViewModelElementSelector"
+    get-button Finish | click
+}
+get-window ViewModelElementSelector | get-button OK | click
+with [get-editor "new_file.template" | get-tree] {
+    get-item -path "View Template" | get-item -path Style -index 1 | get-item -path "Hierarchy Selector" 
+        | get-property caption | equals "Hierarchy Selector" | verify-true
+    get-item -path "View Template" | get-item -path Style -index 1 | get-item -path "Hierarchy Selector" 
+        | get-property childCount | equals 1 | verify-true
+    get-item -path "View Template" | get-item -path Style -index 1 | get-item 
+        -path "Hierarchy Selector/View Model Element Selector false" | get-property caption 
+        | equals "View Model Element Selector false" | verify-true
+}
+get-eclipse-window | key-type "M1+s"
+------=_.content-0a7243a0-75d3-3d5f-9791-539de0e5b7ac--
diff --git a/tests/ECPQ7Tests/EPPTests/update-site/project/TemplateLabelWrapStyle.test b/tests/ECPQ7Tests/EPPTests/update-site/project/TemplateLabelWrapStyle.test
new file mode 100644
index 0000000..ee3a51f
--- /dev/null
+++ b/tests/ECPQ7Tests/EPPTests/update-site/project/TemplateLabelWrapStyle.test
@@ -0,0 +1,43 @@
+--- RCPTT testcase ---
+Format-Version: 1.0
+Contexts: _D4Pj4C3lEeSwhO5Nwx0hPg,_Iu0EsS36EeSYRYqCbC6LMQ,_2bS8sTNtEeSiS7b7ptZeHw,_DD4ysDmlEeiV5MMKft7xVA
+Element-Name: TemplateLabelWrapStyle
+Element-Type: testcase
+Element-Version: 3.0
+External-Reference: 
+Id: _RKICsDmnEeiV5MMKft7xVA
+Runtime-Version: 2.3.0.201804052311
+Save-Time: 4/6/18 4:33 PM
+Testcase-Type: ecl
+
+------=_.content-0a7243a0-75d3-3d5f-9791-539de0e5b7ac
+Content-Type: text/ecl
+Entry-Name: .content
+
+with [get-editor "new_file.template"] {
+    get-tree | select "View Template" | get-menu -path Style | click
+    get-button "Create and link new Style Property" | click
+}
+with [get-window "New Reference Element"] {
+    get-tree | select "wrap/LabelWrapStyleProperty"
+    get-button Finish | click
+}
+with [get-window LabelWrapStyleProperty] {
+    get-button | check
+    get-button OK | click
+}
+get-editor "new_file.template" | get-tree | get-item -path "View Template/Style/Label Wrap Style Property true" 
+    | get-property caption | equals "Label Wrap Style Property true" | verify-true
+with [get-editor "new_file.template"] {
+    with [get-tree] {
+        select "View Template" | get-menu -path Style | click
+        select [get-item -path "View Template" | get-item -path Style -index 1] | get-menu 
+            -path "Label Wrap Style Property" | click
+    }
+    get-button -after [get-label "Wrap Label"] | check
+}
+get-editor "new_file.template" | get-tree | get-item -path "View Template" | get-item -path Style -index 1 | get-item 
+    -path "Label Wrap Style Property true" | get-property caption | equals "Label Wrap Style Property true" 
+    | verify-true
+get-eclipse-window | key-type "M1+s"
+------=_.content-0a7243a0-75d3-3d5f-9791-539de0e5b7ac--
diff --git a/tests/ECPQ7Tests/EPPTests/update-site/project/View Model Ecore Path.test b/tests/ECPQ7Tests/EPPTests/update-site/project/View Model Ecore Path.test
new file mode 100644
index 0000000..342bda5
--- /dev/null
+++ b/tests/ECPQ7Tests/EPPTests/update-site/project/View Model Ecore Path.test
@@ -0,0 +1,103 @@
+--- RCPTT testcase ---
+Format-Version: 1.0
+Contexts: _ihvnUC3mEeSwhO5Nwx0hPg,_ih4KMC3mEeSwhO5Nwx0hPg,_s1O00DnIEeiT54i24ck9dw
+Element-Name: View Model Ecore Path
+Element-Type: testcase
+Element-Version: 3.0
+External-Reference: 
+Id: _U576UDm9EeiT54i24ck9dw
+Runtime-Version: 2.2.0.201706152316
+Save-Time: 5/23/18 6:44 PM
+Testcase-Type: ecl
+
+------=_.content-0a7243a0-75d3-3d5f-9791-539de0e5b7ac
+Content-Type: text/ecl
+Entry-Name: .content
+
+get-view "Project Explorer" | get-tree | select "ecorePathsModel/view/Root.view" 
+    | select "ecorePathsModel/view/Root.view" | get-menu -path "Open With/View Model Editor" | click
+get-editor "Root.view" | get-tree | select "Root/TableControl"
+
+get-editor "Root.view" | get-button Add | click
+with [get-window "New Reference Element"] {
+    get-tree | select "model/FeaturePathDomainModelReference"
+    get-button "Next >" | click
+    get-button "Link Domain Model EFeature" | click
+    get-window "Select a EStructuralFeature" | get-tree | select "name : EString"
+}
+get-window "New Reference Element" | get-window "Select a EStructuralFeature" | get-tree | get-property itemCount 
+    | equals 1 | verify-true
+with [get-window "New Reference Element"] {
+    get-window "Select a EStructuralFeature" | get-button OK | click
+    get-button Finish | click
+}
+
+with [get-editor "Root.view"] {
+    get-tree | select Root
+    get-button -after [get-label Root] | click
+}
+
+get-window "Select Ecore" | get-tree | select ecorePathsModel
+get-window "Select Ecore" | get-label "Please select an Ecore file." | get-property caption 
+    | equals "Please select an Ecore file." | verify-true
+get-window "Select Ecore" | get-tree | select "ecorePathsModel/model/Sub1.ecore"
+get-window "Select Ecore" | get-label "" | get-property caption | equals "" | verify-true
+get-window "Select Ecore" | get-button OK | click
+with [get-editor "Root.view"] {
+    get-tree | select Root
+    get-button -after [get-label Root] | click
+}
+get-window "Select Ecore" | get-tree | select "ecorePathsModel/model/Sub2.ecore" | double-click
+
+get-editor "Root.view" | get-tree | select "Root/TableControl" | get-menu -path "Generate Columns for Subclass" | click
+get-window "Select EClass" | get-control Any -index 1 
+    | get-property "getChildren().Control[2].getChildren().Control[0].getItemCount()" | equals 3 | verify-true
+with [get-window "Select EClass"] {
+    get-table | select "SubChild1 -> Child"
+    get-button OK | click
+}
+with [get-editor "Root.view" | get-table] {
+    get-property itemCount | equals 2 | verify-true
+    get-property "getItems().TableItem[0].getText()" | equals name | verify-true
+    get-property "getItems().TableItem[1].getText()" | equals foo | verify-true
+}
+
+with [get-editor "Root.view"] {
+    get-table | select foo
+    get-button Remove | click
+    get-tree | select Root
+    with [get-table] {
+        select "\\/ecorePathsModel\\/model\\/Sub1.ecore" | activate-cell-edit -type MouseClickSelection
+        apply-cell-edit -deactivate
+    }
+    get-button -after [get-label Root] -index 1 | click
+    get-tree | select "Root/TableControl" | get-menu -path "Generate Columns for Subclass" | click
+}
+get-window "Select EClass" | get-control Any -index 1 
+    | get-property "getChildren().Control[2].getChildren().Control[0].getItems().length" | equals 2 | verify-true
+with [get-window "Select EClass"] {
+    get-table | select "SubChild2 -> Child"
+    get-button OK | click
+}
+with [get-editor "Root.view" | get-table] {
+    get-property itemCount | equals 2 | verify-true
+    get-property "getItems().TableItem[0].getText()" | equals name | verify-true
+    get-property "getItems().TableItem[1].getText()" | equals bar | verify-true
+}
+with [get-editor "Root.view"] {
+    get-table | select bar
+    get-button Remove | click
+    get-tree | select Root
+    with [get-table] {
+        select "\\/ecorePathsModel\\/model\\/Sub2.ecore" | activate-cell-edit -type MouseClickSelection
+        apply-cell-edit -deactivate
+    }
+    get-button -after [get-label Root] -index 1 | click
+    get-tree | select "Root/TableControl" | get-menu -path "Generate Columns for Subclass" | click
+}
+get-window "Select EClass" | get-control Any -index 1 
+    | get-property "getChildren().Control[2].getChildren().Control[0].getItems().length" | equals 1 | verify-true
+get-window "Select EClass" | get-button Cancel | click
+
+
+------=_.content-0a7243a0-75d3-3d5f-9791-539de0e5b7ac--
diff --git a/tests/ECPQ7Tests/EPPTests/update-site/project/ViewEditor_smoke.test b/tests/ECPQ7Tests/EPPTests/update-site/project/ViewEditor_smoke.test
index 8c224df..1b14252 100644
--- a/tests/ECPQ7Tests/EPPTests/update-site/project/ViewEditor_smoke.test
+++ b/tests/ECPQ7Tests/EPPTests/update-site/project/ViewEditor_smoke.test
@@ -7,7 +7,7 @@
 External-Reference: 
 Id: _foqG8GzgEeWQGtcwdcx-qw
 Runtime-Version: 2.2.0.201706152316
-Save-Time: 2/26/18 3:52 PM
+Save-Time: 5/24/18 9:34 AM
 Testcase-Type: ecl
 
 ------=_.content-0a7243a0-75d3-3d5f-9791-539de0e5b7ac
@@ -255,13 +255,12 @@
     get-property backgroundColor | equals "#FFFFFF" | verify-true
     try {
 		// local color (ubuntu/gnome)
-		get-property foregroundColor | equals "#4C454C" | verify-true
+		get-property foregroundColor | equals "#4C4C4C" | verify-true
 	} -catch {
 		// jenkins color
 		get-property foregroundColor | equals "#000000" | verify-true
 	}
     get-property "getFont().getFontData().FontData[0].getStyle()" | equals 0 | verify-true
-    get-property "getFont().getFontData().FontData[0].getHeight()" | equals 10 | verify-true
     get-property "getStyle()" | contains "SEPARATOR" | verify-true
     get-property "getStyle()" | contains "SHADOW_OUT" | verify-true
     get-property "getStyle()" | contains "NO_FOCUS" | verify-true
diff --git a/tests/ECPQ7Tests/EPPTests/update-site/project/ViewModelBulkMigration.test b/tests/ECPQ7Tests/EPPTests/update-site/project/ViewModelBulkMigration.test
new file mode 100644
index 0000000..8c30d0d
--- /dev/null
+++ b/tests/ECPQ7Tests/EPPTests/update-site/project/ViewModelBulkMigration.test
@@ -0,0 +1,39 @@
+--- RCPTT testcase ---
+Format-Version: 1.0
+Contexts: _ihvnUC3mEeSwhO5Nwx0hPg,_MO6C8EobEeiHp8RnhxiMOg
+Element-Name: ViewModelBulkMigration
+Element-Type: testcase
+Element-Version: 3.0
+External-Reference: 
+Id: _YFwVIEobEeiHp8RnhxiMOg
+Runtime-Version: 2.2.0.201706152316
+Save-Time: 4/27/18 4:31 PM
+Testcase-Type: ecl
+
+------=_.content-0a7243a0-75d3-3d5f-9791-539de0e5b7ac
+Content-Type: text/ecl
+Entry-Name: .content
+
+get-view "Project Explorer" | get-tree | select "barView/Bar.view" | double-click
+get-window "Perform migration to the latest view model version?" | get-button Yes | click
+get-window "Migrate view models from workspace" | get-button Yes | click
+get-window "Migrate view models from workspace" | get-table | select "Foo.view \\[fooView\\/Foo.view\\]"
+with [get-window "Migrate view models from workspace" | get-table] {
+    get-property itemCount | equals 1 | verify-true
+    get-item -path "Foo.view \\[fooView\\/Foo.view\\]" | get-property caption | equals "Foo.view [fooView/Foo.view]" 
+        | verify-true
+}
+get-window "Migrate view models from workspace" | get-button OK | click
+
+// Check that the ecore path was migrated
+with [get-editor "Bar.view" | get-table] {
+    get-property itemCount | equals 1 | verify-true
+    get-item -path "\\/bar\\/bar.ecore" | get-property caption | equals "/bar/bar.ecore" | verify-true
+}
+
+// No dialog(s) should pop up because Foo.view should be migrated
+get-view "Project Explorer" | get-tree | select "fooView/Foo.view" | double-click
+get-editor "Foo.view" | get-table | get-property itemCount | equals 1 | verify-true
+get-editor "Foo.view" | get-table | get-item -path "\\/foo\\/foo.ecore" | get-property caption 
+    | equals "/foo/foo.ecore" | verify-true
+------=_.content-0a7243a0-75d3-3d5f-9791-539de0e5b7ac--
diff --git a/tests/ECPQ7Tests/EPPTests/update-site/project/ViewModelBulkMigrationWorkspace.ctx b/tests/ECPQ7Tests/EPPTests/update-site/project/ViewModelBulkMigrationWorkspace.ctx
new file mode 100644
index 0000000..5143d7c
--- /dev/null
+++ b/tests/ECPQ7Tests/EPPTests/update-site/project/ViewModelBulkMigrationWorkspace.ctx
@@ -0,0 +1,117 @@
+--- RCPTT testcase ---
+Format-Version: 1.0
+Context-Type: org.eclipse.rcptt.ctx.workspace
+Element-Name: ViewModelBulkMigrationWorkspace
+Element-Type: context
+Element-Version: 2.0
+Id: _MO6C8EobEeiHp8RnhxiMOg
+Runtime-Version: 2.2.0.201706152316
+Save-Time: 4/27/18 3:10 PM
+
+------=_contents/bar/bar.ecore-59eaa3d7-e2f4-33e2-9422-f952d1cdb62c
+Content-Type: q7/binary
+Entry-Name: contents/bar/bar.ecore
+
+UEsDBBQACAgIAAAAIQAAAAAAAAAAAAAAAAAIAAkALmNvbnRlbnRVVAUAAQAAAACNUVtrgzAUfvdXhOy5
+xrqXIWrZxUJhg7K20Nc0Pdowk0gSp/v3O9qtKOxheUk43+V8Jydd9aomn2CdNDqjyzCiBLQwZ6mrjB72
+68UDXeVBCsJYSIotFx+8AtIrmdxE8SBCG+0SrGf04n2TMNZ1XWhUFRpbsePb5kZxc0p3PzLiKFoi7XUn
+LqD4QmrnuRZAA4LnqhwzzLQgatk4GA1AlYNJzIqBRonmCsknbvHpDu+bm3AgY5kpc4Z6ALcWStlnFIEQ
+gfAK5Ng5heeaOydLibMSTJ74rwZdf35jBH87PWGnfEybws7bVvjW8noNHG/4Q/zovZWn1k+jTmqwn5Jf
+uOdDgfxr+DvGCoyAK6RsHINN58Btsvk68+AbUEsHCLzWDOgYAQAABwIAAFBLAQIUABQACAgIAAAAIQC8
+1gzoGAEAAAcCAAAIAAkAAAAAAAAAAAAAAAAAAAAuY29udGVudFVUBQABAAAAAFBLBQYAAAAAAQABAD8A
+AABXAQAAAAA=
+------=_contents/bar/bar.ecore-59eaa3d7-e2f4-33e2-9422-f952d1cdb62c--
+------=_contents/fooView/.project-d0ad1c68-e5c1-3313-af7f-2969a1cf6ee2
+Content-Type: q7/binary
+Entry-Name: contents/fooView/.project
+
+UEsDBBQACAgIAAAAIQAAAAAAAAAAAAAAAAAIAAkALmNvbnRlbnRVVAUAAQAAAACzsa/IzVEoSy0qzszP
+s1Uy1DNQUkjNS85PycxLt1UKDXHTtVCyt+OyKSjKz0pNLnFJLU4uyiwoASq24+K0yUvMTbVLy88Py0wt
+t9EH84Ciyfm5ual5JXY2+jAWUBBqQDGIrY/MSSrNzEkJLkhNBsug8PISS0qLUiFa4Gy4bhS3AABQSwcI
+EuOlB4EAAADIAAAAUEsBAhQAFAAICAgAAAAhABLjpQeBAAAAyAAAAAgACQAAAAAAAAAAAAAAAAAAAC5j
+b250ZW50VVQFAAEAAAAAUEsFBgAAAAABAAEAPwAAAMAAAAAAAA==
+------=_contents/fooView/.project-d0ad1c68-e5c1-3313-af7f-2969a1cf6ee2--
+------=_contents/barView/.project-476a6f10-9cd1-3ff2-ab47-2cc5593cfa48
+Content-Type: q7/binary
+Entry-Name: contents/barView/.project
+
+UEsDBBQACAgIAAAAIQAAAAAAAAAAAAAAAAAIAAkALmNvbnRlbnRVVAUAAQAAAACzsa/IzVEoSy0qzszP
+s1Uy1DNQUkjNS85PycxLt1UKDXHTtVCyt+OyKSjKz0pNLnFJLU4uyiwoASq24+K0yUvMTbVLSiwKy0wt
+t9EH84Ciyfm5ual5JXY2+jAWUBBqQDGIrY/MSSrNzEkJLkhNBsug8PISS0qLUiFa4Gy4bhS3AABQSwcI
+9NdU8oEAAADIAAAAUEsBAhQAFAAICAgAAAAhAPTXVPKBAAAAyAAAAAgACQAAAAAAAAAAAAAAAAAAAC5j
+b250ZW50VVQFAAEAAAAAUEsFBgAAAAABAAEAPwAAAMAAAAAAAA==
+------=_contents/barView/.project-476a6f10-9cd1-3ff2-ab47-2cc5593cfa48--
+------=_contents/foo/foo.ecore-22f30153-4275-3a34-be32-d350b1d0b235
+Content-Type: q7/binary
+Entry-Name: contents/foo/foo.ecore
+
+UEsDBBQACAgIAAAAIQAAAAAAAAAAAAAAAAAIAAkALmNvbnRlbnRVVAUAAQAAAACNUc9rgzAUvvtXhOxc
+Y91liFrGplDYoKwt7JqlTxtmEknidP/9nnYrCj0sl4T3/Xjfy0s3g2rIF1gnjc7oOowoAS3MSeo6o8dD
+uXqgmzxIQRgLSbHj4pPXQAYlk6soHkVoo12C9YyevW8Txvq+D42qQ2Nr9v66vVLcktLfT4w4itZIe9mL
+Myi+ktp5rgXQgOC5KKcMCy2IRrYOJgNQ1WgSs2KkUaK5QnJlDD7d8W17FY5kLDNlTtCM4M5CJYeMIhAi
+EF6AHDun8NRw52QlcVaCyRP/3aLr729M4F+nEjvlU9oU9t52wneWNyVwvOGG+NF7Kz86P486q8FhTn7m
+no8F8q/h7xgrMAKukLJpDDafA7fJluvMgx9QSwcIvyfxrBcBAAAHAgAAUEsBAhQAFAAICAgAAAAhAL8n
+8awXAQAABwIAAAgACQAAAAAAAAAAAAAAAAAAAC5jb250ZW50VVQFAAEAAAAAUEsFBgAAAAABAAEAPwAA
+AFYBAAAAAA==
+------=_contents/foo/foo.ecore-22f30153-4275-3a34-be32-d350b1d0b235--
+------=_contents/foo/.project-3d83b0c5-6ec9-394a-bab0-84bef7136d92
+Content-Type: q7/binary
+Entry-Name: contents/foo/.project
+
+UEsDBBQACAgIAAAAIQAAAAAAAAAAAAAAAAAIAAkALmNvbnRlbnRVVAUAAQAAAACzsa/IzVEoSy0qzszP
+s1Uy1DNQUkjNS85PycxLt1UKDXHTtVCyt+OyKSjKz0pNLnFJLU4uyiwoASq24+K0yUvMTbVLy8+30Qez
+gCLJ+bm5qXkldjb6MBZQEKq5GMTWR+YklWbmpAQXpCaDZVB4eYklpUWpEC1wNlw3ijsAUEsHCDdpiGB8
+AAAAxAAAAFBLAQIUABQACAgIAAAAIQA3aYhgfAAAAMQAAAAIAAkAAAAAAAAAAAAAAAAAAAAuY29udGVu
+dFVUBQABAAAAAFBLBQYAAAAAAQABAD8AAAC7AAAAAAA=
+------=_contents/foo/.project-3d83b0c5-6ec9-394a-bab0-84bef7136d92--
+------=_contents/bar/.project-93f0eb77-1d84-3d4e-bbd0-acabbfd1edd2
+Content-Type: q7/binary
+Entry-Name: contents/bar/.project
+
+UEsDBBQACAgIAAAAIQAAAAAAAAAAAAAAAAAIAAkALmNvbnRlbnRVVAUAAQAAAACzsa/IzVEoSy0qzszP
+s1Uy1DNQUkjNS85PycxLt1UKDXHTtVCyt+OyKSjKz0pNLnFJLU4uyiwoASq24+K0yUvMTbVLSiyy0Qez
+gCLJ+bm5qXkldjb6MBZQEKq5GMTWR+YklWbmpAQXpCaDZVB4eYklpUWpEC1wNlw3ijsAUEsHCKXyRON8
+AAAAxAAAAFBLAQIUABQACAgIAAAAIQCl8kTjfAAAAMQAAAAIAAkAAAAAAAAAAAAAAAAAAAAuY29udGVu
+dFVUBQABAAAAAFBLBQYAAAAAAQABAD8AAAC7AAAAAAA=
+------=_contents/bar/.project-93f0eb77-1d84-3d4e-bbd0-acabbfd1edd2--
+------=_contents/fooView/Foo.view-410fd825-d6fb-3761-bba7-5da748f6879f
+Content-Type: q7/binary
+Entry-Name: contents/fooView/Foo.view
+
+UEsDBBQACAgIAAAAIQAAAAAAAAAAAAAAAAAIAAkALmNvbnRlbnRVVAUAAQAAAACNk9FOwjAUhu95iqZe
+uw6MmiwMgjgSoiRGIsErU7uzrXFrSVcYvL1tx9ApChdLmuU/3/nOadofboscbUCVXIoQdz0fIxBMxlyk
+IR7Nx9MpHg46falSD1jOVyV4UCTmvPI2HCqvkDHkwcIc0bbgwYHUsyTDFmVg/oc403oVEFJVlSeL1DM8
+spxND5GyHamuXKLn+10Te5yzDAp6yUWpqWDQVAGTClp1jaItNpoW0CORjTU1/w9ygDlAHXMgEyM2RlyM
+dG/ddDzgcYjfdsvX+COSiwj43YQ9MHYz4tsUI0ELozeR0uzUOjxRnYWYJFLaz3P/8KCDUF9JqaNxTssS
+ZQqSloaNu64XhFgWcRUs43msQCCzukDvVqbRiTsaS6GVzFve9Nr/03ufR6b/SGvF39e6tjXdY1lQLmaW
++wwJGA8G55tMgOp1vY77I6Cfhi+/DGuLtke0p37TcAsOoi/7k8slrWHJflpybFx3C6S5BvNEyBlvZND5
+BFBLBwjogA8bdgEAAHEDAABQSwECFAAUAAgICAAAACEA6IAPG3YBAABxAwAACAAJAAAAAAAAAAAAAAAA
+AAAALmNvbnRlbnRVVAUAAQAAAABQSwUGAAAAAAEAAQA/AAAAtQEAAAAA
+------=_contents/fooView/Foo.view-410fd825-d6fb-3761-bba7-5da748f6879f--
+------=_.q7.content-3d2e0690-ce48-3609-83e0-c704d49f1eaf
+Content-Type: q7/binary
+Entry-Name: .q7.content
+
+UEsDBBQACAgIAAAAIQAAAAAAAAAAAAAAAAAIAAkALmNvbnRlbnRVVAUAAQAAAACdkk9PgzAYxu98iqZ3
+W/VgCCks2TKjB7LEg/NmWCmsDvo2pRt8fF90xYuLjlvh+fPrExCLoW3ISblOg0npHbulRBkJpTZ1So++
+uonpIosEuJop2WjbKeak9Z5JP7Ae3KGzhVTJNpxWYLwaPBlanUy192MtgkyX4PuU7r23Ced93zNoa4bl
+/C1/DpY/WFM8eMb4l4+jj08+SkzRovtVqz6HUjXLY3PIde0Kj5fa/th0mdL3fPOwitewWyv9ZOMXsx90
+vqlpFhEi5LjJ+PGMT9bBh5K+O9fvCke/FdQq3aggsLOR8l9lzOFKcCrogofmi6BxyizYEmGnMfxPVgUw
+i4O560ZhYPaoR4RdHiX49NkEv/b3zaJPUEsHCAk2hlQVAQAAGQMAAFBLAQIUABQACAgIAAAAIQAJNoZU
+FQEAABkDAAAIAAkAAAAAAAAAAAAAAAAAAAAuY29udGVudFVUBQABAAAAAFBLBQYAAAAAAQABAD8AAABU
+AQAAAAA=
+------=_.q7.content-3d2e0690-ce48-3609-83e0-c704d49f1eaf--
+------=_contents/barView/Bar.view-2d4ab444-55b4-3774-b82c-7786059a3c22
+Content-Type: q7/binary
+Entry-Name: contents/barView/Bar.view
+
+UEsDBBQACAgIAAAAIQAAAAAAAAAAAAAAAAAIAAkALmNvbnRlbnRVVAUAAQAAAACNk9FOwjAUhu95iqZe
+uwImahYGARwJKomRgN6Z0p2xxrUlXWH49raFoVMULpY0y3++853TtNPbihxtQBdcyQi3giZGIJlKuFxG
+uD8djse41210lF4GwHK+KiAAkdrzKthwKAOhEsjDuT2ireDhgdR2JMuWRWj/RzgzZhUSUpZloMQysDzy
+OhkfIkU9Ul75RLvZbNnY45RlIOgll4WhkkFVBUxpqNVViq7YajpAm8QuVtX8P8gB5gG7mAfZGHEx4mOk
+deOn4yFPIvxm3sf3t7Gax8AHI/bA2HWfb5cYSSqs3oBqu1Pn8ERNFmGyoNp9gf+Huw2EOlopEw9zWhQo
+05DWNFzcd70gxLGIr2AZzxMNEtnVheZjZRuduKOhkkarvOadvsz+9N7nke3fN0bzxdrsbG33RAnK5cRx
+nyEF68HgfJMRULPerePuCOin4eyX4c6i7hHvqd80/ILD+Mv+5HJJbViyn5YcG9ffAqmuwT4RcsYb6TY+
+AVBLBwgBzvg0dgEAAHEDAABQSwECFAAUAAgICAAAACEAAc74NHYBAABxAwAACAAJAAAAAAAAAAAAAAAA
+AAAALmNvbnRlbnRVVAUAAQAAAABQSwUGAAAAAAEAAQA/AAAAtQEAAAAA
+------=_contents/barView/Bar.view-2d4ab444-55b4-3774-b82c-7786059a3c22--
diff --git a/tests/ECPQ7Tests/NonEPPTests/Editor/Multicontrols/MultiBoolean.test b/tests/ECPQ7Tests/NonEPPTests/Editor/Multicontrols/MultiBoolean.test
index 4fb7c13..62653de 100644
--- a/tests/ECPQ7Tests/NonEPPTests/Editor/Multicontrols/MultiBoolean.test
+++ b/tests/ECPQ7Tests/NonEPPTests/Editor/Multicontrols/MultiBoolean.test
@@ -1,86 +1,53 @@
---- Q7 testcase ---
+--- RCPTT testcase ---
 Format-Version: 1.0
-Q7-vendor: www.xored.com/q7
-Contexts: _mY5uUKEgEeKX8e34E6tWIg,_rr2EEFpSEeKcnaHGSt8OwA,_f3qEUVpSEeKcnaHGSt8OwA,_IuFcgFpZEeKcnaHGSt8OwA,__UtTgD-XEeK-yuKsz0Lang
+Contexts: _mY5uUKEgEeKX8e34E6tWIg,_rr2EEFpSEeKcnaHGSt8OwA,_f3qEUVpSEeKcnaHGSt8OwA,_IuFcgFpZEeKcnaHGSt8OwA,_YQj0cT-VEeK-yuKsz0Lang
 Element-Name: MultiBoolean
 Element-Type: testcase
 Element-Version: 3.0
 External-Reference: 
 Id: _7xT6QXXGEeK2tZkPdpUavQ
-Q7-Runtime-Version: 1.3.9.201310250528
-Save-Time: 11/26/13 6:13 PM
+Runtime-Version: 2.2.0.201706152316
+Save-Time: 5/23/18 5:14 PM
+Tags: skipExecution
 Testcase-Type: ecl
 
 ------=_.content-0a7243a0-75d3-3d5f-9791-539de0e5b7ac
 Content-Type: text/ecl
 Entry-Name: .content
 
-get-view "Model Explorer" | get-tree | select "TestProject \\[trunk, Version 0\\]/Tournament Pro" | double-click
-with [get-editor "Tournament Pro"] {
-    with [get-button "Add Entry" -after [get-label "Receives Trophy"]] {
-        click
-        click
-        click
-    }
-    get-button -after [get-label "Receives Trophy"] -index 1 | check
-    get-button -after [get-label "Receives Trophy"] -index 9 | check
-    get-button "Add Entry" -after [get-label "Receives Trophy"] | click
-    close
+get-view "Model Explorer" | get-tree | select "TestProject/Tournament Pro" | double-click
+get-editor "Tournament Pro" | get-table -after [get-label Type] -index 4 | get-property itemCount | equals 0 
+    | verify-true
+get-editor "Tournament Pro" | get-button "Add Entry" -after [get-label Type] -index 1 | click
+with [get-editor "Tournament Pro" | get-table -after [get-label Type] -index 4] {
+    get-item -path false | get-property index | equals 0 | verify-true
+    get-property itemCount | equals 1 | verify-true
 }
-get-view "Model Explorer" | get-tree | select "TestProject \\[trunk, Version 0\\]/Tournament Pro" | double-click
-with [get-editor "Tournament Pro"] {
-    get-button -after [get-label "Receives Trophy"] -index 1 | get-property selected | equals true | verify-true
-    get-button -after [get-label "Receives Trophy"] -index 5
-        | get-property selected | equals false | verify-true
-    get-button -after [get-label "Receives Trophy"] -index 9
-        | get-property selected | equals true | verify-true
-    get-button -after [get-label "Receives Trophy"] -index 13
-        | get-property selected | equals false | verify-true
+get-editor "Tournament Pro" | get-table -after [get-label Type] -index 4 | select false | click
+with [get-editor "Tournament Pro" | get-table -after [get-label Type] -index 4] {
+    get-item -path true | get-property caption | equals true | verify-true
+    get-item -path true | get-property index | equals 0 | verify-true
 }
-get-editor "Tournament Pro" | get-button -after [get-label "Receives Trophy"] -index 15 | click
-get-editor "Tournament Pro" | get-button -after [get-label "Receives Trophy"] -index 9 | get-property selected | equals false | verify-true
-get-editor "Tournament Pro" | close
-get-view "Model Explorer" | get-tree | select "TestProject \\[trunk, Version 0\\]/Tournament Pro" | double-click
-with [get-editor "Tournament Pro"] {
-    get-button -after [get-label "Receives Trophy"] -index 1 | get-property selected | equals true | verify-true
-    get-button -after [get-label "Receives Trophy"] -index 13
-        | get-property selected | equals true | verify-true
-    get-button -after [get-label "Receives Trophy"] -index 9
-        | get-property selected | equals false | verify-true
+get-editor "Tournament Pro" | get-button "Add Entry" -after [get-label Type] -index 1 | click
+with [get-editor "Tournament Pro" | get-table -after [get-label Type] -index 4] {
+    get-property itemCount | equals 2 | verify-true
+    get-item -path true | get-property caption | equals true | verify-true
+    get-item -path true | get-property index | equals 0 | verify-true
+    get-item -path false | get-property caption | equals false | verify-true
+    get-item -path false | get-property index | equals 1 | verify-true
 }
-get-view "Model Explorer" | get-tree | select "TestProject \\[trunk, Version 0\\]" | get-menu Commit | click
-get-window Commit | get-button OK | click
-get-editor "Tournament Pro" | close
-get-view "Model Explorer" | get-tree | select "TestProjectSecondCheckOut \\[trunk, Version 0\\]" | get-menu Update 
-    | click
-
-get-window Update | get-button OK | click
-get-view "Model Explorer" | get-tree | select "TestProjectSecondCheckOut \\[trunk, Version 1\\]/Tournament Pro" 
-    | double-click
-
-with [get-editor "Tournament Pro"] {
-    get-button -after [get-label "Receives Trophy"] -index 1 | get-property selected | equals true | verify-true
-    get-button -after [get-label "Receives Trophy"] -index 5
-        | get-property selected | equals false | verify-true
-    get-button -after [get-label "Receives Trophy"] -index 9
-        | get-property selected | equals false | verify-true
-    get-button -after [get-label "Receives Trophy"] -index 13
-        | get-property selected | equals true | verify-true
+get-editor "Tournament Pro" | get-table -after [get-label Type] -index 4 | select false
+with [get-editor "Tournament Pro" | get-table -after [get-label Type] -index 4] {
+    get-item -path true | get-property caption | equals true | verify-true
+    get-item -path true | get-property index | equals 0 | verify-true
+    get-item -path true -index 1 | get-property caption | equals true | verify-true
+    get-item -path true -index 1 | get-property index | equals 1 | verify-true
 }
-with [get-editor "Tournament Pro"] {
-    get-button -after [get-label "Receives Trophy"] -index 1 | uncheck
-    get-button -after [get-label "Receives Trophy"] -index 13 | uncheck
-    get-button -after [get-label "Receives Trophy"] -index 5 | check
-    get-button -after [get-label "Receives Trophy"] -index 9 | check
-}
-get-view "Model Explorer" | get-tree | select "TestProjectSecondCheckOut \\[trunk, Version 1\\]" 
-    | get-menu "Revert All Operations" | click
-get-window Confirmation | get-button Yes | click
-get-window Revert | get-button OK | click
-with [get-editor "Tournament Pro"] {
-    get-button -after [get-label "Receives Trophy"] -index 1 | get-property selected | equals true | verify-true
-    get-button -after [get-label "Receives Trophy"] -index 5 | get-property selected | equals false | verify-true
-    get-button -after [get-label "Receives Trophy"] -index 9 | get-property selected | equals false | verify-true
-    get-button -after [get-label "Receives Trophy"] -index 13 | get-property selected | equals true | verify-true
+get-editor "Tournament Pro" | get-table -after [get-label Type] -index 4 | select true
+with [get-editor "Tournament Pro" | get-table -after [get-label Type] -index 4] {
+    get-item -path false | get-property caption | equals false | verify-true
+    get-item -path false | get-property index | equals 0 | verify-true
+    get-item -path false -index 1 | get-property caption | equals false | verify-true
+    get-item -path false -index 1 | get-property index | equals 1 | verify-true
 }
 ------=_.content-0a7243a0-75d3-3d5f-9791-539de0e5b7ac--
diff --git a/tests/ECPQ7Tests/NonEPPTests/Editor/Multicontrols/MultiDouble.test b/tests/ECPQ7Tests/NonEPPTests/Editor/Multicontrols/MultiDouble.test
index 47ad37e..c5a5ef7 100644
--- a/tests/ECPQ7Tests/NonEPPTests/Editor/Multicontrols/MultiDouble.test
+++ b/tests/ECPQ7Tests/NonEPPTests/Editor/Multicontrols/MultiDouble.test
@@ -1,14 +1,13 @@
---- Q7 testcase ---
+--- RCPTT testcase ---
 Format-Version: 1.0
-Q7-vendor: www.xored.com/q7
 Contexts: _mY5uUKEgEeKX8e34E6tWIg,_rr2EEFpSEeKcnaHGSt8OwA,_IuFcgFpZEeKcnaHGSt8OwA,_f3qEUVpSEeKcnaHGSt8OwA,__UtTgD-XEeK-yuKsz0Lang
 Element-Name: MultiDouble
 Element-Type: testcase
 Element-Version: 3.0
 External-Reference: 
 Id: _fytq8HXSEeK2tZkPdpUavQ
-Q7-Runtime-Version: 1.3.10.201312200736
-Save-Time: 8/18/14 11:04 PM
+Runtime-Version: 2.2.0.201706152316
+Save-Time: 5/23/18 3:11 PM
 Testcase-Type: ecl
 
 ------=_.description-216f885c-d591-38ce-8ea2-e4f8cb4d6ffa
@@ -23,132 +22,29 @@
 Entry-Name: .content
 
 get-view "Model Explorer" | get-tree | select "TestProject \\[trunk, Version 0\\]/Tournament Pro" | double-click
-get-editor "Tournament Pro" | get-control Any -after [get-label Type] -index 49 | get-property "getChildren().length" | equals 0 | verify-true
-get-editor "Tournament Pro" | get-button "Add Entry" | click
-get-editor "Tournament Pro" | get-control Any -after [get-label Type] -index 49 | get-property "getChildren().length" | equals 1 | verify-true
-with [get-editor "Tournament Pro" | get-button "Add Entry"] {
-    click
-    click
-}
-get-editor "Tournament Pro" | get-control Any -after [get-label Type] -index 49 | get-property "getChildren().length" | equals 3 | verify-true
 with [get-editor "Tournament Pro"] {
-    get-editbox -after [get-label "Price Money"] | set-text "10000.9"
-    //was 5000.50
-    get-editbox -after [get-label "Price Money"] -index 1 | set-text "5000.5"
-    get-editbox -after [get-label "Price Money"] -index 2 | set-text "1000.6"
-    close
-}
-get-view "Model Explorer" | get-tree | select "TestProject \\[trunk, Version 0\\]/Tournament Pro" | double-click
-with [get-editor "Tournament Pro"] {
-    get-editbox -after [get-label "Price Money"] | get-property text | equals "10000.9" | verify-true
-    get-editbox -after [get-label "Price Money"] -index 1 | get-property text | equals "5000.5" | verify-true
-    get-editbox -after [get-label "Price Money"] -index 2 | get-property text | equals "1000.6" | verify-true
-}
-with [get-editor "Tournament Pro"] {
-    get-editbox -after [get-label "Price Money"] | set-text "10000.9d"
-    get-editbox -after [get-label "Price Money"] -index 1 | set-text "5000.5d"
-    get-editbox -after [get-label "Price Money"] -index 2 | set-text "1000.6d"
-    get-editbox -after [get-label "Price Money"] -index 1 | click-text 1
-    close
-}
-get-view "Model Explorer" | get-tree | select "TestProject \\[trunk, Version 0\\]/Tournament Pro" | double-click
-with [get-editor "Tournament Pro"] {
-    get-editbox -after [get-label "Price Money"] | get-property text | equals "10000.9" | verify-true
-    get-editbox -after [get-label "Price Money"] -index 1 | get-property text | equals "5000.5" | verify-true
-    get-editbox -after [get-label "Price Money"] -index 2 | get-property text | equals "1000.6" | verify-true
-}
-
-with [get-editor "Tournament Pro"] {
-    get-button -after [get-label "Price Money"] -index 8 | click
-    get-button -after [get-label "Price Money"] -index 5 | click
-}
-with [get-editor "Tournament Pro"] {
-    get-editbox -after [get-label "Price Money"] | get-property text | equals "1000.6" | verify-true
-    get-editbox -after [get-label "Price Money"] -index 1 | get-property text | equals "10000.9" | verify-true
-    get-editbox -after [get-label "Price Money"] -index 2 | get-property text | equals "5000.5" | verify-true
-}
-with [get-editor "Tournament Pro"] {
-    get-editbox -after [get-label "Price Money"] | set-text "1000,6dfdf"
-    get-editbox -after [get-label "Price Money"] -index 1 | click-text 1
-}
-with [get-editor "Tournament Pro"] {
-    get-button -after [get-label "Price Money"] -index 7 | click
-    get-button -after [get-label "Price Money"] -index 4 | click
-}
-get-editor "Tournament Pro" | get-control Any -after [get-label Type] -index 49 | get-property "getChildren().length" | equals 1 | verify-true
-with [get-editor "Tournament Pro"] {
-    get-button -after [get-label "Price Money"] -index 1 | click
-}
-get-editor "Tournament Pro" | get-control Any -after [get-label Type] -index 49 | get-property "getChildren().length" | equals 0 | verify-true
-get-view "Model Explorer" | get-tree | select "TestProject \\[trunk, Version 0\\]" | get-menu "Revert All Operations" | click
-get-window Confirmation | get-button Yes | click
-get-window Revert | get-button OK | click
-with [get-editor "Tournament Pro"] {
-    with [get-button "Add Entry"] {
-        click
-        click
-        click
-        click
+    get-button "Add Entry" | click
+    with [get-table -after [get-label Type] -index 3] {
+        select "0.0" | activate-cell-edit -type MouseClickSelection
+        get-editbox | set-text "500.5"
+        apply-cell-edit -deactivate
     }
-    get-editbox -after [get-label "Price Money"] | set-text "10000.0"
-    get-editbox -after [get-label "Price Money"] -index 1 | set-text "8000.0"
-    with [get-editbox -after [get-label "Price Money"] -index 2] {
-        click-text 1
-        key-type Left -times 3
-        set-text "5000.0"
+    get-button "Add Entry" | click
+    with [get-table -after [get-label Type] -index 3] {
+        select "0.0" | activate-cell-edit -type MouseClickSelection
+        get-editbox | set-text "123.11d"
+        apply-cell-edit
     }
-    get-editbox -after [get-label "Price Money"] -index 3 | set-text "3000.0"
 }
-get-view "Model Explorer" | get-tree | select "TestProject \\[trunk, Version 0\\]" | get-menu Commit | click
-get-window Commit | get-button OK | click
-get-editor "Tournament Pro" | close
-get-view "Model Explorer" | get-tree | select "TestProjectSecondCheckOut \\[trunk, Version 0\\]/Tournament Pro" | double-click
-get-editor "Tournament Pro" | get-control Any -after [get-label Type] -index 49 | get-property "getChildren().length" | equals 0 | verify-true
-get-view "Model Explorer" | get-tree | select "TestProjectSecondCheckOut \\[trunk, Version 0\\]" | get-menu Update | click
-get-window Update | get-button OK | click
+get-window "Invalid Number" | get-button OK | click
 with [get-editor "Tournament Pro"] {
-    get-control Any -after [get-label Type] -index 49 | get-property "getChildren().length" | equals 4 | verify-true
-    get-editbox -after [get-label "Price Money"] | get-property text | equals "10000" | verify-true
-    get-editbox -after [get-label "Price Money"] -index 1 | get-property text | equals "8000" | verify-true
-    get-editbox -after [get-label "Price Money"] -index 2 | get-property text | equals "5000" | verify-true
-    get-editbox -after [get-label "Price Money"] -index 3 | get-property text | equals "3000" | verify-true
+    with [get-table -after [get-label Type] -index 3] {
+        select "0.0" | activate-cell-edit -type MouseClickSelection
+        get-editbox | set-text "456.666"
+        apply-cell-edit -deactivate
+    }
+    get-button -after [get-label Type] -index 9 | click
 }
-with [get-editor "Tournament Pro"] {
-    get-button -after [get-label "Price Money"] -index 11 | click
-    get-button -after [get-label "Price Money"] -index 8 | click
-    get-button -after [get-label "Price Money"] -index 5 | click
-    get-button -after [get-label "Price Money"] -index 6 | click
-    get-button -after [get-label "Price Money"] -index 9 | click
-    get-button -after [get-label "Price Money"] -index 8 | click
-}
-get-view "Model Explorer" | get-tree | select "TestProjectSecondCheckOut \\[trunk, Version 1\\]" | get-menu Commit | click
-get-window Commit | get-button OK | click
-get-editor "Tournament Pro" | click
-get-view "Model Explorer" | get-tree | select "TestProject \\[trunk, Version 1\\]" | get-menu Update | click
-get-window Update | get-button OK | click
-
-get-editor "Tournament Pro" | close
-get-view "Model Explorer" | get-tree | select "TestProject \\[trunk, Version 2\\]/Tournament Pro" | double-click
-with [get-editor "Tournament Pro"] {
-    get-editbox -after [get-label "Price Money"] | get-property text | equals "3000" | verify-true
-    get-editbox -after [get-label "Price Money"] -index 1 | get-property text | equals "5000" | verify-true
-    get-editbox -after [get-label "Price Money"] -index 2 | get-property text | equals "8000" | verify-true
-    get-editbox -after [get-label "Price Money"] -index 3 | get-property text | equals "10000" | verify-true
-}
-with [get-editor "Tournament Pro"] {
-    get-button -after [get-label "Price Money"] -index 4 | click
-    get-editbox -after [get-label "Price Money"] -index 2 | set-text 110000
-    get-editbox -after [get-label "Price Money"] -index 1 | set-text 18000
-    get-editbox -after [get-label "Price Money"] | set-text 13000
-}
-get-view "Model Explorer" | get-tree | select "TestProject \\[trunk, Version 2\\]" | get-menu "Revert All Operations" 
-    | click
-get-window Confirmation | get-button Yes | click
-get-window Revert | get-button OK | click
-with [get-editor "Tournament Pro"] {
-    get-editbox -after [get-label "Price Money"] | get-property text | equals 3000 | verify-true
-    get-editbox -after [get-label "Price Money"] -index 1 | get-property text | equals 5000 | verify-true
-    get-editbox -after [get-label "Price Money"] -index 2 | get-property text | equals 8000 | verify-true
-    get-editbox -after [get-label "Price Money"] -index 3 | get-property text | equals 10000 | verify-true
-}
+get-editor "Tournament Pro" | get-table -after [get-label Type] -index 3 | get-property itemCount | equals 2 
+    | verify-true
 ------=_.content-0a7243a0-75d3-3d5f-9791-539de0e5b7ac--
diff --git a/tests/ECPQ7Tests/NonEPPTests/Editor/Multicontrols/MultiEnum.test b/tests/ECPQ7Tests/NonEPPTests/Editor/Multicontrols/MultiEnum.test
index a200fa7..99c7e99 100644
--- a/tests/ECPQ7Tests/NonEPPTests/Editor/Multicontrols/MultiEnum.test
+++ b/tests/ECPQ7Tests/NonEPPTests/Editor/Multicontrols/MultiEnum.test
@@ -1,12 +1,56 @@
---- Q7 testcase ---
+--- RCPTT testcase ---
 Format-Version: 1.0
-Q7-vendor: www.xored.com/q7
 Contexts: _mY5uUKEgEeKX8e34E6tWIg,_rr2EEFpSEeKcnaHGSt8OwA,_IuFcgFpZEeKcnaHGSt8OwA,_f3qEUVpSEeKcnaHGSt8OwA,_YQj0cT-VEeK-yuKsz0Lang
 Element-Name: MultiEnum
 Element-Type: testcase
 Element-Version: 3.0
 External-Reference: 
 Id: _YAH8kHXLEeK2tZkPdpUavQ
-Save-Time: 2/13/13 11:55 AM
+Runtime-Version: 2.2.0.201706152316
+Save-Time: 5/23/18 5:14 PM
+Tags: skipExecution
 Testcase-Type: ecl
 
+------=_.content-0a7243a0-75d3-3d5f-9791-539de0e5b7ac
+Content-Type: text/ecl
+Entry-Name: .content
+
+get-view "Model Explorer" | get-tree | select "TestProject/League America/Player Jonas" | double-click
+get-editor "Player Jonas" | get-table -after [get-label "Number Of Victories"] | get-property itemCount | equals 0 
+    | verify-true
+get-editor "Player Jonas" | get-button "Add Entry" -after [get-label "Number Of Victories"] | click
+get-editor "Player Jonas" | get-table -after [get-label "Number Of Victories"] | get-item -path Pro 
+    | get-property caption | equals Pro | verify-true
+with [get-editor "Player Jonas" | get-table -after [get-label "Number Of Victories"]] {
+    select Pro | activate-cell-edit -type MouseClickSelection
+    get-combo | select Amateur
+    apply-cell-edit -deactivate
+}
+get-editor "Player Jonas" | get-table -after [get-label "Number Of Victories"] | get-item -path Amateur 
+    | get-property index | equals 0 | verify-true
+get-editor "Player Jonas" | get-button "Add Entry" -after [get-label "Number Of Victories"] | click
+with [get-editor "Player Jonas" | get-table -after [get-label "Number Of Victories"]] {
+    get-property itemCount | equals 2 | verify-true
+    get-item -path Pro | get-property index | equals 1 | verify-true
+}
+with [get-editor "Player Jonas"] {
+    with [get-table -after [get-label "Number Of Victories"]] {
+        select Pro | activate-cell-edit -type MouseClickSelection
+        apply-cell-edit -deactivate
+    }
+    get-button -after [get-label "Number Of Victories"] | click
+}
+with [get-editor "Player Jonas" | get-table -after [get-label "Number Of Victories"]] {
+    get-item -path Pro | get-property index | equals 0 | verify-true
+    get-item -path Amateur | get-property index | equals 1 | verify-true
+}
+with [get-editor "Player Jonas"] {
+    get-button -after [get-label "Number Of Victories"] -index 3 | click
+    get-button "Add Entry" -after [get-label "Number Of Victories"] | click
+}
+with [get-editor "Player Jonas" | get-table -after [get-label "Number Of Victories"]] {
+    get-property itemCount | equals 2 | verify-true
+    get-item -path Pro | get-property index | equals 1 | verify-true
+    get-item -path Amateur | get-property index | equals 0 | verify-true
+}
+------=_.content-0a7243a0-75d3-3d5f-9791-539de0e5b7ac--
diff --git a/tests/ECPQ7Tests/NonEPPTests/Editor/Multicontrols/MultiInt.test b/tests/ECPQ7Tests/NonEPPTests/Editor/Multicontrols/MultiInt.test
index 85c1054..97b244e 100644
--- a/tests/ECPQ7Tests/NonEPPTests/Editor/Multicontrols/MultiInt.test
+++ b/tests/ECPQ7Tests/NonEPPTests/Editor/Multicontrols/MultiInt.test
@@ -6,145 +6,113 @@
 Element-Version: 3.0
 External-Reference: 
 Id: _YJbUcHXJEeK2tZkPdpUavQ
-Runtime-Version: 1.5.4.201410231434
-Save-Time: 12/5/14 4:56 PM
+Runtime-Version: 2.2.0.201706152316
+Save-Time: 5/23/18 1:59 PM
 Testcase-Type: ecl
 
 ------=_.content-0a7243a0-75d3-3d5f-9791-539de0e5b7ac
 Content-Type: text/ecl
 Entry-Name: .content
 
-get-view "Model Explorer" | get-tree | select "TestProject \\[trunk, Version 0\\]/Tournament Pro/Matchup/Game" | double-click
-get-editor Game | get-control Any -after [get-link "<a>Player Jonas</a>"] -index 14  | get-property "getChildren().length" | equals 0 | verify-true
-get-editor Game | get-button "Add Entry" | click
-get-editor Game | get-control Any -after [get-link "<a>Player Jonas</a>"] -index 14  | get-property "getChildren().length" | equals 1 | verify-true
-get-editor Game | get-button "Add Entry" | click
-get-editor Game | get-control Any -after [get-link "<a>Player Jonas</a>"] -index 14  | get-property "getChildren().length" | equals 2 | verify-true
-with [get-editor Game] {
-    get-editbox -after [get-label Frames] | get-property text | equals 0 | verify-true
-    get-editbox -after [get-label Frames] -index 1 | get-property text | equals 0 | verify-true
-}
-with [get-editor Game] {
-    get-button "Add Entry" | click
-    get-editbox -after [get-label Frames] | set-text 1
-    get-editbox -after [get-label Frames] -index 1 | set-text 2
-    get-editbox -after [get-label Frames] -index 2 | set-text 3
-}
-get-editor Game | close
-with [get-view "Model Explorer" | get-tree] {
-    select "TestProject \\[trunk, Version 0\\]/Tournament Pro/Matchup/Game" | double-click
-    select "TestProject \\[trunk, Version 0\\]/Tournament Pro/Matchup/Game" | double-click
-    select "TestProject \\[trunk, Version 0\\]/Tournament Pro/Matchup" | double-click
-}
-get-editor Game | click
-with [get-editor Game -type "Model Element Editor"] {
-    get-control Any -after [get-link "<a>Player Jonas</a>"] -index 14  | get-property "getChildren().length" | equals 3 | verify-true
-    get-editbox -after [get-label Frames] | get-property text | equals 1 | verify-true
-    get-editbox -after [get-label Frames] -index 1 | get-property text | equals 2 | verify-true
-    get-editbox -after [get-label Frames] -index 2 | get-property text | equals 3 | verify-true
-}
-get-editor Game | get-button -after [get-label Frames] -index 8 | click
-with [get-editor Game] {
-    get-editbox -after [get-label Frames] | get-property text | equals 1 | verify-true
-    get-editbox -after [get-label Frames] -index 1 | get-property text | equals 3 | verify-true
-    get-editbox -after [get-label Frames] -index 2 | get-property text | equals 2 | verify-true
-}
-with [get-editor Game] {
-    get-button -after [get-label Frames] -index 5 | click
-    get-button -after [get-label Frames] -index 8 | click
-}
-with [get-editor Game] {
-    get-editbox -after [get-label Frames] | get-property text | equals 3 | verify-true
-    get-editbox -after [get-label Frames] -index 1 | get-property text | equals 2 | verify-true
-    get-editbox -after [get-label Frames] -index 2 | get-property text | equals 1 | verify-true
-}
-get-editor Matchup | click
-with [get-editor Game] {
-    click
-    get-button "Add Entry" | click
-    get-editbox -after [get-label Frames] -index 3 | set-text 99999999999999999999
-    get-editbox -after [get-label Frames] -index 2 | click-text 2
-}
-/*
-with [get-editor Game | get-editbox -after [get-label Frames] -index 3] {
-    get-property "decorators.visible" -index 0 | equals true | verify-true
-    get-property "decorators.description" -index 0 | equals "Please enter a value between [-2,147,483,648] and [2,147,483,647] and with a similar format." | verify-true
-}
-*/
-get-editor Game | close
-get-view "Model Explorer" | get-tree | select "TestProject \\[trunk, Version 0\\]/Tournament Pro/Matchup/Game" | double-click
-get-editor Game | get-editbox -after [get-label Frames] -index 3 | get-property text | equals 0 | verify-true
-with [get-editor Game] {
-    get-button -after [get-label Frames] -index 4 | click
-    get-button -after [get-label Frames] -index 1 | click
-}
-with [get-editor Game] {
-    get-control Any -after [get-link "<a>Player Jonas</a>"] -index 14  | get-property "getChildren().length" | equals 2 | verify-true
-    get-editbox -after [get-label Frames] | get-property text | equals 1 | verify-true
-    get-editbox -after [get-label Frames] -index 1 | get-property text | equals 0 | verify-true
-}
-with [get-editor Game] {
-    get-button -after [get-label Frames] -index 4 | click
-    get-button -after [get-label Frames] -index 1 | click
-}
-get-editor Game | get-control Any -after [get-link "<a>Player Jonas</a>"] -index 14  | get-property "getChildren().length" | equals 0 | verify-true
-get-editor Game | close
-get-editor Matchup | close
-with [get-view "Model Explorer" | get-tree] {
-    select "TestProjectSecondCheckOut \\[trunk, Version 0\\]/League America/Player Jonas" | double-click
-    select "TestProjectSecondCheckOut \\[trunk, Version 0\\]/Tournament Pro/Matchup/Game" | double-click
-}
-get-editor "Player Jonas" | close
+get-view "Model Explorer" | get-tree | select "TestProject \\[trunk, Version 0\\]/Tournament Pro/Matchup/Game" 
+    | double-click
+get-editor Game | get-table | get-property itemCount | equals 0 | verify-true
 with [get-editor Game] {
     with [get-button "Add Entry"] {
         click
         click
+    }
+    with [get-table] {
+        select 0 | activate-cell-edit -type MouseClickSelection
+        with [get-editbox] {
+            set-text 01
+            set-text 1
+        }
+        select [get-item -path 0 -index 1] | apply-cell-edit -deactivate
+        select 0 | activate-cell-edit -type MouseClickSelection
+        get-editbox | set-text 2
+        apply-cell-edit -deactivate
+        select 2 | activate-cell-edit -type MouseClickSelection
+        apply-cell-edit -deactivate
+    }
+}
+with [get-editor Game | get-table] {
+    get-item -path 1 | get-property index | equals 0 | verify-true
+    get-item -path 2 | get-property index | equals 1 | verify-true
+}
+get-editor Game | get-button -after [get-link "<a>Player Jonas</a>"] -index 3 | click
+with [get-editor Game | get-table] {
+    get-item -path 2 | get-property index | equals 0 | verify-true
+    get-item -path 1 | get-property index | equals 1 | verify-true
+}
+with [get-editor Game] {
+    get-button "Add Entry" | click
+    with [get-table] {
+        select 0 | activate-cell-edit -type MouseClickSelection
+        with [get-editbox] {
+            set-text 03
+            set-text 3
+        }
+        apply-cell-edit -deactivate
+    }
+    with [get-button -after [get-link "<a>Player Jonas</a>"] -index 3] {
         click
         click
     }
-    get-editbox -after [get-label Frames] | set-text 1
-    get-editbox -after [get-label Frames] -index 1 | set-text 2
-    get-editbox -after [get-label Frames] -index 2 | set-text 3
-    get-editbox -after [get-label Frames] -index 3 | set-text A
 }
-get-window "Invalid Number" | get-label "The Number you have entered is invalid. The value will be unset." 
-    | get-property caption | equals "The Number you have entered is invalid. The value will be unset." | verify-true
+with [get-editor Game | get-table] {
+    get-item -path 3 | get-property index | equals 0 | verify-true
+    get-item -path 1 | get-property index | equals 2 | verify-true
+}
+with [get-editor Game] {
+    with [get-table] {
+        select 1 | activate-cell-edit -type MouseClickSelection
+        cancel-cell-edit
+        cancel-cell-edit
+        deactivate-cell-edit
+    }
+    get-button -after [get-link "<a>Player Jonas</a>"] -index 6 | click
+    with [get-table] {
+        select 3 | activate-cell-edit -type MouseClickSelection
+        apply-cell-edit -deactivate
+    }
+    get-button -after [get-link "<a>Player Jonas</a>"] -index 6 | click
+}
+with [get-editor Game | get-table] {
+    get-property itemCount | equals 1 | verify-true
+    get-item -path 2 | get-property index | equals 0 | verify-true
+}
+with [get-editor Game] {
+    get-button "Add Entry" | click
+    with [get-table] {
+        select 0 | activate-cell-edit -type MouseClickSelection
+        get-editbox | set-text AAA
+        apply-cell-edit
+    }
+}
 get-window "Invalid Number" | get-button OK | click
-get-editor Game | get-editbox -after [get-label Frames] -index 3 | get-property text | equals 0 | verify-true
-get-view "Model Explorer" | get-tree | select "TestProjectSecondCheckOut \\[trunk, Version 0\\]" | get-menu Commit | click
+with [get-editor Game | get-table] {
+    deactivate-cell-edit
+    select 0 | activate-cell-edit -type MouseClickSelection
+    get-editbox | set-text 9999999
+    apply-cell-edit -deactivate
+    select 9999999 | activate-cell-edit -type MouseClickSelection
+    get-editbox | set-text AAADDD
+    apply-cell-edit
+}
+get-window "Invalid Number" | get-button OK | click
+get-editor Game | get-table | deactivate-cell-edit
+get-view "Model Explorer" | get-tree | select "TestProject [trunk, Version 0]" | get-menu -path Commit | click
 get-window Commit | get-button OK | click
-
-with [get-view "Model Explorer" | get-tree] {
-    select "TestProject \\[trunk, Version 0\\]/Tournament Pro/Matchup/Game" | double-click
-    select "TestProject \\[trunk, Version 0\\]" | get-menu Update | click
-}
+get-view "Model Explorer" | get-tree 
+    | select "TestProjectSecondCheckOut \\[trunk, Version 0\\]/Tournament Pro/Matchup/Game" | double-click
+get-editor Game -index 1 | get-table | get-property itemCount | equals 0 | verify-true
+get-view "Model Explorer" | get-tree | select "TestProjectSecondCheckOut [trunk, Version 0]" | get-menu -path Update 
+    | click
 get-window Update | get-button OK | click
-with [get-window "Merge Wizard"] {
-    get-button "Keep All Their Changes" | click
-    get-button Finish | click
-}
-with [get-editor Game] {
-    get-editbox -after [get-label Frames] | get-property text | equals 1 | verify-true
-    get-editbox -after [get-label Frames] -index 1 | get-property text | equals 2 | verify-true
-    get-editbox -after [get-label Frames] -index 2 | get-property text | equals 3 | verify-true
-    get-editbox -after [get-label Frames] -index 3 | get-property text | equals 0 | verify-true
-}
-
-with [get-editor Game] {
-    get-button -after [get-label Frames] -index 4 | click
-    get-button -after [get-label Frames] -index 8 | click
-    get-editbox -after [get-label Frames] | set-text 2
-    get-editbox -after [get-label Frames] -index 1 | set-text 10
-    get-editbox -after [get-label Frames] -index 2 | set-text 33
-}
-get-view "Model Explorer" | get-tree | select "TestProjectSecondCheckOut \\[trunk, Version 1\\]" 
-    | get-menu "Revert All Operations" | click
-get-window Confirmation | get-button Yes | click
-get-window Revert | get-button OK | click
-with [get-editor Game] {
-    get-editbox -after [get-label Frames] | get-property text | equals 1 | verify-true
-    get-editbox -after [get-label Frames] -index 1 | get-property text | equals 2 | verify-true
-    get-editbox -after [get-label Frames] -index 2 | get-property text | equals 3 | verify-true
-    get-editbox -after [get-label Frames] -index 3 | get-property text | equals 0 | verify-true
+with [get-editor Game -index 1 | get-table] {
+    get-property itemCount | equals 2 | verify-true
+    get-item -path 9999999 | get-property caption | equals 9999999 | verify-true
+    get-item -path 2 | get-property caption | equals 2 | verify-true
 }
 ------=_.content-0a7243a0-75d3-3d5f-9791-539de0e5b7ac--
diff --git a/tests/ECPQ7Tests/NonEPPTests/Editor/Multicontrols/MultiString.test b/tests/ECPQ7Tests/NonEPPTests/Editor/Multicontrols/MultiString.test
index a34aac9..be4debd 100644
--- a/tests/ECPQ7Tests/NonEPPTests/Editor/Multicontrols/MultiString.test
+++ b/tests/ECPQ7Tests/NonEPPTests/Editor/Multicontrols/MultiString.test
@@ -1,187 +1,58 @@
---- Q7 testcase ---
+--- RCPTT testcase ---
 Format-Version: 1.0
-Q7-vendor: www.xored.com/q7
-Contexts: _mY5uUKEgEeKX8e34E6tWIg,_rr2EEFpSEeKcnaHGSt8OwA,_f3qEUVpSEeKcnaHGSt8OwA,_IuFcgFpZEeKcnaHGSt8OwA,__UtTgD-XEeK-yuKsz0Lang
+Contexts: _mY5uUKEgEeKX8e34E6tWIg,_rr2EEFpSEeKcnaHGSt8OwA,_f3qEUVpSEeKcnaHGSt8OwA,_IuFcgFpZEeKcnaHGSt8OwA,_YQj0cT-VEeK-yuKsz0Lang
 Element-Name: MultiString
 Element-Type: testcase
 Element-Version: 3.0
 External-Reference: 
 Id: _l3nLwHHkEeKndsdNMEr_UQ
-Q7-Runtime-Version: 1.3.10.201312200736
-Save-Time: 2/3/14 1:05 PM
+Runtime-Version: 2.2.0.201706152316
+Save-Time: 5/23/18 3:59 PM
 Testcase-Type: ecl
 
 ------=_.content-0a7243a0-75d3-3d5f-9791-539de0e5b7ac
 Content-Type: text/ecl
 Entry-Name: .content
 
-get-view "Model Explorer" | get-tree | select "TestProject \\[trunk, Version 0\\]/League America/Player Jonas" | double-click
-get-editor "Player Jonas" | get-button -after [get-label "EMails*"] -index 1 | click
+get-view "Model Explorer" | get-tree | select "TestProject/League America/Player Jonas" | double-click
 with [get-editor "Player Jonas"] {
-    click
-    close
-}
-get-view "Model Explorer" | get-tree | select "TestProject \\[trunk, Version 0\\]/League America/Player Jonas" | double-click
-get-editor "Player Jonas" | get-button "Add Entry" | get-property enablement | equals true | verify-true
-get-editor "Player Jonas" | get-button "Add Entry" | click
-get-editor "Player Jonas" | get-editbox -after [get-label "EMails.*"] | get-property text | equals "" | verify-true
-get-editor "Player Jonas" | get-button "Add Entry" | click
-with [get-editor "Player Jonas"] {
-    with [get-editbox -after [get-label "EMails.*"]] {
-        set-text "eins@zwei.drei"
+    get-button "Add Entry" | click
+    with [get-table] {
+        select "" | activate-cell-edit -type MouseClickSelection
+        get-editbox | set-text "foo@bar.com"
+        apply-cell-edit -deactivate
     }
-    close
 }
-get-view "Model Explorer" | get-tree | select "TestProject \\[trunk, Version 0\\]/League America/Player Jonas" | double-click
-get-editor "Player Jonas" | get-editbox -after [get-label "EMails.*"] | get-property text | equals "eins@zwei.drei" 
-    | verify-true
-get-editor "Player Jonas" | get-button "Add Entry" | click
-get-editor "Player Jonas" | get-editbox -after [get-label "EMails.*"] -index 1 | get-property text | equals "" | verify-true
-with [get-editor "Player Jonas" | get-editbox -after [get-label "EMails.*"] -index 1] {
-    set-text "vier@fuenf.sechs"
-}
-get-editor "Player Jonas" | get-editbox -after [get-label "EMails.*"] -index 1 | get-property text 
-    | equals "vier@fuenf.sechs" | verify-true
-get-view "Model Explorer" | get-tree | select "TestProject \\[trunk, Version 0\\]/League America/Player Maximilian" | double-click
+get-editor "Player Jonas" | get-table | get-property itemCount | equals 2 | verify-true
 with [get-editor "Player Jonas"] {
-    click
-    close
-}
-get-editor "Player Maximilian" | close
-get-view "Model Explorer" | get-tree | select "TestProject \\[trunk, Version 0\\]/League America/Player Jonas" | double-click
-with [get-editor "Player Jonas"] {
-    get-editbox -after [get-label "EMails.*"] | get-property text | equals "eins@zwei.drei" | verify-true
-    get-editbox -after [get-label "EMails.*"] -index 1 | get-property text | equals "vier@fuenf.sechs" | verify-true
-}
-with [get-editor "Player Jonas"] {
-    get-button "Add Entry" | click
-    with [get-editbox -after [get-label "EMails.*"] -index 2] {
-        set-text "sieben@acht.neun"
+    get-button -after [get-label "Is Professional"] -index 1 | click
+    with [get-table] {
+        select "jonas@helming.de" | activate-cell-edit -type MouseClickSelection
+        apply-cell-edit -deactivate
     }
-    get-editbox -after [get-label "EMails.*"] -index 1 | click-text 17
+    get-button -after [get-label "Is Professional"] -index 4 | click
 }
-with [get-editor "Player Jonas"] { 
-    get-editbox -after [get-label "EMails.*"] | get-property text | equals "eins@zwei.drei" | verify-true
-    get-editbox -after [get-label "EMails.*"] -index 1 | get-property text | equals "vier@fuenf.sechs" | verify-true
-    get-editbox -after [get-label "EMails.*"] -index 2 | get-property text | equals "sieben@acht.neun" | verify-true
-}
-get-editor "Player Jonas" | get-button -after [get-label "EMails.*"] -index 5 | click
-with [get-editor "Player Jonas"] {
-    get-editbox -after [get-label "EMails.*"] | get-property text | equals "vier@fuenf.sechs" | verify-true
-    get-editbox -after [get-label "EMails.*"] -index 1 | get-property text | equals "eins@zwei.drei" | verify-true
-    get-editbox -after [get-label "EMails.*"] -index 2 | get-property text | equals "sieben@acht.neun" | verify-true
-}
-get-editor "Player Jonas" | get-button -after [get-label "EMails.*"] -index 8 | click
-with [get-editor "Player Jonas"] {
-    get-editbox -after [get-label "EMails.*"] | get-property text | equals "vier@fuenf.sechs" | verify-true
-    get-editbox -after [get-label "EMails.*"] -index 1 | get-property text | equals "sieben@acht.neun" | verify-true
-    get-editbox -after [get-label "EMails.*"] -index 2 | get-property text | equals "eins@zwei.drei" | verify-true
+with [get-editor "Player Jonas" | get-table] {
+    get-property itemCount | equals 1 | verify-true
+    get-item -path "foo@bar.com" | get-property caption | equals "foo@bar.com" | verify-true
 }
 with [get-editor "Player Jonas"] {
-    get-button -after [get-label "EMails.*"] -index 3 | click
-    get-button -after [get-label "EMails.*"] -index 6 | click
-}
-with [get-editor "Player Jonas"] {
-    get-editbox -after [get-label "EMails.*"] -index 2 | get-property text | equals "vier@fuenf.sechs" | verify-true
-    get-editbox -after [get-label "EMails.*"] -index 1 | get-property text | equals "eins@zwei.drei" | verify-true
-    get-editbox -after [get-label "EMails.*"] | get-property text | equals "sieben@acht.neun" | verify-true
-}
-get-editor "Player Jonas" | get-control Any -after [get-label "EMails.*"] -index 10 | get-property "getChildren().length" | equals 3 | verify-true
-get-editor "Player Jonas" | get-button -after [get-label "EMails.*"] -index 7 | click
-get-editor "Player Jonas" | get-control Any -after [get-label "EMails.*"] -index 10 | get-property "getChildren().length" | equals 2 | verify-true
-get-editor "Player Jonas" | get-button -after [get-label "EMails.*"] -index 1 | click
-with [get-editor "Player Jonas"] {
-    get-editbox -after [get-label "EMails.*"] | get-property text | equals "eins@zwei.drei" | verify-true
-    get-control Any -index 60 -after [get-label "EMails.*"] -index 10 | get-property "getChildren().length" | equals 1 | verify-true
-}
-with [get-editor "Player Jonas"] {
-    get-button -after [get-label "EMails.*"] -index 1 | click
-    close
-}
-get-view "Model Explorer" | get-tree | select "TestProject \\[trunk, Version 0\\]/League America/Player Jonas" | double-click
-get-editor "Player Jonas" | get-control Any -after [get-label "EMails.*"] -index 10 | get-property "getChildren().length" | equals 0 | verify-true
-
-
-get-editor "Player Jonas" | close
-get-view "Model Explorer" | get-tree | select "TestProject \\[trunk, Version 0\\]" | get-menu "Revert All Operations" | click
-get-window Confirmation | get-button Yes | click
-get-window Revert | get-button OK | click
-get-view "Model Explorer" | get-tree | select "TestProjectSecondCheckOut \\[trunk, Version 0\\]/League America/Player Jonas" | double-click
-with [get-editor "Player Jonas"] {
-    get-button "Add Entry" | click
-    get-editbox -after [get-label "EMails.*"] | set-text a
-    get-editbox -after [get-label Height] | click-text 1
-    get-button "Add Entry" | click
-    get-editbox -after [get-label "EMails.*"] -index 1 | set-text b
-    get-editbox -after [get-label "EMails.*"] | click-text 1
-    get-button "Add Entry" | click
-    get-editbox -after [get-label "EMails.*"] -index 2 | set-text c
-    get-editbox -after [get-label "EMails.*"] -index 1 | click-text 1
-    get-button "Add Entry" | click
-    get-editbox -after [get-label "EMails.*"] -index 3 | set-text d
-    get-button "Add Entry" | click
-    get-editbox -after [get-label "EMails.*"] -index 2 | click-text 1
-    get-button "Add Entry" | click
-    get-editbox -after [get-label "EMails.*"] -index 4 | set-text e
-    get-editbox -after [get-label "EMails.*"] -index 3 | click-text 1
-    
-}
-
-
-with [get-editor "Player Jonas"] {
-    get-button -after [get-label "EMails.*"] -index 3 | click
-    get-button -after [get-label "EMails.*"] -index 6 | click
-    get-button -after [get-label "EMails.*"] -index 14 | click
-    with [get-button -after [get-label "EMails.*"] -index 11] {
+    with [get-button "Add Entry"] {
         click
         click
     }
-    get-button -after [get-label "EMails.*"] -index 8 | click
-    get-button -after [get-label "EMails.*"] -index 9 | click
-    with [get-button -after [get-label "EMails.*"] -index 12] {
-        click
-        click
+    with [get-table] {
+        select "" | activate-cell-edit -type MouseClickSelection
+        get-editbox | set-text xxx
+        apply-cell-edit -deactivate
     }
-    get-button -after [get-label "EMails.*"] -index 5 | click
-}
-get-view "Model Explorer" | get-tree | select "TestProjectSecondCheckOut \\[trunk, Version 0\\]" | get-menu Commit | click
-get-window Commit | get-button OK | click
-get-view "Model Explorer" | get-tree | select "TestProject \\[trunk, Version 0\\]/League America/Player Jonas" | double-click
-get-editor "Player Jonas" | close
-get-view "Model Explorer" | get-tree | select "TestProject \\[trunk, Version 0\\]" | get-menu Update | click
-get-window Update | get-button OK | click
-with [get-editor "Player Jonas"] {
-    get-editbox -after [get-label "EMails.*"] | get-property text | equals a | verify-true
-    get-editbox -after [get-label "EMails.*"] -index 1 | get-property text | equals b | verify-true
-    get-editbox -after [get-label "EMails.*"] -index 2 | get-property text | equals e | verify-true
-    get-editbox -after [get-label "EMails.*"] -index 3 | get-property text | equals c | verify-true
-    get-editbox -after [get-label "EMails.*"] -index 4 | get-property text | equals d | verify-true
-}
-with [get-editor "Player Jonas"] {
-    with [get-editbox -after [get-label "EMails*"]] {
-        click-text 1
-        key-type "M1+M3+q" "@"
-        set-text "a@foobar.com"
+    get-button "Add Entry" | click
+    with [get-table] {
+        select "" | activate-cell-edit -type MouseClickSelection
+        get-editbox | set-text aaaa
+        apply-cell-edit -deactivate
     }
-    with [get-editbox -after [get-label "EMails*"] -index 1] {
-        click-text 1
-        key-type "M1+M3+q" "@"
-        set-text "b@foobar.com"
-    }
-    get-button -after [get-label "EMails*"] -index 10 | click
-    get-button -after [get-label "EMails*"] -index 8 | click
-    get-button -after [get-label "EMails*"] -index 5 | click
-    get-button -after [get-label "EMails*"] -index 9 | click
+    get-button -after [get-label "Is Professional"] -index 1 | click
 }
-get-view "Model Explorer" | get-tree | select "TestProject \\[trunk, Version 1\\]" | get-menu "Revert All Operations" 
-    | click
-get-window Confirmation | get-button Yes | click
-get-window Revert | get-button OK | click
-with [get-editor "Player Jonas"] {
-    get-editbox -after [get-label "EMails*"] | get-property text | equals a | verify-true
-    get-editbox -after [get-label "EMails*"] -index 1 | get-property text | equals b | verify-true
-    get-editbox -after [get-label "EMails*"] -index 2 | get-property text | equals e | verify-true
-    get-editbox -after [get-label "EMails*"] -index 3 | get-property text | equals c | verify-true
-    get-editbox -after [get-label "EMails*"] -index 4 | get-property text | equals d | verify-true
-}
+get-editor "Player Jonas" | get-table | get-property itemCount | equals 3 | verify-true
 ------=_.content-0a7243a0-75d3-3d5f-9791-539de0e5b7ac--
diff --git a/tests/ECPQ7Tests/NonEPPTests/context/CreateBasicElements.ctx b/tests/ECPQ7Tests/NonEPPTests/context/CreateBasicElements.ctx
index df6f720..891cce0 100644
--- a/tests/ECPQ7Tests/NonEPPTests/context/CreateBasicElements.ctx
+++ b/tests/ECPQ7Tests/NonEPPTests/context/CreateBasicElements.ctx
@@ -1,13 +1,12 @@
---- Q7 testcase ---
+--- RCPTT testcase ---
 Format-Version: 1.0
-Q7-vendor: www.xored.com/q7
-Context-Type: com.xored.q7.ecl.context
+Context-Type: org.eclipse.rcptt.ctx.ecl
 Element-Name: CreateBasicElements
 Element-Type: context
 Element-Version: 2.0
 Id: _YQj0cT-VEeK-yuKsz0Lang
-Q7-Runtime-Version: 1.3.10.201312200736
-Save-Time: 2/11/14 1:25 PM
+Runtime-Version: 2.2.0.201706152316
+Save-Time: 5/23/18 3:31 PM
 
 ------=_.ecl.context-718f04b4-ed39-33e3-af62-0995e4561998
 Content-Type: text/ecl
@@ -61,21 +60,21 @@
 get-view "Model Explorer" | get-tree | select "TestProject/League America/Player Jonas" | double-click
 with [get-editor "Player Jonas"] {
     get-button "Add Entry" | click
-    with [get-editbox -after [get-label "EMails*"]] {
-        set-text jonas
-        key-type "M1+M3+q" "@"
-        set-text "jonas@helming.de"
+    with [get-table] {
+        select "" | activate-cell-edit -type MouseClickSelection
+        get-editbox | set-text "jonas@helming.de"
+        apply-cell-edit -deactivate
     }
 }
+
 get-view "Model Explorer" | get-tree | select "TestProject/League America/Player Maximilian" | double-click
 with [get-editor "Player Maximilian"] {
     get-button "Add Entry" | click
-    with [get-editbox -after [get-label "EMails*"]] {
-        set-text maximilina
-        key-type "M1+M3+q" "@"
-        set-text "maximilina@koegel.de"
+    with [get-table] {
+        select "" | activate-cell-edit -type MouseClickSelection
+        get-editbox | set-text "maximilina@koegel.de"
+        apply-cell-edit -deactivate
     }
-    get-editbox -after [get-label Name] | click-text 1
     close
 }
 get-editor "Player Jonas" | close
diff --git a/tests/ECPQ7Tests/NonEPPTests/context/CreateTwoCheckOuts.ctx b/tests/ECPQ7Tests/NonEPPTests/context/CreateTwoCheckOuts.ctx
index ab1ebb6..ee808c0 100644
--- a/tests/ECPQ7Tests/NonEPPTests/context/CreateTwoCheckOuts.ctx
+++ b/tests/ECPQ7Tests/NonEPPTests/context/CreateTwoCheckOuts.ctx
@@ -6,7 +6,7 @@
 Element-Version: 2.0
 Id: __UtTgD-XEeK-yuKsz0Lang
 Runtime-Version: 2.2.0.201706152316
-Save-Time: 7/7/17 12:47 PM
+Save-Time: 5/23/18 12:39 PM
 
 ------=_.ecl.context-718f04b4-ed39-33e3-af62-0995e4561998
 Content-Type: text/ecl
@@ -60,21 +60,21 @@
 get-view "Model Explorer" | get-tree | select "TestProject/League America/Player Jonas" | double-click
 with [get-editor "Player Jonas"] {
     get-button "Add Entry" | click
-    with [get-editbox -after [get-label "EMails*"]] {
-        set-text jonas
-        key-type "M1+M3+q" "@"
-        set-text "jonas@helming.de"
+    with [get-table] {
+        select "" | activate-cell-edit -type MouseClickSelection
+        get-editbox | set-text "jonas@helming.de"
+        apply-cell-edit -deactivate
     }
 }
+
 get-view "Model Explorer" | get-tree | select "TestProject/League America/Player Maximilian" | double-click
 with [get-editor "Player Maximilian"] {
     get-button "Add Entry" | click
-    with [get-editbox -after [get-label "EMails*"]] {
-        set-text maximilina
-        key-type "M1+M3+q" "@"
-        set-text "maximilina@koegel.de"
+    with [get-table] {
+        select "" | activate-cell-edit -type MouseClickSelection
+        get-editbox | set-text "maximilina@koegel.de"
+        apply-cell-edit -deactivate
     }
-    get-editbox -after [get-label Name] | click-text 1
     close
 }
 get-editor "Player Jonas" | close
diff --git a/tests/ECPQ7Tests/NonEPPTests/context/SetupViewmodelObjects.ctx b/tests/ECPQ7Tests/NonEPPTests/context/SetupViewmodelObjects.ctx
index c65ad6d..861dc1e 100644
--- a/tests/ECPQ7Tests/NonEPPTests/context/SetupViewmodelObjects.ctx
+++ b/tests/ECPQ7Tests/NonEPPTests/context/SetupViewmodelObjects.ctx
@@ -1,13 +1,12 @@
---- Q7 testcase ---
+--- RCPTT testcase ---
 Format-Version: 1.0
-Q7-vendor: www.xored.com/q7
-Context-Type: com.xored.q7.ecl.context
+Context-Type: org.eclipse.rcptt.ctx.ecl
 Element-Name: SetupViewmodelObjects
 Element-Type: context
 Element-Version: 2.0
 Id: _T7Yg8DstEeOHj9Cw0T_k4Q
-Q7-Runtime-Version: 1.3.10.201312200736
-Save-Time: 2/11/14 1:29 PM
+Runtime-Version: 2.2.0.201706152316
+Save-Time: 5/23/18 2:15 PM
 
 ------=_.ecl.context-718f04b4-ed39-33e3-af62-0995e4561998
 Content-Type: text/ecl
@@ -30,16 +29,17 @@
 get-editor Player | get-editbox -after [get-label Name] | set-text John
 with [get-editor "Player John"] {
     get-button "Add Entry" | click
-    with [get-editbox -after [get-label "EMails*"]] {
-        set-text "John@smith.de"
+    with [get-table] {
+        select "" | activate-cell-edit -type MouseClickSelection
+		get-editbox | set-text "John@smith.de"
+        apply-cell-edit -deactivate
     }
     with [get-button -after [get-label "Is Professional"]] {
         check
     }
     get-editbox -after [get-label Height] | set-text "1.75"
     get-editbox -after [get-label "Number Of Victories"] | set-text 6
-    get-button "Add Entry" -after [get-label "Played Tournament Types"] | click
-    get-combo -after [get-label "Played Tournament Types"] | select Pro
+    get-editor "Player John" | get-button "Add Entry" -after [get-label "Number Of Victories"] | click
     get-editbox -after [get-label "Win Loss Ratio"] | set-text "2.5"
     get-combo -after [get-label Gender] | select Male
 }
diff --git a/tests/ECPQ7Tests/pom.xml b/tests/ECPQ7Tests/pom.xml
index 89de982..36bc0a5 100644
--- a/tests/ECPQ7Tests/pom.xml
+++ b/tests/ECPQ7Tests/pom.xml
@@ -8,9 +8,9 @@
 	<packaging>pom</packaging>
 
 	<properties>
-		<rcptt-runner-version>2.2.0</rcptt-runner-version>
-		<rcptt-maven-version>2.2.0</rcptt-maven-version>
-		<build_job>ecp-develop-nightly</build_job>
+		<rcptt-runner-version>2.3.0-SNAPSHOT</rcptt-runner-version>
+		<rcptt-maven-version>2.3.0-SNAPSHOT</rcptt-maven-version>
+		<build_job>ecp-develop-full</build_job>
 		<currentBuild>https://hudson.eclipse.org/ecp/job/${build_job}/lastSuccessfulBuild/artifact/releng/</currentBuild>
 		<jacoco-version>0.7.9</jacoco-version>
 	</properties> 
diff --git a/tests/org.eclipse.emf.ecp.changebroker.provider.test/META-INF/MANIFEST.MF b/tests/org.eclipse.emf.ecp.changebroker.provider.test/META-INF/MANIFEST.MF
index ef24380..adbb687 100644
--- a/tests/org.eclipse.emf.ecp.changebroker.provider.test/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.emf.ecp.changebroker.provider.test/META-INF/MANIFEST.MF
@@ -2,11 +2,12 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: ECP Change Broker EMFStore Provider Tests
 Bundle-SymbolicName: org.eclipse.emf.ecp.changebroker.provider.test
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Fragment-Host: org.eclipse.emf.ecp.changebroker.provider;bundle-version="[1.16.0,1.17.0)"
-Export-Package: org.eclipse.emf.ecp.changebroker.provider.test;version="1.16.0";x-internal:=true
+Fragment-Host: org.eclipse.emf.ecp.changebroker.provider;bundle-version="[1.17.0,1.18.0]"
+Export-Package: org.eclipse.emf.ecp.changebroker.provider.test;version="1.17.0";x-internal:=true
 Require-Bundle: org.junit;bundle-version="[4.0.0,5.0.0)",
-  org.eclipse.osgi;bundle-version="[3.7.0,4.0.0)",
-  org.eclipse.emf.ecp.workspace.core;bundle-version="[1.16.0,1.17.0)"
+ org.eclipse.osgi;bundle-version="[3.7.0,4.0.0)",
+ org.eclipse.emf.ecp.workspace.core;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Automatic-Module-Name: org.eclipse.emf.ecp.changebroker.provider.test
diff --git a/tests/org.eclipse.emf.ecp.changebroker.provider.test/pom.xml b/tests/org.eclipse.emf.ecp.changebroker.provider.test/pom.xml
index aeb09c5..5e8310b 100644
--- a/tests/org.eclipse.emf.ecp.changebroker.provider.test/pom.xml
+++ b/tests/org.eclipse.emf.ecp.changebroker.provider.test/pom.xml
@@ -6,12 +6,12 @@
 	<parent>
 		<groupId>org.eclipse.emf.ecp</groupId>
 		<artifactId>ecp-tests-parent</artifactId>
-		<version>1.16.0-SNAPSHOT</version>
+		<version>1.17.0-SNAPSHOT</version>
 		<relativePath>../../releng/org.eclipse.emf.ecp.releng.tests/</relativePath>
 	</parent>
 	<groupId>org.eclipse.emf.ecp</groupId>
 	<artifactId>org.eclipse.emf.ecp.changebroker.provider.test</artifactId>
-	<version>1.16.0-SNAPSHOT</version>
+	<version>1.17.0-SNAPSHOT</version>
 	<packaging>eclipse-test-plugin</packaging>
 	
 		<build>
diff --git a/tests/org.eclipse.emf.ecp.changebroker.test/META-INF/MANIFEST.MF b/tests/org.eclipse.emf.ecp.changebroker.test/META-INF/MANIFEST.MF
index 901b42b..1434878 100644
--- a/tests/org.eclipse.emf.ecp.changebroker.test/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.emf.ecp.changebroker.test/META-INF/MANIFEST.MF
@@ -2,12 +2,13 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: ECP Change Broker Test
 Bundle-SymbolicName: org.eclipse.emf.ecp.changebroker.test
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Fragment-Host: org.eclipse.emf.ecp.changebroker;bundle-version="[1.16.0,1.17.0)"
-Export-Package: org.eclipse.emf.ecp.changebroker.test;version="1.16.0";x-internal:=true
+Fragment-Host: org.eclipse.emf.ecp.changebroker;bundle-version="[1.17.0,1.18.0]"
+Export-Package: org.eclipse.emf.ecp.changebroker.test;version="1.17.0";x-internal:=true
 Require-Bundle: org.junit;bundle-version="[4.0.0,5.0.0)",
   org.eclipse.emf.emfstore.examplemodel;bundle-version="[1.2.0,2.0.0)",
   org.eclipse.osgi;bundle-version="[3.7.0,4.0.0)",
   org.mockito.mockito-core-hamcrest-modified;bundle-version="[1.9.5,2.0.0)"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Automatic-Module-Name: org.eclipse.emf.ecp.changebroker.test
diff --git a/tests/org.eclipse.emf.ecp.changebroker.test/pom.xml b/tests/org.eclipse.emf.ecp.changebroker.test/pom.xml
index f4a8491..58a301b 100644
--- a/tests/org.eclipse.emf.ecp.changebroker.test/pom.xml
+++ b/tests/org.eclipse.emf.ecp.changebroker.test/pom.xml
@@ -6,12 +6,12 @@
 	<parent>
 		<groupId>org.eclipse.emf.ecp</groupId>
 		<artifactId>ecp-tests-parent</artifactId>
-		<version>1.16.0-SNAPSHOT</version>
+		<version>1.17.0-SNAPSHOT</version>
 		<relativePath>../../releng/org.eclipse.emf.ecp.releng.tests/</relativePath>
 	</parent>
 	<groupId>org.eclipse.emf.ecp</groupId>
 	<artifactId>org.eclipse.emf.ecp.changebroker.test</artifactId>
-	<version>1.16.0-SNAPSHOT</version>
+	<version>1.17.0-SNAPSHOT</version>
 	<packaging>eclipse-test-plugin</packaging>
 	
 		<build>
diff --git a/tests/org.eclipse.emf.ecp.common.test.fx/META-INF/MANIFEST.MF b/tests/org.eclipse.emf.ecp.common.test.fx/META-INF/MANIFEST.MF
index e90b264..b704c89 100644
--- a/tests/org.eclipse.emf.ecp.common.test.fx/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.emf.ecp.common.test.fx/META-INF/MANIFEST.MF
@@ -7,3 +7,4 @@
 Export-Package: org.eclipse.emf.ecp.common.test.fx;version="1.3.0"
 Require-Bundle: org.eclipse.core.databinding.observable;bundle-version="[1.4.0,2.0.0)"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Automatic-Module-Name: org.eclipse.emf.ecp.common.test.fx
diff --git a/tests/org.eclipse.emf.ecp.common.test/META-INF/MANIFEST.MF b/tests/org.eclipse.emf.ecp.common.test/META-INF/MANIFEST.MF
index 82bc981..5b54963 100644
--- a/tests/org.eclipse.emf.ecp.common.test/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.emf.ecp.common.test/META-INF/MANIFEST.MF
@@ -2,18 +2,19 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.emf.ecp.common.test;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-ClassPath: .
 Bundle-Vendor: %providerName
-Fragment-Host: org.eclipse.emf.ecp.common;bundle-version="[1.16.0,1.17.0)"
+Fragment-Host: org.eclipse.emf.ecp.common;bundle-version="[1.17.0,1.18.0]"
 Bundle-Localization: plugin
-Export-Package: org.eclipse.emf.ecp.common.spi;version="1.16.0",
-  org.eclipse.emf.ecp.common.test;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.common.test.model;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.common.test.model.impl;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.common.test.model.util;version="1.16.0";x-internal:=true
+Export-Package: org.eclipse.emf.ecp.common.spi;version="1.17.0",
+ org.eclipse.emf.ecp.common.test;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.common.test.model;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.common.test.model.impl;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.common.test.model.util;version="1.17.0";x-internal:=true
 Require-Bundle: org.junit;bundle-version="[4.0.0,5.0.0)",
   org.eclipse.core.runtime;bundle-version="[3.11.0,4.0.0)",
   org.eclipse.emf.ecore;bundle-version="[2.11.0,3.0.0)";visibility:=reexport
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.common.test
diff --git a/tests/org.eclipse.emf.ecp.common.test/pom.xml b/tests/org.eclipse.emf.ecp.common.test/pom.xml
index 723740e..eb8c959 100644
--- a/tests/org.eclipse.emf.ecp.common.test/pom.xml
+++ b/tests/org.eclipse.emf.ecp.common.test/pom.xml
@@ -6,12 +6,12 @@
 	<parent>
 		<groupId>org.eclipse.emf.ecp</groupId>
 		<artifactId>ecp-tests-parent</artifactId>
-		<version>1.16.0-SNAPSHOT</version>
+		<version>1.17.0-SNAPSHOT</version>
 		<relativePath>../../releng/org.eclipse.emf.ecp.releng.tests/</relativePath>
 	</parent>
 	<groupId>org.eclipse.emf.ecp</groupId>
 	<artifactId>org.eclipse.emf.ecp.common.test</artifactId>
-	<version>1.16.0-SNAPSHOT</version>
+	<version>1.17.0-SNAPSHOT</version>
 	<packaging>eclipse-test-plugin</packaging>
 
 	<!-- When signing bundles we get a security exception using maven-surefire. 
diff --git a/tests/org.eclipse.emf.ecp.common.ui.test/.checkstyle b/tests/org.eclipse.emf.ecp.common.ui.test/.checkstyle
new file mode 100644
index 0000000..24d357f
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.common.ui.test/.checkstyle
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<fileset-config file-format-version="1.2.0" simple-config="false" sync-formatter="false">
+  <local-check-config name="ESMCheckstyleTest" location="/org.eclipse.emf.ecp.releng/checkstyle/esmCheckstyleTest.xml" type="project" description="">
+    <additional-data name="protect-config-file" value="false"/>
+  </local-check-config>
+  <fileset name="Java Files" enabled="true" check-config-name="ESMCheckstyleTest" local="true">
+    <file-match-pattern match-pattern=".java" include-pattern="true"/>
+  </fileset>
+</fileset-config>
diff --git a/tests/org.eclipse.emf.ecp.common.ui.test/.classpath b/tests/org.eclipse.emf.ecp.common.ui.test/.classpath
new file mode 100644
index 0000000..ad32c83
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.common.ui.test/.classpath
@@ -0,0 +1,7 @@
+<?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.6"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/tests/org.eclipse.emf.ecp.common.ui.test/.project b/tests/org.eclipse.emf.ecp.common.ui.test/.project
new file mode 100644
index 0000000..d04b8a4
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.common.ui.test/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.emf.ecp.common.ui.test</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>net.sf.eclipsecs.core.CheckstyleBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>net.sf.eclipsecs.core.CheckstyleNature</nature>
+	</natures>
+</projectDescription>
diff --git a/tests/org.eclipse.emf.ecp.common.ui.test/.settings/org.eclipse.core.resources.prefs b/tests/org.eclipse.emf.ecp.common.ui.test/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..f548abb
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.common.ui.test/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,6 @@
+eclipse.preferences.version=1
+
+encoding//model/etypes.ecore=UTF-8
+
+
+encoding/<project>=UTF-8
diff --git a/tests/org.eclipse.emf.ecp.common.ui.test/.settings/org.eclipse.core.runtime.prefs b/tests/org.eclipse.emf.ecp.common.ui.test/.settings/org.eclipse.core.runtime.prefs
new file mode 100644
index 0000000..5a0ad22
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.common.ui.test/.settings/org.eclipse.core.runtime.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+line.separator=\n
diff --git a/tests/org.eclipse.emf.ecp.common.ui.test/.settings/org.eclipse.jdt.core.prefs b/tests/org.eclipse.emf.ecp.common.ui.test/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..452e0c2
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.common.ui.test/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,418 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.builder.cleanOutputFolder=clean
+org.eclipse.jdt.core.builder.duplicateResourceTask=warning
+org.eclipse.jdt.core.builder.invalidClasspath=abort
+org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
+org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=
+org.eclipse.jdt.core.circularClasspath=error
+org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
+org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
+org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error
+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.annotation.inheritNullAnnotations=disabled
+org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
+org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
+org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
+org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.6
+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.doc.comment.support=enabled
+org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
+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=enabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
+org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=disabled
+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.invalidJavadoc=warning
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=disabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=public
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
+org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=warning
+org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
+org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=public
+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=warning
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore
+org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
+org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
+org.eclipse.jdt.core.compiler.problem.nullReference=warning
+org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
+org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
+org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
+org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
+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.syntacticNullAnalysisForFields=disabled
+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.unclosedCloseable=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=warning
+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.unusedTypeParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.source=1.6
+org.eclipse.jdt.core.compiler.taskCaseSensitive=enabled
+org.eclipse.jdt.core.compiler.taskPriorities=NORMAL,HIGH,HIGH,LOW,LOW,LOW,LOW,LOW,NORMAL
+org.eclipse.jdt.core.compiler.taskTags=TODO,FIXME,XXX,PERF,MEM,POLISH,@generated NOT,@ADDED,APITODO
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+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_binary_expression=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_method_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=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_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=false
+org.eclipse.jdt.core.formatter.comment.format_block_comments=true
+org.eclipse.jdt.core.formatter.comment.format_header=true
+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=do not 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=1
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=1
+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=do not 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_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_binary_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_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_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_unary_operator=do not 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_binary_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_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_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_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=false
+org.eclipse.jdt.core.formatter.join_wrapped_lines=false
+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=120
+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_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
+org.eclipse.jdt.core.incompatibleJDKLevel=ignore
+org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/tests/org.eclipse.emf.ecp.common.ui.test/.settings/org.eclipse.jdt.launching.prefs b/tests/org.eclipse.emf.ecp.common.ui.test/.settings/org.eclipse.jdt.launching.prefs
new file mode 100644
index 0000000..3bb2352
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.common.ui.test/.settings/org.eclipse.jdt.launching.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.launching.PREF_STRICTLY_COMPATIBLE_JRE_NOT_AVAILABLE=ignore
diff --git a/tests/org.eclipse.emf.ecp.common.ui.test/.settings/org.eclipse.jdt.ui.prefs b/tests/org.eclipse.emf.ecp.common.ui.test/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 0000000..8bc4bb4
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.common.ui.test/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,127 @@
+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_functional_interfaces=false
+cleanup.convert_to_enhanced_for_loop=false
+cleanup.correct_indentation=false
+cleanup.format_source_code=true
+cleanup.format_source_code_changes_only=false
+cleanup.insert_inferred_type_arguments=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=true
+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=true
+cleanup.remove_redundant_type_arguments=true
+cleanup.remove_trailing_whitespaces=true
+cleanup.remove_trailing_whitespaces_all=true
+cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_casts=false
+cleanup.remove_unnecessary_nls_tags=false
+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=true
+cleanup.remove_unused_private_types=true
+cleanup.sort_members=false
+cleanup.sort_members_all=false
+cleanup.use_anonymous_class_creation=false
+cleanup.use_blocks=true
+cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_lambda=true
+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.use_type_arguments=false
+cleanup_profile=_esmCleanUp
+cleanup_settings_version=2
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+formatter_profile=_esmFormatter
+formatter_settings_version=12
+org.eclipse.jdt.ui.exception.name=ex
+org.eclipse.jdt.ui.gettersetter.use.is=true
+org.eclipse.jdt.ui.javadoc=true
+org.eclipse.jdt.ui.keywordthis=false
+org.eclipse.jdt.ui.overrideannotation=true
+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 * Copyright (c) 2011-${year} EclipseSource Muenchen GmbH and others.\r\n * \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 * ${user} - initial API and implementation\r\n ******************************************************************************/</template><template autoinsert\="true" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * @author ${user}\r\n *\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment"/><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 * {@inheritDoc}\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">\t\t\t// TODO Auto-generated catch block\r\n\t\t\t// Do NOT catch all Exceptions ("catch (Exception e)")\r\n\t\t\t// Log AND handle Exceptions if possible \r\n            //\r\n            // You can just uncomment one of the lines below to log an exception\:\r\n\t\t\t// logException will show the logged excpetion to the user\r\n\t\t\t// ModelUtil.logException(${exception_var});\r\n\t\t\t// ModelUtil.logException("YOUR MESSAGE HERE", ${exception_var});\r\n\t\t\t// logWarning will only add the message to the error log\r\n\t\t\t// ModelUtil.logWarning("YOUR MESSAGE HERE", ${exception_var});\r\n\t\t\t// ModelUtil.logWarning("YOUR MESSAGE HERE");\r\n\t\t\t//\t\t\t\r\n\t\t\t// If handling is not possible declare and rethrow Exception</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_functional_interfaces=false
+sp_cleanup.convert_to_enhanced_for_loop=false
+sp_cleanup.correct_indentation=false
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.insert_inferred_type_arguments=false
+sp_cleanup.make_local_variable_final=true
+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=true
+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=true
+sp_cleanup.remove_redundant_type_arguments=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=false
+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=true
+sp_cleanup.remove_unused_private_types=true
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.use_anonymous_class_creation=false
+sp_cleanup.use_blocks=true
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_lambda=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
+sp_cleanup.use_type_arguments=false
diff --git a/tests/org.eclipse.emf.ecp.common.ui.test/.settings/org.eclipse.ltk.core.refactoring.prefs b/tests/org.eclipse.emf.ecp.common.ui.test/.settings/org.eclipse.ltk.core.refactoring.prefs
new file mode 100644
index 0000000..864e30f
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.common.ui.test/.settings/org.eclipse.ltk.core.refactoring.prefs
@@ -0,0 +1,3 @@
+#Thu Feb 04 09:44:24 CET 2010
+eclipse.preferences.version=1
+org.eclipse.ltk.core.refactoring.enable.project.refactoring.history=false
diff --git a/tests/org.eclipse.emf.ecp.common.ui.test/.settings/org.eclipse.pde.api.tools.prefs b/tests/org.eclipse.emf.ecp.common.ui.test/.settings/org.eclipse.pde.api.tools.prefs
new file mode 100644
index 0000000..e4e3c00
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.common.ui.test/.settings/org.eclipse.pde.api.tools.prefs
@@ -0,0 +1,97 @@
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_TYPE=Error
+API_USE_SCAN_FIELD_SEVERITY=Error
+API_USE_SCAN_METHOD_SEVERITY=Error
+API_USE_SCAN_TYPE_SEVERITY=Error
+CLASS_ELEMENT_TYPE_ADDED_METHOD=Error
+CLASS_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CLASS_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+CLASS_ELEMENT_TYPE_REMOVED_CONSTRUCTOR=Error
+CLASS_ELEMENT_TYPE_REMOVED_FIELD=Error
+CLASS_ELEMENT_TYPE_REMOVED_METHOD=Error
+CLASS_ELEMENT_TYPE_REMOVED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+ENUM_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ENUM_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ENUM_ELEMENT_TYPE_REMOVED_ENUM_CONSTANT=Error
+ENUM_ELEMENT_TYPE_REMOVED_FIELD=Error
+ENUM_ELEMENT_TYPE_REMOVED_METHOD=Error
+ENUM_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+FIELD_ELEMENT_TYPE_ADDED_VALUE=Error
+FIELD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+FIELD_ELEMENT_TYPE_CHANGED_FINAL_TO_NON_FINAL_STATIC_CONSTANT=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_TYPE=Error
+FIELD_ELEMENT_TYPE_CHANGED_VALUE=Error
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENT=Error
+FIELD_ELEMENT_TYPE_REMOVED_VALUE=Error
+ILLEGAL_EXTEND=Warning
+ILLEGAL_IMPLEMENT=Warning
+ILLEGAL_INSTANTIATE=Warning
+ILLEGAL_OVERRIDE=Warning
+ILLEGAL_REFERENCE=Warning
+INTERFACE_ELEMENT_TYPE_ADDED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_SUPER_INTERFACE_WITH_METHODS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+INVALID_JAVADOC_TAG=Warning
+INVALID_REFERENCE_IN_SYSTEM_LIBRARIES=Error
+LEAK_EXTEND=Warning
+LEAK_FIELD_DECL=Warning
+LEAK_IMPLEMENT=Warning
+LEAK_METHOD_PARAM=Warning
+LEAK_METHOD_RETURN_TYPE=Warning
+METHOD_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+METHOD_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+METHOD_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+MISSING_EE_DESCRIPTIONS=Error
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+UNUSED_PROBLEM_FILTERS=Ignore
+automatically_removed_unused_problem_filters=Disabled
+eclipse.preferences.version=1
+incompatible_api_component_version=Error
+incompatible_api_component_version_include_major_without_breaking_change=Disabled
+incompatible_api_component_version_include_minor_without_api_change=Disabled
+invalid_since_tag_version=Error
+malformed_since_tag=Error
+missing_since_tag=Error
+report_api_breakage_when_major_version_incremented=Disabled
+report_resolution_errors_api_component=Warning
diff --git a/tests/org.eclipse.emf.ecp.common.ui.test/.settings/org.eclipse.pde.prefs b/tests/org.eclipse.emf.ecp.common.ui.test/.settings/org.eclipse.pde.prefs
new file mode 100644
index 0000000..0bbee3c
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.common.ui.test/.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=1
+compilers.p.missing-version-import-package=1
+compilers.p.missing-version-require-bundle=1
+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.emf.ecp.common.ui.test/META-INF/MANIFEST.MF b/tests/org.eclipse.emf.ecp.common.ui.test/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..87ebfa6
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.common.ui.test/META-INF/MANIFEST.MF
@@ -0,0 +1,11 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: ECP Common UI Test
+Bundle-SymbolicName: org.eclipse.emf.ecp.common.ui.test
+Bundle-Version: 1.17.0.qualifier
+Fragment-Host: org.eclipse.emf.ecp.common.ui;bundle-version="[1.17.0,1.18.0)"
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Require-Bundle: org.junit;bundle-version="[4.12.0,5.0.0)",
+ org.hamcrest.core;bundle-version="[1.3.0,2.0.0)"
+Import-Package: org.eclipse.core.commands.common;version="0.0.0"
+Export-Package: org.eclipse.emf.ecp.spi.common.ui.composites;version="1.17.0"
diff --git a/tests/org.eclipse.emf.ecp.common.ui.test/build.properties b/tests/org.eclipse.emf.ecp.common.ui.test/build.properties
new file mode 100644
index 0000000..34d2e4d
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.common.ui.test/build.properties
@@ -0,0 +1,4 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+               .
diff --git a/tests/org.eclipse.emf.ecp.common.ui.test/pom.xml b/tests/org.eclipse.emf.ecp.common.ui.test/pom.xml
new file mode 100644
index 0000000..8d20ed9
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.common.ui.test/pom.xml
@@ -0,0 +1,79 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
+	xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+	<modelVersion>4.0.0</modelVersion>
+	<parent>
+		<groupId>org.eclipse.emf.ecp</groupId>
+		<artifactId>ecp-tests-parent</artifactId>
+		<version>1.17.0-SNAPSHOT</version>
+		<relativePath>../../releng/org.eclipse.emf.ecp.releng.tests/</relativePath>
+	</parent>
+	<groupId>org.eclipse.emf.ecp</groupId>
+	<artifactId>org.eclipse.emf.ecp.common.ui.test</artifactId>
+	<version>1.17.0-SNAPSHOT</version>
+	<packaging>eclipse-test-plugin</packaging>
+
+	<!-- When signing bundles we get a security exception using maven-surefire. 
+		use tycho-surefire instead -->
+	<profiles>
+		<profile>
+			<id>build-server</id>
+			<build>
+				<plugins>
+					<plugin>
+						<groupId>org.apache.maven.plugins</groupId>
+						<artifactId>maven-surefire-plugin</artifactId>
+						<version>${mav-surefire-version}</version>
+						<executions>
+							<execution>
+								<id>test</id>
+								<phase>test</phase>
+								<configuration>
+									<skipTests>true</skipTests>
+									<testClassesDirectory>${project.build.outputDirectory}</testClassesDirectory>
+									<includes>
+										<include>**/*_Test.java</include>
+									</includes>
+									<testFailureIgnore>true</testFailureIgnore>
+								</configuration>
+								<goals>
+									<goal>test</goal>
+								</goals>
+							</execution>
+						</executions>
+					</plugin>
+
+					<plugin>
+						<groupId>org.eclipse.tycho</groupId>
+						<artifactId>tycho-surefire-plugin</artifactId>
+						<version>${tycho-version}</version>
+						<configuration>
+							<includes>
+								<include>**/*_PTest.java</include>
+								<include>**/*_Test.java</include>
+							</includes>
+							<testFailureIgnore>true</testFailureIgnore>
+							<skip>false</skip>
+						</configuration>
+					</plugin>
+				</plugins>
+			</build>
+		</profile>
+	</profiles>
+
+    <!-- skip tycho surefire which is automatically started by using eclipse-test-plugin packaging type -->
+	<build>
+		<plugins>
+			<plugin>
+				<groupId>org.eclipse.tycho</groupId>
+				<artifactId>tycho-surefire-plugin</artifactId>
+				<version>${tycho-version}</version>
+				<configuration>
+					<skip>true</skip>
+				</configuration>
+			</plugin>
+		</plugins>
+	</build>
+
+</project>
diff --git a/tests/org.eclipse.emf.ecp.common.ui.test/src/org/eclipse/emf/ecp/spi/common/ui/composites/SelectModelElementCompositeImpl_ITest.java b/tests/org.eclipse.emf.ecp.common.ui.test/src/org/eclipse/emf/ecp/spi/common/ui/composites/SelectModelElementCompositeImpl_ITest.java
new file mode 100644
index 0000000..69b9f92
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.common.ui.test/src/org/eclipse/emf/ecp/spi/common/ui/composites/SelectModelElementCompositeImpl_ITest.java
@@ -0,0 +1,54 @@
+/*******************************************************************************
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * Eugen Neufeld - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.emf.ecp.spi.common.ui.composites;
+
+import static org.junit.Assert.assertEquals;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EcoreFactory;
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.swt.widgets.Shell;
+import org.junit.Before;
+import org.junit.Test;
+
+public class SelectModelElementCompositeImpl_ITest {
+
+	private Shell shell;
+
+	@Before
+	public void setUp() throws Exception {
+		shell = new Shell();
+	}
+
+	@Test
+	public void testCreateViewerComposite() {
+		final List<EClass> input = new ArrayList<EClass>();
+		final EClass eClassB = EcoreFactory.eINSTANCE.createEClass();
+		eClassB.setName("B");
+		input.add(eClassB);
+
+		final EClass eClassA = EcoreFactory.eINSTANCE.createEClass();
+		eClassA.setName("A");
+		input.add(eClassA);
+
+		final SelectModelElementCompositeImpl s = new SelectModelElementCompositeImpl(input, false);
+		final TableViewer tableViewer = s.createViewer(shell);
+		final EClass first = (EClass) tableViewer.getElementAt(0);
+		assertEquals(eClassA, first);
+		final EClass second = (EClass) tableViewer.getElementAt(1);
+		assertEquals(eClassB, second);
+	}
+
+}
diff --git a/tests/org.eclipse.emf.ecp.controls.fx.test/META-INF/MANIFEST.MF b/tests/org.eclipse.emf.ecp.controls.fx.test/META-INF/MANIFEST.MF
index 038f7fb..491237a 100644
--- a/tests/org.eclipse.emf.ecp.controls.fx.test/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.emf.ecp.controls.fx.test/META-INF/MANIFEST.MF
@@ -13,3 +13,4 @@
   org.eclipse.emf.emfstore.examplemodel;bundle-version="[1.1.0,2.0.0)",
   org.eclipse.emfforms.common;bundle-version="[1.16.0,1.17.0)"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Automatic-Module-Name: org.eclipse.emf.ecp.controls.fx.test
diff --git a/tests/org.eclipse.emf.ecp.core.rap.concurrent.test/META-INF/MANIFEST.MF b/tests/org.eclipse.emf.ecp.core.rap.concurrent.test/META-INF/MANIFEST.MF
index 3463f6b..8da3c0d 100644
--- a/tests/org.eclipse.emf.ecp.core.rap.concurrent.test/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.emf.ecp.core.rap.concurrent.test/META-INF/MANIFEST.MF
@@ -2,23 +2,24 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: ECP Core RAP Test
 Bundle-SymbolicName: org.eclipse.emf.ecp.core.rap.concurrent.test
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emf.ecp.core.rap.concurrent.test;version="1.16.0";x-internal:=true
+Export-Package: org.eclipse.emf.ecp.core.rap.concurrent.test;version="1.17.0";x-internal:=true
 Require-Bundle: org.junit;bundle-version="[4.11.0,5.0.0)",
-  org.eclipse.emf.ecp.core;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.core.rap;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.core.rap.sessionprovider.concurrent.test;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.emfstore.core.rap;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.emfstore.client;bundle-version="[1.9.0,1.10.0)",
-  org.eclipse.emf.ecp.emfstore.core;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.equinox.ds
+ org.eclipse.emf.ecp.core;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.core.rap;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.core.rap.sessionprovider.concurrent.test;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.emfstore.core.rap;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.emfstore.client;bundle-version="[1.9.0,1.10.0)",
+ org.eclipse.emf.ecp.emfstore.core;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.equinox.ds
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Import-Package: org.eclipse.core.runtime;version="0.0.0",
-  org.eclipse.emf.ecp.core;version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.core.rap;version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.core.rap.sessionprovider.concurrent.test;version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.emfstore.core.internal;version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.internal.ui;version="[1.16.0,1.17.0)",
-  org.osgi.framework;version="0.0.0"
+ org.eclipse.emf.ecp.core;version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.core.rap;version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.core.rap.sessionprovider.concurrent.test;version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.emfstore.core.internal;version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.internal.ui;version="[1.17.0,1.18.0]",
+ org.osgi.framework;version="0.0.0"
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.core.rap.concurrent.test
diff --git a/tests/org.eclipse.emf.ecp.core.rap.concurrent.test/pom.xml b/tests/org.eclipse.emf.ecp.core.rap.concurrent.test/pom.xml
index a343807..9f10ed2 100644
--- a/tests/org.eclipse.emf.ecp.core.rap.concurrent.test/pom.xml
+++ b/tests/org.eclipse.emf.ecp.core.rap.concurrent.test/pom.xml
@@ -6,12 +6,12 @@
 	<parent>
 		<groupId>org.eclipse.emf.ecp</groupId>
 		<artifactId>ecp-tests-parent</artifactId>
-		<version>1.16.0-SNAPSHOT</version>
+		<version>1.17.0-SNAPSHOT</version>
 		<relativePath>../../releng/org.eclipse.emf.ecp.releng.tests/</relativePath>
 	</parent>
 	<groupId>org.eclipse.emf.ecp</groupId>
 	<artifactId>org.eclipse.emf.ecp.core.rap.concurrent.test</artifactId>
-	<version>1.16.0-SNAPSHOT</version>
+	<version>1.17.0-SNAPSHOT</version>
 	<packaging>eclipse-test-plugin</packaging>
 
 	<build>
diff --git a/tests/org.eclipse.emf.ecp.core.rap.sessionprovider.concurrent.test/META-INF/MANIFEST.MF b/tests/org.eclipse.emf.ecp.core.rap.sessionprovider.concurrent.test/META-INF/MANIFEST.MF
index a4cdb5e..e18e733 100644
--- a/tests/org.eclipse.emf.ecp.core.rap.sessionprovider.concurrent.test/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.emf.ecp.core.rap.sessionprovider.concurrent.test/META-INF/MANIFEST.MF
@@ -2,11 +2,12 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: ECP Core Rap Sessionprovider Concurrent Test
 Bundle-SymbolicName: org.eclipse.emf.ecp.core.rap.sessionprovider.concurrent.test
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emf.ecp.core.rap.sessionprovider.concurrent.test;version="1.16.0"
-Require-Bundle: org.eclipse.emf.ecp.core.rap;bundle-version="[1.16.0,1.17.0)"
+Export-Package: org.eclipse.emf.ecp.core.rap.sessionprovider.concurrent.test;version="1.17.0"
+Require-Bundle: org.eclipse.emf.ecp.core.rap;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Import-Package: org.eclipse.rap.rwt.service;version="0.0.0"
 Service-Component: OSGI-INF/component.xml
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.core.rap.sessionprovider.concurrent.test
diff --git a/tests/org.eclipse.emf.ecp.core.rap.sessionprovider.concurrent.test/pom.xml b/tests/org.eclipse.emf.ecp.core.rap.sessionprovider.concurrent.test/pom.xml
index e1c2348..fb1e4a6 100644
--- a/tests/org.eclipse.emf.ecp.core.rap.sessionprovider.concurrent.test/pom.xml
+++ b/tests/org.eclipse.emf.ecp.core.rap.sessionprovider.concurrent.test/pom.xml
@@ -6,11 +6,11 @@
 	<parent>
 		<groupId>org.eclipse.emf.ecp</groupId>
 		<artifactId>ecp-tests-parent</artifactId>
-		<version>1.16.0-SNAPSHOT</version>
+		<version>1.17.0-SNAPSHOT</version>
 		<relativePath>../../releng/org.eclipse.emf.ecp.releng.tests/</relativePath>
 	</parent>
 
 	<artifactId>org.eclipse.emf.ecp.core.rap.sessionprovider.concurrent.test</artifactId>
 	<packaging>eclipse-plugin</packaging>
-	<version>1.16.0-SNAPSHOT</version>
+	<version>1.17.0-SNAPSHOT</version>
 </project>
diff --git a/tests/org.eclipse.emf.ecp.core.rap.sessionprovider.test/META-INF/MANIFEST.MF b/tests/org.eclipse.emf.ecp.core.rap.sessionprovider.test/META-INF/MANIFEST.MF
index 517b7c9..a12fc3b 100644
--- a/tests/org.eclipse.emf.ecp.core.rap.sessionprovider.test/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.emf.ecp.core.rap.sessionprovider.test/META-INF/MANIFEST.MF
@@ -2,11 +2,12 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: ECP Core Rap Sessionprovider Test
 Bundle-SymbolicName: org.eclipse.emf.ecp.core.rap.sessionprovider.test
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emf.ecp.core.rap.sessionprovider.test;version="1.16.0"
-Require-Bundle: org.eclipse.emf.ecp.core.rap;bundle-version="[1.16.0,1.17.0)"
+Export-Package: org.eclipse.emf.ecp.core.rap.sessionprovider.test;version="1.17.0"
+Require-Bundle: org.eclipse.emf.ecp.core.rap;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Import-Package: org.eclipse.rap.rwt.service;version="0.0.0"
 Service-Component: OSGI-INF/component.xml
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.core.rap.sessionprovider.test
diff --git a/tests/org.eclipse.emf.ecp.core.rap.sessionprovider.test/pom.xml b/tests/org.eclipse.emf.ecp.core.rap.sessionprovider.test/pom.xml
index ec6d0a6..66d4ef3 100644
--- a/tests/org.eclipse.emf.ecp.core.rap.sessionprovider.test/pom.xml
+++ b/tests/org.eclipse.emf.ecp.core.rap.sessionprovider.test/pom.xml
@@ -6,11 +6,11 @@
 	<parent>
 		<groupId>org.eclipse.emf.ecp</groupId>
 		<artifactId>ecp-tests-parent</artifactId>
-		<version>1.16.0-SNAPSHOT</version>
+		<version>1.17.0-SNAPSHOT</version>
 		<relativePath>../../releng/org.eclipse.emf.ecp.releng.tests/</relativePath>
 	</parent>
 
 	<artifactId>org.eclipse.emf.ecp.core.rap.sessionprovider.test</artifactId>
 	<packaging>eclipse-plugin</packaging>
-	<version>1.16.0-SNAPSHOT</version>
+	<version>1.17.0-SNAPSHOT</version>
 </project>
diff --git a/tests/org.eclipse.emf.ecp.core.rap.test/META-INF/MANIFEST.MF b/tests/org.eclipse.emf.ecp.core.rap.test/META-INF/MANIFEST.MF
index e490eef..7913ffb 100644
--- a/tests/org.eclipse.emf.ecp.core.rap.test/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.emf.ecp.core.rap.test/META-INF/MANIFEST.MF
@@ -2,19 +2,20 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: ECP Core RAP Test
 Bundle-SymbolicName: org.eclipse.emf.ecp.core.rap.test
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emf.ecp.core.rap.test;version="1.16.0";x-internal:=true
+Export-Package: org.eclipse.emf.ecp.core.rap.test;version="1.17.0";x-internal:=true
 Require-Bundle: org.junit;bundle-version="[4.11.0,5.0.0)",
-  org.eclipse.emf.ecp.core;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.core.rap;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.core.rap.sessionprovider.test;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.emfstore.core.rap;bundle-version="[1.16.0,1.17.0)"
+ org.eclipse.emf.ecp.core;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.core.rap;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.core.rap.sessionprovider.test;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.emfstore.core.rap;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Import-Package: org.eclipse.core.runtime;version="0.0.0",
-  org.eclipse.emf.ecp.core;version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.core.rap;version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.core.rap.sessionprovider.test;version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.emfstore.core.internal;version="[1.16.0,1.17.0)",
-  org.osgi.framework;version="0.0.0"
+ org.eclipse.emf.ecp.core;version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.core.rap;version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.core.rap.sessionprovider.test;version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.emfstore.core.internal;version="[1.17.0,1.18.0]",
+ org.osgi.framework;version="0.0.0"
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.core.rap.test
diff --git a/tests/org.eclipse.emf.ecp.core.rap.test/pom.xml b/tests/org.eclipse.emf.ecp.core.rap.test/pom.xml
index db4426b..a587394 100644
--- a/tests/org.eclipse.emf.ecp.core.rap.test/pom.xml
+++ b/tests/org.eclipse.emf.ecp.core.rap.test/pom.xml
@@ -6,12 +6,12 @@
 	<parent>
 		<groupId>org.eclipse.emf.ecp</groupId>
 		<artifactId>ecp-tests-parent</artifactId>
-		<version>1.16.0-SNAPSHOT</version>
+		<version>1.17.0-SNAPSHOT</version>
 		<relativePath>../../releng/org.eclipse.emf.ecp.releng.tests/</relativePath>
 	</parent>
 	<groupId>org.eclipse.emf.ecp</groupId>
 	<artifactId>org.eclipse.emf.ecp.core.rap.test</artifactId>
-	<version>1.16.0-SNAPSHOT</version>
+	<version>1.17.0-SNAPSHOT</version>
 	<packaging>eclipse-test-plugin</packaging>
 
 	<build>
diff --git a/tests/org.eclipse.emf.ecp.core.test/META-INF/MANIFEST.MF b/tests/org.eclipse.emf.ecp.core.test/META-INF/MANIFEST.MF
index c9ca02a..13cfb5f 100644
--- a/tests/org.eclipse.emf.ecp.core.test/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.emf.ecp.core.test/META-INF/MANIFEST.MF
@@ -2,15 +2,16 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: ECP Core Test
 Bundle-SymbolicName: org.eclipse.emf.ecp.core.test
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-ClassPath: .
 Bundle-Vendor: Eclipse Modeling Project
-Fragment-Host: org.eclipse.emf.ecp.core;bundle-version="[1.16.0,1.17.0)"
-Export-Package: org.eclipse.emf.ecp.core.test;version="1.16.0";x-internal:=true
+Fragment-Host: org.eclipse.emf.ecp.core;bundle-version="[1.17.0,1.18.0]"
+Export-Package: org.eclipse.emf.ecp.core.test;version="1.17.0";x-internal:=true
 Require-Bundle: org.eclipse.ui;bundle-version="3.1.0",
-  org.eclipse.core.runtime;bundle-version="3.8.0",
-  org.eclipse.emf.ecp.emfstore.core;bundle-version="[1.16.0,1.17.0)",
-  org.junit;bundle-version="4.0.0",
-  org.mockito.mockito-core-hamcrest-modified;bundle-version="1.9.5"
+ org.eclipse.core.runtime;bundle-version="3.8.0",
+ org.eclipse.emf.ecp.emfstore.core;bundle-version="[1.17.0,1.18.0]",
+ org.junit;bundle-version="4.0.0",
+ org.mockito.mockito-core-hamcrest-modified;bundle-version="1.9.5"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.core.test
diff --git a/tests/org.eclipse.emf.ecp.core.test/pom.xml b/tests/org.eclipse.emf.ecp.core.test/pom.xml
index 0a2fe60..183b32b 100644
--- a/tests/org.eclipse.emf.ecp.core.test/pom.xml
+++ b/tests/org.eclipse.emf.ecp.core.test/pom.xml
@@ -6,12 +6,12 @@
 	<parent>
 		<groupId>org.eclipse.emf.ecp</groupId>
 		<artifactId>ecp-tests-parent</artifactId>
-		<version>1.16.0-SNAPSHOT</version>
+		<version>1.17.0-SNAPSHOT</version>
 		<relativePath>../../releng/org.eclipse.emf.ecp.releng.tests/</relativePath>
 	</parent>
 	<groupId>org.eclipse.emf.ecp</groupId>
 	<artifactId>org.eclipse.emf.ecp.core.test</artifactId>
-	<version>1.16.0-SNAPSHOT</version>
+	<version>1.17.0-SNAPSHOT</version>
 	<packaging>eclipse-test-plugin</packaging>
 
 	<build>
diff --git a/tests/org.eclipse.emf.ecp.diffmerge.test/META-INF/MANIFEST.MF b/tests/org.eclipse.emf.ecp.diffmerge.test/META-INF/MANIFEST.MF
index a7def36..2393a3b 100644
--- a/tests/org.eclipse.emf.ecp.diffmerge.test/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.emf.ecp.diffmerge.test/META-INF/MANIFEST.MF
@@ -2,18 +2,20 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Diff Merge Tests
 Bundle-SymbolicName: org.eclipse.emf.ecp.diffmerge.test
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Fragment-Host: org.eclipse.emf.ecp.diffmerge.context;bundle-version="[1.16.0,1.17.0)"
-Export-Package: org.eclipse.emf.ecp.diffmerge.test;version="1.16.0";x-internal:=true
+Fragment-Host: org.eclipse.emf.ecp.diffmerge.context;bundle-version="[1.17.0,1.18.0]"
+Export-Package: org.eclipse.emf.ecp.diffmerge.test;version="1.17.0";x-internal:=true
 Require-Bundle: org.junit;bundle-version="[4.11.0,5.0.0)",
-  org.eclipse.emf.emfstore.examplemodel;bundle-version="[1.3.0,2.0.0)",
-  org.eclipse.emf.ecp.view.table.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.horizontal.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.test.common;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services.domainexpander.default;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services.mappingprovider.default;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services.emf;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services.structuralchange;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services.structuralchange.default;bundle-version="[1.16.0,1.17.0)"
+ org.eclipse.emf.emfstore.examplemodel;bundle-version="[1.3.0,2.0.0)",
+ org.eclipse.emf.ecp.view.table.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.horizontal.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.test.common;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services.domainexpander.default;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services.mappingprovider.default;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services.emf;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services.structuralchange;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services.structuralchange.default;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecore;bundle-version="[2.13.0,3.0.0)"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Automatic-Module-Name: org.eclipse.emf.ecp.diffmerge.test
diff --git a/tests/org.eclipse.emf.ecp.diffmerge.test/pom.xml b/tests/org.eclipse.emf.ecp.diffmerge.test/pom.xml
index 96b8306..e66919b 100644
--- a/tests/org.eclipse.emf.ecp.diffmerge.test/pom.xml
+++ b/tests/org.eclipse.emf.ecp.diffmerge.test/pom.xml
@@ -6,12 +6,12 @@
 	<parent>
 		<groupId>org.eclipse.emf.ecp</groupId>
 		<artifactId>ecp-tests-parent</artifactId>
-		<version>1.16.0-SNAPSHOT</version>
+		<version>1.17.0-SNAPSHOT</version>
 		<relativePath>../../releng/org.eclipse.emf.ecp.releng.tests/</relativePath>
 	</parent>
 	<groupId>org.eclipse.emf.ecp</groupId>
 	<artifactId>org.eclipse.emf.ecp.diffmerge.test</artifactId>
-	<version>1.16.0-SNAPSHOT</version>
+	<version>1.17.0-SNAPSHOT</version>
 	<packaging>eclipse-test-plugin</packaging>
 
 	<build>
diff --git a/tests/org.eclipse.emf.ecp.diffmerge.test/src/org/eclipse/emf/ecp/diffmerge/test/AllTests.java b/tests/org.eclipse.emf.ecp.diffmerge.test/src/org/eclipse/emf/ecp/diffmerge/test/AllTests.java
index 902cb3f..2c95507 100644
--- a/tests/org.eclipse.emf.ecp.diffmerge.test/src/org/eclipse/emf/ecp/diffmerge/test/AllTests.java
+++ b/tests/org.eclipse.emf.ecp.diffmerge.test/src/org/eclipse/emf/ecp/diffmerge/test/AllTests.java
@@ -22,7 +22,7 @@
  *
  */
 @RunWith(Suite.class)
-@SuiteClasses({ Diff_PTest.class, Merge_PTest.class, SaveLoad_PTest.class })
+@SuiteClasses({ Diff_PTest.class, Merge_PTest.class, SaveLoad_PTest.class, CompareControls_Test.class })
 public class AllTests {
 
 }
diff --git a/tests/org.eclipse.emf.ecp.diffmerge.test/src/org/eclipse/emf/ecp/diffmerge/test/CompareControls_Test.java b/tests/org.eclipse.emf.ecp.diffmerge.test/src/org/eclipse/emf/ecp/diffmerge/test/CompareControls_Test.java
new file mode 100644
index 0000000..b3102c9
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.diffmerge.test/src/org/eclipse/emf/ecp/diffmerge/test/CompareControls_Test.java
@@ -0,0 +1,243 @@
+/*******************************************************************************
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * jonas - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.emf.ecp.diffmerge.test;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.emf.ecp.diffmerge.internal.context.CompareControls;
+import org.eclipse.emf.emfstore.bowling.BowlingFactory;
+import org.eclipse.emf.emfstore.bowling.BowlingPackage;
+import org.eclipse.emf.emfstore.bowling.Player;
+import org.junit.Test;
+
+/**
+ * @author Jonas Helming
+ *
+ */
+public class CompareControls_Test {
+
+	private static final String EMPTY = ""; //$NON-NLS-1$
+	private static final String STRING1 = "String1"; //$NON-NLS-1$
+
+	@Test
+	public void testValuesAreEqualNullValues() {
+		final EAttribute eAttribute = BowlingPackage.eINSTANCE.getPlayer_Name();
+		final boolean result = CompareControls.areValuesEqual(null, eAttribute, null, eAttribute);
+		assertTrue(result);
+	}
+
+	/**
+	 * Test method for
+	 * {@link org.eclipse.emf.ecp.diffmerge.internal.context.CompareControls#areValuesEqual(java.lang.Object, org.eclipse.emf.ecore.EStructuralFeature, java.lang.Object, org.eclipse.emf.ecore.EStructuralFeature)}.
+	 */
+	@Test
+	public void testValuesAreEqualAllNull() {
+		final boolean result = CompareControls.areValuesEqual(null, null, null, null);
+		assertTrue(result);
+	}
+
+	@Test
+	public void testValuesAreEqualFirstValueNull() {
+		final boolean result = CompareControls.areValuesEqual(null, null, EMPTY, null);
+		assertFalse(result);
+	}
+
+	@Test
+	public void testValuesAreEqualSecondValueNull() {
+		final boolean result = CompareControls.areValuesEqual(EMPTY, null, null, null);
+		assertFalse(result);
+	}
+
+	@Test
+	public void testValuesAreEqualSimpleValuesEqual() {
+		final boolean result = CompareControls.areValuesEqual(EMPTY, null, EMPTY, null);
+		assertTrue(result);
+	}
+
+	@Test
+	public void testValuesAreEqualSimpleValuesNotEqual() {
+		final EAttribute eAttribute = BowlingPackage.eINSTANCE.getPlayer_Name();
+		final boolean result = CompareControls.areValuesEqual(EMPTY, eAttribute, STRING1, eAttribute);
+		assertFalse(result);
+	}
+
+	@Test
+	public void testValuesAreEqualSingleReferenceEqual() {
+		final EReference eReference = BowlingPackage.eINSTANCE.getGame_Player();
+		final Player player = BowlingFactory.eINSTANCE.createPlayer();
+		player.setName(STRING1);
+		final Player copy = EcoreUtil.copy(player);
+		final boolean result = CompareControls.areValuesEqual(player, eReference, copy, eReference);
+		assertTrue(result);
+	}
+
+	@Test
+	public void testValuesAreEqualSingleReferenceNotEqual() {
+		final EReference eReference = BowlingPackage.eINSTANCE.getGame_Player();
+		final Player player = BowlingFactory.eINSTANCE.createPlayer();
+		final Player copy = EcoreUtil.copy(player);
+		player.setName(STRING1);
+		final boolean result = CompareControls.areValuesEqual(player, eReference, copy, eReference);
+		assertFalse(result);
+	}
+
+	@Test
+	public void testValuesAreEqualSingleReferenceWithMulti() {
+		final EReference eReference = BowlingPackage.eINSTANCE.getGame_Player();
+		final EReference eReferenceMulti = BowlingPackage.eINSTANCE.getMatchup_Games();
+		final Player player = BowlingFactory.eINSTANCE.createPlayer();
+		final Player copy = EcoreUtil.copy(player);
+		player.setName(STRING1);
+		final boolean result = CompareControls.areValuesEqual(player, eReference, copy, eReferenceMulti);
+		assertFalse(result);
+	}
+
+	@Test
+	public void testValuesAreEqualSingleReferenceWithMultiTwisted() {
+		final EReference eReference = BowlingPackage.eINSTANCE.getGame_Player();
+		final EReference eReferenceMulti = BowlingPackage.eINSTANCE.getMatchup_Games();
+		final Player player = BowlingFactory.eINSTANCE.createPlayer();
+		final Player copy = EcoreUtil.copy(player);
+		player.setName(STRING1);
+		final boolean result = CompareControls.areValuesEqual(player, eReferenceMulti, copy, eReference);
+		assertFalse(result);
+	}
+
+	@Test
+	public void testValuesAreEqualMultiReferenceEqual() {
+		final EReference eReferenceMulti = BowlingPackage.eINSTANCE.getMatchup_Games();
+		final Player player = BowlingFactory.eINSTANCE.createPlayer();
+		final Player copy = EcoreUtil.copy(player);
+		final List<EObject> left = new ArrayList<EObject>();
+		left.add(player);
+		final List<EObject> right = new ArrayList<EObject>();
+		right.add(copy);
+		final boolean result = CompareControls.areValuesEqual(left, eReferenceMulti,
+			right, eReferenceMulti);
+		assertTrue(result);
+	}
+
+	@Test
+	public void testValuesAreEqualMultiReferenceNotEqual() {
+		final EReference eReferenceMulti = BowlingPackage.eINSTANCE.getMatchup_Games();
+		final Player player = BowlingFactory.eINSTANCE.createPlayer();
+		final Player copy = EcoreUtil.copy(player);
+		final List<EObject> left = new ArrayList<EObject>();
+		left.add(player);
+		copy.setName(STRING1);
+		final List<EObject> right = new ArrayList<EObject>();
+		right.add(copy);
+		final boolean result = CompareControls.areValuesEqual(left, eReferenceMulti,
+			right, eReferenceMulti);
+		assertFalse(result);
+	}
+
+	@Test
+	public void testValuesAreEqualMultiReferenceMultiAttribute() {
+		final EReference eReferenceMulti = BowlingPackage.eINSTANCE.getMatchup_Games();
+		final Player player = BowlingFactory.eINSTANCE.createPlayer();
+		final List<EObject> left = new ArrayList<EObject>();
+		left.add(player);
+		final EAttribute eAttributeMulti = BowlingPackage.eINSTANCE.getGame_Frames();
+		final List<Integer> right = new ArrayList<Integer>();
+		right.add(1);
+		final boolean result = CompareControls.areValuesEqual(left, eReferenceMulti,
+			right, eAttributeMulti);
+		assertFalse(result);
+	}
+
+	@Test
+	public void testValuesAreEqualMultiReferenceMultiAttributeTwisted() {
+		final EReference eReferenceMulti = BowlingPackage.eINSTANCE.getMatchup_Games();
+		final Player player = BowlingFactory.eINSTANCE.createPlayer();
+		final List<EObject> left = new ArrayList<EObject>();
+		left.add(player);
+		final EAttribute eAttributeMulti = BowlingPackage.eINSTANCE.getGame_Frames();
+		final List<Integer> right = new ArrayList<Integer>();
+		right.add(1);
+		final boolean result = CompareControls.areValuesEqual(right, eAttributeMulti,
+			left, eReferenceMulti);
+		assertFalse(result);
+	}
+
+	@Test
+	public void testValuesAreEqualMultiAttributeEqual() {
+		final EAttribute eAttributeMulti = BowlingPackage.eINSTANCE.getGame_Frames();
+		final List<Integer> left = new ArrayList<Integer>();
+		left.add(1);
+		final List<Integer> right = new ArrayList<Integer>();
+		right.add(1);
+		final boolean result = CompareControls.areValuesEqual(left, eAttributeMulti,
+			right, eAttributeMulti);
+		assertTrue(result);
+	}
+
+	@Test
+	public void testValuesAreEqualMultiAttributeEqualTwoValues() {
+		final EAttribute eAttributeMulti = BowlingPackage.eINSTANCE.getGame_Frames();
+		final List<Integer> left = new ArrayList<Integer>();
+		left.add(1);
+		left.add(2);
+		final List<Integer> right = new ArrayList<Integer>();
+		right.add(1);
+		right.add(2);
+		final boolean result = CompareControls.areValuesEqual(left, eAttributeMulti,
+			right, eAttributeMulti);
+		assertTrue(result);
+	}
+
+	@Test
+	public void testValuesAreEqualMultiAttributeNotEqualSize() {
+		final EAttribute eAttributeMulti = BowlingPackage.eINSTANCE.getGame_Frames();
+		final List<Integer> left = new ArrayList<Integer>();
+		left.add(1);
+		final List<Integer> right = new ArrayList<Integer>();
+		final boolean result = CompareControls.areValuesEqual(left, eAttributeMulti,
+			right, eAttributeMulti);
+		assertFalse(result);
+	}
+
+	@Test
+	public void testValuesAreEqualMultiAttributeNoEqualValues() {
+		final EAttribute eAttributeMulti = BowlingPackage.eINSTANCE.getGame_Frames();
+		final List<Integer> left = new ArrayList<Integer>();
+		left.add(1);
+		final List<Integer> right = new ArrayList<Integer>();
+		right.add(2);
+		final boolean result = CompareControls.areValuesEqual(left, eAttributeMulti,
+			right, eAttributeMulti);
+		assertFalse(result);
+	}
+
+	@Test
+	public void testValuesAreEqualMultiAttributeSomeEqualValues() {
+		final EAttribute eAttributeMulti = BowlingPackage.eINSTANCE.getGame_Frames();
+		final List<Integer> left = new ArrayList<Integer>();
+		left.add(1);
+		left.add(3);
+		final List<Integer> right = new ArrayList<Integer>();
+		right.add(1);
+		right.add(2);
+		final boolean result = CompareControls.areValuesEqual(left, eAttributeMulti,
+			right, eAttributeMulti);
+		assertFalse(result);
+	}
+
+}
diff --git a/tests/org.eclipse.emf.ecp.ecore.editor.test/AllEcoreGenModelTests.launch b/tests/org.eclipse.emf.ecp.ecore.editor.test/AllEcoreGenModelTests.launch
index 1504964..7fdba86 100644
--- a/tests/org.eclipse.emf.ecp.ecore.editor.test/AllEcoreGenModelTests.launch
+++ b/tests/org.eclipse.emf.ecp.ecore.editor.test/AllEcoreGenModelTests.launch
@@ -3,7 +3,7 @@
 <booleanAttribute key="append.args" value="true"/>
 <stringAttribute key="application" value="org.eclipse.pde.junit.runtime.coretestapplication"/>
 <booleanAttribute key="askclear" value="false"/>
-<booleanAttribute key="automaticAdd" value="true"/>
+<booleanAttribute key="automaticAdd" value="false"/>
 <booleanAttribute key="automaticValidate" value="false"/>
 <stringAttribute key="bootstrap" value=""/>
 <stringAttribute key="checked" value="[NONE]"/>
@@ -12,8 +12,7 @@
 <booleanAttribute key="clearwslog" value="false"/>
 <stringAttribute key="configLocation" value="${workspace_loc}/.metadata/.plugins/org.eclipse.pde.core/pde-junit"/>
 <booleanAttribute key="default" value="false"/>
-<stringAttribute key="deselected_workspace_plugins" value="org.eclipse.emf.ecp.application.e3,org.eclipse.emf.ecp.application.e4,org.eclipse.emf.ecp.application.e4.fx,org.eclipse.emf.ecp.cdo.core,org.eclipse.emf.ecp.cdo.ui,org.eclipse.emf.ecp.controls.fx,org.eclipse.emf.ecp.core.emffilter,org.eclipse.emf.ecp.core.test,org.eclipse.emf.ecp.diffmerge.test,org.eclipse.emf.ecp.doc,org.eclipse.emf.ecp.ecore.editor.ui,org.eclipse.emf.ecp.edit.ecore.swt,org.eclipse.emf.ecp.edit.swt.test,org.eclipse.emf.ecp.emfstore.localserver,org.eclipse.emf.ecp.emfstore.ui,org.eclipse.emf.ecp.emfstore.ui.e3,org.eclipse.emf.ecp.emfstore.ui.e4,org.eclipse.emf.ecp.emfstore.ui.e4.fx,org.eclipse.emf.ecp.emfstore.ui.search,org.eclipse.emf.ecp.examplemodel.ui,org.eclipse.emf.ecp.graphiti.core,org.eclipse.emf.ecp.graphiti.integration,org.eclipse.emf.ecp.ide.editor.viewmodel,org.eclipse.emf.ecp.integrationtest,org.eclipse.emf.ecp.products,org.eclipse.emf.ecp.rap.util,org.eclipse.emf.ecp.test.model,org.eclipse.emf.ecp.test.model.edit,org.eclipse.emf.ecp.ui.e3,org.eclipse.emf.ecp.ui.e4,org.eclipse.emf.ecp.ui.transaction,org.eclipse.emf.ecp.ui.validation.test,org.eclipse.emf.ecp.ui.view.editor.controls.test,org.eclipse.emf.ecp.ui.view.swt.test,org.eclipse.emf.ecp.ui.view.test,org.eclipse.emf.ecp.util.fx,org.eclipse.emf.ecp.validation,org.eclipse.emf.ecp.validation.connector,org.eclipse.emf.ecp.validation.diagnostician.test,org.eclipse.emf.ecp.validation.test,org.eclipse.emf.ecp.view.categorization.model.edit,org.eclipse.emf.ecp.view.categorization.swt,org.eclipse.emf.ecp.view.categorization.swt.test,org.eclipse.emf.ecp.view.context.test,org.eclipse.emf.ecp.view.core.swt.tests,org.eclipse.emf.ecp.view.custom.model,org.eclipse.emf.ecp.view.custom.model.edit,org.eclipse.emf.ecp.view.custom.ui.swt,org.eclipse.emf.ecp.view.custom.ui.swt.test,org.eclipse.emf.ecp.view.dynamictree.model,org.eclipse.emf.ecp.view.dynamictree.model.edit,org.eclipse.emf.ecp.view.dynamictree.model.test,org.eclipse.emf.ecp.view.dynamictree.ui,org.eclipse.emf.ecp.view.dynamictree.ui.swt,org.eclipse.emf.ecp.view.group.fx,org.eclipse.emf.ecp.view.group.model.edit,org.eclipse.emf.ecp.view.group.ui.swt,org.eclipse.emf.ecp.view.group.ui.swt.test,org.eclipse.emf.ecp.view.groupedgrid.model,org.eclipse.emf.ecp.view.groupedgrid.model.edit,org.eclipse.emf.ecp.view.groupedgrid.ui.swt,org.eclipse.emf.ecp.view.horizontal.fx,org.eclipse.emf.ecp.view.horizontal.model.edit,org.eclipse.emf.ecp.view.horizontal.ui.swt,org.eclipse.emf.ecp.view.horizontal.ui.swt.test,org.eclipse.emf.ecp.view.ideconfig.model.edit,org.eclipse.emf.ecp.view.label.model.edit,org.eclipse.emf.ecp.view.label.ui.swt,org.eclipse.emf.ecp.view.model.edit.test,org.eclipse.emf.ecp.view.model.editor.testplugin,org.eclipse.emf.ecp.view.model.fx,org.eclipse.emf.ecp.view.model.integrationtest,org.eclipse.emf.ecp.view.model.provider.xmi.test,org.eclipse.emf.ecp.view.rule,org.eclipse.emf.ecp.view.rule.model.edit,org.eclipse.emf.ecp.view.rule.test,org.eclipse.emf.ecp.view.rule.ui.swt.test,org.eclipse.emf.ecp.view.table.columnservice,org.eclipse.emf.ecp.view.table.editor,org.eclipse.emf.ecp.view.table.model.edit,org.eclipse.emf.ecp.view.table.ui.swt.test,org.eclipse.emf.ecp.view.template.controls.swt,org.eclipse.emf.ecp.view.template.model.edit,org.eclipse.emf.ecp.view.template.service.test,org.eclipse.emf.ecp.view.test.common,org.eclipse.emf.ecp.view.test.common.swt,org.eclipse.emf.ecp.view.treemasterdetail.fx,org.eclipse.emf.ecp.view.treemasterdetail.model.edit,org.eclipse.emf.ecp.view.ui.editor.test,org.eclipse.emf.ecp.view.unset,org.eclipse.emf.ecp.view.unset.test,org.eclipse.emf.ecp.view.validation.test,org.eclipse.emf.ecp.view.vertical.fx,org.eclipse.emf.ecp.view.vertical.model.edit,org.eclipse.emf.ecp.view.vertical.ui.swt,org.eclipse.emf.ecp.view.vertical.ui.swt.test,org.eclipse.emf.ecp.workspace.ui,org.eclipse.emf.emfstore.fx.projects"/>
-<booleanAttribute key="includeOptional" value="true"/>
+<booleanAttribute key="includeOptional" value="false"/>
 <stringAttribute key="location" value="${workspace_loc}/../junit-workspace"/>
 <listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
 <listEntry value="/org.eclipse.emf.ecp.ecore.editor.test/src/org/eclipse/emf/ecp/ecore/editor/test/AllEcoreGenModelTests.java"/>
@@ -33,8 +32,8 @@
 <stringAttribute key="pde.version" value="3.3"/>
 <stringAttribute key="product" value="org.eclipse.sdk.ide"/>
 <booleanAttribute key="run_in_ui_thread" value="true"/>
-<stringAttribute key="selected_target_plugins" value="com.ibm.icu@default:default,javax.annotation@default:default,javax.inject@default:default,javax.servlet@default:default,javax.xml@default:default,org.apache.ant@default:default,org.apache.batik.css*1.6.0.v201011041432@default:default,org.apache.batik.css*1.7.0.v201011041433@default:default,org.apache.batik.util*1.6.0.v201011041432@default:default,org.apache.batik.util*1.7.0.v201011041433@default:default,org.apache.batik.util.gui*1.6.0.v201011041432@default:default,org.apache.batik.util.gui*1.7.0.v200903091627@default:default,org.apache.commons.codec@default:default,org.apache.commons.logging@default:default,org.apache.lucene.analysis@default:default,org.apache.lucene.core@default:default,org.eclipse.ant.core@default:default,org.eclipse.compare.core@default:default,org.eclipse.core.commands@default:default,org.eclipse.core.contenttype@default:default,org.eclipse.core.databinding.observable@default:default,org.eclipse.core.databinding.property@default:default,org.eclipse.core.databinding@default:default,org.eclipse.core.expressions@default:default,org.eclipse.core.filebuffers@default:default,org.eclipse.core.filesystem.java7@default:default,org.eclipse.core.filesystem.win32.x86_64@default:false,org.eclipse.core.filesystem@default:default,org.eclipse.core.jobs@default:default,org.eclipse.core.net.win32.x86_64@default:default,org.eclipse.core.net@default:default,org.eclipse.core.resources.win32.x86_64@default:false,org.eclipse.core.resources@default:default,org.eclipse.core.runtime.compatibility.registry@default:false,org.eclipse.core.runtime.compatibility@default:default,org.eclipse.core.runtime@default:true,org.eclipse.core.variables@default:default,org.eclipse.debug.core@default:default,org.eclipse.e4.core.commands@default:default,org.eclipse.e4.core.contexts@default:default,org.eclipse.e4.core.di.extensions@default:default,org.eclipse.e4.core.di@default:default,org.eclipse.e4.core.services@default:default,org.eclipse.e4.ui.bindings@default:default,org.eclipse.e4.ui.css.core@default:default,org.eclipse.e4.ui.css.swt.theme@default:default,org.eclipse.e4.ui.css.swt@default:default,org.eclipse.e4.ui.di@default:default,org.eclipse.e4.ui.model.workbench@default:default,org.eclipse.e4.ui.services@default:default,org.eclipse.e4.ui.widgets@default:default,org.eclipse.e4.ui.workbench.addons.swt@default:default,org.eclipse.e4.ui.workbench.renderers.swt@default:default,org.eclipse.e4.ui.workbench.swt@default:default,org.eclipse.e4.ui.workbench3@default:default,org.eclipse.e4.ui.workbench@default:default,org.eclipse.emf.ant@default:default,org.eclipse.emf.cdo.ecore.retrofit@default:false,org.eclipse.emf.codegen.ecore.ui@default:default,org.eclipse.emf.codegen.ecore@default:default,org.eclipse.emf.codegen@default:default,org.eclipse.emf.common.ui@default:default,org.eclipse.emf.common@default:default,org.eclipse.emf.converter@default:default,org.eclipse.emf.databinding.edit@default:default,org.eclipse.emf.databinding@default:default,org.eclipse.emf.ecore.change@default:default,org.eclipse.emf.ecore.edit@default:default,org.eclipse.emf.ecore.editor@default:default,org.eclipse.emf.ecore.xmi@default:default,org.eclipse.emf.ecore@default:default,org.eclipse.emf.edit.ui@default:default,org.eclipse.emf.edit@default:default,org.eclipse.emf.emfstore.client@default:default,org.eclipse.emf.emfstore.common.model@default:default,org.eclipse.emf.emfstore.common@default:default,org.eclipse.emf.emfstore.migration@default:default,org.eclipse.emf.emfstore.server.model@default:default,org.eclipse.emf.emfstore.server@default:default,org.eclipse.emf.importer.ecore@default:default,org.eclipse.emf.importer@default:default,org.eclipse.equinox.app@default:default,org.eclipse.equinox.bidi@default:default,org.eclipse.equinox.common@2:true,org.eclipse.equinox.ds@1:true,org.eclipse.equinox.event@default:default,org.eclipse.equinox.frameworkadmin.equinox@default:default,org.eclipse.equinox.frameworkadmin@default:default,org.eclipse.equinox.http.jetty@default:default,org.eclipse.equinox.http.servlet@default:default,org.eclipse.equinox.p2.artifact.repository@default:default,org.eclipse.equinox.p2.core@default:default,org.eclipse.equinox.p2.director.app@default:default,org.eclipse.equinox.p2.director@default:default,org.eclipse.equinox.p2.engine@default:default,org.eclipse.equinox.p2.garbagecollector@default:default,org.eclipse.equinox.p2.jarprocessor@default:default,org.eclipse.equinox.p2.metadata.repository@default:default,org.eclipse.equinox.p2.metadata@default:default,org.eclipse.equinox.p2.publisher.eclipse@default:default,org.eclipse.equinox.p2.publisher@default:default,org.eclipse.equinox.p2.repository.tools@default:default,org.eclipse.equinox.p2.repository@default:default,org.eclipse.equinox.p2.touchpoint.eclipse@default:default,org.eclipse.equinox.p2.updatesite@default:default,org.eclipse.equinox.preferences@default:default,org.eclipse.equinox.region@default:default,org.eclipse.equinox.registry@default:default,org.eclipse.equinox.security.win32.x86_64@default:false,org.eclipse.equinox.security@default:default,org.eclipse.equinox.simpleconfigurator.manipulator@default:default,org.eclipse.equinox.simpleconfigurator@1:true,org.eclipse.equinox.transforms.hook@default:false,org.eclipse.equinox.util@default:default,org.eclipse.equinox.weaving.hook@default:false,org.eclipse.help.base@default:default,org.eclipse.help.ui@default:default,org.eclipse.help@default:default,org.eclipse.jdt.compiler.apt@default:false,org.eclipse.jdt.compiler.tool@default:false,org.eclipse.jdt.core@default:default,org.eclipse.jdt.debug@default:default,org.eclipse.jdt.launching@default:default,org.eclipse.jetty.continuation@default:default,org.eclipse.jetty.http@default:default,org.eclipse.jetty.io@default:default,org.eclipse.jetty.security@default:default,org.eclipse.jetty.server@default:default,org.eclipse.jetty.servlet@default:default,org.eclipse.jetty.util@default:default,org.eclipse.jface.databinding@default:default,org.eclipse.jface.text@default:default,org.eclipse.jface@default:default,org.eclipse.net4j.util@default:default,org.eclipse.osgi.compatibility.state@default:default,org.eclipse.osgi.services@default:default,org.eclipse.osgi@-1:true,org.eclipse.pde.build@default:default,org.eclipse.pde.core@default:default,org.eclipse.pde@default:default,org.eclipse.swt.win32.win32.x86_64@default:false,org.eclipse.swt@default:default,org.eclipse.swtbot.ant.junit@default:false,org.eclipse.team.core@default:default,org.eclipse.text@default:default,org.eclipse.ui.cheatsheets@default:default,org.eclipse.ui.forms@default:default,org.eclipse.ui.ide@default:default,org.eclipse.ui.intro@default:default,org.eclipse.ui.trace@default:default,org.eclipse.ui.views@default:default,org.eclipse.ui.win32@default:false,org.eclipse.ui.workbench@default:default,org.eclipse.ui@default:default,org.eclipse.update.configurator@3:true,org.hamcrest.core@default:default,org.junit@default:default,org.objenesis@default:default,org.sat4j.core@default:default,org.sat4j.pb@default:default,org.slf4j.api@default:default,org.w3c.css.sac@default:default,org.w3c.dom.events@default:default,org.w3c.dom.smil@default:default,org.w3c.dom.svg@default:default"/>
-<stringAttribute key="selected_workspace_plugins" value="ViewModelProjectTemplate@default:default,org.eclipse.emf.ecp.common@default:default,org.eclipse.emf.ecp.core@default:default,org.eclipse.emf.ecp.diffmerge.context@default:default,org.eclipse.emf.ecp.diffmerge.model.edit@default:default,org.eclipse.emf.ecp.diffmerge.model@default:default,org.eclipse.emf.ecp.diffmerge.renderer.swt@default:default,org.eclipse.emf.ecp.diffmerge.swt@default:default,org.eclipse.emf.ecp.ecore.editor.test@default:default,org.eclipse.emf.ecp.ecore.editor@default:default,org.eclipse.emf.ecp.edit.swt@default:default,org.eclipse.emf.ecp.edit@default:default,org.eclipse.emf.ecp.editor.e3@default:default,org.eclipse.emf.ecp.emfstore.core@default:default,org.eclipse.emf.ecp.explorereditorbridge@default:default,org.eclipse.emf.ecp.ide.editor.view@default:default,org.eclipse.emf.ecp.ide.util@default:default,org.eclipse.emf.ecp.ide.view.service@default:default,org.eclipse.emf.ecp.ui.rcp@default:false,org.eclipse.emf.ecp.ui.validation.e4@default:default,org.eclipse.emf.ecp.ui.validation@default:default,org.eclipse.emf.ecp.ui.view.editor.controls@default:default,org.eclipse.emf.ecp.ui.view.swt@default:default,org.eclipse.emf.ecp.ui.view@default:default,org.eclipse.emf.ecp.ui@default:default,org.eclipse.emf.ecp.validation.diagnostician@default:default,org.eclipse.emf.ecp.validationvieweditorbridge@default:default,org.eclipse.emf.ecp.view.categorization.model@default:default,org.eclipse.emf.ecp.view.context.locale@default:default,org.eclipse.emf.ecp.view.context@default:default,org.eclipse.emf.ecp.view.core.swt@default:default,org.eclipse.emf.ecp.view.group.model@default:default,org.eclipse.emf.ecp.view.group.swt.embedded@default:default,org.eclipse.emf.ecp.view.horizontal.model@default:default,org.eclipse.emf.ecp.view.ideconfig.model@default:default,org.eclipse.emf.ecp.view.label.model@default:default,org.eclipse.emf.ecp.view.model.common@default:default,org.eclipse.emf.ecp.view.model.edit@default:default,org.eclipse.emf.ecp.view.model.editor@default:default,org.eclipse.emf.ecp.view.model.preview.common@default:default,org.eclipse.emf.ecp.view.model.preview.e3@default:default,org.eclipse.emf.ecp.view.model.project.installer@default:default,org.eclipse.emf.ecp.view.model.provider.generator@default:default,org.eclipse.emf.ecp.view.model.provider.xmi@default:default,org.eclipse.emf.ecp.view.model@default:default,org.eclipse.emf.ecp.view.rule.model@default:default,org.eclipse.emf.ecp.view.swt.layout@default:default,org.eclipse.emf.ecp.view.table.model@default:default,org.eclipse.emf.ecp.view.table.ui.swt@default:default,org.eclipse.emf.ecp.view.template.model@default:default,org.eclipse.emf.ecp.view.template.service@default:default,org.eclipse.emf.ecp.view.treemasterdetail.model@default:default,org.eclipse.emf.ecp.view.treemasterdetail.ui.swt@default:default,org.eclipse.emf.ecp.view.validation@default:default,org.eclipse.emf.ecp.view.vertical.model@default:default,org.eclipse.emf.ecp.workspace.core@default:default,org.eclipse.emf.emfstore.examplemodel.edit@default:default,org.eclipse.emf.emfstore.examplemodel@default:default"/>
+<stringAttribute key="selected_target_plugins" value="com.ibm.icu@default:default,javax.annotation@default:default,javax.inject@default:default,org.apache.batik.css*1.8.0.v20170214-1941@default:default,org.apache.batik.util*1.8.0.v20170214-1941@default:default,org.apache.commons.jxpath@default:default,org.apache.felix.scr@default:default,org.eclipse.ant.core@default:default,org.eclipse.compare.core@default:default,org.eclipse.core.commands@default:default,org.eclipse.core.contenttype@default:default,org.eclipse.core.databinding*1.6.100.v20170515-1119@default:default,org.eclipse.core.databinding.observable*1.6.100.v20170515-1119@default:default,org.eclipse.core.databinding.property*1.6.100.v20170515-1119@default:default,org.eclipse.core.expressions@default:default,org.eclipse.core.filebuffers@default:default,org.eclipse.core.filesystem.linux.x86_64@default:false,org.eclipse.core.filesystem@default:default,org.eclipse.core.jobs@default:default,org.eclipse.core.resources@default:default,org.eclipse.core.runtime@default:true,org.eclipse.core.variables@default:default,org.eclipse.debug.core@default:default,org.eclipse.e4.core.commands@default:default,org.eclipse.e4.core.contexts@default:default,org.eclipse.e4.core.di.annotations@default:default,org.eclipse.e4.core.di.extensions.supplier@default:default,org.eclipse.e4.core.di.extensions@default:default,org.eclipse.e4.core.di@default:default,org.eclipse.e4.core.services@default:default,org.eclipse.e4.emf.xpath@default:default,org.eclipse.e4.ui.bindings@default:default,org.eclipse.e4.ui.css.core@default:default,org.eclipse.e4.ui.css.swt.theme@default:default,org.eclipse.e4.ui.css.swt@default:default,org.eclipse.e4.ui.di@default:default,org.eclipse.e4.ui.model.workbench@default:default,org.eclipse.e4.ui.services@default:default,org.eclipse.e4.ui.swt.gtk@default:false,org.eclipse.e4.ui.widgets@default:default,org.eclipse.e4.ui.workbench.addons.swt@default:default,org.eclipse.e4.ui.workbench.renderers.swt@default:default,org.eclipse.e4.ui.workbench.swt@default:default,org.eclipse.e4.ui.workbench3@default:default,org.eclipse.e4.ui.workbench@default:default,org.eclipse.emf.codegen.ecore@default:default,org.eclipse.emf.codegen@default:default,org.eclipse.emf.common.ui@default:default,org.eclipse.emf.common@default:default,org.eclipse.emf.converter@default:default,org.eclipse.emf.ecore.change@default:default,org.eclipse.emf.ecore.edit@default:default,org.eclipse.emf.ecore.editor@default:default,org.eclipse.emf.ecore.xmi@default:default,org.eclipse.emf.ecore@default:default,org.eclipse.emf.edit.ui@default:default,org.eclipse.emf.edit@default:default,org.eclipse.emf.importer.ecore@default:default,org.eclipse.emf.importer@default:default,org.eclipse.equinox.app@default:default,org.eclipse.equinox.bidi@default:default,org.eclipse.equinox.common@2:true,org.eclipse.equinox.frameworkadmin.equinox@default:default,org.eclipse.equinox.frameworkadmin@default:default,org.eclipse.equinox.p2.artifact.repository@default:default,org.eclipse.equinox.p2.core@default:default,org.eclipse.equinox.p2.director.app@default:default,org.eclipse.equinox.p2.director@default:default,org.eclipse.equinox.p2.engine@default:default,org.eclipse.equinox.p2.garbagecollector@default:default,org.eclipse.equinox.p2.jarprocessor@default:default,org.eclipse.equinox.p2.metadata.repository@default:default,org.eclipse.equinox.p2.metadata@default:default,org.eclipse.equinox.p2.publisher.eclipse@default:default,org.eclipse.equinox.p2.publisher@default:default,org.eclipse.equinox.p2.repository.tools@default:default,org.eclipse.equinox.p2.repository@default:default,org.eclipse.equinox.p2.touchpoint.eclipse@default:default,org.eclipse.equinox.preferences@default:default,org.eclipse.equinox.region@default:false,org.eclipse.equinox.registry@default:default,org.eclipse.equinox.security.linux.x86_64@default:false,org.eclipse.equinox.security@default:default,org.eclipse.equinox.simpleconfigurator.manipulator@default:default,org.eclipse.equinox.simpleconfigurator@1:true,org.eclipse.equinox.transforms.hook@default:false,org.eclipse.equinox.weaving.hook@default:false,org.eclipse.help@default:default,org.eclipse.jdt.compiler.apt@default:false,org.eclipse.jdt.compiler.tool@default:false,org.eclipse.jdt.core@default:default,org.eclipse.jdt.debug@default:default,org.eclipse.jdt.launching@default:default,org.eclipse.jface.databinding@default:default,org.eclipse.jface.text@default:default,org.eclipse.jface@default:default,org.eclipse.osgi.compatibility.state@default:false,org.eclipse.osgi.services@default:default,org.eclipse.osgi.util@default:default,org.eclipse.osgi@-1:true,org.eclipse.pde.build@default:default,org.eclipse.pde.core@default:default,org.eclipse.swt.gtk.linux.x86_64@default:false,org.eclipse.swt@default:default,org.eclipse.team.core@default:default,org.eclipse.text@default:default,org.eclipse.ui.cheatsheets@default:default,org.eclipse.ui.forms@default:default,org.eclipse.ui.ide@default:default,org.eclipse.ui.intro@default:default,org.eclipse.ui.trace@default:default,org.eclipse.ui.views@default:default,org.eclipse.ui.workbench@default:default,org.eclipse.ui@default:default,org.eclipse.update.configurator@3:true,org.hamcrest.core@default:default,org.junit@default:default,org.sat4j.core@default:default,org.sat4j.pb@default:default,org.tukaani.xz@default:default,org.w3c.css.sac@default:default"/>
+<stringAttribute key="selected_workspace_plugins" value="org.eclipse.emf.ecp.ecore.editor.test@default:default,org.eclipse.emf.ecp.ecore.editor@default:default"/>
 <booleanAttribute key="show_selected_only" value="false"/>
 <booleanAttribute key="tracing" value="false"/>
 <booleanAttribute key="useCustomFeatures" value="false"/>
diff --git a/tests/org.eclipse.emf.ecp.ecore.editor.test/META-INF/MANIFEST.MF b/tests/org.eclipse.emf.ecp.ecore.editor.test/META-INF/MANIFEST.MF
index 69bcdc1..502d64a 100644
--- a/tests/org.eclipse.emf.ecp.ecore.editor.test/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.emf.ecp.ecore.editor.test/META-INF/MANIFEST.MF
@@ -2,12 +2,13 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: ECore GenModel Test
 Bundle-SymbolicName: org.eclipse.emf.ecp.ecore.editor.test
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
 Export-Package: org.eclipse.emf.ecp.ecore.editor.test;version="1.2.0";x-internal:=true
 Require-Bundle: org.junit;bundle-version="4.0.0",
-  org.eclipse.ui;bundle-version="[3.0.0,4.0.0)",
-  org.eclipse.core.resources;bundle-version="[3.4.0,4.0.0)",
-  org.eclipse.emf.ecp.ecore.editor;bundle-version="[1.16.0,1.17.0)"
+ org.eclipse.ui;bundle-version="[3.0.0,4.0.0)",
+ org.eclipse.core.resources;bundle-version="[3.4.0,4.0.0)",
+ org.eclipse.emf.ecp.ecore.editor;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: J2SE-1.5
 Import-Package: org.eclipse.ui.part;version="0.0.0"
+Automatic-Module-Name: org.eclipse.emf.ecp.ecore.editor.test
diff --git a/tests/org.eclipse.emf.ecp.ecore.editor.test/pom.xml b/tests/org.eclipse.emf.ecp.ecore.editor.test/pom.xml
index 9a5961d..5a9bb16 100644
--- a/tests/org.eclipse.emf.ecp.ecore.editor.test/pom.xml
+++ b/tests/org.eclipse.emf.ecp.ecore.editor.test/pom.xml
@@ -5,11 +5,34 @@
 	<parent>

 		<groupId>org.eclipse.emf.ecp</groupId>

 		<artifactId>ecp-tests-parent</artifactId>

-		<version>1.16.0-SNAPSHOT</version>

+		<version>1.17.0-SNAPSHOT</version>

 		<relativePath>../../releng/org.eclipse.emf.ecp.releng.tests/</relativePath>

 	</parent>

   <groupId>org.eclipse.emf.ecp</groupId>

   <artifactId>org.eclipse.emf.ecp.ecore.editor.test</artifactId>

-  <version>1.16.0-SNAPSHOT</version>

-  <packaging>eclipse-plugin</packaging>

+  <version>1.17.0-SNAPSHOT</version>

+  <packaging>eclipse-test-plugin</packaging>

+  

+  <build>

+		<sourceDirectory>src</sourceDirectory>

+		<plugins>

+			<plugin>

+				<groupId>org.eclipse.tycho</groupId>

+				<artifactId>target-platform-configuration</artifactId>

+				<configuration>

+					<dependency-resolution>

+						<extraRequirements>

+							<requirement>

+								<type>eclipse-plugin</type>

+								<id>org.eclipse.pde.core</id>

+								<versionRange>0.0.0</versionRange>

+							</requirement>

+						</extraRequirements>

+					</dependency-resolution>

+				</configuration>

+			</plugin>

+		</plugins>

+	</build>

+  

+  

 </project>

diff --git a/tests/org.eclipse.emf.ecp.edit.swt.test/META-INF/MANIFEST.MF b/tests/org.eclipse.emf.ecp.edit.swt.test/META-INF/MANIFEST.MF
index e2812cb..1e6535a 100644
--- a/tests/org.eclipse.emf.ecp.edit.swt.test/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.emf.ecp.edit.swt.test/META-INF/MANIFEST.MF
@@ -1,18 +1,27 @@
 Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
-Bundle-Name: Test
-Bundle-SymbolicName: org.eclipse.emf.ecp.edit.swt.test
-Bundle-Version: 1.16.0.qualifier
-Bundle-Vendor: Eclipse Modeling Project
-Fragment-Host: org.eclipse.emf.ecp.edit.swt;bundle-version="[1.16.0,1.17.0)"
-Export-Package: org.eclipse.emf.ecp.edit.internal.swt.table;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.edit.internal.swt.util;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.edit.spi.swt.table;version="1.16.0"
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.emf.ecp.edit.swt.test;singleton:=true
+Bundle-Version: 1.17.0.qualifier
+Bundle-ClassPath: .
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Fragment-Host: org.eclipse.emf.ecp.edit.swt;bundle-version="[1.17.0,1.18.0]"
+Export-Package: org.eclipse.emf.ecp.edit.internal.swt.table;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.edit.internal.swt.util;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.edit.spi.swt.table;version="1.17.0",
+ org.eclipse.emf.ecp.edit.internal.model.testData;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.edit.internal.model.testData.impl;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.edit.internal.model.testData.util;version="1.17.0";x-internal:=true
 Require-Bundle: org.junit;bundle-version="[4.11.0,5.0.0)",
-  org.eclipse.emf.emfstore.examplemodel;bundle-version="[1.5.0,2.0.0)",
-  org.eclipse.emf.ecore.xmi;bundle-version="[2.10.2,3.0.0)",
-  org.eclipse.emf.ecp.test.model;bundle-version="[1.16.0,1.17.0)",
-  org.mockito.mockito-core-hamcrest-modified;bundle-version="[1.9.5,2.0.0)",
-  org.eclipse.emfforms.core.services.locale.default;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services.legacy;bundle-version="[1.16.0,1.17.0)"
+ org.eclipse.emf.emfstore.examplemodel;bundle-version="[1.5.0,2.0.0)",
+ org.eclipse.emf.ecore.xmi;bundle-version="[2.10.2,3.0.0)",
+ org.eclipse.emf.ecp.test.model;bundle-version="[1.17.0,1.18.0]",
+ org.mockito.mockito-core-hamcrest-modified;bundle-version="[1.9.5,2.0.0)",
+ org.eclipse.emfforms.core.services.locale.default;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services.legacy;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.test.common;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.common.prevalidation;bundle-version="[1.17.0,1.18.0]"
+Bundle-ActivationPolicy: lazy
 Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Automatic-Module-Name: org.eclipse.emf.ecp.edit.swt.test
diff --git a/tests/org.eclipse.emf.ecp.edit.swt.test/build.properties b/tests/org.eclipse.emf.ecp.edit.swt.test/build.properties
index 34d2e4d..4aacc71 100644
--- a/tests/org.eclipse.emf.ecp.edit.swt.test/build.properties
+++ b/tests/org.eclipse.emf.ecp.edit.swt.test/build.properties
@@ -1,4 +1,18 @@
+# Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+# EclipseSource Muenchen GmbH - initial API and implementation
+
+bin.includes = .,\
+               model/,\
+               META-INF/,\
+               fragment.xml,\
+               plugin.properties
+jars.compile.order = .
 source.. = src/
 output.. = bin/
-bin.includes = META-INF/,\
-               .
diff --git a/tests/org.eclipse.emf.ecp.edit.swt.test/fragment.xml b/tests/org.eclipse.emf.ecp.edit.swt.test/fragment.xml
new file mode 100644
index 0000000..ed46ee5
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.edit.swt.test/fragment.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<!--
+ Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ EclipseSource Muenchen GmbH - initial API and implementation
+-->
+
+<plugin>
+
+   <extension point="org.eclipse.emf.ecore.generated_package">
+      <!-- @generated testdata -->
+      <package
+            uri="org.eclipse.emf.ecp.edit.swt.test.data"
+            class="org.eclipse.emf.ecp.edit.internal.model.testData.TestDataPackage"
+            genModel="model/testdata.genmodel"/>
+   </extension>
+
+</plugin>
diff --git a/tests/org.eclipse.emf.ecp.edit.swt.test/model/testdata.ecore b/tests/org.eclipse.emf.ecp.edit.swt.test/model/testdata.ecore
new file mode 100644
index 0000000..4817fb7
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.edit.swt.test/model/testdata.ecore
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="testData" nsURI="org.eclipse.emf.ecp.edit.swt.test.data" nsPrefix="testData">
+  <eClassifiers xsi:type="ecore:EClass" name="TestData">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="string" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="boolean" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="integer" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="long" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//ELong"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="float" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EFloat"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="double" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="stringMax8" eType="#//StringWithMaxLength8"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EDataType" name="StringWithMaxLength8" instanceClassName="java.lang.String">
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="maxLength" value="8"/>
+    </eAnnotations>
+  </eClassifiers>
+</ecore:EPackage>
diff --git a/tests/org.eclipse.emf.ecp.edit.swt.test/model/testdata.genmodel b/tests/org.eclipse.emf.ecp.edit.swt.test/model/testdata.genmodel
new file mode 100644
index 0000000..0b36534
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.edit.swt.test/model/testdata.genmodel
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<genmodel:GenModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
+    xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel" copyrightText="Copyright (c) 2011-2018 EclipseSource Muenchen GmbH and others.&#xD;&#xA;&#xD;&#xA;All rights reserved. This program and the accompanying materials&#xD;&#xA;are made available under the terms of the Eclipse Public License v1.0&#xD;&#xA;which accompanies this distribution, and is available at&#xD;&#xA;http://www.eclipse.org/legal/epl-v10.html&#xD;&#xA;&#xD;&#xA;Contributors:&#xD;&#xA;EclipseSource Muenchen GmbH - initial API and implementation"
+    modelDirectory="/org.eclipse.emf.ecp.edit.swt.test/src" modelPluginID="org.eclipse.emf.ecp.edit.swt.test"
+    modelName="Testdata" nonNLSMarkers="true" rootExtendsClass="org.eclipse.emf.ecore.impl.MinimalEObjectImpl$Container"
+    codeFormatting="true" importerID="org.eclipse.emf.importer.ecore" complianceLevel="5.0"
+    copyrightFields="false" language="" operationReflection="true" importOrganizing="true"
+    cleanup="true">
+  <foreignModel>testdata.ecore</foreignModel>
+  <genPackages prefix="TestData" basePackage="org.eclipse.emf.ecp.edit.internal.model"
+      disposableProviderFactory="true" ecorePackage="testdata.ecore#/">
+    <genDataTypes ecoreDataType="testdata.ecore#//StringWithMaxLength8"/>
+    <genClasses ecoreClass="testdata.ecore#//TestData">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute testdata.ecore#//TestData/string"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute testdata.ecore#//TestData/boolean"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute testdata.ecore#//TestData/integer"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute testdata.ecore#//TestData/long"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute testdata.ecore#//TestData/float"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute testdata.ecore#//TestData/double"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute testdata.ecore#//TestData/stringMax8"/>
+    </genClasses>
+  </genPackages>
+</genmodel:GenModel>
diff --git a/tests/org.eclipse.emf.ecp.edit.swt.test/plugin.properties b/tests/org.eclipse.emf.ecp.edit.swt.test/plugin.properties
new file mode 100644
index 0000000..a2d9fb2
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.edit.swt.test/plugin.properties
@@ -0,0 +1,12 @@
+# Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+# EclipseSource Muenchen GmbH - initial API and implementation
+
+pluginName = Testdata Model
+providerName = Eclipse Modeling Project
diff --git a/tests/org.eclipse.emf.ecp.edit.swt.test/pom.xml b/tests/org.eclipse.emf.ecp.edit.swt.test/pom.xml
index 2fb3ce4..ce0b47f 100644
--- a/tests/org.eclipse.emf.ecp.edit.swt.test/pom.xml
+++ b/tests/org.eclipse.emf.ecp.edit.swt.test/pom.xml
@@ -6,12 +6,12 @@
 	<parent>
 		<groupId>org.eclipse.emf.ecp</groupId>
 		<artifactId>ecp-tests-parent</artifactId>
-		<version>1.16.0-SNAPSHOT</version>
+		<version>1.17.0-SNAPSHOT</version>
 		<relativePath>../../releng/org.eclipse.emf.ecp.releng.tests/</relativePath>
 	</parent>
 	<groupId>org.eclipse.emf.ecp</groupId>
 	<artifactId>org.eclipse.emf.ecp.edit.swt.test</artifactId>
-	<version>1.16.0-SNAPSHOT</version>
+	<version>1.17.0-SNAPSHOT</version>
 	<packaging>eclipse-test-plugin</packaging>
 
 	<!-- When signing bundles we get a security exception using maven-surefire. 
diff --git a/tests/org.eclipse.emf.ecp.edit.swt.test/src/org/eclipse/emf/ecp/edit/internal/model/testData/TestData.java b/tests/org.eclipse.emf.ecp.edit.swt.test/src/org/eclipse/emf/ecp/edit/internal/model/testData/TestData.java
new file mode 100644
index 0000000..9d383e9
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.edit.swt.test/src/org/eclipse/emf/ecp/edit/internal/model/testData/TestData.java
@@ -0,0 +1,242 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Muenchen GmbH - initial API and implementation
+ */
+package org.eclipse.emf.ecp.edit.internal.model.testData;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Test Data</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.emf.ecp.edit.internal.model.testData.TestData#getString <em>String</em>}</li>
+ * <li>{@link org.eclipse.emf.ecp.edit.internal.model.testData.TestData#isBoolean <em>Boolean</em>}</li>
+ * <li>{@link org.eclipse.emf.ecp.edit.internal.model.testData.TestData#getInteger <em>Integer</em>}</li>
+ * <li>{@link org.eclipse.emf.ecp.edit.internal.model.testData.TestData#getLong <em>Long</em>}</li>
+ * <li>{@link org.eclipse.emf.ecp.edit.internal.model.testData.TestData#getFloat <em>Float</em>}</li>
+ * <li>{@link org.eclipse.emf.ecp.edit.internal.model.testData.TestData#getDouble <em>Double</em>}</li>
+ * <li>{@link org.eclipse.emf.ecp.edit.internal.model.testData.TestData#getStringMax8 <em>String Max8</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.emf.ecp.edit.internal.model.testData.TestDataPackage#getTestData()
+ * @model
+ * @generated
+ */
+public interface TestData extends EObject {
+	/**
+	 * Returns the value of the '<em><b>String</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>String</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the value of the '<em>String</em>' attribute.
+	 * @see #setString(String)
+	 * @see org.eclipse.emf.ecp.edit.internal.model.testData.TestDataPackage#getTestData_String()
+	 * @model
+	 * @generated
+	 */
+	String getString();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.emf.ecp.edit.internal.model.testData.TestData#getString
+	 * <em>String</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @param value the new value of the '<em>String</em>' attribute.
+	 * @see #getString()
+	 * @generated
+	 */
+	void setString(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Boolean</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Boolean</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the value of the '<em>Boolean</em>' attribute.
+	 * @see #setBoolean(boolean)
+	 * @see org.eclipse.emf.ecp.edit.internal.model.testData.TestDataPackage#getTestData_Boolean()
+	 * @model
+	 * @generated
+	 */
+	boolean isBoolean();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.emf.ecp.edit.internal.model.testData.TestData#isBoolean
+	 * <em>Boolean</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @param value the new value of the '<em>Boolean</em>' attribute.
+	 * @see #isBoolean()
+	 * @generated
+	 */
+	void setBoolean(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>Integer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Integer</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the value of the '<em>Integer</em>' attribute.
+	 * @see #setInteger(int)
+	 * @see org.eclipse.emf.ecp.edit.internal.model.testData.TestDataPackage#getTestData_Integer()
+	 * @model
+	 * @generated
+	 */
+	int getInteger();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.emf.ecp.edit.internal.model.testData.TestData#getInteger
+	 * <em>Integer</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @param value the new value of the '<em>Integer</em>' attribute.
+	 * @see #getInteger()
+	 * @generated
+	 */
+	void setInteger(int value);
+
+	/**
+	 * Returns the value of the '<em><b>Long</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Long</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the value of the '<em>Long</em>' attribute.
+	 * @see #setLong(long)
+	 * @see org.eclipse.emf.ecp.edit.internal.model.testData.TestDataPackage#getTestData_Long()
+	 * @model
+	 * @generated
+	 */
+	long getLong();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.emf.ecp.edit.internal.model.testData.TestData#getLong <em>Long</em>}'
+	 * attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @param value the new value of the '<em>Long</em>' attribute.
+	 * @see #getLong()
+	 * @generated
+	 */
+	void setLong(long value);
+
+	/**
+	 * Returns the value of the '<em><b>Float</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Float</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the value of the '<em>Float</em>' attribute.
+	 * @see #setFloat(float)
+	 * @see org.eclipse.emf.ecp.edit.internal.model.testData.TestDataPackage#getTestData_Float()
+	 * @model
+	 * @generated
+	 */
+	float getFloat();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.emf.ecp.edit.internal.model.testData.TestData#getFloat <em>Float</em>}'
+	 * attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @param value the new value of the '<em>Float</em>' attribute.
+	 * @see #getFloat()
+	 * @generated
+	 */
+	void setFloat(float value);
+
+	/**
+	 * Returns the value of the '<em><b>Double</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Double</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the value of the '<em>Double</em>' attribute.
+	 * @see #setDouble(double)
+	 * @see org.eclipse.emf.ecp.edit.internal.model.testData.TestDataPackage#getTestData_Double()
+	 * @model
+	 * @generated
+	 */
+	double getDouble();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.emf.ecp.edit.internal.model.testData.TestData#getDouble
+	 * <em>Double</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @param value the new value of the '<em>Double</em>' attribute.
+	 * @see #getDouble()
+	 * @generated
+	 */
+	void setDouble(double value);
+
+	/**
+	 * Returns the value of the '<em><b>String Max8</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>String Max8</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the value of the '<em>String Max8</em>' attribute.
+	 * @see #setStringMax8(String)
+	 * @see org.eclipse.emf.ecp.edit.internal.model.testData.TestDataPackage#getTestData_StringMax8()
+	 * @model dataType="org.eclipse.emf.ecp.edit.internal.model.testData.StringWithMaxLength8"
+	 * @generated
+	 */
+	String getStringMax8();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.emf.ecp.edit.internal.model.testData.TestData#getStringMax8 <em>String
+	 * Max8</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @param value the new value of the '<em>String Max8</em>' attribute.
+	 * @see #getStringMax8()
+	 * @generated
+	 */
+	void setStringMax8(String value);
+
+} // TestData
diff --git a/tests/org.eclipse.emf.ecp.edit.swt.test/src/org/eclipse/emf/ecp/edit/internal/model/testData/TestDataFactory.java b/tests/org.eclipse.emf.ecp.edit.swt.test/src/org/eclipse/emf/ecp/edit/internal/model/testData/TestDataFactory.java
new file mode 100644
index 0000000..a427078
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.edit.swt.test/src/org/eclipse/emf/ecp/edit/internal/model/testData/TestDataFactory.java
@@ -0,0 +1,55 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Muenchen GmbH - initial API and implementation
+ */
+package org.eclipse.emf.ecp.edit.internal.model.testData;
+
+import org.eclipse.emf.ecore.EFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Factory</b> for the model.
+ * It provides a create method for each non-abstract class of the model.
+ * <!-- end-user-doc -->
+ * 
+ * @see org.eclipse.emf.ecp.edit.internal.model.testData.TestDataPackage
+ * @generated
+ */
+public interface TestDataFactory extends EFactory {
+	/**
+	 * The singleton instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	TestDataFactory eINSTANCE = org.eclipse.emf.ecp.edit.internal.model.testData.impl.TestDataFactoryImpl.init();
+
+	/**
+	 * Returns a new object of class '<em>Test Data</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return a new object of class '<em>Test Data</em>'.
+	 * @generated
+	 */
+	TestData createTestData();
+
+	/**
+	 * Returns the package supported by this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the package supported by this factory.
+	 * @generated
+	 */
+	TestDataPackage getTestDataPackage();
+
+} // TestDataFactory
diff --git a/tests/org.eclipse.emf.ecp.edit.swt.test/src/org/eclipse/emf/ecp/edit/internal/model/testData/TestDataPackage.java b/tests/org.eclipse.emf.ecp.edit.swt.test/src/org/eclipse/emf/ecp/edit/internal/model/testData/TestDataPackage.java
new file mode 100644
index 0000000..449960e
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.edit.swt.test/src/org/eclipse/emf/ecp/edit/internal/model/testData/TestDataPackage.java
@@ -0,0 +1,415 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Muenchen GmbH - initial API and implementation
+ */
+package org.eclipse.emf.ecp.edit.internal.model.testData;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EDataType;
+import org.eclipse.emf.ecore.EPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Package</b> for the model.
+ * It contains accessors for the meta objects to represent
+ * <ul>
+ * <li>each class,</li>
+ * <li>each feature of each class,</li>
+ * <li>each operation of each class,</li>
+ * <li>each enum,</li>
+ * <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * 
+ * @see org.eclipse.emf.ecp.edit.internal.model.testData.TestDataFactory
+ * @model kind="package"
+ * @generated
+ */
+public interface TestDataPackage extends EPackage {
+	/**
+	 * The package name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	String eNAME = "testData"; //$NON-NLS-1$
+
+	/**
+	 * The package namespace URI.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	String eNS_URI = "org.eclipse.emf.ecp.edit.swt.test.data"; //$NON-NLS-1$
+
+	/**
+	 * The package namespace name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	String eNS_PREFIX = "testData"; //$NON-NLS-1$
+
+	/**
+	 * The singleton instance of the package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	TestDataPackage eINSTANCE = org.eclipse.emf.ecp.edit.internal.model.testData.impl.TestDataPackageImpl.init();
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.emf.ecp.edit.internal.model.testData.impl.TestDataImpl <em>Test
+	 * Data</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see org.eclipse.emf.ecp.edit.internal.model.testData.impl.TestDataImpl
+	 * @see org.eclipse.emf.ecp.edit.internal.model.testData.impl.TestDataPackageImpl#getTestData()
+	 * @generated
+	 */
+	int TEST_DATA = 0;
+
+	/**
+	 * The feature id for the '<em><b>String</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int TEST_DATA__STRING = 0;
+
+	/**
+	 * The feature id for the '<em><b>Boolean</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int TEST_DATA__BOOLEAN = 1;
+
+	/**
+	 * The feature id for the '<em><b>Integer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int TEST_DATA__INTEGER = 2;
+
+	/**
+	 * The feature id for the '<em><b>Long</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int TEST_DATA__LONG = 3;
+
+	/**
+	 * The feature id for the '<em><b>Float</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int TEST_DATA__FLOAT = 4;
+
+	/**
+	 * The feature id for the '<em><b>Double</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int TEST_DATA__DOUBLE = 5;
+
+	/**
+	 * The feature id for the '<em><b>String Max8</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int TEST_DATA__STRING_MAX8 = 6;
+
+	/**
+	 * The number of structural features of the '<em>Test Data</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int TEST_DATA_FEATURE_COUNT = 7;
+
+	/**
+	 * The number of operations of the '<em>Test Data</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int TEST_DATA_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the '<em>String With Max Length8</em>' data type.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see java.lang.String
+	 * @see org.eclipse.emf.ecp.edit.internal.model.testData.impl.TestDataPackageImpl#getStringWithMaxLength8()
+	 * @generated
+	 */
+	int STRING_WITH_MAX_LENGTH8 = 1;
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.emf.ecp.edit.internal.model.testData.TestData <em>Test
+	 * Data</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for class '<em>Test Data</em>'.
+	 * @see org.eclipse.emf.ecp.edit.internal.model.testData.TestData
+	 * @generated
+	 */
+	EClass getTestData();
+
+	/**
+	 * Returns the meta object for the attribute
+	 * '{@link org.eclipse.emf.ecp.edit.internal.model.testData.TestData#getString <em>String</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for the attribute '<em>String</em>'.
+	 * @see org.eclipse.emf.ecp.edit.internal.model.testData.TestData#getString()
+	 * @see #getTestData()
+	 * @generated
+	 */
+	EAttribute getTestData_String();
+
+	/**
+	 * Returns the meta object for the attribute
+	 * '{@link org.eclipse.emf.ecp.edit.internal.model.testData.TestData#isBoolean <em>Boolean</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for the attribute '<em>Boolean</em>'.
+	 * @see org.eclipse.emf.ecp.edit.internal.model.testData.TestData#isBoolean()
+	 * @see #getTestData()
+	 * @generated
+	 */
+	EAttribute getTestData_Boolean();
+
+	/**
+	 * Returns the meta object for the attribute
+	 * '{@link org.eclipse.emf.ecp.edit.internal.model.testData.TestData#getInteger <em>Integer</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for the attribute '<em>Integer</em>'.
+	 * @see org.eclipse.emf.ecp.edit.internal.model.testData.TestData#getInteger()
+	 * @see #getTestData()
+	 * @generated
+	 */
+	EAttribute getTestData_Integer();
+
+	/**
+	 * Returns the meta object for the attribute
+	 * '{@link org.eclipse.emf.ecp.edit.internal.model.testData.TestData#getLong <em>Long</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for the attribute '<em>Long</em>'.
+	 * @see org.eclipse.emf.ecp.edit.internal.model.testData.TestData#getLong()
+	 * @see #getTestData()
+	 * @generated
+	 */
+	EAttribute getTestData_Long();
+
+	/**
+	 * Returns the meta object for the attribute
+	 * '{@link org.eclipse.emf.ecp.edit.internal.model.testData.TestData#getFloat <em>Float</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for the attribute '<em>Float</em>'.
+	 * @see org.eclipse.emf.ecp.edit.internal.model.testData.TestData#getFloat()
+	 * @see #getTestData()
+	 * @generated
+	 */
+	EAttribute getTestData_Float();
+
+	/**
+	 * Returns the meta object for the attribute
+	 * '{@link org.eclipse.emf.ecp.edit.internal.model.testData.TestData#getDouble <em>Double</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for the attribute '<em>Double</em>'.
+	 * @see org.eclipse.emf.ecp.edit.internal.model.testData.TestData#getDouble()
+	 * @see #getTestData()
+	 * @generated
+	 */
+	EAttribute getTestData_Double();
+
+	/**
+	 * Returns the meta object for the attribute
+	 * '{@link org.eclipse.emf.ecp.edit.internal.model.testData.TestData#getStringMax8 <em>String Max8</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for the attribute '<em>String Max8</em>'.
+	 * @see org.eclipse.emf.ecp.edit.internal.model.testData.TestData#getStringMax8()
+	 * @see #getTestData()
+	 * @generated
+	 */
+	EAttribute getTestData_StringMax8();
+
+	/**
+	 * Returns the meta object for data type '{@link java.lang.String <em>String With Max Length8</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for data type '<em>String With Max Length8</em>'.
+	 * @see java.lang.String
+	 * @model instanceClass="java.lang.String"
+	 *        extendedMetaData="maxLength='8'"
+	 * @generated
+	 */
+	EDataType getStringWithMaxLength8();
+
+	/**
+	 * 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.
+	 * @generated
+	 */
+	TestDataFactory getTestDataFactory();
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * Defines literals for the meta objects that represent
+	 * <ul>
+	 * <li>each class,</li>
+	 * <li>each feature of each class,</li>
+	 * <li>each operation of each class,</li>
+	 * <li>each enum,</li>
+	 * <li>and each data type</li>
+	 * </ul>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	interface Literals {
+		/**
+		 * The meta object literal for the '{@link org.eclipse.emf.ecp.edit.internal.model.testData.impl.TestDataImpl
+		 * <em>Test Data</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * 
+		 * @see org.eclipse.emf.ecp.edit.internal.model.testData.impl.TestDataImpl
+		 * @see org.eclipse.emf.ecp.edit.internal.model.testData.impl.TestDataPackageImpl#getTestData()
+		 * @generated
+		 */
+		EClass TEST_DATA = eINSTANCE.getTestData();
+
+		/**
+		 * The meta object literal for the '<em><b>String</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * 
+		 * @generated
+		 */
+		EAttribute TEST_DATA__STRING = eINSTANCE.getTestData_String();
+
+		/**
+		 * The meta object literal for the '<em><b>Boolean</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * 
+		 * @generated
+		 */
+		EAttribute TEST_DATA__BOOLEAN = eINSTANCE.getTestData_Boolean();
+
+		/**
+		 * The meta object literal for the '<em><b>Integer</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * 
+		 * @generated
+		 */
+		EAttribute TEST_DATA__INTEGER = eINSTANCE.getTestData_Integer();
+
+		/**
+		 * The meta object literal for the '<em><b>Long</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * 
+		 * @generated
+		 */
+		EAttribute TEST_DATA__LONG = eINSTANCE.getTestData_Long();
+
+		/**
+		 * The meta object literal for the '<em><b>Float</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * 
+		 * @generated
+		 */
+		EAttribute TEST_DATA__FLOAT = eINSTANCE.getTestData_Float();
+
+		/**
+		 * The meta object literal for the '<em><b>Double</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * 
+		 * @generated
+		 */
+		EAttribute TEST_DATA__DOUBLE = eINSTANCE.getTestData_Double();
+
+		/**
+		 * The meta object literal for the '<em><b>String Max8</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * 
+		 * @generated
+		 */
+		EAttribute TEST_DATA__STRING_MAX8 = eINSTANCE.getTestData_StringMax8();
+
+		/**
+		 * The meta object literal for the '<em>String With Max Length8</em>' data type.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * 
+		 * @see java.lang.String
+		 * @see org.eclipse.emf.ecp.edit.internal.model.testData.impl.TestDataPackageImpl#getStringWithMaxLength8()
+		 * @generated
+		 */
+		EDataType STRING_WITH_MAX_LENGTH8 = eINSTANCE.getStringWithMaxLength8();
+
+	}
+
+} // TestDataPackage
diff --git a/tests/org.eclipse.emf.ecp.edit.swt.test/src/org/eclipse/emf/ecp/edit/internal/model/testData/impl/TestDataFactoryImpl.java b/tests/org.eclipse.emf.ecp.edit.swt.test/src/org/eclipse/emf/ecp/edit/internal/model/testData/impl/TestDataFactoryImpl.java
new file mode 100644
index 0000000..ae0f6f4
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.edit.swt.test/src/org/eclipse/emf/ecp/edit/internal/model/testData/impl/TestDataFactoryImpl.java
@@ -0,0 +1,164 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Muenchen GmbH - initial API and implementation
+ */
+package org.eclipse.emf.ecp.edit.internal.model.testData.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EDataType;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+import org.eclipse.emf.ecp.edit.internal.model.testData.TestData;
+import org.eclipse.emf.ecp.edit.internal.model.testData.TestDataFactory;
+import org.eclipse.emf.ecp.edit.internal.model.testData.TestDataPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * 
+ * @generated
+ */
+public class TestDataFactoryImpl extends EFactoryImpl implements TestDataFactory {
+	/**
+	 * Creates the default factory implementation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public static TestDataFactory init() {
+		try {
+			final TestDataFactory theTestDataFactory = (TestDataFactory) EPackage.Registry.INSTANCE
+				.getEFactory(TestDataPackage.eNS_URI);
+			if (theTestDataFactory != null) {
+				return theTestDataFactory;
+			}
+		} catch (final Exception exception) {
+			EcorePlugin.INSTANCE.log(exception);
+		}
+		return new TestDataFactoryImpl();
+	}
+
+	/**
+	 * Creates an instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public TestDataFactoryImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public EObject create(EClass eClass) {
+		switch (eClass.getClassifierID()) {
+		case TestDataPackage.TEST_DATA:
+			return createTestData();
+		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
+	public Object createFromString(EDataType eDataType, String initialValue) {
+		switch (eDataType.getClassifierID()) {
+		case TestDataPackage.STRING_WITH_MAX_LENGTH8:
+			return createStringWithMaxLength8FromString(eDataType, initialValue);
+		default:
+			throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier"); //$NON-NLS-1$ //$NON-NLS-2$
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public String convertToString(EDataType eDataType, Object instanceValue) {
+		switch (eDataType.getClassifierID()) {
+		case TestDataPackage.STRING_WITH_MAX_LENGTH8:
+			return convertStringWithMaxLength8ToString(eDataType, instanceValue);
+		default:
+			throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier"); //$NON-NLS-1$ //$NON-NLS-2$
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public TestData createTestData() {
+		final TestDataImpl testData = new TestDataImpl();
+		return testData;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public String createStringWithMaxLength8FromString(EDataType eDataType, String initialValue) {
+		return (String) super.createFromString(eDataType, initialValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public String convertStringWithMaxLength8ToString(EDataType eDataType, Object instanceValue) {
+		return super.convertToString(eDataType, instanceValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public TestDataPackage getTestDataPackage() {
+		return (TestDataPackage) getEPackage();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @deprecated
+	 * @generated
+	 */
+	@Deprecated
+	public static TestDataPackage getPackage() {
+		return TestDataPackage.eINSTANCE;
+	}
+
+} // TestDataFactoryImpl
diff --git a/tests/org.eclipse.emf.ecp.edit.swt.test/src/org/eclipse/emf/ecp/edit/internal/model/testData/impl/TestDataImpl.java b/tests/org.eclipse.emf.ecp.edit.swt.test/src/org/eclipse/emf/ecp/edit/internal/model/testData/impl/TestDataImpl.java
new file mode 100644
index 0000000..cf46b28
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.edit.swt.test/src/org/eclipse/emf/ecp/edit/internal/model/testData/impl/TestDataImpl.java
@@ -0,0 +1,543 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Muenchen GmbH - initial API and implementation
+ */
+package org.eclipse.emf.ecp.edit.internal.model.testData.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+import org.eclipse.emf.ecp.edit.internal.model.testData.TestData;
+import org.eclipse.emf.ecp.edit.internal.model.testData.TestDataPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Test Data</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.emf.ecp.edit.internal.model.testData.impl.TestDataImpl#getString <em>String</em>}</li>
+ * <li>{@link org.eclipse.emf.ecp.edit.internal.model.testData.impl.TestDataImpl#isBoolean <em>Boolean</em>}</li>
+ * <li>{@link org.eclipse.emf.ecp.edit.internal.model.testData.impl.TestDataImpl#getInteger <em>Integer</em>}</li>
+ * <li>{@link org.eclipse.emf.ecp.edit.internal.model.testData.impl.TestDataImpl#getLong <em>Long</em>}</li>
+ * <li>{@link org.eclipse.emf.ecp.edit.internal.model.testData.impl.TestDataImpl#getFloat <em>Float</em>}</li>
+ * <li>{@link org.eclipse.emf.ecp.edit.internal.model.testData.impl.TestDataImpl#getDouble <em>Double</em>}</li>
+ * <li>{@link org.eclipse.emf.ecp.edit.internal.model.testData.impl.TestDataImpl#getStringMax8 <em>String
+ * Max8</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class TestDataImpl extends MinimalEObjectImpl.Container implements TestData {
+	/**
+	 * The default value of the '{@link #getString() <em>String</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see #getString()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String STRING_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getString() <em>String</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see #getString()
+	 * @generated
+	 * @ordered
+	 */
+	protected String string = STRING_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #isBoolean() <em>Boolean</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see #isBoolean()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean BOOLEAN_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isBoolean() <em>Boolean</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see #isBoolean()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean boolean_ = BOOLEAN_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getInteger() <em>Integer</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see #getInteger()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int INTEGER_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getInteger() <em>Integer</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see #getInteger()
+	 * @generated
+	 * @ordered
+	 */
+	protected int integer = INTEGER_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getLong() <em>Long</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see #getLong()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final long LONG_EDEFAULT = 0L;
+
+	/**
+	 * The cached value of the '{@link #getLong() <em>Long</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see #getLong()
+	 * @generated
+	 * @ordered
+	 */
+	protected long long_ = LONG_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getFloat() <em>Float</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see #getFloat()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final float FLOAT_EDEFAULT = 0.0F;
+
+	/**
+	 * The cached value of the '{@link #getFloat() <em>Float</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see #getFloat()
+	 * @generated
+	 * @ordered
+	 */
+	protected float float_ = FLOAT_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getDouble() <em>Double</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see #getDouble()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final double DOUBLE_EDEFAULT = 0.0;
+
+	/**
+	 * The cached value of the '{@link #getDouble() <em>Double</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see #getDouble()
+	 * @generated
+	 * @ordered
+	 */
+	protected double double_ = DOUBLE_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getStringMax8() <em>String Max8</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see #getStringMax8()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String STRING_MAX8_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getStringMax8() <em>String Max8</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see #getStringMax8()
+	 * @generated
+	 * @ordered
+	 */
+	protected String stringMax8 = STRING_MAX8_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	protected TestDataImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return TestDataPackage.Literals.TEST_DATA;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public String getString() {
+		return string;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public void setString(String newString) {
+		final String oldString = string;
+		string = newString;
+		if (eNotificationRequired()) {
+			eNotify(
+				new ENotificationImpl(this, Notification.SET, TestDataPackage.TEST_DATA__STRING, oldString, string));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public boolean isBoolean() {
+		return boolean_;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public void setBoolean(boolean newBoolean) {
+		final boolean oldBoolean = boolean_;
+		boolean_ = newBoolean;
+		if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, TestDataPackage.TEST_DATA__BOOLEAN, oldBoolean,
+				boolean_));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public int getInteger() {
+		return integer;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public void setInteger(int newInteger) {
+		final int oldInteger = integer;
+		integer = newInteger;
+		if (eNotificationRequired()) {
+			eNotify(
+				new ENotificationImpl(this, Notification.SET, TestDataPackage.TEST_DATA__INTEGER, oldInteger, integer));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public long getLong() {
+		return long_;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public void setLong(long newLong) {
+		final long oldLong = long_;
+		long_ = newLong;
+		if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, TestDataPackage.TEST_DATA__LONG, oldLong, long_));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public float getFloat() {
+		return float_;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public void setFloat(float newFloat) {
+		final float oldFloat = float_;
+		float_ = newFloat;
+		if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, TestDataPackage.TEST_DATA__FLOAT, oldFloat, float_));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public double getDouble() {
+		return double_;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public void setDouble(double newDouble) {
+		final double oldDouble = double_;
+		double_ = newDouble;
+		if (eNotificationRequired()) {
+			eNotify(
+				new ENotificationImpl(this, Notification.SET, TestDataPackage.TEST_DATA__DOUBLE, oldDouble, double_));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public String getStringMax8() {
+		return stringMax8;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public void setStringMax8(String newStringMax8) {
+		final String oldStringMax8 = stringMax8;
+		stringMax8 = newStringMax8;
+		if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, TestDataPackage.TEST_DATA__STRING_MAX8, oldStringMax8,
+				stringMax8));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case TestDataPackage.TEST_DATA__STRING:
+			return getString();
+		case TestDataPackage.TEST_DATA__BOOLEAN:
+			return isBoolean();
+		case TestDataPackage.TEST_DATA__INTEGER:
+			return getInteger();
+		case TestDataPackage.TEST_DATA__LONG:
+			return getLong();
+		case TestDataPackage.TEST_DATA__FLOAT:
+			return getFloat();
+		case TestDataPackage.TEST_DATA__DOUBLE:
+			return getDouble();
+		case TestDataPackage.TEST_DATA__STRING_MAX8:
+			return getStringMax8();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case TestDataPackage.TEST_DATA__STRING:
+			setString((String) newValue);
+			return;
+		case TestDataPackage.TEST_DATA__BOOLEAN:
+			setBoolean((Boolean) newValue);
+			return;
+		case TestDataPackage.TEST_DATA__INTEGER:
+			setInteger((Integer) newValue);
+			return;
+		case TestDataPackage.TEST_DATA__LONG:
+			setLong((Long) newValue);
+			return;
+		case TestDataPackage.TEST_DATA__FLOAT:
+			setFloat((Float) newValue);
+			return;
+		case TestDataPackage.TEST_DATA__DOUBLE:
+			setDouble((Double) newValue);
+			return;
+		case TestDataPackage.TEST_DATA__STRING_MAX8:
+			setStringMax8((String) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case TestDataPackage.TEST_DATA__STRING:
+			setString(STRING_EDEFAULT);
+			return;
+		case TestDataPackage.TEST_DATA__BOOLEAN:
+			setBoolean(BOOLEAN_EDEFAULT);
+			return;
+		case TestDataPackage.TEST_DATA__INTEGER:
+			setInteger(INTEGER_EDEFAULT);
+			return;
+		case TestDataPackage.TEST_DATA__LONG:
+			setLong(LONG_EDEFAULT);
+			return;
+		case TestDataPackage.TEST_DATA__FLOAT:
+			setFloat(FLOAT_EDEFAULT);
+			return;
+		case TestDataPackage.TEST_DATA__DOUBLE:
+			setDouble(DOUBLE_EDEFAULT);
+			return;
+		case TestDataPackage.TEST_DATA__STRING_MAX8:
+			setStringMax8(STRING_MAX8_EDEFAULT);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case TestDataPackage.TEST_DATA__STRING:
+			return STRING_EDEFAULT == null ? string != null : !STRING_EDEFAULT.equals(string);
+		case TestDataPackage.TEST_DATA__BOOLEAN:
+			return boolean_ != BOOLEAN_EDEFAULT;
+		case TestDataPackage.TEST_DATA__INTEGER:
+			return integer != INTEGER_EDEFAULT;
+		case TestDataPackage.TEST_DATA__LONG:
+			return long_ != LONG_EDEFAULT;
+		case TestDataPackage.TEST_DATA__FLOAT:
+			return float_ != FLOAT_EDEFAULT;
+		case TestDataPackage.TEST_DATA__DOUBLE:
+			return double_ != DOUBLE_EDEFAULT;
+		case TestDataPackage.TEST_DATA__STRING_MAX8:
+			return STRING_MAX8_EDEFAULT == null ? stringMax8 != null : !STRING_MAX8_EDEFAULT.equals(stringMax8);
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) {
+			return super.toString();
+		}
+
+		final StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (string: "); //$NON-NLS-1$
+		result.append(string);
+		result.append(", boolean: "); //$NON-NLS-1$
+		result.append(boolean_);
+		result.append(", integer: "); //$NON-NLS-1$
+		result.append(integer);
+		result.append(", long: "); //$NON-NLS-1$
+		result.append(long_);
+		result.append(", float: "); //$NON-NLS-1$
+		result.append(float_);
+		result.append(", double: "); //$NON-NLS-1$
+		result.append(double_);
+		result.append(", stringMax8: "); //$NON-NLS-1$
+		result.append(stringMax8);
+		result.append(')');
+		return result.toString();
+	}
+
+} // TestDataImpl
diff --git a/tests/org.eclipse.emf.ecp.edit.swt.test/src/org/eclipse/emf/ecp/edit/internal/model/testData/impl/TestDataPackageImpl.java b/tests/org.eclipse.emf.ecp.edit.swt.test/src/org/eclipse/emf/ecp/edit/internal/model/testData/impl/TestDataPackageImpl.java
new file mode 100644
index 0000000..89ff12d
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.edit.swt.test/src/org/eclipse/emf/ecp/edit/internal/model/testData/impl/TestDataPackageImpl.java
@@ -0,0 +1,342 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Muenchen GmbH - initial API and implementation
+ */
+package org.eclipse.emf.ecp.edit.internal.model.testData.impl;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EDataType;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EValidator;
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+import org.eclipse.emf.ecp.edit.internal.model.testData.TestData;
+import org.eclipse.emf.ecp.edit.internal.model.testData.TestDataFactory;
+import org.eclipse.emf.ecp.edit.internal.model.testData.TestDataPackage;
+import org.eclipse.emf.ecp.edit.internal.model.testData.util.TestDataValidator;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Package</b>.
+ * <!-- end-user-doc -->
+ * 
+ * @generated
+ */
+public class TestDataPackageImpl extends EPackageImpl implements TestDataPackage {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private EClass testDataEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private EDataType stringWithMaxLength8EDataType = 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>
+	 * Note: the correct way to create the package is via the static
+	 * factory method {@link #init init()}, which also performs
+	 * initialization of the package, or returns the registered package,
+	 * if one already exists.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see org.eclipse.emf.ecore.EPackage.Registry
+	 * @see org.eclipse.emf.ecp.edit.internal.model.testData.TestDataPackage#eNS_URI
+	 * @see #init()
+	 * @generated
+	 */
+	private TestDataPackageImpl() {
+		super(eNS_URI, TestDataFactory.eINSTANCE);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private static boolean isInited = false;
+
+	/**
+	 * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
+	 *
+	 * <p>
+	 * This method is used to initialize {@link TestDataPackage#eINSTANCE} when that field is accessed.
+	 * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see #eNS_URI
+	 * @see #createPackageContents()
+	 * @see #initializePackageContents()
+	 * @generated
+	 */
+	public static TestDataPackage init() {
+		if (isInited) {
+			return (TestDataPackage) EPackage.Registry.INSTANCE.getEPackage(TestDataPackage.eNS_URI);
+		}
+
+		// Obtain or create and register package
+		final TestDataPackageImpl theTestDataPackage = (TestDataPackageImpl) (EPackage.Registry.INSTANCE
+			.get(eNS_URI) instanceof TestDataPackageImpl ? EPackage.Registry.INSTANCE.get(eNS_URI)
+				: new TestDataPackageImpl());
+
+		isInited = true;
+
+		// Create package meta-data objects
+		theTestDataPackage.createPackageContents();
+
+		// Initialize created meta-data
+		theTestDataPackage.initializePackageContents();
+
+		// Register package validator
+		EValidator.Registry.INSTANCE.put(theTestDataPackage,
+			new EValidator.Descriptor() {
+				public EValidator getEValidator() {
+					return TestDataValidator.INSTANCE;
+				}
+			});
+
+		// Mark meta-data to indicate it can't be changed
+		theTestDataPackage.freeze();
+
+		// Update the registry and return the package
+		EPackage.Registry.INSTANCE.put(TestDataPackage.eNS_URI, theTestDataPackage);
+		return theTestDataPackage;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EClass getTestData() {
+		return testDataEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EAttribute getTestData_String() {
+		return (EAttribute) testDataEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EAttribute getTestData_Boolean() {
+		return (EAttribute) testDataEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EAttribute getTestData_Integer() {
+		return (EAttribute) testDataEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EAttribute getTestData_Long() {
+		return (EAttribute) testDataEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EAttribute getTestData_Float() {
+		return (EAttribute) testDataEClass.getEStructuralFeatures().get(4);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EAttribute getTestData_Double() {
+		return (EAttribute) testDataEClass.getEStructuralFeatures().get(5);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EAttribute getTestData_StringMax8() {
+		return (EAttribute) testDataEClass.getEStructuralFeatures().get(6);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public EDataType getStringWithMaxLength8() {
+		return stringWithMaxLength8EDataType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public TestDataFactory getTestDataFactory() {
+		return (TestDataFactory) getEFactoryInstance();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private boolean isCreated = false;
+
+	/**
+	 * Creates the meta-model objects for the package. This method is
+	 * guarded to have no affect on any invocation but its first.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public void createPackageContents() {
+		if (isCreated) {
+			return;
+		}
+		isCreated = true;
+
+		// Create classes and their features
+		testDataEClass = createEClass(TEST_DATA);
+		createEAttribute(testDataEClass, TEST_DATA__STRING);
+		createEAttribute(testDataEClass, TEST_DATA__BOOLEAN);
+		createEAttribute(testDataEClass, TEST_DATA__INTEGER);
+		createEAttribute(testDataEClass, TEST_DATA__LONG);
+		createEAttribute(testDataEClass, TEST_DATA__FLOAT);
+		createEAttribute(testDataEClass, TEST_DATA__DOUBLE);
+		createEAttribute(testDataEClass, TEST_DATA__STRING_MAX8);
+
+		// Create data types
+		stringWithMaxLength8EDataType = createEDataType(STRING_WITH_MAX_LENGTH8);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private boolean isInitialized = false;
+
+	/**
+	 * Complete the initialization of the package and its meta-model. This
+	 * method is guarded to have no affect on any invocation but its first.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public void initializePackageContents() {
+		if (isInitialized) {
+			return;
+		}
+		isInitialized = true;
+
+		// Initialize package
+		setName(eNAME);
+		setNsPrefix(eNS_PREFIX);
+		setNsURI(eNS_URI);
+
+		// Create type parameters
+
+		// Set bounds for type parameters
+
+		// Add supertypes to classes
+
+		// Initialize classes, features, and operations; add parameters
+		initEClass(testDataEClass, TestData.class, "TestData", !IS_ABSTRACT, !IS_INTERFACE, //$NON-NLS-1$
+			IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getTestData_String(), ecorePackage.getEString(), "string", null, 0, 1, TestData.class, //$NON-NLS-1$
+			!IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getTestData_Boolean(), ecorePackage.getEBoolean(), "boolean", null, 0, 1, TestData.class, //$NON-NLS-1$
+			!IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getTestData_Integer(), ecorePackage.getEInt(), "integer", null, 0, 1, TestData.class, //$NON-NLS-1$
+			!IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getTestData_Long(), ecorePackage.getELong(), "long", null, 0, 1, TestData.class, !IS_TRANSIENT, //$NON-NLS-1$
+			!IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getTestData_Float(), ecorePackage.getEFloat(), "float", null, 0, 1, TestData.class, //$NON-NLS-1$
+			!IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getTestData_Double(), ecorePackage.getEDouble(), "double", null, 0, 1, TestData.class, //$NON-NLS-1$
+			!IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getTestData_StringMax8(), getStringWithMaxLength8(), "stringMax8", null, 0, 1, //$NON-NLS-1$
+			TestData.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED,
+			IS_ORDERED);
+
+		// Initialize data types
+		initEDataType(stringWithMaxLength8EDataType, String.class, "StringWithMaxLength8", IS_SERIALIZABLE, //$NON-NLS-1$
+			!IS_GENERATED_INSTANCE_CLASS);
+
+		// Create resource
+		createResource(eNS_URI);
+
+		// Create annotations
+		// http:///org/eclipse/emf/ecore/util/ExtendedMetaData
+		createExtendedMetaDataAnnotations();
+	}
+
+	/**
+	 * Initializes the annotations for <b>http:///org/eclipse/emf/ecore/util/ExtendedMetaData</b>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	protected void createExtendedMetaDataAnnotations() {
+		final String source = "http:///org/eclipse/emf/ecore/util/ExtendedMetaData"; //$NON-NLS-1$
+		addAnnotation(stringWithMaxLength8EDataType,
+			source,
+			new String[] {
+				"maxLength", "8" //$NON-NLS-1$ //$NON-NLS-2$
+			});
+	}
+
+} // TestDataPackageImpl
diff --git a/tests/org.eclipse.emf.ecp.edit.swt.test/src/org/eclipse/emf/ecp/edit/internal/model/testData/util/TestDataAdapterFactory.java b/tests/org.eclipse.emf.ecp.edit.swt.test/src/org/eclipse/emf/ecp/edit/internal/model/testData/util/TestDataAdapterFactory.java
new file mode 100644
index 0000000..4233020
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.edit.swt.test/src/org/eclipse/emf/ecp/edit/internal/model/testData/util/TestDataAdapterFactory.java
@@ -0,0 +1,136 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Muenchen GmbH - initial API and implementation
+ */
+package org.eclipse.emf.ecp.edit.internal.model.testData.util;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notifier;
+import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecp.edit.internal.model.testData.TestData;
+import org.eclipse.emf.ecp.edit.internal.model.testData.TestDataPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Adapter Factory</b> for the model.
+ * It provides an adapter <code>createXXX</code> method for each class of the model.
+ * <!-- end-user-doc -->
+ * 
+ * @see org.eclipse.emf.ecp.edit.internal.model.testData.TestDataPackage
+ * @generated
+ */
+public class TestDataAdapterFactory extends AdapterFactoryImpl {
+	/**
+	 * The cached model package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	protected static TestDataPackage modelPackage;
+
+	/**
+	 * Creates an instance of the adapter factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public TestDataAdapterFactory() {
+		if (modelPackage == null) {
+			modelPackage = TestDataPackage.eINSTANCE;
+		}
+	}
+
+	/**
+	 * Returns whether this factory is applicable for the type of the object.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns <code>true</code> if the object is either the model's package or is an instance
+	 * object of the model.
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return whether this factory is applicable for the type of the object.
+	 * @generated
+	 */
+	@Override
+	public boolean isFactoryForType(Object object) {
+		if (object == modelPackage) {
+			return true;
+		}
+		if (object instanceof EObject) {
+			return ((EObject) object).eClass().getEPackage() == modelPackage;
+		}
+		return false;
+	}
+
+	/**
+	 * The switch that delegates to the <code>createXXX</code> methods.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	protected TestDataSwitch<Adapter> modelSwitch = new TestDataSwitch<Adapter>() {
+		@Override
+		public Adapter caseTestData(TestData object) {
+			return createTestDataAdapter();
+		}
+
+		@Override
+		public Adapter defaultCase(EObject object) {
+			return createEObjectAdapter();
+		}
+	};
+
+	/**
+	 * Creates an adapter for the <code>target</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @param target the object to adapt.
+	 * @return the adapter for the <code>target</code>.
+	 * @generated
+	 */
+	@Override
+	public Adapter createAdapter(Notifier target) {
+		return modelSwitch.doSwitch((EObject) target);
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.emf.ecp.edit.internal.model.testData.TestData
+	 * <em>Test Data</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.emf.ecp.edit.internal.model.testData.TestData
+	 * @generated
+	 */
+	public Adapter createTestDataAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for the default case.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null.
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the new adapter.
+	 * @generated
+	 */
+	public Adapter createEObjectAdapter() {
+		return null;
+	}
+
+} // TestDataAdapterFactory
diff --git a/tests/org.eclipse.emf.ecp.edit.swt.test/src/org/eclipse/emf/ecp/edit/internal/model/testData/util/TestDataSwitch.java b/tests/org.eclipse.emf.ecp.edit.swt.test/src/org/eclipse/emf/ecp/edit/internal/model/testData/util/TestDataSwitch.java
new file mode 100644
index 0000000..77c3ccf
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.edit.swt.test/src/org/eclipse/emf/ecp/edit/internal/model/testData/util/TestDataSwitch.java
@@ -0,0 +1,129 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Muenchen GmbH - initial API and implementation
+ */
+package org.eclipse.emf.ecp.edit.internal.model.testData.util;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.util.Switch;
+import org.eclipse.emf.ecp.edit.internal.model.testData.TestData;
+import org.eclipse.emf.ecp.edit.internal.model.testData.TestDataPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Switch</b> for the model's inheritance hierarchy.
+ * It supports the call {@link #doSwitch(EObject) doSwitch(object)}
+ * to invoke the <code>caseXXX</code> method for each class of the model,
+ * starting with the actual class of the object
+ * and proceeding up the inheritance hierarchy
+ * until a non-null result is returned,
+ * which is the result of the switch.
+ * <!-- end-user-doc -->
+ * 
+ * @see org.eclipse.emf.ecp.edit.internal.model.testData.TestDataPackage
+ * @generated
+ */
+public class TestDataSwitch<T> extends Switch<T> {
+	/**
+	 * The cached model package
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	protected static TestDataPackage modelPackage;
+
+	/**
+	 * Creates an instance of the switch.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public TestDataSwitch() {
+		if (modelPackage == null) {
+			modelPackage = TestDataPackage.eINSTANCE;
+		}
+	}
+
+	/**
+	 * Checks whether this is a switch for the given package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @param ePackage the package in question.
+	 * @return whether this is a switch for the given package.
+	 * @generated
+	 */
+	@Override
+	protected boolean isSwitchFor(EPackage ePackage) {
+		return ePackage == modelPackage;
+	}
+
+	/**
+	 * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that
+	 * result.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the first non-null result returned by a <code>caseXXX</code> call.
+	 * @generated
+	 */
+	@Override
+	protected T doSwitch(int classifierID, EObject theEObject) {
+		switch (classifierID) {
+		case TestDataPackage.TEST_DATA: {
+			final TestData testData = (TestData) theEObject;
+			T result = caseTestData(testData);
+			if (result == null) {
+				result = defaultCase(theEObject);
+			}
+			return result;
+		}
+		default:
+			return defaultCase(theEObject);
+		}
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Test Data</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>Test Data</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseTestData(TestData object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch, but this is the last case anyway.
+	 * <!-- end-user-doc -->
+	 * 
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject)
+	 * @generated
+	 */
+	@Override
+	public T defaultCase(EObject object) {
+		return null;
+	}
+
+} // TestDataSwitch
diff --git a/tests/org.eclipse.emf.ecp.edit.swt.test/src/org/eclipse/emf/ecp/edit/internal/model/testData/util/TestDataValidator.java b/tests/org.eclipse.emf.ecp.edit.swt.test/src/org/eclipse/emf/ecp/edit/internal/model/testData/util/TestDataValidator.java
new file mode 100644
index 0000000..d35d05c
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.edit.swt.test/src/org/eclipse/emf/ecp/edit/internal/model/testData/util/TestDataValidator.java
@@ -0,0 +1,170 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Muenchen GmbH - initial API and implementation
+ */
+package org.eclipse.emf.ecp.edit.internal.model.testData.util;
+
+import java.util.Map;
+
+import org.eclipse.emf.common.util.DiagnosticChain;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.util.EObjectValidator;
+import org.eclipse.emf.ecp.edit.internal.model.testData.TestData;
+import org.eclipse.emf.ecp.edit.internal.model.testData.TestDataPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Validator</b> for the model.
+ * <!-- end-user-doc -->
+ * 
+ * @see org.eclipse.emf.ecp.edit.internal.model.testData.TestDataPackage
+ * @generated
+ */
+public class TestDataValidator extends EObjectValidator {
+	/**
+	 * The cached model package
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public static final TestDataValidator INSTANCE = new TestDataValidator();
+
+	/**
+	 * A constant for the {@link org.eclipse.emf.common.util.Diagnostic#getSource() source} of diagnostic
+	 * {@link org.eclipse.emf.common.util.Diagnostic#getCode() codes} from this package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see org.eclipse.emf.common.util.Diagnostic#getSource()
+	 * @see org.eclipse.emf.common.util.Diagnostic#getCode()
+	 * @generated
+	 */
+	public static final String DIAGNOSTIC_SOURCE = "org.eclipse.emf.ecp.edit.internal.model.testData"; //$NON-NLS-1$
+
+	/**
+	 * A constant with a fixed name that can be used as the base value for additional hand written constants.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	private static final int GENERATED_DIAGNOSTIC_CODE_COUNT = 0;
+
+	/**
+	 * A constant with a fixed name that can be used as the base value for additional hand written constants in a
+	 * derived class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	protected static final int DIAGNOSTIC_CODE_COUNT = GENERATED_DIAGNOSTIC_CODE_COUNT;
+
+	/**
+	 * Creates an instance of the switch.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public TestDataValidator() {
+		super();
+	}
+
+	/**
+	 * Returns the package of this validator switch.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	protected EPackage getEPackage() {
+		return TestDataPackage.eINSTANCE;
+	}
+
+	/**
+	 * Calls <code>validateXXX</code> for the corresponding classifier of the model.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	protected boolean validate(int classifierID, Object value, DiagnosticChain diagnostics,
+		Map<Object, Object> context) {
+		switch (classifierID) {
+		case TestDataPackage.TEST_DATA:
+			return validateTestData((TestData) value, diagnostics, context);
+		case TestDataPackage.STRING_WITH_MAX_LENGTH8:
+			return validateStringWithMaxLength8((String) value, diagnostics, context);
+		default:
+			return true;
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public boolean validateTestData(TestData testData, DiagnosticChain diagnostics, Map<Object, Object> context) {
+		return validate_EveryDefaultConstraint(testData, diagnostics, context);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public boolean validateStringWithMaxLength8(String stringWithMaxLength8, DiagnosticChain diagnostics,
+		Map<Object, Object> context) {
+		final boolean result = validateStringWithMaxLength8_MaxLength(stringWithMaxLength8, diagnostics, context);
+		return result;
+	}
+
+	/**
+	 * Validates the MaxLength constraint of '<em>String With Max Length8</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public boolean validateStringWithMaxLength8_MaxLength(String stringWithMaxLength8, DiagnosticChain diagnostics,
+		Map<Object, Object> context) {
+		final int length = stringWithMaxLength8.length();
+		final boolean result = length <= 8;
+		if (!result && diagnostics != null) {
+			reportMaxLengthViolation(TestDataPackage.Literals.STRING_WITH_MAX_LENGTH8, stringWithMaxLength8, length, 8,
+				diagnostics, context);
+		}
+		return result;
+	}
+
+	/**
+	 * Returns the resource locator that will be used to fetch messages for this validator's diagnostics.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		// TODO
+		// Specialize this to return a resource locator for messages specific to this validator.
+		// Ensure that you remove @generated or mark it @generated NOT
+		return super.getResourceLocator();
+	}
+
+} // TestDataValidator
diff --git a/tests/org.eclipse.emf.ecp.edit.swt.test/src/org/eclipse/emf/ecp/edit/spi/swt/table/StringCellEditor_PTest.java b/tests/org.eclipse.emf.ecp.edit.swt.test/src/org/eclipse/emf/ecp/edit/spi/swt/table/StringCellEditor_PTest.java
new file mode 100644
index 0000000..1742c51
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.edit.swt.test/src/org/eclipse/emf/ecp/edit/spi/swt/table/StringCellEditor_PTest.java
@@ -0,0 +1,105 @@
+/*******************************************************************************
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * Eugen Neufeld - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.emf.ecp.edit.spi.swt.table;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
+
+import org.eclipse.core.databinding.observable.value.IObservableValue;
+import org.eclipse.emf.databinding.EMFDataBindingContext;
+import org.eclipse.emf.databinding.EMFProperties;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.ecp.edit.internal.model.testData.TestDataFactory;
+import org.eclipse.emf.ecp.edit.internal.model.testData.TestDataPackage;
+import org.eclipse.emf.ecp.test.common.DefaultRealm;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.Text;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+import org.junit.runners.Parameterized.Parameters;
+
+@SuppressWarnings({ "unchecked", "rawtypes" })
+@RunWith(Parameterized.class)
+public class StringCellEditor_PTest {
+
+	@Parameters(name = "Feature:{0} Expected Value:{2} isValid:{3}")
+	public static Object[] parameters() {
+		return new Object[][] {
+			{ TestDataPackage.eINSTANCE.getTestData_String(), TestDataFactory.eINSTANCE.createTestData(), "foo", true //$NON-NLS-1$
+			},
+			{ TestDataPackage.eINSTANCE.getTestData_Boolean(), TestDataFactory.eINSTANCE.createTestData(),
+				Boolean.TRUE,
+				true },
+			{ TestDataPackage.eINSTANCE.getTestData_Integer(), TestDataFactory.eINSTANCE.createTestData(), 2, true },
+			{ TestDataPackage.eINSTANCE.getTestData_Long(), TestDataFactory.eINSTANCE.createTestData(), 2L, true },
+			{ TestDataPackage.eINSTANCE.getTestData_Double(), TestDataFactory.eINSTANCE.createTestData(), 85.5d, true
+			},
+			{ TestDataPackage.eINSTANCE.getTestData_Float(), TestDataFactory.eINSTANCE.createTestData(), 85.5f, true
+			},
+			{ TestDataPackage.eINSTANCE.getTestData_StringMax8(), TestDataFactory.eINSTANCE.createTestData(),
+				"extra long invalid string", false }, //$NON-NLS-1$
+		};
+	}
+
+	private IObservableValue target;
+	private IObservableValue model;
+	private EMFDataBindingContext dbc;
+	private StringCellEditor editor;
+	private final EStructuralFeature feature;
+	private final Object newValue;
+	private final EObject eObject;
+	private final boolean valid;
+
+	public StringCellEditor_PTest(EStructuralFeature feature, EObject eObject, Object newValue, boolean valid) {
+		this.feature = feature;
+		this.eObject = eObject;
+		this.newValue = newValue;
+		this.valid = valid;
+
+	}
+
+	@Before
+	public void setup() {
+		final DefaultRealm realm = new DefaultRealm();
+		dbc = new EMFDataBindingContext(realm);
+		model = EMFProperties.value(feature).observe(realm, eObject);
+		final Shell shell = new Shell();
+		editor = new StringCellEditor(shell);
+		editor.instantiate(feature, null);
+		target = editor.getValueProperty().observe(editor);
+		dbc.bindValue(target, model, editor.getTargetToModelStrategy(dbc), editor.getModelToTargetStrategy(dbc));
+	}
+
+	@After
+	public void destroy() {
+		dbc.dispose();
+		model.dispose();
+		target.dispose();
+		editor.dispose();
+	}
+
+	@Test
+	public void setValue() {
+		target.setValue(newValue.toString());
+		assertEquals(newValue.toString(), ((Text) editor.getControl()).getText());
+		if (valid) {
+			assertEquals(newValue, model.getValue());
+			assertEquals(target.getValue(), model.getValue().toString());
+		} else {
+			assertNull(model.getValue());
+		}
+	}
+}
diff --git a/tests/org.eclipse.emf.ecp.emf2web.json.test/META-INF/MANIFEST.MF b/tests/org.eclipse.emf.ecp.emf2web.json.test/META-INF/MANIFEST.MF
index 7ea6249..1c80c5c 100644
--- a/tests/org.eclipse.emf.ecp.emf2web.json.test/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.emf.ecp.emf2web.json.test/META-INF/MANIFEST.MF
@@ -2,11 +2,12 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: EMF To Web JSON Test
 Bundle-SymbolicName: org.eclipse.emf.ecp.emf2web.json.test
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Fragment-Host: org.eclipse.emf.ecp.emf2web;bundle-version="[1.16.0,1.17.0)"
+Fragment-Host: org.eclipse.emf.ecp.emf2web;bundle-version="[1.17.0,1.18.0]"
 Require-Bundle: org.junit;bundle-version="[4.12.0,5.0.0)",
  com.google.gson;bundle-version="[2.2.0,3.0.0)",
- org.eclipse.emf.ecp.emf2web.json;bundle-version="[1.16.0,1.17.0)"
+ org.eclipse.emf.ecp.emf2web.json;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
-Export-Package: org.eclipse.emf.ecp.emf2web.json.generator.xtend;version="1.16.0"
+Export-Package: org.eclipse.emf.ecp.emf2web.json.generator.xtend;version="1.17.0"
+Automatic-Module-Name: org.eclipse.emf.ecp.emf2web.json.test
diff --git a/tests/org.eclipse.emf.ecp.emf2web.json.test/pom.xml b/tests/org.eclipse.emf.ecp.emf2web.json.test/pom.xml
index fb5741b..9152645 100644
--- a/tests/org.eclipse.emf.ecp.emf2web.json.test/pom.xml
+++ b/tests/org.eclipse.emf.ecp.emf2web.json.test/pom.xml
@@ -5,11 +5,11 @@
 	<parent>
 		<groupId>org.eclipse.emf.ecp</groupId>
 		<artifactId>ecp-tests-parent</artifactId>
-		<version>1.16.0-SNAPSHOT</version>
+		<version>1.17.0-SNAPSHOT</version>
 		<relativePath>../../releng/org.eclipse.emf.ecp.releng.tests/</relativePath>
 	</parent>
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emf.ecp.emf2web.json.test</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 </project>
diff --git a/tests/org.eclipse.emf.ecp.ide.editor.view.test/META-INF/MANIFEST.MF b/tests/org.eclipse.emf.ecp.ide.editor.view.test/META-INF/MANIFEST.MF
index 43a2b03..44cbb38 100644
--- a/tests/org.eclipse.emf.ecp.ide.editor.view.test/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.emf.ecp.ide.editor.view.test/META-INF/MANIFEST.MF
@@ -2,12 +2,13 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: IDE Editor View Tests
 Bundle-SymbolicName: org.eclipse.emf.ecp.ide.editor.view.test
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Fragment-Host: org.eclipse.emf.ecp.ide.editor.view;bundle-version="[1.16.0,1.17.0)"
+Fragment-Host: org.eclipse.emf.ecp.ide.editor.view;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Require-Bundle: org.junit;bundle-version="[4.12.0,5.0.0)",
- org.eclipse.emf.ecp.makeithappen.model;bundle-version="[1.16.0,1.17.0)"
+ org.eclipse.emf.ecp.makeithappen.model;bundle-version="[1.17.0,1.18.0]"
 Import-Package: org.eclipse.ui.internal;version="0.0.0"
-Export-Package: org.eclipse.emf.ecp.ide.editor.view;version="1.16.0";x-internal:=true,
- org.eclipse.emf.ecp.ide.editor.view.test;version="1.16.0";x-internal:=true
+Export-Package: org.eclipse.emf.ecp.ide.editor.view;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.ide.editor.view.test;version="1.17.0";x-internal:=true
+Automatic-Module-Name: org.eclipse.emf.ecp.ide.editor.view.test
diff --git a/tests/org.eclipse.emf.ecp.ide.editor.view.test/pom.xml b/tests/org.eclipse.emf.ecp.ide.editor.view.test/pom.xml
index be761aa..2acb57f 100644
--- a/tests/org.eclipse.emf.ecp.ide.editor.view.test/pom.xml
+++ b/tests/org.eclipse.emf.ecp.ide.editor.view.test/pom.xml
@@ -6,12 +6,12 @@
 	<parent>
 		<groupId>org.eclipse.emf.ecp</groupId>
 		<artifactId>ecp-tests-parent</artifactId>
-		<version>1.16.0-SNAPSHOT</version>
+		<version>1.17.0-SNAPSHOT</version>
 		<relativePath>../../releng/org.eclipse.emf.ecp.releng.tests/</relativePath>
 	</parent>
 	<groupId>org.eclipse.emf.ecp</groupId>
 	<artifactId>org.eclipse.emf.ecp.ide.editor.view.test</artifactId>
-	<version>1.16.0-SNAPSHOT</version>
+	<version>1.17.0-SNAPSHOT</version>
 	<packaging>eclipse-test-plugin</packaging>
 
 	<build>
diff --git a/tests/org.eclipse.emf.ecp.ide.editor.view.test/resources/View-PackageNotExisting.view b/tests/org.eclipse.emf.ecp.ide.editor.view.test/resources/View-PackageNotExisting.view
index f6c279b..76aeae0 100644
--- a/tests/org.eclipse.emf.ecp.ide.editor.view.test/resources/View-PackageNotExisting.view
+++ b/tests/org.eclipse.emf.ecp.ide.editor.view.test/resources/View-PackageNotExisting.view
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="ASCII"?>
-<org.eclipse.emf.ecp.view.model:View xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:org.eclipse.emf.ecp.view.model="http://org/eclipse/emf/ecp/view/model/170" xmi:id="_7nHmAOVsEeemhYbnLSAhXw" name="User">
+<org.eclipse.emf.ecp.view.model:View xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:org.eclipse.emf.ecp.view.model="http://org/eclipse/emf/ecp/view/model/1170" xmi:id="_7nHmAOVsEeemhYbnLSAhXw" name="User">
   <rootEClass href="http://this/is/not/registered#//User"/>
   <children xsi:type="org.eclipse.emf.ecp.view.model:Control" xmi:id="_7nO60uVsEeemhYbnLSAhXw" name="Control email">
     <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_7nO60-VsEeemhYbnLSAhXw">
diff --git a/tests/org.eclipse.emf.ecp.ide.editor.view.test/resources/View-RootEClassNotExisting.view b/tests/org.eclipse.emf.ecp.ide.editor.view.test/resources/View-RootEClassNotExisting.view
index 7fb3895..c614fdb 100644
--- a/tests/org.eclipse.emf.ecp.ide.editor.view.test/resources/View-RootEClassNotExisting.view
+++ b/tests/org.eclipse.emf.ecp.ide.editor.view.test/resources/View-RootEClassNotExisting.view
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="ASCII"?>
-<org.eclipse.emf.ecp.view.model:View xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:org.eclipse.emf.ecp.view.model="http://org/eclipse/emf/ecp/view/model/170" xmi:id="_7nHmAOVsEeemhYbnLSAhXw" name="User">
+<org.eclipse.emf.ecp.view.model:View xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:org.eclipse.emf.ecp.view.model="http://org/eclipse/emf/ecp/view/model/1170" xmi:id="_7nHmAOVsEeemhYbnLSAhXw" name="User">
   <rootEClass href="http://eclipse/org/emf/ecp/makeithappen/model/task#//NonExistingClass"/>
   <children xsi:type="org.eclipse.emf.ecp.view.model:Control" xmi:id="_7nO60uVsEeemhYbnLSAhXw" name="Control email">
     <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_7nO60-VsEeemhYbnLSAhXw">
diff --git a/tests/org.eclipse.emf.ecp.ide.editor.view.test/resources/View-Without-RootEClass.view b/tests/org.eclipse.emf.ecp.ide.editor.view.test/resources/View-Without-RootEClass.view
index a79b526..87b2bc8 100644
--- a/tests/org.eclipse.emf.ecp.ide.editor.view.test/resources/View-Without-RootEClass.view
+++ b/tests/org.eclipse.emf.ecp.ide.editor.view.test/resources/View-Without-RootEClass.view
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="ASCII"?>
-<org.eclipse.emf.ecp.view.model:View xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:org.eclipse.emf.ecp.view.model="http://org/eclipse/emf/ecp/view/model/170" xmi:id="_7nHmAOVsEeemhYbnLSAhXw" name="User">
+<org.eclipse.emf.ecp.view.model:View xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:org.eclipse.emf.ecp.view.model="http://org/eclipse/emf/ecp/view/model/1170" xmi:id="_7nHmAOVsEeemhYbnLSAhXw" name="User">
   <children xsi:type="org.eclipse.emf.ecp.view.model:Control" xmi:id="_7nO60uVsEeemhYbnLSAhXw" name="Control email">
     <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_7nO60-VsEeemhYbnLSAhXw">
       <domainModelEFeature xsi:type="ecore:EAttribute" href="http://eclipse/org/emf/ecp/makeithappen/model/task#//User/email"/>
diff --git a/tests/org.eclipse.emf.ecp.ide.editor.view.test/src/org/eclipse/emf/ecp/ide/editor/view/ViewEditorPart_PTest.java b/tests/org.eclipse.emf.ecp.ide.editor.view.test/src/org/eclipse/emf/ecp/ide/editor/view/ViewEditorPart_PTest.java
index 8bd200a..20bfcd1 100644
--- a/tests/org.eclipse.emf.ecp.ide.editor.view.test/src/org/eclipse/emf/ecp/ide/editor/view/ViewEditorPart_PTest.java
+++ b/tests/org.eclipse.emf.ecp.ide.editor.view.test/src/org/eclipse/emf/ecp/ide/editor/view/ViewEditorPart_PTest.java
@@ -16,10 +16,12 @@
 import static org.junit.Assert.fail;
 
 import java.lang.reflect.Field;
+import java.text.MessageFormat;
 
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.emf.common.ui.URIEditorInput;
 import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecp.ide.editor.view.messages.Messages;
 import org.eclipse.ui.IEditorInput;
 import org.eclipse.ui.IEditorPart;
 import org.eclipse.ui.IEditorReference;
@@ -41,24 +43,30 @@
 
 	@Test
 	public void openView_NoRootEClass() {
+		final String expectedErrorMessage = Messages.ViewEditorPart_invalidVView_noRootEClass;
+
 		final ErrorEditorPart error = openError("View-Without-RootEClass.view");
-		assertErrorMessageContains(error, "The Root EClass of the VView is not set.");
+		assertErrorMessage(error, expectedErrorMessage);
 	}
 
 	@Test
 	public void openView_PackageNotRegistered() {
+		final String expectedErrorMessage = MessageFormat.format(
+			Messages.ViewEditorPart_invalidVView_rootEClassPackageNotResolved,
+			new Object[] { "User", "http://this/is/not/registered" });
+
 		final ErrorEditorPart error = openError("View-PackageNotExisting.view");
-		assertErrorMessageContains(error, "Root EClass \"User\" of the VView could not be resolved");
-		assertErrorMessageContains(error,
-			"register the Ecore providing the EPackage with namespace URI \"http://this/is/not/registered\"");
+		assertErrorMessage(error, expectedErrorMessage);
 	}
 
 	@Test
 	public void openView_PackageRegisteredButDoesNotContainRootEClass() {
+		final String expectedErrorMessage = MessageFormat.format(Messages.ViewEditorPart_ViewCannotBeDisplayed,
+			MessageFormat.format(Messages.ViewEditorPart_invalidVView_rootEClassNotInPackage,
+				new Object[] { "NonExistingClass", "task", "http://eclipse/org/emf/ecp/makeithappen/model/task" }));
+
 		final ErrorEditorPart error = openError("View-RootEClassNotExisting.view");
-		assertErrorMessageContains(error, "Root EClass \"NonExistingClass\" of the VView could not be resolved");
-		assertErrorMessageContains(error,
-			"The registered EPackage \"task\" with namespace URI \"http://eclipse/org/emf/ecp/makeithappen/model/task\" does not contain the Root EClass");
+		assertErrorMessage(error, expectedErrorMessage);
 	}
 
 	@After
@@ -126,7 +134,7 @@
 		return open(resourcePath, ErrorEditorPart.class);
 	}
 
-	void assertErrorMessageContains(ErrorEditorPart editor, String substring) {
+	void assertErrorMessage(ErrorEditorPart editor, String substring) {
 		Field statusField = null;
 		final Field[] declaredFields = editor.getClass().getDeclaredFields();
 		for (final Field field : declaredFields) {
diff --git a/tests/org.eclipse.emf.ecp.ide.util.test/META-INF/MANIFEST.MF b/tests/org.eclipse.emf.ecp.ide.util.test/META-INF/MANIFEST.MF
index eba6825..f76a5b3 100644
--- a/tests/org.eclipse.emf.ecp.ide.util.test/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.emf.ecp.ide.util.test/META-INF/MANIFEST.MF
@@ -2,19 +2,20 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Test
 Bundle-SymbolicName: org.eclipse.emf.ecp.ide.util.test;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Activator: org.eclipse.emf.ecp.ide.util.test.Activator
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emf.ecp.ide.util.test;version="1.16.0";x-internal:=true
+Export-Package: org.eclipse.emf.ecp.ide.util.test;version="1.17.0";x-internal:=true
 Require-Bundle: org.eclipse.ui;bundle-version="[3.106.0,4.0.0)",
-  org.eclipse.core.runtime;bundle-version="[3.7.0,4.0.0)",
-  org.junit;bundle-version="[4.11.0,5.0.0)",
-  org.eclipse.emf.common;bundle-version="[2.10.0,3.0.0)",
-  org.eclipse.emf.ecore;bundle-version="[2.8.0,3.0.0)",
-  org.eclipse.core.resources;bundle-version="[3.9.0,4.0.0)",
-  org.eclipse.emf.ecore.xmi;bundle-version="[2.10.0,3.0.0)",
-  org.eclipse.emf.common.ui;bundle-version="[2.9.0,3.0.0)",
-  org.eclipse.emf.ecp.ide.util;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.model;bundle-version="[1.16.0,1.17.0)"
+ org.eclipse.core.runtime;bundle-version="[3.7.0,4.0.0)",
+ org.junit;bundle-version="[4.11.0,5.0.0)",
+ org.eclipse.emf.common;bundle-version="[2.10.0,3.0.0)",
+ org.eclipse.emf.ecore;bundle-version="[2.8.0,3.0.0)",
+ org.eclipse.core.resources;bundle-version="[3.9.0,4.0.0)",
+ org.eclipse.emf.ecore.xmi;bundle-version="[2.10.0,3.0.0)",
+ org.eclipse.emf.common.ui;bundle-version="[2.9.0,3.0.0)",
+ org.eclipse.emf.ecp.ide.util;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.model;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.ide.util.test
diff --git a/tests/org.eclipse.emf.ecp.ide.util.test/pom.xml b/tests/org.eclipse.emf.ecp.ide.util.test/pom.xml
index 4eacf6c..80735b7 100644
--- a/tests/org.eclipse.emf.ecp.ide.util.test/pom.xml
+++ b/tests/org.eclipse.emf.ecp.ide.util.test/pom.xml
@@ -6,12 +6,12 @@
 	<parent>
 		<groupId>org.eclipse.emf.ecp</groupId>
 		<artifactId>ecp-tests-parent</artifactId>
-		<version>1.16.0-SNAPSHOT</version>
+		<version>1.17.0-SNAPSHOT</version>
 		<relativePath>../../releng/org.eclipse.emf.ecp.releng.tests/</relativePath>
 	</parent>
 	<groupId>org.eclipse.emf.ecp</groupId>
 	<artifactId>org.eclipse.emf.ecp.ide.util.test</artifactId>
-	<version>1.16.0-SNAPSHOT</version>
+	<version>1.17.0-SNAPSHOT</version>
 	<packaging>eclipse-test-plugin</packaging>
 
 	<build>
diff --git a/tests/org.eclipse.emf.ecp.ide.util.test/src/org/eclipse/emf/ecp/ide/util/test/Activator.java b/tests/org.eclipse.emf.ecp.ide.util.test/src/org/eclipse/emf/ecp/ide/util/test/Activator.java
index 6b27e6e..21b8106 100644
--- a/tests/org.eclipse.emf.ecp.ide.util.test/src/org/eclipse/emf/ecp/ide/util/test/Activator.java
+++ b/tests/org.eclipse.emf.ecp.ide.util.test/src/org/eclipse/emf/ecp/ide/util/test/Activator.java
@@ -1,3 +1,15 @@
+/*******************************************************************************
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
+ *
+ ******************************************************************************/
 package org.eclipse.emf.ecp.ide.util.test;
 
 import org.eclipse.ui.plugin.AbstractUIPlugin;
diff --git a/tests/org.eclipse.emf.ecp.ide.util.test/src/org/eclipse/emf/ecp/ide/util/test/AllTests.java b/tests/org.eclipse.emf.ecp.ide.util.test/src/org/eclipse/emf/ecp/ide/util/test/AllTests.java
index b25882c..ed8cbb8 100644
--- a/tests/org.eclipse.emf.ecp.ide.util.test/src/org/eclipse/emf/ecp/ide/util/test/AllTests.java
+++ b/tests/org.eclipse.emf.ecp.ide.util.test/src/org/eclipse/emf/ecp/ide/util/test/AllTests.java
@@ -1,3 +1,15 @@
+/*******************************************************************************
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
+ *
+ ******************************************************************************/
 package org.eclipse.emf.ecp.ide.util.test;
 
 import org.junit.runner.RunWith;
diff --git a/tests/org.eclipse.emf.ecp.ide.util.test/src/org/eclipse/emf/ecp/ide/util/test/EcoreHelperCyclicDependencies_PTest.java b/tests/org.eclipse.emf.ecp.ide.util.test/src/org/eclipse/emf/ecp/ide/util/test/EcoreHelperCyclicDependencies_PTest.java
index ee1db7f..93c6249 100644
--- a/tests/org.eclipse.emf.ecp.ide.util.test/src/org/eclipse/emf/ecp/ide/util/test/EcoreHelperCyclicDependencies_PTest.java
+++ b/tests/org.eclipse.emf.ecp.ide.util.test/src/org/eclipse/emf/ecp/ide/util/test/EcoreHelperCyclicDependencies_PTest.java
@@ -1,3 +1,15 @@
+/*******************************************************************************
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
+ *
+ ******************************************************************************/
 package org.eclipse.emf.ecp.ide.util.test;
 
 import static org.junit.Assert.assertFalse;
diff --git a/tests/org.eclipse.emf.ecp.ide.util.test/src/org/eclipse/emf/ecp/ide/util/test/EcoreHelperDefaultPackageRegistryContents_PTest.java b/tests/org.eclipse.emf.ecp.ide.util.test/src/org/eclipse/emf/ecp/ide/util/test/EcoreHelperDefaultPackageRegistryContents_PTest.java
index 810c115..6244af0 100644
--- a/tests/org.eclipse.emf.ecp.ide.util.test/src/org/eclipse/emf/ecp/ide/util/test/EcoreHelperDefaultPackageRegistryContents_PTest.java
+++ b/tests/org.eclipse.emf.ecp.ide.util.test/src/org/eclipse/emf/ecp/ide/util/test/EcoreHelperDefaultPackageRegistryContents_PTest.java
@@ -30,7 +30,7 @@
 
 	private static final String A_ECORE_PATH = "/TestEcoreHelperProjectResources/A.ecore";
 	private static final String A_NS_URI = "a.nsuri";
-	private static final String VIEW_NS_URI = "http://org/eclipse/emf/ecp/view/model/170";
+	private static final String VIEW_NS_URI = "http://org/eclipse/emf/ecp/view/model/1170";
 	private static final String VIEW_ECORE_PATH = "/TestEcoreHelperProjectResources/view.ecore";
 
 	@BeforeClass
diff --git a/tests/org.eclipse.emf.ecp.ide.util.test/src/org/eclipse/emf/ecp/ide/util/test/EcoreHelperNoDependencies_PTest.java b/tests/org.eclipse.emf.ecp.ide.util.test/src/org/eclipse/emf/ecp/ide/util/test/EcoreHelperNoDependencies_PTest.java
index 5d3aa3b..67d4b7f 100644
--- a/tests/org.eclipse.emf.ecp.ide.util.test/src/org/eclipse/emf/ecp/ide/util/test/EcoreHelperNoDependencies_PTest.java
+++ b/tests/org.eclipse.emf.ecp.ide.util.test/src/org/eclipse/emf/ecp/ide/util/test/EcoreHelperNoDependencies_PTest.java
@@ -1,6 +1,15 @@
-/**
+/*******************************************************************************
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
+ *
+ ******************************************************************************/
 package org.eclipse.emf.ecp.ide.util.test;
 
 import static org.junit.Assert.assertFalse;
diff --git a/tests/org.eclipse.emf.ecp.ide.util.test/src/org/eclipse/emf/ecp/ide/util/test/EcoreHelperOneDependency_PTest.java b/tests/org.eclipse.emf.ecp.ide.util.test/src/org/eclipse/emf/ecp/ide/util/test/EcoreHelperOneDependency_PTest.java
index 9ed9935..0e331eb 100644
--- a/tests/org.eclipse.emf.ecp.ide.util.test/src/org/eclipse/emf/ecp/ide/util/test/EcoreHelperOneDependency_PTest.java
+++ b/tests/org.eclipse.emf.ecp.ide.util.test/src/org/eclipse/emf/ecp/ide/util/test/EcoreHelperOneDependency_PTest.java
@@ -1,6 +1,15 @@
-/**
+/*******************************************************************************
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
+ *
+ ******************************************************************************/
 package org.eclipse.emf.ecp.ide.util.test;
 
 import static org.junit.Assert.assertFalse;
diff --git a/tests/org.eclipse.emf.ecp.ide.util.test/src/org/eclipse/emf/ecp/ide/util/test/EcoreHelperTwoDependencies_PTest.java b/tests/org.eclipse.emf.ecp.ide.util.test/src/org/eclipse/emf/ecp/ide/util/test/EcoreHelperTwoDependencies_PTest.java
index 0b8f6eb..196d1f8 100644
--- a/tests/org.eclipse.emf.ecp.ide.util.test/src/org/eclipse/emf/ecp/ide/util/test/EcoreHelperTwoDependencies_PTest.java
+++ b/tests/org.eclipse.emf.ecp.ide.util.test/src/org/eclipse/emf/ecp/ide/util/test/EcoreHelperTwoDependencies_PTest.java
@@ -1,6 +1,15 @@
-/**
+/*******************************************************************************
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
+ *
+ ******************************************************************************/
 package org.eclipse.emf.ecp.ide.util.test;
 
 import static org.junit.Assert.assertFalse;
diff --git a/tests/org.eclipse.emf.ecp.ide.util.test/src/org/eclipse/emf/ecp/ide/util/test/ProjectInstallerWizard.java b/tests/org.eclipse.emf.ecp.ide.util.test/src/org/eclipse/emf/ecp/ide/util/test/ProjectInstallerWizard.java
index b50be67..278f3ae 100644
--- a/tests/org.eclipse.emf.ecp.ide.util.test/src/org/eclipse/emf/ecp/ide/util/test/ProjectInstallerWizard.java
+++ b/tests/org.eclipse.emf.ecp.ide.util.test/src/org/eclipse/emf/ecp/ide/util/test/ProjectInstallerWizard.java
@@ -1,6 +1,15 @@
-/**
+/*******************************************************************************
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
+ *
+ ******************************************************************************/
 package org.eclipse.emf.ecp.ide.util.test;
 
 import java.util.ArrayList;
@@ -70,7 +79,8 @@
 								.createPlatformPluginURI(
 									projectDescriptorElement
 										.getContributor().getName()
-										+ "/" + contentURI, true); //$NON-NLS-1$
+										+ "/" + contentURI, //$NON-NLS-1$
+									true);
 						}
 						projectDescriptor.setContentURI(uri);
 						projectDescriptor
diff --git a/tests/org.eclipse.emf.ecp.ide.view.service.test/META-INF/MANIFEST.MF b/tests/org.eclipse.emf.ecp.ide.view.service.test/META-INF/MANIFEST.MF
index 7e84398..c7fb28c 100644
--- a/tests/org.eclipse.emf.ecp.ide.view.service.test/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.emf.ecp.ide.view.service.test/META-INF/MANIFEST.MF
@@ -2,15 +2,16 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: IDEViewModelRegistry Test
 Bundle-SymbolicName: org.eclipse.emf.ecp.ide.view.service.test;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emf.ecp.ide.view.service.test;version="1.16.0";x-internal:=true
-Require-Bundle: org.eclipse.emf.ecp.ide.view.service;bundle-version="[1.16.0,1.17.0)",
-  org.junit;bundle-version="[4.0.0,5.0.0)",
-  org.eclipse.emf.ecp.view.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.core.resources;bundle-version="[3.0.0,4.0.0)",
-  org.eclipse.emf.edit;bundle-version="[2.0.0,3.0.0)",
-  org.eclipse.emf.ecore.xmi;bundle-version="[2.0.0,3.0.0)",
-  org.eclipse.core.runtime;bundle-version="[3.4.0,4.0.0)",
-  org.eclipse.emf.common.ui;bundle-version="[2.7.0,3.0.0)"
+Export-Package: org.eclipse.emf.ecp.ide.view.service.test;version="1.17.0";x-internal:=true
+Require-Bundle: org.eclipse.emf.ecp.ide.view.service;bundle-version="[1.17.0,1.18.0]",
+ org.junit;bundle-version="[4.0.0,5.0.0)",
+ org.eclipse.emf.ecp.view.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.core.resources;bundle-version="[3.0.0,4.0.0)",
+ org.eclipse.emf.edit;bundle-version="[2.0.0,3.0.0)",
+ org.eclipse.emf.ecore.xmi;bundle-version="[2.0.0,3.0.0)",
+ org.eclipse.core.runtime;bundle-version="[3.4.0,4.0.0)",
+ org.eclipse.emf.common.ui;bundle-version="[2.7.0,3.0.0)"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Automatic-Module-Name: org.eclipse.emf.ecp.ide.view.service.test
diff --git a/tests/org.eclipse.emf.ecp.ide.view.service.test/pom.xml b/tests/org.eclipse.emf.ecp.ide.view.service.test/pom.xml
index db7bb0d..16aa514 100644
--- a/tests/org.eclipse.emf.ecp.ide.view.service.test/pom.xml
+++ b/tests/org.eclipse.emf.ecp.ide.view.service.test/pom.xml
@@ -6,12 +6,12 @@
 	<parent>
 		<groupId>org.eclipse.emf.ecp</groupId>
 		<artifactId>ecp-tests-parent</artifactId>
-		<version>1.16.0-SNAPSHOT</version>
+		<version>1.17.0-SNAPSHOT</version>
 		<relativePath>../../releng/org.eclipse.emf.ecp.releng.tests/</relativePath>
 	</parent>
 	<groupId>org.eclipse.emf.ecp</groupId>
 	<artifactId>org.eclipse.emf.ecp.ide.view.service.test</artifactId>
-	<version>1.16.0-SNAPSHOT</version>
+	<version>1.17.0-SNAPSHOT</version>
 	<packaging>eclipse-test-plugin</packaging>
 
 	<build>
diff --git a/tests/org.eclipse.emf.ecp.ide.view.service.test/src/org/eclipse/emf/ecp/ide/view/service/test/IDEViewModelRegistry_PTest.java b/tests/org.eclipse.emf.ecp.ide.view.service.test/src/org/eclipse/emf/ecp/ide/view/service/test/IDEViewModelRegistry_PTest.java
index 35f3a57..08c53cd 100644
--- a/tests/org.eclipse.emf.ecp.ide.view.service.test/src/org/eclipse/emf/ecp/ide/view/service/test/IDEViewModelRegistry_PTest.java
+++ b/tests/org.eclipse.emf.ecp.ide.view.service.test/src/org/eclipse/emf/ecp/ide/view/service/test/IDEViewModelRegistry_PTest.java
@@ -94,7 +94,7 @@
 	@Before
 	public void setUp() throws Exception {
 		view = VViewFactory.eINSTANCE.createView();
-		view.setEcorePath("/TestIDEViewRegistryProjectResources/task.ecore");
+		view.getEcorePaths().add("/TestIDEViewRegistryProjectResources/task.ecore");
 	}
 
 	/**
@@ -270,7 +270,9 @@
 				// not tested
 			}
 		};
-		registry.register(view.getEcorePath(), view);
+		for (final String ecorePath : view.getEcorePaths()) {
+			registry.register(ecorePath, view);
+		}
 		registry.registerViewModelEditor(view, callback);
 
 		// act
@@ -289,7 +291,10 @@
 		// assert
 		assertTrue("signalEcoreOutOfSync has not been called", latch.await(1, TimeUnit.SECONDS));
 		registry.unregisterViewModelEditor(view, callback);
-		registry.unregister(view.getEcorePath(), view);
+
+		for (final String ecorePath : view.getEcorePaths()) {
+			registry.unregister(ecorePath, view);
+		}
 	}
 
 	@SuppressWarnings("unchecked")
diff --git a/tests/org.eclipse.emf.ecp.integrationtest/META-INF/MANIFEST.MF b/tests/org.eclipse.emf.ecp.integrationtest/META-INF/MANIFEST.MF
index 0b58cca..26b137c 100644
--- a/tests/org.eclipse.emf.ecp.integrationtest/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.emf.ecp.integrationtest/META-INF/MANIFEST.MF
@@ -2,10 +2,11 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Integrationtest
 Bundle-SymbolicName: org.eclipse.emf.ecp.integrationtest
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Activator: org.eclipse.emf.ecp.integrationtest.Activator
-Export-Package: org.eclipse.emf.ecp.integrationtest;version="1.16.0";x-internal:=true
+Export-Package: org.eclipse.emf.ecp.integrationtest;version="1.17.0";x-internal:=true
 Require-Bundle: org.junit;bundle-version="[4.0.0,5.0.0)",
  org.eclipse.osgi;bundle-version="[3.7.0,4.0.0)"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.integrationtest
diff --git a/tests/org.eclipse.emf.ecp.integrationtest/pom.xml b/tests/org.eclipse.emf.ecp.integrationtest/pom.xml
index 9fb03a9..9148bf1 100644
--- a/tests/org.eclipse.emf.ecp.integrationtest/pom.xml
+++ b/tests/org.eclipse.emf.ecp.integrationtest/pom.xml
@@ -6,12 +6,12 @@
 	<parent>
 		<groupId>org.eclipse.emf.ecp</groupId>
 		<artifactId>ecp-tests-parent</artifactId>
-		<version>1.16.0-SNAPSHOT</version>
+		<version>1.17.0-SNAPSHOT</version>
 		<relativePath>../../releng/org.eclipse.emf.ecp.releng.tests/</relativePath>
 	</parent>
 	<groupId>org.eclipse.emf.ecp</groupId>
 	<artifactId>org.eclipse.emf.ecp.integrationtest</artifactId>
-	<version>1.16.0-SNAPSHOT</version>
+	<version>1.17.0-SNAPSHOT</version>
 	<packaging>eclipse-test-plugin</packaging>
 
 	<build>
diff --git a/tests/org.eclipse.emf.ecp.quickfix.test/META-INF/MANIFEST.MF b/tests/org.eclipse.emf.ecp.quickfix.test/META-INF/MANIFEST.MF
index e4524a7..f2b215d 100644
--- a/tests/org.eclipse.emf.ecp.quickfix.test/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.emf.ecp.quickfix.test/META-INF/MANIFEST.MF
@@ -2,13 +2,14 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Model Quick Fix Test
 Bundle-SymbolicName: org.eclipse.emf.ecp.quickfix.test
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Fragment-Host: org.eclipse.emf.ecp.quickfix;bundle-version="[1.16.0,1.17.0)"
-Export-Package: org.eclipse.emf.ecp.ui.quickfix.test;version="1.16.0";x-internal:=true
+Fragment-Host: org.eclipse.emf.ecp.quickfix;bundle-version="[1.17.0,1.18.0]"
+Export-Package: org.eclipse.emf.ecp.ui.quickfix.test;version="1.17.0";x-internal:=true
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.4.0,4.0.0)",
   org.eclipse.emf.common;bundle-version="[2.7.0,3.0.0)",
   org.junit;bundle-version="[4.0.0,5.0.0)",
   org.eclipse.emf.ecore;bundle-version="[2.5.0,3.0.0)"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.quickfix.test
diff --git a/tests/org.eclipse.emf.ecp.quickfix.test/pom.xml b/tests/org.eclipse.emf.ecp.quickfix.test/pom.xml
index 9ab517e..6d5a5ab 100644
--- a/tests/org.eclipse.emf.ecp.quickfix.test/pom.xml
+++ b/tests/org.eclipse.emf.ecp.quickfix.test/pom.xml
@@ -6,12 +6,12 @@
 	<parent>
 		<groupId>org.eclipse.emf.ecp</groupId>
 		<artifactId>ecp-tests-parent</artifactId>
-		<version>1.16.0-SNAPSHOT</version>
+		<version>1.17.0-SNAPSHOT</version>
 		<relativePath>../../releng/org.eclipse.emf.ecp.releng.tests/</relativePath>
 	</parent>
 	<groupId>org.eclipse.emf.ecp</groupId>
 	<artifactId>org.eclipse.emf.ecp.quickfix.test</artifactId>
-	<version>1.16.0-SNAPSHOT</version>
+	<version>1.17.0-SNAPSHOT</version>
 	<packaging>eclipse-test-plugin</packaging>
 
 	<build>
diff --git a/tests/org.eclipse.emf.ecp.test.model.edit/META-INF/MANIFEST.MF b/tests/org.eclipse.emf.ecp.test.model.edit/META-INF/MANIFEST.MF
index 86f29ef..82e7d39 100644
--- a/tests/org.eclipse.emf.ecp.test.model.edit/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.emf.ecp.test.model.edit/META-INF/MANIFEST.MF
@@ -2,14 +2,15 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: ECP Test Model Edit Plugin
 Bundle-SymbolicName: org.eclipse.emf.ecp.test.model.edit;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-ClassPath: .
 Bundle-Activator: org.eclipse.emf.ecp.test.university.provider.UniversityEditPlugin$Implementation
 Bundle-Vendor: Eclipse Modeling Project
 Bundle-Localization: plugin
-Export-Package: org.eclipse.emf.ecp.test.university.provider;version="1.16.0";x-internal:=true
+Export-Package: org.eclipse.emf.ecp.test.university.provider;version="1.17.0";x-internal:=true
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.7.0,4.0.0)",
-  org.eclipse.emf.ecp.test.model;bundle-version="[1.16.0,1.17.0)";visibility:=reexport,
-  org.eclipse.emf.edit;bundle-version="[2.8.0,3.0.0)";visibility:=reexport
+ org.eclipse.emf.ecp.test.model;bundle-version="[1.17.0,1.18.0]";visibility:=reexport,
+ org.eclipse.emf.edit;bundle-version="[2.8.0,3.0.0)";visibility:=reexport
 Bundle-RequiredExecutionEnvironment: J2SE-1.5
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.test.model.edit
diff --git a/tests/org.eclipse.emf.ecp.test.model.edit/pom.xml b/tests/org.eclipse.emf.ecp.test.model.edit/pom.xml
index bc1886b..482a707 100644
--- a/tests/org.eclipse.emf.ecp.test.model.edit/pom.xml
+++ b/tests/org.eclipse.emf.ecp.test.model.edit/pom.xml
@@ -6,11 +6,11 @@
 	<parent>
 		<groupId>org.eclipse.emf.ecp</groupId>
 		<artifactId>ecp-tests-parent</artifactId>
-		<version>1.16.0-SNAPSHOT</version>
+		<version>1.17.0-SNAPSHOT</version>
 		<relativePath>../../releng/org.eclipse.emf.ecp.releng.tests/</relativePath>
 	</parent>
 
 	<artifactId>org.eclipse.emf.ecp.test.model.edit</artifactId>
 	<packaging>eclipse-plugin</packaging>
-	<version>1.16.0-SNAPSHOT</version>
+	<version>1.17.0-SNAPSHOT</version>
 </project>
diff --git a/tests/org.eclipse.emf.ecp.test.model.feature/feature.xml b/tests/org.eclipse.emf.ecp.test.model.feature/feature.xml
index feecf53..44fc14e 100644
--- a/tests/org.eclipse.emf.ecp.test.model.feature/feature.xml
+++ b/tests/org.eclipse.emf.ecp.test.model.feature/feature.xml
@@ -2,7 +2,7 @@
 <feature
       id="org.eclipse.emf.ecp.test.model.feature"
       label="ECP Test Model Feature"
-      version="1.16.0.qualifier">
+      version="1.17.0.qualifier">
 
    <description url="http://www.example.com/description">
       [Enter Feature Description here.]
diff --git a/tests/org.eclipse.emf.ecp.test.model.feature/pom.xml b/tests/org.eclipse.emf.ecp.test.model.feature/pom.xml
index 3fec267..1ca7ab6 100644
--- a/tests/org.eclipse.emf.ecp.test.model.feature/pom.xml
+++ b/tests/org.eclipse.emf.ecp.test.model.feature/pom.xml
@@ -5,11 +5,11 @@
 	<parent>
 		<groupId>org.eclipse.emf.ecp</groupId>
 		<artifactId>ecp-tests-parent</artifactId>
-		<version>1.16.0-SNAPSHOT</version>
+		<version>1.17.0-SNAPSHOT</version>
 		<relativePath>../../releng/org.eclipse.emf.ecp.releng.tests/</relativePath>
 	</parent>
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emf.ecp.test.model.feature</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-feature</packaging>
 </project>
diff --git a/tests/org.eclipse.emf.ecp.test.model/META-INF/MANIFEST.MF b/tests/org.eclipse.emf.ecp.test.model/META-INF/MANIFEST.MF
index 77eefeb..cfac4dd 100644
--- a/tests/org.eclipse.emf.ecp.test.model/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.emf.ecp.test.model/META-INF/MANIFEST.MF
@@ -2,16 +2,17 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: ECP Test Model Plugin
 Bundle-SymbolicName: org.eclipse.emf.ecp.test.model;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-ClassPath: .
 Bundle-Vendor: Eclipse Modeling Project
 Bundle-Localization: plugin
-Export-Package: org.eclipse.emf.ecp.test.university;version="1.16.0",
-  org.eclipse.emf.ecp.test.university.impl;version="1.16.0",
-  org.eclipse.emf.ecp.test.university.util;version="1.16.0"
+Export-Package: org.eclipse.emf.ecp.test.university;version="1.17.0",
+ org.eclipse.emf.ecp.test.university.impl;version="1.17.0",
+ org.eclipse.emf.ecp.test.university.util;version="1.17.0"
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.7.0,4.0.0)",
-  org.eclipse.emf.ecore;bundle-version="[2.9.0,3.0.0)";visibility:=reexport,
-  org.eclipse.emf.ecp.view.validation;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.model.provider.xmi;bundle-version="[1.16.0,1.17.0)"
+ org.eclipse.emf.ecore;bundle-version="[2.9.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.ecp.view.validation;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.model.provider.xmi;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: J2SE-1.5
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.test.model
diff --git a/tests/org.eclipse.emf.ecp.test.model/pom.xml b/tests/org.eclipse.emf.ecp.test.model/pom.xml
index 86953a9..fa3b70f 100644
--- a/tests/org.eclipse.emf.ecp.test.model/pom.xml
+++ b/tests/org.eclipse.emf.ecp.test.model/pom.xml
@@ -6,11 +6,11 @@
 	<parent>
 		<groupId>org.eclipse.emf.ecp</groupId>
 		<artifactId>ecp-tests-parent</artifactId>
-		<version>1.16.0-SNAPSHOT</version>
+		<version>1.17.0-SNAPSHOT</version>
 		<relativePath>../../releng/org.eclipse.emf.ecp.releng.tests/</relativePath>
 	</parent>
 
 	<artifactId>org.eclipse.emf.ecp.test.model</artifactId>
 	<packaging>eclipse-plugin</packaging>
-	<version>1.16.0-SNAPSHOT</version>
+	<version>1.17.0-SNAPSHOT</version>
 </project>
diff --git a/tests/org.eclipse.emf.ecp.test.model/viewmodel/Staff.view b/tests/org.eclipse.emf.ecp.test.model/viewmodel/Staff.view
index f78fc98..090cbfa 100644
--- a/tests/org.eclipse.emf.ecp.test.model/viewmodel/Staff.view
+++ b/tests/org.eclipse.emf.ecp.test.model/viewmodel/Staff.view
@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="ASCII"?>
-<org.eclipse.emf.ecp.view.model:View xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:org.eclipse.emf.ecp.view.model="http://org/eclipse/emf/ecp/view/model/170" xmlns:org.eclipse.emf.ecp.view.treemasterview.model="http://org/eclipse/emf/ecp/view/treemasterview/model" xmi:id="_of2_gEWAEeWfKJaajyNdyA" ecorePath="/org.eclipse.emf.ecp.test.model/model/university.ecore">
+<org.eclipse.emf.ecp.view.model:View xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:org.eclipse.emf.ecp.view.model="http://org/eclipse/emf/ecp/view/model/1170" xmlns:org.eclipse.emf.ecp.view.treemasterview.model="http://org/eclipse/emf/ecp/view/treemasterview/model" xmi:id="_of2_gEWAEeWfKJaajyNdyA">
+  <ecorePaths>/org.eclipse.emf.ecp.test.model/model/university.ecore</ecorePaths>
   <rootEClass href="http://org/eclipse/emf/ecp/test/university#//Staff"/>
   <children xsi:type="org.eclipse.emf.ecp.view.treemasterview.model:TreeMasterDetail" xmi:id="_of2_gUWAEeWfKJaajyNdyA">
     <detailView xmi:id="_of2_gkWAEeWfKJaajyNdyA">
diff --git a/tests/org.eclipse.emf.ecp.test.model/viewmodel/catalog.view b/tests/org.eclipse.emf.ecp.test.model/viewmodel/catalog.view
index 3bb15ea..e41122a 100644
--- a/tests/org.eclipse.emf.ecp.test.model/viewmodel/catalog.view
+++ b/tests/org.eclipse.emf.ecp.test.model/viewmodel/catalog.view
@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="ASCII"?>
-<org.eclipse.emf.ecp.view.model:View xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:org.eclipse.emf.ecp.view.model="http://org/eclipse/emf/ecp/view/model/170" xmlns:org.eclipse.emf.ecp.view.table.model="http://org/eclipse/emf/ecp/view/table/model/150" xmi:id="_lF8dYEWAEeWfKJaajyNdyA" ecorePath="/org.eclipse.emf.ecp.test.model/model/university.ecore">
+<org.eclipse.emf.ecp.view.model:View xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:org.eclipse.emf.ecp.view.model="http://org/eclipse/emf/ecp/view/model/1170" xmlns:org.eclipse.emf.ecp.view.table.model="http://org/eclipse/emf/ecp/view/table/model/150" xmi:id="_lF8dYEWAEeWfKJaajyNdyA">
+  <ecorePaths>/org.eclipse.emf.ecp.test.model/model/university.ecore</ecorePaths>
   <rootEClass href="http://org/eclipse/emf/ecp/test/university#//CourseCatalog"/>
   <children xsi:type="org.eclipse.emf.ecp.view.table.model:TableControl" xmi:id="_lF9EcEWAEeWfKJaajyNdyA" enableDetailEditingDialog="true">
     <domainModelReference xsi:type="org.eclipse.emf.ecp.view.table.model:TableDomainModelReference" xmi:id="_lF9EcUWAEeWfKJaajyNdyA">
diff --git a/tests/org.eclipse.emf.ecp.ui.validation.test/META-INF/MANIFEST.MF b/tests/org.eclipse.emf.ecp.ui.validation.test/META-INF/MANIFEST.MF
index 24764df..b084f73 100644
--- a/tests/org.eclipse.emf.ecp.ui.validation.test/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.emf.ecp.ui.validation.test/META-INF/MANIFEST.MF
@@ -2,12 +2,13 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: ECP Validation View Test
 Bundle-SymbolicName: org.eclipse.emf.ecp.ui.validation.test;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Fragment-Host: org.eclipse.emf.ecp.ui.validation;bundle-version="[1.16.0,1.17.0)"
-Export-Package: org.eclipse.emf.ecp.ui.validation.test;version="1.16.0";x-internal:=true
+Fragment-Host: org.eclipse.emf.ecp.ui.validation;bundle-version="[1.17.0,1.18.0]"
+Export-Package: org.eclipse.emf.ecp.ui.validation.test;version="1.17.0";x-internal:=true
 Require-Bundle: org.eclipse.emf.emfstore.examplemodel;bundle-version="[1.3.0,2.0.0)",
-  org.junit;bundle-version="[4.11.0,5.0.0)",
-  org.eclipse.emf.ecp.validation.diagnostician;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.emfstore.examplemodel.edit;bundle-version="[1.3.0,2.0.0)"
+ org.junit;bundle-version="[4.11.0,5.0.0)",
+ org.eclipse.emf.ecp.validation.diagnostician;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.emfstore.examplemodel.edit;bundle-version="[1.3.0,2.0.0)"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Automatic-Module-Name: org.eclipse.emf.ecp.ui.validation.test
diff --git a/tests/org.eclipse.emf.ecp.ui.validation.test/pom.xml b/tests/org.eclipse.emf.ecp.ui.validation.test/pom.xml
index 29b31d6..cbaf246 100644
--- a/tests/org.eclipse.emf.ecp.ui.validation.test/pom.xml
+++ b/tests/org.eclipse.emf.ecp.ui.validation.test/pom.xml
@@ -6,12 +6,12 @@
 	<parent>
 		<groupId>org.eclipse.emf.ecp</groupId>
 		<artifactId>ecp-tests-parent</artifactId>
-		<version>1.16.0-SNAPSHOT</version>
+		<version>1.17.0-SNAPSHOT</version>
 		<relativePath>../../releng/org.eclipse.emf.ecp.releng.tests/</relativePath>
 	</parent>
 	<groupId>org.eclipse.emf.ecp</groupId>
 	<artifactId>org.eclipse.emf.ecp.ui.validation.test</artifactId>
-	<version>1.16.0-SNAPSHOT</version>
+	<version>1.17.0-SNAPSHOT</version>
 	<packaging>eclipse-test-plugin</packaging>
 
 	<build>
diff --git a/tests/org.eclipse.emf.ecp.ui.view.editor.controls.test/META-INF/MANIFEST.MF b/tests/org.eclipse.emf.ecp.ui.view.editor.controls.test/META-INF/MANIFEST.MF
index 7107938..9ab6b96 100644
--- a/tests/org.eclipse.emf.ecp.ui.view.editor.controls.test/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.emf.ecp.ui.view.editor.controls.test/META-INF/MANIFEST.MF
@@ -2,21 +2,25 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.emf.ecp.ui.view.editor.controls.test;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-ClassPath: .
 Bundle-Vendor: %providerName
-Fragment-Host: org.eclipse.emf.ecp.ui.view.editor.controls;bundle-version="[1.16.0,1.17.0)"
+Fragment-Host: org.eclipse.emf.ecp.ui.view.editor.controls;bundle-version="[1.17.0,1.18.0]"
 Bundle-Localization: plugin
-Export-Package: org.eclipse.emf.ecp.ui.view.editor.controls.test;version="1.16.0",
-  org.eclipse.emf.ecp.ui.view.editor.test.model.test;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.ui.view.editor.test.model.test.impl;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.ui.view.editor.test.model.test.util;version="1.16.0";x-internal:=true
+Export-Package: org.eclipse.emf.ecp.ui.view.editor.controls.test;version="1.17.0",
+ org.eclipse.emf.ecp.ui.view.editor.test.model.test;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.ui.view.editor.test.model.test.impl;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.ui.view.editor.test.model.test.util;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.internal.editor.controls;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.internal.editor.handler;version="1.17.0";x-internal:=true
 Require-Bundle: org.junit;bundle-version="[4.0.0,5.0.0)",
  org.eclipse.core.runtime;bundle-version="[3.7.0,4.0.0)",
  org.eclipse.emf.ecore;bundle-version="[2.7.0,3.0.0)";visibility:=reexport,
  org.eclipse.emf.emfstore.examplemodel;bundle-version="[1.3.0,2.0.0)",
- org.eclipse.emf.ecp.view.group.model;bundle-version="[1.16.0,1.17.0)",
+ org.eclipse.emf.ecp.view.group.model;bundle-version="[1.17.0,1.18.0]",
  org.mockito.mockito-core-hamcrest-modified;bundle-version="[1.9.5,2.0.0)",
- org.objenesis;bundle-version="[1.0.0,2.0.0)"
+ org.objenesis;bundle-version="[1.0.0,2.0.0)",
+ org.eclipse.emf.ecp.test.common;bundle-version="[1.17.0,1.18.0)"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.ui.view.editor.controls.test
diff --git a/tests/org.eclipse.emf.ecp.ui.view.editor.controls.test/pom.xml b/tests/org.eclipse.emf.ecp.ui.view.editor.controls.test/pom.xml
index 91e6ec7..f2a1dda 100644
--- a/tests/org.eclipse.emf.ecp.ui.view.editor.controls.test/pom.xml
+++ b/tests/org.eclipse.emf.ecp.ui.view.editor.controls.test/pom.xml
@@ -6,12 +6,12 @@
 	<parent>
 		<groupId>org.eclipse.emf.ecp</groupId>
 		<artifactId>ecp-tests-parent</artifactId>
-		<version>1.16.0-SNAPSHOT</version>
+		<version>1.17.0-SNAPSHOT</version>
 		<relativePath>../../releng/org.eclipse.emf.ecp.releng.tests/</relativePath>
 	</parent>
 	<groupId>org.eclipse.emf.ecp</groupId>
 	<artifactId>org.eclipse.emf.ecp.ui.view.editor.controls.test</artifactId>
-	<version>1.16.0-SNAPSHOT</version>
+	<version>1.17.0-SNAPSHOT</version>
 	<packaging>eclipse-test-plugin</packaging>
 
 	<build>
@@ -22,12 +22,42 @@
 				<artifactId>tycho-surefire-plugin</artifactId>
 				<version>${tycho-version}</version>
 				<configuration>
+					<includes>
+						<include>**/*_PTest.java</include>
+						<include>**/*_ITest.java</include>
+						<!-- Execute SWT-Related tests with tycho surefire -->
+						<include>**/LeafConditionControlRenderer_Test.java</include>
+						<include>**/ExpectedValueControlRenderer_Test.java</include>
+					</includes>
 		          	<useUIHarness>true</useUIHarness>
 		          	<useUIThread>true</useUIThread>
 		        	<failIfNoTests>false</failIfNoTests>
 				</configuration>
 			</plugin>
 			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-surefire-plugin</artifactId>
+				<version>${mav-surefire-version}</version>
+				<executions>
+					<execution>
+						<id>test</id>
+						<phase>test</phase>
+						<configuration>
+							<testClassesDirectory>${project.build.outputDirectory}</testClassesDirectory>
+							<excludes>
+								<!-- Executed with tycho surefire -->
+								<exclude>**/LeafConditionControlRenderer_Test.java</exclude>
+								<exclude>**/ExpectedValueControlRenderer_Test.java</exclude>
+							</excludes>
+							<testFailureIgnore>true</testFailureIgnore>
+				        </configuration>
+						<goals>
+							<goal>test</goal>
+						</goals>
+					</execution>
+				</executions>
+			</plugin>
+			<plugin>
 				<groupId>org.eclipse.tycho</groupId>
 				<artifactId>target-platform-configuration</artifactId>
 				<configuration>
diff --git a/tests/org.eclipse.emf.ecp.ui.view.editor.controls.test/src/org/eclipse/emf/ecp/ui/view/editor/controls/test/AllTests.java b/tests/org.eclipse.emf.ecp.ui.view.editor.controls.test/src/org/eclipse/emf/ecp/ui/view/editor/controls/test/AllTests.java
index 965253d..151d6c0 100644
--- a/tests/org.eclipse.emf.ecp.ui.view.editor.controls.test/src/org/eclipse/emf/ecp/ui/view/editor/controls/test/AllTests.java
+++ b/tests/org.eclipse.emf.ecp.ui.view.editor.controls.test/src/org/eclipse/emf/ecp/ui/view/editor/controls/test/AllTests.java
@@ -11,6 +11,8 @@
  ******************************************************************************/
 package org.eclipse.emf.ecp.ui.view.editor.controls.test;
 
+import org.eclipse.emf.ecp.view.internal.editor.controls.ExpectedValueControlRenderer_Test;
+import org.eclipse.emf.ecp.view.internal.editor.controls.LeafConditionControlRenderer_Test;
 import org.eclipse.emf.ecp.view.internal.editor.handler.GenerateControlsHandler_Test;
 import org.junit.runner.RunWith;
 import org.junit.runners.Suite;
@@ -25,7 +27,9 @@
 	SelectAttributes_Test.class,
 	ControlGenerator_PTest.class,
 	Helper_Test.class,
-	GenerateControlsHandler_Test.class
+	GenerateControlsHandler_Test.class,
+	ExpectedValueControlRenderer_Test.class,
+	LeafConditionControlRenderer_Test.class
 })
 public class AllTests {
 
diff --git a/tests/org.eclipse.emf.ecp.ui.view.editor.controls.test/src/org/eclipse/emf/ecp/view/internal/editor/controls/ExpectedValueControlRenderer_Test.java b/tests/org.eclipse.emf.ecp.ui.view.editor.controls.test/src/org/eclipse/emf/ecp/view/internal/editor/controls/ExpectedValueControlRenderer_Test.java
new file mode 100644
index 0000000..48cc342
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.ui.view.editor.controls.test/src/org/eclipse/emf/ecp/view/internal/editor/controls/ExpectedValueControlRenderer_Test.java
@@ -0,0 +1,114 @@
+/*******************************************************************************
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * Lucas Koehler - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.emf.ecp.view.internal.editor.controls;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+import static org.mockito.Matchers.any;
+import static org.mockito.Matchers.eq;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.verify;
+
+import org.eclipse.emf.ecore.EcorePackage;
+import org.eclipse.emf.ecp.test.common.DefaultRealm;
+import org.eclipse.emf.ecp.view.spi.context.ViewModelContext;
+import org.eclipse.emf.ecp.view.spi.model.VControl;
+import org.eclipse.emf.ecp.view.spi.model.VViewFactory;
+import org.eclipse.emf.ecp.view.template.model.VTViewTemplateProvider;
+import org.eclipse.emfforms.spi.common.report.ReportService;
+import org.eclipse.emfforms.spi.core.services.databinding.EMFFormsDatabinding;
+import org.eclipse.emfforms.spi.core.services.label.EMFFormsLabelProvider;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Shell;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ * Unit tests for {@link ExpectedValueControlRenderer}.
+ *
+ * @author Lucas Koehler
+ *
+ */
+public class ExpectedValueControlRenderer_Test {
+	private static final String TEST_STRING = "TestString";
+
+	private TestExpectedValueControlRenderer renderer;
+	private VControl vControl;
+	private ReportService reportService;
+	private ViewModelContext viewContext;
+	private DefaultRealm realm;
+
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@Before
+	public void setUp() throws Exception {
+		realm = new DefaultRealm();
+		reportService = mock(ReportService.class);
+		vControl = VViewFactory.eINSTANCE.createControl();
+		viewContext = mock(ViewModelContext.class);
+		final EMFFormsDatabinding databinding = mock(EMFFormsDatabinding.class);
+		final EMFFormsLabelProvider labelProvider = mock(EMFFormsLabelProvider.class);
+		final VTViewTemplateProvider templateProvider = mock(VTViewTemplateProvider.class);
+		renderer = spy(new TestExpectedValueControlRenderer(vControl, viewContext, reportService, databinding,
+			labelProvider, templateProvider));
+	}
+
+	@After
+	public void tearDown() {
+		realm.dispose();
+	}
+
+	@Test
+	public void getSelectedObject_nullAttribute() {
+		final Object selectedObject = renderer.getSelectedObject(null);
+
+		assertNull(selectedObject);
+		verify(renderer).showError(any(Shell.class), eq("Missing Attribute"),
+			eq("Please select an attribute before attempting to select its value."));
+	}
+
+	@Test
+	public void getSelectedObject_primitiveAttribute() {
+		final Object object = renderer.getSelectedObject(EcorePackage.Literals.ENAMED_ELEMENT__NAME);
+
+		assertTrue(object instanceof String);
+		assertEquals(TEST_STRING, object);
+	}
+
+	public class TestExpectedValueControlRenderer extends ExpectedValueControlRenderer {
+
+		TestExpectedValueControlRenderer(VControl vElement, ViewModelContext viewContext,
+			ReportService reportService, EMFFormsDatabinding databindingService, EMFFormsLabelProvider labelProvider,
+			VTViewTemplateProvider viewTemplateProvider) {
+			super(vElement, viewContext, reportService, databindingService, labelProvider, viewTemplateProvider);
+		}
+
+		@Override
+		protected void onSelectButton(Label text) {
+			// Do nothing
+		}
+
+		@Override
+		protected void showError(Shell shell, String title, String description) {
+			// Do nothing
+		}
+
+		@Override
+		Object promptForValue(Shell shell, Object object, Class<?> attributeClazz) {
+			return TEST_STRING;
+		}
+	}
+}
diff --git a/tests/org.eclipse.emf.ecp.ui.view.editor.controls.test/src/org/eclipse/emf/ecp/view/internal/editor/controls/LeafConditionControlRenderer_Test.java b/tests/org.eclipse.emf.ecp.ui.view.editor.controls.test/src/org/eclipse/emf/ecp/view/internal/editor/controls/LeafConditionControlRenderer_Test.java
new file mode 100644
index 0000000..fd2ddbc
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.ui.view.editor.controls.test/src/org/eclipse/emf/ecp/view/internal/editor/controls/LeafConditionControlRenderer_Test.java
@@ -0,0 +1,143 @@
+/*******************************************************************************
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * Lucas Koehler - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.emf.ecp.view.internal.editor.controls;
+
+import static org.mockito.Matchers.any;
+import static org.mockito.Matchers.eq;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.verify;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecp.test.common.DefaultRealm;
+import org.eclipse.emf.ecp.view.spi.context.ViewModelContext;
+import org.eclipse.emf.ecp.view.spi.model.VControl;
+import org.eclipse.emf.ecp.view.spi.model.VFeaturePathDomainModelReference;
+import org.eclipse.emf.ecp.view.spi.model.VViewFactory;
+import org.eclipse.emf.ecp.view.spi.model.VViewPackage;
+import org.eclipse.emf.ecp.view.spi.rule.model.LeafCondition;
+import org.eclipse.emf.ecp.view.spi.rule.model.RuleFactory;
+import org.eclipse.emf.ecp.view.template.model.VTViewTemplateProvider;
+import org.eclipse.emfforms.spi.common.report.ReportService;
+import org.eclipse.emfforms.spi.core.services.databinding.DatabindingFailedException;
+import org.eclipse.emfforms.spi.core.services.databinding.EMFFormsDatabinding;
+import org.eclipse.emfforms.spi.core.services.label.EMFFormsLabelProvider;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Shell;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ * Unit tests for {@link LeafConditionControlRenderer}.
+ *
+ * @author Lucas Koehler
+ *
+ */
+public class LeafConditionControlRenderer_Test {
+	private TestLeafConditionControlRenderer renderer;
+	private VControl vControl;
+	private ReportService reportService;
+	private ViewModelContext viewContext;
+	private LeafCondition leafCondition;
+	private DefaultRealm realm;
+
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@Before
+	public void setUp() throws Exception {
+		realm = new DefaultRealm();
+		reportService = mock(ReportService.class);
+		vControl = VViewFactory.eINSTANCE.createControl();
+		viewContext = mock(ViewModelContext.class);
+		final EMFFormsDatabinding databinding = mock(EMFFormsDatabinding.class);
+		final EMFFormsLabelProvider labelProvider = mock(EMFFormsLabelProvider.class);
+		final VTViewTemplateProvider templateProvider = mock(VTViewTemplateProvider.class);
+		renderer = spy(new TestLeafConditionControlRenderer(vControl, viewContext, reportService, databinding,
+			labelProvider, templateProvider));
+		leafCondition = RuleFactory.eINSTANCE.createLeafCondition();
+	}
+
+	@After
+	public void tearDown() {
+		realm.dispose();
+	}
+
+	@Test
+	public void onSelectButton_valueDmrNullDomainModelFeature() {
+		final Label label = mock(Label.class);
+		final VFeaturePathDomainModelReference dmr = VViewFactory.eINSTANCE.createFeaturePathDomainModelReference();
+		leafCondition.setDomainModelReference(dmr);
+		dmr.setDomainModelEFeature(VViewPackage.Literals.ELEMENT__LABEL);
+		final VFeaturePathDomainModelReference valueDmr = VViewFactory.eINSTANCE
+			.createFeaturePathDomainModelReference();
+		// do not set a domain model e feature in the value dmr
+		leafCondition.setValueDomainModelReference(valueDmr);
+
+		renderer.onSelectButton(label);
+
+		verify(renderer).showError(any(Shell.class), eq("No value selected"), //$NON-NLS-1$
+			eq("Please set a value to the Domain Model Reference first.")); //$NON-NLS-1$
+	}
+
+	@Test
+	public void onSelectButton_conditionDmrNull() {
+		final Label label = mock(Label.class);
+
+		renderer.onSelectButton(label);
+
+		verify(renderer).showError(any(Shell.class), eq("No Feature Path Domain Model Reference found"), //$NON-NLS-1$
+			eq("A Feature Path Domain Model Reference needs to be added to the condition first.")); //$NON-NLS-1$
+	}
+
+	public class TestLeafConditionControlRenderer extends LeafConditionControlRenderer {
+
+		/**
+		 * @param vElement
+		 * @param viewContext
+		 * @param reportService
+		 */
+		TestLeafConditionControlRenderer(VControl vElement, ViewModelContext viewContext, ReportService reportService,
+			EMFFormsDatabinding databindingService, EMFFormsLabelProvider labelProvider,
+			VTViewTemplateProvider viewTemplateProvider) {
+			super(vElement, viewContext, reportService, databindingService, labelProvider, viewTemplateProvider);
+		}
+
+		@Override
+		protected void showError(Shell shell, String title, String description) {
+			// Do nothing
+		}
+
+		/**
+		 * {@inheritDoc}
+		 *
+		 * @see org.eclipse.emf.ecp.view.internal.editor.controls.ExpectedValueControlRenderer#getObservedEObject()
+		 */
+		@Override
+		protected EObject getObservedEObject() throws DatabindingFailedException {
+			return leafCondition;
+		}
+
+		/**
+		 * {@inheritDoc}
+		 *
+		 * @see org.eclipse.emf.ecp.view.internal.editor.controls.ExpectedValueControlRenderer#promptForValue(org.eclipse.swt.widgets.Shell,
+		 *      java.lang.Object, java.lang.Class)
+		 */
+		@Override
+		Object promptForValue(Shell shell, Object object, Class<?> attributeClazz) {
+			return object;
+		}
+
+	}
+}
diff --git a/tests/org.eclipse.emf.ecp.ui.view.linewrapper.tests/META-INF/MANIFEST.MF b/tests/org.eclipse.emf.ecp.ui.view.linewrapper.tests/META-INF/MANIFEST.MF
index 22e39f2..a0bd882 100644
--- a/tests/org.eclipse.emf.ecp.ui.view.linewrapper.tests/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.emf.ecp.ui.view.linewrapper.tests/META-INF/MANIFEST.MF
@@ -2,9 +2,10 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: ECP String Modifier with Line Wrapping Tests
 Bundle-SymbolicName: org.eclipse.emf.ecp.ui.view.linewrapper.tests
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Fragment-Host: org.eclipse.emf.ecp.ui.view.linewrapper;bundle-version="[1.16.0,1.17.0)"
-Export-Package: org.eclipse.emf.ecp.ui.view.linewrapper.tests;version="1.16.0";x-internal:=true
+Fragment-Host: org.eclipse.emf.ecp.ui.view.linewrapper;bundle-version="[1.17.0,1.18.0]"
+Export-Package: org.eclipse.emf.ecp.ui.view.linewrapper.tests;version="1.17.0";x-internal:=true
 Require-Bundle: org.junit;bundle-version="[4.0.0,5.0.0)"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Automatic-Module-Name: org.eclipse.emf.ecp.ui.view.linewrapper.tests
diff --git a/tests/org.eclipse.emf.ecp.ui.view.linewrapper.tests/pom.xml b/tests/org.eclipse.emf.ecp.ui.view.linewrapper.tests/pom.xml
index e08d6c3..30d8dff 100644
--- a/tests/org.eclipse.emf.ecp.ui.view.linewrapper.tests/pom.xml
+++ b/tests/org.eclipse.emf.ecp.ui.view.linewrapper.tests/pom.xml
@@ -6,12 +6,12 @@
 	<parent>
 		<groupId>org.eclipse.emf.ecp</groupId>
 		<artifactId>ecp-tests-parent</artifactId>
-		<version>1.16.0-SNAPSHOT</version>
+		<version>1.17.0-SNAPSHOT</version>
 		<relativePath>../../releng/org.eclipse.emf.ecp.releng.tests/</relativePath>
 	</parent>
 	<groupId>org.eclipse.emf.ecp</groupId>
 	<artifactId>org.eclipse.emf.ecp.ui.view.linewrapper.tests</artifactId>
-	<version>1.16.0-SNAPSHOT</version>
+	<version>1.17.0-SNAPSHOT</version>
 	<packaging>eclipse-plugin</packaging>
 
 </project>
diff --git a/tests/org.eclipse.emf.ecp.ui.view.swt.test/ECPSWTViewRendererTest.launch b/tests/org.eclipse.emf.ecp.ui.view.swt.test/ECPSWTViewRendererTest.launch
index 7aacc65..9fafa93 100644
--- a/tests/org.eclipse.emf.ecp.ui.view.swt.test/ECPSWTViewRendererTest.launch
+++ b/tests/org.eclipse.emf.ecp.ui.view.swt.test/ECPSWTViewRendererTest.launch
@@ -1,43 +1,43 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>

-<launchConfiguration type="org.eclipse.pde.ui.JunitLaunchConfig">

-<booleanAttribute key="append.args" value="true"/>

-<stringAttribute key="application" value="org.eclipse.pde.junit.runtime.coretestapplication"/>

-<booleanAttribute key="askclear" value="false"/>

-<booleanAttribute key="automaticAdd" value="false"/>

-<booleanAttribute key="automaticValidate" value="false"/>

-<stringAttribute key="bootstrap" value=""/>

-<stringAttribute key="checked" value="[NONE]"/>

-<booleanAttribute key="clearConfig" value="true"/>

-<booleanAttribute key="clearws" value="true"/>

-<booleanAttribute key="clearwslog" value="false"/>

-<stringAttribute key="configLocation" value="${workspace_loc}/.metadata/.plugins/org.eclipse.pde.core/pde-junit"/>

-<booleanAttribute key="default" value="false"/>

-<booleanAttribute key="includeOptional" value="false"/>

-<stringAttribute key="location" value="${workspace_loc}/../junit-workspace"/>

-<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">

-<listEntry value="/org.eclipse.emf.ecp.ui.view.swt.test/src/org/eclipse/emf/ecp/ui/view/swt/test/AllTests.java"/>

-</listAttribute>

-<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">

-<listEntry value="1"/>

-</listAttribute>

-<stringAttribute key="org.eclipse.jdt.junit.CONTAINER" value=""/>

-<booleanAttribute key="org.eclipse.jdt.junit.KEEPRUNNING_ATTR" value="false"/>

-<stringAttribute key="org.eclipse.jdt.junit.TESTNAME" value=""/>

-<stringAttribute key="org.eclipse.jdt.junit.TEST_KIND" value="org.eclipse.jdt.junit.loader.junit4"/>

-<stringAttribute key="org.eclipse.jdt.launching.JRE_CONTAINER" value="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>

-<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.eclipse.emf.ecp.ui.view.swt.test.AllTests"/>

-<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-os ${target.os} -ws ${target.ws} -arch ${target.arch} -nl ${target.nl} -consoleLog"/>

-<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.emf.ecp.ui.view.swt.test"/>

-<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.pde.ui.workbenchClasspathProvider"/>

-<stringAttribute key="pde.version" value="3.3"/>

-<stringAttribute key="product" value="org.eclipse.platform.ide"/>

-<booleanAttribute key="run_in_ui_thread" value="true"/>

-<stringAttribute key="selected_target_plugins" value="com.ibm.icu@default:default,javax.annotation@default:default,javax.inject@default:default,javax.servlet@default:default,javax.xml@default:default,org.apache.batik.css@default:default,org.apache.batik.util.gui@default:default,org.apache.batik.util@default:default,org.apache.commons.codec@default:default,org.apache.commons.jxpath@default:default,org.apache.commons.logging@default:default,org.eclipse.core.commands@default:default,org.eclipse.core.contenttype@default:default,org.eclipse.core.databinding.observable@default:default,org.eclipse.core.databinding.property@default:default,org.eclipse.core.databinding@default:default,org.eclipse.core.expressions@default:default,org.eclipse.core.jobs@default:default,org.eclipse.core.runtime.compatibility.registry@default:false,org.eclipse.core.runtime@default:true,org.eclipse.e4.core.commands@default:default,org.eclipse.e4.core.contexts@default:default,org.eclipse.e4.core.di.annotations@default:default,org.eclipse.e4.core.di.extensions@default:default,org.eclipse.e4.core.di@default:default,org.eclipse.e4.core.services@default:default,org.eclipse.e4.emf.xpath@default:default,org.eclipse.e4.ui.bindings@default:default,org.eclipse.e4.ui.css.core@default:default,org.eclipse.e4.ui.css.swt.theme@default:default,org.eclipse.e4.ui.css.swt@default:default,org.eclipse.e4.ui.di@default:default,org.eclipse.e4.ui.model.workbench@default:default,org.eclipse.e4.ui.services@default:default,org.eclipse.e4.ui.widgets@default:default,org.eclipse.e4.ui.workbench.addons.swt@default:default,org.eclipse.e4.ui.workbench.renderers.swt@default:default,org.eclipse.e4.ui.workbench.swt@default:default,org.eclipse.e4.ui.workbench3@default:default,org.eclipse.e4.ui.workbench@default:default,org.eclipse.emf.cdo.ecore.retrofit@default:false,org.eclipse.emf.common.ui@default:default,org.eclipse.emf.common@default:default,org.eclipse.emf.databinding.edit@default:default,org.eclipse.emf.databinding@default:default,org.eclipse.emf.ecore.change@default:default,org.eclipse.emf.ecore.xmi@default:default,org.eclipse.emf.ecore@default:default,org.eclipse.emf.edit.ui@default:default,org.eclipse.emf.edit@default:default,org.eclipse.emf.emfstore.client@default:default,org.eclipse.emf.emfstore.common.model@default:default,org.eclipse.emf.emfstore.common@default:default,org.eclipse.emf.emfstore.examplemodel.edit@default:default,org.eclipse.emf.emfstore.examplemodel@default:default,org.eclipse.emf.emfstore.migration@default:default,org.eclipse.emf.emfstore.server.model@default:default,org.eclipse.emf.emfstore.server@default:default,org.eclipse.equinox.app@default:default,org.eclipse.equinox.common@2:true,org.eclipse.equinox.ds@1:true,org.eclipse.equinox.event@default:default,org.eclipse.equinox.http.registry@default:default,org.eclipse.equinox.preferences@default:default,org.eclipse.equinox.registry@default:default,org.eclipse.equinox.util@default:default,org.eclipse.help@default:default,org.eclipse.jface.databinding@default:default,org.eclipse.jface@default:default,org.eclipse.net4j.util@default:default,org.eclipse.osgi.services@default:default,org.eclipse.osgi@-1:true,org.eclipse.swt.win32.win32.x86_64@default:false,org.eclipse.swt@default:default,org.eclipse.ui.forms@default:default,org.eclipse.ui.views@default:default,org.eclipse.ui.workbench@default:default,org.eclipse.ui@default:default,org.hamcrest.core@default:default,org.junit@default:default,org.mockito.mockito-all@default:default,org.w3c.css.sac@default:default,org.w3c.dom.events@default:default,org.w3c.dom.smil*1.0.0.v200806040011@default:default,org.w3c.dom.smil*1.0.1.v200903091627@default:default,org.w3c.dom.svg@default:default"/>

-<stringAttribute key="selected_workspace_plugins" value="org.eclipse.emf.ecp.common.ui@default:default,org.eclipse.emf.ecp.common@default:default,org.eclipse.emf.ecp.core@default:default,org.eclipse.emf.ecp.edit.swt@default:default,org.eclipse.emf.ecp.edit@default:default,org.eclipse.emf.ecp.editor.e3@default:default,org.eclipse.emf.ecp.emfstore.core@default:default,org.eclipse.emf.ecp.explorereditorbridge@default:default,org.eclipse.emf.ecp.ui.view.swt.test@default:false,org.eclipse.emf.ecp.ui.view.swt@default:default,org.eclipse.emf.ecp.ui.view.test@default:default,org.eclipse.emf.ecp.ui.view@default:default,org.eclipse.emf.ecp.ui@default:default,org.eclipse.emf.ecp.view.context@default:default,org.eclipse.emf.ecp.view.core.swt@default:default,org.eclipse.emf.ecp.view.custom.model@default:default,org.eclipse.emf.ecp.view.migrator@default:default,org.eclipse.emf.ecp.view.model.common@default:default,org.eclipse.emf.ecp.view.model.provider.generator@default:default,org.eclipse.emf.ecp.view.model.provider.xmi@default:default,org.eclipse.emf.ecp.view.model@default:default,org.eclipse.emf.ecp.view.swt.layout@default:default,org.eclipse.emf.ecp.view.table.model@default:default,org.eclipse.emf.ecp.view.template.model@default:default,org.eclipse.emf.ecp.view.template.service@default:default,org.eclipse.emf.ecp.view.test.common.swt@default:default,org.eclipse.emf.ecp.view.test.common@default:default,org.eclipse.emf.ecp.view.util.swt@default:default,org.eclipse.emf.ecp.view.validation@default:default,org.eclipse.emf.ecp.view.vertical.model@default:default,org.eclipse.emf.ecp.view.vertical.ui.swt@default:default,org.eclipse.emfforms.common@default:default,org.eclipse.emfforms.core.services.databinding.featurepath@default:default,org.eclipse.emfforms.core.services.domainexpander.default@default:default,org.eclipse.emfforms.core.services.editsupport@default:default,org.eclipse.emfforms.core.services.emf@default:default,org.eclipse.emfforms.core.services.emfspecificservice@default:default,org.eclipse.emfforms.core.services.legacy@default:default,org.eclipse.emfforms.core.services.locale.default@default:default,org.eclipse.emfforms.core.services.structuralchange.default@default:default,org.eclipse.emfforms.core.services.structuralchange@default:default,org.eclipse.emfforms.core.services@default:default,org.eclipse.emfforms.localization@default:default,org.eclipse.emfforms.swt.core.di@default:default,org.eclipse.emfforms.swt.core@default:default"/>

-<booleanAttribute key="show_selected_only" value="false"/>

-<booleanAttribute key="tracing" value="false"/>

-<booleanAttribute key="useCustomFeatures" value="false"/>

-<booleanAttribute key="useDefaultConfig" value="true"/>

-<booleanAttribute key="useDefaultConfigArea" value="false"/>

-<booleanAttribute key="useProduct" value="false"/>

-</launchConfiguration>

+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.pde.ui.JunitLaunchConfig">
+<booleanAttribute key="append.args" value="true"/>
+<stringAttribute key="application" value="org.eclipse.pde.junit.runtime.coretestapplication"/>
+<booleanAttribute key="askclear" value="false"/>
+<booleanAttribute key="automaticAdd" value="false"/>
+<booleanAttribute key="automaticValidate" value="false"/>
+<stringAttribute key="bootstrap" value=""/>
+<stringAttribute key="checked" value="[NONE]"/>
+<booleanAttribute key="clearConfig" value="true"/>
+<booleanAttribute key="clearws" value="true"/>
+<booleanAttribute key="clearwslog" value="false"/>
+<stringAttribute key="configLocation" value="${workspace_loc}/.metadata/.plugins/org.eclipse.pde.core/pde-junit"/>
+<booleanAttribute key="default" value="false"/>
+<booleanAttribute key="includeOptional" value="false"/>
+<stringAttribute key="location" value="${workspace_loc}/../junit-workspace"/>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
+<listEntry value="/org.eclipse.emf.ecp.ui.view.swt.test/src/org/eclipse/emf/ecp/ui/view/swt/test/AllTests.java"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
+<listEntry value="1"/>
+</listAttribute>
+<stringAttribute key="org.eclipse.jdt.junit.CONTAINER" value=""/>
+<booleanAttribute key="org.eclipse.jdt.junit.KEEPRUNNING_ATTR" value="false"/>
+<stringAttribute key="org.eclipse.jdt.junit.TESTNAME" value=""/>
+<stringAttribute key="org.eclipse.jdt.junit.TEST_KIND" value="org.eclipse.jdt.junit.loader.junit4"/>
+<stringAttribute key="org.eclipse.jdt.launching.JRE_CONTAINER" value="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
+<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.eclipse.emf.ecp.ui.view.swt.test.AllTests"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-os ${target.os} -ws ${target.ws} -arch ${target.arch} -nl ${target.nl} -consoleLog"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.emf.ecp.ui.view.swt.test"/>
+<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.pde.ui.workbenchClasspathProvider"/>
+<stringAttribute key="pde.version" value="3.3"/>
+<stringAttribute key="product" value="org.eclipse.platform.ide"/>
+<booleanAttribute key="run_in_ui_thread" value="true"/>
+<stringAttribute key="selected_target_plugins" value="com.ibm.icu@default:default,javax.annotation@default:default,javax.inject@default:default,javax.servlet@default:default,org.apache.batik.css*1.7.0.v201011041433@default:default,org.apache.batik.util*1.7.0.v201011041433@default:default,org.apache.batik.util.gui*1.7.0.v200903091627@default:default,org.apache.commons.codec@default:default,org.apache.commons.jxpath@default:default,org.apache.commons.logging@default:default,org.apache.felix.scr@default:default,org.eclipse.core.commands@default:default,org.eclipse.core.contenttype@default:default,org.eclipse.core.databinding*1.5.0.v20150422-0725@default:default,org.eclipse.core.databinding*1.6.100.v20170515-1119@default:default,org.eclipse.core.databinding.observable*1.5.0.v20150422-0725@default:default,org.eclipse.core.databinding.observable*1.6.100.v20170515-1119@default:default,org.eclipse.core.databinding.property*1.5.0.v20150422-0725@default:default,org.eclipse.core.databinding.property*1.6.100.v20170515-1119@default:default,org.eclipse.core.expressions@default:default,org.eclipse.core.jobs@default:default,org.eclipse.core.runtime@default:true,org.eclipse.e4.core.commands@default:default,org.eclipse.e4.core.contexts@default:default,org.eclipse.e4.core.di.annotations@default:default,org.eclipse.e4.core.di.extensions.supplier@default:default,org.eclipse.e4.core.di.extensions@default:default,org.eclipse.e4.core.di@default:default,org.eclipse.e4.core.services@default:default,org.eclipse.e4.emf.xpath@default:default,org.eclipse.e4.ui.bindings@default:default,org.eclipse.e4.ui.css.core@default:default,org.eclipse.e4.ui.css.swt.theme@default:default,org.eclipse.e4.ui.css.swt@default:default,org.eclipse.e4.ui.di@default:default,org.eclipse.e4.ui.model.workbench@default:default,org.eclipse.e4.ui.services@default:default,org.eclipse.e4.ui.widgets@default:default,org.eclipse.e4.ui.workbench.addons.swt@default:default,org.eclipse.e4.ui.workbench.renderers.swt@default:default,org.eclipse.e4.ui.workbench.swt@default:default,org.eclipse.e4.ui.workbench3@default:default,org.eclipse.e4.ui.workbench@default:default,org.eclipse.emf.common.ui@default:default,org.eclipse.emf.common@default:default,org.eclipse.emf.databinding.edit@default:default,org.eclipse.emf.databinding@default:default,org.eclipse.emf.ecore.change@default:default,org.eclipse.emf.ecore.xmi@default:default,org.eclipse.emf.ecore@default:default,org.eclipse.emf.edit.ui@default:default,org.eclipse.emf.edit@default:default,org.eclipse.emf.emfstore.client@default:default,org.eclipse.emf.emfstore.common.model@default:default,org.eclipse.emf.emfstore.common@default:default,org.eclipse.emf.emfstore.examplemodel.edit@default:default,org.eclipse.emf.emfstore.examplemodel@default:default,org.eclipse.emf.emfstore.migration@default:default,org.eclipse.emf.emfstore.server.model@default:default,org.eclipse.emf.emfstore.server@default:default,org.eclipse.equinox.app@default:default,org.eclipse.equinox.common@2:true,org.eclipse.equinox.ds@1:true,org.eclipse.equinox.event@default:default,org.eclipse.equinox.http.registry@default:default,org.eclipse.equinox.preferences@default:default,org.eclipse.equinox.registry@default:default,org.eclipse.equinox.util@default:default,org.eclipse.help@default:default,org.eclipse.jface.databinding@default:default,org.eclipse.jface@default:default,org.eclipse.net4j.util@default:default,org.eclipse.osgi.services@default:default,org.eclipse.osgi.util@default:default,org.eclipse.osgi@-1:true,org.eclipse.swt.gtk.linux.x86_64@default:default,org.eclipse.swt@default:default,org.eclipse.ui.forms@default:default,org.eclipse.ui.views@default:default,org.eclipse.ui.workbench@default:default,org.eclipse.ui@default:default,org.hamcrest.core@default:default,org.junit@default:default,org.mockito.mockito-core-hamcrest-modified@default:default,org.objenesis@default:default,org.w3c.css.sac@default:default,org.w3c.dom.events@default:default,org.w3c.dom.smil*1.0.0.v200806040011@default:default,org.w3c.dom.smil*1.0.1.v200903091627@default:default,org.w3c.dom.svg@default:default"/>
+<stringAttribute key="selected_workspace_plugins" value="org.eclipse.emf.ecp.common.ui@default:default,org.eclipse.emf.ecp.common@default:default,org.eclipse.emf.ecp.core@default:default,org.eclipse.emf.ecp.edit.swt@default:default,org.eclipse.emf.ecp.edit@default:default,org.eclipse.emf.ecp.editor.e3@default:default,org.eclipse.emf.ecp.emfstore.core@default:default,org.eclipse.emf.ecp.explorereditorbridge@default:default,org.eclipse.emf.ecp.ui.view.swt.test@default:false,org.eclipse.emf.ecp.ui.view.swt@default:default,org.eclipse.emf.ecp.ui.view.test@default:default,org.eclipse.emf.ecp.ui.view@default:default,org.eclipse.emf.ecp.ui@default:default,org.eclipse.emf.ecp.view.context@default:default,org.eclipse.emf.ecp.view.core.swt@default:default,org.eclipse.emf.ecp.view.custom.model@default:default,org.eclipse.emf.ecp.view.migrator@default:default,org.eclipse.emf.ecp.view.model.common@default:default,org.eclipse.emf.ecp.view.model.provider.generator@default:default,org.eclipse.emf.ecp.view.model.provider.xmi@default:default,org.eclipse.emf.ecp.view.model@default:default,org.eclipse.emf.ecp.view.swt.layout@default:default,org.eclipse.emf.ecp.view.table.model@default:default,org.eclipse.emf.ecp.view.template.model@default:default,org.eclipse.emf.ecp.view.template.service@default:default,org.eclipse.emf.ecp.view.test.common.swt@default:default,org.eclipse.emf.ecp.view.test.common@default:default,org.eclipse.emf.ecp.view.util.swt@default:default,org.eclipse.emf.ecp.view.validation@default:default,org.eclipse.emf.ecp.view.vertical.model@default:default,org.eclipse.emf.ecp.view.vertical.ui.swt@default:default,org.eclipse.emfforms.common.validation@default:default,org.eclipse.emfforms.common@default:default,org.eclipse.emfforms.core.bazaar@default:default,org.eclipse.emfforms.core.services.databinding.featurepath@default:default,org.eclipse.emfforms.core.services.domainexpander.default@default:default,org.eclipse.emfforms.core.services.editsupport@default:default,org.eclipse.emfforms.core.services.emf@default:default,org.eclipse.emfforms.core.services.emfspecificservice@default:default,org.eclipse.emfforms.core.services.legacy@default:default,org.eclipse.emfforms.core.services.locale.default@default:default,org.eclipse.emfforms.core.services.structuralchange.default@default:default,org.eclipse.emfforms.core.services.structuralchange@default:default,org.eclipse.emfforms.core.services@default:default,org.eclipse.emfforms.localization@default:default,org.eclipse.emfforms.swt.core.di@default:default,org.eclipse.emfforms.swt.core@default:default"/>
+<booleanAttribute key="show_selected_only" value="false"/>
+<booleanAttribute key="tracing" value="false"/>
+<booleanAttribute key="useCustomFeatures" value="false"/>
+<booleanAttribute key="useDefaultConfig" value="true"/>
+<booleanAttribute key="useDefaultConfigArea" value="false"/>
+<booleanAttribute key="useProduct" value="false"/>
+</launchConfiguration>
diff --git a/tests/org.eclipse.emf.ecp.ui.view.swt.test/META-INF/MANIFEST.MF b/tests/org.eclipse.emf.ecp.ui.view.swt.test/META-INF/MANIFEST.MF
index 9a86f5c..efa84fa 100644
--- a/tests/org.eclipse.emf.ecp.ui.view.swt.test/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.emf.ecp.ui.view.swt.test/META-INF/MANIFEST.MF
@@ -2,18 +2,20 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: SWT Renderer Tests
 Bundle-SymbolicName: org.eclipse.emf.ecp.ui.view.swt.test
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Fragment-Host: org.eclipse.emf.ecp.ui.view.swt;bundle-version="[1.16.0,1.17.0)"
-Export-Package: org.eclipse.emf.ecp.ui.view.swt.test;version="1.16.0"
+Fragment-Host: org.eclipse.emf.ecp.ui.view.swt;bundle-version="[1.17.0,1.18.0]"
+Export-Package: org.eclipse.emf.ecp.ui.view.swt;version="1.17.0",
+ org.eclipse.emf.ecp.ui.view.swt.test;version="1.17.0"
 Require-Bundle: org.junit;bundle-version="[4.0.0,5.0.0)",
  org.eclipse.jface.databinding;bundle-version="[1.6.0,2.0.0)",
- org.eclipse.emf.ecp.view.test.common.swt;bundle-version="[1.16.0,1.17.0)",
+ org.eclipse.emf.ecp.view.test.common.swt;bundle-version="[1.17.0,1.18.0]",
  org.eclipse.emf.emfstore.examplemodel;bundle-version="[1.3.0,2.0.0)",
- org.eclipse.emf.ecp.view.vertical.model;bundle-version="[1.16.0,1.17.0)",
- org.eclipse.emfforms.core.services.legacy;bundle-version="[1.16.0,1.17.0)",
- org.eclipse.emfforms.core.services.domainexpander.default;bundle-version="[1.16.0,1.17.0)",
- org.eclipse.emfforms.core.services.structuralchange.default;bundle-version="[1.16.0,1.17.0)",
- org.eclipse.emfforms.core.services.structuralchange;bundle-version="[1.16.0,1.17.0)",
+ org.eclipse.emf.ecp.view.vertical.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services.legacy;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services.domainexpander.default;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services.structuralchange.default;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services.structuralchange;bundle-version="[1.17.0,1.18.0]",
  org.mockito.mockito-core-hamcrest-modified;bundle-version="[1.9.5,2.0.0)"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Automatic-Module-Name: org.eclipse.emf.ecp.ui.view.swt.test
diff --git a/tests/org.eclipse.emf.ecp.ui.view.swt.test/pom.xml b/tests/org.eclipse.emf.ecp.ui.view.swt.test/pom.xml
index 64b25c5..070672e 100644
--- a/tests/org.eclipse.emf.ecp.ui.view.swt.test/pom.xml
+++ b/tests/org.eclipse.emf.ecp.ui.view.swt.test/pom.xml
@@ -6,12 +6,12 @@
 	<parent>
 		<groupId>org.eclipse.emf.ecp</groupId>
 		<artifactId>ecp-tests-parent</artifactId>
-		<version>1.16.0-SNAPSHOT</version>
+		<version>1.17.0-SNAPSHOT</version>
 		<relativePath>../../releng/org.eclipse.emf.ecp.releng.tests/</relativePath>
 	</parent>
 	<groupId>org.eclipse.emf.ecp</groupId>
 	<artifactId>org.eclipse.emf.ecp.ui.view.swt.test</artifactId>
-	<version>1.16.0-SNAPSHOT</version>
+	<version>1.17.0-SNAPSHOT</version>
 	<packaging>eclipse-test-plugin</packaging>
 
 	<build>
diff --git a/tests/org.eclipse.emf.ecp.ui.view.swt.test/src/org/eclipse/emf/ecp/ui/view/swt/DefaultReferenceService_PTest.java b/tests/org.eclipse.emf.ecp.ui.view.swt.test/src/org/eclipse/emf/ecp/ui/view/swt/DefaultReferenceService_PTest.java
index 5af64cf..f76b7f3 100644
--- a/tests/org.eclipse.emf.ecp.ui.view.swt.test/src/org/eclipse/emf/ecp/ui/view/swt/DefaultReferenceService_PTest.java
+++ b/tests/org.eclipse.emf.ecp.ui.view.swt.test/src/org/eclipse/emf/ecp/ui/view/swt/DefaultReferenceService_PTest.java
@@ -29,7 +29,6 @@
 import java.lang.reflect.Method;
 import java.util.Arrays;
 import java.util.Collection;
-import java.util.Collections;
 import java.util.HashSet;
 import java.util.Hashtable;
 import java.util.Iterator;
@@ -46,7 +45,6 @@
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.EClassifier;
 import org.eclipse.emf.ecore.EDataType;
-import org.eclipse.emf.ecore.EEnum;
 import org.eclipse.emf.ecore.EObject;
 import org.eclipse.emf.ecore.EOperation;
 import org.eclipse.emf.ecore.EPackage;
@@ -61,7 +59,6 @@
 import org.eclipse.emf.ecore.util.EcoreUtil;
 import org.eclipse.emf.ecp.edit.spi.ReferenceService;
 import org.eclipse.emf.ecp.ui.view.swt.reference.AttachmentStrategy;
-import org.eclipse.emf.ecp.ui.view.swt.reference.EClassSelectionStrategy;
 import org.eclipse.emf.ecp.ui.view.swt.reference.EObjectSelectionStrategy;
 import org.eclipse.emf.ecp.ui.view.swt.reference.OpenInNewContextStrategy;
 import org.eclipse.emf.ecp.ui.view.swt.reference.ReferenceServiceCustomizationVendor;
@@ -191,39 +188,19 @@
 	@Test
 	public void addNewModelElements() {
 		final EClass foo = (EClass) testPackage.getEClassifier("Foo");
-		final EStructuralFeature state = foo.getEStructuralFeature("state");
 
-		// A canary
-		final EClassSelectionStrategy canary = mock(EClassSelectionStrategy.class);
-		when(canary.collectEClasses(any(EObject.class), any(EReference.class), anyCollectionOf(EClass.class)))
-			.then(new Answer<Collection<EClass>>() {
-				@SuppressWarnings("unchecked")
-				@Override
-				public Collection<EClass> answer(InvocationOnMock invocation) throws Throwable {
-					return (Collection<EClass>) invocation.getArguments()[2];
-				}
-			});
-		register(vendor(canary));
+		fixture.addNewModelElements(foo, EcorePackage.Literals.ECLASS__EOPERATIONS, true);
+		// test that an operation was added to foo
+		assertThat(foo.getEOperations().size(), is(1));
 
-		fixture.addNewModelElements(state, EcorePackage.Literals.ETYPED_ELEMENT__ETYPE);
-		assertThat(state.getEType(), instanceOf(EEnum.class));
-		final EEnum type = (EEnum) state.getEType();
-
-		// Check the canary
-		verify(canary).collectEClasses(eq(state), eq(EcorePackage.Literals.ETYPED_ELEMENT__ETYPE),
-			anyCollectionOf(EClass.class));
-
-		// It was created in the types package, not the package containing "foo"
-		assertThat(type.getEPackage(), is(typesPackage));
-
-		// The reference service "opened" this new object
-		verify(openStrategy).openInNewContext(typesPackage, EcorePackage.Literals.EPACKAGE__ECLASSIFIERS, type);
+		verify(openStrategy).openInNewContext(foo, EcorePackage.Literals.ECLASS__EOPERATIONS,
+			foo.getEOperations().get(0));
 	}
 
 	@Test
 	public void attachDefaultCase_inOwner() {
 		final EClass foo = (EClass) testPackage.getEClassifier("Foo");
-		fixture.addNewModelElements(foo, EcorePackage.Literals.ECLASS__EOPERATIONS);
+		fixture.addNewModelElements(foo, EcorePackage.Literals.ECLASS__EOPERATIONS, true);
 		assertThat(foo.getEOperations(), CoreMatchers.<EOperation> hasItem(anything()));
 		final EOperation op = foo.getEOperations().get(0);
 
@@ -236,7 +213,7 @@
 	@Test
 	public void attachDefaultCase_inAncestorOfOwner() {
 		final EClass foo = (EClass) testPackage.getEClassifier("Foo");
-		fixture.addNewModelElements(foo, EcorePackage.Literals.ECLASS__ESUPER_TYPES);
+		fixture.addNewModelElements(foo, EcorePackage.Literals.ECLASS__ESUPER_TYPES, true);
 		assertThat(foo.getESuperTypes(), CoreMatchers.<EClass> hasItem(anything()));
 		final EClass supertype = foo.getESuperTypes().get(0);
 
@@ -255,7 +232,7 @@
 		testPackage.getEClassifiers().remove(foo);
 		resource.getContents().add(foo);
 
-		fixture.addNewModelElements(foo, EcorePackage.Literals.ECLASS__ESUPER_TYPES);
+		fixture.addNewModelElements(foo, EcorePackage.Literals.ECLASS__ESUPER_TYPES, true);
 		assertThat(foo.getESuperTypes(), CoreMatchers.<EClass> hasItem(anything()));
 		final EClass supertype = foo.getESuperTypes().get(0);
 
@@ -373,7 +350,7 @@
 	 * @param initialShells the shells that are/were open before starting the thread that
 	 *            runs the resulting runnable
 	 * @param doIt a flag that will turn off when the test no longer needs to look for the dialog
-	 * 
+	 *
 	 * @return the dialog selection runnable
 	 */
 	Runnable selectFirstElementInDialog(final Display display, final Set<Shell> initialShells,
@@ -480,7 +457,6 @@
 		registrations = Arrays.asList(
 			register(new Attachment()),
 			register(new Reference()),
-			register(new EClassSelection()),
 			register(new EObjectSelection()),
 			register(new OpenInNewContext()));
 	}
@@ -572,24 +548,6 @@
 	}
 
 	/**
-	 * Obtain a strategy that allows instantiation only of the given class, if any.
-	 *
-	 * @param eClass the only class permitted to be instantiated
-	 * @return the strategy
-	 */
-	EClassSelectionStrategy onlyCreate(final EClass eClass) {
-		return new EClassSelectionStrategy() {
-
-			@Override
-			public Collection<EClass> collectEClasses(EObject owner, EReference reference,
-				Collection<EClass> eclasses) {
-				eclasses.retainAll(Collections.singleton(eClass));
-				return eclasses;
-			}
-		};
-	}
-
-	/**
 	 * Obtain a strategy that allows selection only of objects contained within the given {@code ancestor}.
 	 *
 	 * @param ancestor an object in which to find the eligible existing objects to reference
@@ -633,18 +591,6 @@
 		};
 	}
 
-	ReferenceServiceCustomizationVendor<EClassSelectionStrategy> vendor(final EClassSelectionStrategy strategy) {
-		class StaticProvider extends ReferenceServiceCustomizationVendor<EClassSelectionStrategy>
-			implements EClassSelectionStrategy.Provider {
-			@Create
-			public EClassSelectionStrategy create() {
-				return strategy;
-			}
-		}
-
-		return new StaticProvider();
-	}
-
 	ReferenceServiceCustomizationVendor<EObjectSelectionStrategy> vendor(final EObjectSelectionStrategy strategy) {
 		class StaticProvider extends ReferenceServiceCustomizationVendor<EObjectSelectionStrategy>
 			implements EObjectSelectionStrategy.Provider {
@@ -689,31 +635,6 @@
 		}
 	}
 
-	private class EClassSelection extends ReferenceServiceCustomizationVendor<EClassSelectionStrategy>
-		implements EClassSelectionStrategy.Provider {
-
-		@Override
-		protected boolean handles(EObject owner, EReference reference) {
-			return reference == EcorePackage.Literals.ECLASS__ESUPER_TYPES
-				|| reference == EcorePackage.Literals.ETYPED_ELEMENT__ETYPE && owner instanceof EAttribute;
-		}
-
-		@Create
-		public EClassSelectionStrategy create(EObject owner, EReference reference) {
-			EClassSelectionStrategy result = null;
-
-			if (reference == EcorePackage.Literals.ECLASS__ESUPER_TYPES) {
-				result = onlyCreate(EcorePackage.Literals.ECLASS);
-			} else if (reference == EcorePackage.Literals.ETYPED_ELEMENT__ETYPE
-				&& owner instanceof EAttribute) {
-
-				result = onlyCreate(EcorePackage.Literals.EENUM);
-			}
-
-			return result;
-		}
-	}
-
 	private class EObjectSelection extends ReferenceServiceCustomizationVendor<EObjectSelectionStrategy>
 		implements EObjectSelectionStrategy.Provider {
 
diff --git a/tests/org.eclipse.emf.ecp.ui.view.swt.test/src/org/eclipse/emf/ecp/ui/view/swt/test/AllTests.java b/tests/org.eclipse.emf.ecp.ui.view.swt.test/src/org/eclipse/emf/ecp/ui/view/swt/test/AllTests.java
index 4389bb2..0ce1280 100644
--- a/tests/org.eclipse.emf.ecp.ui.view.swt.test/src/org/eclipse/emf/ecp/ui/view/swt/test/AllTests.java
+++ b/tests/org.eclipse.emf.ecp.ui.view.swt.test/src/org/eclipse/emf/ecp/ui/view/swt/test/AllTests.java
@@ -25,6 +25,7 @@
 @RunWith(Suite.class)
 @Suite.SuiteClasses({ ECPSWTViewRenderer_PTest.class,
 	DefaultReferenceService_PTest.class,
+	DefaultCreateNewModelElementStrategyProvider_PTest.class
 })
 public class AllTests {
 
diff --git a/tests/org.eclipse.emf.ecp.ui.view.swt.test/src/org/eclipse/emf/ecp/ui/view/swt/test/DefaultCreateNewModelElementStrategyProvider_PTest.java b/tests/org.eclipse.emf.ecp.ui.view.swt.test/src/org/eclipse/emf/ecp/ui/view/swt/test/DefaultCreateNewModelElementStrategyProvider_PTest.java
new file mode 100644
index 0000000..b367281
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.ui.view.swt.test/src/org/eclipse/emf/ecp/ui/view/swt/test/DefaultCreateNewModelElementStrategyProvider_PTest.java
@@ -0,0 +1,203 @@
+/*******************************************************************************
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * eugen - initial API and implementation
+ * Christian W. Damus - bug 529138
+ ******************************************************************************/
+package org.eclipse.emf.ecp.ui.view.swt.test;
+
+import static java.lang.Double.POSITIVE_INFINITY;
+import static java.util.Collections.singleton;
+import static org.hamcrest.CoreMatchers.instanceOf;
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.junit.Assert.assertTrue;
+import static org.mockito.Matchers.any;
+import static org.mockito.Matchers.anyCollectionOf;
+import static org.mockito.Matchers.isNull;
+import static org.mockito.Matchers.same;
+import static org.mockito.Mockito.calls;
+import static org.mockito.Mockito.inOrder;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EEnum;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.EcoreFactory;
+import org.eclipse.emf.ecore.EcorePackage;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecp.ui.view.swt.reference.CreateNewModelElementStrategy;
+import org.eclipse.emf.ecp.ui.view.swt.reference.CreateNewModelElementStrategy.Provider;
+import org.eclipse.emf.ecp.ui.view.swt.reference.DefaultCreateNewModelElementStrategyProvider;
+import org.eclipse.emf.ecp.ui.view.swt.reference.EClassSelectionStrategy;
+import org.eclipse.emfforms.bazaar.Bazaar;
+import org.eclipse.emfforms.bazaar.BazaarContext;
+import org.eclipse.emfforms.bazaar.Bid;
+import org.eclipse.emfforms.bazaar.Create;
+import org.eclipse.emfforms.common.Optional;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.osgi.framework.Bundle;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.FrameworkUtil;
+import org.osgi.framework.ServiceReference;
+
+/**
+ * @author eugen
+ *
+ */
+public class DefaultCreateNewModelElementStrategyProvider_PTest {
+
+	private DefaultCreateNewModelElementStrategyProvider provider;
+	private static BundleContext bundleContext;
+	private ServiceReference<Provider> serviceReference;
+	private Bazaar<CreateNewModelElementStrategy> bazaar;
+
+	private BazaarContext context;
+
+	@BeforeClass
+	public static void prepare() {
+		final Bundle bundle = FrameworkUtil.getBundle(DefaultCreateNewModelElementStrategyProvider_PTest.class);
+		bundleContext = bundle.getBundleContext();
+	}
+
+	@Before
+	public void setup() {
+		serviceReference = bundleContext.getServiceReference(CreateNewModelElementStrategy.Provider.class);
+		provider = (DefaultCreateNewModelElementStrategyProvider) bundleContext.getService(serviceReference);
+		final Bazaar.Builder<CreateNewModelElementStrategy> builder = Bazaar.Builder.with(singleton(provider));
+		bazaar = builder.build();
+		final Map<String, ?> values = new HashMap<String, Object>();
+		values.put(EObject.class.getName(), null);
+		values.put(EReference.class.getName(), null);
+		context = BazaarContext.Builder.with(values).build();
+	}
+
+	@Test
+	public void testDefault() {
+		final CreateNewModelElementStrategy createProduct = bazaar
+			.createProduct(context);
+
+		final Optional<EObject> createNewModelElement = createProduct.createNewModelElement(null,
+			EcorePackage.eINSTANCE.getEClass_EAllAttributes());
+		assertTrue(createNewModelElement.isPresent());
+	}
+
+	@Test
+	public void testEClassSelectionStrategy() {
+		final EClassSelectionStrategy strategy = forceEClass(EcorePackage.eINSTANCE.getEPackage());
+		final TestEClassSelectionStrategyProvider selectionStrategyProvider = new TestEClassSelectionStrategyProvider(
+			POSITIVE_INFINITY, strategy);
+		provider.addEClassSelectionStrategyProvider(selectionStrategyProvider);
+
+		final CreateNewModelElementStrategy createProduct = bazaar
+			.createProduct(context);
+
+		final Optional<EObject> createNewModelElement = createProduct.createNewModelElement(null,
+			EcorePackage.eINSTANCE.getEClass_EAllAttributes());
+		assertTrue(EPackage.class.isInstance(createNewModelElement.get()));
+
+		inOrder(strategy).verify(strategy, calls(1)).collectEClasses(isNull(EObject.class),
+			same(EcorePackage.eINSTANCE.getEClass_EAllAttributes()),
+			anyCollectionOf(EClass.class));
+		provider.removeEClassSelectionStrategyProvider(selectionStrategyProvider);
+	}
+
+	/**
+	 * Regression test for <a href="http://eclip.se/529138">bug 529138</a>, usage of
+	 * child creation descriptors from the EMF.Edit item providers in creation of
+	 * new objects.
+	 *
+	 * @see <a href="http://eclip.se/529138">bug 529138</a>
+	 */
+	@Test
+	public void createNewElementWithChildCreationDescriptor() {
+
+		// Set up an item provider to create a template-based child descriptor.
+		// Create a container object in the context of an editing domain in order to let the
+		// framework get child creation descriptors
+		final EEnum template = EcoreFactory.eINSTANCE.createEEnum();
+		template.setName("NewEnum1");
+		final Resource res = new EMFEditNewChildFactoryBuilder()
+			.addTemplate(EPackage.class, EcorePackage.Literals.EPACKAGE__ECLASSIFIERS, template)
+			.buildResource();
+		final EPackage testPackage = EcoreFactory.eINSTANCE.createEPackage();
+		res.getContents().add(testPackage);
+
+		// We don't want a user class selection prompt dialog, so force the EEnum class
+		final EClassSelectionStrategy strategy = forceEClass(EcorePackage.Literals.EENUM);
+		final TestEClassSelectionStrategyProvider selectionStrategyProvider = new TestEClassSelectionStrategyProvider(
+			POSITIVE_INFINITY, strategy);
+		provider.addEClassSelectionStrategyProvider(selectionStrategyProvider);
+
+		// Run the test
+		final CreateNewModelElementStrategy createProduct = bazaar.createProduct(context);
+
+		final Optional<EObject> newObject = createProduct.createNewModelElement(testPackage,
+			EcorePackage.Literals.EPACKAGE__ECLASSIFIERS);
+		assertThat(newObject.isPresent(), is(true));
+		assertThat(newObject.get(), instanceOf(EEnum.class));
+		final EEnum type = (EEnum) newObject.get();
+
+		// The item provider configured the new object
+		assertThat(type.getName(), is("NewEnum1"));
+		provider.removeEClassSelectionStrategyProvider(selectionStrategyProvider);
+	}
+
+	//
+	// Test framework
+	//
+
+	/**
+	 * Create a mock EClass selection strategy (suitable for verification) that forces
+	 * selection of the given class.
+	 *
+	 * @param eClass the class to force
+	 * @return the mocl strategy
+	 */
+	EClassSelectionStrategy forceEClass(EClass eClass) {
+		final EClassSelectionStrategy result = mock(EClassSelectionStrategy.class);
+		final Collection<EClass> eClasses = Collections.singleton(eClass);
+		when(result.collectEClasses(any(EObject.class), any(EReference.class),
+			anyCollectionOf(EClass.class))).thenReturn(eClasses);
+
+		return result;
+	}
+
+	public class TestEClassSelectionStrategyProvider implements EClassSelectionStrategy.Provider {
+		private final Double bid;
+		private final EClassSelectionStrategy strategy;
+
+		TestEClassSelectionStrategyProvider(Double bid, EClassSelectionStrategy strategy) {
+			super();
+
+			this.bid = bid;
+			this.strategy = strategy;
+		}
+
+		@Bid
+		public Double bid() {
+			return bid;
+		}
+
+		@Create
+		public EClassSelectionStrategy create() {
+			return strategy;
+		}
+	}
+}
diff --git a/tests/org.eclipse.emf.ecp.ui.view.swt.test/src/org/eclipse/emf/ecp/ui/view/swt/test/EMFEditNewChildFactoryBuilder.java b/tests/org.eclipse.emf.ecp.ui.view.swt.test/src/org/eclipse/emf/ecp/ui/view/swt/test/EMFEditNewChildFactoryBuilder.java
new file mode 100644
index 0000000..2a04171
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.ui.view.swt.test/src/org/eclipse/emf/ecp/ui/view/swt/test/EMFEditNewChildFactoryBuilder.java
@@ -0,0 +1,123 @@
+/*******************************************************************************
+ * Copyright (c) 2018 Christian W. Damus 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:
+ * Christian W. Damus - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.emf.ecp.ui.view.swt.test;
+
+import static org.mockito.Matchers.any;
+import static org.mockito.Matchers.same;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+import static org.mockito.Mockito.withSettings;
+
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.emf.common.command.BasicCommandStack;
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain;
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+
+/**
+ * Utility for tests to create EMF.Edit-based factories of new children.
+ *
+ * @author Christian W. Damus
+ */
+public final class EMFEditNewChildFactoryBuilder {
+	private final Map<Class<? extends EObject>, Map<EReference, EObject>> templates = new HashMap<Class<? extends EObject>, Map<EReference, EObject>>();
+
+	/**
+	 * Initializes me.
+	 */
+	public EMFEditNewChildFactoryBuilder() {
+		super();
+	}
+
+	public AdapterFactory buildFactory() {
+		final AdapterFactory result = mock(AdapterFactory.class,
+			withSettings().extraInterfaces(ComposeableAdapterFactory.class));
+
+		for (final Map.Entry<Class<? extends EObject>, Map<EReference, EObject>> next : templates.entrySet()) {
+			final NewChildFactory itemProvider = new NewChildFactory(result, next.getValue());
+
+			when(result.adapt(any(next.getKey()), same(IEditingDomainItemProvider.class)))
+				.thenReturn(itemProvider);
+			when(result.adapt((Object) any(next.getKey()), same(IEditingDomainItemProvider.class)))
+				.thenReturn(itemProvider);
+			when(result.adaptNew(any(next.getKey()), same(IEditingDomainItemProvider.class)))
+				.thenReturn(itemProvider);
+		}
+
+		return result;
+	}
+
+	public EditingDomain buildEditingDomain() {
+		return new AdapterFactoryEditingDomain(buildFactory(), new BasicCommandStack());
+	}
+
+	public Resource buildResource() {
+		return buildEditingDomain().getResourceSet().createResource(URI.createURI("bogus://test/foo.xmi"));
+	}
+
+	public EMFEditNewChildFactoryBuilder addTemplate(Class<? extends EObject> owner, EReference reference,
+		EObject template) {
+		return addTemplates(owner, Collections.singletonMap(reference, template));
+	}
+
+	public EMFEditNewChildFactoryBuilder addTemplates(Class<? extends EObject> owner,
+		Map<EReference, EObject> templates) {
+		Map<EReference, EObject> merge = this.templates.get(owner);
+		if (merge == null) {
+			merge = new HashMap<EReference, EObject>();
+			this.templates.put(owner, merge);
+		}
+
+		merge.putAll(templates);
+		return this;
+	}
+
+	//
+	// Nested types
+	//
+
+	private static class NewChildFactory extends ItemProviderAdapter implements IEditingDomainItemProvider {
+		private final Map<EReference, EObject> templates;
+
+		NewChildFactory(AdapterFactory adapterFactory, Map<EReference, EObject> templates) {
+			super(adapterFactory);
+
+			this.templates = templates;
+		}
+
+		@Override
+		public boolean isAdapterForType(Object type) {
+			// I am a fake EMF.Edit item provider adapter, so I should respond like one
+			return type instanceof AdapterFactory || type == IEditingDomainItemProvider.class;
+		}
+
+		@Override
+		protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+			for (final Map.Entry<EReference, EObject> next : templates.entrySet()) {
+				newChildDescriptors.add(createChildParameter(next.getKey(), EcoreUtil.copy(next.getValue())));
+			}
+		}
+	}
+
+}
diff --git a/tests/org.eclipse.emf.ecp.ui.view.test/META-INF/MANIFEST.MF b/tests/org.eclipse.emf.ecp.ui.view.test/META-INF/MANIFEST.MF
index 97b2140..32962cd 100644
--- a/tests/org.eclipse.emf.ecp.ui.view.test/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.emf.ecp.ui.view.test/META-INF/MANIFEST.MF
@@ -2,22 +2,23 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Test
 Bundle-SymbolicName: org.eclipse.emf.ecp.ui.view.test
-Bundle-Version: 1.16.0.qualifier
-Export-Package: org.eclipse.emf.ecp.ui.view.test;version="1.16.0"
+Bundle-Version: 1.17.0.qualifier
+Export-Package: org.eclipse.emf.ecp.ui.view.test;version="1.17.0"
 Require-Bundle: org.eclipse.core.runtime;bundle-version="3.8.0",
-  org.eclipse.emf.ecp.ui.view;bundle-version="[1.16.0,1.17.0)",
-  org.junit;bundle-version="4.10.0",
-  org.eclipse.emf.ecp.view.model.provider.xmi;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.model.provider.generator;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.emfstore.examplemodel;bundle-version="[1.3.0,2.0.0)",
-  org.eclipse.emf.emfstore.examplemodel.edit;bundle-version="[1.3.0,2.0.0)",
-  org.eclipse.ui;bundle-version="3.104.0",
-  org.eclipse.emf.ecp.explorereditorbridge;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.core;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.emfstore.core;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.edit;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecore;bundle-version="2.8.0",
-  org.eclipse.emf.ecp.ui.view.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.vertical.model;bundle-version="[1.16.0,1.17.0)"
+ org.eclipse.emf.ecp.ui.view;bundle-version="[1.17.0,1.18.0]",
+ org.junit;bundle-version="4.10.0",
+ org.eclipse.emf.ecp.view.model.provider.xmi;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.model.provider.generator;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.emfstore.examplemodel;bundle-version="[1.3.0,2.0.0)",
+ org.eclipse.emf.emfstore.examplemodel.edit;bundle-version="[1.3.0,2.0.0)",
+ org.eclipse.ui;bundle-version="3.104.0",
+ org.eclipse.emf.ecp.explorereditorbridge;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.core;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.emfstore.core;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.edit;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecore;bundle-version="2.8.0",
+ org.eclipse.emf.ecp.ui.view.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.vertical.model;bundle-version="[1.17.0,1.18.0]"
 Bundle-ActivationPolicy: lazy
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Automatic-Module-Name: org.eclipse.emf.ecp.ui.view.test
diff --git a/tests/org.eclipse.emf.ecp.ui.view.test/pom.xml b/tests/org.eclipse.emf.ecp.ui.view.test/pom.xml
index 8ae9869..47918b0 100644
--- a/tests/org.eclipse.emf.ecp.ui.view.test/pom.xml
+++ b/tests/org.eclipse.emf.ecp.ui.view.test/pom.xml
@@ -6,12 +6,12 @@
 	<parent>
 		<groupId>org.eclipse.emf.ecp</groupId>
 		<artifactId>ecp-tests-parent</artifactId>
-		<version>1.16.0-SNAPSHOT</version>
+		<version>1.17.0-SNAPSHOT</version>
 		<relativePath>../../releng/org.eclipse.emf.ecp.releng.tests/</relativePath>
 	</parent>
 	<groupId>org.eclipse.emf.ecp</groupId>
 	<artifactId>org.eclipse.emf.ecp.ui.view.test</artifactId>
-	<version>1.16.0-SNAPSHOT</version>
+	<version>1.17.0-SNAPSHOT</version>
 	<packaging>eclipse-test-plugin</packaging>
 
 	<build>
diff --git a/tests/org.eclipse.emf.ecp.validation.diagnostician.test/META-INF/MANIFEST.MF b/tests/org.eclipse.emf.ecp.validation.diagnostician.test/META-INF/MANIFEST.MF
index 46b8c65..fcf4a9d 100644
--- a/tests/org.eclipse.emf.ecp.validation.diagnostician.test/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.emf.ecp.validation.diagnostician.test/META-INF/MANIFEST.MF
@@ -2,10 +2,11 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: ECP Diagnostician Test
 Bundle-SymbolicName: org.eclipse.emf.ecp.validation.diagnostician.test;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Fragment-Host: org.eclipse.emf.ecp.validation.diagnostician;bundle-version="[1.16.0,1.17.0)"
-Export-Package: org.eclipse.emf.ecp.validation.diagnostician.test;version="1.16.0";x-internal:=true
+Fragment-Host: org.eclipse.emf.ecp.validation.diagnostician;bundle-version="[1.17.0,1.18.0]"
+Export-Package: org.eclipse.emf.ecp.validation.diagnostician.test;version="1.17.0";x-internal:=true
 Require-Bundle: org.junit;bundle-version="[4.11.0,5.0.0)",
   org.eclipse.emf.emfstore.examplemodel;bundle-version="[1.3.0,2.0.0)"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Automatic-Module-Name: org.eclipse.emf.ecp.validation.diagnostician.test
diff --git a/tests/org.eclipse.emf.ecp.validation.diagnostician.test/pom.xml b/tests/org.eclipse.emf.ecp.validation.diagnostician.test/pom.xml
index a9c934e..4762976 100644
--- a/tests/org.eclipse.emf.ecp.validation.diagnostician.test/pom.xml
+++ b/tests/org.eclipse.emf.ecp.validation.diagnostician.test/pom.xml
@@ -6,12 +6,12 @@
 	<parent>
 		<groupId>org.eclipse.emf.ecp</groupId>
 		<artifactId>ecp-tests-parent</artifactId>
-		<version>1.16.0-SNAPSHOT</version>
+		<version>1.17.0-SNAPSHOT</version>
 		<relativePath>../../releng/org.eclipse.emf.ecp.releng.tests/</relativePath>
 	</parent>
 	<groupId>org.eclipse.emf.ecp</groupId>
 	<artifactId>org.eclipse.emf.ecp.validation.diagnostician.test</artifactId>
-	<version>1.16.0-SNAPSHOT</version>
+	<version>1.17.0-SNAPSHOT</version>
 	<packaging>eclipse-test-plugin</packaging>
 
 	<build>
diff --git a/tests/org.eclipse.emf.ecp.validation.test/META-INF/MANIFEST.MF b/tests/org.eclipse.emf.ecp.validation.test/META-INF/MANIFEST.MF
index 18fc29b..7980e10 100644
--- a/tests/org.eclipse.emf.ecp.validation.test/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.emf.ecp.validation.test/META-INF/MANIFEST.MF
@@ -2,19 +2,20 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.emf.ecp.validation.test;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-ClassPath: .
 Bundle-Vendor: Eclipse Modeling Project
-Fragment-Host: org.eclipse.emf.ecp.validation;bundle-version="[1.16.0,1.17.0)"
+Fragment-Host: org.eclipse.emf.ecp.validation;bundle-version="[1.17.0,1.18.0]"
 Bundle-Localization: plugin
-Export-Package: org.eclipse.emf.ecp.validation.test;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.validation.test.test;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.validation.test.test.impl;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.validation.test.test.util;version="1.16.0";x-internal:=true
+Export-Package: org.eclipse.emf.ecp.validation.test;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.validation.test.test;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.validation.test.test.impl;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.validation.test.test.util;version="1.17.0";x-internal:=true
 Require-Bundle: org.eclipse.core.runtime;bundle-version="3.8.0",
-  org.eclipse.emf.ecore;bundle-version="2.8.0",
-  org.junit;bundle-version="4.10.0",
-  org.eclipse.emf.ecp.core;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.emfstore.core;bundle-version="[1.16.0,1.17.0)"
+ org.eclipse.emf.ecore;bundle-version="2.8.0",
+ org.junit;bundle-version="4.10.0",
+ org.eclipse.emf.ecp.core;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.emfstore.core;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.validation.test
diff --git a/tests/org.eclipse.emf.ecp.validation.test/pom.xml b/tests/org.eclipse.emf.ecp.validation.test/pom.xml
index fe5c719..d440a14 100644
--- a/tests/org.eclipse.emf.ecp.validation.test/pom.xml
+++ b/tests/org.eclipse.emf.ecp.validation.test/pom.xml
@@ -6,12 +6,12 @@
 	<parent>
 		<groupId>org.eclipse.emf.ecp</groupId>
 		<artifactId>ecp-tests-parent</artifactId>
-		<version>1.16.0-SNAPSHOT</version>
+		<version>1.17.0-SNAPSHOT</version>
 		<relativePath>../../releng/org.eclipse.emf.ecp.releng.tests/</relativePath>
 	</parent>
 	<groupId>org.eclipse.emf.ecp</groupId>
 	<artifactId>org.eclipse.emf.ecp.validation.test</artifactId>
-	<version>1.16.0-SNAPSHOT</version>
+	<version>1.17.0-SNAPSHOT</version>
 	<packaging>eclipse-test-plugin</packaging>
 
 	<build>
diff --git a/tests/org.eclipse.emf.ecp.view.categorization.swt.test/META-INF/MANIFEST.MF b/tests/org.eclipse.emf.ecp.view.categorization.swt.test/META-INF/MANIFEST.MF
index 45f516c..d2e9f5f 100644
--- a/tests/org.eclipse.emf.ecp.view.categorization.swt.test/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.emf.ecp.view.categorization.swt.test/META-INF/MANIFEST.MF
@@ -2,17 +2,18 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Categorization Test
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.categorization.swt.test
-Bundle-Version: 1.16.0.qualifier
-Fragment-Host: org.eclipse.emf.ecp.view.categorization.swt;bundle-version="[1.16.0,1.17.0)"
-Export-Package: org.eclipse.emf.ecp.view.categorization.swt.test;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.view.spi.categorization.swt;version="1.16.0"
+Bundle-Version: 1.17.0.qualifier
+Fragment-Host: org.eclipse.emf.ecp.view.categorization.swt;bundle-version="[1.17.0,1.18.0]"
+Export-Package: org.eclipse.emf.ecp.view.categorization.swt.test;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.spi.categorization.swt;version="1.17.0"
 Require-Bundle: org.junit;bundle-version="[4.11.0,5.0.0)",
-  org.eclipse.emf.emfstore.examplemodel;bundle-version="[1.4.0,2.0.0)",
-  org.eclipse.emf.ecp.view.test.common.swt;bundle-version="[1.16.0,1.17.0)",
-  org.mockito.mockito-core-hamcrest-modified;bundle-version="[1.9.5,2.0.0)",
-  org.eclipse.emf.ecp.view.rule.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services.legacy;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services.domainexpander.default;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services.mappingprovider.default;bundle-version="[1.16.0,1.17.0)"
+ org.eclipse.emf.emfstore.examplemodel;bundle-version="[1.4.0,2.0.0)",
+ org.eclipse.emf.ecp.view.test.common.swt;bundle-version="[1.17.0,1.18.0]",
+ org.mockito.mockito-core-hamcrest-modified;bundle-version="[1.9.5,2.0.0)",
+ org.eclipse.emf.ecp.view.rule.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services.legacy;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services.domainexpander.default;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services.mappingprovider.default;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Import-Package: org.eclipse.swt.layout;version="0.0.0"
+Automatic-Module-Name: org.eclipse.emf.ecp.view.categorization.swt.test
diff --git a/tests/org.eclipse.emf.ecp.view.categorization.swt.test/pom.xml b/tests/org.eclipse.emf.ecp.view.categorization.swt.test/pom.xml
index c7a7eea..5ce0aaa 100644
--- a/tests/org.eclipse.emf.ecp.view.categorization.swt.test/pom.xml
+++ b/tests/org.eclipse.emf.ecp.view.categorization.swt.test/pom.xml
@@ -6,12 +6,12 @@
 	<parent>
 		<groupId>org.eclipse.emf.ecp</groupId>
 		<artifactId>ecp-tests-parent</artifactId>
-		<version>1.16.0-SNAPSHOT</version>
+		<version>1.17.0-SNAPSHOT</version>
 		<relativePath>../../releng/org.eclipse.emf.ecp.releng.tests/</relativePath>
 	</parent>
 	<groupId>org.eclipse.emf.ecp</groupId>
 	<artifactId>org.eclipse.emf.ecp.view.categorization.swt.test</artifactId>
-	<version>1.16.0-SNAPSHOT</version>
+	<version>1.17.0-SNAPSHOT</version>
 	<packaging>eclipse-test-plugin</packaging>
 
 	<build>
diff --git a/tests/org.eclipse.emf.ecp.view.compoundcontrol.swt.test/CompoundControlSWTRenderer_ITest.launch b/tests/org.eclipse.emf.ecp.view.compoundcontrol.swt.test/CompoundControlSWTRenderer_ITest.launch
index df39a83..632da15 100644
--- a/tests/org.eclipse.emf.ecp.view.compoundcontrol.swt.test/CompoundControlSWTRenderer_ITest.launch
+++ b/tests/org.eclipse.emf.ecp.view.compoundcontrol.swt.test/CompoundControlSWTRenderer_ITest.launch
@@ -32,8 +32,8 @@
 <stringAttribute key="pde.version" value="3.3"/>
 <stringAttribute key="product" value="org.eclipse.platform.ide"/>
 <booleanAttribute key="run_in_ui_thread" value="true"/>
-<stringAttribute key="selected_target_plugins" value="com.ibm.icu@default:default,javax.annotation@default:default,javax.inject@default:default,javax.servlet@default:default,org.apache.ant@default:default,org.apache.batik.css*1.7.0.v201011041433@default:default,org.apache.batik.util*1.7.0.v201011041433@default:default,org.apache.batik.util.gui*1.7.0.v200903091627@default:default,org.apache.commons.codec@default:default,org.apache.commons.jxpath@default:default,org.apache.commons.logging@default:default,org.apache.felix.scr@default:default,org.eclipse.ant.core@default:default,org.eclipse.compare.core@default:default,org.eclipse.core.commands@default:default,org.eclipse.core.contenttype@default:default,org.eclipse.core.databinding*1.5.0.v20150422-0725@default:default,org.eclipse.core.databinding*1.6.100.v20170515-1119@default:default,org.eclipse.core.databinding.observable*1.5.0.v20150422-0725@default:default,org.eclipse.core.databinding.observable*1.6.100.v20170515-1119@default:default,org.eclipse.core.databinding.property*1.5.0.v20150422-0725@default:default,org.eclipse.core.databinding.property*1.6.100.v20170515-1119@default:default,org.eclipse.core.expressions@default:default,org.eclipse.core.filesystem@default:default,org.eclipse.core.jobs@default:default,org.eclipse.core.resources@default:default,org.eclipse.core.runtime@default:true,org.eclipse.core.variables@default:default,org.eclipse.e4.core.commands@default:default,org.eclipse.e4.core.contexts@default:default,org.eclipse.e4.core.di.annotations@default:default,org.eclipse.e4.core.di.extensions.supplier@default:default,org.eclipse.e4.core.di.extensions@default:default,org.eclipse.e4.core.di@default:default,org.eclipse.e4.core.services@default:default,org.eclipse.e4.emf.xpath@default:default,org.eclipse.e4.ui.bindings@default:default,org.eclipse.e4.ui.css.core@default:default,org.eclipse.e4.ui.css.swt.theme@default:default,org.eclipse.e4.ui.css.swt@default:default,org.eclipse.e4.ui.di@default:default,org.eclipse.e4.ui.model.workbench@default:default,org.eclipse.e4.ui.services@default:default,org.eclipse.e4.ui.widgets@default:default,org.eclipse.e4.ui.workbench.addons.swt@default:default,org.eclipse.e4.ui.workbench.renderers.swt@default:default,org.eclipse.e4.ui.workbench.swt@default:default,org.eclipse.e4.ui.workbench3@default:default,org.eclipse.e4.ui.workbench@default:default,org.eclipse.emf.common.ui@default:default,org.eclipse.emf.common@default:default,org.eclipse.emf.databinding.edit@default:default,org.eclipse.emf.databinding@default:default,org.eclipse.emf.ecore.change@default:default,org.eclipse.emf.ecore.xmi@default:default,org.eclipse.emf.ecore@default:default,org.eclipse.emf.edit.ui@default:default,org.eclipse.emf.edit@default:default,org.eclipse.emf.emfstore.client@default:default,org.eclipse.emf.emfstore.common.model@default:default,org.eclipse.emf.emfstore.common@default:default,org.eclipse.emf.emfstore.examplemodel.edit@default:default,org.eclipse.emf.emfstore.examplemodel@default:default,org.eclipse.emf.emfstore.migration@default:default,org.eclipse.emf.emfstore.server.model@default:default,org.eclipse.emf.emfstore.server@default:default,org.eclipse.equinox.app@default:default,org.eclipse.equinox.bidi@default:default,org.eclipse.equinox.common@2:true,org.eclipse.equinox.ds@1:true,org.eclipse.equinox.event@default:default,org.eclipse.equinox.p2.core@default:default,org.eclipse.equinox.p2.engine@default:default,org.eclipse.equinox.p2.metadata.repository@default:default,org.eclipse.equinox.p2.metadata@default:default,org.eclipse.equinox.p2.repository@default:default,org.eclipse.equinox.preferences@default:default,org.eclipse.equinox.region@default:false,org.eclipse.equinox.registry@default:default,org.eclipse.equinox.security@default:default,org.eclipse.equinox.transforms.hook@default:false,org.eclipse.equinox.util@default:default,org.eclipse.equinox.weaving.hook@default:false,org.eclipse.help@default:default,org.eclipse.jface.databinding@default:default,org.eclipse.jface.text@default:default,org.eclipse.jface@default:default,org.eclipse.net4j.util@default:default,org.eclipse.osgi.compatibility.state@default:false,org.eclipse.osgi.services@default:default,org.eclipse.osgi.util@default:default,org.eclipse.osgi@-1:true,org.eclipse.swt.gtk.linux.x86_64@default:default,org.eclipse.swt@default:default,org.eclipse.swtbot.ant.junit@default:false,org.eclipse.team.core@default:default,org.eclipse.text@default:default,org.eclipse.ui.forms@default:default,org.eclipse.ui.ide@default:default,org.eclipse.ui.trace@default:default,org.eclipse.ui.views@default:default,org.eclipse.ui.workbench@default:default,org.eclipse.ui@default:default,org.eclipse.update.configurator@3:true,org.hamcrest.core@default:default,org.junit@default:default,org.mockito.mockito-core-hamcrest-modified@default:default,org.objenesis@default:default,org.tukaani.xz@default:default,org.w3c.css.sac@default:default,org.w3c.dom.events@default:default,org.w3c.dom.smil*1.0.1.v200903091627@default:default,org.w3c.dom.svg@default:default"/>
-<stringAttribute key="selected_workspace_plugins" value="org.eclipse.emf.ecp.common.ui@default:default,org.eclipse.emf.ecp.common@default:default,org.eclipse.emf.ecp.core@default:default,org.eclipse.emf.ecp.edit.swt@default:default,org.eclipse.emf.ecp.edit@default:default,org.eclipse.emf.ecp.emfstore.core@default:default,org.eclipse.emf.ecp.makeithappen.model@default:default,org.eclipse.emf.ecp.test.common@default:default,org.eclipse.emf.ecp.ui.view.swt@default:default,org.eclipse.emf.ecp.ui.view@default:default,org.eclipse.emf.ecp.ui@default:default,org.eclipse.emf.ecp.view.compoundcontrol.model@default:default,org.eclipse.emf.ecp.view.compoundcontrol.swt.test@default:false,org.eclipse.emf.ecp.view.compoundcontrol.swt@default:default,org.eclipse.emf.ecp.view.compoundcontrol.tooling@default:default,org.eclipse.emf.ecp.view.context@default:default,org.eclipse.emf.ecp.view.core.swt@default:default,org.eclipse.emf.ecp.view.model.common@default:default,org.eclipse.emf.ecp.view.model@default:default,org.eclipse.emf.ecp.view.swt.layout@default:default,org.eclipse.emf.ecp.view.template.model@default:default,org.eclipse.emf.ecp.view.test.common@default:default,org.eclipse.emf.ecp.view.util.swt@default:default,org.eclipse.emf.ecp.view.validation@default:default,org.eclipse.emf.ecp.view.vertical.model@default:default,org.eclipse.emfforms.common.prevalidation@default:default,org.eclipse.emfforms.common.validation.tests@default:false,org.eclipse.emfforms.common.validation@default:default,org.eclipse.emfforms.common@default:default,org.eclipse.emfforms.core.services.databinding.testmodel@default:default,org.eclipse.emfforms.core.services.editsupport@default:default,org.eclipse.emfforms.core.services.emf@default:default,org.eclipse.emfforms.core.services.emfspecificservice@default:default,org.eclipse.emfforms.core.services.legacy.tests@default:false,org.eclipse.emfforms.core.services.legacy@default:default,org.eclipse.emfforms.core.services.structuralchange.default@default:default,org.eclipse.emfforms.core.services.structuralchange@default:default,org.eclipse.emfforms.core.services.tests@default:false,org.eclipse.emfforms.core.services@default:default,org.eclipse.emfforms.localization@default:default,org.eclipse.emfforms.swt.common.test@default:default,org.eclipse.emfforms.swt.control.text.richtext@default:default,org.eclipse.emfforms.swt.core.di@default:default,org.eclipse.emfforms.swt.core@default:default"/>
+<stringAttribute key="selected_target_plugins" value="com.ibm.icu@default:default,javax.annotation@default:default,javax.inject@default:default,javax.servlet@default:default,org.apache.ant@default:default,org.apache.batik.css*1.7.0.v201011041433@default:default,org.apache.batik.util*1.7.0.v201011041433@default:default,org.apache.batik.util.gui*1.7.0.v200903091627@default:default,org.apache.commons.codec@default:default,org.apache.commons.jxpath@default:default,org.apache.commons.logging@default:default,org.apache.felix.scr@default:default,org.eclipse.ant.core@default:default,org.eclipse.compare.core@default:default,org.eclipse.core.commands@default:default,org.eclipse.core.contenttype@default:default,org.eclipse.core.databinding*1.5.0.v20150422-0725@default:default,org.eclipse.core.databinding*1.6.100.v20170515-1119@default:default,org.eclipse.core.databinding.observable*1.5.0.v20150422-0725@default:default,org.eclipse.core.databinding.observable*1.6.100.v20170515-1119@default:default,org.eclipse.core.databinding.property*1.5.0.v20150422-0725@default:default,org.eclipse.core.databinding.property*1.6.100.v20170515-1119@default:default,org.eclipse.core.expressions@default:default,org.eclipse.core.filesystem@default:default,org.eclipse.core.jobs@default:default,org.eclipse.core.resources@default:default,org.eclipse.core.runtime@default:true,org.eclipse.core.variables@default:default,org.eclipse.e4.core.commands@default:default,org.eclipse.e4.core.contexts@default:default,org.eclipse.e4.core.di.annotations@default:default,org.eclipse.e4.core.di.extensions.supplier@default:default,org.eclipse.e4.core.di.extensions@default:default,org.eclipse.e4.core.di@default:default,org.eclipse.e4.core.services@default:default,org.eclipse.e4.emf.xpath@default:default,org.eclipse.e4.ui.bindings@default:default,org.eclipse.e4.ui.css.core@default:default,org.eclipse.e4.ui.css.swt.theme@default:default,org.eclipse.e4.ui.css.swt@default:default,org.eclipse.e4.ui.di@default:default,org.eclipse.e4.ui.model.workbench@default:default,org.eclipse.e4.ui.services@default:default,org.eclipse.e4.ui.widgets@default:default,org.eclipse.e4.ui.workbench.addons.swt@default:default,org.eclipse.e4.ui.workbench.renderers.swt@default:default,org.eclipse.e4.ui.workbench.swt@default:default,org.eclipse.e4.ui.workbench3@default:default,org.eclipse.e4.ui.workbench@default:default,org.eclipse.emf.common.ui@default:default,org.eclipse.emf.common@default:default,org.eclipse.emf.databinding.edit@default:default,org.eclipse.emf.databinding@default:default,org.eclipse.emf.ecore.change@default:default,org.eclipse.emf.ecore.xmi@default:default,org.eclipse.emf.ecore@default:default,org.eclipse.emf.edit.ui@default:default,org.eclipse.emf.edit@default:default,org.eclipse.emf.emfstore.client@default:default,org.eclipse.emf.emfstore.common.model@default:default,org.eclipse.emf.emfstore.common@default:default,org.eclipse.emf.emfstore.examplemodel.edit@default:default,org.eclipse.emf.emfstore.examplemodel@default:default,org.eclipse.emf.emfstore.migration@default:default,org.eclipse.emf.emfstore.server.model@default:default,org.eclipse.emf.emfstore.server@default:default,org.eclipse.equinox.app@default:default,org.eclipse.equinox.bidi@default:default,org.eclipse.equinox.common@2:true,org.eclipse.equinox.ds@1:true,org.eclipse.equinox.event@default:default,org.eclipse.equinox.p2.core@default:default,org.eclipse.equinox.p2.engine@default:default,org.eclipse.equinox.p2.metadata.repository@default:default,org.eclipse.equinox.p2.metadata@default:default,org.eclipse.equinox.p2.repository@default:default,org.eclipse.equinox.preferences@default:default,org.eclipse.equinox.region@default:false,org.eclipse.equinox.registry@default:default,org.eclipse.equinox.security@default:default,org.eclipse.equinox.transforms.hook@default:false,org.eclipse.equinox.util@default:default,org.eclipse.equinox.weaving.hook@default:false,org.eclipse.help@default:default,org.eclipse.jface.databinding@default:default,org.eclipse.jface.text@default:default,org.eclipse.jface@default:default,org.eclipse.net4j.util@default:default,org.eclipse.osgi.compatibility.state@default:false,org.eclipse.osgi.services@default:default,org.eclipse.osgi.util@default:default,org.eclipse.osgi@-1:true,org.eclipse.swt.gtk.linux.x86_64@default:false,org.eclipse.swt@default:default,org.eclipse.swtbot.ant.junit@default:false,org.eclipse.team.core@default:default,org.eclipse.text@default:default,org.eclipse.ui.forms@default:default,org.eclipse.ui.ide@default:default,org.eclipse.ui.trace@default:default,org.eclipse.ui.views@default:default,org.eclipse.ui.workbench@default:default,org.eclipse.ui@default:default,org.eclipse.update.configurator@3:true,org.hamcrest.core@default:default,org.junit@default:default,org.mockito.mockito-core-hamcrest-modified@default:default,org.objenesis@default:default,org.tukaani.xz@default:default,org.w3c.css.sac@default:default,org.w3c.dom.events@default:default,org.w3c.dom.smil*1.0.1.v200903091627@default:default,org.w3c.dom.svg@default:default"/>
+<stringAttribute key="selected_workspace_plugins" value="org.eclipse.emf.ecp.common.ui@default:default,org.eclipse.emf.ecp.common@default:default,org.eclipse.emf.ecp.core@default:default,org.eclipse.emf.ecp.edit.swt@default:default,org.eclipse.emf.ecp.edit@default:default,org.eclipse.emf.ecp.emfstore.core@default:default,org.eclipse.emf.ecp.makeithappen.model@default:default,org.eclipse.emf.ecp.test.common@default:default,org.eclipse.emf.ecp.ui.view.swt@default:default,org.eclipse.emf.ecp.ui.view@default:default,org.eclipse.emf.ecp.ui@default:default,org.eclipse.emf.ecp.view.compoundcontrol.model@default:default,org.eclipse.emf.ecp.view.compoundcontrol.swt.test@default:false,org.eclipse.emf.ecp.view.compoundcontrol.swt@default:default,org.eclipse.emf.ecp.view.compoundcontrol.tooling@default:default,org.eclipse.emf.ecp.view.context@default:default,org.eclipse.emf.ecp.view.core.swt@default:default,org.eclipse.emf.ecp.view.model.common@default:default,org.eclipse.emf.ecp.view.model@default:default,org.eclipse.emf.ecp.view.swt.layout@default:default,org.eclipse.emf.ecp.view.template.model@default:default,org.eclipse.emf.ecp.view.test.common@default:default,org.eclipse.emf.ecp.view.util.swt@default:default,org.eclipse.emf.ecp.view.validation@default:default,org.eclipse.emf.ecp.view.vertical.model@default:default,org.eclipse.emfforms.common.prevalidation@default:default,org.eclipse.emfforms.common.validation.tests@default:false,org.eclipse.emfforms.common.validation@default:default,org.eclipse.emfforms.common@default:default,org.eclipse.emfforms.core.bazaar@default:default,org.eclipse.emfforms.core.services.databinding.testmodel@default:default,org.eclipse.emfforms.core.services.editsupport@default:default,org.eclipse.emfforms.core.services.emf@default:default,org.eclipse.emfforms.core.services.emfspecificservice@default:default,org.eclipse.emfforms.core.services.legacy.tests@default:false,org.eclipse.emfforms.core.services.legacy@default:default,org.eclipse.emfforms.core.services.structuralchange.default@default:default,org.eclipse.emfforms.core.services.structuralchange@default:default,org.eclipse.emfforms.core.services.tests@default:false,org.eclipse.emfforms.core.services@default:default,org.eclipse.emfforms.localization@default:default,org.eclipse.emfforms.swt.common.test@default:default,org.eclipse.emfforms.swt.control.text.richtext@default:default,org.eclipse.emfforms.swt.core.di@default:default,org.eclipse.emfforms.swt.core@default:default"/>
 <booleanAttribute key="show_selected_only" value="false"/>
 <booleanAttribute key="tracing" value="false"/>
 <booleanAttribute key="useCustomFeatures" value="false"/>
diff --git a/tests/org.eclipse.emf.ecp.view.compoundcontrol.swt.test/META-INF/MANIFEST.MF b/tests/org.eclipse.emf.ecp.view.compoundcontrol.swt.test/META-INF/MANIFEST.MF
index 81941c9..3efbdfd 100644
--- a/tests/org.eclipse.emf.ecp.view.compoundcontrol.swt.test/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.emf.ecp.view.compoundcontrol.swt.test/META-INF/MANIFEST.MF
@@ -2,14 +2,15 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Compound Control SWT Tests
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.compoundcontrol.swt.test
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Fragment-Host: org.eclipse.emf.ecp.view.compoundcontrol.swt;bundle-version="[1.16.0,1.17.0)"
-Export-Package: org.eclipse.emf.ecp.view.spi.compoundcontrol.swt;version="1.16.0"
+Fragment-Host: org.eclipse.emf.ecp.view.compoundcontrol.swt;bundle-version="[1.17.0,1.18.0]"
+Export-Package: org.eclipse.emf.ecp.view.spi.compoundcontrol.swt;version="1.17.0"
 Require-Bundle: org.junit;bundle-version="[4.12.0,5.0.0)",
-  org.mockito.mockito-core-hamcrest-modified;bundle-version="[1.9.5,2.0.0)",
-  org.eclipse.emf.ecp.test.common;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.template.model;bundle-version="[1.16.0,1.17.0)"
+ org.mockito.mockito-core-hamcrest-modified;bundle-version="[1.9.5,2.0.0)",
+ org.eclipse.emf.ecp.test.common;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.template.model;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Import-Package: org.eclipse.swt.graphics;version="0.0.0",
   org.eclipse.swt.layout;version="0.0.0"
+Automatic-Module-Name: org.eclipse.emf.ecp.view.compoundcontrol.swt.test
diff --git a/tests/org.eclipse.emf.ecp.view.compoundcontrol.swt.test/pom.xml b/tests/org.eclipse.emf.ecp.view.compoundcontrol.swt.test/pom.xml
index bf60bc4..2cc7b9a 100644
--- a/tests/org.eclipse.emf.ecp.view.compoundcontrol.swt.test/pom.xml
+++ b/tests/org.eclipse.emf.ecp.view.compoundcontrol.swt.test/pom.xml
@@ -5,13 +5,13 @@
 	<parent>
 		<groupId>org.eclipse.emf.ecp</groupId>
 		<artifactId>ecp-tests-parent</artifactId>
-		<version>1.16.0-SNAPSHOT</version>
+		<version>1.17.0-SNAPSHOT</version>
 		<relativePath>../../releng/org.eclipse.emf.ecp.releng.tests/</relativePath>
 	</parent>
   
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emf.ecp.view.compoundcontrol.swt.test</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-test-plugin</packaging>
   
   <build>
diff --git a/tests/org.eclipse.emf.ecp.view.compoundcontrol.swt.test/src/org/eclipse/emf/ecp/view/spi/compoundcontrol/swt/CompoundControlSWTRenderer_ITest.java b/tests/org.eclipse.emf.ecp.view.compoundcontrol.swt.test/src/org/eclipse/emf/ecp/view/spi/compoundcontrol/swt/CompoundControlSWTRenderer_ITest.java
index 6e20748..e71aab5 100644
--- a/tests/org.eclipse.emf.ecp.view.compoundcontrol.swt.test/src/org/eclipse/emf/ecp/view/spi/compoundcontrol/swt/CompoundControlSWTRenderer_ITest.java
+++ b/tests/org.eclipse.emf.ecp.view.compoundcontrol.swt.test/src/org/eclipse/emf/ecp/view/spi/compoundcontrol/swt/CompoundControlSWTRenderer_ITest.java
@@ -13,6 +13,7 @@
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotEquals;
 import static org.junit.Assert.assertSame;
 import static org.junit.Assert.assertTrue;
 import static org.mockito.Matchers.any;
@@ -28,7 +29,9 @@
 
 import org.eclipse.core.databinding.observable.Observables;
 import org.eclipse.emf.common.util.ECollections;
+import org.eclipse.emf.databinding.IEMFValueProperty;
 import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EStructuralFeature;
 import org.eclipse.emf.ecp.test.common.DefaultRealm;
 import org.eclipse.emf.ecp.view.spi.compoundcontrol.model.VCompoundControl;
 import org.eclipse.emf.ecp.view.spi.context.ViewModelContext;
@@ -46,7 +49,11 @@
 import org.eclipse.emf.ecp.view.template.style.alignment.model.VTControlLabelAlignmentStyleProperty;
 import org.eclipse.emf.ecp.view.template.style.labelwidth.model.VTLabelWidthStyleProperty;
 import org.eclipse.emf.ecp.view.template.style.labelwidth.model.VTLabelwidthFactory;
+import org.eclipse.emf.ecp.view.template.style.wrap.model.VTLabelWrapStyleProperty;
+import org.eclipse.emf.ecp.view.template.style.wrap.model.VTWrapFactory;
 import org.eclipse.emfforms.spi.common.report.ReportService;
+import org.eclipse.emfforms.spi.core.services.databinding.DatabindingFailedException;
+import org.eclipse.emfforms.spi.core.services.databinding.emf.EMFFormsDatabindingEMF;
 import org.eclipse.emfforms.spi.core.services.label.EMFFormsLabelProvider;
 import org.eclipse.emfforms.spi.core.services.label.NoLabelFoundException;
 import org.eclipse.emfforms.spi.swt.core.AbstractSWTRenderer;
@@ -58,7 +65,6 @@
 import org.eclipse.jface.layout.GridDataFactory;
 import org.eclipse.jface.layout.GridLayoutFactory;
 import org.eclipse.swt.SWT;
-import org.eclipse.swt.layout.GridData;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Control;
 import org.eclipse.swt.widgets.Display;
@@ -74,6 +80,9 @@
 	private static final String LABEL1 = "label1"; //$NON-NLS-1$
 	private static final String LABEL2 = "label2"; //$NON-NLS-1$
 
+	private static final String TOOLTIP1 = "tooltip1"; //$NON-NLS-1$
+	private static final String TOOLTIP2 = "tooltip2"; //$NON-NLS-1$
+
 	private static final String C_CONTROL = "CControl"; //$NON-NLS-1$
 	private static final String C_VALIDATION = "CValidation"; //$NON-NLS-1$
 
@@ -85,6 +94,7 @@
 	private VTViewTemplateProvider viewTemplateProvider;
 	private Shell shell;
 	private DefaultRealm realm;
+	private EMFFormsDatabindingEMF emfFormsDatabindingEMF;
 
 	@Before
 	public void before() {
@@ -96,6 +106,7 @@
 		emfFormsLabelProvider = mock(EMFFormsLabelProvider.class);
 		emfFormsRendererFactory = mock(EMFFormsRendererFactory.class);
 		viewTemplateProvider = Mockito.mock(VTViewTemplateProvider.class);
+		emfFormsDatabindingEMF = Mockito.mock(EMFFormsDatabindingEMF.class);
 	}
 
 	@After
@@ -106,7 +117,7 @@
 
 	private CompoundControlSWTRenderer createRenderer() {
 		return new CompoundControlSWTRenderer(compoundControl, viewModelContext, reportService, emfFormsLabelProvider,
-			emfFormsRendererFactory, viewTemplateProvider);
+			emfFormsRendererFactory, viewTemplateProvider, emfFormsDatabindingEMF);
 	}
 
 	@Test
@@ -123,35 +134,48 @@
 
 	@Test
 	public void testGetGridDescription() {
+		when(compoundControl.getLabelAlignment()).thenReturn(LabelAlignment.DEFAULT);
+
 		final CompoundControlSWTRenderer renderer = createRenderer();
 		final SWTGridDescription gridDescription = renderer.getGridDescription(mock(SWTGridDescription.class));
-		assertEquals(2, gridDescription.getColumns());
+		assertEquals(3, gridDescription.getColumns());
 		assertEquals(1, gridDescription.getRows());
-		assertEquals(2, gridDescription.getGrid().size());
+		assertEquals(3, gridDescription.getGrid().size());
 
 		final SWTGridCell label = gridDescription.getGrid().get(0);
 		assertEquals(0, label.getColumn());
 		assertEquals(1, label.getHorizontalSpan());
 		assertEquals(0, label.getRow());
 		assertSame(renderer, label.getRenderer());
-		assertTrue(label.isHorizontalFill());
+		assertFalse(label.isHorizontalFill());
 		assertFalse(label.isHorizontalGrab());
 		assertFalse(label.isVerticalFill());
 		assertFalse(label.isVerticalGrab());
 
-		final SWTGridCell controls = gridDescription.getGrid().get(1);
-		assertEquals(1, controls.getColumn());
+		final SWTGridCell validation = gridDescription.getGrid().get(1);
+		assertEquals(1, validation.getColumn());
+		assertEquals(1, validation.getHorizontalSpan());
+		assertEquals(0, validation.getRow());
+		assertSame(renderer, validation.getRenderer());
+		assertFalse(validation.isHorizontalFill());
+		assertFalse(validation.isHorizontalGrab());
+		assertFalse(validation.isVerticalFill());
+		assertFalse(validation.isVerticalGrab());
+
+		final SWTGridCell controls = gridDescription.getGrid().get(2);
+		assertEquals(2, controls.getColumn());
 		assertEquals(1, controls.getHorizontalSpan());
 		assertEquals(0, controls.getRow());
 		assertSame(renderer, controls.getRenderer());
 		assertTrue(controls.isHorizontalFill());
 		assertTrue(controls.isHorizontalGrab());
-		assertFalse(controls.isVerticalFill());
+		assertTrue(controls.isVerticalFill());
 		assertFalse(controls.isVerticalGrab());
 	}
 
 	@Test
 	public void testGetGridDescriptionWithWidth() {
+		when(compoundControl.getLabelAlignment()).thenReturn(LabelAlignment.DEFAULT);
 
 		final VTLabelWidthStyleProperty property = VTLabelwidthFactory.eINSTANCE.createLabelWidthStyleProperty();
 		property.setWidth(11);
@@ -160,22 +184,148 @@
 
 		final CompoundControlSWTRenderer renderer = createRenderer();
 		final SWTGridDescription gridDescription = renderer.getGridDescription(mock(SWTGridDescription.class));
-		assertEquals(2, gridDescription.getColumns());
+		assertEquals(3, gridDescription.getColumns());
 		assertEquals(1, gridDescription.getRows());
-		assertEquals(2, gridDescription.getGrid().size());
+		assertEquals(3, gridDescription.getGrid().size());
 
 		final SWTGridCell label = gridDescription.getGrid().get(0);
 		assertEquals(0, label.getColumn());
 		assertEquals(1, label.getHorizontalSpan());
 		assertEquals(0, label.getRow());
 		assertSame(renderer, label.getRenderer());
-		assertTrue(label.isHorizontalFill());
+		assertFalse(label.isHorizontalFill());
 		assertFalse(label.isHorizontalGrab());
 		assertFalse(label.isVerticalFill());
 		assertFalse(label.isVerticalGrab());
 		assertEquals(11, label.getPreferredSize().x);
 		assertEquals(SWT.DEFAULT, label.getPreferredSize().y);
 
+		final SWTGridCell validation = gridDescription.getGrid().get(1);
+		assertEquals(1, validation.getColumn());
+		assertEquals(1, validation.getHorizontalSpan());
+		assertEquals(0, validation.getRow());
+		assertSame(renderer, validation.getRenderer());
+		assertFalse(validation.isHorizontalFill());
+		assertFalse(validation.isHorizontalGrab());
+		assertFalse(validation.isVerticalFill());
+		assertFalse(validation.isVerticalGrab());
+
+		final SWTGridCell controls = gridDescription.getGrid().get(2);
+		assertEquals(2, controls.getColumn());
+		assertEquals(1, controls.getHorizontalSpan());
+		assertEquals(0, controls.getRow());
+		assertSame(renderer, controls.getRenderer());
+		assertTrue(controls.isHorizontalFill());
+		assertTrue(controls.isHorizontalGrab());
+		assertTrue(controls.isVerticalFill());
+		assertFalse(controls.isVerticalGrab());
+	}
+
+	@Test
+	public void testGetGridDescriptionControlLabelAlignmentLeft() {
+		when(compoundControl.getLabelAlignment()).thenReturn(LabelAlignment.LEFT);
+
+		final CompoundControlSWTRenderer renderer = createRenderer();
+		final SWTGridDescription gridDescription = renderer.getGridDescription(mock(SWTGridDescription.class));
+		assertEquals(3, gridDescription.getColumns());
+		assertEquals(1, gridDescription.getRows());
+		assertEquals(3, gridDescription.getGrid().size());
+
+		final SWTGridCell label = gridDescription.getGrid().get(0);
+		assertEquals(0, label.getColumn());
+		assertEquals(1, label.getHorizontalSpan());
+		assertEquals(0, label.getRow());
+		assertSame(renderer, label.getRenderer());
+		assertFalse(label.isHorizontalFill());
+		assertFalse(label.isHorizontalGrab());
+		assertFalse(label.isVerticalFill());
+		assertFalse(label.isVerticalGrab());
+
+		final SWTGridCell validation = gridDescription.getGrid().get(1);
+		assertEquals(1, validation.getColumn());
+		assertEquals(1, validation.getHorizontalSpan());
+		assertEquals(0, validation.getRow());
+		assertSame(renderer, validation.getRenderer());
+		assertFalse(validation.isHorizontalFill());
+		assertFalse(validation.isHorizontalGrab());
+		assertFalse(validation.isVerticalFill());
+		assertFalse(validation.isVerticalGrab());
+
+		final SWTGridCell controls = gridDescription.getGrid().get(2);
+		assertEquals(2, controls.getColumn());
+		assertEquals(1, controls.getHorizontalSpan());
+		assertEquals(0, controls.getRow());
+		assertSame(renderer, controls.getRenderer());
+		assertTrue(controls.isHorizontalFill());
+		assertTrue(controls.isHorizontalGrab());
+		assertTrue(controls.isVerticalFill());
+		assertFalse(controls.isVerticalGrab());
+	}
+
+	@Test
+	public void testGetGridDescriptionControlLabelAlignmentTop() {
+		when(compoundControl.getLabelAlignment()).thenReturn(LabelAlignment.TOP);
+
+		final CompoundControlSWTRenderer renderer = createRenderer();
+		final SWTGridDescription gridDescription = renderer.getGridDescription(mock(SWTGridDescription.class));
+		assertEquals(3, gridDescription.getColumns());
+		assertEquals(1, gridDescription.getRows());
+		assertEquals(3, gridDescription.getGrid().size());
+
+		final SWTGridCell label = gridDescription.getGrid().get(0);
+		assertEquals(0, label.getColumn());
+		assertEquals(1, label.getHorizontalSpan());
+		assertEquals(0, label.getRow());
+		assertSame(renderer, label.getRenderer());
+		assertFalse(label.isHorizontalFill());
+		assertFalse(label.isHorizontalGrab());
+		assertFalse(label.isVerticalFill());
+		assertFalse(label.isVerticalGrab());
+
+		final SWTGridCell validation = gridDescription.getGrid().get(1);
+		assertEquals(1, validation.getColumn());
+		assertEquals(1, validation.getHorizontalSpan());
+		assertEquals(0, validation.getRow());
+		assertSame(renderer, validation.getRenderer());
+		assertFalse(validation.isHorizontalFill());
+		assertFalse(validation.isHorizontalGrab());
+		assertFalse(validation.isVerticalFill());
+		assertFalse(validation.isVerticalGrab());
+
+		final SWTGridCell controls = gridDescription.getGrid().get(2);
+		assertEquals(2, controls.getColumn());
+		assertEquals(1, controls.getHorizontalSpan());
+		assertEquals(0, controls.getRow());
+		assertSame(renderer, controls.getRenderer());
+		assertTrue(controls.isHorizontalFill());
+		assertTrue(controls.isHorizontalGrab());
+		assertTrue(controls.isVerticalFill());
+		assertFalse(controls.isVerticalGrab());
+
+		/* assert that top was set to default because not supported */
+		verify(compoundControl, times(1)).setLabelAlignment(LabelAlignment.DEFAULT);
+	}
+
+	@Test
+	public void testGetGridDescriptionControlLabelAlignmentNone() {
+		when(compoundControl.getLabelAlignment()).thenReturn(LabelAlignment.NONE);
+
+		final CompoundControlSWTRenderer renderer = createRenderer();
+		final SWTGridDescription gridDescription = renderer.getGridDescription(mock(SWTGridDescription.class));
+		assertEquals(2, gridDescription.getColumns());
+		assertEquals(1, gridDescription.getRows());
+		assertEquals(2, gridDescription.getGrid().size());
+
+		final SWTGridCell validation = gridDescription.getGrid().get(0);
+		assertEquals(0, validation.getColumn());
+		assertEquals(1, validation.getHorizontalSpan());
+		assertEquals(0, validation.getRow());
+		assertSame(renderer, validation.getRenderer());
+		assertFalse(validation.isHorizontalFill());
+		assertFalse(validation.isHorizontalGrab());
+		assertFalse(validation.isVerticalFill());
+		assertFalse(validation.isVerticalGrab());
+
 		final SWTGridCell controls = gridDescription.getGrid().get(1);
 		assertEquals(1, controls.getColumn());
 		assertEquals(1, controls.getHorizontalSpan());
@@ -183,12 +333,12 @@
 		assertSame(renderer, controls.getRenderer());
 		assertTrue(controls.isHorizontalFill());
 		assertTrue(controls.isHorizontalGrab());
-		assertFalse(controls.isVerticalFill());
+		assertTrue(controls.isVerticalFill());
 		assertFalse(controls.isVerticalGrab());
 	}
 
 	@Test
-	public void testCreateLabel() throws NoLabelFoundException {
+	public void testCreateLabel() throws NoLabelFoundException, DatabindingFailedException {
 		/* setup */
 		final VControl control1 = mock(VControl.class);
 		final VFeaturePathDomainModelReference dmr1 = mock(VFeaturePathDomainModelReference.class);
@@ -209,25 +359,36 @@
 		when(emfFormsLabelProvider.getDisplayName(dmr2, domainModel))
 			.thenReturn(Observables.constantObservableValue(LABEL2, String.class));
 
+		when(emfFormsLabelProvider.getDescription(dmr1, domainModel))
+			.thenReturn(Observables.constantObservableValue(TOOLTIP1, String.class));
+
+		when(emfFormsLabelProvider.getDescription(dmr2, domainModel))
+			.thenReturn(Observables.constantObservableValue(TOOLTIP2, String.class));
+
+		final IEMFValueProperty valueProperty1 = mock(IEMFValueProperty.class);
+		when(emfFormsDatabindingEMF.getValueProperty(dmr1, domainModel)).thenReturn(valueProperty1);
+		final EStructuralFeature structuralFeature1 = mock(EStructuralFeature.class);
+		when(valueProperty1.getStructuralFeature()).thenReturn(structuralFeature1);
+
+		final IEMFValueProperty valueProperty2 = mock(IEMFValueProperty.class);
+		when(emfFormsDatabindingEMF.getValueProperty(dmr2, domainModel)).thenReturn(valueProperty2);
+		final EStructuralFeature structuralFeature2 = mock(EStructuralFeature.class);
+		when(valueProperty2.getStructuralFeature()).thenReturn(structuralFeature2);
+
 		final CompoundControlSWTRenderer renderer = createRenderer();
 
 		/* act */
 		final Control label = renderer.createLabel(shell);
 
 		/* assert */
-		assertTrue(Composite.class.isInstance(label));
-		final Composite labelComposite = Composite.class.cast(label);
-		assertEquals(3, labelComposite.getChildren().length);
-		for (final Control control : labelComposite.getChildren()) {
-			assertTrue(Label.class.isInstance(control));
-		}
-		assertEquals(LABEL1, Label.class.cast(labelComposite.getChildren()[0]).getText());
-		assertEquals("/", Label.class.cast(labelComposite.getChildren()[1]).getText()); //$NON-NLS-1$
-		assertEquals(LABEL2, Label.class.cast(labelComposite.getChildren()[2]).getText());
+		assertTrue(Label.class.isInstance(label));
+		final Label labelComposite = Label.class.cast(label);
+		assertEquals(LABEL1 + " / " + LABEL2, labelComposite.getText()); //$NON-NLS-1$
+		assertEquals(TOOLTIP1 + "\n" + TOOLTIP2, labelComposite.getToolTipText()); //$NON-NLS-1$
 	}
 
 	@Test
-	public void testCreateLabelAlignmentDefault() throws NoLabelFoundException {
+	public void testCreateLabelAlignmentDefault() throws NoLabelFoundException, DatabindingFailedException {
 		/* setup */
 		final VControl control1 = mock(VControl.class);
 		final VFeaturePathDomainModelReference dmr1 = mock(VFeaturePathDomainModelReference.class);
@@ -248,23 +409,34 @@
 		when(emfFormsLabelProvider.getDisplayName(dmr2, domainModel))
 			.thenReturn(Observables.constantObservableValue(LABEL2, String.class));
 
+		when(emfFormsLabelProvider.getDescription(dmr1, domainModel))
+			.thenReturn(Observables.constantObservableValue(TOOLTIP1, String.class));
+
+		when(emfFormsLabelProvider.getDescription(dmr2, domainModel))
+			.thenReturn(Observables.constantObservableValue(TOOLTIP2, String.class));
+
+		final IEMFValueProperty valueProperty1 = mock(IEMFValueProperty.class);
+		when(emfFormsDatabindingEMF.getValueProperty(dmr1, domainModel)).thenReturn(valueProperty1);
+		final EStructuralFeature structuralFeature1 = mock(EStructuralFeature.class);
+		when(valueProperty1.getStructuralFeature()).thenReturn(structuralFeature1);
+
+		final IEMFValueProperty valueProperty2 = mock(IEMFValueProperty.class);
+		when(emfFormsDatabindingEMF.getValueProperty(dmr2, domainModel)).thenReturn(valueProperty2);
+		final EStructuralFeature structuralFeature2 = mock(EStructuralFeature.class);
+		when(valueProperty2.getStructuralFeature()).thenReturn(structuralFeature2);
+
 		final CompoundControlSWTRenderer renderer = createRenderer();
 
 		/* act */
 		final Control label = renderer.createLabel(shell);
 
 		/* assert */
-		final Composite labelComposite = Composite.class.cast(label);
-		assertFalse(GridData.class.cast(labelComposite.getChildren()[0].getLayoutData()).grabExcessHorizontalSpace);
-		assertFalse(GridData.class.cast(labelComposite.getChildren()[1].getLayoutData()).grabExcessHorizontalSpace);
-		assertTrue(GridData.class.cast(labelComposite.getChildren()[2].getLayoutData()).grabExcessHorizontalSpace);
-		assertEquals(SWT.LEFT, Label.class.cast(labelComposite.getChildren()[0]).getAlignment());
-		assertEquals(SWT.LEFT, Label.class.cast(labelComposite.getChildren()[1]).getAlignment());
-		assertEquals(SWT.LEFT, Label.class.cast(labelComposite.getChildren()[2]).getAlignment());
+		final Label swtLabel = Label.class.cast(label);
+		assertEquals(SWT.LEFT, swtLabel.getAlignment());
 	}
 
 	@Test
-	public void testCreateLabelAlignmentLeft() throws NoLabelFoundException {
+	public void testCreateLabelAlignmentLeft() throws NoLabelFoundException, DatabindingFailedException {
 		/* setup */
 		final VControl control1 = mock(VControl.class);
 		final VFeaturePathDomainModelReference dmr1 = mock(VFeaturePathDomainModelReference.class);
@@ -285,6 +457,21 @@
 		when(emfFormsLabelProvider.getDisplayName(dmr2, domainModel))
 			.thenReturn(Observables.constantObservableValue(LABEL2, String.class));
 
+		when(emfFormsLabelProvider.getDescription(dmr1, domainModel))
+			.thenReturn(Observables.constantObservableValue(TOOLTIP1, String.class));
+
+		when(emfFormsLabelProvider.getDescription(dmr2, domainModel))
+			.thenReturn(Observables.constantObservableValue(TOOLTIP2, String.class));
+
+		final IEMFValueProperty valueProperty1 = mock(IEMFValueProperty.class);
+		when(emfFormsDatabindingEMF.getValueProperty(dmr1, domainModel)).thenReturn(valueProperty1);
+		final EStructuralFeature structuralFeature1 = mock(EStructuralFeature.class);
+		when(valueProperty1.getStructuralFeature()).thenReturn(structuralFeature1);
+
+		final IEMFValueProperty valueProperty2 = mock(IEMFValueProperty.class);
+		when(emfFormsDatabindingEMF.getValueProperty(dmr2, domainModel)).thenReturn(valueProperty2);
+		final EStructuralFeature structuralFeature2 = mock(EStructuralFeature.class);
+
 		final CompoundControlSWTRenderer renderer = createRenderer();
 
 		final VTControlLabelAlignmentStyleProperty property = VTAlignmentFactory.eINSTANCE
@@ -292,22 +479,18 @@
 		property.setType(AlignmentType.LEFT);
 		final Set<VTStyleProperty> properties = Collections.<VTStyleProperty> singleton(property);
 		Mockito.when(viewTemplateProvider.getStyleProperties(compoundControl, viewModelContext)).thenReturn(properties);
+		when(valueProperty2.getStructuralFeature()).thenReturn(structuralFeature2);
 
 		/* act */
 		final Control label = renderer.createLabel(shell);
 
 		/* assert */
-		final Composite labelComposite = Composite.class.cast(label);
-		assertFalse(GridData.class.cast(labelComposite.getChildren()[0].getLayoutData()).grabExcessHorizontalSpace);
-		assertFalse(GridData.class.cast(labelComposite.getChildren()[1].getLayoutData()).grabExcessHorizontalSpace);
-		assertTrue(GridData.class.cast(labelComposite.getChildren()[2].getLayoutData()).grabExcessHorizontalSpace);
-		assertEquals(SWT.LEFT, Label.class.cast(labelComposite.getChildren()[0]).getAlignment());
-		assertEquals(SWT.LEFT, Label.class.cast(labelComposite.getChildren()[1]).getAlignment());
-		assertEquals(SWT.LEFT, Label.class.cast(labelComposite.getChildren()[2]).getAlignment());
+		final Label swtLabel = Label.class.cast(label);
+		assertEquals(SWT.LEFT, swtLabel.getAlignment());
 	}
 
 	@Test
-	public void testCreateLabelAlignmentRight() throws NoLabelFoundException {
+	public void testCreateLabelAlignmentRight() throws NoLabelFoundException, DatabindingFailedException {
 		/* setup */
 		final VControl control1 = mock(VControl.class);
 		final VFeaturePathDomainModelReference dmr1 = mock(VFeaturePathDomainModelReference.class);
@@ -328,6 +511,22 @@
 		when(emfFormsLabelProvider.getDisplayName(dmr2, domainModel))
 			.thenReturn(Observables.constantObservableValue(LABEL2, String.class));
 
+		when(emfFormsLabelProvider.getDescription(dmr1, domainModel))
+			.thenReturn(Observables.constantObservableValue(TOOLTIP1, String.class));
+
+		when(emfFormsLabelProvider.getDescription(dmr2, domainModel))
+			.thenReturn(Observables.constantObservableValue(TOOLTIP2, String.class));
+
+		final IEMFValueProperty valueProperty1 = mock(IEMFValueProperty.class);
+		when(emfFormsDatabindingEMF.getValueProperty(dmr1, domainModel)).thenReturn(valueProperty1);
+		final EStructuralFeature structuralFeature1 = mock(EStructuralFeature.class);
+		when(valueProperty1.getStructuralFeature()).thenReturn(structuralFeature1);
+
+		final IEMFValueProperty valueProperty2 = mock(IEMFValueProperty.class);
+		when(emfFormsDatabindingEMF.getValueProperty(dmr2, domainModel)).thenReturn(valueProperty2);
+		final EStructuralFeature structuralFeature2 = mock(EStructuralFeature.class);
+		when(valueProperty2.getStructuralFeature()).thenReturn(structuralFeature2);
+
 		final CompoundControlSWTRenderer renderer = createRenderer();
 
 		final VTControlLabelAlignmentStyleProperty property = VTAlignmentFactory.eINSTANCE
@@ -340,13 +539,272 @@
 		final Control label = renderer.createLabel(shell);
 
 		/* assert */
-		final Composite labelComposite = Composite.class.cast(label);
-		assertTrue(GridData.class.cast(labelComposite.getChildren()[0].getLayoutData()).grabExcessHorizontalSpace);
-		assertFalse(GridData.class.cast(labelComposite.getChildren()[1].getLayoutData()).grabExcessHorizontalSpace);
-		assertFalse(GridData.class.cast(labelComposite.getChildren()[2].getLayoutData()).grabExcessHorizontalSpace);
-		assertEquals(SWT.RIGHT, Label.class.cast(labelComposite.getChildren()[0]).getAlignment());
-		assertEquals(SWT.LEFT, Label.class.cast(labelComposite.getChildren()[1]).getAlignment());
-		assertEquals(SWT.LEFT, Label.class.cast(labelComposite.getChildren()[2]).getAlignment());
+		final Label swtLabel = Label.class.cast(label);
+		assertEquals(SWT.RIGHT, swtLabel.getAlignment());
+	}
+
+	// TODO
+	@Test
+	public void testCreateLabelWrapDefault() throws NoLabelFoundException, DatabindingFailedException {
+		/* setup */
+		final VControl control1 = mock(VControl.class);
+		final VFeaturePathDomainModelReference dmr1 = mock(VFeaturePathDomainModelReference.class);
+		when(control1.getDomainModelReference()).thenReturn(dmr1);
+
+		final VControl control2 = mock(VControl.class);
+		final VFeaturePathDomainModelReference dmr2 = mock(VFeaturePathDomainModelReference.class);
+		when(control2.getDomainModelReference()).thenReturn(dmr2);
+
+		when(compoundControl.getControls()).thenReturn(ECollections.asEList(control1, control2));
+
+		final EObject domainModel = mock(EObject.class);
+		when(viewModelContext.getDomainModel()).thenReturn(domainModel);
+
+		when(emfFormsLabelProvider.getDisplayName(dmr1, domainModel))
+			.thenReturn(Observables.constantObservableValue(LABEL1, String.class));
+
+		when(emfFormsLabelProvider.getDisplayName(dmr2, domainModel))
+			.thenReturn(Observables.constantObservableValue(LABEL2, String.class));
+
+		when(emfFormsLabelProvider.getDescription(dmr1, domainModel))
+			.thenReturn(Observables.constantObservableValue(TOOLTIP1, String.class));
+
+		when(emfFormsLabelProvider.getDescription(dmr2, domainModel))
+			.thenReturn(Observables.constantObservableValue(TOOLTIP2, String.class));
+
+		final IEMFValueProperty valueProperty1 = mock(IEMFValueProperty.class);
+		when(emfFormsDatabindingEMF.getValueProperty(dmr1, domainModel)).thenReturn(valueProperty1);
+		final EStructuralFeature structuralFeature1 = mock(EStructuralFeature.class);
+		when(valueProperty1.getStructuralFeature()).thenReturn(structuralFeature1);
+
+		final IEMFValueProperty valueProperty2 = mock(IEMFValueProperty.class);
+		when(emfFormsDatabindingEMF.getValueProperty(dmr2, domainModel)).thenReturn(valueProperty2);
+		final EStructuralFeature structuralFeature2 = mock(EStructuralFeature.class);
+		when(valueProperty2.getStructuralFeature()).thenReturn(structuralFeature2);
+
+		final CompoundControlSWTRenderer renderer = createRenderer();
+
+		/* act */
+		final Control label = renderer.createLabel(shell);
+
+		/* assert */
+		final Label swtLabel = Label.class.cast(label);
+		assertEquals(0, swtLabel.getStyle() & SWT.WRAP);
+	}
+
+	@Test
+	public void testCreateLabelWrapDisabled() throws NoLabelFoundException, DatabindingFailedException {
+		/* setup */
+		final VControl control1 = mock(VControl.class);
+		final VFeaturePathDomainModelReference dmr1 = mock(VFeaturePathDomainModelReference.class);
+		when(control1.getDomainModelReference()).thenReturn(dmr1);
+
+		final VControl control2 = mock(VControl.class);
+		final VFeaturePathDomainModelReference dmr2 = mock(VFeaturePathDomainModelReference.class);
+		when(control2.getDomainModelReference()).thenReturn(dmr2);
+
+		when(compoundControl.getControls()).thenReturn(ECollections.asEList(control1, control2));
+
+		final EObject domainModel = mock(EObject.class);
+		when(viewModelContext.getDomainModel()).thenReturn(domainModel);
+
+		when(emfFormsLabelProvider.getDisplayName(dmr1, domainModel))
+			.thenReturn(Observables.constantObservableValue(LABEL1, String.class));
+
+		when(emfFormsLabelProvider.getDisplayName(dmr2, domainModel))
+			.thenReturn(Observables.constantObservableValue(LABEL2, String.class));
+
+		when(emfFormsLabelProvider.getDescription(dmr1, domainModel))
+			.thenReturn(Observables.constantObservableValue(TOOLTIP1, String.class));
+
+		when(emfFormsLabelProvider.getDescription(dmr2, domainModel))
+			.thenReturn(Observables.constantObservableValue(TOOLTIP2, String.class));
+
+		final IEMFValueProperty valueProperty1 = mock(IEMFValueProperty.class);
+		when(emfFormsDatabindingEMF.getValueProperty(dmr1, domainModel)).thenReturn(valueProperty1);
+		final EStructuralFeature structuralFeature1 = mock(EStructuralFeature.class);
+		when(valueProperty1.getStructuralFeature()).thenReturn(structuralFeature1);
+
+		final IEMFValueProperty valueProperty2 = mock(IEMFValueProperty.class);
+		when(emfFormsDatabindingEMF.getValueProperty(dmr2, domainModel)).thenReturn(valueProperty2);
+		final EStructuralFeature structuralFeature2 = mock(EStructuralFeature.class);
+		when(valueProperty2.getStructuralFeature()).thenReturn(structuralFeature2);
+
+		final CompoundControlSWTRenderer renderer = createRenderer();
+
+		final VTLabelWrapStyleProperty property = VTWrapFactory.eINSTANCE.createLabelWrapStyleProperty();
+		property.setWrapLabel(false);
+		final Set<VTStyleProperty> properties = Collections.<VTStyleProperty> singleton(property);
+		Mockito.when(viewTemplateProvider.getStyleProperties(compoundControl, viewModelContext)).thenReturn(properties);
+		when(valueProperty2.getStructuralFeature()).thenReturn(structuralFeature2);
+
+		/* act */
+		final Control label = renderer.createLabel(shell);
+
+		/* assert */
+		final Label swtLabel = Label.class.cast(label);
+		assertEquals(0, swtLabel.getStyle() & SWT.WRAP);
+	}
+
+	@Test
+	public void testCreateLabelWrapEnabled() throws NoLabelFoundException, DatabindingFailedException {
+		/* setup */
+		final VControl control1 = mock(VControl.class);
+		final VFeaturePathDomainModelReference dmr1 = mock(VFeaturePathDomainModelReference.class);
+		when(control1.getDomainModelReference()).thenReturn(dmr1);
+
+		final VControl control2 = mock(VControl.class);
+		final VFeaturePathDomainModelReference dmr2 = mock(VFeaturePathDomainModelReference.class);
+		when(control2.getDomainModelReference()).thenReturn(dmr2);
+
+		when(compoundControl.getControls()).thenReturn(ECollections.asEList(control1, control2));
+
+		final EObject domainModel = mock(EObject.class);
+		when(viewModelContext.getDomainModel()).thenReturn(domainModel);
+
+		when(emfFormsLabelProvider.getDisplayName(dmr1, domainModel))
+			.thenReturn(Observables.constantObservableValue(LABEL1, String.class));
+
+		when(emfFormsLabelProvider.getDisplayName(dmr2, domainModel))
+			.thenReturn(Observables.constantObservableValue(LABEL2, String.class));
+
+		when(emfFormsLabelProvider.getDescription(dmr1, domainModel))
+			.thenReturn(Observables.constantObservableValue(TOOLTIP1, String.class));
+
+		when(emfFormsLabelProvider.getDescription(dmr2, domainModel))
+			.thenReturn(Observables.constantObservableValue(TOOLTIP2, String.class));
+
+		final IEMFValueProperty valueProperty1 = mock(IEMFValueProperty.class);
+		when(emfFormsDatabindingEMF.getValueProperty(dmr1, domainModel)).thenReturn(valueProperty1);
+		final EStructuralFeature structuralFeature1 = mock(EStructuralFeature.class);
+		when(valueProperty1.getStructuralFeature()).thenReturn(structuralFeature1);
+
+		final IEMFValueProperty valueProperty2 = mock(IEMFValueProperty.class);
+		when(emfFormsDatabindingEMF.getValueProperty(dmr2, domainModel)).thenReturn(valueProperty2);
+		final EStructuralFeature structuralFeature2 = mock(EStructuralFeature.class);
+		when(valueProperty2.getStructuralFeature()).thenReturn(structuralFeature2);
+
+		final CompoundControlSWTRenderer renderer = createRenderer();
+
+		final VTLabelWrapStyleProperty property = VTWrapFactory.eINSTANCE.createLabelWrapStyleProperty();
+		property.setWrapLabel(true);
+		final Set<VTStyleProperty> properties = Collections.<VTStyleProperty> singleton(property);
+		Mockito.when(viewTemplateProvider.getStyleProperties(compoundControl, viewModelContext)).thenReturn(properties);
+		when(valueProperty2.getStructuralFeature()).thenReturn(structuralFeature2);
+
+		/* act */
+		final Control label = renderer.createLabel(shell);
+
+		/* assert */
+		final Label swtLabel = Label.class.cast(label);
+		assertNotEquals(0, swtLabel.getStyle() & SWT.WRAP);
+	}
+
+	@Test
+	public void testCreateValidationIconNoChildren()
+		throws NoRendererFoundException, NoPropertyDescriptorFoundExeption {
+		/* setup */
+		when(compoundControl.getControls()).thenReturn(ECollections.<VControl> emptyEList());
+
+		final EObject domainModel = mock(EObject.class);
+		when(viewModelContext.getDomainModel()).thenReturn(domainModel);
+
+		final CompoundControlSWTRenderer renderer = spy(createRenderer());
+
+		/* act */
+		final Control label = renderer.createValidationIcon(shell);
+
+		/* assert */
+		verify(renderer, times(1)).createDummyValidationIcon(shell);
+		assertTrue(Label.class.isInstance(label));
+	}
+
+	@Test
+	public void testCreateValidationIconFirstCellHasNoRenderer()
+		throws NoRendererFoundException, NoPropertyDescriptorFoundExeption {
+		/* setup */
+		final VControl control1 = mock(VControl.class);
+		final VFeaturePathDomainModelReference dmr1 = mock(VFeaturePathDomainModelReference.class);
+		when(control1.getDomainModelReference()).thenReturn(dmr1);
+
+		final VControl control2 = mock(VControl.class);
+		final VFeaturePathDomainModelReference dmr2 = mock(VFeaturePathDomainModelReference.class);
+		when(control2.getDomainModelReference()).thenReturn(dmr2);
+
+		when(compoundControl.getControls()).thenReturn(ECollections.asEList(control1, control2));
+
+		final EObject domainModel = mock(EObject.class);
+		when(viewModelContext.getDomainModel()).thenReturn(domainModel);
+
+		final CompoundControlSWTRenderer renderer = spy(createRenderer());
+
+		/* act */
+		final Control label = renderer.createValidationIcon(shell);
+
+		/* assert */
+		verify(renderer, times(1)).createDummyValidationIcon(shell);
+		assertTrue(Label.class.isInstance(label));
+	}
+
+	@Test
+	public void testCreateValidationIconFirstCellRenderer1Column()
+		throws NoRendererFoundException, NoPropertyDescriptorFoundExeption, EMFFormsNoRendererException {
+		/* setup */
+		final VControl control1 = mock(VControl.class);
+		final VFeaturePathDomainModelReference dmr1 = mock(VFeaturePathDomainModelReference.class);
+		when(control1.getDomainModelReference()).thenReturn(dmr1);
+
+		final VControl control2 = mock(VControl.class);
+		final VFeaturePathDomainModelReference dmr2 = mock(VFeaturePathDomainModelReference.class);
+		when(control2.getDomainModelReference()).thenReturn(dmr2);
+
+		when(compoundControl.getControls()).thenReturn(ECollections.asEList(control1, control2));
+
+		final EObject domainModel = mock(EObject.class);
+		when(viewModelContext.getDomainModel()).thenReturn(domainModel);
+
+		final DummyRenderer dummyRenderer1 = createDummyRendererNoValidation(control1);
+		when(emfFormsRendererFactory.getRendererInstance(control1, viewModelContext)).thenReturn(dummyRenderer1);
+
+		final CompoundControlSWTRenderer renderer = spy(createRenderer());
+
+		/* act */
+		final Control label = renderer.createValidationIcon(shell);
+
+		/* assert */
+		verify(renderer, times(1)).createDummyValidationIcon(shell);
+		assertTrue(Label.class.isInstance(label));
+	}
+
+	@Test
+	public void testCreateValidationIconFirstCellRenderer2Columns()
+		throws NoRendererFoundException, NoPropertyDescriptorFoundExeption, EMFFormsNoRendererException {
+		/* setup */
+		final VControl control1 = mock(VControl.class);
+		final VFeaturePathDomainModelReference dmr1 = mock(VFeaturePathDomainModelReference.class);
+		when(control1.getDomainModelReference()).thenReturn(dmr1);
+
+		final VControl control2 = mock(VControl.class);
+		final VFeaturePathDomainModelReference dmr2 = mock(VFeaturePathDomainModelReference.class);
+		when(control2.getDomainModelReference()).thenReturn(dmr2);
+
+		when(compoundControl.getControls()).thenReturn(ECollections.asEList(control1, control2));
+
+		final EObject domainModel = mock(EObject.class);
+		when(viewModelContext.getDomainModel()).thenReturn(domainModel);
+
+		final DummyRenderer dummyRenderer1 = spy(createDummyRenderer(control1));
+		when(emfFormsRendererFactory.getRendererInstance(control1, viewModelContext)).thenReturn(dummyRenderer1);
+
+		final CompoundControlSWTRenderer renderer = spy(createRenderer());
+
+		/* act */
+		final Control label = renderer.createValidationIcon(shell);
+
+		/* assert */
+		verify(renderer, times(0)).createDummyValidationIcon(shell);
+		verify(dummyRenderer1, times(1)).createLabel(C_VALIDATION, shell);
+		assertTrue(Label.class.isInstance(label));
 	}
 
 	@Test
@@ -559,9 +1017,21 @@
 
 	@Test
 	public void testRenderControlColumn1() throws NoRendererFoundException, NoPropertyDescriptorFoundExeption {
+		when(compoundControl.getControls()).thenReturn(ECollections.<VControl> emptyEList());
 		final SWTGridCell swtGridCell = mock(SWTGridCell.class);
 		when(swtGridCell.getColumn()).thenReturn(1);
 		final CompoundControlSWTRenderer renderer = spy(createRenderer());
+		doReturn(new Label(shell, SWT.NONE)).when(renderer).createLabel(shell);
+		renderer.renderControl(swtGridCell, shell);
+		verify(renderer, times(1)).createValidationIcon(shell);
+	}
+
+	@Test
+	public void testRenderControlColumn2() throws NoRendererFoundException, NoPropertyDescriptorFoundExeption {
+		when(compoundControl.getControls()).thenReturn(ECollections.<VControl> emptyEList());
+		final SWTGridCell swtGridCell = mock(SWTGridCell.class);
+		when(swtGridCell.getColumn()).thenReturn(2);
+		final CompoundControlSWTRenderer renderer = spy(createRenderer());
 		doReturn(new Label(shell, SWT.NONE)).when(renderer).createControls(shell);
 		renderer.renderControl(swtGridCell, shell);
 		verify(renderer, times(1)).createControls(shell);
@@ -569,13 +1039,39 @@
 
 	@Test(expected = IllegalArgumentException.class)
 	public void testRenderControlColumnOther() throws NoRendererFoundException, NoPropertyDescriptorFoundExeption {
+		when(compoundControl.getControls()).thenReturn(ECollections.<VControl> emptyEList());
 		final SWTGridCell swtGridCell = mock(SWTGridCell.class);
-		when(swtGridCell.getColumn()).thenReturn(2);
+		when(swtGridCell.getColumn()).thenReturn(3);
 		final CompoundControlSWTRenderer renderer = spy(createRenderer());
 		renderer.renderControl(swtGridCell, shell);
 	}
 
 	@Test
+	public void testRenderControlColumn0ControlLabelAlignmentNone()
+		throws NoRendererFoundException, NoPropertyDescriptorFoundExeption {
+		when(compoundControl.getLabelAlignment()).thenReturn(LabelAlignment.NONE);
+		final SWTGridCell swtGridCell = mock(SWTGridCell.class);
+		when(swtGridCell.getColumn()).thenReturn(0);
+		final CompoundControlSWTRenderer renderer = spy(createRenderer());
+		doReturn(new Label(shell, SWT.NONE)).when(renderer).createValidationIcon(shell);
+		renderer.renderControl(swtGridCell, shell);
+		verify(renderer, times(1)).createValidationIcon(shell);
+	}
+
+	@Test
+	public void testRenderControlColumn1ControlLabelAlignmentNone()
+		throws NoRendererFoundException, NoPropertyDescriptorFoundExeption {
+		when(compoundControl.getLabelAlignment()).thenReturn(LabelAlignment.NONE);
+		when(compoundControl.getControls()).thenReturn(ECollections.<VControl> emptyEList());
+		final SWTGridCell swtGridCell = mock(SWTGridCell.class);
+		when(swtGridCell.getColumn()).thenReturn(1);
+		final CompoundControlSWTRenderer renderer = spy(createRenderer());
+		doReturn(new Label(shell, SWT.NONE)).when(renderer).createControls(shell);
+		renderer.renderControl(swtGridCell, shell);
+		verify(renderer, times(1)).createControls(shell);
+	}
+
+	@Test
 	public void testEffectivelyReadOnlyDoesNotDisableComposite()
 		throws EMFFormsNoRendererException, NoRendererFoundException, NoPropertyDescriptorFoundExeption {
 		/* setup */
@@ -619,7 +1115,7 @@
 
 		/* act */
 		renderer.init();
-		final Control controls = renderer.render(new SWTGridCell(0, 1, renderer), shell);
+		final Control controls = renderer.render(new SWTGridCell(0, 2, renderer), shell);
 		renderer.finalizeRendering(shell);
 
 		/* assert */
@@ -641,23 +1137,33 @@
 	}
 
 	private DummyRenderer createDummyRenderer(final VControl control) {
-		final DummyRenderer dummyRenderer = new DummyRenderer(control, viewModelContext, reportService);
+		final DummyRenderer dummyRenderer = new DummyRenderer(control, viewModelContext, reportService, true);
 		dummyRenderer.init();
 		return dummyRenderer;
 	}
 
-	private static final class DummyRenderer extends AbstractSWTRenderer<VElement> {
+	private DummyRenderer createDummyRendererNoValidation(final VControl control) {
+		final DummyRenderer dummyRenderer = new DummyRenderer(control, viewModelContext, reportService, false);
+		dummyRenderer.init();
+		return dummyRenderer;
+	}
+
+	public static class DummyRenderer extends AbstractSWTRenderer<VElement> {
 
 		private SWTGridDescription rendererGridDescription;
+		private final boolean showValidation;
 
-		DummyRenderer(VControl vElement, ViewModelContext viewContext, ReportService reportService) {
+		DummyRenderer(VControl vElement, ViewModelContext viewContext, ReportService reportService,
+			boolean showValidation) {
 			super(vElement, viewContext, reportService);
+			this.showValidation = showValidation;
 		}
 
 		@Override
 		public SWTGridDescription getGridDescription(SWTGridDescription gridDescription) {
 			if (rendererGridDescription == null) {
-				rendererGridDescription = GridDescriptionFactory.INSTANCE.createSimpleGrid(1, 2, this);
+				rendererGridDescription = GridDescriptionFactory.INSTANCE.createSimpleGrid(1, showValidation ? 2 : 1,
+					this);
 				for (int i = 0; i < rendererGridDescription.getGrid().size() - 1; i++) {
 					final SWTGridCell swtGridCell = rendererGridDescription.getGrid().get(i);
 					swtGridCell.setHorizontalGrab(false);
@@ -669,7 +1175,11 @@
 		@Override
 		protected Control renderControl(SWTGridCell gridCell, Composite parent)
 			throws NoRendererFoundException, NoPropertyDescriptorFoundExeption {
-			switch (gridCell.getColumn()) {
+			int column = gridCell.getColumn();
+			if (!showValidation) {
+				column++;
+			}
+			switch (column) {
 			case 0:
 				return createLabel(C_VALIDATION, parent);
 			case 1:
@@ -679,7 +1189,7 @@
 			}
 		}
 
-		private Control createLabel(String string, Composite parent) {
+		protected Control createLabel(String string, Composite parent) {
 			final Label label = new Label(parent, SWT.NONE);
 			label.setText(string);
 			return label;
diff --git a/tests/org.eclipse.emf.ecp.view.context.tests/META-INF/MANIFEST.MF b/tests/org.eclipse.emf.ecp.view.context.tests/META-INF/MANIFEST.MF
index 4105651..ebf917f 100644
--- a/tests/org.eclipse.emf.ecp.view.context.tests/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.emf.ecp.view.context.tests/META-INF/MANIFEST.MF
@@ -2,14 +2,15 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: EMFForms View Model Context Tests
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.context.tests
-Bundle-Version: 1.16.0.qualifier
-Fragment-Host: org.eclipse.emf.ecp.view.context;bundle-version="[1.16.0,1.17.0)"
-Export-Package: org.eclipse.emf.ecp.view.context.tests;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.view.internal.context;version="1.16.0";x-internal:=true
+Bundle-Version: 1.17.0.qualifier
+Fragment-Host: org.eclipse.emf.ecp.view.context;bundle-version="[1.17.0,1.18.0]"
+Export-Package: org.eclipse.emf.ecp.view.context.tests;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.internal.context;version="1.17.0";x-internal:=true
 Require-Bundle: org.junit;bundle-version="[4.11.0,5.0.0)",
-  org.mockito.mockito-core-hamcrest-modified;bundle-version="[1.9.5,2.0.0)",
-  org.eclipse.equinox.ds;bundle-version="[1.4.300,2.0.0)",
-  org.eclipse.emfforms.core.services.domainexpander.default;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services.structuralchange;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services.structuralchange.default;bundle-version="[1.16.0,1.17.0)"
+ org.mockito.mockito-core-hamcrest-modified;bundle-version="[1.9.5,2.0.0)",
+ org.eclipse.equinox.ds;bundle-version="[1.4.300,2.0.0)",
+ org.eclipse.emfforms.core.services.domainexpander.default;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services.structuralchange;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services.structuralchange.default;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Automatic-Module-Name: org.eclipse.emf.ecp.view.context.tests
diff --git a/tests/org.eclipse.emf.ecp.view.context.tests/pom.xml b/tests/org.eclipse.emf.ecp.view.context.tests/pom.xml
index 711d36e..1fca206 100644
--- a/tests/org.eclipse.emf.ecp.view.context.tests/pom.xml
+++ b/tests/org.eclipse.emf.ecp.view.context.tests/pom.xml
@@ -6,12 +6,12 @@
 	<parent>
 		<groupId>org.eclipse.emf.ecp</groupId>
 		<artifactId>ecp-tests-parent</artifactId>
-		<version>1.16.0-SNAPSHOT</version>
+		<version>1.17.0-SNAPSHOT</version>
 		<relativePath>../../releng/org.eclipse.emf.ecp.releng.tests/</relativePath>
 	</parent>
 	<groupId>org.eclipse.emf.ecp</groupId>
 	<artifactId>org.eclipse.emf.ecp.view.context.tests</artifactId>
-	<version>1.16.0-SNAPSHOT</version>
+	<version>1.17.0-SNAPSHOT</version>
 	<packaging>eclipse-test-plugin</packaging>
 
 	<build>
diff --git a/tests/org.eclipse.emf.ecp.view.context.tests/src/org/eclipse/emf/ecp/view/internal/context/ViewModelContextImpl_ITest.java b/tests/org.eclipse.emf.ecp.view.context.tests/src/org/eclipse/emf/ecp/view/internal/context/ViewModelContextImpl_ITest.java
index 964f098..ca23a04 100644
--- a/tests/org.eclipse.emf.ecp.view.context.tests/src/org/eclipse/emf/ecp/view/internal/context/ViewModelContextImpl_ITest.java
+++ b/tests/org.eclipse.emf.ecp.view.context.tests/src/org/eclipse/emf/ecp/view/internal/context/ViewModelContextImpl_ITest.java
@@ -30,6 +30,7 @@
 

 import java.util.Arrays;

 import java.util.Collection;

+import java.util.Collections;

 import java.util.Dictionary;

 import java.util.Hashtable;

 

@@ -899,4 +900,52 @@
 		assertSame(childContext1, childContextToRemove1);

 		assertSame(childContext2, childContextToRemove2);

 	}

+

+	/**

+	 * Test that service-override providers are invoked again on re-initialization of the

+	 * context following domain-model change.

+	 */

+	@SuppressWarnings("nls")

+	@Test

+	public void testChangeDomainModelWithServiceProvider() {

+		final EObject model = EcoreFactory.eINSTANCE.createEObject();

+		final VElement view = VViewFactory.eINSTANCE.createView();

+

+		final ViewModelService canary = mock(MyService.class);

+		final ViewModelServiceProvider provider = mock(ViewModelServiceProvider.class);

+		when(provider.getViewModelServices(any(VElement.class), any(EObject.class)))

+			.then(new Answer<Collection<ViewModelService>>() {

+				@Override

+				public Collection<ViewModelService> answer(InvocationOnMock invocation) throws Throwable {

+					return Collections.singleton(canary);

+				}

+			});

+		final ViewModelContext context = ViewModelContextFactory.INSTANCE.createViewModelContext(

+			view, model, provider);

+

+		try {

+			assertThat("Service not provided", context.hasService(MyService.class), is(true));

+			verify(provider).getViewModelServices(view, model);

+

+			// Now, change the domain model

+			final EObject newModel = EcoreFactory.eINSTANCE.createEObject();

+			context.changeDomainModel(newModel);

+

+			assertThat("Service not restored", context.hasService(MyService.class), is(true));

+			verify(provider).getViewModelServices(view, newModel);

+		} finally {

+			context.dispose();

+		}

+	}

+

+	//

+	// Nested types

+	//

+

+	/**

+	 * Dummy view-model service interface for testing.

+	 */

+	public interface MyService extends ViewModelService {

+		// Empty (just for testing via mocks)

+	}

 }

diff --git a/tests/org.eclipse.emf.ecp.view.control.multireference.tests/AllPluginTests for view.control.multireference.launch b/tests/org.eclipse.emf.ecp.view.control.multireference.tests/AllPluginTests for view.control.multireference.launch
index 3e3bc72..48c5e27 100644
--- a/tests/org.eclipse.emf.ecp.view.control.multireference.tests/AllPluginTests for view.control.multireference.launch
+++ b/tests/org.eclipse.emf.ecp.view.control.multireference.tests/AllPluginTests for view.control.multireference.launch
@@ -32,8 +32,8 @@
 <stringAttribute key="pde.version" value="3.3"/>
 <stringAttribute key="product" value="org.eclipse.platform.ide"/>
 <booleanAttribute key="run_in_ui_thread" value="true"/>
-<stringAttribute key="selected_target_plugins" value="com.ibm.icu@default:default,javax.annotation@default:default,javax.inject@default:default,org.apache.batik.css*1.8.0.v20170214-1941@default:default,org.apache.batik.util*1.8.0.v20170214-1941@default:default,org.apache.commons.codec@default:default,org.apache.commons.jxpath@default:default,org.apache.commons.logging@default:default,org.apache.felix.gogo.command@default:default,org.apache.felix.gogo.runtime@default:default,org.apache.felix.scr@default:default,org.eclipse.compare.core@default:default,org.eclipse.core.commands@default:default,org.eclipse.core.contenttype@default:default,org.eclipse.core.databinding*1.6.100.v20170515-1119@default:default,org.eclipse.core.databinding.observable*1.6.100.v20170515-1119@default:default,org.eclipse.core.databinding.property*1.6.100.v20170515-1119@default:default,org.eclipse.core.expressions@default:default,org.eclipse.core.filesystem.linux.x86_64@default:default,org.eclipse.core.filesystem@default:default,org.eclipse.core.jobs@default:default,org.eclipse.core.resources@default:default,org.eclipse.core.runtime@default:true,org.eclipse.e4.core.commands@default:default,org.eclipse.e4.core.contexts@default:default,org.eclipse.e4.core.di.annotations@default:default,org.eclipse.e4.core.di.extensions.supplier@default:default,org.eclipse.e4.core.di.extensions@default:default,org.eclipse.e4.core.di@default:default,org.eclipse.e4.core.services@default:default,org.eclipse.e4.emf.xpath@default:default,org.eclipse.e4.ui.bindings@default:default,org.eclipse.e4.ui.css.core@default:default,org.eclipse.e4.ui.css.swt.theme@default:default,org.eclipse.e4.ui.css.swt@default:default,org.eclipse.e4.ui.di@default:default,org.eclipse.e4.ui.model.workbench@default:default,org.eclipse.e4.ui.services@default:default,org.eclipse.e4.ui.swt.gtk@default:default,org.eclipse.e4.ui.widgets@default:default,org.eclipse.e4.ui.workbench.addons.swt@default:default,org.eclipse.e4.ui.workbench.renderers.swt@default:default,org.eclipse.e4.ui.workbench.swt@default:default,org.eclipse.e4.ui.workbench3@default:default,org.eclipse.e4.ui.workbench@default:default,org.eclipse.emf.common.ui@default:default,org.eclipse.emf.common@default:default,org.eclipse.emf.databinding.edit@default:default,org.eclipse.emf.databinding@default:default,org.eclipse.emf.ecore.change@default:default,org.eclipse.emf.ecore.xmi@default:default,org.eclipse.emf.ecore@default:default,org.eclipse.emf.edit.ui@default:default,org.eclipse.emf.edit@default:default,org.eclipse.emf.emfstore.client@default:default,org.eclipse.emf.emfstore.common.model@default:default,org.eclipse.emf.emfstore.common@default:default,org.eclipse.emf.emfstore.examplemodel.edit@default:default,org.eclipse.emf.emfstore.examplemodel@default:default,org.eclipse.emf.emfstore.migration@default:default,org.eclipse.emf.emfstore.server.model@default:default,org.eclipse.emf.emfstore.server@default:default,org.eclipse.equinox.app@default:default,org.eclipse.equinox.common@2:true,org.eclipse.equinox.ds@1:true,org.eclipse.equinox.event@default:default,org.eclipse.equinox.preferences@default:default,org.eclipse.equinox.region@default:default,org.eclipse.equinox.registry@default:default,org.eclipse.equinox.transforms.hook@default:default,org.eclipse.equinox.weaving.hook@default:default,org.eclipse.help@default:default,org.eclipse.jface.databinding@default:default,org.eclipse.jface@default:default,org.eclipse.net4j.util@default:default,org.eclipse.osgi.compatibility.state@default:default,org.eclipse.osgi.services@default:default,org.eclipse.osgi.util@default:default,org.eclipse.osgi@-1:true,org.eclipse.swt.gtk.linux.x86_64@default:default,org.eclipse.swt@default:default,org.eclipse.team.core@default:default,org.eclipse.ui.forms@default:default,org.eclipse.ui.trace@default:default,org.eclipse.ui.views@default:default,org.eclipse.ui.workbench@default:default,org.eclipse.ui@default:default,org.hamcrest.core@default:default,org.junit@default:default,org.mockito.mockito-core-hamcrest-modified@default:default,org.objenesis@default:default,org.w3c.css.sac@default:default"/>
-<stringAttribute key="selected_workspace_plugins" value="org.eclipse.emf.ecp.common.test@default:default,org.eclipse.emf.ecp.common.ui@default:default,org.eclipse.emf.ecp.common@default:default,org.eclipse.emf.ecp.core.test@default:default,org.eclipse.emf.ecp.core@default:default,org.eclipse.emf.ecp.edit.swt.test@default:default,org.eclipse.emf.ecp.edit.swt@default:default,org.eclipse.emf.ecp.edit@default:default,org.eclipse.emf.ecp.editor.e3@default:default,org.eclipse.emf.ecp.emfstore.core@default:default,org.eclipse.emf.ecp.explorereditorbridge@default:default,org.eclipse.emf.ecp.makeithappen.model@default:default,org.eclipse.emf.ecp.test.common@default:default,org.eclipse.emf.ecp.test.model@default:default,org.eclipse.emf.ecp.ui.view.swt.test@default:default,org.eclipse.emf.ecp.ui.view.swt@default:default,org.eclipse.emf.ecp.ui.view.test@default:default,org.eclipse.emf.ecp.ui.view@default:default,org.eclipse.emf.ecp.ui@default:default,org.eclipse.emf.ecp.view.context.tests@default:default,org.eclipse.emf.ecp.view.context@default:default,org.eclipse.emf.ecp.view.control.multireference.tests@default:false,org.eclipse.emf.ecp.view.control.multireference@default:default,org.eclipse.emf.ecp.view.core.swt.tests@default:default,org.eclipse.emf.ecp.view.core.swt@default:default,org.eclipse.emf.ecp.view.group.model@default:default,org.eclipse.emf.ecp.view.migrator@default:default,org.eclipse.emf.ecp.view.model.common.test@default:default,org.eclipse.emf.ecp.view.model.common@default:default,org.eclipse.emf.ecp.view.model.provider.generator@default:default,org.eclipse.emf.ecp.view.model.provider.xmi.test@default:default,org.eclipse.emf.ecp.view.model.provider.xmi@default:default,org.eclipse.emf.ecp.view.model.test@default:default,org.eclipse.emf.ecp.view.model@default:default,org.eclipse.emf.ecp.view.swt.layout@default:default,org.eclipse.emf.ecp.view.table.model.test@default:default,org.eclipse.emf.ecp.view.table.model@default:default,org.eclipse.emf.ecp.view.template.model@default:default,org.eclipse.emf.ecp.view.test.common.swt@default:default,org.eclipse.emf.ecp.view.test.common@default:default,org.eclipse.emf.ecp.view.util.swt@default:default,org.eclipse.emf.ecp.view.validation.test@default:default,org.eclipse.emf.ecp.view.validation@default:default,org.eclipse.emf.ecp.view.vertical.model@default:default,org.eclipse.emf.rap.edit.ui.minimal@default:default,org.eclipse.emfforms.common.prevalidation@default:default,org.eclipse.emfforms.common.tests@default:default,org.eclipse.emfforms.common.validation@default:default,org.eclipse.emfforms.common@default:default,org.eclipse.emfforms.core.services.databinding.testmodel@default:default,org.eclipse.emfforms.core.services.domainexpander.default.tests@default:default,org.eclipse.emfforms.core.services.domainexpander.default@default:default,org.eclipse.emfforms.core.services.domainexpander.table@default:default,org.eclipse.emfforms.core.services.editsupport@default:default,org.eclipse.emfforms.core.services.emf.tests@default:default,org.eclipse.emfforms.core.services.emf@default:default,org.eclipse.emfforms.core.services.emfspecificservice@default:default,org.eclipse.emfforms.core.services.legacy.tests@default:default,org.eclipse.emfforms.core.services.legacy@default:default,org.eclipse.emfforms.core.services.locale.default@default:default,org.eclipse.emfforms.core.services.mappingprovider.default@default:default,org.eclipse.emfforms.core.services.mappingprovider.table@default:default,org.eclipse.emfforms.core.services.structuralchange.default@default:default,org.eclipse.emfforms.core.services.structuralchange@default:default,org.eclipse.emfforms.core.services.tests@default:default,org.eclipse.emfforms.core.services@default:default,org.eclipse.emfforms.localization.tests@default:default,org.eclipse.emfforms.localization@default:default,org.eclipse.emfforms.swt.common.test@default:default,org.eclipse.emfforms.swt.core.di@default:default,org.eclipse.emfforms.swt.core.tests@default:default,org.eclipse.emfforms.swt.core@default:default"/>
+<stringAttribute key="selected_target_plugins" value="com.ibm.icu@default:default,javax.annotation@default:default,javax.inject@default:default,org.apache.batik.css*1.8.0.v20170214-1941@default:default,org.apache.batik.util*1.8.0.v20170214-1941@default:default,org.apache.commons.codec@default:default,org.apache.commons.jxpath@default:default,org.apache.commons.logging@default:default,org.apache.felix.gogo.command@default:default,org.apache.felix.gogo.runtime@default:default,org.apache.felix.scr@default:default,org.eclipse.compare.core@default:default,org.eclipse.core.commands@default:default,org.eclipse.core.contenttype@default:default,org.eclipse.core.databinding*1.6.100.v20170515-1119@default:default,org.eclipse.core.databinding.observable*1.6.100.v20170515-1119@default:default,org.eclipse.core.databinding.property*1.6.100.v20170515-1119@default:default,org.eclipse.core.expressions@default:default,org.eclipse.core.filesystem.linux.x86_64@default:false,org.eclipse.core.filesystem@default:default,org.eclipse.core.jobs@default:default,org.eclipse.core.resources@default:default,org.eclipse.core.runtime@default:true,org.eclipse.e4.core.commands@default:default,org.eclipse.e4.core.contexts@default:default,org.eclipse.e4.core.di.annotations@default:default,org.eclipse.e4.core.di.extensions.supplier@default:default,org.eclipse.e4.core.di.extensions@default:default,org.eclipse.e4.core.di@default:default,org.eclipse.e4.core.services@default:default,org.eclipse.e4.emf.xpath@default:default,org.eclipse.e4.ui.bindings@default:default,org.eclipse.e4.ui.css.core@default:default,org.eclipse.e4.ui.css.swt.theme@default:default,org.eclipse.e4.ui.css.swt@default:default,org.eclipse.e4.ui.di@default:default,org.eclipse.e4.ui.model.workbench@default:default,org.eclipse.e4.ui.services@default:default,org.eclipse.e4.ui.swt.gtk@default:false,org.eclipse.e4.ui.widgets@default:default,org.eclipse.e4.ui.workbench.addons.swt@default:default,org.eclipse.e4.ui.workbench.renderers.swt@default:default,org.eclipse.e4.ui.workbench.swt@default:default,org.eclipse.e4.ui.workbench3@default:default,org.eclipse.e4.ui.workbench@default:default,org.eclipse.emf.common.ui@default:default,org.eclipse.emf.common@default:default,org.eclipse.emf.databinding.edit@default:default,org.eclipse.emf.databinding@default:default,org.eclipse.emf.ecore.change@default:default,org.eclipse.emf.ecore.xmi@default:default,org.eclipse.emf.ecore@default:default,org.eclipse.emf.edit.ui@default:default,org.eclipse.emf.edit@default:default,org.eclipse.emf.emfstore.client@default:default,org.eclipse.emf.emfstore.common.model@default:default,org.eclipse.emf.emfstore.common@default:default,org.eclipse.emf.emfstore.examplemodel.edit@default:default,org.eclipse.emf.emfstore.examplemodel@default:default,org.eclipse.emf.emfstore.migration@default:default,org.eclipse.emf.emfstore.server.model@default:default,org.eclipse.emf.emfstore.server@default:default,org.eclipse.equinox.app@default:default,org.eclipse.equinox.common@2:true,org.eclipse.equinox.ds@1:true,org.eclipse.equinox.event@default:default,org.eclipse.equinox.preferences@default:default,org.eclipse.equinox.region@default:false,org.eclipse.equinox.registry@default:default,org.eclipse.equinox.transforms.hook@default:false,org.eclipse.equinox.weaving.hook@default:false,org.eclipse.help@default:default,org.eclipse.jface.databinding@default:default,org.eclipse.jface@default:default,org.eclipse.net4j.util@default:default,org.eclipse.osgi.compatibility.state@default:false,org.eclipse.osgi.services@default:default,org.eclipse.osgi.util@default:default,org.eclipse.osgi@-1:true,org.eclipse.swt.gtk.linux.x86_64@default:false,org.eclipse.swt@default:default,org.eclipse.team.core@default:default,org.eclipse.ui.forms@default:default,org.eclipse.ui.trace@default:default,org.eclipse.ui.views@default:default,org.eclipse.ui.workbench@default:default,org.eclipse.ui@default:default,org.hamcrest.core@default:default,org.hamcrest.library@default:default,org.junit@default:default,org.mockito.mockito-core-hamcrest-modified@default:default,org.objenesis@default:default,org.w3c.css.sac@default:default"/>
+<stringAttribute key="selected_workspace_plugins" value="org.eclipse.emf.ecp.common.ui@default:default,org.eclipse.emf.ecp.common@default:default,org.eclipse.emf.ecp.core@default:default,org.eclipse.emf.ecp.edit.swt@default:default,org.eclipse.emf.ecp.edit@default:default,org.eclipse.emf.ecp.editor.e3@default:default,org.eclipse.emf.ecp.emfstore.core@default:default,org.eclipse.emf.ecp.explorereditorbridge@default:default,org.eclipse.emf.ecp.test.common@default:default,org.eclipse.emf.ecp.ui.view.swt@default:default,org.eclipse.emf.ecp.ui.view.test@default:default,org.eclipse.emf.ecp.ui.view@default:default,org.eclipse.emf.ecp.ui@default:default,org.eclipse.emf.ecp.view.context@default:default,org.eclipse.emf.ecp.view.control.multireference.tests@default:false,org.eclipse.emf.ecp.view.control.multireference@default:default,org.eclipse.emf.ecp.view.core.swt@default:default,org.eclipse.emf.ecp.view.group.model@default:default,org.eclipse.emf.ecp.view.migrator@default:default,org.eclipse.emf.ecp.view.model.common@default:default,org.eclipse.emf.ecp.view.model.provider.generator@default:default,org.eclipse.emf.ecp.view.model.provider.xmi@default:default,org.eclipse.emf.ecp.view.model@default:default,org.eclipse.emf.ecp.view.swt.layout@default:default,org.eclipse.emf.ecp.view.table.model.test@default:false,org.eclipse.emf.ecp.view.table.model@default:default,org.eclipse.emf.ecp.view.template.model@default:default,org.eclipse.emf.ecp.view.test.common.swt@default:default,org.eclipse.emf.ecp.view.test.common@default:default,org.eclipse.emf.ecp.view.util.swt@default:default,org.eclipse.emf.ecp.view.validation@default:default,org.eclipse.emf.ecp.view.vertical.model@default:default,org.eclipse.emf.rap.edit.ui.minimal@default:default,org.eclipse.emfforms.common.prevalidation@default:default,org.eclipse.emfforms.common.validation@default:default,org.eclipse.emfforms.common@default:default,org.eclipse.emfforms.core.bazaar@default:default,org.eclipse.emfforms.core.services.databinding.testmodel@default:default,org.eclipse.emfforms.core.services.domainexpander.default@default:default,org.eclipse.emfforms.core.services.domainexpander.table@default:default,org.eclipse.emfforms.core.services.editsupport@default:default,org.eclipse.emfforms.core.services.emf@default:default,org.eclipse.emfforms.core.services.emfspecificservice@default:default,org.eclipse.emfforms.core.services.legacy@default:default,org.eclipse.emfforms.core.services.locale.default@default:default,org.eclipse.emfforms.core.services.mappingprovider.default@default:default,org.eclipse.emfforms.core.services.mappingprovider.table@default:default,org.eclipse.emfforms.core.services.structuralchange.default@default:default,org.eclipse.emfforms.core.services.structuralchange@default:default,org.eclipse.emfforms.core.services@default:default,org.eclipse.emfforms.localization@default:default,org.eclipse.emfforms.swt.core.di@default:default,org.eclipse.emfforms.swt.core@default:default,org.eclipse.emfforms.view.annotation.model@default:default"/>
 <booleanAttribute key="show_selected_only" value="false"/>
 <booleanAttribute key="tracing" value="false"/>
 <booleanAttribute key="useCustomFeatures" value="false"/>
diff --git a/tests/org.eclipse.emf.ecp.view.control.multireference.tests/META-INF/MANIFEST.MF b/tests/org.eclipse.emf.ecp.view.control.multireference.tests/META-INF/MANIFEST.MF
index c1702c0..dc3c75b 100644
--- a/tests/org.eclipse.emf.ecp.view.control.multireference.tests/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.emf.ecp.view.control.multireference.tests/META-INF/MANIFEST.MF
@@ -2,20 +2,23 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Multi Reference Control Tests
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.control.multireference.tests
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Fragment-Host: org.eclipse.emf.ecp.view.control.multireference;bundle-version="[1.16.0,1.17.0)"
-Export-Package: org.eclipse.emf.ecp.view.control.multireference.tests;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.view.internal.control.multireference;version="1.16.0";x-internal:=true
+Fragment-Host: org.eclipse.emf.ecp.view.control.multireference;bundle-version="[1.17.0,1.18.0]"
+Export-Package: org.eclipse.emf.ecp.view.control.multireference.tests;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.internal.control.multireference;version="1.17.0";x-internal:=true
 Require-Bundle: org.junit;bundle-version="[4.11.0,5.0.0)",
-  org.mockito.mockito-core-hamcrest-modified;bundle-version="[1.9.5,2.0.0)",
-  org.eclipse.emf.ecp.view.test.common.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services.databinding.testmodel;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.emfstore.examplemodel.edit;bundle-version="[1.9.0,2.0.0)",
-  org.eclipse.emf.databinding.edit;bundle-version="[1.3.0,2.0.0)"
+ org.mockito.mockito-core-hamcrest-modified;bundle-version="[1.9.5,2.0.0)",
+ org.eclipse.emf.ecp.view.test.common.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services.databinding.testmodel;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.emfstore.examplemodel.edit;bundle-version="[1.9.0,2.0.0)",
+ org.eclipse.emf.databinding.edit;bundle-version="[1.3.0,2.0.0)",
+ org.objenesis;bundle-version="[1.0.0,2.0.0)",
+ org.hamcrest.library;bundle-version="[1.3.0,2.0.0)"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
-Import-Package: org.eclipse.emfforms.spi.common.report;version="[1.16.0,1.17.0)",
-  org.eclipse.swt;version="0.0.0",
-  org.eclipse.swt.widgets;version="0.0.0",
-  org.osgi.framework;version="[1.1.0,2.0.0)"
+Import-Package: org.eclipse.emfforms.spi.common.report;version="[1.17.0,1.18.0]",
+ org.eclipse.swt;version="0.0.0",
+ org.eclipse.swt.widgets;version="0.0.0",
+ org.osgi.framework;version="[1.1.0,2.0.0)"
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.view.control.multireference.tests
diff --git a/tests/org.eclipse.emf.ecp.view.control.multireference.tests/pom.xml b/tests/org.eclipse.emf.ecp.view.control.multireference.tests/pom.xml
index 1ef67ea..398092a 100644
--- a/tests/org.eclipse.emf.ecp.view.control.multireference.tests/pom.xml
+++ b/tests/org.eclipse.emf.ecp.view.control.multireference.tests/pom.xml
@@ -6,7 +6,7 @@
 	<parent>
 		<groupId>org.eclipse.emf.ecp</groupId>
 		<artifactId>ecp-tests-parent</artifactId>
-		<version>1.16.0-SNAPSHOT</version>
+		<version>1.17.0-SNAPSHOT</version>
 		<relativePath>../../releng/org.eclipse.emf.ecp.releng.tests/</relativePath>
 	</parent>
 	<artifactId>org.eclipse.emf.ecp.view.control.multireference.tests</artifactId>
@@ -67,5 +67,5 @@
 		</plugins>
 	</build>
 	<groupId>org.eclipse.emf.ecp</groupId>
-	<version>1.16.0-SNAPSHOT</version>
+	<version>1.17.0-SNAPSHOT</version>
 </project>
diff --git a/tests/org.eclipse.emf.ecp.view.control.multireference.tests/src/org/eclipse/emf/ecp/view/internal/control/multireference/LinkOnlyMultiReferenceRendererService_Test.java b/tests/org.eclipse.emf.ecp.view.control.multireference.tests/src/org/eclipse/emf/ecp/view/internal/control/multireference/LinkOnlyMultiReferenceRendererService_Test.java
new file mode 100644
index 0000000..0a4bc07
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.view.control.multireference.tests/src/org/eclipse/emf/ecp/view/internal/control/multireference/LinkOnlyMultiReferenceRendererService_Test.java
@@ -0,0 +1,197 @@
+/*******************************************************************************
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * Lucas Koehler - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.emf.ecp.view.internal.control.multireference;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertSame;
+import static org.mockito.Matchers.any;
+import static org.mockito.Mockito.inOrder;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.when;
+
+import org.eclipse.core.databinding.property.value.IValueProperty;
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecp.view.spi.context.ViewModelContext;
+import org.eclipse.emf.ecp.view.spi.model.VControl;
+import org.eclipse.emf.ecp.view.spi.model.VDomainModelReference;
+import org.eclipse.emf.ecp.view.spi.model.VViewFactory;
+import org.eclipse.emf.emfforms.spi.view.annotation.model.VAnnotation;
+import org.eclipse.emf.emfforms.spi.view.annotation.model.VAnnotationFactory;
+import org.eclipse.emfforms.spi.common.report.AbstractReport;
+import org.eclipse.emfforms.spi.common.report.ReportService;
+import org.eclipse.emfforms.spi.core.services.databinding.DatabindingFailedException;
+import org.eclipse.emfforms.spi.core.services.databinding.EMFFormsDatabinding;
+import org.eclipse.emfforms.spi.swt.core.di.EMFFormsDIRendererService;
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ * Unit tests for {@link LinkOnlyMultiReferenceRendererService}.
+ *
+ * @author Lucas Koehler
+ *
+ */
+public class LinkOnlyMultiReferenceRendererService_Test {
+
+	private LinkOnlyMultiReferenceRendererService service;
+
+	@Before
+	public void setUp() {
+		service = new LinkOnlyMultiReferenceRendererService();
+	}
+
+	@Test
+	public void testIsApplicableForView() {
+		assertEquals(EMFFormsDIRendererService.NOT_APPLICABLE,
+			service.isApplicable(VViewFactory.eINSTANCE.createView(), null), 0);
+	}
+
+	@Test
+	public void testIsApplicableForEmptyControl() {
+		assertEquals(EMFFormsDIRendererService.NOT_APPLICABLE,
+			service.isApplicable(VViewFactory.eINSTANCE.createControl(), null), 0);
+	}
+
+	// TODO
+	@Test
+	public void testIsApplicableDatabindingException() throws DatabindingFailedException {
+		final VControl control = VViewFactory.eINSTANCE.createControl();
+		final VDomainModelReference dmr = VViewFactory.eINSTANCE.createFeaturePathDomainModelReference();
+		control.setDomainModelReference(dmr);
+		final EMFFormsDatabinding databinding = mock(EMFFormsDatabinding.class);
+		final ReportService reportService = mock(ReportService.class);
+		service.setEMFFormsDatabinding(databinding);
+		service.setReportService(reportService);
+		final ViewModelContext vmc = mock(ViewModelContext.class);
+		final EObject domainModel = mock(EObject.class);
+		when(vmc.getDomainModel()).thenReturn(domainModel);
+		when(databinding.getValueProperty(dmr, domainModel)).thenThrow(new DatabindingFailedException("Test Error")); //$NON-NLS-1$
+		assertEquals(EMFFormsDIRendererService.NOT_APPLICABLE, service.isApplicable(control, vmc), 0);
+		inOrder(reportService).verify(reportService, times(1)).report(any(AbstractReport.class));
+	}
+
+	@Test
+	public void testIsApplicableMultiAttribute() throws DatabindingFailedException {
+		final VControl control = VViewFactory.eINSTANCE.createControl();
+		final VDomainModelReference dmr = VViewFactory.eINSTANCE.createFeaturePathDomainModelReference();
+		control.setDomainModelReference(dmr);
+		final EAttribute attribute = mock(EAttribute.class);
+		when(attribute.isMany()).thenReturn(true);
+		final EMFFormsDatabinding databinding = mock(EMFFormsDatabinding.class);
+		service.setEMFFormsDatabinding(databinding);
+		final ViewModelContext vmc = mock(ViewModelContext.class);
+		final EObject domainModel = mock(EObject.class);
+		when(vmc.getDomainModel()).thenReturn(domainModel);
+		final IValueProperty property = mock(IValueProperty.class);
+		when(property.getValueType()).thenReturn(attribute);
+		when(databinding.getValueProperty(dmr, domainModel)).thenReturn(property);
+		assertEquals(EMFFormsDIRendererService.NOT_APPLICABLE, service.isApplicable(control, vmc), 0);
+	}
+
+	// TODO no annotation
+	@Test
+	public void testIsApplicableNoAnnotation() throws DatabindingFailedException {
+		final VControl control = VViewFactory.eINSTANCE.createControl();
+		final VDomainModelReference dmr = VViewFactory.eINSTANCE.createFeaturePathDomainModelReference();
+		control.setDomainModelReference(dmr);
+
+		final EReference reference = mock(EReference.class);
+		when(reference.isMany()).thenReturn(true);
+
+		final EMFFormsDatabinding databinding = mock(EMFFormsDatabinding.class);
+		service.setEMFFormsDatabinding(databinding);
+		final ViewModelContext vmc = mock(ViewModelContext.class);
+		final EObject domainModel = mock(EObject.class);
+		when(vmc.getDomainModel()).thenReturn(domainModel);
+		final IValueProperty property = mock(IValueProperty.class);
+		when(property.getValueType()).thenReturn(reference);
+		when(databinding.getValueProperty(dmr, domainModel)).thenReturn(property);
+		assertEquals(EMFFormsDIRendererService.NOT_APPLICABLE, service.isApplicable(control, vmc), 0);
+	}
+
+	@Test
+	public void testIsApplicableIncorrectAnnotation() throws DatabindingFailedException {
+		final VControl control = VViewFactory.eINSTANCE.createControl();
+		final VDomainModelReference dmr = VViewFactory.eINSTANCE.createFeaturePathDomainModelReference();
+		control.setDomainModelReference(dmr);
+		final VAnnotation annotation = VAnnotationFactory.eINSTANCE.createAnnotation();
+		annotation.setKey("incorrect"); //$NON-NLS-1$
+		control.getAttachments().add(annotation);
+
+		final EReference reference = mock(EReference.class);
+		when(reference.isMany()).thenReturn(true);
+
+		final EMFFormsDatabinding databinding = mock(EMFFormsDatabinding.class);
+		service.setEMFFormsDatabinding(databinding);
+		final ViewModelContext vmc = mock(ViewModelContext.class);
+		final EObject domainModel = mock(EObject.class);
+		when(vmc.getDomainModel()).thenReturn(domainModel);
+		final IValueProperty property = mock(IValueProperty.class);
+		when(property.getValueType()).thenReturn(reference);
+		when(databinding.getValueProperty(dmr, domainModel)).thenReturn(property);
+		assertEquals(EMFFormsDIRendererService.NOT_APPLICABLE, service.isApplicable(control, vmc), 0);
+	}
+
+	@Test
+	public void testIsApplicableCorrectAnnotation() throws DatabindingFailedException {
+		final VControl control = VViewFactory.eINSTANCE.createControl();
+		final VDomainModelReference dmr = VViewFactory.eINSTANCE.createFeaturePathDomainModelReference();
+		control.setDomainModelReference(dmr);
+		final VAnnotation annotation = VAnnotationFactory.eINSTANCE.createAnnotation();
+		annotation.setKey(LinkOnlyMultiReferenceRendererService.ANNOTATION_KEY);
+		control.getAttachments().add(annotation);
+
+		final EReference reference = mock(EReference.class);
+		when(reference.isMany()).thenReturn(true);
+
+		final EMFFormsDatabinding databinding = mock(EMFFormsDatabinding.class);
+		service.setEMFFormsDatabinding(databinding);
+		final ViewModelContext vmc = mock(ViewModelContext.class);
+		final EObject domainModel = mock(EObject.class);
+		when(vmc.getDomainModel()).thenReturn(domainModel);
+		final IValueProperty property = mock(IValueProperty.class);
+		when(property.getValueType()).thenReturn(reference);
+		when(databinding.getValueProperty(dmr, domainModel)).thenReturn(property);
+		assertEquals(6, service.isApplicable(control, vmc), 0);
+	}
+
+	@Test
+	public void testIsApplicableSingleReferenceWithCorrectAnnotation() throws DatabindingFailedException {
+		final VControl control = VViewFactory.eINSTANCE.createControl();
+		final VDomainModelReference dmr = VViewFactory.eINSTANCE.createFeaturePathDomainModelReference();
+		control.setDomainModelReference(dmr);
+		final VAnnotation annotation = VAnnotationFactory.eINSTANCE.createAnnotation();
+		annotation.setKey(LinkOnlyMultiReferenceRendererService.ANNOTATION_KEY);
+		control.getAttachments().add(annotation);
+
+		final EReference reference = mock(EReference.class);
+		when(reference.isMany()).thenReturn(false);
+
+		final EMFFormsDatabinding databinding = mock(EMFFormsDatabinding.class);
+		service.setEMFFormsDatabinding(databinding);
+		final ViewModelContext vmc = mock(ViewModelContext.class);
+		final EObject domainModel = mock(EObject.class);
+		when(vmc.getDomainModel()).thenReturn(domainModel);
+		final IValueProperty property = mock(IValueProperty.class);
+		when(property.getValueType()).thenReturn(reference);
+		when(databinding.getValueProperty(dmr, domainModel)).thenReturn(property);
+		assertEquals(EMFFormsDIRendererService.NOT_APPLICABLE, service.isApplicable(control, vmc), 0);
+	}
+
+	@Test
+	public void testGetRendererClass() {
+		assertSame(LinkOnlyMultiReferenceRenderer.class, service.getRendererClass());
+	}
+}
diff --git a/tests/org.eclipse.emf.ecp.view.control.multireference.tests/src/org/eclipse/emf/ecp/view/internal/control/multireference/MultiReferenceRenderer_PTest.java b/tests/org.eclipse.emf.ecp.view.control.multireference.tests/src/org/eclipse/emf/ecp/view/internal/control/multireference/MultiReferenceRenderer_PTest.java
index b1012f1..060153b 100644
--- a/tests/org.eclipse.emf.ecp.view.control.multireference.tests/src/org/eclipse/emf/ecp/view/internal/control/multireference/MultiReferenceRenderer_PTest.java
+++ b/tests/org.eclipse.emf.ecp.view.control.multireference.tests/src/org/eclipse/emf/ecp/view/internal/control/multireference/MultiReferenceRenderer_PTest.java
@@ -13,9 +13,12 @@
 package org.eclipse.emf.ecp.view.internal.control.multireference;
 
 import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.equalTo;
+import static org.hamcrest.Matchers.notNullValue;
+import static org.hamcrest.Matchers.nullValue;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertThat;
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
 import static org.mockito.Matchers.any;
@@ -48,6 +51,7 @@
 import org.eclipse.emf.ecore.EcoreFactory;
 import org.eclipse.emf.ecore.resource.Resource;
 import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.emf.ecp.view.model.common.AbstractGridCell.Alignment;
 import org.eclipse.emf.ecp.view.spi.context.ViewModelContext;
 import org.eclipse.emf.ecp.view.spi.model.VControl;
 import org.eclipse.emf.ecp.view.spi.model.VDomainModelReference;
@@ -403,6 +407,23 @@
 		assertTrue(Button.class.isInstance(buttonsComposite.getChildren()[0]));
 	}
 
+	@Test
+	public void testRenderModeCompactGridDescription() {
+		final SWTGridDescription gridDescription = compactVerticallyRenderer.getGridDescription(null);
+
+		assertThat(gridDescription.getColumns(), is(equalTo(2)));
+
+		final SWTGridCell validationCell = gridDescription.getGrid().get(0);
+		assertThat(validationCell.getPreferredSize(), notNullValue());
+		assertThat(validationCell.isHorizontalGrab(), is(false));
+		assertThat(validationCell.getVerticalAlignment(), is(Alignment.BEGINNING));
+
+		final SWTGridCell mainCell = gridDescription.getGrid().get(1);
+		assertThat(mainCell.getPreferredSize(), nullValue());
+		assertThat(mainCell.isHorizontalGrab(), is(true));
+		assertThat(mainCell.isVerticalGrab(), is(true));
+	}
+
 	/**
 	 * Tests the tool-tip on the "Link" button.
 	 *
@@ -574,7 +595,7 @@
 
 	/**
 	 * Test that the control is disabled when it's set to read only
-	 * 
+	 *
 	 * @throws DatabindingFailedException
 	 * @throws NoRendererFoundException
 	 * @throws NoPropertyDescriptorFoundExeption
diff --git a/tests/org.eclipse.emf.ecp.view.core.swt.tests/AllPluginTests core.swt.launch b/tests/org.eclipse.emf.ecp.view.core.swt.tests/AllPluginTests core.swt.launch
index 40b8a17..f4ce790 100644
--- a/tests/org.eclipse.emf.ecp.view.core.swt.tests/AllPluginTests core.swt.launch
+++ b/tests/org.eclipse.emf.ecp.view.core.swt.tests/AllPluginTests core.swt.launch
@@ -33,7 +33,7 @@
 <stringAttribute key="product" value="org.eclipse.platform.ide"/>
 <booleanAttribute key="run_in_ui_thread" value="true"/>
 <stringAttribute key="selected_target_plugins" value="com.ibm.icu@default:default,javax.annotation@default:default,javax.inject@default:default,org.apache.batik.css*1.7.0.v201011041433@default:default,org.apache.batik.util*1.7.0.v201011041433@default:default,org.apache.batik.util.gui*1.7.0.v200903091627@default:default,org.apache.commons.codec@default:default,org.apache.commons.jxpath@default:default,org.apache.commons.logging@default:default,org.apache.felix.scr@default:default,org.eclipse.core.commands@default:default,org.eclipse.core.contenttype@default:default,org.eclipse.core.databinding*1.5.0.v20150422-0725@default:default,org.eclipse.core.databinding*1.6.100.v20170515-1119@default:default,org.eclipse.core.databinding.observable*1.5.0.v20150422-0725@default:default,org.eclipse.core.databinding.observable*1.6.100.v20170515-1119@default:default,org.eclipse.core.databinding.property*1.5.0.v20150422-0725@default:default,org.eclipse.core.databinding.property*1.6.100.v20170515-1119@default:default,org.eclipse.core.expressions@default:default,org.eclipse.core.jobs@default:default,org.eclipse.core.runtime@default:true,org.eclipse.e4.core.commands@default:default,org.eclipse.e4.core.contexts@default:default,org.eclipse.e4.core.di.annotations@default:default,org.eclipse.e4.core.di.extensions.supplier@default:default,org.eclipse.e4.core.di.extensions@default:default,org.eclipse.e4.core.di@default:default,org.eclipse.e4.core.services@default:default,org.eclipse.e4.emf.xpath@default:default,org.eclipse.e4.ui.bindings@default:default,org.eclipse.e4.ui.css.core@default:default,org.eclipse.e4.ui.css.swt.theme@default:default,org.eclipse.e4.ui.css.swt@default:default,org.eclipse.e4.ui.di@default:default,org.eclipse.e4.ui.model.workbench@default:default,org.eclipse.e4.ui.services@default:default,org.eclipse.e4.ui.widgets@default:default,org.eclipse.e4.ui.workbench.addons.swt@default:default,org.eclipse.e4.ui.workbench.renderers.swt@default:default,org.eclipse.e4.ui.workbench.swt@default:default,org.eclipse.e4.ui.workbench3@default:default,org.eclipse.e4.ui.workbench@default:default,org.eclipse.emf.common.ui@default:default,org.eclipse.emf.common@default:default,org.eclipse.emf.databinding.edit@default:default,org.eclipse.emf.databinding@default:default,org.eclipse.emf.ecore.change@default:default,org.eclipse.emf.ecore.xmi@default:default,org.eclipse.emf.ecore@default:default,org.eclipse.emf.edit.ui@default:default,org.eclipse.emf.edit@default:default,org.eclipse.emf.emfstore.client@default:default,org.eclipse.emf.emfstore.common.model@default:default,org.eclipse.emf.emfstore.common@default:default,org.eclipse.emf.emfstore.examplemodel.edit@default:default,org.eclipse.emf.emfstore.examplemodel@default:default,org.eclipse.emf.emfstore.migration@default:default,org.eclipse.emf.emfstore.server.model@default:default,org.eclipse.emf.emfstore.server@default:default,org.eclipse.equinox.app@default:default,org.eclipse.equinox.common@2:true,org.eclipse.equinox.ds@1:true,org.eclipse.equinox.preferences@default:default,org.eclipse.equinox.registry@default:default,org.eclipse.equinox.util@default:default,org.eclipse.help@default:default,org.eclipse.jface.databinding@default:default,org.eclipse.jface@default:default,org.eclipse.net4j.util@default:default,org.eclipse.osgi.services@default:default,org.eclipse.osgi.util@default:default,org.eclipse.osgi@-1:true,org.eclipse.swt.gtk.linux.x86_64@default:false,org.eclipse.swt@default:default,org.eclipse.ui.forms@default:default,org.eclipse.ui.views@default:default,org.eclipse.ui.workbench@default:default,org.eclipse.ui@default:default,org.hamcrest.core@default:default,org.junit@default:default,org.mockito.mockito-core-hamcrest-modified@default:default,org.objenesis@default:default,org.w3c.css.sac@default:default,org.w3c.dom.events@default:default,org.w3c.dom.smil*1.0.0.v200806040011@default:default,org.w3c.dom.smil*1.0.1.v200903091627@default:default,org.w3c.dom.svg@default:default"/>
-<stringAttribute key="selected_workspace_plugins" value="org.eclipse.emf.ecp.common.ui@default:default,org.eclipse.emf.ecp.common@default:default,org.eclipse.emf.ecp.core@default:default,org.eclipse.emf.ecp.edit.swt@default:default,org.eclipse.emf.ecp.edit@default:default,org.eclipse.emf.ecp.editor.e3@default:default,org.eclipse.emf.ecp.emfstore.core@default:default,org.eclipse.emf.ecp.explorereditorbridge@default:default,org.eclipse.emf.ecp.test.common@default:default,org.eclipse.emf.ecp.ui.view.swt@default:default,org.eclipse.emf.ecp.ui.view.test@default:default,org.eclipse.emf.ecp.ui.view@default:default,org.eclipse.emf.ecp.ui@default:default,org.eclipse.emf.ecp.view.context@default:default,org.eclipse.emf.ecp.view.core.swt.tests@default:false,org.eclipse.emf.ecp.view.core.swt@default:default,org.eclipse.emf.ecp.view.migrator@default:default,org.eclipse.emf.ecp.view.model.common@default:default,org.eclipse.emf.ecp.view.model.provider.generator@default:default,org.eclipse.emf.ecp.view.model.provider.xmi@default:default,org.eclipse.emf.ecp.view.model@default:default,org.eclipse.emf.ecp.view.swt.layout@default:default,org.eclipse.emf.ecp.view.template.model@default:default,org.eclipse.emf.ecp.view.template.service@default:default,org.eclipse.emf.ecp.view.test.common.swt@default:default,org.eclipse.emf.ecp.view.util.swt@default:default,org.eclipse.emf.ecp.view.vertical.model@default:default,org.eclipse.emfforms.common.prevalidation@default:default,org.eclipse.emfforms.common@default:default,org.eclipse.emfforms.core.services.databinding.featurepath@default:default,org.eclipse.emfforms.core.services.domainexpander.default@default:default,org.eclipse.emfforms.core.services.editsupport@default:default,org.eclipse.emfforms.core.services.emf@default:default,org.eclipse.emfforms.core.services.emfspecificservice@default:default,org.eclipse.emfforms.core.services.legacy@default:default,org.eclipse.emfforms.core.services.locale.default@default:default,org.eclipse.emfforms.core.services.structuralchange.default@default:default,org.eclipse.emfforms.core.services.structuralchange@default:default,org.eclipse.emfforms.core.services@default:default,org.eclipse.emfforms.localization@default:default,org.eclipse.emfforms.swt.common.test@default:default,org.eclipse.emfforms.swt.core.di@default:default,org.eclipse.emfforms.swt.core@default:default,org.eclipse.emfforms.view.model.localization@default:default"/>
+<stringAttribute key="selected_workspace_plugins" value="org.eclipse.emf.ecp.common.ui@default:default,org.eclipse.emf.ecp.common@default:default,org.eclipse.emf.ecp.core@default:default,org.eclipse.emf.ecp.edit.swt@default:default,org.eclipse.emf.ecp.edit@default:default,org.eclipse.emf.ecp.editor.e3@default:default,org.eclipse.emf.ecp.emfstore.core@default:default,org.eclipse.emf.ecp.explorereditorbridge@default:default,org.eclipse.emf.ecp.test.common@default:default,org.eclipse.emf.ecp.ui.view.swt@default:default,org.eclipse.emf.ecp.ui.view.test@default:default,org.eclipse.emf.ecp.ui.view@default:default,org.eclipse.emf.ecp.ui@default:default,org.eclipse.emf.ecp.view.context@default:default,org.eclipse.emf.ecp.view.core.swt.tests@default:false,org.eclipse.emf.ecp.view.core.swt@default:default,org.eclipse.emf.ecp.view.migrator@default:default,org.eclipse.emf.ecp.view.model.common@default:default,org.eclipse.emf.ecp.view.model.provider.generator@default:default,org.eclipse.emf.ecp.view.model.provider.xmi@default:default,org.eclipse.emf.ecp.view.model@default:default,org.eclipse.emf.ecp.view.swt.layout@default:default,org.eclipse.emf.ecp.view.template.model@default:default,org.eclipse.emf.ecp.view.template.service@default:default,org.eclipse.emf.ecp.view.test.common.swt@default:default,org.eclipse.emf.ecp.view.util.swt@default:default,org.eclipse.emf.ecp.view.vertical.model@default:default,org.eclipse.emfforms.common.prevalidation@default:default,org.eclipse.emfforms.common@default:default,org.eclipse.emfforms.core.bazaar@default:default,org.eclipse.emfforms.core.services.databinding.featurepath@default:default,org.eclipse.emfforms.core.services.domainexpander.default@default:default,org.eclipse.emfforms.core.services.editsupport@default:default,org.eclipse.emfforms.core.services.emf@default:default,org.eclipse.emfforms.core.services.emfspecificservice@default:default,org.eclipse.emfforms.core.services.legacy@default:default,org.eclipse.emfforms.core.services.locale.default@default:default,org.eclipse.emfforms.core.services.structuralchange.default@default:default,org.eclipse.emfforms.core.services.structuralchange@default:default,org.eclipse.emfforms.core.services@default:default,org.eclipse.emfforms.localization@default:default,org.eclipse.emfforms.swt.common.test@default:default,org.eclipse.emfforms.swt.core.di@default:default,org.eclipse.emfforms.swt.core@default:default,org.eclipse.emfforms.view.model.localization@default:default"/>
 <booleanAttribute key="show_selected_only" value="false"/>
 <booleanAttribute key="tracing" value="false"/>
 <booleanAttribute key="useCustomFeatures" value="false"/>
diff --git a/tests/org.eclipse.emf.ecp.view.core.swt.tests/META-INF/MANIFEST.MF b/tests/org.eclipse.emf.ecp.view.core.swt.tests/META-INF/MANIFEST.MF
index 18febb9..e319549 100644
--- a/tests/org.eclipse.emf.ecp.view.core.swt.tests/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.emf.ecp.view.core.swt.tests/META-INF/MANIFEST.MF
@@ -2,36 +2,37 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.core.swt.tests;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-ClassPath: .
 Bundle-Vendor: %providerName
-Fragment-Host: org.eclipse.emf.ecp.view.core.swt;bundle-version="[1.16.0,1.17.0)"
+Fragment-Host: org.eclipse.emf.ecp.view.core.swt;bundle-version="[1.17.0,1.18.0]"
 Bundle-Localization: plugin
-Export-Package: org.eclipse.emf.ecp.view.core.swt.test.model;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.view.core.swt.test.model.impl;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.view.core.swt.test.model.util;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.view.core.swt.tests;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.view.internal.core.swt.renderer;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.view.spi.core.swt;version="1.16.0",
-  org.eclipse.emf.ecp.view.spi.core.swt.renderer;version="1.16.0"
+Export-Package: org.eclipse.emf.ecp.view.core.swt.test.model;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.core.swt.test.model.impl;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.core.swt.test.model.util;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.core.swt.tests;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.internal.core.swt.renderer;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.spi.core.swt;version="1.17.0",
+ org.eclipse.emf.ecp.view.spi.core.swt.renderer;version="1.17.0"
 Require-Bundle: org.junit;bundle-version="[4.11.0,5.0.0)",
-  org.eclipse.emf.ecp.view.test.common.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.ui.view.swt;bundle-version="[1.16.0,1.17.0)",
+ org.eclipse.emf.ecp.view.test.common.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.ui.view.swt;bundle-version="[1.17.0,1.18.0]",
  org.eclipse.core.runtime;bundle-version="[3.7.0,4.0.0)",
  org.eclipse.emf.ecore;bundle-version="[2.7.0,3.0.0)";visibility:=reexport,
  org.eclipse.emf.emfstore.examplemodel;bundle-version="[1.3.0,2.0.0)",
  org.eclipse.emf.emfstore.examplemodel.edit;bundle-version="[1.3.0,2.0.0)",
  org.mockito.mockito-core-hamcrest-modified;bundle-version="[1.9.5,2.0.0)",
  org.eclipse.core.databinding.observable;bundle-version="[1.3.0,2.0.0)",
-  org.eclipse.emf.ecp.test.common;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.swt.layout;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services.legacy;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services.domainexpander.default;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services.structuralchange;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services.structuralchange.default;bundle-version="[1.16.0,1.17.0)",
+ org.eclipse.emf.ecp.test.common;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.swt.layout;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services.legacy;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services.domainexpander.default;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services.structuralchange;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services.structuralchange.default;bundle-version="[1.17.0,1.18.0]",
  org.objenesis;bundle-version="1.0.0",
-  org.eclipse.emfforms.swt.common.test;bundle-version="[1.16.0,1.17.0)"
+ org.eclipse.emfforms.swt.common.test;bundle-version="[1.17.0,1.18.0]"
 Import-Package: com.ibm.icu.text;version="52.1.1",
   org.eclipse.swt.widgets;version="0.0.0"
 Bundle-ActivationPolicy: lazy
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Automatic-Module-Name: org.eclipse.emf.ecp.view.core.swt.tests
diff --git a/tests/org.eclipse.emf.ecp.view.core.swt.tests/pom.xml b/tests/org.eclipse.emf.ecp.view.core.swt.tests/pom.xml
index 2d62991..fdcc05a 100644
--- a/tests/org.eclipse.emf.ecp.view.core.swt.tests/pom.xml
+++ b/tests/org.eclipse.emf.ecp.view.core.swt.tests/pom.xml
@@ -6,7 +6,7 @@
 	<parent>
 		<groupId>org.eclipse.emf.ecp</groupId>
 		<artifactId>ecp-tests-parent</artifactId>
-		<version>1.16.0-SNAPSHOT</version>
+		<version>1.17.0-SNAPSHOT</version>
 		<relativePath>../../releng/org.eclipse.emf.ecp.releng.tests/</relativePath>
 	</parent>
 	<artifactId>org.eclipse.emf.ecp.view.core.swt.tests</artifactId>
@@ -62,5 +62,5 @@
 		</plugins>
 	</build>
 	<groupId>org.eclipse.emf.ecp</groupId>
-	<version>1.16.0-SNAPSHOT</version>
+	<version>1.17.0-SNAPSHOT</version>
 </project>
diff --git a/tests/org.eclipse.emf.ecp.view.core.swt.tests/src/org/eclipse/emf/ecp/view/core/swt/tests/AllPluginTests.java b/tests/org.eclipse.emf.ecp.view.core.swt.tests/src/org/eclipse/emf/ecp/view/core/swt/tests/AllPluginTests.java
index be11f1e..6515d20 100644
--- a/tests/org.eclipse.emf.ecp.view.core.swt.tests/src/org/eclipse/emf/ecp/view/core/swt/tests/AllPluginTests.java
+++ b/tests/org.eclipse.emf.ecp.view.core.swt.tests/src/org/eclipse/emf/ecp/view/core/swt/tests/AllPluginTests.java
@@ -15,6 +15,7 @@
 import org.eclipse.emf.ecp.view.internal.core.swt.renderer.NumberControlRenderer_PTest;
 import org.eclipse.emf.ecp.view.internal.core.swt.renderer.ViewRenderer_PTest;
 import org.eclipse.emf.ecp.view.internal.core.swt.renderer.XMLDateControlRenderer_PTest;
+import org.eclipse.emf.ecp.view.spi.core.swt.AbstractControlSWTRenderer_PTest;
 import org.eclipse.emf.ecp.view.spi.core.swt.renderer.TextControlRendererUnsettable_PTest;
 import org.eclipse.emf.ecp.view.spi.core.swt.renderer.TextControlRenderer_PTest;
 import org.junit.runner.RunWith;
@@ -30,7 +31,7 @@
 @RunWith(Suite.class)
 @SuiteClasses({ CorrectDipose_PTest.class, DynamicDMR_PTest.class, ViewRenderer_PTest.class,
 	TextControlRendererUnsettable_PTest.class, NumberControlRenderer_PTest.class, XMLDateControlRenderer_PTest.class,
-	TextControlRenderer_PTest.class, DateTimeControlRenderer_PTest.class })
+	TextControlRenderer_PTest.class, DateTimeControlRenderer_PTest.class, AbstractControlSWTRenderer_PTest.class })
 public class AllPluginTests {
 
 }
diff --git a/tests/org.eclipse.emf.ecp.view.core.swt.tests/src/org/eclipse/emf/ecp/view/internal/core/swt/renderer/BooleanControlRenderer_PTest.java b/tests/org.eclipse.emf.ecp.view.core.swt.tests/src/org/eclipse/emf/ecp/view/internal/core/swt/renderer/BooleanControlRenderer_PTest.java
index 662747e..e5a6f4e 100644
--- a/tests/org.eclipse.emf.ecp.view.core.swt.tests/src/org/eclipse/emf/ecp/view/internal/core/swt/renderer/BooleanControlRenderer_PTest.java
+++ b/tests/org.eclipse.emf.ecp.view.core.swt.tests/src/org/eclipse/emf/ecp/view/internal/core/swt/renderer/BooleanControlRenderer_PTest.java
@@ -53,7 +53,6 @@
 	private DefaultRealm realm;
 
 	@Before
-	@SuppressWarnings("unchecked")
 	public void before() throws DatabindingFailedException {
 		realm = new DefaultRealm();
 		final ReportService reportService = mock(ReportService.class);
@@ -74,7 +73,6 @@
 	}
 
 	@Test
-	@SuppressWarnings("unchecked")
 	public void renderControlLabelAlignmentNone()
 		throws NoRendererFoundException, NoPropertyDescriptorFoundExeption, DatabindingFailedException {
 		setMockLabelAlignment(LabelAlignment.NONE);
@@ -88,7 +86,6 @@
 	}
 
 	@Test
-	@SuppressWarnings("unchecked")
 	public void renderControlLabelAlignmentLeft()
 		throws NoRendererFoundException, NoPropertyDescriptorFoundExeption, DatabindingFailedException {
 		setMockLabelAlignment(LabelAlignment.LEFT);
@@ -164,7 +161,6 @@
 	 * @throws NoPropertyDescriptorFoundExeption
 	 * @throws DatabindingFailedException
 	 */
-	@SuppressWarnings("unchecked")
 	private Button setUpDatabindingTest(final ObservingWritableValue mockedObservable) throws NoRendererFoundException,
 		NoPropertyDescriptorFoundExeption, DatabindingFailedException {
 		Mockito.reset(getDatabindingService());
@@ -193,7 +189,6 @@
 	}
 
 	@Test
-	@SuppressWarnings("unchecked")
 	public void testEffectivelyReadOnlyDeactivatesControl()
 		throws NoRendererFoundException, NoPropertyDescriptorFoundExeption, DatabindingFailedException {
 		final ObservingWritableValue mockedObservable = new ObservingWritableValue(realm, true, Boolean.class);
diff --git a/tests/org.eclipse.emf.ecp.view.core.swt.tests/src/org/eclipse/emf/ecp/view/spi/core/swt/AbstractControlSWTRenderer_PTest.java b/tests/org.eclipse.emf.ecp.view.core.swt.tests/src/org/eclipse/emf/ecp/view/spi/core/swt/AbstractControlSWTRenderer_PTest.java
index 5f36fac..b04c4a8 100644
--- a/tests/org.eclipse.emf.ecp.view.core.swt.tests/src/org/eclipse/emf/ecp/view/spi/core/swt/AbstractControlSWTRenderer_PTest.java
+++ b/tests/org.eclipse.emf.ecp.view.core.swt.tests/src/org/eclipse/emf/ecp/view/spi/core/swt/AbstractControlSWTRenderer_PTest.java
@@ -12,12 +12,14 @@
 package org.eclipse.emf.ecp.view.spi.core.swt;
 
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotEquals;
 import static org.junit.Assert.assertTrue;
 import static org.mockito.Matchers.any;
 import static org.mockito.Mockito.mock;
 
 import java.util.ArrayList;
 import java.util.Collections;
+import java.util.LinkedHashSet;
 import java.util.List;
 import java.util.Set;
 
@@ -40,6 +42,8 @@
 import org.eclipse.emf.ecp.view.template.style.alignment.model.AlignmentType;
 import org.eclipse.emf.ecp.view.template.style.alignment.model.VTAlignmentFactory;
 import org.eclipse.emf.ecp.view.template.style.alignment.model.VTControlLabelAlignmentStyleProperty;
+import org.eclipse.emf.ecp.view.template.style.wrap.model.VTLabelWrapStyleProperty;
+import org.eclipse.emf.ecp.view.template.style.wrap.model.VTWrapFactory;
 import org.eclipse.emfforms.spi.common.report.ReportService;
 import org.eclipse.emfforms.spi.core.services.databinding.DatabindingFailedException;
 import org.eclipse.emfforms.spi.core.services.databinding.EMFFormsDatabinding;
@@ -163,6 +167,70 @@
 	}
 
 	@Test
+	public void testLabelWrapStylePropertyNull() throws NoRendererFoundException, NoPropertyDescriptorFoundExeption {
+		/* act */
+		final Control render = renderer.renderControl(swtGridCell, shell);
+		/* assert */
+		assertTrue(Label.class.isInstance(render));
+		assertEquals(0, render.getStyle() & SWT.WRAP);
+	}
+
+	@Test
+	public void testLabelWrapStylePropertyNonWrapping()
+		throws NoRendererFoundException, NoPropertyDescriptorFoundExeption {
+		/* setup */
+		final VTLabelWrapStyleProperty labelWrapStyleProperty = VTWrapFactory.eINSTANCE.createLabelWrapStyleProperty();
+		labelWrapStyleProperty.setWrapLabel(false);
+		final Set<VTStyleProperty> properties = Collections.<VTStyleProperty> singleton(labelWrapStyleProperty);
+		Mockito.when(viewTemplateProvider.getStyleProperties(vControl, viewModelContext)).thenReturn(properties);
+		/* act */
+		final Control render = renderer.renderControl(swtGridCell, shell);
+		/* assert */
+		assertTrue(Label.class.isInstance(render));
+		assertEquals(0, render.getStyle() & SWT.WRAP);
+	}
+
+	@Test
+	public void testLabelWrapStylePropertyWrapping()
+		throws NoRendererFoundException, NoPropertyDescriptorFoundExeption {
+		/* setup */
+		final VTLabelWrapStyleProperty labelWrapStyleProperty = VTWrapFactory.eINSTANCE.createLabelWrapStyleProperty();
+		labelWrapStyleProperty.setWrapLabel(true);
+		final Set<VTStyleProperty> properties = Collections.<VTStyleProperty> singleton(labelWrapStyleProperty);
+		Mockito.when(viewTemplateProvider.getStyleProperties(vControl, viewModelContext)).thenReturn(properties);
+		/* act */
+		final Control render = renderer.renderControl(swtGridCell, shell);
+		/* assert */
+		assertTrue(Label.class.isInstance(render));
+		assertNotEquals(0, render.getStyle() & SWT.WRAP);
+	}
+
+	@Test
+	public void testMixedStylePropertiesInfluencingStyleBits()
+		throws NoRendererFoundException, NoPropertyDescriptorFoundExeption {
+		/* setup */
+		final VTControlLabelAlignmentStyleProperty alignProperty = VTAlignmentFactory.eINSTANCE
+			.createControlLabelAlignmentStyleProperty();
+		alignProperty.setType(AlignmentType.RIGHT);
+
+		final VTLabelWrapStyleProperty labelWrapStyleProperty = VTWrapFactory.eINSTANCE.createLabelWrapStyleProperty();
+		labelWrapStyleProperty.setWrapLabel(true);
+
+		final Set<VTStyleProperty> properties = new LinkedHashSet<VTStyleProperty>();
+		properties.add(alignProperty);
+		properties.add(labelWrapStyleProperty);
+		Mockito.when(viewTemplateProvider.getStyleProperties(vControl, viewModelContext)).thenReturn(properties);
+
+		/* act */
+		final Control render = renderer.renderControl(swtGridCell, shell);
+
+		/* assert */
+		assertTrue(Label.class.isInstance(render));
+		assertNotEquals(0, render.getStyle() & SWT.WRAP);
+		assertEquals(SWT.RIGHT, Label.class.cast(render).getAlignment());
+	}
+
+	@Test
 	public void testgetValidationBackgroundColor() throws NoRendererFoundException, NoPropertyDescriptorFoundExeption {
 		/* setup */
 		final SWTValidationHelper validationHelper = Mockito.mock(SWTValidationHelper.class);
diff --git a/tests/org.eclipse.emf.ecp.view.custom.ui.swt.test/META-INF/MANIFEST.MF b/tests/org.eclipse.emf.ecp.view.custom.ui.swt.test/META-INF/MANIFEST.MF
index e66d3e8..dd704ff 100644
--- a/tests/org.eclipse.emf.ecp.view.custom.ui.swt.test/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.emf.ecp.view.custom.ui.swt.test/META-INF/MANIFEST.MF
@@ -2,40 +2,41 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Tests for the Custom SWT Renderer
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.custom.ui.swt.test;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Activator: org.eclipse.emf.ecp.view.custom.ui.swt.test.Activator
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emf.ecp.view.custom.ui.swt.test;version="1.16.0";x-internal:=true
-Require-Bundle: org.eclipse.emf.ecp.view.test.common.swt;bundle-version="[1.16.0,1.17.0)",
-  org.junit;bundle-version="[4.0.0,5.0.0)",
-  org.eclipse.emf.ecp.view.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.swt;bundle-version="[3.1.0,4.0.0)",
-  org.eclipse.emf.ecp.edit;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.ui.view.test;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.ui.view;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.ui.view.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.equinox.common;bundle-version="[3.6.0,4.0.0)",
-  org.eclipse.core.runtime;bundle-version="[3.8.0,4.0.0)",
-  org.eclipse.jface.databinding;bundle-version="[1.4.0,2.0.0)",
-  org.eclipse.emf.emfstore.examplemodel;bundle-version="[1.3.0,2.0.0)",
-  org.eclipse.emf.ecp.edit.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.validation;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.core.databinding.property;bundle-version="[1.4.0,2.0.0)",
-  org.eclipse.emf.ecp.view.custom.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.edit;bundle-version="[2.8.0,3.0.0)",
-  org.eclipse.emf.databinding;bundle-version="[1.3.0,2.0.0)",
-  org.eclipse.emfforms.core.services;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.custom.ui.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services.legacy;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services.domainexpander.default;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services.mappingprovider.default;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services.emf;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.indexdmr.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services.databinding.index;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services.domainexpander.index;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services.structuralchange.index;bundle-version="[1.16.0,1.17.0)"
+Export-Package: org.eclipse.emf.ecp.view.custom.ui.swt.test;version="1.17.0";x-internal:=true
+Require-Bundle: org.eclipse.emf.ecp.view.test.common.swt;bundle-version="[1.17.0,1.18.0]",
+ org.junit;bundle-version="[4.0.0,5.0.0)",
+ org.eclipse.emf.ecp.view.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.swt;bundle-version="[3.1.0,4.0.0)",
+ org.eclipse.emf.ecp.edit;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.ui.view.test;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.ui.view;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.ui.view.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.equinox.common;bundle-version="[3.6.0,4.0.0)",
+ org.eclipse.core.runtime;bundle-version="[3.8.0,4.0.0)",
+ org.eclipse.jface.databinding;bundle-version="[1.4.0,2.0.0)",
+ org.eclipse.emf.emfstore.examplemodel;bundle-version="[1.3.0,2.0.0)",
+ org.eclipse.emf.ecp.edit.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.validation;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.core.databinding.property;bundle-version="[1.4.0,2.0.0)",
+ org.eclipse.emf.ecp.view.custom.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.edit;bundle-version="[2.8.0,3.0.0)",
+ org.eclipse.emf.databinding;bundle-version="[1.3.0,2.0.0)",
+ org.eclipse.emfforms.core.services;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.custom.ui.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services.legacy;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services.domainexpander.default;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services.mappingprovider.default;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services.emf;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.indexdmr.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services.databinding.index;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services.domainexpander.index;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services.structuralchange.index;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
-Import-Package: org.eclipse.emfforms.spi.common.report;version="[1.16.0,1.17.0)",
-  org.eclipse.jface.layout;version="0.0.0",
-  org.eclipse.jface.viewers;version="0.0.0"
+Import-Package: org.eclipse.emfforms.spi.common.report;version="[1.17.0,1.18.0]",
+ org.eclipse.jface.layout;version="0.0.0",
+ org.eclipse.jface.viewers;version="0.0.0"
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.view.custom.ui.swt.test
diff --git a/tests/org.eclipse.emf.ecp.view.custom.ui.swt.test/pom.xml b/tests/org.eclipse.emf.ecp.view.custom.ui.swt.test/pom.xml
index 86db441..5dd53a4 100644
--- a/tests/org.eclipse.emf.ecp.view.custom.ui.swt.test/pom.xml
+++ b/tests/org.eclipse.emf.ecp.view.custom.ui.swt.test/pom.xml
@@ -6,12 +6,12 @@
 	<parent>
 		<groupId>org.eclipse.emf.ecp</groupId>
 		<artifactId>ecp-tests-parent</artifactId>
-		<version>1.16.0-SNAPSHOT</version>
+		<version>1.17.0-SNAPSHOT</version>
 		<relativePath>../../releng/org.eclipse.emf.ecp.releng.tests/</relativePath>
 	</parent>
 	<groupId>org.eclipse.emf.ecp</groupId>
 	<artifactId>org.eclipse.emf.ecp.view.custom.ui.swt.test</artifactId>
-	<version>1.16.0-SNAPSHOT</version>
+	<version>1.17.0-SNAPSHOT</version>
 	<packaging>eclipse-test-plugin</packaging>
 
 	<build>
diff --git a/tests/org.eclipse.emf.ecp.view.dynamictree.feature/feature.xml b/tests/org.eclipse.emf.ecp.view.dynamictree.feature/feature.xml
index 1bce239..904938b 100644
--- a/tests/org.eclipse.emf.ecp.view.dynamictree.feature/feature.xml
+++ b/tests/org.eclipse.emf.ecp.view.dynamictree.feature/feature.xml
@@ -2,12 +2,12 @@
 <feature
       id="org.eclipse.emf.ecp.view.dynamictree.feature"
       label="Dynamic Tree Feature"
-      version="1.16.0.qualifier"
+      version="1.17.0.qualifier"
       provider-name="Eclipse Modeling Project"
       plugin="org.eclipse.emf.ecp.view.dynamictree.model"
       image="eclipse_update_120.jpg"
       license-feature="org.eclipse.emf.ecp.license.feature"
-      license-feature-version="1.16.0.qualifier">
+      license-feature-version="1.17.0.qualifier">
 
    <description>
       %description
diff --git a/tests/org.eclipse.emf.ecp.view.dynamictree.feature/pom.xml b/tests/org.eclipse.emf.ecp.view.dynamictree.feature/pom.xml
index 7fb3589..3fea9e0 100644
--- a/tests/org.eclipse.emf.ecp.view.dynamictree.feature/pom.xml
+++ b/tests/org.eclipse.emf.ecp.view.dynamictree.feature/pom.xml
@@ -5,11 +5,11 @@
 	<parent>
 		<groupId>org.eclipse.emf.ecp</groupId>
 		<artifactId>ecp-tests-parent</artifactId>
-		<version>1.16.0-SNAPSHOT</version>
+		<version>1.17.0-SNAPSHOT</version>
 		<relativePath>../../releng/org.eclipse.emf.ecp.releng.tests/</relativePath>
 	</parent>
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emf.ecp.view.dynamictree.feature</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-feature</packaging>
 </project>
diff --git a/tests/org.eclipse.emf.ecp.view.dynamictree.model.edit/META-INF/MANIFEST.MF b/tests/org.eclipse.emf.ecp.view.dynamictree.model.edit/META-INF/MANIFEST.MF
index 062922a..7427093 100644
--- a/tests/org.eclipse.emf.ecp.view.dynamictree.model.edit/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.emf.ecp.view.dynamictree.model.edit/META-INF/MANIFEST.MF
@@ -2,20 +2,21 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Dynamic Containment Tree Edit Plugin
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.dynamictree.model.edit;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-ClassPath: .
 Bundle-Activator: org.eclipse.emf.ecp.view.dynamictree.model.provider.DynamicTreeEditPlugin$Implementation
 Bundle-Vendor: Eclipse Modeling Project
 Bundle-Localization: plugin
-Export-Package: org.eclipse.emf.ecp.view.dynamictree.model.provider;version="1.16.0"
+Export-Package: org.eclipse.emf.ecp.view.dynamictree.model.provider;version="1.17.0"
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.5.0,4.0.0)",
-  org.eclipse.emf.ecp.view.dynamictree.model;bundle-version="[1.16.0,1.17.0)";visibility:=reexport,
-  org.eclipse.emf.edit;bundle-version="[2.5.0,3.0.0)";visibility:=reexport,
-  org.eclipse.emf.ecp.view.categorization.model;bundle-version="[1.16.0,1.17.0)";visibility:=reexport,
-  org.eclipse.emf.ecp.view.categorization.model.edit;bundle-version="[1.16.0,1.17.0)";visibility:=reexport,
-  org.eclipse.emf.ecore;bundle-version="[2.5.0,3.0.0)";visibility:=reexport,
-  org.eclipse.emf.ecore.edit;bundle-version="[2.5.0,3.0.0)";visibility:=reexport,
-  org.eclipse.emf.ecp.view.model;bundle-version="[1.16.0,1.17.0)";visibility:=reexport,
-  org.eclipse.emf.ecp.view.model.edit;bundle-version="[1.16.0,1.17.0)";visibility:=reexport
+ org.eclipse.emf.ecp.view.dynamictree.model;bundle-version="[1.17.0,1.18.0]";visibility:=reexport,
+ org.eclipse.emf.edit;bundle-version="[2.5.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.ecp.view.categorization.model;bundle-version="[1.17.0,1.18.0]";visibility:=reexport,
+ org.eclipse.emf.ecp.view.categorization.model.edit;bundle-version="[1.17.0,1.18.0]";visibility:=reexport,
+ org.eclipse.emf.ecore;bundle-version="[2.5.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.ecore.edit;bundle-version="[2.5.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.ecp.view.model;bundle-version="[1.17.0,1.18.0]";visibility:=reexport,
+ org.eclipse.emf.ecp.view.model.edit;bundle-version="[1.17.0,1.18.0]";visibility:=reexport
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.view.dynamictree.model.edit
diff --git a/tests/org.eclipse.emf.ecp.view.dynamictree.model.edit/pom.xml b/tests/org.eclipse.emf.ecp.view.dynamictree.model.edit/pom.xml
index 05249bb..039f290 100644
--- a/tests/org.eclipse.emf.ecp.view.dynamictree.model.edit/pom.xml
+++ b/tests/org.eclipse.emf.ecp.view.dynamictree.model.edit/pom.xml
@@ -6,11 +6,11 @@
 	<parent>
 		<groupId>org.eclipse.emf.ecp</groupId>
 		<artifactId>ecp-tests-parent</artifactId>
-		<version>1.16.0-SNAPSHOT</version>
+		<version>1.17.0-SNAPSHOT</version>
 		<relativePath>../../releng/org.eclipse.emf.ecp.releng.tests/</relativePath>
 	</parent>
 
 	<artifactId>org.eclipse.emf.ecp.view.dynamictree.model.edit</artifactId>
 	<packaging>eclipse-plugin</packaging>
-	<version>1.16.0-SNAPSHOT</version>
+	<version>1.17.0-SNAPSHOT</version>
 </project>
diff --git a/tests/org.eclipse.emf.ecp.view.dynamictree.model.test/META-INF/MANIFEST.MF b/tests/org.eclipse.emf.ecp.view.dynamictree.model.test/META-INF/MANIFEST.MF
index 6d1926f..b3a9c40 100644
--- a/tests/org.eclipse.emf.ecp.view.dynamictree.model.test/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.emf.ecp.view.dynamictree.model.test/META-INF/MANIFEST.MF
@@ -2,38 +2,39 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Dynamic Containment Tree Tests
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.dynamictree.model.test;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Activator: org.eclipse.emf.ecp.view.dynamictree.model.test.Activator
-Export-Package: org.eclipse.emf.ecp.view.dynamictree.model.test;version="1.16.0";
-   uses:="org.eclipse.emf.ecore,
-    org.eclipse.core.databinding,
-    org.eclipse.emf.ecp.view.context,
-    org.eclipse.emf.ecp.internal.ui.view.renderer,
-    org.osgi.framework,
-    org.eclipse.emf.ecp.view.dynamictree.model,
-    org.eclipse.emf.edit.provider,
-    org.eclipse.emf.ecp.edit,
-    org.eclipse.emf.edit.domain,
-    org.eclipse.emf.ecp.internal.ui.view.builders"
+Export-Package: org.eclipse.emf.ecp.view.dynamictree.model.test;version="1.17.0";
+  uses:="org.eclipse.emf.ecore,
+   org.eclipse.core.databinding,
+   org.eclipse.emf.ecp.view.context,
+   org.eclipse.emf.ecp.internal.ui.view.renderer,
+   org.osgi.framework,
+   org.eclipse.emf.ecp.view.dynamictree.model,
+   org.eclipse.emf.edit.provider,
+   org.eclipse.emf.ecp.edit,
+   org.eclipse.emf.edit.domain,
+   org.eclipse.emf.ecp.internal.ui.view.builders"
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.5.0,4.0.0)",
-  org.junit;bundle-version="4.11.0",
-  org.eclipse.emf.ecp.view.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.context;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.core.databinding;bundle-version="[1.4.1,2.0.0)",
-  org.eclipse.emf.ecp.ui.view;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.dynamictree.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.jface.databinding;bundle-version="[1.6.200,2.0.0)",
-  org.eclipse.swt;bundle-version="[3.102.1,4.0.0)",
-  org.eclipse.emf.ecp.view.label.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.group.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.table.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.custom.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.ui.view.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.dynamictree.model.edit;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.edit;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services.legacy;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services.domainexpander.default;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.test.common;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services.mappingprovider.default;bundle-version="[1.16.0,1.17.0)"
+ org.junit;bundle-version="4.11.0",
+ org.eclipse.emf.ecp.view.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.context;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.core.databinding;bundle-version="[1.4.1,2.0.0)",
+ org.eclipse.emf.ecp.ui.view;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.dynamictree.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.jface.databinding;bundle-version="[1.6.200,2.0.0)",
+ org.eclipse.swt;bundle-version="[3.102.1,4.0.0)",
+ org.eclipse.emf.ecp.view.label.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.group.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.table.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.custom.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.ui.view.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.dynamictree.model.edit;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.edit;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services.legacy;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services.domainexpander.default;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.test.common;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services.mappingprovider.default;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.view.dynamictree.model.test
diff --git a/tests/org.eclipse.emf.ecp.view.dynamictree.model.test/pom.xml b/tests/org.eclipse.emf.ecp.view.dynamictree.model.test/pom.xml
index ff7751a..3d77f56 100644
--- a/tests/org.eclipse.emf.ecp.view.dynamictree.model.test/pom.xml
+++ b/tests/org.eclipse.emf.ecp.view.dynamictree.model.test/pom.xml
@@ -6,12 +6,12 @@
 	<parent>
 		<groupId>org.eclipse.emf.ecp</groupId>
 		<artifactId>ecp-tests-parent</artifactId>
-		<version>1.16.0-SNAPSHOT</version>
+		<version>1.17.0-SNAPSHOT</version>
 		<relativePath>../../releng/org.eclipse.emf.ecp.releng.tests/</relativePath>
 	</parent>
 	<groupId>org.eclipse.emf.ecp</groupId>
 	<artifactId>org.eclipse.emf.ecp.view.dynamictree.model.test</artifactId>
-	<version>1.16.0-SNAPSHOT</version>
+	<version>1.17.0-SNAPSHOT</version>
 	<packaging>eclipse-test-plugin</packaging>
 
 	<build>
diff --git a/tests/org.eclipse.emf.ecp.view.dynamictree.model/META-INF/MANIFEST.MF b/tests/org.eclipse.emf.ecp.view.dynamictree.model/META-INF/MANIFEST.MF
index 80aaea8..986dbd3 100644
--- a/tests/org.eclipse.emf.ecp.view.dynamictree.model/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.emf.ecp.view.dynamictree.model/META-INF/MANIFEST.MF
@@ -2,21 +2,22 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Dynamic Containment Tree Model Plugin
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.dynamictree.model;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-ClassPath: .
 Bundle-Vendor: Eclipse Modeling Project
 Bundle-Localization: plugin
-Export-Package: org.eclipse.emf.ecp.view.dynamictree.model;version="1.16.0",
-  org.eclipse.emf.ecp.view.dynamictree.model.impl;version="1.16.0",
-  org.eclipse.emf.ecp.view.dynamictree.model.util;version="1.16.0"
+Export-Package: org.eclipse.emf.ecp.view.dynamictree.model;version="1.17.0",
+ org.eclipse.emf.ecp.view.dynamictree.model.impl;version="1.17.0",
+ org.eclipse.emf.ecp.view.dynamictree.model.util;version="1.17.0"
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.5.0,4.0.0)",
-  org.eclipse.emf.ecore;bundle-version="[2.5.0,3.0.0)";visibility:=reexport,
-  org.eclipse.emf.ecp.view.categorization.model;bundle-version="[1.16.0,1.17.0)";visibility:=reexport,
-  org.eclipse.emf.ecp.view.model;bundle-version="[1.16.0,1.17.0)";visibility:=reexport,
-  org.eclipse.emfforms.core.services;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.core.databinding.property;bundle-version="[1.4.0,2.0.0)",
-  org.eclipse.emf.databinding;bundle-version="[1.3.0,2.0.0)",
-  org.eclipse.emfforms.core.services.emf;bundle-version="[1.16.0,1.17.0)"
+ org.eclipse.emf.ecore;bundle-version="[2.5.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.ecp.view.categorization.model;bundle-version="[1.17.0,1.18.0]";visibility:=reexport,
+ org.eclipse.emf.ecp.view.model;bundle-version="[1.17.0,1.18.0]";visibility:=reexport,
+ org.eclipse.emfforms.core.services;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.core.databinding.property;bundle-version="[1.4.0,2.0.0)",
+ org.eclipse.emf.databinding;bundle-version="[1.3.0,2.0.0)",
+ org.eclipse.emfforms.core.services.emf;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Service-Component: OSGI-INF/dynamicContainmentTreeDMRConverter.xml
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.view.dynamictree.model
diff --git a/tests/org.eclipse.emf.ecp.view.dynamictree.model/pom.xml b/tests/org.eclipse.emf.ecp.view.dynamictree.model/pom.xml
index 0f66551..6c241d1 100644
--- a/tests/org.eclipse.emf.ecp.view.dynamictree.model/pom.xml
+++ b/tests/org.eclipse.emf.ecp.view.dynamictree.model/pom.xml
@@ -6,11 +6,11 @@
 	<parent>
 		<groupId>org.eclipse.emf.ecp</groupId>
 		<artifactId>ecp-tests-parent</artifactId>
-		<version>1.16.0-SNAPSHOT</version>
+		<version>1.17.0-SNAPSHOT</version>
 		<relativePath>../../releng/org.eclipse.emf.ecp.releng.tests/</relativePath>
 	</parent>
 
 	<artifactId>org.eclipse.emf.ecp.view.dynamictree.model</artifactId>
 	<packaging>eclipse-plugin</packaging>
-	<version>1.16.0-SNAPSHOT</version>
+	<version>1.17.0-SNAPSHOT</version>
 </project>
diff --git a/tests/org.eclipse.emf.ecp.view.dynamictree.model/src/org/eclipse/emf/ecp/view/dynamictree/model/impl/DynamicContainmentTreeDMRConverter.java b/tests/org.eclipse.emf.ecp.view.dynamictree.model/src/org/eclipse/emf/ecp/view/dynamictree/model/impl/DynamicContainmentTreeDMRConverter.java
index a4bac8d..4097acf 100644
--- a/tests/org.eclipse.emf.ecp.view.dynamictree.model/src/org/eclipse/emf/ecp/view/dynamictree/model/impl/DynamicContainmentTreeDMRConverter.java
+++ b/tests/org.eclipse.emf.ecp.view.dynamictree.model/src/org/eclipse/emf/ecp/view/dynamictree/model/impl/DynamicContainmentTreeDMRConverter.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2011-2015 EclipseSource Muenchen GmbH and others.
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH and others.
  *
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
@@ -8,6 +8,7 @@
  *
  * Contributors:
  * Lucas Koehler - initial API and implementation
+ * Christian W. Damus - bug 533522
  ******************************************************************************/
 package org.eclipse.emf.ecp.view.dynamictree.model.impl;
 
@@ -78,7 +79,10 @@
 	 */
 	protected final void deactivate(BundleContext bundleContext) {
 		unsetEMFFormsDatabinding();
-		bundleContext.ungetService(databindingServiceReference);
+		if (databindingServiceReference != null) {
+			bundleContext.ungetService(databindingServiceReference);
+			databindingServiceReference = null;
+		}
 	}
 
 	/**
diff --git a/tests/org.eclipse.emf.ecp.view.dynamictree.ui.swt/META-INF/MANIFEST.MF b/tests/org.eclipse.emf.ecp.view.dynamictree.ui.swt/META-INF/MANIFEST.MF
index f054772..612824a 100644
--- a/tests/org.eclipse.emf.ecp.view.dynamictree.ui.swt/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.emf.ecp.view.dynamictree.ui.swt/META-INF/MANIFEST.MF
@@ -2,20 +2,21 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: View Model Dynamic Tree SWT UI
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.dynamictree.ui.swt;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emf.ecp.view.dynamictree.ui.swt;version="1.16.0";x-internal:=true
+Export-Package: org.eclipse.emf.ecp.view.dynamictree.ui.swt;version="1.17.0";x-internal:=true
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.7.0,4.0.0)",
-  org.eclipse.emf.ecp.view.dynamictree.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.ui.view.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.ui;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.edit;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.core.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.swt.core;bundle-version="[1.16.0,1.17.0)"
+ org.eclipse.emf.ecp.view.dynamictree.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.ui.view.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.ui;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.edit;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.core.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.swt.core;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
-Import-Package: org.eclipse.emfforms.spi.common.report;version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.spi.core.services.databinding;version="[1.16.0,1.17.0)",
-  org.eclipse.jface.layout;version="0.0.0",
-  org.eclipse.swt;version="0.0.0",
-  org.eclipse.swt.widgets;version="0.0.0"
+Import-Package: org.eclipse.emfforms.spi.common.report;version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.spi.core.services.databinding;version="[1.17.0,1.18.0]",
+ org.eclipse.jface.layout;version="0.0.0",
+ org.eclipse.swt;version="0.0.0",
+ org.eclipse.swt.widgets;version="0.0.0"
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.view.dynamictree.ui.swt
diff --git a/tests/org.eclipse.emf.ecp.view.dynamictree.ui.swt/pom.xml b/tests/org.eclipse.emf.ecp.view.dynamictree.ui.swt/pom.xml
index 0863388..a0180f0 100644
--- a/tests/org.eclipse.emf.ecp.view.dynamictree.ui.swt/pom.xml
+++ b/tests/org.eclipse.emf.ecp.view.dynamictree.ui.swt/pom.xml
@@ -7,11 +7,11 @@
 	<parent>

 		<groupId>org.eclipse.emf.ecp</groupId>

 		<artifactId>ecp-tests-parent</artifactId>

-		<version>1.16.0-SNAPSHOT</version>

+		<version>1.17.0-SNAPSHOT</version>

 		<relativePath>../../releng/org.eclipse.emf.ecp.releng.tests/</relativePath>

 	</parent>

 

   <artifactId>org.eclipse.emf.ecp.view.dynamictree.ui.swt</artifactId>

   <packaging>eclipse-plugin</packaging>

-  <version>1.16.0-SNAPSHOT</version>

+  <version>1.17.0-SNAPSHOT</version>

 </project>

diff --git a/tests/org.eclipse.emf.ecp.view.dynamictree.ui.swt/src/org/eclipse/emf/ecp/view/dynamictree/ui/swt/SWTDynamicContainmentItemRenderer.java b/tests/org.eclipse.emf.ecp.view.dynamictree.ui.swt/src/org/eclipse/emf/ecp/view/dynamictree/ui/swt/SWTDynamicContainmentItemRenderer.java
index 405501d..72dae3d 100644
--- a/tests/org.eclipse.emf.ecp.view.dynamictree.ui.swt/src/org/eclipse/emf/ecp/view/dynamictree/ui/swt/SWTDynamicContainmentItemRenderer.java
+++ b/tests/org.eclipse.emf.ecp.view.dynamictree.ui.swt/src/org/eclipse/emf/ecp/view/dynamictree/ui/swt/SWTDynamicContainmentItemRenderer.java
@@ -32,18 +32,18 @@
  */
 public class SWTDynamicContainmentItemRenderer extends ContainerSWTRenderer<DynamicContainmentItem> {
 
-	private static final EMFFormsDatabinding emfFormsDatabinding;
-	private static final EMFFormsRendererFactory emfFormsRendererFactory;
+	private static final EMFFormsDatabinding EMFFORMS_DATABINDING;
+	private static final EMFFormsRendererFactory EMFFORMS_RENDERER_FACTORY;
 
 	static {
 		final BundleContext bundleContext = FrameworkUtil.getBundle(SWTDynamicContainmentTreeRenderer.class)
 			.getBundleContext();
 		final ServiceReference<EMFFormsDatabinding> emfFormsDatabindingServiceReference = bundleContext
 			.getServiceReference(EMFFormsDatabinding.class);
-		emfFormsDatabinding = bundleContext.getService(emfFormsDatabindingServiceReference);
+		EMFFORMS_DATABINDING = bundleContext.getService(emfFormsDatabindingServiceReference);
 		final ServiceReference<EMFFormsRendererFactory> emfFormsLabelProviderServiceReference = bundleContext
 			.getServiceReference(EMFFormsRendererFactory.class);
-		emfFormsRendererFactory = bundleContext.getService(emfFormsLabelProviderServiceReference);
+		EMFFORMS_RENDERER_FACTORY = bundleContext.getService(emfFormsLabelProviderServiceReference);
 	}
 
 	/**
@@ -53,7 +53,7 @@
 	 */
 	public SWTDynamicContainmentItemRenderer(DynamicContainmentItem vElement, ViewModelContext viewContext,
 		ReportService reportService) {
-		super(vElement, viewContext, reportService, emfFormsRendererFactory, emfFormsDatabinding);
+		super(vElement, viewContext, reportService, EMFFORMS_RENDERER_FACTORY, EMFFORMS_DATABINDING);
 		// TODO Auto-generated constructor stub
 	}
 
diff --git a/tests/org.eclipse.emf.ecp.view.dynamictree.ui.swt/src/org/eclipse/emf/ecp/view/dynamictree/ui/swt/SWTDynamicContainmentTreeRenderer.java b/tests/org.eclipse.emf.ecp.view.dynamictree.ui.swt/src/org/eclipse/emf/ecp/view/dynamictree/ui/swt/SWTDynamicContainmentTreeRenderer.java
index f6f4461..ba08df7 100644
--- a/tests/org.eclipse.emf.ecp.view.dynamictree.ui.swt/src/org/eclipse/emf/ecp/view/dynamictree/ui/swt/SWTDynamicContainmentTreeRenderer.java
+++ b/tests/org.eclipse.emf.ecp.view.dynamictree.ui.swt/src/org/eclipse/emf/ecp/view/dynamictree/ui/swt/SWTDynamicContainmentTreeRenderer.java
@@ -32,18 +32,18 @@
  */
 public class SWTDynamicContainmentTreeRenderer extends ContainerSWTRenderer<DynamicContainmentTree> {
 
-	private static final EMFFormsDatabinding emfFormsDatabinding;
-	private static final EMFFormsRendererFactory emfFormsRendererFactory;
+	private static final EMFFormsDatabinding EMFFORMS_DATABINDING;
+	private static final EMFFormsRendererFactory EMFFORMS_RENDERER_FACTORY;
 
 	static {
 		final BundleContext bundleContext = FrameworkUtil.getBundle(SWTDynamicContainmentTreeRenderer.class)
 			.getBundleContext();
 		final ServiceReference<EMFFormsDatabinding> emfFormsDatabindingServiceReference = bundleContext
 			.getServiceReference(EMFFormsDatabinding.class);
-		emfFormsDatabinding = bundleContext.getService(emfFormsDatabindingServiceReference);
+		EMFFORMS_DATABINDING = bundleContext.getService(emfFormsDatabindingServiceReference);
 		final ServiceReference<EMFFormsRendererFactory> emfFormsLabelProviderServiceReference = bundleContext
 			.getServiceReference(EMFFormsRendererFactory.class);
-		emfFormsRendererFactory = bundleContext.getService(emfFormsLabelProviderServiceReference);
+		EMFFORMS_RENDERER_FACTORY = bundleContext.getService(emfFormsLabelProviderServiceReference);
 	}
 
 	/**
@@ -53,7 +53,7 @@
 	 */
 	public SWTDynamicContainmentTreeRenderer(DynamicContainmentTree vElement, ViewModelContext viewContext,
 		ReportService reportService) {
-		super(vElement, viewContext, reportService, emfFormsRendererFactory, emfFormsDatabinding);
+		super(vElement, viewContext, reportService, EMFFORMS_RENDERER_FACTORY, EMFFORMS_DATABINDING);
 	}
 
 	/**
diff --git a/tests/org.eclipse.emf.ecp.view.dynamictree.ui/META-INF/MANIFEST.MF b/tests/org.eclipse.emf.ecp.view.dynamictree.ui/META-INF/MANIFEST.MF
index f290027..695ace6 100644
--- a/tests/org.eclipse.emf.ecp.view.dynamictree.ui/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.emf.ecp.view.dynamictree.ui/META-INF/MANIFEST.MF
@@ -2,14 +2,15 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: View Model Dynamic Tree UI
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.dynamictree.ui;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emf.ecp.view.dynamictree.ui;version="1.16.0";x-internal:=true
-Require-Bundle: org.eclipse.emf.ecp.ui.view;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.dynamictree.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.edit;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.core.runtime;bundle-version="[3.9.0,4.0.0)",
-  org.eclipse.emf.ecp.view.categorization.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.edit;bundle-version="[2.8.0,3.0.0)"
+Export-Package: org.eclipse.emf.ecp.view.dynamictree.ui;version="1.17.0";x-internal:=true
+Require-Bundle: org.eclipse.emf.ecp.ui.view;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.dynamictree.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.edit;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.core.runtime;bundle-version="[3.9.0,4.0.0)",
+ org.eclipse.emf.ecp.view.categorization.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.edit;bundle-version="[2.8.0,3.0.0)"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.view.dynamictree.ui
diff --git a/tests/org.eclipse.emf.ecp.view.dynamictree.ui/pom.xml b/tests/org.eclipse.emf.ecp.view.dynamictree.ui/pom.xml
index 5d88976..daf2cb1 100644
--- a/tests/org.eclipse.emf.ecp.view.dynamictree.ui/pom.xml
+++ b/tests/org.eclipse.emf.ecp.view.dynamictree.ui/pom.xml
@@ -7,11 +7,11 @@
 	<parent>

 		<groupId>org.eclipse.emf.ecp</groupId>

 		<artifactId>ecp-tests-parent</artifactId>

-		<version>1.16.0-SNAPSHOT</version>

+		<version>1.17.0-SNAPSHOT</version>

 		<relativePath>../../releng/org.eclipse.emf.ecp.releng.tests/</relativePath>

 	</parent>

 

   <artifactId>org.eclipse.emf.ecp.view.dynamictree.ui</artifactId>

   <packaging>eclipse-plugin</packaging>

-  <version>1.16.0-SNAPSHOT</version>

+  <version>1.17.0-SNAPSHOT</version>

 </project>

diff --git a/tests/org.eclipse.emf.ecp.view.edapt.test/META-INF/MANIFEST.MF b/tests/org.eclipse.emf.ecp.view.edapt.test/META-INF/MANIFEST.MF
index 7350bcc..77abcf0 100644
--- a/tests/org.eclipse.emf.ecp.view.edapt.test/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.emf.ecp.view.edapt.test/META-INF/MANIFEST.MF
@@ -2,29 +2,30 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.edapt.test;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-ClassPath: .
 Bundle-Vendor: %providerName
-Fragment-Host: org.eclipse.emf.ecp.view.edapt;bundle-version="[1.16.0,1.17.0)"
+Fragment-Host: org.eclipse.emf.ecp.view.edapt;bundle-version="[1.17.0,1.18.0]"
 Bundle-Localization: plugin
-Export-Package: org.eclipse.emf.ecp.view.edapt.test;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.view.edapt.test._140to170;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.view.edapt.test._160to170;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.view.edapt.test.model;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.view.edapt.test.model.impl;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.view.edapt.test.model.util;version="1.16.0";x-internal:=true
+Export-Package: org.eclipse.emf.ecp.view.edapt.test;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.edapt.test._140to1170;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.edapt.test._160to1170;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.edapt.test.model;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.edapt.test.model.impl;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.edapt.test.model.util;version="1.17.0";x-internal:=true
 Require-Bundle: org.junit;bundle-version="[4.11.0,5.0.0)",
-  org.eclipse.emf.ecp.view.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.label.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.emfstore.examplemodel;bundle-version="[1.4.0,2.0.0)",
-  org.eclipse.emf.ecp.view.horizontal.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.table.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.vertical.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.group.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.categorization.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.custom.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.rule.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.core.runtime;bundle-version="[3.7.0,4.0.0)",
-  org.eclipse.emf.ecore;bundle-version="[2.7.0,3.0.0)";visibility:=reexport
+ org.eclipse.emf.ecp.view.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.label.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.emfstore.examplemodel;bundle-version="[1.4.0,2.0.0)",
+ org.eclipse.emf.ecp.view.horizontal.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.table.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.vertical.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.group.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.categorization.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.custom.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.rule.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.core.runtime;bundle-version="[3.7.0,4.0.0)",
+ org.eclipse.emf.ecore;bundle-version="[2.7.0,3.0.0)";visibility:=reexport
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.view.edapt.test
diff --git a/tests/org.eclipse.emf.ecp.view.edapt.test/MigrationTest.launch b/tests/org.eclipse.emf.ecp.view.edapt.test/MigrationTest.launch
index d86c5c0..8e4fd56 100644
--- a/tests/org.eclipse.emf.ecp.view.edapt.test/MigrationTest.launch
+++ b/tests/org.eclipse.emf.ecp.view.edapt.test/MigrationTest.launch
@@ -32,8 +32,8 @@
 <stringAttribute key="pde.version" value="3.3"/>
 <stringAttribute key="product" value="org.eclipse.platform.ide"/>
 <booleanAttribute key="run_in_ui_thread" value="true"/>
-<stringAttribute key="selected_target_plugins" value="com.ibm.icu@default:default,javax.annotation@default:default,javax.inject@default:default,javax.xml@default:default,lpg.runtime.java@default:default,org.apache.batik.css@default:default,org.apache.batik.util.gui@default:default,org.apache.batik.util@default:default,org.apache.commons.codec@default:default,org.apache.commons.jxpath@default:default,org.apache.commons.logging@default:default,org.eclipse.ant.core@default:default,org.eclipse.compare.core@default:default,org.eclipse.core.commands@default:default,org.eclipse.core.contenttype@default:default,org.eclipse.core.databinding.observable@default:default,org.eclipse.core.databinding.property@default:default,org.eclipse.core.databinding@default:default,org.eclipse.core.expressions@default:default,org.eclipse.core.filesystem.java7@default:false,org.eclipse.core.filesystem.linux.x86_64@default:default,org.eclipse.core.filesystem@default:default,org.eclipse.core.jobs@default:default,org.eclipse.core.resources@default:default,org.eclipse.core.runtime.compatibility.registry@default:false,org.eclipse.core.runtime.compatibility@default:default,org.eclipse.core.runtime@default:true,org.eclipse.core.variables@default:default,org.eclipse.e4.core.commands@default:default,org.eclipse.e4.core.contexts@default:default,org.eclipse.e4.core.di.annotations@default:default,org.eclipse.e4.core.di.extensions@default:default,org.eclipse.e4.core.di@default:default,org.eclipse.e4.core.services@default:default,org.eclipse.e4.emf.xpath@default:default,org.eclipse.e4.ui.bindings@default:default,org.eclipse.e4.ui.css.core@default:default,org.eclipse.e4.ui.css.swt.theme@default:default,org.eclipse.e4.ui.css.swt@default:default,org.eclipse.e4.ui.di@default:default,org.eclipse.e4.ui.model.workbench@default:default,org.eclipse.e4.ui.services@default:default,org.eclipse.e4.ui.swt.gtk@default:default,org.eclipse.e4.ui.widgets@default:default,org.eclipse.e4.ui.workbench.addons.swt@default:default,org.eclipse.e4.ui.workbench.renderers.swt@default:default,org.eclipse.e4.ui.workbench.swt@default:default,org.eclipse.e4.ui.workbench3@default:default,org.eclipse.e4.ui.workbench@default:default,org.eclipse.emf.cdo.ecore.retrofit@default:false,org.eclipse.emf.common.ui@default:default,org.eclipse.emf.common@default:default,org.eclipse.emf.databinding.edit@default:default,org.eclipse.emf.databinding@default:default,org.eclipse.emf.ecore.change@default:default,org.eclipse.emf.ecore.xmi@default:default,org.eclipse.emf.ecore@default:default,org.eclipse.emf.edapt.common@default:default,org.eclipse.emf.edapt.declaration@default:default,org.eclipse.emf.edapt.history@default:default,org.eclipse.emf.edapt.migration@default:default,org.eclipse.emf.edit.ui@default:default,org.eclipse.emf.edit@default:default,org.eclipse.emf.emfstore.client@default:default,org.eclipse.emf.emfstore.common.model@default:default,org.eclipse.emf.emfstore.common@default:default,org.eclipse.emf.emfstore.examplemodel.edit@default:default,org.eclipse.emf.emfstore.examplemodel@default:default,org.eclipse.emf.emfstore.migration@default:default,org.eclipse.emf.emfstore.server.model@default:default,org.eclipse.emf.emfstore.server@default:default,org.eclipse.equinox.app@default:default,org.eclipse.equinox.common@2:true,org.eclipse.equinox.ds@1:true,org.eclipse.equinox.preferences@default:default,org.eclipse.equinox.region@default:false,org.eclipse.equinox.registry@default:default,org.eclipse.equinox.transforms.hook@default:false,org.eclipse.equinox.util@default:default,org.eclipse.equinox.weaving.hook@default:false,org.eclipse.help@default:default,org.eclipse.jface.databinding@default:default,org.eclipse.jface@default:default,org.eclipse.net4j.util@default:default,org.eclipse.ocl.common@default:default,org.eclipse.ocl.ecore@default:default,org.eclipse.ocl@default:default,org.eclipse.osgi.compatibility.state@default:false,org.eclipse.osgi.services@default:default,org.eclipse.osgi@-1:true,org.eclipse.swt.gtk.linux.x86_64@default:default,org.eclipse.swt@default:default,org.eclipse.team.core@default:default,org.eclipse.ui.forms@default:default,org.eclipse.ui.trace@default:default,org.eclipse.ui.views@default:default,org.eclipse.ui.workbench@default:default,org.eclipse.ui@default:default,org.eclipse.update.configurator@3:true,org.hamcrest.core@default:default,org.hamcrest.library@default:default,org.junit@default:default,org.mockito.mockito-all@default:default,org.w3c.css.sac@default:default,org.w3c.dom.events@default:default,org.w3c.dom.smil*1.0.1.v200903091627@default:default,org.w3c.dom.svg@default:default"/>
-<stringAttribute key="selected_workspace_plugins" value="org.eclipse.emf.ecp.common.test@default:false,org.eclipse.emf.ecp.common.ui@default:default,org.eclipse.emf.ecp.common@default:default,org.eclipse.emf.ecp.core.test@default:false,org.eclipse.emf.ecp.core@default:default,org.eclipse.emf.ecp.edit.swt.test@default:false,org.eclipse.emf.ecp.edit.swt@default:default,org.eclipse.emf.ecp.edit@default:default,org.eclipse.emf.ecp.editor.e3@default:default,org.eclipse.emf.ecp.emfstore.core@default:default,org.eclipse.emf.ecp.explorereditorbridge@default:default,org.eclipse.emf.ecp.makeithappen.model@default:default,org.eclipse.emf.ecp.test.common@default:default,org.eclipse.emf.ecp.test.model@default:default,org.eclipse.emf.ecp.ui.view.swt.test@default:false,org.eclipse.emf.ecp.ui.view.swt@default:default,org.eclipse.emf.ecp.ui.view.test@default:default,org.eclipse.emf.ecp.ui.view@default:default,org.eclipse.emf.ecp.ui@default:default,org.eclipse.emf.ecp.view.categorization.model@default:default,org.eclipse.emf.ecp.view.context.tests@default:default,org.eclipse.emf.ecp.view.context@default:default,org.eclipse.emf.ecp.view.core.swt.tests@default:false,org.eclipse.emf.ecp.view.core.swt@default:default,org.eclipse.emf.ecp.view.custom.model@default:default,org.eclipse.emf.ecp.view.edapt.test@default:false,org.eclipse.emf.ecp.view.edapt.util.test@default:false,org.eclipse.emf.ecp.view.edapt@default:default,org.eclipse.emf.ecp.view.group.model@default:default,org.eclipse.emf.ecp.view.horizontal.model@default:default,org.eclipse.emf.ecp.view.label.model@default:default,org.eclipse.emf.ecp.view.migrator@default:default,org.eclipse.emf.ecp.view.model.common.test@default:false,org.eclipse.emf.ecp.view.model.common@default:default,org.eclipse.emf.ecp.view.model.edapt@default:default,org.eclipse.emf.ecp.view.model.provider.generator@default:default,org.eclipse.emf.ecp.view.model.provider.xmi.test@default:false,org.eclipse.emf.ecp.view.model.provider.xmi@default:default,org.eclipse.emf.ecp.view.model.test@default:false,org.eclipse.emf.ecp.view.model@default:default,org.eclipse.emf.ecp.view.rule.model@default:default,org.eclipse.emf.ecp.view.swt.layout@default:default,org.eclipse.emf.ecp.view.table.edapt@default:default,org.eclipse.emf.ecp.view.table.model.test@default:false,org.eclipse.emf.ecp.view.table.model@default:default,org.eclipse.emf.ecp.view.template.model@default:default,org.eclipse.emf.ecp.view.test.common.swt@default:default,org.eclipse.emf.ecp.view.test.common@default:default,org.eclipse.emf.ecp.view.util.swt@default:default,org.eclipse.emf.ecp.view.validation.test@default:false,org.eclipse.emf.ecp.view.validation@default:default,org.eclipse.emf.ecp.view.vertical.model@default:default,org.eclipse.emf.rap.edit.ui.minimal@default:default,org.eclipse.emfforms.common.tests@default:false,org.eclipse.emfforms.common@default:default,org.eclipse.emfforms.core.services.databinding.testmodel@default:default,org.eclipse.emfforms.core.services.domainexpander.default.tests@default:default,org.eclipse.emfforms.core.services.domainexpander.default@default:default,org.eclipse.emfforms.core.services.domainexpander.table@default:default,org.eclipse.emfforms.core.services.editsupport@default:default,org.eclipse.emfforms.core.services.emf.tests@default:default,org.eclipse.emfforms.core.services.emf@default:default,org.eclipse.emfforms.core.services.emfspecificservice@default:default,org.eclipse.emfforms.core.services.legacy.tests@default:default,org.eclipse.emfforms.core.services.legacy@default:default,org.eclipse.emfforms.core.services.mappingprovider.default@default:default,org.eclipse.emfforms.core.services.mappingprovider.table@default:default,org.eclipse.emfforms.core.services.structuralchange.default@default:default,org.eclipse.emfforms.core.services.structuralchange@default:default,org.eclipse.emfforms.core.services.tests@default:default,org.eclipse.emfforms.core.services@default:default,org.eclipse.emfforms.localization.tests@default:false,org.eclipse.emfforms.localization@default:default,org.eclipse.emfforms.swt.core.di@default:default,org.eclipse.emfforms.swt.core.tests@default:false,org.eclipse.emfforms.swt.core@default:default"/>
+<stringAttribute key="selected_target_plugins" value="com.ibm.icu@default:default,javax.annotation@default:default,javax.inject@default:default,javax.xml@default:default,lpg.runtime.java@default:default,org.apache.batik.css*1.8.0.v20170214-1941@default:default,org.apache.batik.util*1.8.0.v20170214-1941@default:default,org.apache.batik.util.gui*1.8.0.v20170214-1941@default:default,org.apache.commons.codec@default:default,org.apache.commons.jxpath@default:default,org.apache.commons.logging@default:default,org.apache.felix.gogo.command@default:default,org.apache.felix.gogo.runtime@default:default,org.apache.felix.scr@default:default,org.eclipse.ant.core@default:default,org.eclipse.compare.core@default:default,org.eclipse.core.commands@default:default,org.eclipse.core.contenttype@default:default,org.eclipse.core.databinding.observable@default:default,org.eclipse.core.databinding.property@default:default,org.eclipse.core.databinding@default:default,org.eclipse.core.expressions@default:default,org.eclipse.core.filesystem.linux.x86_64@default:false,org.eclipse.core.filesystem@default:default,org.eclipse.core.jobs@default:default,org.eclipse.core.resources@default:default,org.eclipse.core.runtime@default:true,org.eclipse.core.variables@default:default,org.eclipse.e4.core.commands@default:default,org.eclipse.e4.core.contexts@default:default,org.eclipse.e4.core.di.annotations@default:default,org.eclipse.e4.core.di.extensions.supplier@default:default,org.eclipse.e4.core.di.extensions@default:default,org.eclipse.e4.core.di@default:default,org.eclipse.e4.core.services@default:default,org.eclipse.e4.emf.xpath@default:default,org.eclipse.e4.ui.bindings@default:default,org.eclipse.e4.ui.css.core@default:default,org.eclipse.e4.ui.css.swt.theme@default:default,org.eclipse.e4.ui.css.swt@default:default,org.eclipse.e4.ui.di@default:default,org.eclipse.e4.ui.model.workbench@default:default,org.eclipse.e4.ui.services@default:default,org.eclipse.e4.ui.swt.gtk@default:false,org.eclipse.e4.ui.widgets@default:default,org.eclipse.e4.ui.workbench.addons.swt@default:default,org.eclipse.e4.ui.workbench.renderers.swt@default:default,org.eclipse.e4.ui.workbench.swt@default:default,org.eclipse.e4.ui.workbench3@default:default,org.eclipse.e4.ui.workbench@default:default,org.eclipse.emf.common.ui@default:default,org.eclipse.emf.common@default:default,org.eclipse.emf.databinding.edit@default:default,org.eclipse.emf.databinding@default:default,org.eclipse.emf.ecore.change@default:default,org.eclipse.emf.ecore.xmi@default:default,org.eclipse.emf.ecore@default:default,org.eclipse.emf.ecp.view.model@default:default,org.eclipse.emf.edit.ui@default:default,org.eclipse.emf.edit@default:default,org.eclipse.emf.emfstore.client@default:default,org.eclipse.emf.emfstore.common.model@default:default,org.eclipse.emf.emfstore.common@default:default,org.eclipse.emf.emfstore.examplemodel.edit@default:default,org.eclipse.emf.emfstore.examplemodel@default:default,org.eclipse.emf.emfstore.migration@default:default,org.eclipse.emf.emfstore.server.model@default:default,org.eclipse.emf.emfstore.server@default:default,org.eclipse.equinox.app@default:default,org.eclipse.equinox.common@2:true,org.eclipse.equinox.ds@1:true,org.eclipse.equinox.preferences@default:default,org.eclipse.equinox.registry@default:default,org.eclipse.equinox.util@default:default,org.eclipse.help@default:default,org.eclipse.jface.databinding@default:default,org.eclipse.jface@default:default,org.eclipse.net4j.util@default:default,org.eclipse.ocl.common@default:default,org.eclipse.ocl.ecore@default:default,org.eclipse.ocl@default:default,org.eclipse.osgi.compatibility.state@default:false,org.eclipse.osgi.services@default:default,org.eclipse.osgi.util@default:default,org.eclipse.osgi@-1:true,org.eclipse.swt.gtk.linux.x86_64@default:false,org.eclipse.swt@default:default,org.eclipse.team.core@default:default,org.eclipse.ui.forms@default:default,org.eclipse.ui.trace@default:default,org.eclipse.ui.views@default:default,org.eclipse.ui.workbench@default:default,org.eclipse.ui@default:default,org.eclipse.update.configurator@3:true,org.hamcrest.core@default:default,org.junit@default:default,org.w3c.css.sac@default:default,org.w3c.dom.events@default:default,org.w3c.dom.smil@default:default,org.w3c.dom.svg@default:default"/>
+<stringAttribute key="selected_workspace_plugins" value="org.eclipse.emf.ecp.common.test@default:false,org.eclipse.emf.ecp.common@default:default,org.eclipse.emf.ecp.edit@default:default,org.eclipse.emf.ecp.view.categorization.model@default:default,org.eclipse.emf.ecp.view.context@default:default,org.eclipse.emf.ecp.view.custom.model@default:default,org.eclipse.emf.ecp.view.edapt.test@default:false,org.eclipse.emf.ecp.view.edapt.util.test@default:false,org.eclipse.emf.ecp.view.edapt@default:default,org.eclipse.emf.ecp.view.group.model@default:default,org.eclipse.emf.ecp.view.horizontal.model@default:default,org.eclipse.emf.ecp.view.label.model@default:default,org.eclipse.emf.ecp.view.migrator@default:default,org.eclipse.emf.ecp.view.model.common@default:default,org.eclipse.emf.ecp.view.model.edapt@default:default,org.eclipse.emf.ecp.view.model@default:default,org.eclipse.emf.ecp.view.rule.model@default:default,org.eclipse.emf.ecp.view.table.edapt@default:default,org.eclipse.emf.ecp.view.table.model@default:default,org.eclipse.emf.ecp.view.template.model.test@default:false,org.eclipse.emf.ecp.view.template.model@default:default,org.eclipse.emf.ecp.view.vertical.model@default:default,org.eclipse.emf.edapt.common@default:default,org.eclipse.emf.edapt.declaration@default:default,org.eclipse.emf.edapt.history@default:default,org.eclipse.emf.edapt.migration@default:default,org.eclipse.emfforms.common@default:default,org.eclipse.emfforms.core.services.emf@default:default,org.eclipse.emfforms.core.services.emfspecificservice@default:default,org.eclipse.emfforms.core.services@default:default,org.eclipse.emfforms.localization@default:default"/>
 <booleanAttribute key="show_selected_only" value="false"/>
 <booleanAttribute key="tracing" value="false"/>
 <booleanAttribute key="useCustomFeatures" value="false"/>
diff --git a/tests/org.eclipse.emf.ecp.view.edapt.test/pom.xml b/tests/org.eclipse.emf.ecp.view.edapt.test/pom.xml
index 1b2d99a..9c54f3e 100644
--- a/tests/org.eclipse.emf.ecp.view.edapt.test/pom.xml
+++ b/tests/org.eclipse.emf.ecp.view.edapt.test/pom.xml
@@ -6,12 +6,12 @@
 <parent>
 		<groupId>org.eclipse.emf.ecp</groupId>
 		<artifactId>ecp-tests-parent</artifactId>
-		<version>1.16.0-SNAPSHOT</version>
+		<version>1.17.0-SNAPSHOT</version>
 		<relativePath>../../releng/org.eclipse.emf.ecp.releng.tests/</relativePath>
   </parent>
 	<groupId>org.eclipse.emf.ecp</groupId>
 	<artifactId>org.eclipse.emf.ecp.view.edapt.test</artifactId>
-	<version>1.16.0-SNAPSHOT</version>
+	<version>1.17.0-SNAPSHOT</version>
 	<packaging>eclipse-test-plugin</packaging>
 
 	<build>
diff --git a/tests/org.eclipse.emf.ecp.view.edapt.test/src/org/eclipse/emf/ecp/view/edapt/test/AllTests.java b/tests/org.eclipse.emf.ecp.view.edapt.test/src/org/eclipse/emf/ecp/view/edapt/test/AllTests.java
index 93b380b..cd6313b 100644
--- a/tests/org.eclipse.emf.ecp.view.edapt.test/src/org/eclipse/emf/ecp/view/edapt/test/AllTests.java
+++ b/tests/org.eclipse.emf.ecp.view.edapt.test/src/org/eclipse/emf/ecp/view/edapt/test/AllTests.java
@@ -11,15 +11,15 @@
  ******************************************************************************/
 package org.eclipse.emf.ecp.view.edapt.test;
 
-import org.eclipse.emf.ecp.view.edapt.test._140to170.All140to170Tests;
-import org.eclipse.emf.ecp.view.edapt.test._160to170.All160to170Tests;
+import org.eclipse.emf.ecp.view.edapt.test._140to1170.All140to1170Tests;
+import org.eclipse.emf.ecp.view.edapt.test._160to1170.All160to1170Tests;
 import org.junit.runner.RunWith;
 import org.junit.runners.Suite;
 
 @RunWith(Suite.class)
 @Suite.SuiteClasses({
-	All140to170Tests.class,
-	All160to170Tests.class
+	All140to1170Tests.class,
+	All160to1170Tests.class
 })
 public class AllTests {
 
diff --git a/tests/org.eclipse.emf.ecp.view.edapt.test/src/org/eclipse/emf/ecp/view/edapt/test/_140to1170/All140to1170Tests.java b/tests/org.eclipse.emf.ecp.view.edapt.test/src/org/eclipse/emf/ecp/view/edapt/test/_140to1170/All140to1170Tests.java
new file mode 100644
index 0000000..be871de
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.view.edapt.test/src/org/eclipse/emf/ecp/view/edapt/test/_140to1170/All140to1170Tests.java
@@ -0,0 +1,29 @@
+/*******************************************************************************
+ * Copyright (c) 2011-2014 EclipseSource Muenchen GmbH 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:
+ * jfaltermeier - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.emf.ecp.view.edapt.test._140to1170;
+
+import org.junit.runner.RunWith;
+import org.junit.runners.Suite;
+
+/**
+ * @author jfaltermeier
+ *
+ */
+@RunWith(Suite.class)
+@Suite.SuiteClasses({
+	Table_PTest.class,
+	TableNewDMROldNS_PTest.class,
+	EmptyTableWithUUID_PTest.class
+})
+public class All140to1170Tests {
+
+}
diff --git a/tests/org.eclipse.emf.ecp.view.edapt.test/src/org/eclipse/emf/ecp/view/edapt/test/_140to1170/EmptyTableWithUUID_PTest.java b/tests/org.eclipse.emf.ecp.view.edapt.test/src/org/eclipse/emf/ecp/view/edapt/test/_140to1170/EmptyTableWithUUID_PTest.java
new file mode 100644
index 0000000..39df9c8
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.view.edapt.test/src/org/eclipse/emf/ecp/view/edapt/test/_140to1170/EmptyTableWithUUID_PTest.java
@@ -0,0 +1,59 @@
+/*******************************************************************************
+ * Copyright (c) 2011-2015 EclipseSource Muenchen GmbH 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:
+ * jfaltermeier - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.emf.ecp.view.edapt.test._140to1170;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+import org.eclipse.emf.ecore.xmi.XMIResource;
+import org.eclipse.emf.ecp.view.edapt.test.AbstractMigrationTest;
+import org.eclipse.emf.ecp.view.spi.model.VView;
+import org.eclipse.emf.ecp.view.spi.table.model.VTableControl;
+
+/**
+ * Checks whether uuids are preserved during migration
+ *
+ * @author jfaltermeier
+ *
+ */
+public class EmptyTableWithUUID_PTest extends AbstractMigrationTest {
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.emf.ecp.view.edapt.test.AbstractMigrationTest#performTest()
+	 */
+	@Override
+	// BEGIN SUPRESS CATCH EXCEPTION
+	protected void performTest() throws Exception {// END SUPRESS CATCH EXCEPTION
+		assertFalse(getMigrator().checkMigration(getURI()));
+		getMigrator().performMigration(getURI());
+		final VView view = getMigratedView();
+		assertEquals(1, view.getChildren().size());
+		assertTrue(VTableControl.class.isInstance(view.getChildren().get(0)));
+		final VTableControl tableControl = VTableControl.class.cast(view.getChildren().get(0));
+		assertEquals("_bfW9gBsWEeWtk5zWlGll4Q", XMIResource.class.cast(view.eResource()).getID(view));
+		assertEquals("_bfW9gRsWEeWtk5zWlGll4Q", XMIResource.class.cast(view.eResource()).getID(tableControl));
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.emf.ecp.view.edapt.test.AbstractMigrationTest#getPath()
+	 */
+	@Override
+	protected String getPath() {
+		return "140/EmptyTableWithUUID.view";
+	}
+
+}
diff --git a/tests/org.eclipse.emf.ecp.view.edapt.test/src/org/eclipse/emf/ecp/view/edapt/test/_140to1170/TableNewDMROldNS_PTest.java b/tests/org.eclipse.emf.ecp.view.edapt.test/src/org/eclipse/emf/ecp/view/edapt/test/_140to1170/TableNewDMROldNS_PTest.java
new file mode 100644
index 0000000..8763fc9
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.view.edapt.test/src/org/eclipse/emf/ecp/view/edapt/test/_140to1170/TableNewDMROldNS_PTest.java
@@ -0,0 +1,80 @@
+/*******************************************************************************
+ * Copyright (c) 2011-2014 EclipseSource Muenchen GmbH 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:
+ * jfaltermeier - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.emf.ecp.view.edapt.test._140to1170;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertSame;
+import static org.junit.Assert.assertTrue;
+
+import org.eclipse.emf.common.util.TreeIterator;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecp.view.edapt.test.AbstractMigrationTest;
+import org.eclipse.emf.ecp.view.spi.model.VFeaturePathDomainModelReference;
+import org.eclipse.emf.ecp.view.spi.model.VView;
+import org.eclipse.emf.ecp.view.spi.table.model.VTableControl;
+import org.eclipse.emf.ecp.view.spi.table.model.VTableDomainModelReference;
+import org.eclipse.emf.emfstore.bowling.BowlingPackage;
+
+/**
+ * @author jfaltermeier
+ *
+ */
+public class TableNewDMROldNS_PTest extends AbstractMigrationTest {
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.emf.ecp.view.edapt.test.AbstractMigrationTest#performTest()
+	 */
+	@Override
+	// BEGIN SUPRESS CATCH EXCEPTION
+	protected void performTest() throws Exception {// END SUPRESS CATCH EXCEPTION
+		assertFalse(getMigrator().checkMigration(getURI()));
+		getMigrator().performMigration(getURI());
+		final VView view = getMigratedView();
+		assertEquals(1, view.getChildren().size());
+		assertTrue(VTableControl.class.isInstance(view.getChildren().get(0)));
+		final VTableControl tableControl = VTableControl.class.cast(view.getChildren().get(0));
+		assertNotNull(tableControl.getDomainModelReference());
+		assertTrue(VTableDomainModelReference.class.isInstance(tableControl.getDomainModelReference()));
+		final VTableDomainModelReference dmr = VTableDomainModelReference.class.cast(tableControl
+			.getDomainModelReference());
+		assertNull(dmr.getDomainModelEFeature());
+		assertEquals(0, dmr.getDomainModelEReferencePath().size());
+		assertNotNull(dmr.getDomainModelReference());
+		assertTrue(VFeaturePathDomainModelReference.class.isInstance(dmr.getDomainModelReference()));
+		final VFeaturePathDomainModelReference childDMR = VFeaturePathDomainModelReference.class.cast(dmr
+			.getDomainModelReference());
+		assertSame(BowlingPackage.eINSTANCE.getLeague_Players(), childDMR.getDomainModelEFeature());
+		assertEquals(1, childDMR.getDomainModelEReferencePath().size());
+		assertSame(BowlingPackage.eINSTANCE.getReferee_League(), childDMR.getDomainModelEReferencePath().get(0));
+		assertUUIDPresent(view);
+		final TreeIterator<EObject> contents = view.eAllContents();
+		while (contents.hasNext()) {
+			final EObject next = contents.next();
+			assertUUIDPresent(next);
+		}
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.emf.ecp.view.edapt.test.AbstractMigrationTest#getPath()
+	 */
+	@Override
+	protected String getPath() {
+		return "140/TableNewDMROldNS.view";
+	}
+}
diff --git a/tests/org.eclipse.emf.ecp.view.edapt.test/src/org/eclipse/emf/ecp/view/edapt/test/_140to1170/Table_PTest.java b/tests/org.eclipse.emf.ecp.view.edapt.test/src/org/eclipse/emf/ecp/view/edapt/test/_140to1170/Table_PTest.java
new file mode 100644
index 0000000..01c4eb9
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.view.edapt.test/src/org/eclipse/emf/ecp/view/edapt/test/_140to1170/Table_PTest.java
@@ -0,0 +1,80 @@
+/*******************************************************************************
+ * Copyright (c) 2011-2014 EclipseSource Muenchen GmbH 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:
+ * jfaltermeier - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.emf.ecp.view.edapt.test._140to1170;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertSame;
+import static org.junit.Assert.assertTrue;
+
+import org.eclipse.emf.common.util.TreeIterator;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecp.view.edapt.test.AbstractMigrationTest;
+import org.eclipse.emf.ecp.view.spi.model.VFeaturePathDomainModelReference;
+import org.eclipse.emf.ecp.view.spi.model.VView;
+import org.eclipse.emf.ecp.view.spi.table.model.VTableControl;
+import org.eclipse.emf.ecp.view.spi.table.model.VTableDomainModelReference;
+import org.eclipse.emf.emfstore.bowling.BowlingPackage;
+
+/**
+ * @author jfaltermeier
+ *
+ */
+public class Table_PTest extends AbstractMigrationTest {
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.emf.ecp.view.edapt.test.AbstractMigrationTest#performTest()
+	 */
+	@Override
+	// BEGIN SUPRESS CATCH EXCEPTION
+	protected void performTest() throws Exception {// END SUPRESS CATCH EXCEPTION
+		assertFalse(getMigrator().checkMigration(getURI()));
+		getMigrator().performMigration(getURI());
+		final VView view = getMigratedView();
+		assertEquals(1, view.getChildren().size());
+		assertTrue(VTableControl.class.isInstance(view.getChildren().get(0)));
+		final VTableControl tableControl = VTableControl.class.cast(view.getChildren().get(0));
+		assertNotNull(tableControl.getDomainModelReference());
+		assertTrue(VTableDomainModelReference.class.isInstance(tableControl.getDomainModelReference()));
+		final VTableDomainModelReference dmr = VTableDomainModelReference.class.cast(tableControl
+			.getDomainModelReference());
+		assertNull(dmr.getDomainModelEFeature());
+		assertEquals(0, dmr.getDomainModelEReferencePath().size());
+		assertNotNull(dmr.getDomainModelReference());
+		assertTrue(VFeaturePathDomainModelReference.class.isInstance(dmr.getDomainModelReference()));
+		final VFeaturePathDomainModelReference childDMR = VFeaturePathDomainModelReference.class.cast(dmr
+			.getDomainModelReference());
+		assertSame(BowlingPackage.eINSTANCE.getLeague_Players(), childDMR.getDomainModelEFeature());
+		assertEquals(1, childDMR.getDomainModelEReferencePath().size());
+		assertSame(BowlingPackage.eINSTANCE.getReferee_League(), childDMR.getDomainModelEReferencePath().get(0));
+		assertUUIDPresent(view);
+		final TreeIterator<EObject> contents = view.eAllContents();
+		while (contents.hasNext()) {
+			final EObject next = contents.next();
+			assertUUIDPresent(next);
+		}
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see org.eclipse.emf.ecp.view.edapt.test.AbstractMigrationTest#getPath()
+	 */
+	@Override
+	protected String getPath() {
+		return "140/Table.view";
+	}
+}
diff --git a/tests/org.eclipse.emf.ecp.view.edapt.test/src/org/eclipse/emf/ecp/view/edapt/test/_140to170/All140to170Tests.java b/tests/org.eclipse.emf.ecp.view.edapt.test/src/org/eclipse/emf/ecp/view/edapt/test/_140to170/All140to170Tests.java
deleted file mode 100644
index d502a24..0000000
--- a/tests/org.eclipse.emf.ecp.view.edapt.test/src/org/eclipse/emf/ecp/view/edapt/test/_140to170/All140to170Tests.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2011-2014 EclipseSource Muenchen GmbH 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:
- * jfaltermeier - initial API and implementation
- ******************************************************************************/
-package org.eclipse.emf.ecp.view.edapt.test._140to170;
-
-import org.junit.runner.RunWith;
-import org.junit.runners.Suite;
-
-/**
- * @author jfaltermeier
- *
- */
-@RunWith(Suite.class)
-@Suite.SuiteClasses({
-	Table_PTest.class,
-	TableNewDMROldNS_PTest.class,
-	EmptyTableWithUUID_PTest.class
-})
-public class All140to170Tests {
-
-}
diff --git a/tests/org.eclipse.emf.ecp.view.edapt.test/src/org/eclipse/emf/ecp/view/edapt/test/_140to170/EmptyTableWithUUID_PTest.java b/tests/org.eclipse.emf.ecp.view.edapt.test/src/org/eclipse/emf/ecp/view/edapt/test/_140to170/EmptyTableWithUUID_PTest.java
deleted file mode 100644
index 7237b72..0000000
--- a/tests/org.eclipse.emf.ecp.view.edapt.test/src/org/eclipse/emf/ecp/view/edapt/test/_140to170/EmptyTableWithUUID_PTest.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2011-2015 EclipseSource Muenchen GmbH 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:
- * jfaltermeier - initial API and implementation
- ******************************************************************************/
-package org.eclipse.emf.ecp.view.edapt.test._140to170;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-
-import org.eclipse.emf.ecore.xmi.XMIResource;
-import org.eclipse.emf.ecp.view.edapt.test.AbstractMigrationTest;
-import org.eclipse.emf.ecp.view.spi.model.VView;
-import org.eclipse.emf.ecp.view.spi.table.model.VTableControl;
-
-/**
- * Checks whether uuids are preserved during migration
- *
- * @author jfaltermeier
- *
- */
-public class EmptyTableWithUUID_PTest extends AbstractMigrationTest {
-
-	/**
-	 * {@inheritDoc}
-	 *
-	 * @see org.eclipse.emf.ecp.view.edapt.test.AbstractMigrationTest#performTest()
-	 */
-	@Override
-	// BEGIN SUPRESS CATCH EXCEPTION
-	protected void performTest() throws Exception {// END SUPRESS CATCH EXCEPTION
-		assertFalse(getMigrator().checkMigration(getURI()));
-		getMigrator().performMigration(getURI());
-		final VView view = getMigratedView();
-		assertEquals(1, view.getChildren().size());
-		assertTrue(VTableControl.class.isInstance(view.getChildren().get(0)));
-		final VTableControl tableControl = VTableControl.class.cast(view.getChildren().get(0));
-		assertEquals("_bfW9gBsWEeWtk5zWlGll4Q", XMIResource.class.cast(view.eResource()).getID(view));
-		assertEquals("_bfW9gRsWEeWtk5zWlGll4Q", XMIResource.class.cast(view.eResource()).getID(tableControl));
-	}
-
-	/**
-	 * {@inheritDoc}
-	 *
-	 * @see org.eclipse.emf.ecp.view.edapt.test.AbstractMigrationTest#getPath()
-	 */
-	@Override
-	protected String getPath() {
-		return "140/EmptyTableWithUUID.view";
-	}
-
-}
diff --git a/tests/org.eclipse.emf.ecp.view.edapt.test/src/org/eclipse/emf/ecp/view/edapt/test/_140to170/TableNewDMROldNS_PTest.java b/tests/org.eclipse.emf.ecp.view.edapt.test/src/org/eclipse/emf/ecp/view/edapt/test/_140to170/TableNewDMROldNS_PTest.java
deleted file mode 100644
index 9887255..0000000
--- a/tests/org.eclipse.emf.ecp.view.edapt.test/src/org/eclipse/emf/ecp/view/edapt/test/_140to170/TableNewDMROldNS_PTest.java
+++ /dev/null
@@ -1,80 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2011-2014 EclipseSource Muenchen GmbH 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:
- * jfaltermeier - initial API and implementation
- ******************************************************************************/
-package org.eclipse.emf.ecp.view.edapt.test._140to170;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertSame;
-import static org.junit.Assert.assertTrue;
-
-import org.eclipse.emf.common.util.TreeIterator;
-import org.eclipse.emf.ecore.EObject;
-import org.eclipse.emf.ecp.view.edapt.test.AbstractMigrationTest;
-import org.eclipse.emf.ecp.view.spi.model.VFeaturePathDomainModelReference;
-import org.eclipse.emf.ecp.view.spi.model.VView;
-import org.eclipse.emf.ecp.view.spi.table.model.VTableControl;
-import org.eclipse.emf.ecp.view.spi.table.model.VTableDomainModelReference;
-import org.eclipse.emf.emfstore.bowling.BowlingPackage;
-
-/**
- * @author jfaltermeier
- *
- */
-public class TableNewDMROldNS_PTest extends AbstractMigrationTest {
-
-	/**
-	 * {@inheritDoc}
-	 *
-	 * @see org.eclipse.emf.ecp.view.edapt.test.AbstractMigrationTest#performTest()
-	 */
-	@Override
-	// BEGIN SUPRESS CATCH EXCEPTION
-	protected void performTest() throws Exception {// END SUPRESS CATCH EXCEPTION
-		assertFalse(getMigrator().checkMigration(getURI()));
-		getMigrator().performMigration(getURI());
-		final VView view = getMigratedView();
-		assertEquals(1, view.getChildren().size());
-		assertTrue(VTableControl.class.isInstance(view.getChildren().get(0)));
-		final VTableControl tableControl = VTableControl.class.cast(view.getChildren().get(0));
-		assertNotNull(tableControl.getDomainModelReference());
-		assertTrue(VTableDomainModelReference.class.isInstance(tableControl.getDomainModelReference()));
-		final VTableDomainModelReference dmr = VTableDomainModelReference.class.cast(tableControl
-			.getDomainModelReference());
-		assertNull(dmr.getDomainModelEFeature());
-		assertEquals(0, dmr.getDomainModelEReferencePath().size());
-		assertNotNull(dmr.getDomainModelReference());
-		assertTrue(VFeaturePathDomainModelReference.class.isInstance(dmr.getDomainModelReference()));
-		final VFeaturePathDomainModelReference childDMR = VFeaturePathDomainModelReference.class.cast(dmr
-			.getDomainModelReference());
-		assertSame(BowlingPackage.eINSTANCE.getLeague_Players(), childDMR.getDomainModelEFeature());
-		assertEquals(1, childDMR.getDomainModelEReferencePath().size());
-		assertSame(BowlingPackage.eINSTANCE.getReferee_League(), childDMR.getDomainModelEReferencePath().get(0));
-		assertUUIDPresent(view);
-		final TreeIterator<EObject> contents = view.eAllContents();
-		while (contents.hasNext()) {
-			final EObject next = contents.next();
-			assertUUIDPresent(next);
-		}
-	}
-
-	/**
-	 * {@inheritDoc}
-	 *
-	 * @see org.eclipse.emf.ecp.view.edapt.test.AbstractMigrationTest#getPath()
-	 */
-	@Override
-	protected String getPath() {
-		return "140/TableNewDMROldNS.view";
-	}
-}
diff --git a/tests/org.eclipse.emf.ecp.view.edapt.test/src/org/eclipse/emf/ecp/view/edapt/test/_140to170/Table_PTest.java b/tests/org.eclipse.emf.ecp.view.edapt.test/src/org/eclipse/emf/ecp/view/edapt/test/_140to170/Table_PTest.java
deleted file mode 100644
index 21c5d24..0000000
--- a/tests/org.eclipse.emf.ecp.view.edapt.test/src/org/eclipse/emf/ecp/view/edapt/test/_140to170/Table_PTest.java
+++ /dev/null
@@ -1,80 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2011-2014 EclipseSource Muenchen GmbH 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:
- * jfaltermeier - initial API and implementation
- ******************************************************************************/
-package org.eclipse.emf.ecp.view.edapt.test._140to170;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertSame;
-import static org.junit.Assert.assertTrue;
-
-import org.eclipse.emf.common.util.TreeIterator;
-import org.eclipse.emf.ecore.EObject;
-import org.eclipse.emf.ecp.view.edapt.test.AbstractMigrationTest;
-import org.eclipse.emf.ecp.view.spi.model.VFeaturePathDomainModelReference;
-import org.eclipse.emf.ecp.view.spi.model.VView;
-import org.eclipse.emf.ecp.view.spi.table.model.VTableControl;
-import org.eclipse.emf.ecp.view.spi.table.model.VTableDomainModelReference;
-import org.eclipse.emf.emfstore.bowling.BowlingPackage;
-
-/**
- * @author jfaltermeier
- *
- */
-public class Table_PTest extends AbstractMigrationTest {
-
-	/**
-	 * {@inheritDoc}
-	 *
-	 * @see org.eclipse.emf.ecp.view.edapt.test.AbstractMigrationTest#performTest()
-	 */
-	@Override
-	// BEGIN SUPRESS CATCH EXCEPTION
-	protected void performTest() throws Exception {// END SUPRESS CATCH EXCEPTION
-		assertFalse(getMigrator().checkMigration(getURI()));
-		getMigrator().performMigration(getURI());
-		final VView view = getMigratedView();
-		assertEquals(1, view.getChildren().size());
-		assertTrue(VTableControl.class.isInstance(view.getChildren().get(0)));
-		final VTableControl tableControl = VTableControl.class.cast(view.getChildren().get(0));
-		assertNotNull(tableControl.getDomainModelReference());
-		assertTrue(VTableDomainModelReference.class.isInstance(tableControl.getDomainModelReference()));
-		final VTableDomainModelReference dmr = VTableDomainModelReference.class.cast(tableControl
-			.getDomainModelReference());
-		assertNull(dmr.getDomainModelEFeature());
-		assertEquals(0, dmr.getDomainModelEReferencePath().size());
-		assertNotNull(dmr.getDomainModelReference());
-		assertTrue(VFeaturePathDomainModelReference.class.isInstance(dmr.getDomainModelReference()));
-		final VFeaturePathDomainModelReference childDMR = VFeaturePathDomainModelReference.class.cast(dmr
-			.getDomainModelReference());
-		assertSame(BowlingPackage.eINSTANCE.getLeague_Players(), childDMR.getDomainModelEFeature());
-		assertEquals(1, childDMR.getDomainModelEReferencePath().size());
-		assertSame(BowlingPackage.eINSTANCE.getReferee_League(), childDMR.getDomainModelEReferencePath().get(0));
-		assertUUIDPresent(view);
-		final TreeIterator<EObject> contents = view.eAllContents();
-		while (contents.hasNext()) {
-			final EObject next = contents.next();
-			assertUUIDPresent(next);
-		}
-	}
-
-	/**
-	 * {@inheritDoc}
-	 *
-	 * @see org.eclipse.emf.ecp.view.edapt.test.AbstractMigrationTest#getPath()
-	 */
-	@Override
-	protected String getPath() {
-		return "140/Table.view";
-	}
-}
diff --git a/tests/org.eclipse.emf.ecp.view.edapt.test/src/org/eclipse/emf/ecp/view/edapt/test/_160to1170/All160to1170Tests.java b/tests/org.eclipse.emf.ecp.view.edapt.test/src/org/eclipse/emf/ecp/view/edapt/test/_160to1170/All160to1170Tests.java
new file mode 100644
index 0000000..715e2bd
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.view.edapt.test/src/org/eclipse/emf/ecp/view/edapt/test/_160to1170/All160to1170Tests.java
@@ -0,0 +1,26 @@
+/*******************************************************************************
+ * Copyright (c) 2011-2015 EclipseSource Muenchen GmbH 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:
+ * jfaltermeier - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.emf.ecp.view.edapt.test._160to1170;
+
+import org.junit.runner.RunWith;
+import org.junit.runners.Suite;
+
+@RunWith(Suite.class)
+@Suite.SuiteClasses({
+	UUIDIntroduction_PTest.class,
+	LabelAlignment_PTest.class,
+	ReadOnlyColumnConfiguration_PTest.class,
+	DomainWithModelAsPackageName_PTest.class
+})
+public class All160to1170Tests {
+
+}
diff --git a/tests/org.eclipse.emf.ecp.view.edapt.test/src/org/eclipse/emf/ecp/view/edapt/test/_160to1170/DomainWithModelAsPackageName_PTest.java b/tests/org.eclipse.emf.ecp.view.edapt.test/src/org/eclipse/emf/ecp/view/edapt/test/_160to1170/DomainWithModelAsPackageName_PTest.java
new file mode 100644
index 0000000..fe38000
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.view.edapt.test/src/org/eclipse/emf/ecp/view/edapt/test/_160to1170/DomainWithModelAsPackageName_PTest.java
@@ -0,0 +1,45 @@
+/*******************************************************************************
+ * Copyright (c) 2011-2016 EclipseSource Muenchen GmbH 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:
+ * Johannes Faltermeier - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.emf.ecp.view.edapt.test._160to1170;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertSame;
+
+import org.eclipse.emf.ecp.view.edapt.test.AbstractMigrationTest;
+import org.eclipse.emf.ecp.view.edapt.test.model.ModelPackage;
+import org.eclipse.emf.ecp.view.spi.model.VControl;
+import org.eclipse.emf.ecp.view.spi.model.VFeaturePathDomainModelReference;
+import org.eclipse.emf.ecp.view.spi.model.VView;
+
+public class DomainWithModelAsPackageName_PTest extends AbstractMigrationTest {
+
+	@Override
+	protected void performTest() throws Exception {
+		assertFalse(getMigrator().checkMigration(getURI()));
+		getMigrator().performMigration(getURI());
+		final VView view = getMigratedView();
+		assertEquals(1, view.getChildren().size());
+		final VControl control = VControl.class.cast(view.getChildren().get(0));
+		final VFeaturePathDomainModelReference dmr = VFeaturePathDomainModelReference.class
+			.cast(control.getDomainModelReference());
+		assertSame(ModelPackage.eINSTANCE.getFoo_Bar(), dmr.getDomainModelEFeature());
+		assertEquals(1, view.getEcorePaths().size());
+		assertEquals("/org.eclipse.emf.ecp.view.edapt.test/model/EdaptTestModel.ecore", view.getEcorePaths().get(0));
+	}
+
+	@Override
+	protected String getPath() {
+		return "160/DomainWithModelName.view";
+	}
+
+}
diff --git a/tests/org.eclipse.emf.ecp.view.edapt.test/src/org/eclipse/emf/ecp/view/edapt/test/_160to1170/LabelAlignment_PTest.java b/tests/org.eclipse.emf.ecp.view.edapt.test/src/org/eclipse/emf/ecp/view/edapt/test/_160to1170/LabelAlignment_PTest.java
new file mode 100644
index 0000000..145a60b
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.view.edapt.test/src/org/eclipse/emf/ecp/view/edapt/test/_160to1170/LabelAlignment_PTest.java
@@ -0,0 +1,40 @@
+/*******************************************************************************
+ * Copyright (c) 2011-2015 EclipseSource Muenchen GmbH 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:
+ * jfaltermeier - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.emf.ecp.view.edapt.test._160to1170;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+
+import org.eclipse.emf.ecp.view.edapt.test.AbstractMigrationTest;
+import org.eclipse.emf.ecp.view.spi.model.LabelAlignment;
+import org.eclipse.emf.ecp.view.spi.model.VControl;
+import org.eclipse.emf.ecp.view.spi.model.VView;
+
+public class LabelAlignment_PTest extends AbstractMigrationTest {
+
+	@Override
+	// BEGIN SUPRESS CATCH EXCEPTION
+	protected void performTest() throws Exception {// END SUPRESS CATCH EXCEPTION
+		assertFalse(getMigrator().checkMigration(getURI()));
+		getMigrator().performMigration(getURI());
+		final VView view = getMigratedView();
+		assertEquals(2, view.getChildren().size());
+		assertEquals(LabelAlignment.LEFT, VControl.class.cast(view.getChildren().get(0)).getLabelAlignment());
+		assertEquals(LabelAlignment.NONE, VControl.class.cast(view.getChildren().get(1)).getLabelAlignment());
+	}
+
+	@Override
+	protected String getPath() {
+		return "160/LabelAlignment.view";
+	}
+
+}
diff --git a/tests/org.eclipse.emf.ecp.view.edapt.test/src/org/eclipse/emf/ecp/view/edapt/test/_160to1170/ReadOnlyColumnConfiguration_PTest.java b/tests/org.eclipse.emf.ecp.view.edapt.test/src/org/eclipse/emf/ecp/view/edapt/test/_160to1170/ReadOnlyColumnConfiguration_PTest.java
new file mode 100644
index 0000000..8847fba
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.view.edapt.test/src/org/eclipse/emf/ecp/view/edapt/test/_160to1170/ReadOnlyColumnConfiguration_PTest.java
@@ -0,0 +1,47 @@
+/*******************************************************************************
+ * Copyright (c) 2011-2015 EclipseSource Muenchen GmbH 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:
+ * jfaltermeier - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.emf.ecp.view.edapt.test._160to1170;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertSame;
+
+import org.eclipse.emf.ecp.view.edapt.test.AbstractMigrationTest;
+import org.eclipse.emf.ecp.view.spi.model.VDomainModelReference;
+import org.eclipse.emf.ecp.view.spi.model.VView;
+import org.eclipse.emf.ecp.view.spi.table.model.VReadOnlyColumnConfiguration;
+import org.eclipse.emf.ecp.view.spi.table.model.VTableControl;
+import org.eclipse.emf.ecp.view.spi.table.model.VTableDomainModelReference;
+
+public class ReadOnlyColumnConfiguration_PTest extends AbstractMigrationTest {
+
+	@Override
+	// BEGIN SUPRESS CATCH EXCEPTION
+	protected void performTest() throws Exception {// END SUPRESS CATCH EXCEPTION
+		assertFalse(getMigrator().checkMigration(getURI()));
+		getMigrator().performMigration(getURI());
+		final VView view = getMigratedView();
+		final VTableControl tableControl = VTableControl.class.cast(view.getChildren().get(0));
+		final VReadOnlyColumnConfiguration columnConfiguration = VReadOnlyColumnConfiguration.class
+			.cast(tableControl.getColumnConfigurations().get(0));
+		final VDomainModelReference reference = columnConfiguration.getColumnDomainReferences().get(0);
+		final VDomainModelReference expectedReference = VTableDomainModelReference.class
+			.cast(tableControl.getDomainModelReference()).getColumnDomainModelReferences()
+			.get(0);
+		assertSame(expectedReference, reference);
+	}
+
+	@Override
+	protected String getPath() {
+		return "160/League.view";
+	}
+
+}
diff --git a/tests/org.eclipse.emf.ecp.view.edapt.test/src/org/eclipse/emf/ecp/view/edapt/test/_160to1170/UUIDIntroduction_PTest.java b/tests/org.eclipse.emf.ecp.view.edapt.test/src/org/eclipse/emf/ecp/view/edapt/test/_160to1170/UUIDIntroduction_PTest.java
new file mode 100644
index 0000000..c9e5211
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.view.edapt.test/src/org/eclipse/emf/ecp/view/edapt/test/_160to1170/UUIDIntroduction_PTest.java
@@ -0,0 +1,44 @@
+/*******************************************************************************
+ * Copyright (c) 2011-2015 EclipseSource Muenchen GmbH 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:
+ * jfaltermeier - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.emf.ecp.view.edapt.test._160to1170;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+
+import org.eclipse.emf.common.util.TreeIterator;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecp.view.edapt.test.AbstractMigrationTest;
+import org.eclipse.emf.ecp.view.spi.model.VView;
+
+public class UUIDIntroduction_PTest extends AbstractMigrationTest {
+
+	@Override
+	// BEGIN SUPRESS CATCH EXCEPTION
+	protected void performTest() throws Exception {// END SUPRESS CATCH EXCEPTION
+		assertFalse(getMigrator().checkMigration(getURI()));
+		getMigrator().performMigration(getURI());
+		final VView view = getMigratedView();
+		assertEquals(1, view.getChildren().size());
+		assertUUIDPresent(view);
+		final TreeIterator<EObject> contents = view.eAllContents();
+		while (contents.hasNext()) {
+			final EObject next = contents.next();
+			assertUUIDPresent(next);
+		}
+	}
+
+	@Override
+	protected String getPath() {
+		return "160/Player.view";
+	}
+
+}
diff --git a/tests/org.eclipse.emf.ecp.view.edapt.test/src/org/eclipse/emf/ecp/view/edapt/test/_160to170/All160to170Tests.java b/tests/org.eclipse.emf.ecp.view.edapt.test/src/org/eclipse/emf/ecp/view/edapt/test/_160to170/All160to170Tests.java
deleted file mode 100644
index 039a4e4..0000000
--- a/tests/org.eclipse.emf.ecp.view.edapt.test/src/org/eclipse/emf/ecp/view/edapt/test/_160to170/All160to170Tests.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2011-2015 EclipseSource Muenchen GmbH 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:
- * jfaltermeier - initial API and implementation
- ******************************************************************************/
-package org.eclipse.emf.ecp.view.edapt.test._160to170;
-
-import org.junit.runner.RunWith;
-import org.junit.runners.Suite;
-
-@RunWith(Suite.class)
-@Suite.SuiteClasses({
-	UUIDIntroductionTest.class,
-	LabelAlignmentTest.class,
-	ReadOnlyColumnConfigurationTest.class,
-	DomainWithModelAsPackageNameTest.class
-})
-public class All160to170Tests {
-
-}
diff --git a/tests/org.eclipse.emf.ecp.view.edapt.test/src/org/eclipse/emf/ecp/view/edapt/test/_160to170/DomainWithModelAsPackageNameTest.java b/tests/org.eclipse.emf.ecp.view.edapt.test/src/org/eclipse/emf/ecp/view/edapt/test/_160to170/DomainWithModelAsPackageNameTest.java
deleted file mode 100644
index d0fa64d..0000000
--- a/tests/org.eclipse.emf.ecp.view.edapt.test/src/org/eclipse/emf/ecp/view/edapt/test/_160to170/DomainWithModelAsPackageNameTest.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2011-2016 EclipseSource Muenchen GmbH 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:
- * Johannes Faltermeier - initial API and implementation
- ******************************************************************************/
-package org.eclipse.emf.ecp.view.edapt.test._160to170;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertSame;
-
-import org.eclipse.emf.ecp.view.edapt.test.AbstractMigrationTest;
-import org.eclipse.emf.ecp.view.edapt.test.model.ModelPackage;
-import org.eclipse.emf.ecp.view.spi.model.VControl;
-import org.eclipse.emf.ecp.view.spi.model.VFeaturePathDomainModelReference;
-import org.eclipse.emf.ecp.view.spi.model.VView;
-
-public class DomainWithModelAsPackageNameTest extends AbstractMigrationTest {
-
-	@Override
-	protected void performTest() throws Exception {
-		assertFalse(getMigrator().checkMigration(getURI()));
-		getMigrator().performMigration(getURI());
-		final VView view = getMigratedView();
-		assertEquals(1, view.getChildren().size());
-		final VControl control = VControl.class.cast(view.getChildren().get(0));
-		final VFeaturePathDomainModelReference dmr = VFeaturePathDomainModelReference.class
-			.cast(control.getDomainModelReference());
-		assertSame(ModelPackage.eINSTANCE.getFoo_Bar(), dmr.getDomainModelEFeature());
-	}
-
-	@Override
-	protected String getPath() {
-		return "160/DomainWithModelName.view";
-	}
-
-}
diff --git a/tests/org.eclipse.emf.ecp.view.edapt.test/src/org/eclipse/emf/ecp/view/edapt/test/_160to170/LabelAlignmentTest.java b/tests/org.eclipse.emf.ecp.view.edapt.test/src/org/eclipse/emf/ecp/view/edapt/test/_160to170/LabelAlignmentTest.java
deleted file mode 100644
index 0db5c8d..0000000
--- a/tests/org.eclipse.emf.ecp.view.edapt.test/src/org/eclipse/emf/ecp/view/edapt/test/_160to170/LabelAlignmentTest.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2011-2015 EclipseSource Muenchen GmbH 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:
- * jfaltermeier - initial API and implementation
- ******************************************************************************/
-package org.eclipse.emf.ecp.view.edapt.test._160to170;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-
-import org.eclipse.emf.ecp.view.edapt.test.AbstractMigrationTest;
-import org.eclipse.emf.ecp.view.spi.model.LabelAlignment;
-import org.eclipse.emf.ecp.view.spi.model.VControl;
-import org.eclipse.emf.ecp.view.spi.model.VView;
-
-public class LabelAlignmentTest extends AbstractMigrationTest {
-
-	@Override
-	// BEGIN SUPRESS CATCH EXCEPTION
-	protected void performTest() throws Exception {// END SUPRESS CATCH EXCEPTION
-		assertFalse(getMigrator().checkMigration(getURI()));
-		getMigrator().performMigration(getURI());
-		final VView view = getMigratedView();
-		assertEquals(2, view.getChildren().size());
-		assertEquals(LabelAlignment.LEFT, VControl.class.cast(view.getChildren().get(0)).getLabelAlignment());
-		assertEquals(LabelAlignment.NONE, VControl.class.cast(view.getChildren().get(1)).getLabelAlignment());
-	}
-
-	@Override
-	protected String getPath() {
-		return "160/LabelAlignment.view";
-	}
-
-}
diff --git a/tests/org.eclipse.emf.ecp.view.edapt.test/src/org/eclipse/emf/ecp/view/edapt/test/_160to170/ReadOnlyColumnConfigurationTest.java b/tests/org.eclipse.emf.ecp.view.edapt.test/src/org/eclipse/emf/ecp/view/edapt/test/_160to170/ReadOnlyColumnConfigurationTest.java
deleted file mode 100644
index 7fdcddc..0000000
--- a/tests/org.eclipse.emf.ecp.view.edapt.test/src/org/eclipse/emf/ecp/view/edapt/test/_160to170/ReadOnlyColumnConfigurationTest.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2011-2015 EclipseSource Muenchen GmbH 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:
- * jfaltermeier - initial API and implementation
- ******************************************************************************/
-package org.eclipse.emf.ecp.view.edapt.test._160to170;
-
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertSame;
-
-import org.eclipse.emf.ecp.view.edapt.test.AbstractMigrationTest;
-import org.eclipse.emf.ecp.view.spi.model.VDomainModelReference;
-import org.eclipse.emf.ecp.view.spi.model.VView;
-import org.eclipse.emf.ecp.view.spi.table.model.VReadOnlyColumnConfiguration;
-import org.eclipse.emf.ecp.view.spi.table.model.VTableControl;
-import org.eclipse.emf.ecp.view.spi.table.model.VTableDomainModelReference;
-
-public class ReadOnlyColumnConfigurationTest extends AbstractMigrationTest {
-
-	@Override
-	// BEGIN SUPRESS CATCH EXCEPTION
-	protected void performTest() throws Exception {// END SUPRESS CATCH EXCEPTION
-		assertFalse(getMigrator().checkMigration(getURI()));
-		getMigrator().performMigration(getURI());
-		final VView view = getMigratedView();
-		final VTableControl tableControl = VTableControl.class.cast(view.getChildren().get(0));
-		final VReadOnlyColumnConfiguration columnConfiguration = VReadOnlyColumnConfiguration.class
-			.cast(tableControl.getColumnConfigurations().get(0));
-		final VDomainModelReference reference = columnConfiguration.getColumnDomainReferences().get(0);
-		final VDomainModelReference expectedReference = VTableDomainModelReference.class
-			.cast(tableControl.getDomainModelReference()).getColumnDomainModelReferences()
-			.get(0);
-		assertSame(expectedReference, reference);
-	}
-
-	@Override
-	protected String getPath() {
-		return "160/League.view";
-	}
-
-}
diff --git a/tests/org.eclipse.emf.ecp.view.edapt.test/src/org/eclipse/emf/ecp/view/edapt/test/_160to170/UUIDIntroductionTest.java b/tests/org.eclipse.emf.ecp.view.edapt.test/src/org/eclipse/emf/ecp/view/edapt/test/_160to170/UUIDIntroductionTest.java
deleted file mode 100644
index 4fe7071..0000000
--- a/tests/org.eclipse.emf.ecp.view.edapt.test/src/org/eclipse/emf/ecp/view/edapt/test/_160to170/UUIDIntroductionTest.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2011-2015 EclipseSource Muenchen GmbH 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:
- * jfaltermeier - initial API and implementation
- ******************************************************************************/
-package org.eclipse.emf.ecp.view.edapt.test._160to170;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-
-import org.eclipse.emf.common.util.TreeIterator;
-import org.eclipse.emf.ecore.EObject;
-import org.eclipse.emf.ecp.view.edapt.test.AbstractMigrationTest;
-import org.eclipse.emf.ecp.view.spi.model.VView;
-
-public class UUIDIntroductionTest extends AbstractMigrationTest {
-
-	@Override
-	// BEGIN SUPRESS CATCH EXCEPTION
-	protected void performTest() throws Exception {// END SUPRESS CATCH EXCEPTION
-		assertFalse(getMigrator().checkMigration(getURI()));
-		getMigrator().performMigration(getURI());
-		final VView view = getMigratedView();
-		assertEquals(1, view.getChildren().size());
-		assertUUIDPresent(view);
-		final TreeIterator<EObject> contents = view.eAllContents();
-		while (contents.hasNext()) {
-			final EObject next = contents.next();
-			assertUUIDPresent(next);
-		}
-	}
-
-	@Override
-	protected String getPath() {
-		return "160/Player.view";
-	}
-
-}
diff --git a/tests/org.eclipse.emf.ecp.view.edapt.util.test/META-INF/MANIFEST.MF b/tests/org.eclipse.emf.ecp.view.edapt.util.test/META-INF/MANIFEST.MF
index 5916f93..0da15c4 100644
--- a/tests/org.eclipse.emf.ecp.view.edapt.util.test/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.emf.ecp.view.edapt.util.test/META-INF/MANIFEST.MF
@@ -2,44 +2,45 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.edapt.util.test;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-ClassPath: .
 Bundle-Vendor: %providerName
-Fragment-Host: org.eclipse.emf.ecp.view.edapt;bundle-version="[1.16.0,1.17.0)"
+Fragment-Host: org.eclipse.emf.ecp.view.edapt;bundle-version="[1.17.0,1.18.0]"
 Bundle-Localization: plugin
-Export-Package: org.eclipse.emf.ecp.view.edapt;version="1.16.0",
-  org.eclipse.emf.ecp.view.edapt.util.test.model.a;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.view.edapt.util.test.model.a.impl;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.view.edapt.util.test.model.a.util;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.view.edapt.util.test.model.b;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.view.edapt.util.test.model.b.impl;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.view.edapt.util.test.model.b.util;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.view.edapt.util.test.model.c;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.view.edapt.util.test.model.c.impl;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.view.edapt.util.test.model.c.util;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.view.edapt.util.test.model.d;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.view.edapt.util.test.model.d.impl;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.view.edapt.util.test.model.d.util;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.view.edapt.util.test.model.e;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.view.edapt.util.test.model.e.impl;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.view.edapt.util.test.model.e.util;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.view.edapt.util.test.model.f;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.view.edapt.util.test.model.f.impl;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.view.edapt.util.test.model.f.util;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.view.edapt.util.test.model.w;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.view.edapt.util.test.model.w.impl;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.view.edapt.util.test.model.w.util;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.view.edapt.util.test.model.x;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.view.edapt.util.test.model.x.impl;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.view.edapt.util.test.model.x.util;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.view.edapt.util.test.model.y;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.view.edapt.util.test.model.y.impl;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.view.edapt.util.test.model.y.util;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.view.edapt.util.test.model.z;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.view.edapt.util.test.model.z.impl;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.view.edapt.util.test.model.z.util;version="1.16.0";x-internal:=true
+Export-Package: org.eclipse.emf.ecp.view.edapt;version="1.17.0",
+ org.eclipse.emf.ecp.view.edapt.util.test.model.a;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.edapt.util.test.model.a.impl;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.edapt.util.test.model.a.util;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.edapt.util.test.model.b;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.edapt.util.test.model.b.impl;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.edapt.util.test.model.b.util;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.edapt.util.test.model.c;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.edapt.util.test.model.c.impl;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.edapt.util.test.model.c.util;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.edapt.util.test.model.d;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.edapt.util.test.model.d.impl;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.edapt.util.test.model.d.util;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.edapt.util.test.model.e;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.edapt.util.test.model.e.impl;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.edapt.util.test.model.e.util;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.edapt.util.test.model.f;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.edapt.util.test.model.f.impl;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.edapt.util.test.model.f.util;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.edapt.util.test.model.w;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.edapt.util.test.model.w.impl;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.edapt.util.test.model.w.util;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.edapt.util.test.model.x;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.edapt.util.test.model.x.impl;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.edapt.util.test.model.x.util;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.edapt.util.test.model.y;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.edapt.util.test.model.y.impl;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.edapt.util.test.model.y.util;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.edapt.util.test.model.z;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.edapt.util.test.model.z.impl;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.edapt.util.test.model.z.util;version="1.17.0";x-internal:=true
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.7.0,4.0.0)",
   org.eclipse.emf.ecore;bundle-version="[2.7.0,3.0.0)";visibility:=reexport,
   org.junit;bundle-version="[4.0.0,5.0.0)"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.view.edapt.util.test
diff --git a/tests/org.eclipse.emf.ecp.view.edapt.util.test/pom.xml b/tests/org.eclipse.emf.ecp.view.edapt.util.test/pom.xml
index c09872f..b09f4a4 100644
--- a/tests/org.eclipse.emf.ecp.view.edapt.util.test/pom.xml
+++ b/tests/org.eclipse.emf.ecp.view.edapt.util.test/pom.xml
@@ -6,11 +6,11 @@
 	<parent>
 		<groupId>org.eclipse.emf.ecp</groupId>
 		<artifactId>ecp-tests-parent</artifactId>
-		<version>1.16.0-SNAPSHOT</version>
+		<version>1.17.0-SNAPSHOT</version>
 		<relativePath>../../releng/org.eclipse.emf.ecp.releng.tests/</relativePath>
 	</parent>
 	<groupId>org.eclipse.emf.ecp</groupId>
 	<artifactId>org.eclipse.emf.ecp.view.edapt.util.test</artifactId>
-	<version>1.16.0-SNAPSHOT</version>
+	<version>1.17.0-SNAPSHOT</version>
 	<packaging>eclipse-plugin</packaging>
 </project>
diff --git a/tests/org.eclipse.emf.ecp.view.group.ui.swt.test/META-INF/MANIFEST.MF b/tests/org.eclipse.emf.ecp.view.group.ui.swt.test/META-INF/MANIFEST.MF
index cbceb1b..651d07e 100644
--- a/tests/org.eclipse.emf.ecp.view.group.ui.swt.test/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.emf.ecp.view.group.ui.swt.test/META-INF/MANIFEST.MF
@@ -2,21 +2,22 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Tests for the Group SWT Renderer
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.group.ui.swt.test
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Fragment-Host: org.eclipse.emf.ecp.view.group.ui.swt;bundle-version="[1.16.0,1.17.0)"
-Export-Package: org.eclipse.emf.ecp.view.group.ui.swt.test;version="1.16.0";x-internal:=true
-Require-Bundle: org.eclipse.emf.ecp.view.test.common.swt;bundle-version="[1.16.0,1.17.0)",
-  org.junit;bundle-version="[4.0.0,5.0.0)",
-  org.eclipse.emf.ecp.view.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.swt;bundle-version="[3.1.0,4.0.0)",
-  org.eclipse.emf.ecp.edit;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.ui.view.test;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.ui.view;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.ui.view.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.group.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services.legacy;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services.domainexpander.default;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services.structuralchange;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services.structuralchange.default;bundle-version="[1.16.0,1.17.0)"
+Fragment-Host: org.eclipse.emf.ecp.view.group.ui.swt;bundle-version="[1.17.0,1.18.0]"
+Export-Package: org.eclipse.emf.ecp.view.group.ui.swt.test;version="1.17.0";x-internal:=true
+Require-Bundle: org.eclipse.emf.ecp.view.test.common.swt;bundle-version="[1.17.0,1.18.0]",
+ org.junit;bundle-version="[4.0.0,5.0.0)",
+ org.eclipse.emf.ecp.view.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.swt;bundle-version="[3.1.0,4.0.0)",
+ org.eclipse.emf.ecp.edit;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.ui.view.test;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.ui.view;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.ui.view.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.group.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services.legacy;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services.domainexpander.default;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services.structuralchange;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services.structuralchange.default;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Automatic-Module-Name: org.eclipse.emf.ecp.view.group.ui.swt.test
diff --git a/tests/org.eclipse.emf.ecp.view.group.ui.swt.test/pom.xml b/tests/org.eclipse.emf.ecp.view.group.ui.swt.test/pom.xml
index e164329..9ce4272 100644
--- a/tests/org.eclipse.emf.ecp.view.group.ui.swt.test/pom.xml
+++ b/tests/org.eclipse.emf.ecp.view.group.ui.swt.test/pom.xml
@@ -6,12 +6,12 @@
 	<parent>
 		<groupId>org.eclipse.emf.ecp</groupId>
 		<artifactId>ecp-tests-parent</artifactId>
-		<version>1.16.0-SNAPSHOT</version>
+		<version>1.17.0-SNAPSHOT</version>
 		<relativePath>../../releng/org.eclipse.emf.ecp.releng.tests/</relativePath>
 	</parent>
 	<groupId>org.eclipse.emf.ecp</groupId>
 	<artifactId>org.eclipse.emf.ecp.view.group.ui.swt.test</artifactId>
-	<version>1.16.0-SNAPSHOT</version>
+	<version>1.17.0-SNAPSHOT</version>
 	<packaging>eclipse-test-plugin</packaging>
 
 	<build>
diff --git a/tests/org.eclipse.emf.ecp.view.horizontal.ui.swt.test/META-INF/MANIFEST.MF b/tests/org.eclipse.emf.ecp.view.horizontal.ui.swt.test/META-INF/MANIFEST.MF
index 27ef839..1785c52 100644
--- a/tests/org.eclipse.emf.ecp.view.horizontal.ui.swt.test/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.emf.ecp.view.horizontal.ui.swt.test/META-INF/MANIFEST.MF
@@ -2,22 +2,23 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Tests for the Horizontal SWT Renderer
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.horizontal.ui.swt.test
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Fragment-Host: org.eclipse.emf.ecp.view.horizontal.ui.swt;bundle-version="[1.16.0,1.17.0)"
-Export-Package: org.eclipse.emf.ecp.view.horizontal.ui.swt.test;version="1.16.0";x-internal:=true
-Require-Bundle: org.eclipse.emf.ecp.view.test.common.swt;bundle-version="[1.16.0,1.17.0)",
-  org.junit;bundle-version="[4.0.0,5.0.0)",
-  org.eclipse.emf.ecp.view.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.swt;bundle-version="[3.1.0,4.0.0)",
-  org.eclipse.emf.ecp.edit;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.ui.view.test;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.ui.view;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.ui.view.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.jface;bundle-version="3.8.102",
-  org.eclipse.emf.ecp.view.horizontal.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services.legacy;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services.domainexpander.default;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services.structuralchange;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services.structuralchange.default;bundle-version="[1.16.0,1.17.0)"
+Fragment-Host: org.eclipse.emf.ecp.view.horizontal.ui.swt;bundle-version="[1.17.0,1.18.0]"
+Export-Package: org.eclipse.emf.ecp.view.horizontal.ui.swt.test;version="1.17.0";x-internal:=true
+Require-Bundle: org.eclipse.emf.ecp.view.test.common.swt;bundle-version="[1.17.0,1.18.0]",
+ org.junit;bundle-version="[4.0.0,5.0.0)",
+ org.eclipse.emf.ecp.view.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.swt;bundle-version="[3.1.0,4.0.0)",
+ org.eclipse.emf.ecp.edit;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.ui.view.test;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.ui.view;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.ui.view.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.jface;bundle-version="3.8.102",
+ org.eclipse.emf.ecp.view.horizontal.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services.legacy;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services.domainexpander.default;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services.structuralchange;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services.structuralchange.default;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Automatic-Module-Name: org.eclipse.emf.ecp.view.horizontal.ui.swt.test
diff --git a/tests/org.eclipse.emf.ecp.view.horizontal.ui.swt.test/pom.xml b/tests/org.eclipse.emf.ecp.view.horizontal.ui.swt.test/pom.xml
index 5ce0840..17ff4c9 100644
--- a/tests/org.eclipse.emf.ecp.view.horizontal.ui.swt.test/pom.xml
+++ b/tests/org.eclipse.emf.ecp.view.horizontal.ui.swt.test/pom.xml
@@ -6,12 +6,12 @@
 	<parent>
 		<groupId>org.eclipse.emf.ecp</groupId>
 		<artifactId>ecp-tests-parent</artifactId>
-		<version>1.16.0-SNAPSHOT</version>
+		<version>1.17.0-SNAPSHOT</version>
 		<relativePath>../../releng/org.eclipse.emf.ecp.releng.tests/</relativePath>
 	</parent>
 	<groupId>org.eclipse.emf.ecp</groupId>
 	<artifactId>org.eclipse.emf.ecp.view.horizontal.ui.swt.test</artifactId>
-	<version>1.16.0-SNAPSHOT</version>
+	<version>1.17.0-SNAPSHOT</version>
 	<packaging>eclipse-test-plugin</packaging>
 
 	<build>
diff --git a/tests/org.eclipse.emf.ecp.view.indexdmr.model.test/META-INF/MANIFEST.MF b/tests/org.eclipse.emf.ecp.view.indexdmr.model.test/META-INF/MANIFEST.MF
index fa02c7f..ebe2583 100644
--- a/tests/org.eclipse.emf.ecp.view.indexdmr.model.test/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.emf.ecp.view.indexdmr.model.test/META-INF/MANIFEST.MF
@@ -2,17 +2,18 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.indexdmr.model.test;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-ClassPath: .
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
-Export-Package: org.eclipse.emf.ecp.view.index.test.example;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.view.index.test.example.impl;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.view.index.test.example.util;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.view.indexdmr.model.test;version="1.16.0";x-internal:=true
+Export-Package: org.eclipse.emf.ecp.view.index.test.example;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.index.test.example.impl;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.index.test.example.util;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.indexdmr.model.test;version="1.17.0";x-internal:=true
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.8.0,4.0.0)",
-  org.eclipse.emf.ecore;bundle-version="[2.7.0,3.0.0)";visibility:=reexport,
-  org.junit;bundle-version="[4.11.0,5.0.0)",
-  org.eclipse.emf.ecp.view.indexdmr.model;bundle-version="[1.16.0,1.17.0)"
+ org.eclipse.emf.ecore;bundle-version="[2.7.0,3.0.0)";visibility:=reexport,
+ org.junit;bundle-version="[4.11.0,5.0.0)",
+ org.eclipse.emf.ecp.view.indexdmr.model;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.view.indexdmr.model.test
diff --git a/tests/org.eclipse.emf.ecp.view.indexdmr.model.test/pom.xml b/tests/org.eclipse.emf.ecp.view.indexdmr.model.test/pom.xml
index 1d8325f..8805fa0 100644
--- a/tests/org.eclipse.emf.ecp.view.indexdmr.model.test/pom.xml
+++ b/tests/org.eclipse.emf.ecp.view.indexdmr.model.test/pom.xml
@@ -6,12 +6,12 @@
 	<parent>
 		<groupId>org.eclipse.emf.ecp</groupId>
 		<artifactId>ecp-tests-parent</artifactId>
-		<version>1.16.0-SNAPSHOT</version>
+		<version>1.17.0-SNAPSHOT</version>
 		<relativePath>../../releng/org.eclipse.emf.ecp.releng.tests/</relativePath>
 	</parent>
 	<artifactId>org.eclipse.emf.ecp.view.indexdmr.model.test</artifactId>
 	<packaging>eclipse-plugin</packaging>
 	<groupId>org.eclipse.emf.ecp</groupId>
-	<version>1.16.0-SNAPSHOT</version>
+	<version>1.17.0-SNAPSHOT</version>
 
 </project>
diff --git a/tests/org.eclipse.emf.ecp.view.keyattributedmr.model.test/.checkstyle b/tests/org.eclipse.emf.ecp.view.keyattributedmr.model.test/.checkstyle
new file mode 100644
index 0000000..115bb9d
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.view.keyattributedmr.model.test/.checkstyle
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<fileset-config file-format-version="1.2.0" simple-config="false" sync-formatter="false">
+  <local-check-config name="ESMCheckstyleTest" location="/org.eclipse.emf.ecp.releng/checkstyle/esmCheckstyleTest.xml" type="project" description="">
+    <additional-data name="protect-config-file" value="false"/>
+  </local-check-config>
+  <fileset name="Java Files Test" enabled="true" check-config-name="ESMCheckstyleTest" local="true">
+    <file-match-pattern match-pattern=".java$" include-pattern="true"/>
+  </fileset>
+</fileset-config>
diff --git a/tests/org.eclipse.emf.ecp.view.keyattributedmr.model.test/.project b/tests/org.eclipse.emf.ecp.view.keyattributedmr.model.test/.project
index 2499a8c..0fd26cc 100644
--- a/tests/org.eclipse.emf.ecp.view.keyattributedmr.model.test/.project
+++ b/tests/org.eclipse.emf.ecp.view.keyattributedmr.model.test/.project
@@ -20,9 +20,15 @@
 			<arguments>
 			</arguments>
 		</buildCommand>
+		<buildCommand>
+			<name>net.sf.eclipsecs.core.CheckstyleBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
 	</buildSpec>
 	<natures>
 		<nature>org.eclipse.pde.PluginNature</nature>
 		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>net.sf.eclipsecs.core.CheckstyleNature</nature>
 	</natures>
 </projectDescription>
diff --git a/tests/org.eclipse.emf.ecp.view.keyattributedmr.model.test/META-INF/MANIFEST.MF b/tests/org.eclipse.emf.ecp.view.keyattributedmr.model.test/META-INF/MANIFEST.MF
index 832867b..d444384 100644
--- a/tests/org.eclipse.emf.ecp.view.keyattributedmr.model.test/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.emf.ecp.view.keyattributedmr.model.test/META-INF/MANIFEST.MF
@@ -2,17 +2,18 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.keyattributedmr.model.test;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-ClassPath: .
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
-Export-Package: org.eclipse.emf.ecp.view.keyattribute.test.example;version="1.16.0",
-  org.eclipse.emf.ecp.view.keyattribute.test.example.impl;version="1.16.0",
-  org.eclipse.emf.ecp.view.keyattribute.test.example.util;version="1.16.0",
-  org.eclipse.emf.ecp.view.keyattributedmr.model.test;version="1.16.0";x-internal:=true
+Export-Package: org.eclipse.emf.ecp.view.keyattribute.test.example;version="1.17.0",
+ org.eclipse.emf.ecp.view.keyattribute.test.example.impl;version="1.17.0",
+ org.eclipse.emf.ecp.view.keyattribute.test.example.util;version="1.17.0",
+ org.eclipse.emf.ecp.view.keyattributedmr.model.test;version="1.17.0";x-internal:=true
 Require-Bundle: org.junit;bundle-version="[4.11.0,5.0.0)",
-  org.eclipse.core.runtime;bundle-version="[3.8.0,4.0.0)",
-  org.eclipse.emf.ecore;bundle-version="[2.7.0,3.0.0)";visibility:=reexport,
-  org.eclipse.emf.ecp.view.keyattributedmr.model;bundle-version="[1.16.0,1.17.0)"
+ org.eclipse.core.runtime;bundle-version="[3.8.0,4.0.0)",
+ org.eclipse.emf.ecore;bundle-version="[2.7.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.ecp.view.keyattributedmr.model;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.view.keyattributedmr.model.test
diff --git a/tests/org.eclipse.emf.ecp.view.keyattributedmr.model.test/model/example.genmodel b/tests/org.eclipse.emf.ecp.view.keyattributedmr.model.test/model/example.genmodel
index b525392..aaac508 100644
--- a/tests/org.eclipse.emf.ecp.view.keyattributedmr.model.test/model/example.genmodel
+++ b/tests/org.eclipse.emf.ecp.view.keyattributedmr.model.test/model/example.genmodel
@@ -1,10 +1,10 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <genmodel:GenModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
-    xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel" modelDirectory="/org.eclipse.emf.ecp.view.keyattributedmr.model.test/src"
-    modelPluginID="org.eclipse.emf.ecp.view.keyattributedmr.model.test" modelName="Example"
-    nonNLSMarkers="true" rootExtendsClass="org.eclipse.emf.ecore.impl.MinimalEObjectImpl$Container"
-    importerID="org.eclipse.emf.importer.ecore" complianceLevel="6.0" copyrightFields="false"
-    operationReflection="true" importOrganizing="true">
+    xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel" copyrightText="Copyright (c) 2011-2018 EclipseSource Muenchen GmbH and others.&#xD;&#xA;&#xD;&#xA;All rights reserved. This program and the accompanying materials&#xD;&#xA;are made available under the terms of the Eclipse Public License v1.0&#xD;&#xA;which accompanies this distribution, and is available at&#xD;&#xA;http://www.eclipse.org/legal/epl-v10.html&#xD;&#xA;&#xD;&#xA;Contributors:&#xD;&#xA;EclipseSource Munich - initial API and implementation"
+    modelDirectory="/org.eclipse.emf.ecp.view.keyattributedmr.model.test/src" modelPluginID="org.eclipse.emf.ecp.view.keyattributedmr.model.test"
+    modelName="Example" nonNLSMarkers="true" rootExtendsClass="org.eclipse.emf.ecore.impl.MinimalEObjectImpl$Container"
+    codeFormatting="true" importerID="org.eclipse.emf.importer.ecore" complianceLevel="6.0"
+    copyrightFields="false" operationReflection="true" importOrganizing="true" cleanup="true">
   <foreignModel>example.ecore</foreignModel>
   <genPackages prefix="Example" basePackage="org.eclipse.emf.ecp.view.keyattribute.test"
       disposableProviderFactory="true" ecorePackage="example.ecore#/">
diff --git a/tests/org.eclipse.emf.ecp.view.keyattributedmr.model.test/pom.xml b/tests/org.eclipse.emf.ecp.view.keyattributedmr.model.test/pom.xml
index af21484..53bb571 100644
--- a/tests/org.eclipse.emf.ecp.view.keyattributedmr.model.test/pom.xml
+++ b/tests/org.eclipse.emf.ecp.view.keyattributedmr.model.test/pom.xml
@@ -6,11 +6,11 @@
 	<parent>
 		<groupId>org.eclipse.emf.ecp</groupId>
 		<artifactId>ecp-tests-parent</artifactId>
-		<version>1.16.0-SNAPSHOT</version>
+		<version>1.17.0-SNAPSHOT</version>
 		<relativePath>../../releng/org.eclipse.emf.ecp.releng.tests/</relativePath>
 	</parent>
 	<artifactId>org.eclipse.emf.ecp.view.keyattributedmr.model.test</artifactId>
 	<packaging>eclipse-plugin</packaging>
 	<groupId>org.eclipse.emf.ecp</groupId>
-	<version>1.16.0-SNAPSHOT</version>
+	<version>1.17.0-SNAPSHOT</version>
 </project>
diff --git a/tests/org.eclipse.emf.ecp.view.keyattributedmr.model.test/src/org/eclipse/emf/ecp/view/keyattribute/test/example/Child.java b/tests/org.eclipse.emf.ecp.view.keyattributedmr.model.test/src/org/eclipse/emf/ecp/view/keyattribute/test/example/Child.java
index 6015fe7..fe25980 100644
--- a/tests/org.eclipse.emf.ecp.view.keyattributedmr.model.test/src/org/eclipse/emf/ecp/view/keyattribute/test/example/Child.java
+++ b/tests/org.eclipse.emf.ecp.view.keyattributedmr.model.test/src/org/eclipse/emf/ecp/view/keyattribute/test/example/Child.java
@@ -1,5 +1,15 @@
 /**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
  */
+
 package org.eclipse.emf.ecp.view.keyattribute.test.example;
 
 import org.eclipse.emf.ecore.EObject;
@@ -13,8 +23,9 @@
  * The following features are supported:
  * </p>
  * <ul>
- *   <li>{@link org.eclipse.emf.ecp.view.keyattribute.test.example.Child#getIntermediateTarget <em>Intermediate Target</em>}</li>
- *   <li>{@link org.eclipse.emf.ecp.view.keyattribute.test.example.Child#getKey <em>Key</em>}</li>
+ * <li>{@link org.eclipse.emf.ecp.view.keyattribute.test.example.Child#getIntermediateTarget <em>Intermediate
+ * Target</em>}</li>
+ * <li>{@link org.eclipse.emf.ecp.view.keyattribute.test.example.Child#getKey <em>Key</em>}</li>
  * </ul>
  *
  * @see org.eclipse.emf.ecp.view.keyattribute.test.example.ExamplePackage#getChild()
@@ -26,10 +37,11 @@
 	 * Returns the value of the '<em><b>Intermediate Target</b></em>' containment reference.
 	 * <!-- begin-user-doc -->
 	 * <p>
-	 * If the meaning of the '<em>Intermediate Target</em>' containment reference isn't clear, there really should be
-	 * more of a description here...
+	 * If the meaning of the '<em>Intermediate Target</em>' containment reference isn't clear,
+	 * there really should be more of a description here...
 	 * </p>
 	 * <!-- end-user-doc -->
+	 *
 	 * @return the value of the '<em>Intermediate Target</em>' containment reference.
 	 * @see #setIntermediateTarget(IntermediateTarget)
 	 * @see org.eclipse.emf.ecp.view.keyattribute.test.example.ExamplePackage#getChild_IntermediateTarget()
@@ -39,9 +51,11 @@
 	IntermediateTarget getIntermediateTarget();
 
 	/**
-	 * Sets the value of the '{@link org.eclipse.emf.ecp.view.keyattribute.test.example.Child#getIntermediateTarget <em>Intermediate Target</em>}' containment reference.
+	 * Sets the value of the '{@link org.eclipse.emf.ecp.view.keyattribute.test.example.Child#getIntermediateTarget
+	 * <em>Intermediate Target</em>}' containment reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @param value the new value of the '<em>Intermediate Target</em>' containment reference.
 	 * @see #getIntermediateTarget()
 	 * @generated
@@ -52,10 +66,11 @@
 	 * Returns the value of the '<em><b>Key</b></em>' containment reference.
 	 * <!-- begin-user-doc -->
 	 * <p>
-	 * If the meaning of the '<em>Key</em>' containment reference isn't clear, there really should be more of a
-	 * description here...
+	 * If the meaning of the '<em>Key</em>' containment reference isn't clear,
+	 * there really should be more of a description here...
 	 * </p>
 	 * <!-- end-user-doc -->
+	 *
 	 * @return the value of the '<em>Key</em>' containment reference.
 	 * @see #setKey(KeyContainer)
 	 * @see org.eclipse.emf.ecp.view.keyattribute.test.example.ExamplePackage#getChild_Key()
@@ -65,9 +80,11 @@
 	KeyContainer getKey();
 
 	/**
-	 * Sets the value of the '{@link org.eclipse.emf.ecp.view.keyattribute.test.example.Child#getKey <em>Key</em>}' containment reference.
+	 * Sets the value of the '{@link org.eclipse.emf.ecp.view.keyattribute.test.example.Child#getKey <em>Key</em>}'
+	 * containment reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @param value the new value of the '<em>Key</em>' containment reference.
 	 * @see #getKey()
 	 * @generated
diff --git a/tests/org.eclipse.emf.ecp.view.keyattributedmr.model.test/src/org/eclipse/emf/ecp/view/keyattribute/test/example/Container.java b/tests/org.eclipse.emf.ecp.view.keyattributedmr.model.test/src/org/eclipse/emf/ecp/view/keyattribute/test/example/Container.java
index 7211bdb..ac021b9 100644
--- a/tests/org.eclipse.emf.ecp.view.keyattributedmr.model.test/src/org/eclipse/emf/ecp/view/keyattribute/test/example/Container.java
+++ b/tests/org.eclipse.emf.ecp.view.keyattributedmr.model.test/src/org/eclipse/emf/ecp/view/keyattribute/test/example/Container.java
@@ -1,4 +1,13 @@
 /**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
  */
 package org.eclipse.emf.ecp.view.keyattribute.test.example;
 
@@ -14,7 +23,7 @@
  * The following features are supported:
  * </p>
  * <ul>
- *   <li>{@link org.eclipse.emf.ecp.view.keyattribute.test.example.Container#getChildren <em>Children</em>}</li>
+ * <li>{@link org.eclipse.emf.ecp.view.keyattribute.test.example.Container#getChildren <em>Children</em>}</li>
  * </ul>
  *
  * @see org.eclipse.emf.ecp.view.keyattribute.test.example.ExamplePackage#getContainer()
@@ -27,10 +36,11 @@
 	 * The list contents are of type {@link org.eclipse.emf.ecp.view.keyattribute.test.example.Child}.
 	 * <!-- begin-user-doc -->
 	 * <p>
-	 * If the meaning of the '<em>Children</em>' containment reference list isn't clear, there really should be more of
-	 * a description here...
+	 * If the meaning of the '<em>Children</em>' containment reference list isn't clear,
+	 * there really should be more of a description here...
 	 * </p>
 	 * <!-- end-user-doc -->
+	 *
 	 * @return the value of the '<em>Children</em>' containment reference list.
 	 * @see org.eclipse.emf.ecp.view.keyattribute.test.example.ExamplePackage#getContainer_Children()
 	 * @model containment="true"
diff --git a/tests/org.eclipse.emf.ecp.view.keyattributedmr.model.test/src/org/eclipse/emf/ecp/view/keyattribute/test/example/ExampleFactory.java b/tests/org.eclipse.emf.ecp.view.keyattributedmr.model.test/src/org/eclipse/emf/ecp/view/keyattribute/test/example/ExampleFactory.java
index a04a14f..177b983 100644
--- a/tests/org.eclipse.emf.ecp.view.keyattributedmr.model.test/src/org/eclipse/emf/ecp/view/keyattribute/test/example/ExampleFactory.java
+++ b/tests/org.eclipse.emf.ecp.view.keyattributedmr.model.test/src/org/eclipse/emf/ecp/view/keyattribute/test/example/ExampleFactory.java
@@ -1,4 +1,13 @@
 /**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
  */
 package org.eclipse.emf.ecp.view.keyattribute.test.example;
 
@@ -9,6 +18,7 @@
  * The <b>Factory</b> for the model.
  * It provides a create method for each non-abstract class of the model.
  * <!-- end-user-doc -->
+ *
  * @see org.eclipse.emf.ecp.view.keyattribute.test.example.ExamplePackage
  * @generated
  */
@@ -17,6 +27,7 @@
 	 * The singleton instance of the factory.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	ExampleFactory eINSTANCE = org.eclipse.emf.ecp.view.keyattribute.test.example.impl.ExampleFactoryImpl.init();
@@ -25,6 +36,7 @@
 	 * Returns a new object of class '<em>Root</em>'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @return a new object of class '<em>Root</em>'.
 	 * @generated
 	 */
@@ -34,6 +46,7 @@
 	 * Returns a new object of class '<em>Intermediate</em>'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @return a new object of class '<em>Intermediate</em>'.
 	 * @generated
 	 */
@@ -43,6 +56,7 @@
 	 * Returns a new object of class '<em>Container</em>'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @return a new object of class '<em>Container</em>'.
 	 * @generated
 	 */
@@ -52,6 +66,7 @@
 	 * Returns a new object of class '<em>Child</em>'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @return a new object of class '<em>Child</em>'.
 	 * @generated
 	 */
@@ -61,6 +76,7 @@
 	 * Returns a new object of class '<em>Intermediate Target</em>'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @return a new object of class '<em>Intermediate Target</em>'.
 	 * @generated
 	 */
@@ -70,6 +86,7 @@
 	 * Returns a new object of class '<em>Target</em>'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @return a new object of class '<em>Target</em>'.
 	 * @generated
 	 */
@@ -79,6 +96,7 @@
 	 * Returns a new object of class '<em>Key Container</em>'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @return a new object of class '<em>Key Container</em>'.
 	 * @generated
 	 */
@@ -88,6 +106,7 @@
 	 * Returns the package supported by this factory.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @return the package supported by this factory.
 	 * @generated
 	 */
diff --git a/tests/org.eclipse.emf.ecp.view.keyattributedmr.model.test/src/org/eclipse/emf/ecp/view/keyattribute/test/example/ExamplePackage.java b/tests/org.eclipse.emf.ecp.view.keyattributedmr.model.test/src/org/eclipse/emf/ecp/view/keyattribute/test/example/ExamplePackage.java
index 8fc6918..1d51472 100644
--- a/tests/org.eclipse.emf.ecp.view.keyattributedmr.model.test/src/org/eclipse/emf/ecp/view/keyattribute/test/example/ExamplePackage.java
+++ b/tests/org.eclipse.emf.ecp.view.keyattributedmr.model.test/src/org/eclipse/emf/ecp/view/keyattribute/test/example/ExamplePackage.java
@@ -1,4 +1,13 @@
 /**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
  */
 package org.eclipse.emf.ecp.view.keyattribute.test.example;
 
@@ -19,6 +28,7 @@
  * <li>and each data type</li>
  * </ul>
  * <!-- end-user-doc -->
+ *
  * @see org.eclipse.emf.ecp.view.keyattribute.test.example.ExampleFactory
  * @model kind="package"
  * @generated
@@ -28,6 +38,7 @@
 	 * The package name.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	String eNAME = "example"; //$NON-NLS-1$
@@ -36,6 +47,7 @@
 	 * The package namespace URI.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	String eNS_URI = "http://www.eclipse.org/emf/ecp/example/keyattribute/model"; //$NON-NLS-1$
@@ -44,6 +56,7 @@
 	 * The package namespace name.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	String eNS_PREFIX = "org.eclipse.emf.ecp.example.keyattribute.model"; //$NON-NLS-1$
@@ -52,14 +65,17 @@
 	 * The singleton instance of the package.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	ExamplePackage eINSTANCE = org.eclipse.emf.ecp.view.keyattribute.test.example.impl.ExamplePackageImpl.init();
 
 	/**
-	 * The meta object id for the '{@link org.eclipse.emf.ecp.view.keyattribute.test.example.impl.RootImpl <em>Root</em>}' class.
+	 * The meta object id for the '{@link org.eclipse.emf.ecp.view.keyattribute.test.example.impl.RootImpl
+	 * <em>Root</em>}' class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @see org.eclipse.emf.ecp.view.keyattribute.test.example.impl.RootImpl
 	 * @see org.eclipse.emf.ecp.view.keyattribute.test.example.impl.ExamplePackageImpl#getRoot()
 	 * @generated
@@ -70,6 +86,7 @@
 	 * The feature id for the '<em><b>Intermediate</b></em>' containment reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 * @ordered
 	 */
@@ -79,6 +96,7 @@
 	 * The number of structural features of the '<em>Root</em>' class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 * @ordered
 	 */
@@ -88,15 +106,18 @@
 	 * The number of operations of the '<em>Root</em>' class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 * @ordered
 	 */
 	int ROOT_OPERATION_COUNT = 0;
 
 	/**
-	 * The meta object id for the '{@link org.eclipse.emf.ecp.view.keyattribute.test.example.impl.IntermediateImpl <em>Intermediate</em>}' class.
+	 * The meta object id for the '{@link org.eclipse.emf.ecp.view.keyattribute.test.example.impl.IntermediateImpl
+	 * <em>Intermediate</em>}' class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @see org.eclipse.emf.ecp.view.keyattribute.test.example.impl.IntermediateImpl
 	 * @see org.eclipse.emf.ecp.view.keyattribute.test.example.impl.ExamplePackageImpl#getIntermediate()
 	 * @generated
@@ -107,6 +128,7 @@
 	 * The feature id for the '<em><b>Container</b></em>' containment reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 * @ordered
 	 */
@@ -116,6 +138,7 @@
 	 * The number of structural features of the '<em>Intermediate</em>' class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 * @ordered
 	 */
@@ -125,15 +148,18 @@
 	 * The number of operations of the '<em>Intermediate</em>' class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 * @ordered
 	 */
 	int INTERMEDIATE_OPERATION_COUNT = 0;
 
 	/**
-	 * The meta object id for the '{@link org.eclipse.emf.ecp.view.keyattribute.test.example.impl.ContainerImpl <em>Container</em>}' class.
+	 * The meta object id for the '{@link org.eclipse.emf.ecp.view.keyattribute.test.example.impl.ContainerImpl
+	 * <em>Container</em>}' class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @see org.eclipse.emf.ecp.view.keyattribute.test.example.impl.ContainerImpl
 	 * @see org.eclipse.emf.ecp.view.keyattribute.test.example.impl.ExamplePackageImpl#getContainer()
 	 * @generated
@@ -144,6 +170,7 @@
 	 * The feature id for the '<em><b>Children</b></em>' containment reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 * @ordered
 	 */
@@ -153,6 +180,7 @@
 	 * The number of structural features of the '<em>Container</em>' class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 * @ordered
 	 */
@@ -162,15 +190,18 @@
 	 * The number of operations of the '<em>Container</em>' class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 * @ordered
 	 */
 	int CONTAINER_OPERATION_COUNT = 0;
 
 	/**
-	 * The meta object id for the '{@link org.eclipse.emf.ecp.view.keyattribute.test.example.impl.ChildImpl <em>Child</em>}' class.
+	 * The meta object id for the '{@link org.eclipse.emf.ecp.view.keyattribute.test.example.impl.ChildImpl
+	 * <em>Child</em>}' class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @see org.eclipse.emf.ecp.view.keyattribute.test.example.impl.ChildImpl
 	 * @see org.eclipse.emf.ecp.view.keyattribute.test.example.impl.ExamplePackageImpl#getChild()
 	 * @generated
@@ -181,6 +212,7 @@
 	 * The feature id for the '<em><b>Intermediate Target</b></em>' containment reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 * @ordered
 	 */
@@ -190,6 +222,7 @@
 	 * The feature id for the '<em><b>Key</b></em>' containment reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 * @ordered
 	 */
@@ -199,6 +232,7 @@
 	 * The number of structural features of the '<em>Child</em>' class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 * @ordered
 	 */
@@ -208,15 +242,18 @@
 	 * The number of operations of the '<em>Child</em>' class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 * @ordered
 	 */
 	int CHILD_OPERATION_COUNT = 0;
 
 	/**
-	 * The meta object id for the '{@link org.eclipse.emf.ecp.view.keyattribute.test.example.impl.IntermediateTargetImpl <em>Intermediate Target</em>}' class.
+	 * The meta object id for the '{@link org.eclipse.emf.ecp.view.keyattribute.test.example.impl.IntermediateTargetImpl
+	 * <em>Intermediate Target</em>}' class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @see org.eclipse.emf.ecp.view.keyattribute.test.example.impl.IntermediateTargetImpl
 	 * @see org.eclipse.emf.ecp.view.keyattribute.test.example.impl.ExamplePackageImpl#getIntermediateTarget()
 	 * @generated
@@ -227,6 +264,7 @@
 	 * The feature id for the '<em><b>Target</b></em>' containment reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 * @ordered
 	 */
@@ -236,6 +274,7 @@
 	 * The number of structural features of the '<em>Intermediate Target</em>' class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 * @ordered
 	 */
@@ -245,15 +284,18 @@
 	 * The number of operations of the '<em>Intermediate Target</em>' class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 * @ordered
 	 */
 	int INTERMEDIATE_TARGET_OPERATION_COUNT = 0;
 
 	/**
-	 * The meta object id for the '{@link org.eclipse.emf.ecp.view.keyattribute.test.example.impl.TargetImpl <em>Target</em>}' class.
+	 * The meta object id for the '{@link org.eclipse.emf.ecp.view.keyattribute.test.example.impl.TargetImpl
+	 * <em>Target</em>}' class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @see org.eclipse.emf.ecp.view.keyattribute.test.example.impl.TargetImpl
 	 * @see org.eclipse.emf.ecp.view.keyattribute.test.example.impl.ExamplePackageImpl#getTarget()
 	 * @generated
@@ -264,6 +306,7 @@
 	 * The feature id for the '<em><b>Name</b></em>' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 * @ordered
 	 */
@@ -273,6 +316,7 @@
 	 * The number of structural features of the '<em>Target</em>' class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 * @ordered
 	 */
@@ -282,15 +326,18 @@
 	 * The number of operations of the '<em>Target</em>' class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 * @ordered
 	 */
 	int TARGET_OPERATION_COUNT = 0;
 
 	/**
-	 * The meta object id for the '{@link org.eclipse.emf.ecp.view.keyattribute.test.example.impl.KeyContainerImpl <em>Key Container</em>}' class.
+	 * The meta object id for the '{@link org.eclipse.emf.ecp.view.keyattribute.test.example.impl.KeyContainerImpl
+	 * <em>Key Container</em>}' class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @see org.eclipse.emf.ecp.view.keyattribute.test.example.impl.KeyContainerImpl
 	 * @see org.eclipse.emf.ecp.view.keyattribute.test.example.impl.ExamplePackageImpl#getKeyContainer()
 	 * @generated
@@ -301,6 +348,7 @@
 	 * The feature id for the '<em><b>Key</b></em>' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 * @ordered
 	 */
@@ -310,6 +358,7 @@
 	 * The number of structural features of the '<em>Key Container</em>' class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 * @ordered
 	 */
@@ -319,15 +368,18 @@
 	 * The number of operations of the '<em>Key Container</em>' class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 * @ordered
 	 */
 	int KEY_CONTAINER_OPERATION_COUNT = 0;
 
 	/**
-	 * Returns the meta object for class '{@link org.eclipse.emf.ecp.view.keyattribute.test.example.Root <em>Root</em>}'.
+	 * Returns the meta object for class '{@link org.eclipse.emf.ecp.view.keyattribute.test.example.Root
+	 * <em>Root</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @return the meta object for class '<em>Root</em>'.
 	 * @see org.eclipse.emf.ecp.view.keyattribute.test.example.Root
 	 * @generated
@@ -335,9 +387,11 @@
 	EClass getRoot();
 
 	/**
-	 * Returns the meta object for the containment reference '{@link org.eclipse.emf.ecp.view.keyattribute.test.example.Root#getIntermediate <em>Intermediate</em>}'.
+	 * Returns the meta object for the containment reference
+	 * '{@link org.eclipse.emf.ecp.view.keyattribute.test.example.Root#getIntermediate <em>Intermediate</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @return the meta object for the containment reference '<em>Intermediate</em>'.
 	 * @see org.eclipse.emf.ecp.view.keyattribute.test.example.Root#getIntermediate()
 	 * @see #getRoot()
@@ -346,9 +400,11 @@
 	EReference getRoot_Intermediate();
 
 	/**
-	 * Returns the meta object for class '{@link org.eclipse.emf.ecp.view.keyattribute.test.example.Intermediate <em>Intermediate</em>}'.
+	 * Returns the meta object for class '{@link org.eclipse.emf.ecp.view.keyattribute.test.example.Intermediate
+	 * <em>Intermediate</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @return the meta object for class '<em>Intermediate</em>'.
 	 * @see org.eclipse.emf.ecp.view.keyattribute.test.example.Intermediate
 	 * @generated
@@ -356,9 +412,11 @@
 	EClass getIntermediate();
 
 	/**
-	 * Returns the meta object for the containment reference '{@link org.eclipse.emf.ecp.view.keyattribute.test.example.Intermediate#getContainer <em>Container</em>}'.
+	 * Returns the meta object for the containment reference
+	 * '{@link org.eclipse.emf.ecp.view.keyattribute.test.example.Intermediate#getContainer <em>Container</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @return the meta object for the containment reference '<em>Container</em>'.
 	 * @see org.eclipse.emf.ecp.view.keyattribute.test.example.Intermediate#getContainer()
 	 * @see #getIntermediate()
@@ -367,9 +425,11 @@
 	EReference getIntermediate_Container();
 
 	/**
-	 * Returns the meta object for class '{@link org.eclipse.emf.ecp.view.keyattribute.test.example.Container <em>Container</em>}'.
+	 * Returns the meta object for class '{@link org.eclipse.emf.ecp.view.keyattribute.test.example.Container
+	 * <em>Container</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @return the meta object for class '<em>Container</em>'.
 	 * @see org.eclipse.emf.ecp.view.keyattribute.test.example.Container
 	 * @generated
@@ -377,9 +437,11 @@
 	EClass getContainer();
 
 	/**
-	 * Returns the meta object for the containment reference list '{@link org.eclipse.emf.ecp.view.keyattribute.test.example.Container#getChildren <em>Children</em>}'.
+	 * Returns the meta object for the containment reference list
+	 * '{@link org.eclipse.emf.ecp.view.keyattribute.test.example.Container#getChildren <em>Children</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @return the meta object for the containment reference list '<em>Children</em>'.
 	 * @see org.eclipse.emf.ecp.view.keyattribute.test.example.Container#getChildren()
 	 * @see #getContainer()
@@ -388,9 +450,11 @@
 	EReference getContainer_Children();
 
 	/**
-	 * Returns the meta object for class '{@link org.eclipse.emf.ecp.view.keyattribute.test.example.Child <em>Child</em>}'.
+	 * Returns the meta object for class '{@link org.eclipse.emf.ecp.view.keyattribute.test.example.Child
+	 * <em>Child</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @return the meta object for class '<em>Child</em>'.
 	 * @see org.eclipse.emf.ecp.view.keyattribute.test.example.Child
 	 * @generated
@@ -398,9 +462,12 @@
 	EClass getChild();
 
 	/**
-	 * Returns the meta object for the containment reference '{@link org.eclipse.emf.ecp.view.keyattribute.test.example.Child#getIntermediateTarget <em>Intermediate Target</em>}'.
+	 * Returns the meta object for the containment reference
+	 * '{@link org.eclipse.emf.ecp.view.keyattribute.test.example.Child#getIntermediateTarget <em>Intermediate
+	 * Target</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @return the meta object for the containment reference '<em>Intermediate Target</em>'.
 	 * @see org.eclipse.emf.ecp.view.keyattribute.test.example.Child#getIntermediateTarget()
 	 * @see #getChild()
@@ -409,9 +476,11 @@
 	EReference getChild_IntermediateTarget();
 
 	/**
-	 * Returns the meta object for the containment reference '{@link org.eclipse.emf.ecp.view.keyattribute.test.example.Child#getKey <em>Key</em>}'.
+	 * Returns the meta object for the containment reference
+	 * '{@link org.eclipse.emf.ecp.view.keyattribute.test.example.Child#getKey <em>Key</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @return the meta object for the containment reference '<em>Key</em>'.
 	 * @see org.eclipse.emf.ecp.view.keyattribute.test.example.Child#getKey()
 	 * @see #getChild()
@@ -420,9 +489,11 @@
 	EReference getChild_Key();
 
 	/**
-	 * Returns the meta object for class '{@link org.eclipse.emf.ecp.view.keyattribute.test.example.IntermediateTarget <em>Intermediate Target</em>}'.
+	 * Returns the meta object for class '{@link org.eclipse.emf.ecp.view.keyattribute.test.example.IntermediateTarget
+	 * <em>Intermediate Target</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @return the meta object for class '<em>Intermediate Target</em>'.
 	 * @see org.eclipse.emf.ecp.view.keyattribute.test.example.IntermediateTarget
 	 * @generated
@@ -430,9 +501,11 @@
 	EClass getIntermediateTarget();
 
 	/**
-	 * Returns the meta object for the containment reference '{@link org.eclipse.emf.ecp.view.keyattribute.test.example.IntermediateTarget#getTarget <em>Target</em>}'.
+	 * Returns the meta object for the containment reference
+	 * '{@link org.eclipse.emf.ecp.view.keyattribute.test.example.IntermediateTarget#getTarget <em>Target</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @return the meta object for the containment reference '<em>Target</em>'.
 	 * @see org.eclipse.emf.ecp.view.keyattribute.test.example.IntermediateTarget#getTarget()
 	 * @see #getIntermediateTarget()
@@ -441,9 +514,11 @@
 	EReference getIntermediateTarget_Target();
 
 	/**
-	 * Returns the meta object for class '{@link org.eclipse.emf.ecp.view.keyattribute.test.example.Target <em>Target</em>}'.
+	 * Returns the meta object for class '{@link org.eclipse.emf.ecp.view.keyattribute.test.example.Target
+	 * <em>Target</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @return the meta object for class '<em>Target</em>'.
 	 * @see org.eclipse.emf.ecp.view.keyattribute.test.example.Target
 	 * @generated
@@ -451,9 +526,11 @@
 	EClass getTarget();
 
 	/**
-	 * Returns the meta object for the attribute '{@link org.eclipse.emf.ecp.view.keyattribute.test.example.Target#getName <em>Name</em>}'.
+	 * Returns the meta object for the attribute
+	 * '{@link org.eclipse.emf.ecp.view.keyattribute.test.example.Target#getName <em>Name</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @return the meta object for the attribute '<em>Name</em>'.
 	 * @see org.eclipse.emf.ecp.view.keyattribute.test.example.Target#getName()
 	 * @see #getTarget()
@@ -462,9 +539,11 @@
 	EAttribute getTarget_Name();
 
 	/**
-	 * Returns the meta object for class '{@link org.eclipse.emf.ecp.view.keyattribute.test.example.KeyContainer <em>Key Container</em>}'.
+	 * Returns the meta object for class '{@link org.eclipse.emf.ecp.view.keyattribute.test.example.KeyContainer <em>Key
+	 * Container</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @return the meta object for class '<em>Key Container</em>'.
 	 * @see org.eclipse.emf.ecp.view.keyattribute.test.example.KeyContainer
 	 * @generated
@@ -472,9 +551,11 @@
 	EClass getKeyContainer();
 
 	/**
-	 * Returns the meta object for the attribute '{@link org.eclipse.emf.ecp.view.keyattribute.test.example.KeyContainer#getKey <em>Key</em>}'.
+	 * Returns the meta object for the attribute
+	 * '{@link org.eclipse.emf.ecp.view.keyattribute.test.example.KeyContainer#getKey <em>Key</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @return the meta object for the attribute '<em>Key</em>'.
 	 * @see org.eclipse.emf.ecp.view.keyattribute.test.example.KeyContainer#getKey()
 	 * @see #getKeyContainer()
@@ -486,6 +567,7 @@
 	 * 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.
 	 * @generated
 	 */
@@ -502,13 +584,16 @@
 	 * <li>and each data type</li>
 	 * </ul>
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	interface Literals {
 		/**
-		 * The meta object literal for the '{@link org.eclipse.emf.ecp.view.keyattribute.test.example.impl.RootImpl <em>Root</em>}' class.
+		 * The meta object literal for the '{@link org.eclipse.emf.ecp.view.keyattribute.test.example.impl.RootImpl
+		 * <em>Root</em>}' class.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
+		 *
 		 * @see org.eclipse.emf.ecp.view.keyattribute.test.example.impl.RootImpl
 		 * @see org.eclipse.emf.ecp.view.keyattribute.test.example.impl.ExamplePackageImpl#getRoot()
 		 * @generated
@@ -519,14 +604,18 @@
 		 * The meta object literal for the '<em><b>Intermediate</b></em>' containment reference feature.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
+		 *
 		 * @generated
 		 */
 		EReference ROOT__INTERMEDIATE = eINSTANCE.getRoot_Intermediate();
 
 		/**
-		 * The meta object literal for the '{@link org.eclipse.emf.ecp.view.keyattribute.test.example.impl.IntermediateImpl <em>Intermediate</em>}' class.
+		 * The meta object literal for the
+		 * '{@link org.eclipse.emf.ecp.view.keyattribute.test.example.impl.IntermediateImpl <em>Intermediate</em>}'
+		 * class.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
+		 *
 		 * @see org.eclipse.emf.ecp.view.keyattribute.test.example.impl.IntermediateImpl
 		 * @see org.eclipse.emf.ecp.view.keyattribute.test.example.impl.ExamplePackageImpl#getIntermediate()
 		 * @generated
@@ -537,14 +626,17 @@
 		 * The meta object literal for the '<em><b>Container</b></em>' containment reference feature.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
+		 *
 		 * @generated
 		 */
 		EReference INTERMEDIATE__CONTAINER = eINSTANCE.getIntermediate_Container();
 
 		/**
-		 * The meta object literal for the '{@link org.eclipse.emf.ecp.view.keyattribute.test.example.impl.ContainerImpl <em>Container</em>}' class.
+		 * The meta object literal for the '{@link org.eclipse.emf.ecp.view.keyattribute.test.example.impl.ContainerImpl
+		 * <em>Container</em>}' class.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
+		 *
 		 * @see org.eclipse.emf.ecp.view.keyattribute.test.example.impl.ContainerImpl
 		 * @see org.eclipse.emf.ecp.view.keyattribute.test.example.impl.ExamplePackageImpl#getContainer()
 		 * @generated
@@ -555,14 +647,17 @@
 		 * The meta object literal for the '<em><b>Children</b></em>' containment reference list feature.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
+		 *
 		 * @generated
 		 */
 		EReference CONTAINER__CHILDREN = eINSTANCE.getContainer_Children();
 
 		/**
-		 * The meta object literal for the '{@link org.eclipse.emf.ecp.view.keyattribute.test.example.impl.ChildImpl <em>Child</em>}' class.
+		 * The meta object literal for the '{@link org.eclipse.emf.ecp.view.keyattribute.test.example.impl.ChildImpl
+		 * <em>Child</em>}' class.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
+		 *
 		 * @see org.eclipse.emf.ecp.view.keyattribute.test.example.impl.ChildImpl
 		 * @see org.eclipse.emf.ecp.view.keyattribute.test.example.impl.ExamplePackageImpl#getChild()
 		 * @generated
@@ -573,6 +668,7 @@
 		 * The meta object literal for the '<em><b>Intermediate Target</b></em>' containment reference feature.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
+		 *
 		 * @generated
 		 */
 		EReference CHILD__INTERMEDIATE_TARGET = eINSTANCE.getChild_IntermediateTarget();
@@ -581,14 +677,18 @@
 		 * The meta object literal for the '<em><b>Key</b></em>' containment reference feature.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
+		 *
 		 * @generated
 		 */
 		EReference CHILD__KEY = eINSTANCE.getChild_Key();
 
 		/**
-		 * The meta object literal for the '{@link org.eclipse.emf.ecp.view.keyattribute.test.example.impl.IntermediateTargetImpl <em>Intermediate Target</em>}' class.
+		 * The meta object literal for the
+		 * '{@link org.eclipse.emf.ecp.view.keyattribute.test.example.impl.IntermediateTargetImpl <em>Intermediate
+		 * Target</em>}' class.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
+		 *
 		 * @see org.eclipse.emf.ecp.view.keyattribute.test.example.impl.IntermediateTargetImpl
 		 * @see org.eclipse.emf.ecp.view.keyattribute.test.example.impl.ExamplePackageImpl#getIntermediateTarget()
 		 * @generated
@@ -599,14 +699,17 @@
 		 * The meta object literal for the '<em><b>Target</b></em>' containment reference feature.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
+		 *
 		 * @generated
 		 */
 		EReference INTERMEDIATE_TARGET__TARGET = eINSTANCE.getIntermediateTarget_Target();
 
 		/**
-		 * The meta object literal for the '{@link org.eclipse.emf.ecp.view.keyattribute.test.example.impl.TargetImpl <em>Target</em>}' class.
+		 * The meta object literal for the '{@link org.eclipse.emf.ecp.view.keyattribute.test.example.impl.TargetImpl
+		 * <em>Target</em>}' class.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
+		 *
 		 * @see org.eclipse.emf.ecp.view.keyattribute.test.example.impl.TargetImpl
 		 * @see org.eclipse.emf.ecp.view.keyattribute.test.example.impl.ExamplePackageImpl#getTarget()
 		 * @generated
@@ -617,14 +720,18 @@
 		 * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
+		 *
 		 * @generated
 		 */
 		EAttribute TARGET__NAME = eINSTANCE.getTarget_Name();
 
 		/**
-		 * The meta object literal for the '{@link org.eclipse.emf.ecp.view.keyattribute.test.example.impl.KeyContainerImpl <em>Key Container</em>}' class.
+		 * The meta object literal for the
+		 * '{@link org.eclipse.emf.ecp.view.keyattribute.test.example.impl.KeyContainerImpl <em>Key Container</em>}'
+		 * class.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
+		 *
 		 * @see org.eclipse.emf.ecp.view.keyattribute.test.example.impl.KeyContainerImpl
 		 * @see org.eclipse.emf.ecp.view.keyattribute.test.example.impl.ExamplePackageImpl#getKeyContainer()
 		 * @generated
@@ -635,6 +742,7 @@
 		 * The meta object literal for the '<em><b>Key</b></em>' attribute feature.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
+		 *
 		 * @generated
 		 */
 		EAttribute KEY_CONTAINER__KEY = eINSTANCE.getKeyContainer_Key();
diff --git a/tests/org.eclipse.emf.ecp.view.keyattributedmr.model.test/src/org/eclipse/emf/ecp/view/keyattribute/test/example/Intermediate.java b/tests/org.eclipse.emf.ecp.view.keyattributedmr.model.test/src/org/eclipse/emf/ecp/view/keyattribute/test/example/Intermediate.java
index f30693f..93dbe4c 100644
--- a/tests/org.eclipse.emf.ecp.view.keyattributedmr.model.test/src/org/eclipse/emf/ecp/view/keyattribute/test/example/Intermediate.java
+++ b/tests/org.eclipse.emf.ecp.view.keyattributedmr.model.test/src/org/eclipse/emf/ecp/view/keyattribute/test/example/Intermediate.java
@@ -1,4 +1,13 @@
 /**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
  */
 package org.eclipse.emf.ecp.view.keyattribute.test.example;
 
@@ -13,7 +22,7 @@
  * The following features are supported:
  * </p>
  * <ul>
- *   <li>{@link org.eclipse.emf.ecp.view.keyattribute.test.example.Intermediate#getContainer <em>Container</em>}</li>
+ * <li>{@link org.eclipse.emf.ecp.view.keyattribute.test.example.Intermediate#getContainer <em>Container</em>}</li>
  * </ul>
  *
  * @see org.eclipse.emf.ecp.view.keyattribute.test.example.ExamplePackage#getIntermediate()
@@ -25,10 +34,11 @@
 	 * Returns the value of the '<em><b>Container</b></em>' containment reference.
 	 * <!-- begin-user-doc -->
 	 * <p>
-	 * If the meaning of the '<em>Container</em>' containment reference isn't clear, there really should be more of a
-	 * description here...
+	 * If the meaning of the '<em>Container</em>' containment reference isn't clear,
+	 * there really should be more of a description here...
 	 * </p>
 	 * <!-- end-user-doc -->
+	 *
 	 * @return the value of the '<em>Container</em>' containment reference.
 	 * @see #setContainer(Container)
 	 * @see org.eclipse.emf.ecp.view.keyattribute.test.example.ExamplePackage#getIntermediate_Container()
@@ -38,9 +48,11 @@
 	Container getContainer();
 
 	/**
-	 * Sets the value of the '{@link org.eclipse.emf.ecp.view.keyattribute.test.example.Intermediate#getContainer <em>Container</em>}' containment reference.
+	 * Sets the value of the '{@link org.eclipse.emf.ecp.view.keyattribute.test.example.Intermediate#getContainer
+	 * <em>Container</em>}' containment reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @param value the new value of the '<em>Container</em>' containment reference.
 	 * @see #getContainer()
 	 * @generated
diff --git a/tests/org.eclipse.emf.ecp.view.keyattributedmr.model.test/src/org/eclipse/emf/ecp/view/keyattribute/test/example/IntermediateTarget.java b/tests/org.eclipse.emf.ecp.view.keyattributedmr.model.test/src/org/eclipse/emf/ecp/view/keyattribute/test/example/IntermediateTarget.java
index a3de6d5..e3d1709 100644
--- a/tests/org.eclipse.emf.ecp.view.keyattributedmr.model.test/src/org/eclipse/emf/ecp/view/keyattribute/test/example/IntermediateTarget.java
+++ b/tests/org.eclipse.emf.ecp.view.keyattributedmr.model.test/src/org/eclipse/emf/ecp/view/keyattribute/test/example/IntermediateTarget.java
@@ -1,4 +1,13 @@
 /**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
  */
 package org.eclipse.emf.ecp.view.keyattribute.test.example;
 
@@ -13,7 +22,7 @@
  * The following features are supported:
  * </p>
  * <ul>
- *   <li>{@link org.eclipse.emf.ecp.view.keyattribute.test.example.IntermediateTarget#getTarget <em>Target</em>}</li>
+ * <li>{@link org.eclipse.emf.ecp.view.keyattribute.test.example.IntermediateTarget#getTarget <em>Target</em>}</li>
  * </ul>
  *
  * @see org.eclipse.emf.ecp.view.keyattribute.test.example.ExamplePackage#getIntermediateTarget()
@@ -25,10 +34,11 @@
 	 * Returns the value of the '<em><b>Target</b></em>' containment reference.
 	 * <!-- begin-user-doc -->
 	 * <p>
-	 * If the meaning of the '<em>Target</em>' containment reference isn't clear, there really should be more of a
-	 * description here...
+	 * If the meaning of the '<em>Target</em>' containment reference isn't clear,
+	 * there really should be more of a description here...
 	 * </p>
 	 * <!-- end-user-doc -->
+	 *
 	 * @return the value of the '<em>Target</em>' containment reference.
 	 * @see #setTarget(Target)
 	 * @see org.eclipse.emf.ecp.view.keyattribute.test.example.ExamplePackage#getIntermediateTarget_Target()
@@ -38,9 +48,11 @@
 	Target getTarget();
 
 	/**
-	 * Sets the value of the '{@link org.eclipse.emf.ecp.view.keyattribute.test.example.IntermediateTarget#getTarget <em>Target</em>}' containment reference.
+	 * Sets the value of the '{@link org.eclipse.emf.ecp.view.keyattribute.test.example.IntermediateTarget#getTarget
+	 * <em>Target</em>}' containment reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @param value the new value of the '<em>Target</em>' containment reference.
 	 * @see #getTarget()
 	 * @generated
diff --git a/tests/org.eclipse.emf.ecp.view.keyattributedmr.model.test/src/org/eclipse/emf/ecp/view/keyattribute/test/example/KeyContainer.java b/tests/org.eclipse.emf.ecp.view.keyattributedmr.model.test/src/org/eclipse/emf/ecp/view/keyattribute/test/example/KeyContainer.java
index 80c8f6d..2d2cbf1 100644
--- a/tests/org.eclipse.emf.ecp.view.keyattributedmr.model.test/src/org/eclipse/emf/ecp/view/keyattribute/test/example/KeyContainer.java
+++ b/tests/org.eclipse.emf.ecp.view.keyattributedmr.model.test/src/org/eclipse/emf/ecp/view/keyattribute/test/example/KeyContainer.java
@@ -1,4 +1,13 @@
 /**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
  */
 package org.eclipse.emf.ecp.view.keyattribute.test.example;
 
@@ -13,7 +22,7 @@
  * The following features are supported:
  * </p>
  * <ul>
- *   <li>{@link org.eclipse.emf.ecp.view.keyattribute.test.example.KeyContainer#getKey <em>Key</em>}</li>
+ * <li>{@link org.eclipse.emf.ecp.view.keyattribute.test.example.KeyContainer#getKey <em>Key</em>}</li>
  * </ul>
  *
  * @see org.eclipse.emf.ecp.view.keyattribute.test.example.ExamplePackage#getKeyContainer()
@@ -25,9 +34,11 @@
 	 * Returns the value of the '<em><b>Key</b></em>' attribute.
 	 * <!-- begin-user-doc -->
 	 * <p>
-	 * If the meaning of the '<em>Key</em>' attribute isn't clear, there really should be more of a description here...
+	 * If the meaning of the '<em>Key</em>' attribute isn't clear,
+	 * there really should be more of a description here...
 	 * </p>
 	 * <!-- end-user-doc -->
+	 *
 	 * @return the value of the '<em>Key</em>' attribute.
 	 * @see #setKey(String)
 	 * @see org.eclipse.emf.ecp.view.keyattribute.test.example.ExamplePackage#getKeyContainer_Key()
@@ -37,9 +48,11 @@
 	String getKey();
 
 	/**
-	 * Sets the value of the '{@link org.eclipse.emf.ecp.view.keyattribute.test.example.KeyContainer#getKey <em>Key</em>}' attribute.
+	 * Sets the value of the '{@link org.eclipse.emf.ecp.view.keyattribute.test.example.KeyContainer#getKey
+	 * <em>Key</em>}' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @param value the new value of the '<em>Key</em>' attribute.
 	 * @see #getKey()
 	 * @generated
diff --git a/tests/org.eclipse.emf.ecp.view.keyattributedmr.model.test/src/org/eclipse/emf/ecp/view/keyattribute/test/example/Root.java b/tests/org.eclipse.emf.ecp.view.keyattributedmr.model.test/src/org/eclipse/emf/ecp/view/keyattribute/test/example/Root.java
index c6bf833..5cf4579 100644
--- a/tests/org.eclipse.emf.ecp.view.keyattributedmr.model.test/src/org/eclipse/emf/ecp/view/keyattribute/test/example/Root.java
+++ b/tests/org.eclipse.emf.ecp.view.keyattributedmr.model.test/src/org/eclipse/emf/ecp/view/keyattribute/test/example/Root.java
@@ -1,4 +1,13 @@
 /**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
  */
 package org.eclipse.emf.ecp.view.keyattribute.test.example;
 
@@ -13,7 +22,7 @@
  * The following features are supported:
  * </p>
  * <ul>
- *   <li>{@link org.eclipse.emf.ecp.view.keyattribute.test.example.Root#getIntermediate <em>Intermediate</em>}</li>
+ * <li>{@link org.eclipse.emf.ecp.view.keyattribute.test.example.Root#getIntermediate <em>Intermediate</em>}</li>
  * </ul>
  *
  * @see org.eclipse.emf.ecp.view.keyattribute.test.example.ExamplePackage#getRoot()
@@ -25,10 +34,11 @@
 	 * Returns the value of the '<em><b>Intermediate</b></em>' containment reference.
 	 * <!-- begin-user-doc -->
 	 * <p>
-	 * If the meaning of the '<em>Intermediate</em>' containment reference isn't clear, there really should be more of a
-	 * description here...
+	 * If the meaning of the '<em>Intermediate</em>' containment reference isn't clear,
+	 * there really should be more of a description here...
 	 * </p>
 	 * <!-- end-user-doc -->
+	 *
 	 * @return the value of the '<em>Intermediate</em>' containment reference.
 	 * @see #setIntermediate(Intermediate)
 	 * @see org.eclipse.emf.ecp.view.keyattribute.test.example.ExamplePackage#getRoot_Intermediate()
@@ -38,9 +48,11 @@
 	Intermediate getIntermediate();
 
 	/**
-	 * Sets the value of the '{@link org.eclipse.emf.ecp.view.keyattribute.test.example.Root#getIntermediate <em>Intermediate</em>}' containment reference.
+	 * Sets the value of the '{@link org.eclipse.emf.ecp.view.keyattribute.test.example.Root#getIntermediate
+	 * <em>Intermediate</em>}' containment reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @param value the new value of the '<em>Intermediate</em>' containment reference.
 	 * @see #getIntermediate()
 	 * @generated
diff --git a/tests/org.eclipse.emf.ecp.view.keyattributedmr.model.test/src/org/eclipse/emf/ecp/view/keyattribute/test/example/Target.java b/tests/org.eclipse.emf.ecp.view.keyattributedmr.model.test/src/org/eclipse/emf/ecp/view/keyattribute/test/example/Target.java
index aa48bb5..b2f40cf 100644
--- a/tests/org.eclipse.emf.ecp.view.keyattributedmr.model.test/src/org/eclipse/emf/ecp/view/keyattribute/test/example/Target.java
+++ b/tests/org.eclipse.emf.ecp.view.keyattributedmr.model.test/src/org/eclipse/emf/ecp/view/keyattribute/test/example/Target.java
@@ -1,4 +1,13 @@
 /**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
  */
 package org.eclipse.emf.ecp.view.keyattribute.test.example;
 
@@ -13,7 +22,7 @@
  * The following features are supported:
  * </p>
  * <ul>
- *   <li>{@link org.eclipse.emf.ecp.view.keyattribute.test.example.Target#getName <em>Name</em>}</li>
+ * <li>{@link org.eclipse.emf.ecp.view.keyattribute.test.example.Target#getName <em>Name</em>}</li>
  * </ul>
  *
  * @see org.eclipse.emf.ecp.view.keyattribute.test.example.ExamplePackage#getTarget()
@@ -25,9 +34,11 @@
 	 * Returns the value of the '<em><b>Name</b></em>' attribute.
 	 * <!-- begin-user-doc -->
 	 * <p>
-	 * If the meaning of the '<em>Name</em>' attribute isn't clear, there really should be more of a description here...
+	 * If the meaning of the '<em>Name</em>' attribute isn't clear,
+	 * there really should be more of a description here...
 	 * </p>
 	 * <!-- end-user-doc -->
+	 *
 	 * @return the value of the '<em>Name</em>' attribute.
 	 * @see #setName(String)
 	 * @see org.eclipse.emf.ecp.view.keyattribute.test.example.ExamplePackage#getTarget_Name()
@@ -37,9 +48,11 @@
 	String getName();
 
 	/**
-	 * Sets the value of the '{@link org.eclipse.emf.ecp.view.keyattribute.test.example.Target#getName <em>Name</em>}' attribute.
+	 * Sets the value of the '{@link org.eclipse.emf.ecp.view.keyattribute.test.example.Target#getName <em>Name</em>}'
+	 * attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @param value the new value of the '<em>Name</em>' attribute.
 	 * @see #getName()
 	 * @generated
diff --git a/tests/org.eclipse.emf.ecp.view.keyattributedmr.model.test/src/org/eclipse/emf/ecp/view/keyattribute/test/example/impl/ChildImpl.java b/tests/org.eclipse.emf.ecp.view.keyattributedmr.model.test/src/org/eclipse/emf/ecp/view/keyattribute/test/example/impl/ChildImpl.java
index fc190fc..e650652 100644
--- a/tests/org.eclipse.emf.ecp.view.keyattributedmr.model.test/src/org/eclipse/emf/ecp/view/keyattribute/test/example/impl/ChildImpl.java
+++ b/tests/org.eclipse.emf.ecp.view.keyattributedmr.model.test/src/org/eclipse/emf/ecp/view/keyattribute/test/example/impl/ChildImpl.java
@@ -1,4 +1,13 @@
 /**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
  */
 package org.eclipse.emf.ecp.view.keyattribute.test.example.impl;
 
@@ -21,8 +30,9 @@
  * The following features are implemented:
  * </p>
  * <ul>
- *   <li>{@link org.eclipse.emf.ecp.view.keyattribute.test.example.impl.ChildImpl#getIntermediateTarget <em>Intermediate Target</em>}</li>
- *   <li>{@link org.eclipse.emf.ecp.view.keyattribute.test.example.impl.ChildImpl#getKey <em>Key</em>}</li>
+ * <li>{@link org.eclipse.emf.ecp.view.keyattribute.test.example.impl.ChildImpl#getIntermediateTarget <em>Intermediate
+ * Target</em>}</li>
+ * <li>{@link org.eclipse.emf.ecp.view.keyattribute.test.example.impl.ChildImpl#getKey <em>Key</em>}</li>
  * </ul>
  *
  * @generated
@@ -32,6 +42,7 @@
 	 * The cached value of the '{@link #getIntermediateTarget() <em>Intermediate Target</em>}' containment reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @see #getIntermediateTarget()
 	 * @generated
 	 * @ordered
@@ -42,6 +53,7 @@
 	 * The cached value of the '{@link #getKey() <em>Key</em>}' containment reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @see #getKey()
 	 * @generated
 	 * @ordered
@@ -51,6 +63,7 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	protected ChildImpl() {
@@ -60,6 +73,7 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
@@ -70,6 +84,7 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
@@ -80,14 +95,21 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
-	public NotificationChain basicSetIntermediateTarget(IntermediateTarget newIntermediateTarget, NotificationChain msgs) {
-		IntermediateTarget oldIntermediateTarget = intermediateTarget;
+	public NotificationChain basicSetIntermediateTarget(IntermediateTarget newIntermediateTarget,
+		NotificationChain msgs) {
+		final IntermediateTarget oldIntermediateTarget = intermediateTarget;
 		intermediateTarget = newIntermediateTarget;
 		if (eNotificationRequired()) {
-			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, ExamplePackage.CHILD__INTERMEDIATE_TARGET, oldIntermediateTarget, newIntermediateTarget);
-			if (msgs == null) msgs = notification; else msgs.add(notification);
+			final ENotificationImpl notification = new ENotificationImpl(this, Notification.SET,
+				ExamplePackage.CHILD__INTERMEDIATE_TARGET, oldIntermediateTarget, newIntermediateTarget);
+			if (msgs == null) {
+				msgs = notification;
+			} else {
+				msgs.add(notification);
+			}
 		}
 		return msgs;
 	}
@@ -95,26 +117,35 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
 	public void setIntermediateTarget(IntermediateTarget newIntermediateTarget) {
 		if (newIntermediateTarget != intermediateTarget) {
 			NotificationChain msgs = null;
-			if (intermediateTarget != null)
-				msgs = ((InternalEObject)intermediateTarget).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - ExamplePackage.CHILD__INTERMEDIATE_TARGET, null, msgs);
-			if (newIntermediateTarget != null)
-				msgs = ((InternalEObject)newIntermediateTarget).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - ExamplePackage.CHILD__INTERMEDIATE_TARGET, null, msgs);
+			if (intermediateTarget != null) {
+				msgs = ((InternalEObject) intermediateTarget).eInverseRemove(this,
+					EOPPOSITE_FEATURE_BASE - ExamplePackage.CHILD__INTERMEDIATE_TARGET, null, msgs);
+			}
+			if (newIntermediateTarget != null) {
+				msgs = ((InternalEObject) newIntermediateTarget).eInverseAdd(this,
+					EOPPOSITE_FEATURE_BASE - ExamplePackage.CHILD__INTERMEDIATE_TARGET, null, msgs);
+			}
 			msgs = basicSetIntermediateTarget(newIntermediateTarget, msgs);
-			if (msgs != null) msgs.dispatch();
+			if (msgs != null) {
+				msgs.dispatch();
+			}
+		} else if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, ExamplePackage.CHILD__INTERMEDIATE_TARGET,
+				newIntermediateTarget, newIntermediateTarget));
 		}
-		else if (eNotificationRequired())
-			eNotify(new ENotificationImpl(this, Notification.SET, ExamplePackage.CHILD__INTERMEDIATE_TARGET, newIntermediateTarget, newIntermediateTarget));
 	}
 
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
@@ -125,14 +156,21 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	public NotificationChain basicSetKey(KeyContainer newKey, NotificationChain msgs) {
-		KeyContainer oldKey = key;
+		final KeyContainer oldKey = key;
 		key = newKey;
 		if (eNotificationRequired()) {
-			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, ExamplePackage.CHILD__KEY, oldKey, newKey);
-			if (msgs == null) msgs = notification; else msgs.add(notification);
+			final ENotificationImpl notification = new ENotificationImpl(this, Notification.SET,
+				ExamplePackage.CHILD__KEY,
+				oldKey, newKey);
+			if (msgs == null) {
+				msgs = notification;
+			} else {
+				msgs.add(notification);
+			}
 		}
 		return msgs;
 	}
@@ -140,35 +178,43 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
 	public void setKey(KeyContainer newKey) {
 		if (newKey != key) {
 			NotificationChain msgs = null;
-			if (key != null)
-				msgs = ((InternalEObject)key).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - ExamplePackage.CHILD__KEY, null, msgs);
-			if (newKey != null)
-				msgs = ((InternalEObject)newKey).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - ExamplePackage.CHILD__KEY, null, msgs);
+			if (key != null) {
+				msgs = ((InternalEObject) key).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - ExamplePackage.CHILD__KEY,
+					null, msgs);
+			}
+			if (newKey != null) {
+				msgs = ((InternalEObject) newKey).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - ExamplePackage.CHILD__KEY,
+					null, msgs);
+			}
 			msgs = basicSetKey(newKey, msgs);
-			if (msgs != null) msgs.dispatch();
-		}
-		else if (eNotificationRequired())
+			if (msgs != null) {
+				msgs.dispatch();
+			}
+		} else if (eNotificationRequired()) {
 			eNotify(new ENotificationImpl(this, Notification.SET, ExamplePackage.CHILD__KEY, newKey, newKey));
+		}
 	}
 
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
 		switch (featureID) {
-			case ExamplePackage.CHILD__INTERMEDIATE_TARGET:
-				return basicSetIntermediateTarget(null, msgs);
-			case ExamplePackage.CHILD__KEY:
-				return basicSetKey(null, msgs);
+		case ExamplePackage.CHILD__INTERMEDIATE_TARGET:
+			return basicSetIntermediateTarget(null, msgs);
+		case ExamplePackage.CHILD__KEY:
+			return basicSetKey(null, msgs);
 		}
 		return super.eInverseRemove(otherEnd, featureID, msgs);
 	}
@@ -176,15 +222,16 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
-			case ExamplePackage.CHILD__INTERMEDIATE_TARGET:
-				return getIntermediateTarget();
-			case ExamplePackage.CHILD__KEY:
-				return getKey();
+		case ExamplePackage.CHILD__INTERMEDIATE_TARGET:
+			return getIntermediateTarget();
+		case ExamplePackage.CHILD__KEY:
+			return getKey();
 		}
 		return super.eGet(featureID, resolve, coreType);
 	}
@@ -192,17 +239,18 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
-			case ExamplePackage.CHILD__INTERMEDIATE_TARGET:
-				setIntermediateTarget((IntermediateTarget)newValue);
-				return;
-			case ExamplePackage.CHILD__KEY:
-				setKey((KeyContainer)newValue);
-				return;
+		case ExamplePackage.CHILD__INTERMEDIATE_TARGET:
+			setIntermediateTarget((IntermediateTarget) newValue);
+			return;
+		case ExamplePackage.CHILD__KEY:
+			setKey((KeyContainer) newValue);
+			return;
 		}
 		super.eSet(featureID, newValue);
 	}
@@ -210,17 +258,18 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
-			case ExamplePackage.CHILD__INTERMEDIATE_TARGET:
-				setIntermediateTarget((IntermediateTarget)null);
-				return;
-			case ExamplePackage.CHILD__KEY:
-				setKey((KeyContainer)null);
-				return;
+		case ExamplePackage.CHILD__INTERMEDIATE_TARGET:
+			setIntermediateTarget((IntermediateTarget) null);
+			return;
+		case ExamplePackage.CHILD__KEY:
+			setKey((KeyContainer) null);
+			return;
 		}
 		super.eUnset(featureID);
 	}
@@ -228,15 +277,16 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
-			case ExamplePackage.CHILD__INTERMEDIATE_TARGET:
-				return intermediateTarget != null;
-			case ExamplePackage.CHILD__KEY:
-				return key != null;
+		case ExamplePackage.CHILD__INTERMEDIATE_TARGET:
+			return intermediateTarget != null;
+		case ExamplePackage.CHILD__KEY:
+			return key != null;
 		}
 		return super.eIsSet(featureID);
 	}
diff --git a/tests/org.eclipse.emf.ecp.view.keyattributedmr.model.test/src/org/eclipse/emf/ecp/view/keyattribute/test/example/impl/ContainerImpl.java b/tests/org.eclipse.emf.ecp.view.keyattributedmr.model.test/src/org/eclipse/emf/ecp/view/keyattribute/test/example/impl/ContainerImpl.java
index 5070b10..0580b92 100644
--- a/tests/org.eclipse.emf.ecp.view.keyattributedmr.model.test/src/org/eclipse/emf/ecp/view/keyattribute/test/example/impl/ContainerImpl.java
+++ b/tests/org.eclipse.emf.ecp.view.keyattributedmr.model.test/src/org/eclipse/emf/ecp/view/keyattribute/test/example/impl/ContainerImpl.java
@@ -1,4 +1,13 @@
 /**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
  */
 package org.eclipse.emf.ecp.view.keyattribute.test.example.impl;
 
@@ -22,17 +31,18 @@
  * The following features are implemented:
  * </p>
  * <ul>
- *   <li>{@link org.eclipse.emf.ecp.view.keyattribute.test.example.impl.ContainerImpl#getChildren <em>Children</em>}</li>
+ * <li>{@link org.eclipse.emf.ecp.view.keyattribute.test.example.impl.ContainerImpl#getChildren <em>Children</em>}</li>
  * </ul>
  *
  * @generated
  */
-public class ContainerImpl extends MinimalEObjectImpl.Container implements
-	org.eclipse.emf.ecp.view.keyattribute.test.example.Container {
+public class ContainerImpl extends MinimalEObjectImpl.Container
+	implements org.eclipse.emf.ecp.view.keyattribute.test.example.Container {
 	/**
 	 * The cached value of the '{@link #getChildren() <em>Children</em>}' containment reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @see #getChildren()
 	 * @generated
 	 * @ordered
@@ -42,6 +52,7 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	protected ContainerImpl() {
@@ -51,6 +62,7 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
@@ -61,6 +73,7 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
@@ -74,13 +87,14 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
 		switch (featureID) {
-			case ExamplePackage.CONTAINER__CHILDREN:
-				return ((InternalEList<?>)getChildren()).basicRemove(otherEnd, msgs);
+		case ExamplePackage.CONTAINER__CHILDREN:
+			return ((InternalEList<?>) getChildren()).basicRemove(otherEnd, msgs);
 		}
 		return super.eInverseRemove(otherEnd, featureID, msgs);
 	}
@@ -88,13 +102,14 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
-			case ExamplePackage.CONTAINER__CHILDREN:
-				return getChildren();
+		case ExamplePackage.CONTAINER__CHILDREN:
+			return getChildren();
 		}
 		return super.eGet(featureID, resolve, coreType);
 	}
@@ -102,16 +117,17 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@SuppressWarnings("unchecked")
 	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
-			case ExamplePackage.CONTAINER__CHILDREN:
-				getChildren().clear();
-				getChildren().addAll((Collection<? extends Child>)newValue);
-				return;
+		case ExamplePackage.CONTAINER__CHILDREN:
+			getChildren().clear();
+			getChildren().addAll((Collection<? extends Child>) newValue);
+			return;
 		}
 		super.eSet(featureID, newValue);
 	}
@@ -119,14 +135,15 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
-			case ExamplePackage.CONTAINER__CHILDREN:
-				getChildren().clear();
-				return;
+		case ExamplePackage.CONTAINER__CHILDREN:
+			getChildren().clear();
+			return;
 		}
 		super.eUnset(featureID);
 	}
@@ -134,13 +151,14 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
-			case ExamplePackage.CONTAINER__CHILDREN:
-				return children != null && !children.isEmpty();
+		case ExamplePackage.CONTAINER__CHILDREN:
+			return children != null && !children.isEmpty();
 		}
 		return super.eIsSet(featureID);
 	}
diff --git a/tests/org.eclipse.emf.ecp.view.keyattributedmr.model.test/src/org/eclipse/emf/ecp/view/keyattribute/test/example/impl/ExampleFactoryImpl.java b/tests/org.eclipse.emf.ecp.view.keyattributedmr.model.test/src/org/eclipse/emf/ecp/view/keyattribute/test/example/impl/ExampleFactoryImpl.java
index 618f413..2a8c7b8 100644
--- a/tests/org.eclipse.emf.ecp.view.keyattributedmr.model.test/src/org/eclipse/emf/ecp/view/keyattribute/test/example/impl/ExampleFactoryImpl.java
+++ b/tests/org.eclipse.emf.ecp.view.keyattributedmr.model.test/src/org/eclipse/emf/ecp/view/keyattribute/test/example/impl/ExampleFactoryImpl.java
@@ -1,4 +1,13 @@
 /**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
  */
 package org.eclipse.emf.ecp.view.keyattribute.test.example.impl;
 
@@ -20,6 +29,7 @@
  * <!-- begin-user-doc -->
  * An implementation of the model <b>Factory</b>.
  * <!-- end-user-doc -->
+ *
  * @generated
  */
 public class ExampleFactoryImpl extends EFactoryImpl implements ExampleFactory {
@@ -27,16 +37,17 @@
 	 * Creates the default factory implementation.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	public static ExampleFactory init() {
 		try {
-			ExampleFactory theExampleFactory = (ExampleFactory)EPackage.Registry.INSTANCE.getEFactory(ExamplePackage.eNS_URI);
+			final ExampleFactory theExampleFactory = (ExampleFactory) EPackage.Registry.INSTANCE
+				.getEFactory(ExamplePackage.eNS_URI);
 			if (theExampleFactory != null) {
 				return theExampleFactory;
 			}
-		}
-		catch (Exception exception) {
+		} catch (final Exception exception) {
 			EcorePlugin.INSTANCE.log(exception);
 		}
 		return new ExampleFactoryImpl();
@@ -46,6 +57,7 @@
 	 * Creates an instance of the factory.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	public ExampleFactoryImpl() {
@@ -55,113 +67,130 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
 	public EObject create(EClass eClass) {
 		switch (eClass.getClassifierID()) {
-			case ExamplePackage.ROOT: return createRoot();
-			case ExamplePackage.INTERMEDIATE: return createIntermediate();
-			case ExamplePackage.CONTAINER: return createContainer();
-			case ExamplePackage.CHILD: return createChild();
-			case ExamplePackage.INTERMEDIATE_TARGET: return createIntermediateTarget();
-			case ExamplePackage.TARGET: return createTarget();
-			case ExamplePackage.KEY_CONTAINER: return createKeyContainer();
-			default:
-				throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier"); //$NON-NLS-1$ //$NON-NLS-2$
+		case ExamplePackage.ROOT:
+			return createRoot();
+		case ExamplePackage.INTERMEDIATE:
+			return createIntermediate();
+		case ExamplePackage.CONTAINER:
+			return createContainer();
+		case ExamplePackage.CHILD:
+			return createChild();
+		case ExamplePackage.INTERMEDIATE_TARGET:
+			return createIntermediateTarget();
+		case ExamplePackage.TARGET:
+			return createTarget();
+		case ExamplePackage.KEY_CONTAINER:
+			return createKeyContainer();
+		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
 	public Root createRoot() {
-		RootImpl root = new RootImpl();
+		final RootImpl root = new RootImpl();
 		return root;
 	}
 
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
 	public Intermediate createIntermediate() {
-		IntermediateImpl intermediate = new IntermediateImpl();
+		final IntermediateImpl intermediate = new IntermediateImpl();
 		return intermediate;
 	}
 
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
 	public org.eclipse.emf.ecp.view.keyattribute.test.example.Container createContainer() {
-		ContainerImpl container = new ContainerImpl();
+		final ContainerImpl container = new ContainerImpl();
 		return container;
 	}
 
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
 	public Child createChild() {
-		ChildImpl child = new ChildImpl();
+		final ChildImpl child = new ChildImpl();
 		return child;
 	}
 
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
 	public IntermediateTarget createIntermediateTarget() {
-		IntermediateTargetImpl intermediateTarget = new IntermediateTargetImpl();
+		final IntermediateTargetImpl intermediateTarget = new IntermediateTargetImpl();
 		return intermediateTarget;
 	}
 
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
 	public Target createTarget() {
-		TargetImpl target = new TargetImpl();
+		final TargetImpl target = new TargetImpl();
 		return target;
 	}
 
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
 	public KeyContainer createKeyContainer() {
-		KeyContainerImpl keyContainer = new KeyContainerImpl();
+		final KeyContainerImpl keyContainer = new KeyContainerImpl();
 		return keyContainer;
 	}
 
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
 	public ExamplePackage getExamplePackage() {
-		return (ExamplePackage)getEPackage();
+		return (ExamplePackage) getEPackage();
 	}
 
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @deprecated
 	 * @generated
 	 */
diff --git a/tests/org.eclipse.emf.ecp.view.keyattributedmr.model.test/src/org/eclipse/emf/ecp/view/keyattribute/test/example/impl/ExamplePackageImpl.java b/tests/org.eclipse.emf.ecp.view.keyattributedmr.model.test/src/org/eclipse/emf/ecp/view/keyattribute/test/example/impl/ExamplePackageImpl.java
index 3a16565..6b4f90d 100644
--- a/tests/org.eclipse.emf.ecp.view.keyattributedmr.model.test/src/org/eclipse/emf/ecp/view/keyattribute/test/example/impl/ExamplePackageImpl.java
+++ b/tests/org.eclipse.emf.ecp.view.keyattributedmr.model.test/src/org/eclipse/emf/ecp/view/keyattribute/test/example/impl/ExamplePackageImpl.java
@@ -1,4 +1,13 @@
 /**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
  */
 package org.eclipse.emf.ecp.view.keyattribute.test.example.impl;
 
@@ -22,12 +31,14 @@
  * <!-- begin-user-doc -->
  * An implementation of the model <b>Package</b>.
  * <!-- end-user-doc -->
+ *
  * @generated
  */
 public class ExamplePackageImpl extends EPackageImpl implements ExamplePackage {
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	private EClass rootEClass = null;
@@ -35,6 +46,7 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	private EClass intermediateEClass = null;
@@ -42,6 +54,7 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	private EClass containerEClass = null;
@@ -49,6 +62,7 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	private EClass childEClass = null;
@@ -56,6 +70,7 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	private EClass intermediateTargetEClass = null;
@@ -63,6 +78,7 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	private EClass targetEClass = null;
@@ -70,18 +86,22 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	private EClass keyContainerEClass = null;
 
 	/**
-	 * Creates an instance of the model <b>Package</b>, registered with {@link org.eclipse.emf.ecore.EPackage.Registry
-	 * EPackage.Registry} by the package
+	 * 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>
-	 * Note: the correct way to create the package is via the static factory method {@link #init init()}, which also
-	 * performs initialization of the package, or returns the registered package, if one already exists. <!--
-	 * begin-user-doc --> <!-- end-user-doc -->
+	 * Note: the correct way to create the package is via the static
+	 * factory method {@link #init init()}, which also performs
+	 * initialization of the package, or returns the registered package,
+	 * if one already exists.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
 	 *
 	 * @see org.eclipse.emf.ecore.EPackage.Registry
 	 * @see org.eclipse.emf.ecp.view.keyattribute.test.example.ExamplePackage#eNS_URI
@@ -95,27 +115,34 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	private static boolean isInited = false;
 
 	/**
 	 * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
-	 * 
-	 * <p>This method is used to initialize {@link ExamplePackage#eINSTANCE} when that field is accessed.
+	 *
+	 * <p>
+	 * This method is used to initialize {@link ExamplePackage#eINSTANCE} when that field is accessed.
 	 * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
-	 * <!-- begin-user-doc
-	 * --> <!-- end-user-doc -->
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
 	 * @see #eNS_URI
 	 * @see #createPackageContents()
 	 * @see #initializePackageContents()
 	 * @generated
 	 */
 	public static ExamplePackage init() {
-		if (isInited) return (ExamplePackage)EPackage.Registry.INSTANCE.getEPackage(ExamplePackage.eNS_URI);
+		if (isInited) {
+			return (ExamplePackage) EPackage.Registry.INSTANCE.getEPackage(ExamplePackage.eNS_URI);
+		}
 
 		// Obtain or create and register package
-		ExamplePackageImpl theExamplePackage = (ExamplePackageImpl)(EPackage.Registry.INSTANCE.get(eNS_URI) instanceof ExamplePackageImpl ? EPackage.Registry.INSTANCE.get(eNS_URI) : new ExamplePackageImpl());
+		final ExamplePackageImpl theExamplePackage = (ExamplePackageImpl) (EPackage.Registry.INSTANCE
+			.get(eNS_URI) instanceof ExamplePackageImpl ? EPackage.Registry.INSTANCE.get(eNS_URI)
+				: new ExamplePackageImpl());
 
 		isInited = true;
 
@@ -128,7 +155,6 @@
 		// Mark meta-data to indicate it can't be changed
 		theExamplePackage.freeze();
 
-  
 		// Update the registry and return the package
 		EPackage.Registry.INSTANCE.put(ExamplePackage.eNS_URI, theExamplePackage);
 		return theExamplePackage;
@@ -137,6 +163,7 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
@@ -147,16 +174,18 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
 	public EReference getRoot_Intermediate() {
-		return (EReference)rootEClass.getEStructuralFeatures().get(0);
+		return (EReference) rootEClass.getEStructuralFeatures().get(0);
 	}
 
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
@@ -167,16 +196,18 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
 	public EReference getIntermediate_Container() {
-		return (EReference)intermediateEClass.getEStructuralFeatures().get(0);
+		return (EReference) intermediateEClass.getEStructuralFeatures().get(0);
 	}
 
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
@@ -187,16 +218,18 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
 	public EReference getContainer_Children() {
-		return (EReference)containerEClass.getEStructuralFeatures().get(0);
+		return (EReference) containerEClass.getEStructuralFeatures().get(0);
 	}
 
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
@@ -207,26 +240,29 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
 	public EReference getChild_IntermediateTarget() {
-		return (EReference)childEClass.getEStructuralFeatures().get(0);
+		return (EReference) childEClass.getEStructuralFeatures().get(0);
 	}
 
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
 	public EReference getChild_Key() {
-		return (EReference)childEClass.getEStructuralFeatures().get(1);
+		return (EReference) childEClass.getEStructuralFeatures().get(1);
 	}
 
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
@@ -237,16 +273,18 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
 	public EReference getIntermediateTarget_Target() {
-		return (EReference)intermediateTargetEClass.getEStructuralFeatures().get(0);
+		return (EReference) intermediateTargetEClass.getEStructuralFeatures().get(0);
 	}
 
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
@@ -257,16 +295,18 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
 	public EAttribute getTarget_Name() {
-		return (EAttribute)targetEClass.getEStructuralFeatures().get(0);
+		return (EAttribute) targetEClass.getEStructuralFeatures().get(0);
 	}
 
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
@@ -277,39 +317,45 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
 	public EAttribute getKeyContainer_Key() {
-		return (EAttribute)keyContainerEClass.getEStructuralFeatures().get(0);
+		return (EAttribute) keyContainerEClass.getEStructuralFeatures().get(0);
 	}
 
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
 	public ExampleFactory getExampleFactory() {
-		return (ExampleFactory)getEFactoryInstance();
+		return (ExampleFactory) getEFactoryInstance();
 	}
 
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	private boolean isCreated = false;
 
 	/**
-	 * Creates the meta-model objects for the package.  This method is
+	 * Creates the meta-model objects for the package. This method is
 	 * guarded to have no affect on any invocation but its first.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	public void createPackageContents() {
-		if (isCreated) return;
+		if (isCreated) {
+			return;
+		}
 		isCreated = true;
 
 		// Create classes and their features
@@ -339,19 +385,23 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	private boolean isInitialized = false;
 
 	/**
-	 * Complete the initialization of the package and its meta-model.  This
+	 * Complete the initialization of the package and its meta-model. This
 	 * method is guarded to have no affect on any invocation but its first.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	public void initializePackageContents() {
-		if (isInitialized) return;
+		if (isInitialized) {
+			return;
+		}
 		isInitialized = true;
 
 		// Initialize package
@@ -367,26 +417,44 @@
 
 		// Initialize classes, features, and operations; add parameters
 		initEClass(rootEClass, Root.class, "Root", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
-		initEReference(getRoot_Intermediate(), this.getIntermediate(), null, "intermediate", null, 0, 1, Root.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+		initEReference(getRoot_Intermediate(), getIntermediate(), null, "intermediate", null, 0, 1, Root.class, //$NON-NLS-1$
+			!IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE,
+			!IS_DERIVED, IS_ORDERED);
 
-		initEClass(intermediateEClass, Intermediate.class, "Intermediate", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
-		initEReference(getIntermediate_Container(), this.getContainer(), null, "container", null, 0, 1, Intermediate.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+		initEClass(intermediateEClass, Intermediate.class, "Intermediate", !IS_ABSTRACT, !IS_INTERFACE, //$NON-NLS-1$
+			IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getIntermediate_Container(), getContainer(), null, "container", null, 0, 1, //$NON-NLS-1$
+			Intermediate.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES,
+			!IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 
-		initEClass(containerEClass, org.eclipse.emf.ecp.view.keyattribute.test.example.Container.class, "Container", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
-		initEReference(getContainer_Children(), this.getChild(), null, "children", null, 0, -1, org.eclipse.emf.ecp.view.keyattribute.test.example.Container.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+		initEClass(containerEClass, org.eclipse.emf.ecp.view.keyattribute.test.example.Container.class, "Container", //$NON-NLS-1$
+			!IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getContainer_Children(), getChild(), null, "children", null, 0, -1, //$NON-NLS-1$
+			org.eclipse.emf.ecp.view.keyattribute.test.example.Container.class, !IS_TRANSIENT, !IS_VOLATILE,
+			IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 
 		initEClass(childEClass, Child.class, "Child", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
-		initEReference(getChild_IntermediateTarget(), this.getIntermediateTarget(), null, "intermediateTarget", null, 0, 1, Child.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
-		initEReference(getChild_Key(), this.getKeyContainer(), null, "key", null, 0, 1, Child.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+		initEReference(getChild_IntermediateTarget(), getIntermediateTarget(), null, "intermediateTarget", null, 0, //$NON-NLS-1$
+			1, Child.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES,
+			!IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getChild_Key(), getKeyContainer(), null, "key", null, 0, 1, Child.class, !IS_TRANSIENT, //$NON-NLS-1$
+			!IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED,
+			IS_ORDERED);
 
-		initEClass(intermediateTargetEClass, IntermediateTarget.class, "IntermediateTarget", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
-		initEReference(getIntermediateTarget_Target(), this.getTarget(), null, "target", null, 0, 1, IntermediateTarget.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+		initEClass(intermediateTargetEClass, IntermediateTarget.class, "IntermediateTarget", !IS_ABSTRACT, //$NON-NLS-1$
+			!IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getIntermediateTarget_Target(), getTarget(), null, "target", null, 0, 1, //$NON-NLS-1$
+			IntermediateTarget.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES,
+			!IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 
 		initEClass(targetEClass, Target.class, "Target", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
-		initEAttribute(getTarget_Name(), ecorePackage.getEString(), "name", null, 0, 1, Target.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+		initEAttribute(getTarget_Name(), ecorePackage.getEString(), "name", null, 0, 1, Target.class, !IS_TRANSIENT, //$NON-NLS-1$
+			!IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 
-		initEClass(keyContainerEClass, KeyContainer.class, "KeyContainer", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
-		initEAttribute(getKeyContainer_Key(), ecorePackage.getEString(), "key", null, 0, 1, KeyContainer.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+		initEClass(keyContainerEClass, KeyContainer.class, "KeyContainer", !IS_ABSTRACT, !IS_INTERFACE, //$NON-NLS-1$
+			IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getKeyContainer_Key(), ecorePackage.getEString(), "key", null, 0, 1, KeyContainer.class, //$NON-NLS-1$
+			!IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 
 		// Create resource
 		createResource(eNS_URI);
diff --git a/tests/org.eclipse.emf.ecp.view.keyattributedmr.model.test/src/org/eclipse/emf/ecp/view/keyattribute/test/example/impl/IntermediateImpl.java b/tests/org.eclipse.emf.ecp.view.keyattributedmr.model.test/src/org/eclipse/emf/ecp/view/keyattribute/test/example/impl/IntermediateImpl.java
index cfa61b3..3c43d1d 100644
--- a/tests/org.eclipse.emf.ecp.view.keyattributedmr.model.test/src/org/eclipse/emf/ecp/view/keyattribute/test/example/impl/IntermediateImpl.java
+++ b/tests/org.eclipse.emf.ecp.view.keyattributedmr.model.test/src/org/eclipse/emf/ecp/view/keyattribute/test/example/impl/IntermediateImpl.java
@@ -1,4 +1,13 @@
 /**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
  */
 package org.eclipse.emf.ecp.view.keyattribute.test.example.impl;
 
@@ -19,7 +28,8 @@
  * The following features are implemented:
  * </p>
  * <ul>
- *   <li>{@link org.eclipse.emf.ecp.view.keyattribute.test.example.impl.IntermediateImpl#getContainer <em>Container</em>}</li>
+ * <li>{@link org.eclipse.emf.ecp.view.keyattribute.test.example.impl.IntermediateImpl#getContainer
+ * <em>Container</em>}</li>
  * </ul>
  *
  * @generated
@@ -29,6 +39,7 @@
 	 * The cached value of the '{@link #getContainer() <em>Container</em>}' containment reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @see #getContainer()
 	 * @generated
 	 * @ordered
@@ -38,6 +49,7 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	protected IntermediateImpl() {
@@ -47,6 +59,7 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
@@ -57,6 +70,7 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
@@ -67,15 +81,21 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	public NotificationChain basicSetContainer(
 		org.eclipse.emf.ecp.view.keyattribute.test.example.Container newContainer, NotificationChain msgs) {
-		org.eclipse.emf.ecp.view.keyattribute.test.example.Container oldContainer = container;
+		final org.eclipse.emf.ecp.view.keyattribute.test.example.Container oldContainer = container;
 		container = newContainer;
 		if (eNotificationRequired()) {
-			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, ExamplePackage.INTERMEDIATE__CONTAINER, oldContainer, newContainer);
-			if (msgs == null) msgs = notification; else msgs.add(notification);
+			final ENotificationImpl notification = new ENotificationImpl(this, Notification.SET,
+				ExamplePackage.INTERMEDIATE__CONTAINER, oldContainer, newContainer);
+			if (msgs == null) {
+				msgs = notification;
+			} else {
+				msgs.add(notification);
+			}
 		}
 		return msgs;
 	}
@@ -83,33 +103,42 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
 	public void setContainer(org.eclipse.emf.ecp.view.keyattribute.test.example.Container newContainer) {
 		if (newContainer != container) {
 			NotificationChain msgs = null;
-			if (container != null)
-				msgs = ((InternalEObject)container).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - ExamplePackage.INTERMEDIATE__CONTAINER, null, msgs);
-			if (newContainer != null)
-				msgs = ((InternalEObject)newContainer).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - ExamplePackage.INTERMEDIATE__CONTAINER, null, msgs);
+			if (container != null) {
+				msgs = ((InternalEObject) container).eInverseRemove(this,
+					EOPPOSITE_FEATURE_BASE - ExamplePackage.INTERMEDIATE__CONTAINER, null, msgs);
+			}
+			if (newContainer != null) {
+				msgs = ((InternalEObject) newContainer).eInverseAdd(this,
+					EOPPOSITE_FEATURE_BASE - ExamplePackage.INTERMEDIATE__CONTAINER, null, msgs);
+			}
 			msgs = basicSetContainer(newContainer, msgs);
-			if (msgs != null) msgs.dispatch();
+			if (msgs != null) {
+				msgs.dispatch();
+			}
+		} else if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, ExamplePackage.INTERMEDIATE__CONTAINER, newContainer,
+				newContainer));
 		}
-		else if (eNotificationRequired())
-			eNotify(new ENotificationImpl(this, Notification.SET, ExamplePackage.INTERMEDIATE__CONTAINER, newContainer, newContainer));
 	}
 
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
 		switch (featureID) {
-			case ExamplePackage.INTERMEDIATE__CONTAINER:
-				return basicSetContainer(null, msgs);
+		case ExamplePackage.INTERMEDIATE__CONTAINER:
+			return basicSetContainer(null, msgs);
 		}
 		return super.eInverseRemove(otherEnd, featureID, msgs);
 	}
@@ -117,13 +146,14 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
-			case ExamplePackage.INTERMEDIATE__CONTAINER:
-				return getContainer();
+		case ExamplePackage.INTERMEDIATE__CONTAINER:
+			return getContainer();
 		}
 		return super.eGet(featureID, resolve, coreType);
 	}
@@ -131,14 +161,15 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
-			case ExamplePackage.INTERMEDIATE__CONTAINER:
-				setContainer((org.eclipse.emf.ecp.view.keyattribute.test.example.Container)newValue);
-				return;
+		case ExamplePackage.INTERMEDIATE__CONTAINER:
+			setContainer((org.eclipse.emf.ecp.view.keyattribute.test.example.Container) newValue);
+			return;
 		}
 		super.eSet(featureID, newValue);
 	}
@@ -146,14 +177,15 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
-			case ExamplePackage.INTERMEDIATE__CONTAINER:
-				setContainer((org.eclipse.emf.ecp.view.keyattribute.test.example.Container)null);
-				return;
+		case ExamplePackage.INTERMEDIATE__CONTAINER:
+			setContainer((org.eclipse.emf.ecp.view.keyattribute.test.example.Container) null);
+			return;
 		}
 		super.eUnset(featureID);
 	}
@@ -161,13 +193,14 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
-			case ExamplePackage.INTERMEDIATE__CONTAINER:
-				return container != null;
+		case ExamplePackage.INTERMEDIATE__CONTAINER:
+			return container != null;
 		}
 		return super.eIsSet(featureID);
 	}
diff --git a/tests/org.eclipse.emf.ecp.view.keyattributedmr.model.test/src/org/eclipse/emf/ecp/view/keyattribute/test/example/impl/IntermediateTargetImpl.java b/tests/org.eclipse.emf.ecp.view.keyattributedmr.model.test/src/org/eclipse/emf/ecp/view/keyattribute/test/example/impl/IntermediateTargetImpl.java
index 1d8c1ca..050f104 100644
--- a/tests/org.eclipse.emf.ecp.view.keyattributedmr.model.test/src/org/eclipse/emf/ecp/view/keyattribute/test/example/impl/IntermediateTargetImpl.java
+++ b/tests/org.eclipse.emf.ecp.view.keyattributedmr.model.test/src/org/eclipse/emf/ecp/view/keyattribute/test/example/impl/IntermediateTargetImpl.java
@@ -1,4 +1,13 @@
 /**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
  */
 package org.eclipse.emf.ecp.view.keyattribute.test.example.impl;
 
@@ -20,7 +29,8 @@
  * The following features are implemented:
  * </p>
  * <ul>
- *   <li>{@link org.eclipse.emf.ecp.view.keyattribute.test.example.impl.IntermediateTargetImpl#getTarget <em>Target</em>}</li>
+ * <li>{@link org.eclipse.emf.ecp.view.keyattribute.test.example.impl.IntermediateTargetImpl#getTarget
+ * <em>Target</em>}</li>
  * </ul>
  *
  * @generated
@@ -30,6 +40,7 @@
 	 * The cached value of the '{@link #getTarget() <em>Target</em>}' containment reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @see #getTarget()
 	 * @generated
 	 * @ordered
@@ -39,6 +50,7 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	protected IntermediateTargetImpl() {
@@ -48,6 +60,7 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
@@ -58,6 +71,7 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
@@ -68,14 +82,20 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	public NotificationChain basicSetTarget(Target newTarget, NotificationChain msgs) {
-		Target oldTarget = target;
+		final Target oldTarget = target;
 		target = newTarget;
 		if (eNotificationRequired()) {
-			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, ExamplePackage.INTERMEDIATE_TARGET__TARGET, oldTarget, newTarget);
-			if (msgs == null) msgs = notification; else msgs.add(notification);
+			final ENotificationImpl notification = new ENotificationImpl(this, Notification.SET,
+				ExamplePackage.INTERMEDIATE_TARGET__TARGET, oldTarget, newTarget);
+			if (msgs == null) {
+				msgs = notification;
+			} else {
+				msgs.add(notification);
+			}
 		}
 		return msgs;
 	}
@@ -83,33 +103,42 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
 	public void setTarget(Target newTarget) {
 		if (newTarget != target) {
 			NotificationChain msgs = null;
-			if (target != null)
-				msgs = ((InternalEObject)target).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - ExamplePackage.INTERMEDIATE_TARGET__TARGET, null, msgs);
-			if (newTarget != null)
-				msgs = ((InternalEObject)newTarget).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - ExamplePackage.INTERMEDIATE_TARGET__TARGET, null, msgs);
+			if (target != null) {
+				msgs = ((InternalEObject) target).eInverseRemove(this,
+					EOPPOSITE_FEATURE_BASE - ExamplePackage.INTERMEDIATE_TARGET__TARGET, null, msgs);
+			}
+			if (newTarget != null) {
+				msgs = ((InternalEObject) newTarget).eInverseAdd(this,
+					EOPPOSITE_FEATURE_BASE - ExamplePackage.INTERMEDIATE_TARGET__TARGET, null, msgs);
+			}
 			msgs = basicSetTarget(newTarget, msgs);
-			if (msgs != null) msgs.dispatch();
+			if (msgs != null) {
+				msgs.dispatch();
+			}
+		} else if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, ExamplePackage.INTERMEDIATE_TARGET__TARGET, newTarget,
+				newTarget));
 		}
-		else if (eNotificationRequired())
-			eNotify(new ENotificationImpl(this, Notification.SET, ExamplePackage.INTERMEDIATE_TARGET__TARGET, newTarget, newTarget));
 	}
 
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
 		switch (featureID) {
-			case ExamplePackage.INTERMEDIATE_TARGET__TARGET:
-				return basicSetTarget(null, msgs);
+		case ExamplePackage.INTERMEDIATE_TARGET__TARGET:
+			return basicSetTarget(null, msgs);
 		}
 		return super.eInverseRemove(otherEnd, featureID, msgs);
 	}
@@ -117,13 +146,14 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
-			case ExamplePackage.INTERMEDIATE_TARGET__TARGET:
-				return getTarget();
+		case ExamplePackage.INTERMEDIATE_TARGET__TARGET:
+			return getTarget();
 		}
 		return super.eGet(featureID, resolve, coreType);
 	}
@@ -131,14 +161,15 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
-			case ExamplePackage.INTERMEDIATE_TARGET__TARGET:
-				setTarget((Target)newValue);
-				return;
+		case ExamplePackage.INTERMEDIATE_TARGET__TARGET:
+			setTarget((Target) newValue);
+			return;
 		}
 		super.eSet(featureID, newValue);
 	}
@@ -146,14 +177,15 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
-			case ExamplePackage.INTERMEDIATE_TARGET__TARGET:
-				setTarget((Target)null);
-				return;
+		case ExamplePackage.INTERMEDIATE_TARGET__TARGET:
+			setTarget((Target) null);
+			return;
 		}
 		super.eUnset(featureID);
 	}
@@ -161,13 +193,14 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
-			case ExamplePackage.INTERMEDIATE_TARGET__TARGET:
-				return target != null;
+		case ExamplePackage.INTERMEDIATE_TARGET__TARGET:
+			return target != null;
 		}
 		return super.eIsSet(featureID);
 	}
diff --git a/tests/org.eclipse.emf.ecp.view.keyattributedmr.model.test/src/org/eclipse/emf/ecp/view/keyattribute/test/example/impl/KeyContainerImpl.java b/tests/org.eclipse.emf.ecp.view.keyattributedmr.model.test/src/org/eclipse/emf/ecp/view/keyattribute/test/example/impl/KeyContainerImpl.java
index d6f987b..8081cd6 100644
--- a/tests/org.eclipse.emf.ecp.view.keyattributedmr.model.test/src/org/eclipse/emf/ecp/view/keyattribute/test/example/impl/KeyContainerImpl.java
+++ b/tests/org.eclipse.emf.ecp.view.keyattributedmr.model.test/src/org/eclipse/emf/ecp/view/keyattribute/test/example/impl/KeyContainerImpl.java
@@ -1,4 +1,13 @@
 /**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
  */
 package org.eclipse.emf.ecp.view.keyattribute.test.example.impl;
 
@@ -17,7 +26,7 @@
  * The following features are implemented:
  * </p>
  * <ul>
- *   <li>{@link org.eclipse.emf.ecp.view.keyattribute.test.example.impl.KeyContainerImpl#getKey <em>Key</em>}</li>
+ * <li>{@link org.eclipse.emf.ecp.view.keyattribute.test.example.impl.KeyContainerImpl#getKey <em>Key</em>}</li>
  * </ul>
  *
  * @generated
@@ -27,6 +36,7 @@
 	 * The default value of the '{@link #getKey() <em>Key</em>}' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @see #getKey()
 	 * @generated
 	 * @ordered
@@ -37,6 +47,7 @@
 	 * The cached value of the '{@link #getKey() <em>Key</em>}' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @see #getKey()
 	 * @generated
 	 * @ordered
@@ -46,6 +57,7 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	protected KeyContainerImpl() {
@@ -55,6 +67,7 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
@@ -65,6 +78,7 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
@@ -75,26 +89,29 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
 	public void setKey(String newKey) {
-		String oldKey = key;
+		final String oldKey = key;
 		key = newKey;
-		if (eNotificationRequired())
+		if (eNotificationRequired()) {
 			eNotify(new ENotificationImpl(this, Notification.SET, ExamplePackage.KEY_CONTAINER__KEY, oldKey, key));
+		}
 	}
 
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
-			case ExamplePackage.KEY_CONTAINER__KEY:
-				return getKey();
+		case ExamplePackage.KEY_CONTAINER__KEY:
+			return getKey();
 		}
 		return super.eGet(featureID, resolve, coreType);
 	}
@@ -102,14 +119,15 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
-			case ExamplePackage.KEY_CONTAINER__KEY:
-				setKey((String)newValue);
-				return;
+		case ExamplePackage.KEY_CONTAINER__KEY:
+			setKey((String) newValue);
+			return;
 		}
 		super.eSet(featureID, newValue);
 	}
@@ -117,14 +135,15 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
-			case ExamplePackage.KEY_CONTAINER__KEY:
-				setKey(KEY_EDEFAULT);
-				return;
+		case ExamplePackage.KEY_CONTAINER__KEY:
+			setKey(KEY_EDEFAULT);
+			return;
 		}
 		super.eUnset(featureID);
 	}
@@ -132,13 +151,14 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
-			case ExamplePackage.KEY_CONTAINER__KEY:
-				return KEY_EDEFAULT == null ? key != null : !KEY_EDEFAULT.equals(key);
+		case ExamplePackage.KEY_CONTAINER__KEY:
+			return KEY_EDEFAULT == null ? key != null : !KEY_EDEFAULT.equals(key);
 		}
 		return super.eIsSet(featureID);
 	}
@@ -146,13 +166,16 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
 	public String toString() {
-		if (eIsProxy()) return super.toString();
+		if (eIsProxy()) {
+			return super.toString();
+		}
 
-		StringBuffer result = new StringBuffer(super.toString());
+		final StringBuffer result = new StringBuffer(super.toString());
 		result.append(" (key: "); //$NON-NLS-1$
 		result.append(key);
 		result.append(')');
diff --git a/tests/org.eclipse.emf.ecp.view.keyattributedmr.model.test/src/org/eclipse/emf/ecp/view/keyattribute/test/example/impl/RootImpl.java b/tests/org.eclipse.emf.ecp.view.keyattributedmr.model.test/src/org/eclipse/emf/ecp/view/keyattribute/test/example/impl/RootImpl.java
index b6f28cf..643ca17 100644
--- a/tests/org.eclipse.emf.ecp.view.keyattributedmr.model.test/src/org/eclipse/emf/ecp/view/keyattribute/test/example/impl/RootImpl.java
+++ b/tests/org.eclipse.emf.ecp.view.keyattributedmr.model.test/src/org/eclipse/emf/ecp/view/keyattribute/test/example/impl/RootImpl.java
@@ -1,4 +1,13 @@
 /**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
  */
 package org.eclipse.emf.ecp.view.keyattribute.test.example.impl;
 
@@ -20,7 +29,8 @@
  * The following features are implemented:
  * </p>
  * <ul>
- *   <li>{@link org.eclipse.emf.ecp.view.keyattribute.test.example.impl.RootImpl#getIntermediate <em>Intermediate</em>}</li>
+ * <li>{@link org.eclipse.emf.ecp.view.keyattribute.test.example.impl.RootImpl#getIntermediate
+ * <em>Intermediate</em>}</li>
  * </ul>
  *
  * @generated
@@ -30,6 +40,7 @@
 	 * The cached value of the '{@link #getIntermediate() <em>Intermediate</em>}' containment reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @see #getIntermediate()
 	 * @generated
 	 * @ordered
@@ -39,6 +50,7 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	protected RootImpl() {
@@ -48,6 +60,7 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
@@ -58,6 +71,7 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
@@ -68,14 +82,20 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	public NotificationChain basicSetIntermediate(Intermediate newIntermediate, NotificationChain msgs) {
-		Intermediate oldIntermediate = intermediate;
+		final Intermediate oldIntermediate = intermediate;
 		intermediate = newIntermediate;
 		if (eNotificationRequired()) {
-			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, ExamplePackage.ROOT__INTERMEDIATE, oldIntermediate, newIntermediate);
-			if (msgs == null) msgs = notification; else msgs.add(notification);
+			final ENotificationImpl notification = new ENotificationImpl(this, Notification.SET,
+				ExamplePackage.ROOT__INTERMEDIATE, oldIntermediate, newIntermediate);
+			if (msgs == null) {
+				msgs = notification;
+			} else {
+				msgs.add(notification);
+			}
 		}
 		return msgs;
 	}
@@ -83,33 +103,42 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
 	public void setIntermediate(Intermediate newIntermediate) {
 		if (newIntermediate != intermediate) {
 			NotificationChain msgs = null;
-			if (intermediate != null)
-				msgs = ((InternalEObject)intermediate).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - ExamplePackage.ROOT__INTERMEDIATE, null, msgs);
-			if (newIntermediate != null)
-				msgs = ((InternalEObject)newIntermediate).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - ExamplePackage.ROOT__INTERMEDIATE, null, msgs);
+			if (intermediate != null) {
+				msgs = ((InternalEObject) intermediate).eInverseRemove(this,
+					EOPPOSITE_FEATURE_BASE - ExamplePackage.ROOT__INTERMEDIATE, null, msgs);
+			}
+			if (newIntermediate != null) {
+				msgs = ((InternalEObject) newIntermediate).eInverseAdd(this,
+					EOPPOSITE_FEATURE_BASE - ExamplePackage.ROOT__INTERMEDIATE, null, msgs);
+			}
 			msgs = basicSetIntermediate(newIntermediate, msgs);
-			if (msgs != null) msgs.dispatch();
+			if (msgs != null) {
+				msgs.dispatch();
+			}
+		} else if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, ExamplePackage.ROOT__INTERMEDIATE, newIntermediate,
+				newIntermediate));
 		}
-		else if (eNotificationRequired())
-			eNotify(new ENotificationImpl(this, Notification.SET, ExamplePackage.ROOT__INTERMEDIATE, newIntermediate, newIntermediate));
 	}
 
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
 		switch (featureID) {
-			case ExamplePackage.ROOT__INTERMEDIATE:
-				return basicSetIntermediate(null, msgs);
+		case ExamplePackage.ROOT__INTERMEDIATE:
+			return basicSetIntermediate(null, msgs);
 		}
 		return super.eInverseRemove(otherEnd, featureID, msgs);
 	}
@@ -117,13 +146,14 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
-			case ExamplePackage.ROOT__INTERMEDIATE:
-				return getIntermediate();
+		case ExamplePackage.ROOT__INTERMEDIATE:
+			return getIntermediate();
 		}
 		return super.eGet(featureID, resolve, coreType);
 	}
@@ -131,14 +161,15 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
-			case ExamplePackage.ROOT__INTERMEDIATE:
-				setIntermediate((Intermediate)newValue);
-				return;
+		case ExamplePackage.ROOT__INTERMEDIATE:
+			setIntermediate((Intermediate) newValue);
+			return;
 		}
 		super.eSet(featureID, newValue);
 	}
@@ -146,14 +177,15 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
-			case ExamplePackage.ROOT__INTERMEDIATE:
-				setIntermediate((Intermediate)null);
-				return;
+		case ExamplePackage.ROOT__INTERMEDIATE:
+			setIntermediate((Intermediate) null);
+			return;
 		}
 		super.eUnset(featureID);
 	}
@@ -161,13 +193,14 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
-			case ExamplePackage.ROOT__INTERMEDIATE:
-				return intermediate != null;
+		case ExamplePackage.ROOT__INTERMEDIATE:
+			return intermediate != null;
 		}
 		return super.eIsSet(featureID);
 	}
diff --git a/tests/org.eclipse.emf.ecp.view.keyattributedmr.model.test/src/org/eclipse/emf/ecp/view/keyattribute/test/example/impl/TargetImpl.java b/tests/org.eclipse.emf.ecp.view.keyattributedmr.model.test/src/org/eclipse/emf/ecp/view/keyattribute/test/example/impl/TargetImpl.java
index 9a9a799..8c550eb 100644
--- a/tests/org.eclipse.emf.ecp.view.keyattributedmr.model.test/src/org/eclipse/emf/ecp/view/keyattribute/test/example/impl/TargetImpl.java
+++ b/tests/org.eclipse.emf.ecp.view.keyattributedmr.model.test/src/org/eclipse/emf/ecp/view/keyattribute/test/example/impl/TargetImpl.java
@@ -1,4 +1,13 @@
 /**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
  */
 package org.eclipse.emf.ecp.view.keyattribute.test.example.impl;
 
@@ -17,7 +26,7 @@
  * The following features are implemented:
  * </p>
  * <ul>
- *   <li>{@link org.eclipse.emf.ecp.view.keyattribute.test.example.impl.TargetImpl#getName <em>Name</em>}</li>
+ * <li>{@link org.eclipse.emf.ecp.view.keyattribute.test.example.impl.TargetImpl#getName <em>Name</em>}</li>
  * </ul>
  *
  * @generated
@@ -27,6 +36,7 @@
 	 * The default value of the '{@link #getName() <em>Name</em>}' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @see #getName()
 	 * @generated
 	 * @ordered
@@ -37,6 +47,7 @@
 	 * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @see #getName()
 	 * @generated
 	 * @ordered
@@ -46,6 +57,7 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	protected TargetImpl() {
@@ -55,6 +67,7 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
@@ -65,6 +78,7 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
@@ -75,26 +89,29 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
 	public void setName(String newName) {
-		String oldName = name;
+		final String oldName = name;
 		name = newName;
-		if (eNotificationRequired())
+		if (eNotificationRequired()) {
 			eNotify(new ENotificationImpl(this, Notification.SET, ExamplePackage.TARGET__NAME, oldName, name));
+		}
 	}
 
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
-			case ExamplePackage.TARGET__NAME:
-				return getName();
+		case ExamplePackage.TARGET__NAME:
+			return getName();
 		}
 		return super.eGet(featureID, resolve, coreType);
 	}
@@ -102,14 +119,15 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
-			case ExamplePackage.TARGET__NAME:
-				setName((String)newValue);
-				return;
+		case ExamplePackage.TARGET__NAME:
+			setName((String) newValue);
+			return;
 		}
 		super.eSet(featureID, newValue);
 	}
@@ -117,14 +135,15 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
-			case ExamplePackage.TARGET__NAME:
-				setName(NAME_EDEFAULT);
-				return;
+		case ExamplePackage.TARGET__NAME:
+			setName(NAME_EDEFAULT);
+			return;
 		}
 		super.eUnset(featureID);
 	}
@@ -132,13 +151,14 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
-			case ExamplePackage.TARGET__NAME:
-				return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+		case ExamplePackage.TARGET__NAME:
+			return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
 		}
 		return super.eIsSet(featureID);
 	}
@@ -146,13 +166,16 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
 	public String toString() {
-		if (eIsProxy()) return super.toString();
+		if (eIsProxy()) {
+			return super.toString();
+		}
 
-		StringBuffer result = new StringBuffer(super.toString());
+		final StringBuffer result = new StringBuffer(super.toString());
 		result.append(" (name: "); //$NON-NLS-1$
 		result.append(name);
 		result.append(')');
diff --git a/tests/org.eclipse.emf.ecp.view.keyattributedmr.model.test/src/org/eclipse/emf/ecp/view/keyattribute/test/example/util/ExampleAdapterFactory.java b/tests/org.eclipse.emf.ecp.view.keyattributedmr.model.test/src/org/eclipse/emf/ecp/view/keyattribute/test/example/util/ExampleAdapterFactory.java
index b7ff24d..39fe928 100644
--- a/tests/org.eclipse.emf.ecp.view.keyattributedmr.model.test/src/org/eclipse/emf/ecp/view/keyattribute/test/example/util/ExampleAdapterFactory.java
+++ b/tests/org.eclipse.emf.ecp.view.keyattributedmr.model.test/src/org/eclipse/emf/ecp/view/keyattribute/test/example/util/ExampleAdapterFactory.java
@@ -1,4 +1,13 @@
 /**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
  */
 package org.eclipse.emf.ecp.view.keyattribute.test.example.util;
 
@@ -20,6 +29,7 @@
  * The <b>Adapter Factory</b> for the model.
  * It provides an adapter <code>createXXX</code> method for each class of the model.
  * <!-- end-user-doc -->
+ *
  * @see org.eclipse.emf.ecp.view.keyattribute.test.example.ExamplePackage
  * @generated
  */
@@ -28,6 +38,7 @@
 	 * The cached model package.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	protected static ExamplePackage modelPackage;
@@ -36,6 +47,7 @@
 	 * Creates an instance of the adapter factory.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	public ExampleAdapterFactory() {
@@ -50,6 +62,7 @@
 	 * This implementation returns <code>true</code> if the object is either the model's package or is an instance
 	 * object of the model.
 	 * <!-- end-user-doc -->
+	 *
 	 * @return whether this factory is applicable for the type of the object.
 	 * @generated
 	 */
@@ -59,7 +72,7 @@
 			return true;
 		}
 		if (object instanceof EObject) {
-			return ((EObject)object).eClass().getEPackage() == modelPackage;
+			return ((EObject) object).eClass().getEPackage() == modelPackage;
 		}
 		return false;
 	}
@@ -68,63 +81,73 @@
 	 * The switch that delegates to the <code>createXXX</code> methods.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
-	protected ExampleSwitch<Adapter> modelSwitch =
-		new ExampleSwitch<Adapter>() {
-			@Override
-			public Adapter caseRoot(Root object) {
-				return createRootAdapter();
-			}
-			@Override
-			public Adapter caseIntermediate(Intermediate object) {
-				return createIntermediateAdapter();
-			}
-			@Override
-			public Adapter caseContainer(Container object) {
-				return createContainerAdapter();
-			}
-			@Override
-			public Adapter caseChild(Child object) {
-				return createChildAdapter();
-			}
-			@Override
-			public Adapter caseIntermediateTarget(IntermediateTarget object) {
-				return createIntermediateTargetAdapter();
-			}
-			@Override
-			public Adapter caseTarget(Target object) {
-				return createTargetAdapter();
-			}
-			@Override
-			public Adapter caseKeyContainer(KeyContainer object) {
-				return createKeyContainerAdapter();
-			}
-			@Override
-			public Adapter defaultCase(EObject object) {
-				return createEObjectAdapter();
-			}
-		};
+	protected ExampleSwitch<Adapter> modelSwitch = new ExampleSwitch<Adapter>() {
+		@Override
+		public Adapter caseRoot(Root object) {
+			return createRootAdapter();
+		}
+
+		@Override
+		public Adapter caseIntermediate(Intermediate object) {
+			return createIntermediateAdapter();
+		}
+
+		@Override
+		public Adapter caseContainer(Container object) {
+			return createContainerAdapter();
+		}
+
+		@Override
+		public Adapter caseChild(Child object) {
+			return createChildAdapter();
+		}
+
+		@Override
+		public Adapter caseIntermediateTarget(IntermediateTarget object) {
+			return createIntermediateTargetAdapter();
+		}
+
+		@Override
+		public Adapter caseTarget(Target object) {
+			return createTargetAdapter();
+		}
+
+		@Override
+		public Adapter caseKeyContainer(KeyContainer object) {
+			return createKeyContainerAdapter();
+		}
+
+		@Override
+		public Adapter defaultCase(EObject object) {
+			return createEObjectAdapter();
+		}
+	};
 
 	/**
 	 * Creates an adapter for the <code>target</code>.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @param target the object to adapt.
 	 * @return the adapter for the <code>target</code>.
 	 * @generated
 	 */
 	@Override
 	public Adapter createAdapter(Notifier target) {
-		return modelSwitch.doSwitch((EObject)target);
+		return modelSwitch.doSwitch((EObject) target);
 	}
 
 	/**
-	 * Creates a new adapter for an object of class '{@link org.eclipse.emf.ecp.view.keyattribute.test.example.Root <em>Root</em>}'.
+	 * Creates a new adapter for an object of class '{@link org.eclipse.emf.ecp.view.keyattribute.test.example.Root
+	 * <em>Root</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.emf.ecp.view.keyattribute.test.example.Root
 	 * @generated
@@ -134,11 +157,13 @@
 	}
 
 	/**
-	 * Creates a new adapter for an object of class '{@link org.eclipse.emf.ecp.view.keyattribute.test.example.Intermediate <em>Intermediate</em>}'.
+	 * Creates a new adapter for an object of class
+	 * '{@link org.eclipse.emf.ecp.view.keyattribute.test.example.Intermediate <em>Intermediate</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.emf.ecp.view.keyattribute.test.example.Intermediate
 	 * @generated
@@ -148,11 +173,13 @@
 	}
 
 	/**
-	 * Creates a new adapter for an object of class '{@link org.eclipse.emf.ecp.view.keyattribute.test.example.Container <em>Container</em>}'.
+	 * Creates a new adapter for an object of class '{@link org.eclipse.emf.ecp.view.keyattribute.test.example.Container
+	 * <em>Container</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.emf.ecp.view.keyattribute.test.example.Container
 	 * @generated
@@ -162,11 +189,13 @@
 	}
 
 	/**
-	 * Creates a new adapter for an object of class '{@link org.eclipse.emf.ecp.view.keyattribute.test.example.Child <em>Child</em>}'.
+	 * Creates a new adapter for an object of class '{@link org.eclipse.emf.ecp.view.keyattribute.test.example.Child
+	 * <em>Child</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.emf.ecp.view.keyattribute.test.example.Child
 	 * @generated
@@ -176,11 +205,13 @@
 	}
 
 	/**
-	 * Creates a new adapter for an object of class '{@link org.eclipse.emf.ecp.view.keyattribute.test.example.IntermediateTarget <em>Intermediate Target</em>}'.
+	 * Creates a new adapter for an object of class
+	 * '{@link org.eclipse.emf.ecp.view.keyattribute.test.example.IntermediateTarget <em>Intermediate Target</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.emf.ecp.view.keyattribute.test.example.IntermediateTarget
 	 * @generated
@@ -190,11 +221,13 @@
 	}
 
 	/**
-	 * Creates a new adapter for an object of class '{@link org.eclipse.emf.ecp.view.keyattribute.test.example.Target <em>Target</em>}'.
+	 * Creates a new adapter for an object of class '{@link org.eclipse.emf.ecp.view.keyattribute.test.example.Target
+	 * <em>Target</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.emf.ecp.view.keyattribute.test.example.Target
 	 * @generated
@@ -204,11 +237,13 @@
 	}
 
 	/**
-	 * Creates a new adapter for an object of class '{@link org.eclipse.emf.ecp.view.keyattribute.test.example.KeyContainer <em>Key Container</em>}'.
+	 * Creates a new adapter for an object of class
+	 * '{@link org.eclipse.emf.ecp.view.keyattribute.test.example.KeyContainer <em>Key Container</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.emf.ecp.view.keyattribute.test.example.KeyContainer
 	 * @generated
@@ -222,6 +257,7 @@
 	 * <!-- begin-user-doc -->
 	 * This default implementation returns null.
 	 * <!-- end-user-doc -->
+	 *
 	 * @return the new adapter.
 	 * @generated
 	 */
diff --git a/tests/org.eclipse.emf.ecp.view.keyattributedmr.model.test/src/org/eclipse/emf/ecp/view/keyattribute/test/example/util/ExampleSwitch.java b/tests/org.eclipse.emf.ecp.view.keyattributedmr.model.test/src/org/eclipse/emf/ecp/view/keyattribute/test/example/util/ExampleSwitch.java
index 91ec7a7..b47a5a2 100644
--- a/tests/org.eclipse.emf.ecp.view.keyattributedmr.model.test/src/org/eclipse/emf/ecp/view/keyattribute/test/example/util/ExampleSwitch.java
+++ b/tests/org.eclipse.emf.ecp.view.keyattributedmr.model.test/src/org/eclipse/emf/ecp/view/keyattribute/test/example/util/ExampleSwitch.java
@@ -1,4 +1,13 @@
 /**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
  */
 package org.eclipse.emf.ecp.view.keyattribute.test.example.util;
 
@@ -17,13 +26,14 @@
 /**
  * <!-- begin-user-doc -->
  * The <b>Switch</b> for the model's inheritance hierarchy.
- * It supports the call {@link #doSwitch(EObject) doSwitch(object)} to invoke the <code>caseXXX</code> method for each
- * class of the model,
+ * It supports the call {@link #doSwitch(EObject) doSwitch(object)}
+ * to invoke the <code>caseXXX</code> method for each class of the model,
  * starting with the actual class of the object
  * and proceeding up the inheritance hierarchy
  * until a non-null result is returned,
  * which is the result of the switch.
  * <!-- end-user-doc -->
+ *
  * @see org.eclipse.emf.ecp.view.keyattribute.test.example.ExamplePackage
  * @generated
  */
@@ -32,6 +42,7 @@
 	 * The cached model package
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	protected static ExamplePackage modelPackage;
@@ -40,6 +51,7 @@
 	 * Creates an instance of the switch.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	public ExampleSwitch() {
@@ -52,6 +64,7 @@
 	 * Checks whether this is a switch for the given package.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @param ePackage the package in question.
 	 * @return whether this is a switch for the given package.
 	 * @generated
@@ -62,58 +75,75 @@
 	}
 
 	/**
-	 * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+	 * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that
+	 * result.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 *
 	 * @return the first non-null result returned by a <code>caseXXX</code> call.
 	 * @generated
 	 */
 	@Override
 	protected T doSwitch(int classifierID, EObject theEObject) {
 		switch (classifierID) {
-			case ExamplePackage.ROOT: {
-				Root root = (Root)theEObject;
-				T result = caseRoot(root);
-				if (result == null) result = defaultCase(theEObject);
-				return result;
+		case ExamplePackage.ROOT: {
+			final Root root = (Root) theEObject;
+			T result = caseRoot(root);
+			if (result == null) {
+				result = defaultCase(theEObject);
 			}
-			case ExamplePackage.INTERMEDIATE: {
-				Intermediate intermediate = (Intermediate)theEObject;
-				T result = caseIntermediate(intermediate);
-				if (result == null) result = defaultCase(theEObject);
-				return result;
+			return result;
+		}
+		case ExamplePackage.INTERMEDIATE: {
+			final Intermediate intermediate = (Intermediate) theEObject;
+			T result = caseIntermediate(intermediate);
+			if (result == null) {
+				result = defaultCase(theEObject);
 			}
-			case ExamplePackage.CONTAINER: {
-				Container container = (Container)theEObject;
-				T result = caseContainer(container);
-				if (result == null) result = defaultCase(theEObject);
-				return result;
+			return result;
+		}
+		case ExamplePackage.CONTAINER: {
+			final Container container = (Container) theEObject;
+			T result = caseContainer(container);
+			if (result == null) {
+				result = defaultCase(theEObject);
 			}
-			case ExamplePackage.CHILD: {
-				Child child = (Child)theEObject;
-				T result = caseChild(child);
-				if (result == null) result = defaultCase(theEObject);
-				return result;
+			return result;
+		}
+		case ExamplePackage.CHILD: {
+			final Child child = (Child) theEObject;
+			T result = caseChild(child);
+			if (result == null) {
+				result = defaultCase(theEObject);
 			}
-			case ExamplePackage.INTERMEDIATE_TARGET: {
-				IntermediateTarget intermediateTarget = (IntermediateTarget)theEObject;
-				T result = caseIntermediateTarget(intermediateTarget);
-				if (result == null) result = defaultCase(theEObject);
-				return result;
+			return result;
+		}
+		case ExamplePackage.INTERMEDIATE_TARGET: {
+			final IntermediateTarget intermediateTarget = (IntermediateTarget) theEObject;
+			T result = caseIntermediateTarget(intermediateTarget);
+			if (result == null) {
+				result = defaultCase(theEObject);
 			}
-			case ExamplePackage.TARGET: {
-				Target target = (Target)theEObject;
-				T result = caseTarget(target);
-				if (result == null) result = defaultCase(theEObject);
-				return result;
+			return result;
+		}
+		case ExamplePackage.TARGET: {
+			final Target target = (Target) theEObject;
+			T result = caseTarget(target);
+			if (result == null) {
+				result = defaultCase(theEObject);
 			}
-			case ExamplePackage.KEY_CONTAINER: {
-				KeyContainer keyContainer = (KeyContainer)theEObject;
-				T result = caseKeyContainer(keyContainer);
-				if (result == null) result = defaultCase(theEObject);
-				return result;
+			return result;
+		}
+		case ExamplePackage.KEY_CONTAINER: {
+			final KeyContainer keyContainer = (KeyContainer) theEObject;
+			T result = caseKeyContainer(keyContainer);
+			if (result == null) {
+				result = defaultCase(theEObject);
 			}
-			default: return defaultCase(theEObject);
+			return result;
+		}
+		default:
+			return defaultCase(theEObject);
 		}
 	}
 
@@ -123,6 +153,7 @@
 	 * 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>Root</em>'.
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
@@ -138,6 +169,7 @@
 	 * 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>Intermediate</em>'.
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
@@ -153,6 +185,7 @@
 	 * 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>Container</em>'.
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
@@ -168,6 +201,7 @@
 	 * 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>Child</em>'.
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
@@ -183,6 +217,7 @@
 	 * 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>Intermediate Target</em>'.
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
@@ -198,6 +233,7 @@
 	 * 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>Target</em>'.
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
@@ -213,6 +249,7 @@
 	 * 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>Key Container</em>'.
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
@@ -228,6 +265,7 @@
 	 * This implementation returns null;
 	 * returning a non-null result will terminate the switch, but this is the last case anyway.
 	 * <!-- end-user-doc -->
+	 *
 	 * @param object the target of the switch.
 	 * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject)
diff --git a/tests/org.eclipse.emf.ecp.view.keyattributedmr.model.test/src/org/eclipse/emf/ecp/view/keyattributedmr/model/test/KeyAttributeDMRValidation_Test.java b/tests/org.eclipse.emf.ecp.view.keyattributedmr.model.test/src/org/eclipse/emf/ecp/view/keyattributedmr/model/test/KeyAttributeDMRValidation_Test.java
index 0b69f2a..580bef4 100644
--- a/tests/org.eclipse.emf.ecp.view.keyattributedmr.model.test/src/org/eclipse/emf/ecp/view/keyattributedmr/model/test/KeyAttributeDMRValidation_Test.java
+++ b/tests/org.eclipse.emf.ecp.view.keyattributedmr.model.test/src/org/eclipse/emf/ecp/view/keyattributedmr/model/test/KeyAttributeDMRValidation_Test.java
@@ -476,7 +476,7 @@
 		private final EObject object;
 		private final EStructuralFeature feature;
 
-		public DiagnosticInfo(int severity, EObject object, EStructuralFeature feature) {
+		DiagnosticInfo(int severity, EObject object, EStructuralFeature feature) {
 			this.severity = severity;
 			this.object = object;
 			this.feature = feature;
diff --git a/tests/org.eclipse.emf.ecp.view.mappingdmr.model.test/META-INF/MANIFEST.MF b/tests/org.eclipse.emf.ecp.view.mappingdmr.model.test/META-INF/MANIFEST.MF
index 48373d8..c3e6500 100644
--- a/tests/org.eclipse.emf.ecp.view.mappingdmr.model.test/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.emf.ecp.view.mappingdmr.model.test/META-INF/MANIFEST.MF
@@ -2,17 +2,18 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.mappingdmr.model.test;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-ClassPath: .
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
-Export-Package: org.eclipse.emf.ecp.view.mapping.test.example;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.view.mapping.test.example.impl;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.view.mapping.test.example.util;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.view.mappingdmr.model.test;version="1.16.0";x-internal:=true
+Export-Package: org.eclipse.emf.ecp.view.mapping.test.example;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.mapping.test.example.impl;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.mapping.test.example.util;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.mappingdmr.model.test;version="1.17.0";x-internal:=true
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.8.0,4.0.0)",
-  org.eclipse.emf.ecore;bundle-version="[2.7.0,3.0.0)";visibility:=reexport,
-  org.junit;bundle-version="[4.11.0,5.0.0)",
-  org.eclipse.emf.ecp.view.mappingdmr.model;bundle-version="[1.16.0,1.17.0)"
+ org.eclipse.emf.ecore;bundle-version="[2.7.0,3.0.0)";visibility:=reexport,
+ org.junit;bundle-version="[4.11.0,5.0.0)",
+ org.eclipse.emf.ecp.view.mappingdmr.model;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.view.mappingdmr.model.test
diff --git a/tests/org.eclipse.emf.ecp.view.mappingdmr.model.test/pom.xml b/tests/org.eclipse.emf.ecp.view.mappingdmr.model.test/pom.xml
index 56afc19..3268857 100644
--- a/tests/org.eclipse.emf.ecp.view.mappingdmr.model.test/pom.xml
+++ b/tests/org.eclipse.emf.ecp.view.mappingdmr.model.test/pom.xml
@@ -6,11 +6,11 @@
 	<parent>
 		<groupId>org.eclipse.emf.ecp</groupId>
 		<artifactId>ecp-tests-parent</artifactId>
-		<version>1.16.0-SNAPSHOT</version>
+		<version>1.17.0-SNAPSHOT</version>
 		<relativePath>../../releng/org.eclipse.emf.ecp.releng.tests/</relativePath>
 	</parent>
 	<artifactId>org.eclipse.emf.ecp.view.mappingdmr.model.test</artifactId>
 	<packaging>eclipse-plugin</packaging>
 	<groupId>org.eclipse.emf.ecp</groupId>
-	<version>1.16.0-SNAPSHOT</version>
+	<version>1.17.0-SNAPSHOT</version>
 </project>
diff --git a/tests/org.eclipse.emf.ecp.view.model.common.test/META-INF/MANIFEST.MF b/tests/org.eclipse.emf.ecp.view.model.common.test/META-INF/MANIFEST.MF
index b04ffd6..eeb5a0d 100644
--- a/tests/org.eclipse.emf.ecp.view.model.common.test/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.emf.ecp.view.model.common.test/META-INF/MANIFEST.MF
@@ -2,11 +2,12 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: View Model Common Test
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.model.common.test
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Fragment-Host: org.eclipse.emf.ecp.view.model.common;bundle-version="[1.16.0,1.17.0)"
-Export-Package: org.eclipse.emf.ecp.view.model.common;version="1.16.0"
+Fragment-Host: org.eclipse.emf.ecp.view.model.common;bundle-version="[1.17.0,1.18.0]"
+Export-Package: org.eclipse.emf.ecp.view.model.common;version="1.17.0"
 Require-Bundle: org.junit;bundle-version="[4.11.0,5.0.0)",
   org.mockito.mockito-core-hamcrest-modified;bundle-version="[1.9.5,2.0.0)"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
-Import-Package: org.eclipse.emfforms.spi.common.report;version="[1.16.0,1.17.0)"
+Import-Package: org.eclipse.emfforms.spi.common.report;version="[1.17.0,1.18.0]"
+Automatic-Module-Name: org.eclipse.emf.ecp.view.model.common.test
diff --git a/tests/org.eclipse.emf.ecp.view.model.common.test/pom.xml b/tests/org.eclipse.emf.ecp.view.model.common.test/pom.xml
index c830e30..33b9847 100644
--- a/tests/org.eclipse.emf.ecp.view.model.common.test/pom.xml
+++ b/tests/org.eclipse.emf.ecp.view.model.common.test/pom.xml
@@ -6,7 +6,7 @@
 	<parent>
 		<groupId>org.eclipse.emf.ecp</groupId>
 		<artifactId>ecp-tests-parent</artifactId>
-		<version>1.16.0-SNAPSHOT</version>
+		<version>1.17.0-SNAPSHOT</version>
 		<relativePath>../../releng/org.eclipse.emf.ecp.releng.tests/</relativePath>
 	</parent>
 	<groupId>org.eclipse.emf.ecp</groupId>
diff --git a/tests/org.eclipse.emf.ecp.view.model.edit.test/META-INF/MANIFEST.MF b/tests/org.eclipse.emf.ecp.view.model.edit.test/META-INF/MANIFEST.MF
index 9a8a504..1e51011 100644
--- a/tests/org.eclipse.emf.ecp.view.model.edit.test/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.emf.ecp.view.model.edit.test/META-INF/MANIFEST.MF
@@ -2,9 +2,10 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Test
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.model.edit.test
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Fragment-Host: org.eclipse.emf.ecp.view.model.edit;bundle-version="[1.16.0,1.17.0)"
-Export-Package: org.eclipse.emf.ecp.view.model.edit.test;version="1.16.0";x-internal:=true
+Fragment-Host: org.eclipse.emf.ecp.view.model.edit;bundle-version="[1.17.0,1.18.0)"
+Export-Package: org.eclipse.emf.ecp.view.model.edit.test;version="1.17.0";x-internal:=true
 Require-Bundle: org.junit;bundle-version="[4.0.0,5.0.0)"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Automatic-Module-Name: org.eclipse.emf.ecp.view.model.edit.test
diff --git a/tests/org.eclipse.emf.ecp.view.model.edit.test/pom.xml b/tests/org.eclipse.emf.ecp.view.model.edit.test/pom.xml
index a4a186b..44ce3ad 100644
--- a/tests/org.eclipse.emf.ecp.view.model.edit.test/pom.xml
+++ b/tests/org.eclipse.emf.ecp.view.model.edit.test/pom.xml
@@ -6,12 +6,12 @@
 	<parent>
 		<groupId>org.eclipse.emf.ecp</groupId>
 		<artifactId>ecp-tests-parent</artifactId>
-		<version>1.16.0-SNAPSHOT</version>
+		<version>1.17.0-SNAPSHOT</version>
 		<relativePath>../../releng/org.eclipse.emf.ecp.releng.tests/</relativePath>
 	</parent>
 	<groupId>org.eclipse.emf.ecp</groupId>
 	<artifactId>org.eclipse.emf.ecp.view.model.edit.test</artifactId>
-	<version>1.16.0-SNAPSHOT</version>
+	<version>1.17.0-SNAPSHOT</version>
 	<packaging>eclipse-test-plugin</packaging>
 
 	<build>
diff --git a/tests/org.eclipse.emf.ecp.view.model.editor.test.feature/feature.xml b/tests/org.eclipse.emf.ecp.view.model.editor.test.feature/feature.xml
index 0a916c0..0c45140 100644
--- a/tests/org.eclipse.emf.ecp.view.model.editor.test.feature/feature.xml
+++ b/tests/org.eclipse.emf.ecp.view.model.editor.test.feature/feature.xml
@@ -2,7 +2,7 @@
 <feature
       id="org.eclipse.emf.ecp.view.model.editor.test.feature"
       label="View Model Editor Test Feature"
-      version="1.16.0.qualifier">
+      version="1.17.0.qualifier">
 
    <description>
       Plugins for testing the View Model Editor with Q7. 
diff --git a/tests/org.eclipse.emf.ecp.view.model.editor.test.feature/pom.xml b/tests/org.eclipse.emf.ecp.view.model.editor.test.feature/pom.xml
index 3e91909..93d93c5 100644
--- a/tests/org.eclipse.emf.ecp.view.model.editor.test.feature/pom.xml
+++ b/tests/org.eclipse.emf.ecp.view.model.editor.test.feature/pom.xml
@@ -5,11 +5,11 @@
   <parent>
     <groupId>org.eclipse.emf.ecp</groupId>
     <artifactId>ecp-features-parent</artifactId>
-    <version>1.16.0-SNAPSHOT</version>
+    <version>1.17.0-SNAPSHOT</version>
     <relativePath>../../releng/org.eclipse.emf.ecp.releng.features/</relativePath>
   </parent>
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emf.ecp.view.model.editor.test.feature</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-feature</packaging>
 </project>
diff --git a/tests/org.eclipse.emf.ecp.view.model.editor.testplugin/.settings/org.eclipse.pde.prefs b/tests/org.eclipse.emf.ecp.view.model.editor.testplugin/.settings/org.eclipse.pde.prefs
index 0bbee3c..66368de 100644
--- a/tests/org.eclipse.emf.ecp.view.model.editor.testplugin/.settings/org.eclipse.pde.prefs
+++ b/tests/org.eclipse.emf.ecp.view.model.editor.testplugin/.settings/org.eclipse.pde.prefs
@@ -18,12 +18,13 @@
 compilers.p.missing-version-import-package=1
 compilers.p.missing-version-require-bundle=1
 compilers.p.no-required-att=0
+compilers.p.no.automatic.module=1
 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.unknown-resource=2
 compilers.p.unresolved-ex-points=0
 compilers.p.unresolved-import=0
 compilers.s.create-docs=false
diff --git a/tests/org.eclipse.emf.ecp.view.model.editor.testplugin/META-INF/MANIFEST.MF b/tests/org.eclipse.emf.ecp.view.model.editor.testplugin/META-INF/MANIFEST.MF
index 4dfe77d..4f8fe17 100644
--- a/tests/org.eclipse.emf.ecp.view.model.editor.testplugin/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.emf.ecp.view.model.editor.testplugin/META-INF/MANIFEST.MF
@@ -2,7 +2,8 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: View Editor Test Plugin for Q7
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.model.editor.testplugin;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Require-Bundle: org.eclipse.emf.ecp.view.model.provider.xmi;bundle-version="[1.16.0,1.17.0)"
+Require-Bundle: org.eclipse.emf.ecp.view.model.provider.xmi;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Automatic-Module-Name: org.eclipse.emf.ecp.view.model.editor.testplugin
diff --git a/tests/org.eclipse.emf.ecp.view.model.editor.testplugin/pom.xml b/tests/org.eclipse.emf.ecp.view.model.editor.testplugin/pom.xml
index 980bb8e..5b874da 100644
--- a/tests/org.eclipse.emf.ecp.view.model.editor.testplugin/pom.xml
+++ b/tests/org.eclipse.emf.ecp.view.model.editor.testplugin/pom.xml
@@ -6,11 +6,11 @@
 	<parent>
 		<groupId>org.eclipse.emf.ecp</groupId>
 		<artifactId>ecp-tests-parent</artifactId>
-		<version>1.16.0-SNAPSHOT</version>
+		<version>1.17.0-SNAPSHOT</version>
 		<relativePath>../../releng/org.eclipse.emf.ecp.releng.tests/</relativePath>
 	</parent>
 	<groupId>org.eclipse.emf.ecp</groupId>
 	<artifactId>org.eclipse.emf.ecp.view.model.editor.testplugin</artifactId>
-	<version>1.16.0-SNAPSHOT</version>
+	<version>1.17.0-SNAPSHOT</version>
 	<packaging>eclipse-plugin</packaging>
 </project>
diff --git a/tests/org.eclipse.emf.ecp.view.model.integrationtest/META-INF/MANIFEST.MF b/tests/org.eclipse.emf.ecp.view.model.integrationtest/META-INF/MANIFEST.MF
index c17d429..81cfb6d 100644
--- a/tests/org.eclipse.emf.ecp.view.model.integrationtest/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.emf.ecp.view.model.integrationtest/META-INF/MANIFEST.MF
@@ -2,26 +2,28 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Integrationtest
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.model.integrationtest
-Bundle-Version: 1.16.0.qualifier
-Export-Package: org.eclipse.emf.ecp.view.model.integrationtest;version="1.16.0";x-internal:=true
+Bundle-Version: 1.17.0.qualifier
+Export-Package: org.eclipse.emf.ecp.view.model.integrationtest;version="1.17.0";x-internal:=true
 Require-Bundle: org.junit;bundle-version="[4.0.0,5.0.0)",
-  org.eclipse.emf.edit;bundle-version="[2.8.0,3.0.0)",
-  org.eclipse.emf.ecp.view.model.edit;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.common;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.groupedgrid.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.label.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.rule.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.group.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.table.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.categorization.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.horizontal.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.vertical.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.viewproxy.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.stack.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.section.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.treemasterdetail.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.compoundcontrol.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.custom.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.template.model;bundle-version="[1.16.0,1.17.0)"
+ org.eclipse.emf.edit;bundle-version="[2.8.0,3.0.0)",
+ org.eclipse.emf.ecp.view.model.edit;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.common;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.groupedgrid.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.label.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.rule.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.group.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.table.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.categorization.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.horizontal.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.vertical.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.viewproxy.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.stack.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.section.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.treemasterdetail.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.compoundcontrol.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.custom.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.template.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.template.annotation.model.edit;bundle-version="[1.17.0,1.18.0)"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Automatic-Module-Name: org.eclipse.emf.ecp.view.model.integrationtest
diff --git a/tests/org.eclipse.emf.ecp.view.model.integrationtest/ViewModelIntegrationTests.launch b/tests/org.eclipse.emf.ecp.view.model.integrationtest/ViewModelIntegrationTests.launch
index b9f85a7..79fa4de 100644
--- a/tests/org.eclipse.emf.ecp.view.model.integrationtest/ViewModelIntegrationTests.launch
+++ b/tests/org.eclipse.emf.ecp.view.model.integrationtest/ViewModelIntegrationTests.launch
@@ -33,7 +33,7 @@
 <stringAttribute key="product" value="org.eclipse.emf.cdo.server.product.tcp_h2"/>
 <booleanAttribute key="run_in_ui_thread" value="true"/>
 <stringAttribute key="selected_target_plugins" value="com.ibm.icu@default:default,org.eclipse.core.contenttype@default:default,org.eclipse.core.databinding*1.5.0.v20150422-0725@default:default,org.eclipse.core.databinding*1.6.100.v20170515-1119@default:default,org.eclipse.core.databinding.observable*1.5.0.v20150422-0725@default:default,org.eclipse.core.databinding.observable*1.6.100.v20170515-1119@default:default,org.eclipse.core.databinding.property*1.5.0.v20150422-0725@default:default,org.eclipse.core.databinding.property*1.6.100.v20170515-1119@default:default,org.eclipse.core.jobs@default:default,org.eclipse.core.runtime@default:true,org.eclipse.emf.common@default:default,org.eclipse.emf.databinding.edit@default:default,org.eclipse.emf.databinding@default:default,org.eclipse.emf.ecore.edit@default:default,org.eclipse.emf.ecore.xmi@default:default,org.eclipse.emf.ecore@default:default,org.eclipse.emf.edit@default:default,org.eclipse.equinox.app@default:default,org.eclipse.equinox.common@2:true,org.eclipse.equinox.preferences@default:default,org.eclipse.equinox.registry@default:default,org.eclipse.osgi.services@default:default,org.eclipse.osgi.util@default:default,org.eclipse.osgi@-1:true,org.hamcrest.core@default:default,org.junit@default:default"/>
-<stringAttribute key="selected_workspace_plugins" value="org.eclipse.emf.ecp.common@default:default,org.eclipse.emf.ecp.edit@default:default,org.eclipse.emf.ecp.ui.view@default:default,org.eclipse.emf.ecp.view.categorization.model.edit@default:default,org.eclipse.emf.ecp.view.categorization.model@default:default,org.eclipse.emf.ecp.view.compoundcontrol.model.edit@default:default,org.eclipse.emf.ecp.view.compoundcontrol.model@default:default,org.eclipse.emf.ecp.view.context@default:default,org.eclipse.emf.ecp.view.custom.model.edit@default:default,org.eclipse.emf.ecp.view.custom.model@default:default,org.eclipse.emf.ecp.view.group.model.edit@default:default,org.eclipse.emf.ecp.view.group.model@default:default,org.eclipse.emf.ecp.view.groupedgrid.model.edit@default:default,org.eclipse.emf.ecp.view.groupedgrid.model@default:default,org.eclipse.emf.ecp.view.horizontal.model.edit@default:default,org.eclipse.emf.ecp.view.horizontal.model@default:default,org.eclipse.emf.ecp.view.indexdmr.model.edit@default:default,org.eclipse.emf.ecp.view.indexdmr.model@default:default,org.eclipse.emf.ecp.view.keyattributedmr.model.edit@default:default,org.eclipse.emf.ecp.view.keyattributedmr.model@default:default,org.eclipse.emf.ecp.view.label.model.edit@default:default,org.eclipse.emf.ecp.view.label.model@default:default,org.eclipse.emf.ecp.view.mappingdmr.model.edit@default:default,org.eclipse.emf.ecp.view.mappingdmr.model@default:default,org.eclipse.emf.ecp.view.migrator@default:default,org.eclipse.emf.ecp.view.model.common@default:default,org.eclipse.emf.ecp.view.model.edit@default:default,org.eclipse.emf.ecp.view.model.integrationtest@default:default,org.eclipse.emf.ecp.view.model.provider.xmi@default:default,org.eclipse.emf.ecp.view.model@default:default,org.eclipse.emf.ecp.view.rule.model.edit@default:default,org.eclipse.emf.ecp.view.rule.model@default:default,org.eclipse.emf.ecp.view.section.model.edit@default:default,org.eclipse.emf.ecp.view.section.model@default:default,org.eclipse.emf.ecp.view.stack.model.edit@default:default,org.eclipse.emf.ecp.view.stack.model@default:default,org.eclipse.emf.ecp.view.table.model.edit@default:default,org.eclipse.emf.ecp.view.table.model@default:default,org.eclipse.emf.ecp.view.template.model.edit@default:default,org.eclipse.emf.ecp.view.template.model@default:default,org.eclipse.emf.ecp.view.treemasterdetail.model.edit@default:default,org.eclipse.emf.ecp.view.treemasterdetail.model@default:default,org.eclipse.emf.ecp.view.vertical.model.edit@default:default,org.eclipse.emf.ecp.view.vertical.model@default:default,org.eclipse.emf.ecp.view.viewproxy.model.edit@default:default,org.eclipse.emf.ecp.view.viewproxy.model@default:default,org.eclipse.emfforms.common@default:default,org.eclipse.emfforms.core.services.databinding.featurepath@default:default,org.eclipse.emfforms.core.services.databinding.index@default:default,org.eclipse.emfforms.core.services.databinding.mapping@default:default,org.eclipse.emfforms.core.services.emf@default:default,org.eclipse.emfforms.core.services.emfspecificservice@default:default,org.eclipse.emfforms.core.services@default:default,org.eclipse.emfforms.localization@default:default"/>
+<stringAttribute key="selected_workspace_plugins" value="org.eclipse.emf.ecp.common@default:default,org.eclipse.emf.ecp.edit@default:default,org.eclipse.emf.ecp.ui.view@default:default,org.eclipse.emf.ecp.view.categorization.model.edit@default:default,org.eclipse.emf.ecp.view.categorization.model@default:default,org.eclipse.emf.ecp.view.compoundcontrol.model.edit@default:default,org.eclipse.emf.ecp.view.compoundcontrol.model@default:default,org.eclipse.emf.ecp.view.context@default:default,org.eclipse.emf.ecp.view.custom.model.edit@default:default,org.eclipse.emf.ecp.view.custom.model@default:default,org.eclipse.emf.ecp.view.group.model.edit@default:default,org.eclipse.emf.ecp.view.group.model@default:default,org.eclipse.emf.ecp.view.groupedgrid.model.edit@default:default,org.eclipse.emf.ecp.view.groupedgrid.model@default:default,org.eclipse.emf.ecp.view.horizontal.model.edit@default:default,org.eclipse.emf.ecp.view.horizontal.model@default:default,org.eclipse.emf.ecp.view.indexdmr.model.edit@default:default,org.eclipse.emf.ecp.view.indexdmr.model@default:default,org.eclipse.emf.ecp.view.keyattributedmr.model.edit@default:default,org.eclipse.emf.ecp.view.keyattributedmr.model@default:default,org.eclipse.emf.ecp.view.label.model.edit@default:default,org.eclipse.emf.ecp.view.label.model@default:default,org.eclipse.emf.ecp.view.mappingdmr.model.edit@default:default,org.eclipse.emf.ecp.view.mappingdmr.model@default:default,org.eclipse.emf.ecp.view.migrator@default:default,org.eclipse.emf.ecp.view.model.common@default:default,org.eclipse.emf.ecp.view.model.edit@default:default,org.eclipse.emf.ecp.view.model.integrationtest@default:default,org.eclipse.emf.ecp.view.model.provider.xmi@default:default,org.eclipse.emf.ecp.view.model@default:default,org.eclipse.emf.ecp.view.rule.model.edit@default:default,org.eclipse.emf.ecp.view.rule.model@default:default,org.eclipse.emf.ecp.view.section.model.edit@default:default,org.eclipse.emf.ecp.view.section.model@default:default,org.eclipse.emf.ecp.view.stack.model.edit@default:default,org.eclipse.emf.ecp.view.stack.model@default:default,org.eclipse.emf.ecp.view.table.model.edit@default:default,org.eclipse.emf.ecp.view.table.model@default:default,org.eclipse.emf.ecp.view.template.annotation.model.edit@default:default,org.eclipse.emf.ecp.view.template.annotation.model@default:default,org.eclipse.emf.ecp.view.template.model.edit@default:default,org.eclipse.emf.ecp.view.template.model@default:default,org.eclipse.emf.ecp.view.treemasterdetail.model.edit@default:default,org.eclipse.emf.ecp.view.treemasterdetail.model@default:default,org.eclipse.emf.ecp.view.vertical.model.edit@default:default,org.eclipse.emf.ecp.view.vertical.model@default:default,org.eclipse.emf.ecp.view.viewproxy.model.edit@default:default,org.eclipse.emf.ecp.view.viewproxy.model@default:default,org.eclipse.emfforms.common@default:default,org.eclipse.emfforms.core.services.databinding.featurepath@default:default,org.eclipse.emfforms.core.services.databinding.index@default:default,org.eclipse.emfforms.core.services.databinding.mapping@default:default,org.eclipse.emfforms.core.services.emf@default:default,org.eclipse.emfforms.core.services.emfspecificservice@default:default,org.eclipse.emfforms.core.services@default:default,org.eclipse.emfforms.localization@default:default,org.eclipse.emfforms.view.annotation.model@default:default"/>
 <booleanAttribute key="show_selected_only" value="false"/>
 <booleanAttribute key="tracing" value="false"/>
 <booleanAttribute key="useCustomFeatures" value="false"/>
diff --git a/tests/org.eclipse.emf.ecp.view.model.integrationtest/pom.xml b/tests/org.eclipse.emf.ecp.view.model.integrationtest/pom.xml
index 51345bd..c91d2b7 100644
--- a/tests/org.eclipse.emf.ecp.view.model.integrationtest/pom.xml
+++ b/tests/org.eclipse.emf.ecp.view.model.integrationtest/pom.xml
@@ -6,12 +6,12 @@
 	<parent>
 		<groupId>org.eclipse.emf.ecp</groupId>
 		<artifactId>ecp-tests-parent</artifactId>
-		<version>1.16.0-SNAPSHOT</version>
+		<version>1.17.0-SNAPSHOT</version>
 		<relativePath>../../releng/org.eclipse.emf.ecp.releng.tests/</relativePath>
 	</parent>
 	<groupId>org.eclipse.emf.ecp</groupId>
 	<artifactId>org.eclipse.emf.ecp.view.model.integrationtest</artifactId>
-	<version>1.16.0-SNAPSHOT</version>
+	<version>1.17.0-SNAPSHOT</version>
 	<packaging>eclipse-test-plugin</packaging>
 
 	<build>
diff --git a/tests/org.eclipse.emf.ecp.view.model.integrationtest/src/org/eclipse/emf/ecp/view/model/integrationtest/TemplateChildrenDescriptorExtension_PTest.java b/tests/org.eclipse.emf.ecp.view.model.integrationtest/src/org/eclipse/emf/ecp/view/model/integrationtest/TemplateChildrenDescriptorExtension_PTest.java
index 44e23f2..d53706e 100644
--- a/tests/org.eclipse.emf.ecp.view.model.integrationtest/src/org/eclipse/emf/ecp/view/model/integrationtest/TemplateChildrenDescriptorExtension_PTest.java
+++ b/tests/org.eclipse.emf.ecp.view.model.integrationtest/src/org/eclipse/emf/ecp/view/model/integrationtest/TemplateChildrenDescriptorExtension_PTest.java
@@ -18,8 +18,8 @@
 
 public class TemplateChildrenDescriptorExtension_PTest {
 
-	private static final int SELECTOR_COUNT = 2;
-	private static final int PROPERTY_COUNT = 12;
+	private static final int SELECTOR_COUNT = 5;
+	private static final int PROPERTY_COUNT = 13;
 
 	@Test
 	public void testStyleChildren() {
diff --git a/tests/org.eclipse.emf.ecp.view.model.preview.common.test/.checkstyle b/tests/org.eclipse.emf.ecp.view.model.preview.common.test/.checkstyle
new file mode 100644
index 0000000..24d357f
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.view.model.preview.common.test/.checkstyle
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<fileset-config file-format-version="1.2.0" simple-config="false" sync-formatter="false">
+  <local-check-config name="ESMCheckstyleTest" location="/org.eclipse.emf.ecp.releng/checkstyle/esmCheckstyleTest.xml" type="project" description="">
+    <additional-data name="protect-config-file" value="false"/>
+  </local-check-config>
+  <fileset name="Java Files" enabled="true" check-config-name="ESMCheckstyleTest" local="true">
+    <file-match-pattern match-pattern=".java" include-pattern="true"/>
+  </fileset>
+</fileset-config>
diff --git a/tests/org.eclipse.emf.ecp.view.model.preview.common.test/.classpath b/tests/org.eclipse.emf.ecp.view.model.preview.common.test/.classpath
new file mode 100644
index 0000000..ad32c83
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.view.model.preview.common.test/.classpath
@@ -0,0 +1,7 @@
+<?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.6"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/tests/org.eclipse.emf.ecp.view.model.preview.common.test/.project b/tests/org.eclipse.emf.ecp.view.model.preview.common.test/.project
new file mode 100644
index 0000000..6349168
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.view.model.preview.common.test/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.emf.ecp.view.model.preview.common.test</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>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/tests/org.eclipse.emf.ecp.view.model.preview.common.test/.settings/org.eclipse.core.resources.prefs b/tests/org.eclipse.emf.ecp.view.model.preview.common.test/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..f548abb
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.view.model.preview.common.test/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,6 @@
+eclipse.preferences.version=1
+
+encoding//model/etypes.ecore=UTF-8
+
+
+encoding/<project>=UTF-8
diff --git a/tests/org.eclipse.emf.ecp.view.model.preview.common.test/.settings/org.eclipse.core.runtime.prefs b/tests/org.eclipse.emf.ecp.view.model.preview.common.test/.settings/org.eclipse.core.runtime.prefs
new file mode 100644
index 0000000..5a0ad22
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.view.model.preview.common.test/.settings/org.eclipse.core.runtime.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+line.separator=\n
diff --git a/tests/org.eclipse.emf.ecp.view.model.preview.common.test/.settings/org.eclipse.jdt.core.prefs b/tests/org.eclipse.emf.ecp.view.model.preview.common.test/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..452e0c2
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.view.model.preview.common.test/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,418 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.builder.cleanOutputFolder=clean
+org.eclipse.jdt.core.builder.duplicateResourceTask=warning
+org.eclipse.jdt.core.builder.invalidClasspath=abort
+org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
+org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=
+org.eclipse.jdt.core.circularClasspath=error
+org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
+org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
+org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error
+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.annotation.inheritNullAnnotations=disabled
+org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
+org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
+org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
+org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.6
+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.doc.comment.support=enabled
+org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
+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=enabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
+org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=disabled
+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.invalidJavadoc=warning
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=disabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=public
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
+org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=warning
+org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
+org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=public
+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=warning
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore
+org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
+org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
+org.eclipse.jdt.core.compiler.problem.nullReference=warning
+org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
+org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
+org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
+org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
+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.syntacticNullAnalysisForFields=disabled
+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.unclosedCloseable=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=warning
+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.unusedTypeParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.source=1.6
+org.eclipse.jdt.core.compiler.taskCaseSensitive=enabled
+org.eclipse.jdt.core.compiler.taskPriorities=NORMAL,HIGH,HIGH,LOW,LOW,LOW,LOW,LOW,NORMAL
+org.eclipse.jdt.core.compiler.taskTags=TODO,FIXME,XXX,PERF,MEM,POLISH,@generated NOT,@ADDED,APITODO
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+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_binary_expression=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_method_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=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_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=false
+org.eclipse.jdt.core.formatter.comment.format_block_comments=true
+org.eclipse.jdt.core.formatter.comment.format_header=true
+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=do not 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=1
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=1
+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=do not 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_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_binary_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_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_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_unary_operator=do not 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_binary_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_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_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_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=false
+org.eclipse.jdt.core.formatter.join_wrapped_lines=false
+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=120
+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_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
+org.eclipse.jdt.core.incompatibleJDKLevel=ignore
+org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/tests/org.eclipse.emf.ecp.view.model.preview.common.test/.settings/org.eclipse.jdt.launching.prefs b/tests/org.eclipse.emf.ecp.view.model.preview.common.test/.settings/org.eclipse.jdt.launching.prefs
new file mode 100644
index 0000000..3bb2352
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.view.model.preview.common.test/.settings/org.eclipse.jdt.launching.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.launching.PREF_STRICTLY_COMPATIBLE_JRE_NOT_AVAILABLE=ignore
diff --git a/tests/org.eclipse.emf.ecp.view.model.preview.common.test/.settings/org.eclipse.jdt.ui.prefs b/tests/org.eclipse.emf.ecp.view.model.preview.common.test/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 0000000..8bc4bb4
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.view.model.preview.common.test/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,127 @@
+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_functional_interfaces=false
+cleanup.convert_to_enhanced_for_loop=false
+cleanup.correct_indentation=false
+cleanup.format_source_code=true
+cleanup.format_source_code_changes_only=false
+cleanup.insert_inferred_type_arguments=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=true
+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=true
+cleanup.remove_redundant_type_arguments=true
+cleanup.remove_trailing_whitespaces=true
+cleanup.remove_trailing_whitespaces_all=true
+cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_casts=false
+cleanup.remove_unnecessary_nls_tags=false
+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=true
+cleanup.remove_unused_private_types=true
+cleanup.sort_members=false
+cleanup.sort_members_all=false
+cleanup.use_anonymous_class_creation=false
+cleanup.use_blocks=true
+cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_lambda=true
+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.use_type_arguments=false
+cleanup_profile=_esmCleanUp
+cleanup_settings_version=2
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+formatter_profile=_esmFormatter
+formatter_settings_version=12
+org.eclipse.jdt.ui.exception.name=ex
+org.eclipse.jdt.ui.gettersetter.use.is=true
+org.eclipse.jdt.ui.javadoc=true
+org.eclipse.jdt.ui.keywordthis=false
+org.eclipse.jdt.ui.overrideannotation=true
+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 * Copyright (c) 2011-${year} EclipseSource Muenchen GmbH and others.\r\n * \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 * ${user} - initial API and implementation\r\n ******************************************************************************/</template><template autoinsert\="true" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * @author ${user}\r\n *\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment"/><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 * {@inheritDoc}\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">\t\t\t// TODO Auto-generated catch block\r\n\t\t\t// Do NOT catch all Exceptions ("catch (Exception e)")\r\n\t\t\t// Log AND handle Exceptions if possible \r\n            //\r\n            // You can just uncomment one of the lines below to log an exception\:\r\n\t\t\t// logException will show the logged excpetion to the user\r\n\t\t\t// ModelUtil.logException(${exception_var});\r\n\t\t\t// ModelUtil.logException("YOUR MESSAGE HERE", ${exception_var});\r\n\t\t\t// logWarning will only add the message to the error log\r\n\t\t\t// ModelUtil.logWarning("YOUR MESSAGE HERE", ${exception_var});\r\n\t\t\t// ModelUtil.logWarning("YOUR MESSAGE HERE");\r\n\t\t\t//\t\t\t\r\n\t\t\t// If handling is not possible declare and rethrow Exception</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_functional_interfaces=false
+sp_cleanup.convert_to_enhanced_for_loop=false
+sp_cleanup.correct_indentation=false
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.insert_inferred_type_arguments=false
+sp_cleanup.make_local_variable_final=true
+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=true
+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=true
+sp_cleanup.remove_redundant_type_arguments=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=false
+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=true
+sp_cleanup.remove_unused_private_types=true
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.use_anonymous_class_creation=false
+sp_cleanup.use_blocks=true
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_lambda=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
+sp_cleanup.use_type_arguments=false
diff --git a/tests/org.eclipse.emf.ecp.view.model.preview.common.test/.settings/org.eclipse.ltk.core.refactoring.prefs b/tests/org.eclipse.emf.ecp.view.model.preview.common.test/.settings/org.eclipse.ltk.core.refactoring.prefs
new file mode 100644
index 0000000..864e30f
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.view.model.preview.common.test/.settings/org.eclipse.ltk.core.refactoring.prefs
@@ -0,0 +1,3 @@
+#Thu Feb 04 09:44:24 CET 2010
+eclipse.preferences.version=1
+org.eclipse.ltk.core.refactoring.enable.project.refactoring.history=false
diff --git a/tests/org.eclipse.emf.ecp.view.model.preview.common.test/.settings/org.eclipse.pde.api.tools.prefs b/tests/org.eclipse.emf.ecp.view.model.preview.common.test/.settings/org.eclipse.pde.api.tools.prefs
new file mode 100644
index 0000000..e4e3c00
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.view.model.preview.common.test/.settings/org.eclipse.pde.api.tools.prefs
@@ -0,0 +1,97 @@
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_TYPE=Error
+API_USE_SCAN_FIELD_SEVERITY=Error
+API_USE_SCAN_METHOD_SEVERITY=Error
+API_USE_SCAN_TYPE_SEVERITY=Error
+CLASS_ELEMENT_TYPE_ADDED_METHOD=Error
+CLASS_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CLASS_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+CLASS_ELEMENT_TYPE_REMOVED_CONSTRUCTOR=Error
+CLASS_ELEMENT_TYPE_REMOVED_FIELD=Error
+CLASS_ELEMENT_TYPE_REMOVED_METHOD=Error
+CLASS_ELEMENT_TYPE_REMOVED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+ENUM_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ENUM_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ENUM_ELEMENT_TYPE_REMOVED_ENUM_CONSTANT=Error
+ENUM_ELEMENT_TYPE_REMOVED_FIELD=Error
+ENUM_ELEMENT_TYPE_REMOVED_METHOD=Error
+ENUM_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+FIELD_ELEMENT_TYPE_ADDED_VALUE=Error
+FIELD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+FIELD_ELEMENT_TYPE_CHANGED_FINAL_TO_NON_FINAL_STATIC_CONSTANT=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_TYPE=Error
+FIELD_ELEMENT_TYPE_CHANGED_VALUE=Error
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENT=Error
+FIELD_ELEMENT_TYPE_REMOVED_VALUE=Error
+ILLEGAL_EXTEND=Warning
+ILLEGAL_IMPLEMENT=Warning
+ILLEGAL_INSTANTIATE=Warning
+ILLEGAL_OVERRIDE=Warning
+ILLEGAL_REFERENCE=Warning
+INTERFACE_ELEMENT_TYPE_ADDED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_SUPER_INTERFACE_WITH_METHODS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+INVALID_JAVADOC_TAG=Warning
+INVALID_REFERENCE_IN_SYSTEM_LIBRARIES=Error
+LEAK_EXTEND=Warning
+LEAK_FIELD_DECL=Warning
+LEAK_IMPLEMENT=Warning
+LEAK_METHOD_PARAM=Warning
+LEAK_METHOD_RETURN_TYPE=Warning
+METHOD_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+METHOD_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+METHOD_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+MISSING_EE_DESCRIPTIONS=Error
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+UNUSED_PROBLEM_FILTERS=Ignore
+automatically_removed_unused_problem_filters=Disabled
+eclipse.preferences.version=1
+incompatible_api_component_version=Error
+incompatible_api_component_version_include_major_without_breaking_change=Disabled
+incompatible_api_component_version_include_minor_without_api_change=Disabled
+invalid_since_tag_version=Error
+malformed_since_tag=Error
+missing_since_tag=Error
+report_api_breakage_when_major_version_incremented=Disabled
+report_resolution_errors_api_component=Warning
diff --git a/tests/org.eclipse.emf.ecp.view.model.preview.common.test/.settings/org.eclipse.pde.core.prefs b/tests/org.eclipse.emf.ecp.view.model.preview.common.test/.settings/org.eclipse.pde.core.prefs
new file mode 100644
index 0000000..f29e940
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.view.model.preview.common.test/.settings/org.eclipse.pde.core.prefs
@@ -0,0 +1,3 @@
+eclipse.preferences.version=1
+pluginProject.extensions=false
+resolve.requirebundle=false
diff --git a/tests/org.eclipse.emf.ecp.view.model.preview.common.test/.settings/org.eclipse.pde.prefs b/tests/org.eclipse.emf.ecp.view.model.preview.common.test/.settings/org.eclipse.pde.prefs
new file mode 100644
index 0000000..0bbee3c
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.view.model.preview.common.test/.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=1
+compilers.p.missing-version-import-package=1
+compilers.p.missing-version-require-bundle=1
+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.emf.ecp.view.model.preview.common.test/META-INF/MANIFEST.MF b/tests/org.eclipse.emf.ecp.view.model.preview.common.test/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..8e5fe66
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.view.model.preview.common.test/META-INF/MANIFEST.MF
@@ -0,0 +1,14 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Preview Common Tests
+Bundle-SymbolicName: org.eclipse.emf.ecp.view.model.preview.common.test;singleton:=true
+Bundle-Version: 1.17.0.qualifier
+Bundle-Vendor: Eclipse Modeling Project
+Fragment-Host: org.eclipse.emf.ecp.view.model.preview.common;bundle-version="[1.17.0,1.18.0]"
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Require-Bundle: org.eclipse.swt;bundle-version="[3.106.2,4.0.0)",
+ org.junit;bundle-version="[4.12.0,5.0.0)",
+ org.mockito.mockito-core-hamcrest-modified;bundle-version="[1.9.5,2.0.0)",
+ org.objenesis;bundle-version="[1.0.0,2.0.0)"
+Export-Package: org.eclipse.emf.ecp.view.model.preview.common.test;version="0.0.0"
+Automatic-Module-Name: org.eclipse.emf.ecp.view.model.preview.common.test
diff --git a/tests/org.eclipse.emf.ecp.view.model.preview.common.test/build.properties b/tests/org.eclipse.emf.ecp.view.model.preview.common.test/build.properties
new file mode 100644
index 0000000..96202b6
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.view.model.preview.common.test/build.properties
@@ -0,0 +1,5 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+               .
+jre.compilation.profile = JavaSE-1.6
diff --git a/tests/org.eclipse.emf.ecp.view.model.preview.common.test/pom.xml b/tests/org.eclipse.emf.ecp.view.model.preview.common.test/pom.xml
new file mode 100644
index 0000000..c34e769
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.view.model.preview.common.test/pom.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
+	xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+	<modelVersion>4.0.0</modelVersion>
+	<parent>
+		<groupId>org.eclipse.emf.ecp</groupId>
+		<artifactId>ecp-tests-parent</artifactId>
+		<version>1.17.0-SNAPSHOT</version>
+		<relativePath>../../releng/org.eclipse.emf.ecp.releng.tests/</relativePath>
+	</parent>
+	<groupId>org.eclipse.emf.ecp</groupId>
+	<artifactId>org.eclipse.emf.ecp.view.model.preview.common.test</artifactId>
+	<version>1.17.0-SNAPSHOT</version>
+	<packaging>eclipse-test-plugin</packaging>
+
+	<build>
+		<sourceDirectory>src</sourceDirectory>
+		<plugins>
+			<plugin>
+				<groupId>org.eclipse.tycho</groupId>
+				<artifactId>tycho-surefire-plugin</artifactId>
+				<version>${tycho-version}</version>
+				<configuration>
+		          	<useUIHarness>true</useUIHarness>
+		          	<useUIThread>true</useUIThread>
+		          	<includes>
+						<include>**/*_PTest.java</include>
+						<include>**/*_ITest.java</include>
+						<!-- Execute SWT-Related tests with tycho surefire -->
+						<include>**/Preview_Test.java</include>
+					</includes>
+				</configuration>
+			</plugin>
+			<plugin>
+				<groupId>org.eclipse.tycho</groupId>
+				<artifactId>target-platform-configuration</artifactId>
+				<configuration>
+					<dependency-resolution>
+						<extraRequirements>
+							<requirement>
+								<type>p2-installable-unit</type>
+								<id>org.eclipse.equinox.ds</id>
+								<versionRange>0.0.0</versionRange>
+							</requirement>
+						</extraRequirements>
+					</dependency-resolution>
+				</configuration>
+			</plugin>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-surefire-plugin</artifactId>
+				<version>${mav-surefire-version}</version>
+				<executions>
+					<execution>
+						<id>test</id>
+						<phase>test</phase>
+						<configuration>
+							<testClassesDirectory>${project.build.outputDirectory}</testClassesDirectory>
+							<excludes>
+								<!-- Executed with tycho surefire -->
+								<exclude>**/Preview_Test.java</exclude>
+							</excludes>
+							<testFailureIgnore>true</testFailureIgnore>
+				        </configuration>
+						<goals>
+							<goal>test</goal>
+						</goals>
+					</execution>
+				</executions>
+			</plugin>
+
+		</plugins>
+	</build>
+</project>
diff --git a/tests/org.eclipse.emf.ecp.view.model.preview.common.test/src/org/eclipse/emf/ecp/view/model/preview/common/test/Preview_Test.java b/tests/org.eclipse.emf.ecp.view.model.preview.common.test/src/org/eclipse/emf/ecp/view/model/preview/common/test/Preview_Test.java
new file mode 100644
index 0000000..2eac94f
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.view.model.preview.common.test/src/org/eclipse/emf/ecp/view/model/preview/common/test/Preview_Test.java
@@ -0,0 +1,35 @@
+/*******************************************************************************
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * alex - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.emf.ecp.view.model.preview.common.test;
+
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import org.eclipse.emf.ecp.view.model.preview.common.Preview;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.junit.Test;
+
+/**
+ * Unit tests for the {@link Preview}.
+ */
+public class Preview_Test {
+
+	@Test(expected = Test.None.class /* no exception expected */)
+	public void testRenderNullView() {
+		final Composite parent = mock(Composite.class);
+		when(parent.getChildren()).thenReturn(new Control[0]);
+		final Preview preview = new Preview(parent);
+		preview.render(null, null);
+	}
+
+}
diff --git a/tests/org.eclipse.emf.ecp.view.model.provider.xmi.test/META-INF/MANIFEST.MF b/tests/org.eclipse.emf.ecp.view.model.provider.xmi.test/META-INF/MANIFEST.MF
index 8ff9fcd..311b611 100644
--- a/tests/org.eclipse.emf.ecp.view.model.provider.xmi.test/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.emf.ecp.view.model.provider.xmi.test/META-INF/MANIFEST.MF
@@ -2,16 +2,17 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: ECP XMI Provider Test
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.model.provider.xmi.test;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-ClassPath: .
 Bundle-Vendor: Eclipse Modeling Project
-Fragment-Host: org.eclipse.emf.ecp.view.model.provider.xmi;bundle-version="[1.16.0,1.17.0)"
-Export-Package: org.eclipse.emf.ecp.view.model.provider.xmi;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.view.model.provider.xmi.test;version="1.16.0";x-internal:=true
+Fragment-Host: org.eclipse.emf.ecp.view.model.provider.xmi;bundle-version="[1.17.0,1.18.0]"
+Export-Package: org.eclipse.emf.ecp.view.model.provider.xmi;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.model.provider.xmi.test;version="1.17.0";x-internal:=true
 Require-Bundle: org.eclipse.core.runtime;bundle-version="3.8.0",
-  org.junit;bundle-version="4.0.0",
-  org.eclipse.emf.emfstore.examplemodel;bundle-version="[1.3.0,2.0.0)",
-  org.mockito.mockito-core-hamcrest-modified;bundle-version="1.9.5",
-  org.eclipse.emf.ecp.makeithappen.model;bundle-version="[1.16.0,1.17.0)"
+ org.junit;bundle-version="4.0.0",
+ org.eclipse.emf.emfstore.examplemodel;bundle-version="[1.3.0,2.0.0)",
+ org.mockito.mockito-core-hamcrest-modified;bundle-version="1.9.5",
+ org.eclipse.emf.ecp.makeithappen.model;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: J2SE-1.5
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.view.model.provider.xmi.test
diff --git a/tests/org.eclipse.emf.ecp.view.model.provider.xmi.test/pom.xml b/tests/org.eclipse.emf.ecp.view.model.provider.xmi.test/pom.xml
index de75300..7652887 100644
--- a/tests/org.eclipse.emf.ecp.view.model.provider.xmi.test/pom.xml
+++ b/tests/org.eclipse.emf.ecp.view.model.provider.xmi.test/pom.xml
@@ -6,12 +6,12 @@
 	<parent>
 		<groupId>org.eclipse.emf.ecp</groupId>
 		<artifactId>ecp-tests-parent</artifactId>
-		<version>1.16.0-SNAPSHOT</version>
+		<version>1.17.0-SNAPSHOT</version>
 		<relativePath>../../releng/org.eclipse.emf.ecp.releng.tests/</relativePath>
 	</parent>
 	<groupId>org.eclipse.emf.ecp</groupId>
 	<artifactId>org.eclipse.emf.ecp.view.model.provider.xmi.test</artifactId>
-	<version>1.16.0-SNAPSHOT</version>
+	<version>1.17.0-SNAPSHOT</version>
 	<packaging>eclipse-test-plugin</packaging>
 
 	<build>
diff --git a/tests/org.eclipse.emf.ecp.view.model.provider.xmi.test/viewmodel.view b/tests/org.eclipse.emf.ecp.view.model.provider.xmi.test/viewmodel.view
index 46a7e9b..b830735 100644
--- a/tests/org.eclipse.emf.ecp.view.model.provider.xmi.test/viewmodel.view
+++ b/tests/org.eclipse.emf.ecp.view.model.provider.xmi.test/viewmodel.view
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="ASCII"?>
-<org.eclipse.emf.ecp.view.model:View xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:org.eclipse.emf.ecp.view.model="http://org/eclipse/emf/ecp/view/model/170" xmi:id="_shRmgEWAEeWfKJaajyNdyA" name="the view name">
+<org.eclipse.emf.ecp.view.model:View xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:org.eclipse.emf.ecp.view.model="http://org/eclipse/emf/ecp/view/model/1170" xmi:id="_shRmgEWAEeWfKJaajyNdyA" name="the view name">
   <rootEClass href="http://org/eclipse/example/bowling#//League"/>
 </org.eclipse.emf.ecp.view.model:View>
diff --git a/tests/org.eclipse.emf.ecp.view.model.provider.xmi.test/viewmodel2.view b/tests/org.eclipse.emf.ecp.view.model.provider.xmi.test/viewmodel2.view
index 6cfbd2c..4cc8411 100644
--- a/tests/org.eclipse.emf.ecp.view.model.provider.xmi.test/viewmodel2.view
+++ b/tests/org.eclipse.emf.ecp.view.model.provider.xmi.test/viewmodel2.view
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="ASCII"?>
-<org.eclipse.emf.ecp.view.model:View xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:org.eclipse.emf.ecp.view.model="http://org/eclipse/emf/ecp/view/model/170" xmi:id="_sr9MgEWAEeWfKJaajyNdyA" name="the view name 2">
+<org.eclipse.emf.ecp.view.model:View xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:org.eclipse.emf.ecp.view.model="http://org/eclipse/emf/ecp/view/model/1170" xmi:id="_sr9MgEWAEeWfKJaajyNdyA" name="the view name 2">
   <rootEClass href="http://org/eclipse/example/bowling#//League"/>
 </org.eclipse.emf.ecp.view.model:View>
diff --git a/tests/org.eclipse.emf.ecp.view.model.test/META-INF/MANIFEST.MF b/tests/org.eclipse.emf.ecp.view.model.test/META-INF/MANIFEST.MF
index 4228852..4181f82 100644
--- a/tests/org.eclipse.emf.ecp.view.model.test/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.emf.ecp.view.model.test/META-INF/MANIFEST.MF
@@ -2,14 +2,15 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Model Test
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.model.test
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Fragment-Host: org.eclipse.emf.ecp.view.model;bundle-version="[1.16.0,1.17.0)"
-Export-Package: org.eclipse.emf.ecp.view.model.test;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.view.spi.model;version="1.16.0"
+Fragment-Host: org.eclipse.emf.ecp.view.model;bundle-version="[1.17.0,1.18.0]"
+Export-Package: org.eclipse.emf.ecp.view.model.test;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.spi.model;version="1.17.0"
 Require-Bundle: org.junit;bundle-version="[4.11.0,5.0.0)",
   org.eclipse.emf.emfstore.examplemodel;bundle-version="[1.3.0,2.0.0)",
   org.mockito.mockito-core-hamcrest-modified;bundle-version="[1.9.5,2.0.0)",
   org.objenesis;bundle-version="1.0.0"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
-Import-Package: org.eclipse.emf.ecp.view.spi.group.model;version="[1.16.0,1.17.0)"
+Import-Package: org.eclipse.emf.ecp.view.spi.group.model;version="[1.17.0,1.18.0]"
+Automatic-Module-Name: org.eclipse.emf.ecp.view.model.test
diff --git a/tests/org.eclipse.emf.ecp.view.model.test/pom.xml b/tests/org.eclipse.emf.ecp.view.model.test/pom.xml
index 33585fc..0d65336 100644
--- a/tests/org.eclipse.emf.ecp.view.model.test/pom.xml
+++ b/tests/org.eclipse.emf.ecp.view.model.test/pom.xml
@@ -6,7 +6,7 @@
 	<parent>
 		<groupId>org.eclipse.emf.ecp</groupId>
 		<artifactId>ecp-tests-parent</artifactId>
-		<version>1.16.0-SNAPSHOT</version>
+		<version>1.17.0-SNAPSHOT</version>
 		<relativePath>../../releng/org.eclipse.emf.ecp.releng.tests/</relativePath>
 	</parent>
 	<groupId>org.eclipse.emf.ecp</groupId>
diff --git a/tests/org.eclipse.emf.ecp.view.rule.test/META-INF/MANIFEST.MF b/tests/org.eclipse.emf.ecp.view.rule.test/META-INF/MANIFEST.MF
index a76da08..59df4ba 100644
--- a/tests/org.eclipse.emf.ecp.view.rule.test/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.emf.ecp.view.rule.test/META-INF/MANIFEST.MF
@@ -2,31 +2,32 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: View Model Rule Test
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.rule.test
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emf.ecp.view.rule.test;version="1.16.0"
+Export-Package: org.eclipse.emf.ecp.view.rule.test;version="1.17.0"
 Require-Bundle: org.junit;bundle-version="[4.0.0,5.0.0)",
-  org.eclipse.emf.emfstore.examplemodel;bundle-version="[1.3.0,2.0.0)",
-  org.eclipse.emf.ecp.ui.view.test;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.ui.view;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.test.common.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.rule;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.context;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.rule.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.test.common;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.vertical.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.test.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.test.common;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.indexdmr.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services.legacy;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services.mappingprovider.default;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services.domainexpander.default;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services.structuralchange;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services.structuralchange.default;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.common.validation;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.validation;bundle-version="[1.16.0,1.17.0)",
-  org.mockito.mockito-core-hamcrest-modified;bundle-version="1.9.5"
+ org.eclipse.emf.emfstore.examplemodel;bundle-version="[1.3.0,2.0.0)",
+ org.eclipse.emf.ecp.ui.view.test;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.ui.view;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.test.common.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.rule;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.context;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.rule.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.test.common;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.vertical.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.test.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.test.common;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.indexdmr.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services.legacy;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services.mappingprovider.default;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services.domainexpander.default;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services.structuralchange;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services.structuralchange.default;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.common.validation;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.validation;bundle-version="[1.17.0,1.18.0]",
+ org.mockito.mockito-core-hamcrest-modified;bundle-version="1.9.5"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
-Import-Package: org.eclipse.emf.ecp.view.spi.validation;version="[1.16.0,1.17.0)"
+Import-Package: org.eclipse.emf.ecp.view.spi.validation;version="[1.17.0,1.18.0]"
+Automatic-Module-Name: org.eclipse.emf.ecp.view.rule.test
diff --git a/tests/org.eclipse.emf.ecp.view.rule.test/pom.xml b/tests/org.eclipse.emf.ecp.view.rule.test/pom.xml
index ce34f36..1b283d3 100644
--- a/tests/org.eclipse.emf.ecp.view.rule.test/pom.xml
+++ b/tests/org.eclipse.emf.ecp.view.rule.test/pom.xml
@@ -6,12 +6,12 @@
 	<parent>
 		<groupId>org.eclipse.emf.ecp</groupId>
 		<artifactId>ecp-tests-parent</artifactId>
-		<version>1.16.0-SNAPSHOT</version>
+		<version>1.17.0-SNAPSHOT</version>
 		<relativePath>../../releng/org.eclipse.emf.ecp.releng.tests/</relativePath>
 	</parent>
 	<groupId>org.eclipse.emf.ecp</groupId>
 	<artifactId>org.eclipse.emf.ecp.view.rule.test</artifactId>
-	<version>1.16.0-SNAPSHOT</version>
+	<version>1.17.0-SNAPSHOT</version>
 	<packaging>eclipse-test-plugin</packaging>
 
 	<build>
diff --git a/tests/org.eclipse.emf.ecp.view.rule.ui.swt.test/META-INF/MANIFEST.MF b/tests/org.eclipse.emf.ecp.view.rule.ui.swt.test/META-INF/MANIFEST.MF
index 728d5b9..cdf9d3e 100644
--- a/tests/org.eclipse.emf.ecp.view.rule.ui.swt.test/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.emf.ecp.view.rule.ui.swt.test/META-INF/MANIFEST.MF
@@ -2,17 +2,18 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: View Model Rule Test
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.rule.ui.swt.test
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Fragment-Host: org.eclipse.emf.ecp.view.rule;bundle-version="[1.16.0,1.17.0)"
-Export-Package: org.eclipse.emf.ecp.view.rule.ui.swt.test;version="1.16.0";x-internal:=true
+Fragment-Host: org.eclipse.emf.ecp.view.rule;bundle-version="[1.17.0,1.18.0]"
+Export-Package: org.eclipse.emf.ecp.view.rule.ui.swt.test;version="1.17.0";x-internal:=true
 Require-Bundle: org.junit;bundle-version="4.11.0",
-  org.eclipse.emf.emfstore.examplemodel;bundle-version="[1.3.0,2.0.0)",
-  org.eclipse.emf.ecp.ui.view.test;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.ui.view;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.test.common.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.swt;bundle-version="[3.1.0,4.0.0)",
-  org.eclipse.emf.ecp.view.rule.test;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.rule.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services.legacy;bundle-version="[1.16.0,1.17.0)"
+ org.eclipse.emf.emfstore.examplemodel;bundle-version="[1.3.0,2.0.0)",
+ org.eclipse.emf.ecp.ui.view.test;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.ui.view;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.test.common.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.swt;bundle-version="[3.1.0,4.0.0)",
+ org.eclipse.emf.ecp.view.rule.test;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.rule.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services.legacy;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Automatic-Module-Name: org.eclipse.emf.ecp.view.rule.ui.swt.test
diff --git a/tests/org.eclipse.emf.ecp.view.rule.ui.swt.test/pom.xml b/tests/org.eclipse.emf.ecp.view.rule.ui.swt.test/pom.xml
index ce97a40..2b1704b 100644
--- a/tests/org.eclipse.emf.ecp.view.rule.ui.swt.test/pom.xml
+++ b/tests/org.eclipse.emf.ecp.view.rule.ui.swt.test/pom.xml
@@ -6,12 +6,12 @@
 	<parent>
 		<groupId>org.eclipse.emf.ecp</groupId>
 		<artifactId>ecp-tests-parent</artifactId>
-		<version>1.16.0-SNAPSHOT</version>
+		<version>1.17.0-SNAPSHOT</version>
 		<relativePath>../../releng/org.eclipse.emf.ecp.releng.tests/</relativePath>
 	</parent>
 	<groupId>org.eclipse.emf.ecp</groupId>
 	<artifactId>org.eclipse.emf.ecp.view.rule.ui.swt.test</artifactId>
-	<version>1.16.0-SNAPSHOT</version>
+	<version>1.17.0-SNAPSHOT</version>
 	<packaging>eclipse-test-plugin</packaging>
 
 	<build>
diff --git a/tests/org.eclipse.emf.ecp.view.stack.ui.swt.test/META-INF/MANIFEST.MF b/tests/org.eclipse.emf.ecp.view.stack.ui.swt.test/META-INF/MANIFEST.MF
index 4139d74..b51a91a 100644
--- a/tests/org.eclipse.emf.ecp.view.stack.ui.swt.test/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.emf.ecp.view.stack.ui.swt.test/META-INF/MANIFEST.MF
@@ -2,16 +2,17 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: EMF Forms Stack Model SWT Tests
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.stack.ui.swt.test
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Fragment-Host: org.eclipse.emf.ecp.view.stack.ui.swt;bundle-version="[1.16.0,1.17.0)"
-Export-Package: org.eclipse.emf.ecp.view.stack.ui.swt.test;version="1.16.0";x-internal:=true
+Fragment-Host: org.eclipse.emf.ecp.view.stack.ui.swt;bundle-version="[1.17.0,1.18.0]"
+Export-Package: org.eclipse.emf.ecp.view.stack.ui.swt.test;version="1.17.0";x-internal:=true
 Require-Bundle: org.eclipse.emf.emfstore.examplemodel;bundle-version="[1.3.0,2.0.0)",
-  org.junit;bundle-version="[4.11.0,5.0.0)",
-  org.eclipse.emf.ecp.view.test.common.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.test.common;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services.legacy;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services.domainexpander.default;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services.structuralchange;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services.structuralchange.default;bundle-version="[1.16.0,1.17.0)"
+ org.junit;bundle-version="[4.11.0,5.0.0)",
+ org.eclipse.emf.ecp.view.test.common.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.test.common;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services.legacy;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services.domainexpander.default;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services.structuralchange;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services.structuralchange.default;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Automatic-Module-Name: org.eclipse.emf.ecp.view.stack.ui.swt.test
diff --git a/tests/org.eclipse.emf.ecp.view.stack.ui.swt.test/pom.xml b/tests/org.eclipse.emf.ecp.view.stack.ui.swt.test/pom.xml
index 389cf28..761f8da 100644
--- a/tests/org.eclipse.emf.ecp.view.stack.ui.swt.test/pom.xml
+++ b/tests/org.eclipse.emf.ecp.view.stack.ui.swt.test/pom.xml
@@ -6,12 +6,12 @@
 	<parent>
 		<groupId>org.eclipse.emf.ecp</groupId>
 		<artifactId>ecp-tests-parent</artifactId>
-		<version>1.16.0-SNAPSHOT</version>
+		<version>1.17.0-SNAPSHOT</version>
 		<relativePath>../../releng/org.eclipse.emf.ecp.releng.tests/</relativePath>
 	</parent>
 	<groupId>org.eclipse.emf.ecp</groupId>
 	<artifactId>org.eclipse.emf.ecp.view.stack.ui.swt.test</artifactId>
-	<version>1.16.0-SNAPSHOT</version>
+	<version>1.17.0-SNAPSHOT</version>
 	<packaging>eclipse-test-plugin</packaging>
 
 	<build>
diff --git a/tests/org.eclipse.emf.ecp.view.table.model.test/META-INF/MANIFEST.MF b/tests/org.eclipse.emf.ecp.view.table.model.test/META-INF/MANIFEST.MF
index ade31a8..531c928 100644
--- a/tests/org.eclipse.emf.ecp.view.table.model.test/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.emf.ecp.view.table.model.test/META-INF/MANIFEST.MF
@@ -2,12 +2,13 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Table Model Test
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.table.model.test
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Fragment-Host: org.eclipse.emf.ecp.view.table.model;bundle-version="[1.16.0,1.17.0)"
-Export-Package: org.eclipse.emf.ecp.view.spi.table.model.util;version="1.16.0",
-  org.eclipse.emf.ecp.view.table.model.test;version="1.16.0";x-internal:=true
+Fragment-Host: org.eclipse.emf.ecp.view.table.model;bundle-version="[1.17.0,1.18.0]"
+Export-Package: org.eclipse.emf.ecp.view.spi.table.model.util;version="1.17.0",
+ org.eclipse.emf.ecp.view.table.model.test;version="1.17.0";x-internal:=true
 Require-Bundle: org.junit;bundle-version="[4.11.0,5.0.0)",
   org.eclipse.emf.emfstore.examplemodel;bundle-version="[1.4.0,2.0.0)",
   org.mockito.mockito-core-hamcrest-modified;bundle-version="[1.9.5,2.0.0)"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Automatic-Module-Name: org.eclipse.emf.ecp.view.table.model.test
diff --git a/tests/org.eclipse.emf.ecp.view.table.model.test/pom.xml b/tests/org.eclipse.emf.ecp.view.table.model.test/pom.xml
index 1613d52..7fd1557 100644
--- a/tests/org.eclipse.emf.ecp.view.table.model.test/pom.xml
+++ b/tests/org.eclipse.emf.ecp.view.table.model.test/pom.xml
@@ -6,11 +6,11 @@
 	<parent>
 		<groupId>org.eclipse.emf.ecp</groupId>
 		<artifactId>ecp-tests-parent</artifactId>
-		<version>1.16.0-SNAPSHOT</version>
+		<version>1.17.0-SNAPSHOT</version>
 		<relativePath>../../releng/org.eclipse.emf.ecp.releng.tests/</relativePath>
 	</parent>
 	<artifactId>org.eclipse.emf.ecp.view.table.model.test</artifactId>
 	<packaging>eclipse-plugin</packaging>
 	<groupId>org.eclipse.emf.ecp</groupId>
-	<version>1.16.0-SNAPSHOT</version>
+	<version>1.17.0-SNAPSHOT</version>
 </project>
diff --git a/tests/org.eclipse.emf.ecp.view.table.model.test/src/org/eclipse/emf/ecp/view/spi/table/model/util/TableColumnGenerator_Test.java b/tests/org.eclipse.emf.ecp.view.table.model.test/src/org/eclipse/emf/ecp/view/spi/table/model/util/TableColumnGenerator_Test.java
new file mode 100644
index 0000000..bbfe602
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.view.table.model.test/src/org/eclipse/emf/ecp/view/spi/table/model/util/TableColumnGenerator_Test.java
@@ -0,0 +1,71 @@
+/*******************************************************************************
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * Mat Hansen - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.emf.ecp.view.spi.table.model.util;
+
+import static org.junit.Assert.assertEquals;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EcoreFactory;
+import org.eclipse.emf.ecore.EcorePackage;
+import org.eclipse.emf.ecp.view.internal.table.generator.TableColumnGenerator;
+import org.eclipse.emf.ecp.view.spi.model.VDomainModelReference;
+import org.eclipse.emf.ecp.view.spi.model.VFeaturePathDomainModelReference;
+import org.eclipse.emf.ecp.view.spi.table.model.VTableControl;
+import org.eclipse.emf.ecp.view.spi.table.model.VTableDomainModelReference;
+import org.eclipse.emf.ecp.view.spi.table.model.VTableFactory;
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ * @author Mat Hansen <mhansen@eclipsesource.com>
+ *
+ */
+public class TableColumnGenerator_Test {
+
+	private EClass subClass;
+	private EAttribute foo;
+	private EAttribute bar;
+
+	@Before
+	public void setUp() throws Exception {
+		final EClass baseClass = EcoreFactory.eINSTANCE.createEClass();
+		foo = EcoreFactory.eINSTANCE.createEAttribute();
+		foo.setEType(EcorePackage.eINSTANCE.getEString());
+		baseClass.getEStructuralFeatures().add(foo);
+
+		subClass = EcoreFactory.eINSTANCE.createEClass();
+		bar = EcoreFactory.eINSTANCE.createEAttribute();
+		bar.setEType(EcorePackage.eINSTANCE.getEString());
+		subClass.getEStructuralFeatures().add(bar);
+
+		subClass.getESuperTypes().add(baseClass);
+	}
+
+	@Test
+	public void testGenerateColumns() {
+
+		final VTableControl control = VTableFactory.eINSTANCE.createTableControl();
+		final VTableDomainModelReference dmr = VTableFactory.eINSTANCE.createTableDomainModelReference();
+		control.setDomainModelReference(dmr);
+		TableColumnGenerator.generateColumns(subClass, control);
+
+		final EList<VDomainModelReference> columns = dmr.getColumnDomainModelReferences();
+
+		assertEquals(2, columns.size());
+		assertEquals(foo, ((VFeaturePathDomainModelReference) columns.get(0)).getDomainModelEFeature());
+		assertEquals(bar, ((VFeaturePathDomainModelReference) columns.get(1)).getDomainModelEFeature());
+
+	}
+
+}
diff --git a/tests/org.eclipse.emf.ecp.view.table.model.test/src/org/eclipse/emf/ecp/view/table/model/test/AllTests.java b/tests/org.eclipse.emf.ecp.view.table.model.test/src/org/eclipse/emf/ecp/view/table/model/test/AllTests.java
index e267243..92eaf97 100644
--- a/tests/org.eclipse.emf.ecp.view.table.model.test/src/org/eclipse/emf/ecp/view/table/model/test/AllTests.java
+++ b/tests/org.eclipse.emf.ecp.view.table.model.test/src/org/eclipse/emf/ecp/view/table/model/test/AllTests.java
@@ -11,6 +11,7 @@
  ******************************************************************************/
 package org.eclipse.emf.ecp.view.table.model.test;
 
+import org.eclipse.emf.ecp.view.spi.table.model.util.TableColumnGenerator_Test;
 import org.eclipse.emf.ecp.view.spi.table.model.util.TableDMRValidation_Test;
 import org.junit.runner.RunWith;
 import org.junit.runners.Suite;
@@ -23,7 +24,7 @@
  *
  */
 @RunWith(Suite.class)
-@SuiteClasses({ TableDMRValidation_Test.class })
+@SuiteClasses({ TableDMRValidation_Test.class, TableColumnGenerator_Test.class })
 public class AllTests {
 	// JUnit 4 Test suite
 }
diff --git a/tests/org.eclipse.emf.ecp.view.table.test.common/.checkstyle b/tests/org.eclipse.emf.ecp.view.table.test.common/.checkstyle
new file mode 100644
index 0000000..24d357f
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.view.table.test.common/.checkstyle
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<fileset-config file-format-version="1.2.0" simple-config="false" sync-formatter="false">
+  <local-check-config name="ESMCheckstyleTest" location="/org.eclipse.emf.ecp.releng/checkstyle/esmCheckstyleTest.xml" type="project" description="">
+    <additional-data name="protect-config-file" value="false"/>
+  </local-check-config>
+  <fileset name="Java Files" enabled="true" check-config-name="ESMCheckstyleTest" local="true">
+    <file-match-pattern match-pattern=".java" include-pattern="true"/>
+  </fileset>
+</fileset-config>
diff --git a/tests/org.eclipse.emf.ecp.view.table.test.common/.classpath b/tests/org.eclipse.emf.ecp.view.table.test.common/.classpath
new file mode 100644
index 0000000..ad32c83
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.view.table.test.common/.classpath
@@ -0,0 +1,7 @@
+<?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.6"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/tests/org.eclipse.emf.ecp.view.table.test.common/.project b/tests/org.eclipse.emf.ecp.view.table.test.common/.project
new file mode 100644
index 0000000..5870c7c
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.view.table.test.common/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.emf.ecp.view.table.test.common</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>net.sf.eclipsecs.core.CheckstyleBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>net.sf.eclipsecs.core.CheckstyleNature</nature>
+	</natures>
+</projectDescription>
diff --git a/tests/org.eclipse.emf.ecp.view.table.test.common/.settings/.api_filters b/tests/org.eclipse.emf.ecp.view.table.test.common/.settings/.api_filters
new file mode 100644
index 0000000..9d928c8
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.view.table.test.common/.settings/.api_filters
@@ -0,0 +1,93 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<component id="org.eclipse.emf.ecp.view.table.ui.swt" version="2">
+    <resource path="META-INF/MANIFEST.MF">
+        <filter comment="SPI Change in 1.6" id="923795461">
+            <message_arguments>
+                <message_argument value="1.6.0"/>
+                <message_argument value="1.5.0"/>
+            </message_arguments>
+        </filter>
+    </resource>
+    <resource path="src/org/eclipse/emf/ecp/view/spi/table/swt/DetailDialog.java" type="org.eclipse.emf.ecp.view.spi.table.swt.DetailDialog">
+        <filter comment="SPI Change in 1.6" id="338722907">
+            <message_arguments>
+                <message_argument value="org.eclipse.emf.ecp.view.spi.table.swt.DetailDialog"/>
+                <message_argument value="DetailDialog(Shell, EObject, VTableControl)"/>
+            </message_arguments>
+        </filter>
+    </resource>
+    <resource path="src/org/eclipse/emf/ecp/view/spi/table/swt/TableControlDetailDialogSWTRenderer.java" type="org.eclipse.emf.ecp.view.spi.table.swt.TableControlDetailDialogSWTRenderer">
+        <filter comment="SPI Change in 1.6" id="338722907">
+            <message_arguments>
+                <message_argument value="org.eclipse.emf.ecp.view.spi.table.swt.TableControlDetailDialogSWTRenderer"/>
+                <message_argument value="TableControlDetailDialogSWTRenderer()"/>
+            </message_arguments>
+        </filter>
+        <filter comment="SPI Change 1.8.0" id="338722907">
+            <message_arguments>
+                <message_argument value="org.eclipse.emf.ecp.view.spi.table.swt.TableControlDetailDialogSWTRenderer"/>
+                <message_argument value="TableControlDetailDialogSWTRenderer(VTableControl, ViewModelContext, ReportService, EMFFormsDatabinding, EMFFormsLabelProvider, VTViewTemplateProvider, ImageRegistryService, EMFFormsEditSupport)"/>
+            </message_arguments>
+        </filter>
+    </resource>
+    <resource path="src/org/eclipse/emf/ecp/view/spi/table/swt/TableControlDetailPanelRenderer.java" type="org.eclipse.emf.ecp.view.spi.table.swt.TableControlDetailPanelRenderer">
+        <filter comment="SPI Change in 1.6" id="338722907">
+            <message_arguments>
+                <message_argument value="org.eclipse.emf.ecp.view.spi.table.swt.TableControlDetailPanelRenderer"/>
+                <message_argument value="TableControlDetailPanelRenderer()"/>
+            </message_arguments>
+        </filter>
+        <filter comment="SPI Change 1.8.0" id="338722907">
+            <message_arguments>
+                <message_argument value="org.eclipse.emf.ecp.view.spi.table.swt.TableControlDetailPanelRenderer"/>
+                <message_argument value="TableControlDetailPanelRenderer(VTableControl, ViewModelContext, ReportService, EMFFormsDatabinding, EMFFormsLabelProvider, VTViewTemplateProvider, ImageRegistryService, EMFFormsEditSupport)"/>
+            </message_arguments>
+        </filter>
+        <filter comment="SPI Change in 1.6" id="338792546">
+            <message_arguments>
+                <message_argument value="org.eclipse.emf.ecp.view.spi.table.swt.TableControlDetailPanelRenderer"/>
+                <message_argument value="deleteRows(List&lt;EObject&gt;, EStructuralFeature.Setting)"/>
+            </message_arguments>
+        </filter>
+    </resource>
+    <resource path="src/org/eclipse/emf/ecp/view/spi/table/swt/TableControlSWTRenderer.java" type="org.eclipse.emf.ecp.view.spi.table.swt.TableControlSWTRenderer">
+        <filter comment="SPI Change 1.8.0" id="338722907">
+            <message_arguments>
+                <message_argument value="org.eclipse.emf.ecp.view.spi.table.swt.TableControlSWTRenderer"/>
+                <message_argument value="TableControlSWTRenderer(VTableControl, ViewModelContext, ReportService, EMFFormsDatabinding, EMFFormsLabelProvider, VTViewTemplateProvider, ImageRegistryService, EMFFormsEditSupport)"/>
+            </message_arguments>
+        </filter>
+        <filter comment="SPI Change 1.10.0" id="338792546">
+            <message_arguments>
+                <message_argument value="org.eclipse.emf.ecp.view.spi.table.swt.TableControlSWTRenderer"/>
+                <message_argument value="createCellEditor(EObject, EStructuralFeature, Table)"/>
+            </message_arguments>
+        </filter>
+        <filter comment="SPI Change 1.10.0" id="338792546">
+            <message_arguments>
+                <message_argument value="org.eclipse.emf.ecp.view.spi.table.swt.TableControlSWTRenderer"/>
+                <message_argument value="getTableViewer()"/>
+            </message_arguments>
+        </filter>
+        <filter id="338792546">
+            <message_arguments>
+                <message_argument value="org.eclipse.emf.ecp.view.spi.table.swt.TableControlSWTRenderer"/>
+                <message_argument value="getTableViewerSWTBuilder(Composite, IObservableList, IObservableValue, IObservableValue, TableViewerCompositeBuilder, ObservableListContentProvider, TableControlSWTRenderer.ECPTableViewerComparator, TableControlSWTRenderer.TableControlSWTRendererButtonBarBuilder)"/>
+            </message_arguments>
+        </filter>
+        <filter comment="SPI Change 1.10.0" id="338792546">
+            <message_arguments>
+                <message_argument value="org.eclipse.emf.ecp.view.spi.table.swt.TableControlSWTRenderer"/>
+                <message_argument value="setTableViewer(TableViewer)"/>
+            </message_arguments>
+        </filter>
+    </resource>
+    <resource path="src/org/eclipse/emf/ecp/view/spi/table/swt/TableControlSWTRenderer.java" type="org.eclipse.emf.ecp.view.spi.table.swt.TableControlSWTRenderer$ECPCellLabelProvider">
+        <filter comment="SPI Change 1.10.0" id="338722907">
+            <message_arguments>
+                <message_argument value="org.eclipse.emf.ecp.view.spi.table.swt.TableControlSWTRenderer.ECPCellLabelProvider"/>
+                <message_argument value="ECPCellLabelProvider(TableControlSWTRenderer, EStructuralFeature, CellEditor, IObservableMap, VTableControl, VDomainModelReference, Table)"/>
+            </message_arguments>
+        </filter>
+    </resource>
+</component>
diff --git a/tests/org.eclipse.emf.ecp.view.table.test.common/.settings/org.eclipse.core.resources.prefs b/tests/org.eclipse.emf.ecp.view.table.test.common/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..f548abb
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.view.table.test.common/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,6 @@
+eclipse.preferences.version=1
+
+encoding//model/etypes.ecore=UTF-8
+
+
+encoding/<project>=UTF-8
diff --git a/tests/org.eclipse.emf.ecp.view.table.test.common/.settings/org.eclipse.core.runtime.prefs b/tests/org.eclipse.emf.ecp.view.table.test.common/.settings/org.eclipse.core.runtime.prefs
new file mode 100644
index 0000000..5a0ad22
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.view.table.test.common/.settings/org.eclipse.core.runtime.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+line.separator=\n
diff --git a/tests/org.eclipse.emf.ecp.view.table.test.common/.settings/org.eclipse.jdt.core.prefs b/tests/org.eclipse.emf.ecp.view.table.test.common/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..26d14e4
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.view.table.test.common/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,418 @@
+eclipse.preferences.version=1

+org.eclipse.jdt.core.builder.cleanOutputFolder=clean

+org.eclipse.jdt.core.builder.duplicateResourceTask=warning

+org.eclipse.jdt.core.builder.invalidClasspath=abort

+org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore

+org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=

+org.eclipse.jdt.core.circularClasspath=error

+org.eclipse.jdt.core.classpath.exclusionPatterns=enabled

+org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled

+org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error

+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.annotation.inheritNullAnnotations=disabled

+org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore

+org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull

+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault

+org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable

+org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled

+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled

+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6

+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve

+org.eclipse.jdt.core.compiler.compliance=1.6

+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.doc.comment.support=enabled

+org.eclipse.jdt.core.compiler.maxProblemPerUnit=100

+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=enabled

+org.eclipse.jdt.core.compiler.problem.discouragedReference=warning

+org.eclipse.jdt.core.compiler.problem.emptyStatement=warning

+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error

+org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore

+org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning

+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=disabled

+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.invalidJavadoc=warning

+org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled

+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled

+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=disabled

+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=public

+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore

+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning

+org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore

+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning

+org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled

+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=warning

+org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore

+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled

+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public

+org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag

+org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore

+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled

+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled

+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=public

+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=warning

+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.nonnullParameterAnnotationDropped=warning

+org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error

+org.eclipse.jdt.core.compiler.problem.nullReference=warning

+org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error

+org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning

+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning

+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore

+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning

+org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore

+org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore

+org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning

+org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning

+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning

+org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore

+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning

+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.syntacticNullAnalysisForFields=disabled

+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.unclosedCloseable=warning

+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore

+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning

+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=warning

+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.unusedTypeParameter=ignore

+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning

+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning

+org.eclipse.jdt.core.compiler.source=1.6

+org.eclipse.jdt.core.compiler.taskCaseSensitive=enabled

+org.eclipse.jdt.core.compiler.taskPriorities=NORMAL,HIGH,HIGH,LOW,LOW,LOW,LOW,LOW,NORMAL

+org.eclipse.jdt.core.compiler.taskTags=TODO,FIXME,XXX,PERF,MEM,POLISH,@generated NOT,@ADDED,APITODO

+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false

+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_binary_expression=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_method_declaration=0

+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=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_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=false

+org.eclipse.jdt.core.formatter.comment.format_block_comments=true

+org.eclipse.jdt.core.formatter.comment.format_header=true

+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=do not 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=1

+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=1

+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=do not 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_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_binary_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_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_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_unary_operator=do not 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_binary_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_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_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_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=false

+org.eclipse.jdt.core.formatter.join_wrapped_lines=false

+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=120

+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_binary_operator=true

+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true

+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true

+org.eclipse.jdt.core.incompatibleJDKLevel=ignore

+org.eclipse.jdt.core.incompleteClasspath=error

diff --git a/tests/org.eclipse.emf.ecp.view.table.test.common/.settings/org.eclipse.jdt.launching.prefs b/tests/org.eclipse.emf.ecp.view.table.test.common/.settings/org.eclipse.jdt.launching.prefs
new file mode 100644
index 0000000..3bb2352
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.view.table.test.common/.settings/org.eclipse.jdt.launching.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.launching.PREF_STRICTLY_COMPATIBLE_JRE_NOT_AVAILABLE=ignore
diff --git a/tests/org.eclipse.emf.ecp.view.table.test.common/.settings/org.eclipse.jdt.ui.prefs b/tests/org.eclipse.emf.ecp.view.table.test.common/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 0000000..8553926
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.view.table.test.common/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,127 @@
+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_functional_interfaces=false

+cleanup.convert_to_enhanced_for_loop=false

+cleanup.correct_indentation=false

+cleanup.format_source_code=true

+cleanup.format_source_code_changes_only=false

+cleanup.insert_inferred_type_arguments=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=true

+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=true

+cleanup.remove_redundant_type_arguments=true

+cleanup.remove_trailing_whitespaces=true

+cleanup.remove_trailing_whitespaces_all=true

+cleanup.remove_trailing_whitespaces_ignore_empty=false

+cleanup.remove_unnecessary_casts=false

+cleanup.remove_unnecessary_nls_tags=false

+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=true

+cleanup.remove_unused_private_types=true

+cleanup.sort_members=false

+cleanup.sort_members_all=false

+cleanup.use_anonymous_class_creation=false

+cleanup.use_blocks=true

+cleanup.use_blocks_only_for_return_and_throw=false

+cleanup.use_lambda=true

+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.use_type_arguments=false

+cleanup_profile=_esmCleanUp

+cleanup_settings_version=2

+eclipse.preferences.version=1

+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true

+formatter_profile=_esmFormatter

+formatter_settings_version=12

+org.eclipse.jdt.ui.exception.name=ex

+org.eclipse.jdt.ui.gettersetter.use.is=true

+org.eclipse.jdt.ui.javadoc=true

+org.eclipse.jdt.ui.keywordthis=false

+org.eclipse.jdt.ui.overrideannotation=true

+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 * Copyright (c) 2011-${year} EclipseSource Muenchen GmbH and others.\r\n * \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 * ${user} - initial API and implementation\r\n ******************************************************************************/</template><template autoinsert\="true" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * @author ${user}\r\n *\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment"/><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 * {@inheritDoc}\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">\t\t\t// TODO Auto-generated catch block\r\n\t\t\t// Do NOT catch all Exceptions ("catch (Exception e)")\r\n\t\t\t// Log AND handle Exceptions if possible \r\n            //\r\n            // You can just uncomment one of the lines below to log an exception\:\r\n\t\t\t// logException will show the logged excpetion to the user\r\n\t\t\t// ModelUtil.logException(${exception_var});\r\n\t\t\t// ModelUtil.logException("YOUR MESSAGE HERE", ${exception_var});\r\n\t\t\t// logWarning will only add the message to the error log\r\n\t\t\t// ModelUtil.logWarning("YOUR MESSAGE HERE", ${exception_var});\r\n\t\t\t// ModelUtil.logWarning("YOUR MESSAGE HERE");\r\n\t\t\t//\t\t\t\r\n\t\t\t// If handling is not possible declare and rethrow Exception</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_functional_interfaces=false

+sp_cleanup.convert_to_enhanced_for_loop=false

+sp_cleanup.correct_indentation=false

+sp_cleanup.format_source_code=true

+sp_cleanup.format_source_code_changes_only=false

+sp_cleanup.insert_inferred_type_arguments=false

+sp_cleanup.make_local_variable_final=true

+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=true

+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=true

+sp_cleanup.remove_redundant_type_arguments=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=false

+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=true

+sp_cleanup.remove_unused_private_types=true

+sp_cleanup.sort_members=false

+sp_cleanup.sort_members_all=false

+sp_cleanup.use_anonymous_class_creation=false

+sp_cleanup.use_blocks=true

+sp_cleanup.use_blocks_only_for_return_and_throw=false

+sp_cleanup.use_lambda=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

+sp_cleanup.use_type_arguments=false

diff --git a/tests/org.eclipse.emf.ecp.view.table.test.common/.settings/org.eclipse.ltk.core.refactoring.prefs b/tests/org.eclipse.emf.ecp.view.table.test.common/.settings/org.eclipse.ltk.core.refactoring.prefs
new file mode 100644
index 0000000..864e30f
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.view.table.test.common/.settings/org.eclipse.ltk.core.refactoring.prefs
@@ -0,0 +1,3 @@
+#Thu Feb 04 09:44:24 CET 2010
+eclipse.preferences.version=1
+org.eclipse.ltk.core.refactoring.enable.project.refactoring.history=false
diff --git a/tests/org.eclipse.emf.ecp.view.table.test.common/.settings/org.eclipse.pde.api.tools.prefs b/tests/org.eclipse.emf.ecp.view.table.test.common/.settings/org.eclipse.pde.api.tools.prefs
new file mode 100644
index 0000000..e4e3c00
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.view.table.test.common/.settings/org.eclipse.pde.api.tools.prefs
@@ -0,0 +1,97 @@
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_TYPE=Error
+API_USE_SCAN_FIELD_SEVERITY=Error
+API_USE_SCAN_METHOD_SEVERITY=Error
+API_USE_SCAN_TYPE_SEVERITY=Error
+CLASS_ELEMENT_TYPE_ADDED_METHOD=Error
+CLASS_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CLASS_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+CLASS_ELEMENT_TYPE_REMOVED_CONSTRUCTOR=Error
+CLASS_ELEMENT_TYPE_REMOVED_FIELD=Error
+CLASS_ELEMENT_TYPE_REMOVED_METHOD=Error
+CLASS_ELEMENT_TYPE_REMOVED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+ENUM_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ENUM_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ENUM_ELEMENT_TYPE_REMOVED_ENUM_CONSTANT=Error
+ENUM_ELEMENT_TYPE_REMOVED_FIELD=Error
+ENUM_ELEMENT_TYPE_REMOVED_METHOD=Error
+ENUM_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+FIELD_ELEMENT_TYPE_ADDED_VALUE=Error
+FIELD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+FIELD_ELEMENT_TYPE_CHANGED_FINAL_TO_NON_FINAL_STATIC_CONSTANT=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_TYPE=Error
+FIELD_ELEMENT_TYPE_CHANGED_VALUE=Error
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENT=Error
+FIELD_ELEMENT_TYPE_REMOVED_VALUE=Error
+ILLEGAL_EXTEND=Warning
+ILLEGAL_IMPLEMENT=Warning
+ILLEGAL_INSTANTIATE=Warning
+ILLEGAL_OVERRIDE=Warning
+ILLEGAL_REFERENCE=Warning
+INTERFACE_ELEMENT_TYPE_ADDED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_SUPER_INTERFACE_WITH_METHODS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+INVALID_JAVADOC_TAG=Warning
+INVALID_REFERENCE_IN_SYSTEM_LIBRARIES=Error
+LEAK_EXTEND=Warning
+LEAK_FIELD_DECL=Warning
+LEAK_IMPLEMENT=Warning
+LEAK_METHOD_PARAM=Warning
+LEAK_METHOD_RETURN_TYPE=Warning
+METHOD_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+METHOD_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+METHOD_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+MISSING_EE_DESCRIPTIONS=Error
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+UNUSED_PROBLEM_FILTERS=Ignore
+automatically_removed_unused_problem_filters=Disabled
+eclipse.preferences.version=1
+incompatible_api_component_version=Error
+incompatible_api_component_version_include_major_without_breaking_change=Disabled
+incompatible_api_component_version_include_minor_without_api_change=Disabled
+invalid_since_tag_version=Error
+malformed_since_tag=Error
+missing_since_tag=Error
+report_api_breakage_when_major_version_incremented=Disabled
+report_resolution_errors_api_component=Warning
diff --git a/tests/org.eclipse.emf.ecp.view.table.test.common/.settings/org.eclipse.pde.prefs b/tests/org.eclipse.emf.ecp.view.table.test.common/.settings/org.eclipse.pde.prefs
new file mode 100644
index 0000000..0bbee3c
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.view.table.test.common/.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=1
+compilers.p.missing-version-import-package=1
+compilers.p.missing-version-require-bundle=1
+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.emf.ecp.view.table.test.common/META-INF/MANIFEST.MF b/tests/org.eclipse.emf.ecp.view.table.test.common/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..1336634
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.view.table.test.common/META-INF/MANIFEST.MF
@@ -0,0 +1,11 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Common Utils for Table Tests
+Bundle-SymbolicName: org.eclipse.emf.ecp.view.table.test.common
+Bundle-Version: 1.17.0.qualifier
+Bundle-Vendor: Eclipse Modeling Project
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Require-Bundle: org.eclipse.emf.ecp.view.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.table.model;bundle-version="[1.17.0,1.18.0]"
+Export-Package: org.eclipse.emf.ecp.view.table.test.common;version="1.17.0"
+Automatic-Module-Name: org.eclipse.emf.ecp.view.table.test.common
diff --git a/tests/org.eclipse.emf.ecp.view.table.test.common/build.properties b/tests/org.eclipse.emf.ecp.view.table.test.common/build.properties
new file mode 100644
index 0000000..34d2e4d
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.view.table.test.common/build.properties
@@ -0,0 +1,4 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+               .
diff --git a/tests/org.eclipse.emf.ecp.view.table.test.common/pom.xml b/tests/org.eclipse.emf.ecp.view.table.test.common/pom.xml
new file mode 100644
index 0000000..74bdb20
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.view.table.test.common/pom.xml
@@ -0,0 +1,18 @@
+<?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.emf.ecp</groupId>

+    <artifactId>ecp-tests-parent</artifactId>

+    <version>1.17.0-SNAPSHOT</version>

+    <relativePath>../../releng/org.eclipse.emf.ecp.releng.tests/</relativePath>

+  </parent>

+

+  <groupId>org.eclipse.emf.ecp</groupId>

+  <artifactId>org.eclipse.emf.ecp.view.table.test.common</artifactId>

+  <version>1.17.0-SNAPSHOT</version>

+  <packaging>eclipse-plugin</packaging>

+</project>

diff --git a/tests/org.eclipse.emf.ecp.view.table.test.common/src/org/eclipse/emf/ecp/view/table/test/common/TableControlHandle.java b/tests/org.eclipse.emf.ecp.view.table.test.common/src/org/eclipse/emf/ecp/view/table/test/common/TableControlHandle.java
new file mode 100644
index 0000000..31e0797
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.view.table.test.common/src/org/eclipse/emf/ecp/view/table/test/common/TableControlHandle.java
@@ -0,0 +1,94 @@
+/*******************************************************************************
+ * Copyright (c) 2011-2013 EclipseSource Muenchen GmbH 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:
+ * Jonas - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.emf.ecp.view.table.test.common;
+
+import org.eclipse.emf.ecp.view.spi.model.VDomainModelReference;
+import org.eclipse.emf.ecp.view.spi.table.model.VTableControl;
+import org.eclipse.emf.ecp.view.spi.table.model.VTableDomainModelReference;
+
+/**
+ * @author Jonas
+ *
+ */
+public class TableControlHandle {
+
+	public TableControlHandle(VTableControl tableControl) {
+		setTableControl(tableControl);
+	}
+
+	private VTableControl tableControl;
+	private VDomainModelReference tableColumn1;
+	private VDomainModelReference tableColumn2;
+
+	/**
+	 * @param tableColumn1
+	 */
+	public void addFirstTableColumn(VDomainModelReference tableColumn1) {
+		setTableColumn1(tableColumn1);
+		VTableDomainModelReference.class.cast(getTableControl().getDomainModelReference())
+			.getColumnDomainModelReferences().add(tableColumn1);
+
+	}
+
+	/**
+	 * @param tableColumn2
+	 */
+	public void addSecondTableColumn(VDomainModelReference tableColumn2) {
+		setTableColumn2(tableColumn2);
+		VTableDomainModelReference.class.cast(getTableControl().getDomainModelReference())
+			.getColumnDomainModelReferences().add(tableColumn2);
+
+	}
+
+	/**
+	 * @return the tableControl
+	 */
+	public VTableControl getTableControl() {
+		return tableControl;
+	}
+
+	/**
+	 * @param tableControl the tableControl to set
+	 */
+	public void setTableControl(VTableControl tableControl) {
+		this.tableControl = tableControl;
+	}
+
+	/**
+	 * @return the tableColumn1
+	 */
+	public VDomainModelReference getTableColumn1() {
+		return tableColumn1;
+	}
+
+	/**
+	 * @param tableColumn1 the tableColumn1 to set
+	 */
+	public void setTableColumn1(VDomainModelReference tableColumn1) {
+		this.tableColumn1 = tableColumn1;
+	}
+
+	/**
+	 * @return the tableColumn2
+	 */
+	public VDomainModelReference getTableColumn2() {
+		return tableColumn2;
+	}
+
+	/**
+	 * @param tableColumn2 the tableColumn2 to set
+	 */
+	public void setTableColumn2(VDomainModelReference tableColumn2) {
+		this.tableColumn2 = tableColumn2;
+	}
+
+}
diff --git a/tests/org.eclipse.emf.ecp.view.table.test.common/src/org/eclipse/emf/ecp/view/table/test/common/TableTestUtil.java b/tests/org.eclipse.emf.ecp.view.table.test.common/src/org/eclipse/emf/ecp/view/table/test/common/TableTestUtil.java
new file mode 100644
index 0000000..d37f6ae
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.view.table.test.common/src/org/eclipse/emf/ecp/view/table/test/common/TableTestUtil.java
@@ -0,0 +1,85 @@
+/*******************************************************************************
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * Lucas Koehler - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.emf.ecp.view.table.test.common;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.ecore.EcorePackage;
+import org.eclipse.emf.ecp.view.spi.model.VDomainModelReference;
+import org.eclipse.emf.ecp.view.spi.model.VFeaturePathDomainModelReference;
+import org.eclipse.emf.ecp.view.spi.model.VViewFactory;
+import org.eclipse.emf.ecp.view.spi.table.model.VTableControl;
+import org.eclipse.emf.ecp.view.spi.table.model.VTableFactory;
+
+/**
+ * Utility methods for table related test cases.
+ *
+ * @author Lucas Koehler
+ *
+ */
+public final class TableTestUtil {
+
+	/**
+	 * Hide constructor for utility class.
+	 */
+	private TableTestUtil() {
+		// do nothing
+	}
+
+	/**
+	 * Creates a table column DMR for the given {@link EStructuralFeature}.
+	 *
+	 * @param feature The target feature that the column DMR references
+	 * @return The created DMR
+	 */
+	public static VDomainModelReference createTableColumn(EStructuralFeature feature) {
+		final VFeaturePathDomainModelReference reference = VViewFactory.eINSTANCE
+			.createFeaturePathDomainModelReference();
+		reference.setDomainModelEFeature(feature);
+		return reference;
+	}
+
+	/**
+	 * Create a {@link TableControlHandle} which contains an initialized table control.
+	 *
+	 * @return The initialized {@link TableControlHandle}
+	 */
+	public static TableControlHandle createInitializedTableWithoutTableColumns() {
+		final TableControlHandle tableControlHandle = createUninitializedTableWithoutColumns();
+		final VFeaturePathDomainModelReference domainModelReference = VTableFactory.eINSTANCE
+			.createTableDomainModelReference();
+		domainModelReference.setDomainModelEFeature(EcorePackage.eINSTANCE.getEClass_ESuperTypes());
+		tableControlHandle.getTableControl().setDomainModelReference(domainModelReference);
+
+		return tableControlHandle;
+	}
+
+	/**
+	 * Create a {@link TableControlHandle} whose table control is not initialized
+	 *
+	 * @return The uninitialized {@link TableControlHandle}
+	 */
+	public static TableControlHandle createUninitializedTableWithoutColumns() {
+		final VTableControl tableControl = createTableControl();
+		return new TableControlHandle(tableControl);
+	}
+
+	/**
+	 * Create a {@link VTableControl} with an empty table DMR.
+	 *
+	 * @return The {@link VTableControl}
+	 */
+	public static VTableControl createTableControl() {
+		final VTableControl tc = VTableFactory.eINSTANCE.createTableControl();
+		tc.setDomainModelReference(VTableFactory.eINSTANCE.createTableDomainModelReference());
+		return tc;
+	}
+}
diff --git a/tests/org.eclipse.emf.ecp.view.table.ui.nebula.grid.test/META-INF/MANIFEST.MF b/tests/org.eclipse.emf.ecp.view.table.ui.nebula.grid.test/META-INF/MANIFEST.MF
index 1b81b10..49205b2 100644
--- a/tests/org.eclipse.emf.ecp.view.table.ui.nebula.grid.test/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.emf.ecp.view.table.ui.nebula.grid.test/META-INF/MANIFEST.MF
@@ -1,24 +1,35 @@
 Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
-Bundle-Name: EMF Forms Nebula Grid Table UI Tests
-Bundle-SymbolicName: org.eclipse.emf.ecp.view.table.ui.nebula.grid.test
-Bundle-Version: 1.16.0.qualifier
-Bundle-Vendor: Eclipse Modeling Project
-Fragment-Host: org.eclipse.emf.ecp.view.table.ui.nebula.grid;bundle-version="[1.16.0,1.17.0)"
-Export-Package: org.eclipse.emf.ecp.view.internal.table.nebula.grid;version="1.16.0";x-internal:=true
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.emf.ecp.view.table.ui.nebula.grid.test;singleton:=true
+Bundle-Version: 1.17.0.qualifier
+Bundle-ClassPath: .
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Fragment-Host: org.eclipse.emf.ecp.view.table.ui.nebula.grid;bundle-version="[1.17.0,1.18.0]"
+Export-Package: org.eclipse.emf.ecp.view.internal.table.nebula.grid;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.spi.table.nebula.grid;version="1.17.0",
+ org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.impl;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.util;version="1.17.0";x-internal:=true
 Require-Bundle: org.junit;bundle-version="[4.0.0,5.0.0)",
-  org.mockito.mockito-core-hamcrest-modified;bundle-version="[1.9.5,2.0.0)",
-  org.eclipse.emf.ecp.test.common;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.swt.common.test;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services.emf;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.core.databinding.beans;bundle-version="1.3.0",
-  org.eclipse.emf.ecp.view.util.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.localization;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.emfstore.examplemodel;bundle-version="[1.9.0,2.0.0)",
-  org.eclipse.emf.ecp.view.table.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.table.ui.swt.test;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.test.common.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.e4.core.contexts;bundle-version="[1.6.0,2.0.0)",
-  org.eclipse.nebula.widgets.grid;bundle-version="[1.0.0,2.0.0)",
-  org.eclipse.emfforms.swt.core.di.extension;bundle-version="[1.16.0,1.17.0)"
+ org.mockito.mockito-core-hamcrest-modified;bundle-version="[1.9.5,2.0.0)",
+ org.eclipse.emf.ecp.test.common;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.swt.common.test;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services.emf;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.core.databinding.beans;bundle-version="1.3.0",
+ org.eclipse.emf.ecp.view.util.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.localization;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.emfstore.examplemodel;bundle-version="[1.9.0,2.0.0)",
+ org.eclipse.emf.ecp.view.table.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.test.common.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.e4.core.contexts;bundle-version="[1.6.0,2.0.0)",
+ org.eclipse.nebula.widgets.grid;bundle-version="[1.0.0,2.0.0)",
+ org.eclipse.emfforms.swt.core.di.extension;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.table.test.common;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.core.runtime;bundle-version="[3.13.0,4.0.0)",
+ org.eclipse.emf.ecore;bundle-version="[2.13.0,3.0.0)";visibility:=reexport,
+ org.objenesis;bundle-version="[1.0.0,2.0.0)"
+Bundle-ActivationPolicy: lazy
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Automatic-Module-Name: org.eclipse.emf.ecp.view.table.ui.nebula.grid.test
diff --git a/tests/org.eclipse.emf.ecp.view.table.ui.nebula.grid.test/build.properties b/tests/org.eclipse.emf.ecp.view.table.ui.nebula.grid.test/build.properties
index 34d2e4d..c6c8c69 100644
--- a/tests/org.eclipse.emf.ecp.view.table.ui.nebula.grid.test/build.properties
+++ b/tests/org.eclipse.emf.ecp.view.table.ui.nebula.grid.test/build.properties
@@ -1,4 +1,17 @@
+# Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+# EclipseSource Munich - initial API and implementation
+
+bin.includes = .,\
+               model/,\
+               META-INF/,\
+               fragment.xml,\
+               plugin.properties
 source.. = src/
 output.. = bin/
-bin.includes = META-INF/,\
-               .
diff --git a/tests/org.eclipse.emf.ecp.view.table.ui.nebula.grid.test/fragment.xml b/tests/org.eclipse.emf.ecp.view.table.ui.nebula.grid.test/fragment.xml
new file mode 100644
index 0000000..afb0e5b
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.view.table.ui.nebula.grid.test/fragment.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<!--
+ Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ EclipseSource Munich - initial API and implementation
+-->
+
+<plugin>
+
+   <extension point="org.eclipse.emf.ecore.generated_package">
+      <!-- @generated audit -->
+      <package
+            uri="http://eclipse/org/emf/ecp/view/table/ui/nebula/grid/test/model"
+            class="org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.AuditPackage"
+            genModel="model/audit.genmodel"/>
+   </extension>
+
+</plugin>
diff --git a/tests/org.eclipse.emf.ecp.view.table.ui.nebula.grid.test/model/audit.ecore b/tests/org.eclipse.emf.ecp.view.table.ui.nebula.grid.test/model/audit.ecore
new file mode 100644
index 0000000..45d103c
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.view.table.ui.nebula.grid.test/model/audit.ecore
@@ -0,0 +1,126 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage
+    xmi:version="2.0"
+    xmlns:xmi="http://www.omg.org/XMI"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
+    name="audit"
+    nsURI="http://eclipse/org/emf/ecp/view/table/ui/nebula/grid/test/model"
+    nsPrefix="org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model">
+  <eClassifiers
+      xsi:type="ecore:EClass"
+      name="Organization">
+    <eStructuralFeatures
+        xsi:type="ecore:EAttribute"
+        name="name"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    <eStructuralFeatures
+        xsi:type="ecore:EReference"
+        name="members"
+        upperBound="-1"
+        eType="#//Member"
+        containment="true"/>
+    <eStructuralFeatures
+        xsi:type="ecore:EReference"
+        name="groups"
+        upperBound="-1"
+        eType="#//MemberGroup"
+        containment="true"/>
+  </eClassifiers>
+  <eClassifiers
+      xsi:type="ecore:EClass"
+      name="Member"
+      abstract="true"
+      interface="true">
+    <eStructuralFeatures
+        xsi:type="ecore:EAttribute"
+        name="name"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    <eStructuralFeatures
+        xsi:type="ecore:EAttribute"
+        name="joinDate"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDate"/>
+    <eStructuralFeatures
+        xsi:type="ecore:EAttribute"
+        name="isActive"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+  </eClassifiers>
+  <eClassifiers
+      xsi:type="ecore:EClass"
+      name="Bot"
+      eSuperTypes="#//Member">
+    <eStructuralFeatures
+        xsi:type="ecore:EAttribute"
+        name="executionIntervalSeconds"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+  </eClassifiers>
+  <eClassifiers
+      xsi:type="ecore:EClass"
+      name="Human"
+      abstract="true"
+      eSuperTypes="#//Member"/>
+  <eClassifiers
+      xsi:type="ecore:EClass"
+      name="GuestUser"
+      eSuperTypes="#//Human"/>
+  <eClassifiers
+      xsi:type="ecore:EClass"
+      name="RegisteredUser"
+      eSuperTypes="#//Human">
+    <eStructuralFeatures
+        xsi:type="ecore:EAttribute"
+        name="login"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    <eStructuralFeatures
+        xsi:type="ecore:EAttribute"
+        name="password"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    <eStructuralFeatures
+        xsi:type="ecore:EReference"
+        name="delegates"
+        upperBound="-1"
+        eType="#//RegisteredUser"/>
+  </eClassifiers>
+  <eClassifiers
+      xsi:type="ecore:EClass"
+      name="PrivilegedUser"
+      abstract="true"
+      interface="true"/>
+  <eClassifiers
+      xsi:type="ecore:EClass"
+      name="AdminUser"
+      eSuperTypes="#//RegisteredUser #//PrivilegedUser">
+    <eStructuralFeatures
+        xsi:type="ecore:EReference"
+        name="createdBy"
+        eType="#//PrivilegedUser"/>
+  </eClassifiers>
+  <eClassifiers
+      xsi:type="ecore:EClass"
+      name="PrivilegedBot"
+      eSuperTypes="#//Bot #//PrivilegedUser"/>
+  <eClassifiers
+      xsi:type="ecore:EClass"
+      name="MemberGroup">
+    <eStructuralFeatures
+        xsi:type="ecore:EAttribute"
+        name="name"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    <eStructuralFeatures
+        xsi:type="ecore:EReference"
+        name="members"
+        upperBound="-1"
+        eType="#//Human"/>
+    <eStructuralFeatures
+        xsi:type="ecore:EReference"
+        name="admins"
+        upperBound="-1"
+        eType="#//AdminUser"/>
+    <eStructuralFeatures
+        xsi:type="ecore:EReference"
+        name="bots"
+        upperBound="-1"
+        eType="#//Bot"
+        containment="true"/>
+  </eClassifiers>
+</ecore:EPackage>
diff --git a/tests/org.eclipse.emf.ecp.view.table.ui.nebula.grid.test/model/audit.genmodel b/tests/org.eclipse.emf.ecp.view.table.ui.nebula.grid.test/model/audit.genmodel
new file mode 100644
index 0000000..441eb68
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.view.table.ui.nebula.grid.test/model/audit.genmodel
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<genmodel:GenModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
+    xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel" copyrightText="Copyright (c) 2011-2018 EclipseSource Muenchen GmbH and others.&#xD;&#xA;&#xD;&#xA;All rights reserved. This program and the accompanying materials&#xD;&#xA;are made available under the terms of the Eclipse Public License v1.0&#xD;&#xA;which accompanies this distribution, and is available at&#xD;&#xA;http://www.eclipse.org/legal/epl-v10.html&#xD;&#xA;&#xD;&#xA;Contributors:&#xD;&#xA;EclipseSource Munich - initial API and implementation"
+    modelDirectory="/org.eclipse.emf.ecp.view.table.ui.nebula.grid.test/src" editorDirectory="/org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.editor/src"
+    modelPluginID="org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model" forceOverwrite="true"
+    modelName="Audit" editPluginClass="org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.provider.AuditEditPlugin"
+    editorPluginClass="org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.presentation.AuditEditorPlugin"
+    nonNLSMarkers="true" rootExtendsClass="org.eclipse.emf.ecore.impl.MinimalEObjectImpl$Container"
+    codeFormatting="true" commentFormatting="true" testSuiteClass="org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.tests.AuditAllTests"
+    importerID="org.eclipse.emf.importer.ecore" complianceLevel="7.0" copyrightFields="false"
+    editPluginID="org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.edit"
+    editorPluginID="org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.editor"
+    language="" operationReflection="true" importOrganizing="true" cleanup="true">
+  <foreignModel>audit.ecore</foreignModel>
+  <genPackages prefix="Audit" basePackage="org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model"
+      disposableProviderFactory="true" ecorePackage="audit.ecore#/" publicationLocation="">
+    <genClasses ecoreClass="audit.ecore#//Organization">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute audit.ecore#//Organization/name"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference audit.ecore#//Organization/members"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference audit.ecore#//Organization/groups"/>
+    </genClasses>
+    <genClasses image="false" ecoreClass="audit.ecore#//Member">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute audit.ecore#//Member/name"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute audit.ecore#//Member/joinDate"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute audit.ecore#//Member/isActive"/>
+    </genClasses>
+    <genClasses ecoreClass="audit.ecore#//Bot">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute audit.ecore#//Bot/executionIntervalSeconds"/>
+    </genClasses>
+    <genClasses image="false" ecoreClass="audit.ecore#//Human"/>
+    <genClasses ecoreClass="audit.ecore#//GuestUser"/>
+    <genClasses ecoreClass="audit.ecore#//RegisteredUser">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute audit.ecore#//RegisteredUser/login"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute audit.ecore#//RegisteredUser/password"/>
+      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference audit.ecore#//RegisteredUser/delegates"/>
+    </genClasses>
+    <genClasses image="false" ecoreClass="audit.ecore#//PrivilegedUser"/>
+    <genClasses ecoreClass="audit.ecore#//AdminUser">
+      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference audit.ecore#//AdminUser/createdBy"/>
+    </genClasses>
+    <genClasses ecoreClass="audit.ecore#//PrivilegedBot"/>
+    <genClasses ecoreClass="audit.ecore#//MemberGroup">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute audit.ecore#//MemberGroup/name"/>
+      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference audit.ecore#//MemberGroup/members"/>
+      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference audit.ecore#//MemberGroup/admins"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference audit.ecore#//MemberGroup/bots"/>
+    </genClasses>
+  </genPackages>
+</genmodel:GenModel>
diff --git a/tests/org.eclipse.emf.ecp.view.table.ui.nebula.grid.test/plugin.properties b/tests/org.eclipse.emf.ecp.view.table.ui.nebula.grid.test/plugin.properties
new file mode 100644
index 0000000..40d5a15
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.view.table.ui.nebula.grid.test/plugin.properties
@@ -0,0 +1,12 @@
+# Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+# EclipseSource Munich - initial API and implementation
+
+pluginName=EMF Forms Nebula Grid Table UI Tests
+providerName=Eclipse Modeling Project
diff --git a/tests/org.eclipse.emf.ecp.view.table.ui.nebula.grid.test/pom.xml b/tests/org.eclipse.emf.ecp.view.table.ui.nebula.grid.test/pom.xml
index 6f7420a..8833244 100644
--- a/tests/org.eclipse.emf.ecp.view.table.ui.nebula.grid.test/pom.xml
+++ b/tests/org.eclipse.emf.ecp.view.table.ui.nebula.grid.test/pom.xml
@@ -6,7 +6,7 @@
 	<parent>
 		<groupId>org.eclipse.emf.ecp</groupId>
 		<artifactId>ecp-tests-parent</artifactId>
-		<version>1.16.0-SNAPSHOT</version>
+		<version>1.17.0-SNAPSHOT</version>
 		<relativePath>../../releng/org.eclipse.emf.ecp.releng.tests/</relativePath>
 	</parent>
 	<groupId>org.eclipse.emf.ecp</groupId>
diff --git a/tests/org.eclipse.emf.ecp.view.table.ui.nebula.grid.test/src/org/eclipse/emf/ecp/view/internal/table/nebula/grid/GridControlRenderer_PTest.java b/tests/org.eclipse.emf.ecp.view.table.ui.nebula.grid.test/src/org/eclipse/emf/ecp/view/internal/table/nebula/grid/GridControlRenderer_PTest.java
index f1d5a07..b088434 100644
--- a/tests/org.eclipse.emf.ecp.view.table.ui.nebula.grid.test/src/org/eclipse/emf/ecp/view/internal/table/nebula/grid/GridControlRenderer_PTest.java
+++ b/tests/org.eclipse.emf.ecp.view.table.ui.nebula.grid.test/src/org/eclipse/emf/ecp/view/internal/table/nebula/grid/GridControlRenderer_PTest.java
@@ -20,7 +20,11 @@
 
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.Collections;
+import java.util.LinkedHashMap;
 import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
 
 import org.eclipse.core.databinding.observable.Observables;
 import org.eclipse.core.databinding.observable.list.WritableList;
@@ -28,6 +32,7 @@
 import org.eclipse.emf.common.util.BasicEList;
 import org.eclipse.emf.databinding.internal.EMFValueProperty;
 import org.eclipse.emf.databinding.internal.EMFValuePropertyDecorator;
+import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.EObject;
 import org.eclipse.emf.ecore.EStructuralFeature;
 import org.eclipse.emf.ecore.EStructuralFeature.Setting;
@@ -46,11 +51,12 @@
 import org.eclipse.emf.ecp.view.spi.table.nebula.grid.GridControlSWTRenderer;
 import org.eclipse.emf.ecp.view.spi.table.nebula.grid.GridTableViewerComposite;
 import org.eclipse.emf.ecp.view.spi.util.swt.ImageRegistryService;
+import org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.AuditFactory;
+import org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.AuditPackage;
+import org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.Member;
+import org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.Organization;
+import org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.RegisteredUser;
 import org.eclipse.emf.ecp.view.template.model.VTViewTemplateProvider;
-import org.eclipse.emf.emfstore.bowling.BowlingFactory;
-import org.eclipse.emf.emfstore.bowling.BowlingPackage;
-import org.eclipse.emf.emfstore.bowling.League;
-import org.eclipse.emf.emfstore.bowling.Player;
 import org.eclipse.emfforms.spi.common.converter.EStructuralFeatureValueConverterService;
 import org.eclipse.emfforms.spi.common.report.ReportService;
 import org.eclipse.emfforms.spi.core.services.databinding.DatabindingFailedException;
@@ -79,17 +85,63 @@
 import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+import org.junit.runners.Parameterized.Parameter;
+import org.junit.runners.Parameterized.Parameters;
 import org.mockito.Matchers;
 import org.mockito.Mockito;
 
 /**
+ * Plugin Test for Grid Table.
+ *
+ * Uses two different data sets:
+ * 1) SimpleDataSet, consist of three members of the same type (RegisteredUser)
+ * * which have three fields each: name, isActive, joinDate
+ * 2) ComplexDataSet, consist of different member types (RegisteredUser, AdminUser, Bot)
+ * * which have one unique field each: login, executionInterval, createdBy
+ *
  * @author Mat Hansen <mhansen@eclipsesource.com>
  *
  */
+@SuppressWarnings("restriction")
+@RunWith(Parameterized.class)
 public class GridControlRenderer_PTest extends AbstractControl_PTest<VTableControl> {
 
 	private DefaultRealm realm;
 
+	private static final String MEMBER1_NAME = "Kliver Oahn";
+	private static final String MEMBER2_NAME = "Branz Feckenbauer";
+	private static final String MEMBER3_NAME = "Vudi Roeller";
+
+	private static final Map<String, EClass> MEMBERS;
+	static {
+
+		final Map<String, EClass> tmp = new LinkedHashMap<String, EClass>();
+		tmp.put(MEMBER1_NAME, AuditPackage.eINSTANCE.getRegisteredUser());
+		tmp.put(MEMBER2_NAME, AuditPackage.eINSTANCE.getAdminUser());
+		tmp.put(MEMBER3_NAME, AuditPackage.eINSTANCE.getBot());
+		MEMBERS = Collections.unmodifiableMap(tmp);
+	}
+
+	private int expectedRows = -1;
+	private int expectedColumns = -1;
+
+	public enum DataSet {
+		Simple, Complex
+	}
+
+	// BEGIN COMPLEX CODE
+	// Field must be public for JUnit's @Parameter to work: https://github.com/junit-team/junit4/pull/737
+	@Parameter
+	public DataSet dataset;
+	// END COMPLEX CODE
+
+	@Parameters(name = "{0}")
+	public static DataSet[] data() {
+		return DataSet.values();
+	}
+
 	@Before
 	public void before() throws DatabindingFailedException {
 		realm = new DefaultRealm();
@@ -153,6 +205,7 @@
 
 		when(getvControl().getColumnConfigurations())
 			.thenReturn(new BasicEList<VTableColumnConfiguration>());
+
 	}
 
 	@Override
@@ -176,37 +229,56 @@
 
 	}
 
-	protected void mockSampleDataSet() throws DatabindingFailedException {
-		final League league = BowlingFactory.eINSTANCE.createLeague();
+	private void mockDataset() throws DatabindingFailedException {
 
-		// add three players
-		for (final String playerName : Arrays.asList("Kliver Oahn", "Branz Feckenbauer", "Vudi Roeller")) {
-			final Player player = BowlingFactory.eINSTANCE.createPlayer();
-			player.setName(playerName);
-			league.getPlayers().add(player);
-
-			mockSetting(mock(Setting.class), player, BowlingPackage.eINSTANCE.getPlayer_Name());
+		switch (dataset) {
+		case Simple:
+			mockDataSetSimple();
+			break;
+		case Complex:
+			mockDataSetComplex();
+			break;
+		default:
+			throw new IllegalArgumentException("Unsupported dataset");
 		}
 
-		final WritableList<Player> playerList = new WritableList<Player>(league.getPlayers(),
-			BowlingPackage.eINSTANCE.getLeague_Players());
+	}
+
+	/**
+	 * Provide a simple data set which has no abstract types.
+	 */
+	protected void mockDataSetSimple() throws DatabindingFailedException {
+		final Organization org = AuditFactory.eINSTANCE.createOrganization();
+
+		// add members
+		for (final String memberName : MEMBERS.keySet()) {
+			final Member member = AuditFactory.eINSTANCE.createRegisteredUser();
+			member.setName(memberName);
+			org.getMembers().add(member);
+
+			mockSetting(mock(Setting.class), member, AuditPackage.eINSTANCE.getMember_Name());
+		}
+
+		final WritableList<Member> memberList = new WritableList<Member>(org.getMembers(),
+			AuditPackage.eINSTANCE.getOrganization_Members());
 
 		when(getDatabindingService().getObservableList(any(VDomainModelReference.class), any(EObject.class)))
 			.thenReturn(
-				playerList);
+				memberList);
 
-		final Setting playerSetting = mock(Setting.class);
-		mockSetting(playerSetting, league, BowlingPackage.eINSTANCE.getLeague_Players());
+		final Setting memberSetting = mock(Setting.class);
+		mockSetting(memberSetting, org, AuditPackage.eINSTANCE.getOrganization_Members());
 
 		final VTableDomainModelReference tableDomainModelReference = VTableFactory.eINSTANCE
 			.createTableDomainModelReference();
-		tableDomainModelReference.setDomainModelEFeature(BowlingPackage.eINSTANCE.getLeague_Players());
+		tableDomainModelReference.setDomainModelEFeature(AuditPackage.eINSTANCE.getOrganization_Members());
 
 		// add three columns
 		for (final EStructuralFeature eStructuralFeature : Arrays.asList(
-			BowlingPackage.eINSTANCE.getPlayer_Name(),
-			BowlingPackage.eINSTANCE.getPlayer_Height(),
-			BowlingPackage.eINSTANCE.getPlayer_Gender())) {
+			AuditPackage.eINSTANCE.getMember_Name(),
+			AuditPackage.eINSTANCE.getMember_IsActive(),
+			AuditPackage.eINSTANCE.getMember_JoinDate() //
+		)) {
 
 			final VFeaturePathDomainModelReference dmr = //
 				VViewFactory.eINSTANCE.createFeaturePathDomainModelReference();
@@ -219,17 +291,94 @@
 		when(((EMFFormsDatabindingEMF) getDatabindingService())
 			.getSetting(any(VDomainModelReference.class),
 				any(EObject.class)))
-					.thenReturn(playerSetting);
+					.thenReturn(memberSetting);
 
 		when(getvControl().getDomainModelReference()).thenReturn(
 			tableDomainModelReference);
+
+		expectedRows = MEMBERS.size();
+		expectedColumns = 3;
+	}
+
+	protected void mockDataSetComplex() throws DatabindingFailedException {
+		final Organization org = AuditFactory.eINSTANCE.createOrganization();
+
+		// add three players
+		for (final Entry<String, EClass> m : MEMBERS.entrySet()) {
+
+			final String name = m.getKey();
+			final Member member = (Member) AuditFactory.eINSTANCE.create(m.getValue());
+			member.setName(name);
+
+			if (RegisteredUser.class.isInstance(member)) { // will include MEMBER1 and MEMBER2, as MEMBER3 is a Bot
+				final RegisteredUser user = RegisteredUser.class.cast(member);
+				user.setLogin(name.toLowerCase().replaceAll(" ", ""));
+			}
+
+			org.getMembers().add(member);
+
+			mockSetting(mock(Setting.class), member, AuditPackage.eINSTANCE.getMember_Name());
+		}
+
+		final WritableList<Member> memberList = new WritableList<Member>(org.getMembers(),
+			AuditPackage.eINSTANCE.getOrganization_Members());
+
+		when(getDatabindingService().getObservableList(any(VDomainModelReference.class), any(EObject.class)))
+			.thenReturn(
+				memberList);
+
+		final Setting memberSetting = mock(Setting.class);
+		mockSetting(memberSetting, org, AuditPackage.eINSTANCE.getOrganization_Members());
+
+		final VTableDomainModelReference tableDomainModelReference = VTableFactory.eINSTANCE
+			.createTableDomainModelReference();
+		tableDomainModelReference.setDomainModelEFeature(AuditPackage.eINSTANCE.getOrganization_Members());
+
+		// add three columns
+		for (final EStructuralFeature eStructuralFeature : Arrays.asList(
+			AuditPackage.eINSTANCE.getMember_Name(),
+			AuditPackage.eINSTANCE.getMember_IsActive(),
+			AuditPackage.eINSTANCE.getMember_JoinDate() //
+		)) {
+
+			final VFeaturePathDomainModelReference dmr = //
+				VViewFactory.eINSTANCE.createFeaturePathDomainModelReference();
+			dmr.setDomainModelEFeature(eStructuralFeature);
+			tableDomainModelReference.getColumnDomainModelReferences().add(dmr);
+
+			mockColumnFeature(dmr);
+		}
+
+		for (final EStructuralFeature eStructuralFeature : Arrays.asList(
+			AuditPackage.eINSTANCE.getRegisteredUser_Login(),
+			AuditPackage.eINSTANCE.getBot_ExecutionIntervalSeconds(),
+			AuditPackage.eINSTANCE.getAdminUser_CreatedBy() //
+		)) {
+
+			final VFeaturePathDomainModelReference dmr = //
+				VViewFactory.eINSTANCE.createFeaturePathDomainModelReference();
+			dmr.setDomainModelEFeature(eStructuralFeature);
+			tableDomainModelReference.getColumnDomainModelReferences().add(dmr);
+
+			mockColumnFeature(dmr);
+		}
+
+		when(((EMFFormsDatabindingEMF) getDatabindingService())
+			.getSetting(any(VDomainModelReference.class),
+				any(EObject.class)))
+					.thenReturn(memberSetting);
+
+		when(getvControl().getDomainModelReference()).thenReturn(
+			tableDomainModelReference);
+
+		expectedRows = MEMBERS.size();
+		expectedColumns = 6;
 	}
 
 	/**
 	 * @param dmr
 	 * @throws DatabindingFailedException
 	 */
-	@SuppressWarnings("restriction")
 	private void mockColumnFeature(final VFeaturePathDomainModelReference dmr) throws DatabindingFailedException {
 		when(getDatabindingService().getValueProperty(Matchers.argThat(new BaseMatcher<VDomainModelReference>() {
 
@@ -279,11 +428,20 @@
 			.getChildren()[0];
 	}
 
+	private ColumnConfiguration extractGridColumnConfigByIndex(Grid grid, int i) {
+		final GridColumn colum = grid.getColumn(i);
+		final Object data = colum.getData(ColumnConfiguration.ID);
+		assertTrue(ColumnConfiguration.class.isInstance(data));
+
+		final ColumnConfiguration columnConfiguration = ColumnConfiguration.class.cast(data);
+		return columnConfiguration;
+	}
+
 	@Test
 	public void testColumnHideShow()
 		throws DatabindingFailedException, NoRendererFoundException, NoPropertyDescriptorFoundExeption {
 
-		mockSampleDataSet();
+		mockDataset();
 
 		final Control rendered = renderControl(new SWTGridCell(0, 2, getRenderer()));
 		assertControl(rendered);
@@ -292,15 +450,15 @@
 		assertTrue(tableViewerComposite.getEnabledFeatures().contains(TableConfiguration.FEATURE_COLUMN_HIDE_SHOW));
 
 		final Grid grid = getGrid(rendered);
-		assertEquals(grid.getColumns().length, 4); // columns defined in mockSampleDataSet()
-
-		final GridColumn nameColumn = grid.getColumn(1); // name column
+		assertEquals(expectedColumns + 1, grid.getColumns().length); // columns defined by mockDataset()
+																		// +1 for validation column
+		final GridColumn nameColumn = grid.getColumn(1);
 		assertTrue(nameColumn.isVisible());
 
 		final Object data = nameColumn.getData(ColumnConfiguration.ID);
 		assertTrue(ColumnConfiguration.class.isInstance(data));
 
-		final ColumnConfiguration columnConfiguration = ColumnConfiguration.class.cast(data);
+		final ColumnConfiguration columnConfiguration = extractGridColumnConfigByIndex(grid, 1); // name column
 		assertTrue("Feature not enabled/supported. Check ColumnConfiguration.FEATURES?",
 			columnConfiguration.getEnabledFeatures()
 				.contains(ColumnConfiguration.FEATURE_COLUMN_HIDE_SHOW));
@@ -318,7 +476,7 @@
 	public void testColumnFilter()
 		throws DatabindingFailedException, NoRendererFoundException, NoPropertyDescriptorFoundExeption {
 
-		mockSampleDataSet();
+		mockDataset();
 
 		final Control rendered = renderControl(new SWTGridCell(0, 2, getRenderer()));
 		assertControl(rendered);
@@ -327,33 +485,48 @@
 		assertTrue(tableViewerComposite.getEnabledFeatures().contains(TableConfiguration.FEATURE_COLUMN_FILTER));
 
 		final Grid grid = getGrid(rendered);
-		final GridColumn nameColumn = grid.getColumn(1); // name column
-		final Object data = nameColumn.getData(ColumnConfiguration.ID);
-		assertTrue(ColumnConfiguration.class.isInstance(data));
+		final ColumnConfiguration columnConfiguration = extractGridColumnConfigByIndex(grid,
+			DataSet.Simple.equals(dataset) ? 1 : 4); // name or login column
 
-		final ColumnConfiguration columnConfiguration = ColumnConfiguration.class.cast(data);
 		assertTrue("Feature not enabled/supported. Check ColumnConfiguration.FEATURES?",
 			columnConfiguration.getEnabledFeatures()
 				.contains(ColumnConfiguration.FEATURE_COLUMN_FILTER));
 
-		assertEquals(3, grid.getItems().length); // 3 players/rows defined in mockSampleDataSet()
+		assertEquals(expectedRows, grid.getItems().length); // 3 players/rows defined in mockSampleDataSet()
 
 		/*
 		 * test filtering
 		 */
 
 		columnConfiguration.matchFilter().setValue("er");
-		assertEquals(3, filterVisible(grid.getItems()).length);
+		switch (dataset) {
+		case Simple:
+			assertEquals(3, filterVisible(grid.getItems()).length);
+			break;
+		default: // complex case, has only two logins (a bot doesn't have one)
+			assertEquals(2, filterVisible(grid.getItems()).length);
+		}
 
 		columnConfiguration.matchFilter().setValue("foo");
 		assertEquals(0, filterVisible(grid.getItems()).length);
 
 		columnConfiguration.matchFilter().resetToDefault();
-		assertEquals(3, filterVisible(grid.getItems()).length);
+		assertEquals(expectedRows, filterVisible(grid.getItems()).length);
 
 		columnConfiguration.matchFilter().setValue("Kliver");
 		assertEquals(1, filterVisible(grid.getItems()).length);
 
+		columnConfiguration.matchFilter().resetToDefault();
+		columnConfiguration.matchFilter().setValue("branzfeckenbauer");
+
+		switch (dataset) {
+		case Simple:
+			assertEquals(0, filterVisible(grid.getItems()).length);
+			break;
+		default: // complex case, there is exactly one matching login
+			assertEquals(1, filterVisible(grid.getItems()).length);
+		}
+
 		/*
 		 * test clearing of filter
 		 */
@@ -370,7 +543,7 @@
 	public void testColumnFilterWithColumnHideShow()
 		throws DatabindingFailedException, NoRendererFoundException, NoPropertyDescriptorFoundExeption {
 
-		mockSampleDataSet();
+		mockDataset();
 
 		final Control rendered = renderControl(new SWTGridCell(0, 2, getRenderer()));
 		final Grid grid = getGrid(rendered);
@@ -397,7 +570,7 @@
 
 		columnConfiguration.visible().setValue(Boolean.FALSE);
 
-		assertEquals(3, filterVisible(grid.getItems()).length);
+		assertEquals(expectedRows, filterVisible(grid.getItems()).length);
 
 		/*
 		 * test for Gerrit #110529 (filter again after filters have been hidden)
@@ -414,7 +587,7 @@
 		// will result in a NPE without Gerrit #110529
 		columnConfiguration.visible().setValue(Boolean.FALSE);
 
-		assertEquals(3, filterVisible(grid.getItems()).length);
+		assertEquals(expectedRows, filterVisible(grid.getItems()).length);
 
 	}
 
@@ -450,11 +623,13 @@
 	@Test
 	public void testEffectivelyReadOnlyHidesAddRemoveButtons()
 		throws DatabindingFailedException, NoRendererFoundException, NoPropertyDescriptorFoundExeption {
+
+		mockDataset();
+
 		when(getvControl().isAddRemoveDisabled()).thenReturn(false);
 		when(getvControl().isEffectivelyEnabled()).thenReturn(true);
 		when(getvControl().isEffectivelyReadonly()).thenReturn(true);
 		when(getvControl().isVisible()).thenReturn(true);
-		mockSampleDataSet();
 
 		getShell().open();
 		final Control rendered = renderControl(new SWTGridCell(0, 2, getRenderer()));
diff --git a/tests/org.eclipse.emf.ecp.view.table.ui.nebula.grid.test/src/org/eclipse/emf/ecp/view/internal/table/nebula/grid/GridTable_PTest.java b/tests/org.eclipse.emf.ecp.view.table.ui.nebula.grid.test/src/org/eclipse/emf/ecp/view/internal/table/nebula/grid/GridTable_PTest.java
index 27fbbdc..133bafb 100644
--- a/tests/org.eclipse.emf.ecp.view.table.ui.nebula.grid.test/src/org/eclipse/emf/ecp/view/internal/table/nebula/grid/GridTable_PTest.java
+++ b/tests/org.eclipse.emf.ecp.view.table.ui.nebula.grid.test/src/org/eclipse/emf/ecp/view/internal/table/nebula/grid/GridTable_PTest.java
@@ -53,11 +53,11 @@
 import org.eclipse.emf.ecp.view.spi.table.model.DetailEditing;
 import org.eclipse.emf.ecp.view.spi.table.model.VTableControl;
 import org.eclipse.emf.ecp.view.spi.table.model.VTableDomainModelReference;
-import org.eclipse.emf.ecp.view.spi.table.model.VTableFactory;
 import org.eclipse.emf.ecp.view.spi.table.nebula.grid.GridControlSWTRenderer;
 import org.eclipse.emf.ecp.view.spi.table.swt.TableControlSWTRenderer;
 import org.eclipse.emf.ecp.view.spi.util.swt.ImageRegistryService;
-import org.eclipse.emf.ecp.view.table.ui.swt.test.TableControlHandle;
+import org.eclipse.emf.ecp.view.table.test.common.TableControlHandle;
+import org.eclipse.emf.ecp.view.table.test.common.TableTestUtil;
 import org.eclipse.emf.ecp.view.template.model.VTViewTemplateProvider;
 import org.eclipse.emf.ecp.view.test.common.swt.spi.DatabindingClassRunner;
 import org.eclipse.emf.ecp.view.test.common.swt.spi.SWTTestUtil;
@@ -149,7 +149,7 @@
 	public void testUninitializedTableWithoutColumns() throws NoRendererFoundException,
 		NoPropertyDescriptorFoundExeption, EMFFormsNoRendererException {
 		// setup model
-		final TableControlHandle handle = createUninitializedTableWithoutColumns();
+		final TableControlHandle handle = TableTestUtil.createUninitializedTableWithoutColumns();
 		//
 		final Control render = SWTViewTestHelper.render(handle.getTableControl(), domainElement, shell);
 		assertTrue(Label.class.isInstance(render));// Error label with error text
@@ -164,7 +164,7 @@
 		final EClass createEClass = EcoreFactory.eINSTANCE.createEClass();
 		createEClass.eUnset(EcorePackage.eINSTANCE.getEClass_ESuperTypes());
 		domainElement = createEClass;
-		final TableControlHandle handle = createInitializedTableWithoutTableColumns();
+		final TableControlHandle handle = TableTestUtil.createInitializedTableWithoutTableColumns();
 
 		try {
 			SWTViewTestHelper.render(handle.getTableControl(), domainElement, shell);
@@ -182,7 +182,7 @@
 		final VView view = VViewFactory.eINSTANCE.createView();
 		view.setRootEClass(VViewPackage.eINSTANCE.getView());
 		domainElement = view;
-		final TableControlHandle handle = createInitializedTableWithoutTableColumns();
+		final TableControlHandle handle = TableTestUtil.createInitializedTableWithoutTableColumns();
 		final VFeaturePathDomainModelReference domainModelReference = VViewFactory.eINSTANCE
 			.createFeaturePathDomainModelReference();
 		domainModelReference.setDomainModelEFeature(VViewPackage.eINSTANCE.getView_RootEClass());
@@ -204,7 +204,7 @@
 		// setup model
 		final VView view = VViewFactory.eINSTANCE.createView();
 		domainElement = view;
-		final TableControlHandle handle = createInitializedTableWithoutTableColumns();
+		final TableControlHandle handle = TableTestUtil.createInitializedTableWithoutTableColumns();
 		final VFeaturePathDomainModelReference domainModelReference = VViewFactory.eINSTANCE
 			.createFeaturePathDomainModelReference();
 		domainModelReference.setDomainModelEFeature(VViewPackage.eINSTANCE.getView_RootEClass());
@@ -222,25 +222,27 @@
 	public void testTableWithoutColumns() throws NoRendererFoundException, NoPropertyDescriptorFoundExeption,
 		EMFFormsNoRendererException {
 		// setup model
-		final TableControlHandle handle = createInitializedTableWithoutTableColumns();
+		final TableControlHandle handle = TableTestUtil.createInitializedTableWithoutTableColumns();
 
 		final Control render = SWTViewTestHelper.render(handle.getTableControl(), domainElement, shell);
 		assertTrue(render instanceof Composite);
 
-		assertEquals(domainElement.eClass().getEAttributes().size(),
+		// see bug #533262, TableColumnGenerator now includes attributes from super types
+		// if this is not desired the user has to specify the columns in the view model
+		assertEquals(domainElement.eClass().getEAllAttributes().size(),
 			VTableDomainModelReference.class.cast(handle.getTableControl().getDomainModelReference())
 				.getColumnDomainModelReferences().size());
 
 		final Control control = getTable(render);
 		assertTrue(control instanceof Grid);
 		final Grid table = (Grid) control;
-		assertEquals(3, table.getColumnCount());
+		assertEquals(domainElement.eClass().getEAllAttributes().size() + 1, table.getColumnCount());
 	}
 
 	@Test
 	public void testTableWithoutColumnsWithoutViewServices() throws NoRendererFoundException,
 		NoPropertyDescriptorFoundExeption, EMFFormsNoRendererException {
-		final TableControlHandle handle = createInitializedTableWithoutTableColumns();
+		final TableControlHandle handle = TableTestUtil.createInitializedTableWithoutTableColumns();
 		final AbstractSWTRenderer<VElement> tableRenderer = rendererFactory.getRendererInstance(
 			handle.getTableControl(),
 			new ViewModelContextWithoutServices(handle.getTableControl()));
@@ -416,7 +418,7 @@
 		((EClass) domainElement).getESuperTypes().add(class3);
 
 		// table control
-		final VTableControl tableControl = createTableControl();
+		final VTableControl tableControl = TableTestUtil.createTableControl();
 		final VTableDomainModelReference tableDMR = (VTableDomainModelReference) tableControl.getDomainModelReference();
 		tableDMR.setDomainModelEFeature(EcorePackage.eINSTANCE.getEClass_ESuperTypes());
 		tableDMR.getColumnDomainModelReferences().add(createDMR(EcorePackage.eINSTANCE.getENamedElement_Name()));
@@ -478,7 +480,7 @@
 		((EClass) domainElement).getESuperTypes().add(class3);
 
 		// table control
-		final VTableControl tableControl = createTableControl();
+		final VTableControl tableControl = TableTestUtil.createTableControl();
 		final VTableDomainModelReference tableDMR = (VTableDomainModelReference) tableControl.getDomainModelReference();
 		tableDMR.setDomainModelEFeature(EcorePackage.eINSTANCE.getEClass_ESuperTypes());
 		tableDMR.getColumnDomainModelReferences().add(createDMR(EcorePackage.eINSTANCE.getENamedElement_Name()));
@@ -605,46 +607,17 @@
 	}
 
 	private static TableControlHandle createTableWithTwoTableColumns() {
-		final TableControlHandle tableControlHandle = createInitializedTableWithoutTableColumns();
-		final VDomainModelReference tableColumn1 = createTableColumn(EcorePackage.eINSTANCE.getEClass_Abstract());
+		final TableControlHandle tableControlHandle = TableTestUtil.createInitializedTableWithoutTableColumns();
+		final VDomainModelReference tableColumn1 = TableTestUtil
+			.createTableColumn(EcorePackage.eINSTANCE.getEClass_Abstract());
 
 		tableControlHandle.addFirstTableColumn(tableColumn1);
-		final VDomainModelReference tableColumn2 = createTableColumn(EcorePackage.eINSTANCE.getEClass_Abstract());
+		final VDomainModelReference tableColumn2 = TableTestUtil
+			.createTableColumn(EcorePackage.eINSTANCE.getEClass_Abstract());
 		tableControlHandle.addSecondTableColumn(tableColumn2);
 		return tableControlHandle;
 	}
 
-	public static VDomainModelReference createTableColumn(EStructuralFeature feature) {
-		final VFeaturePathDomainModelReference reference = VViewFactory.eINSTANCE
-			.createFeaturePathDomainModelReference();
-		reference.setDomainModelEFeature(feature);
-		return reference;
-	}
-
-	public static TableControlHandle createInitializedTableWithoutTableColumns() {
-		final TableControlHandle tableControlHandle = createUninitializedTableWithoutColumns();
-		final VFeaturePathDomainModelReference domainModelReference = VTableFactory.eINSTANCE
-			.createTableDomainModelReference();
-		domainModelReference.setDomainModelEFeature(EcorePackage.eINSTANCE.getEClass_ESuperTypes());
-		tableControlHandle.getTableControl().setDomainModelReference(domainModelReference);
-
-		return tableControlHandle;
-	}
-
-	public static TableControlHandle createUninitializedTableWithoutColumns() {
-		final VTableControl tableControl = createTableControl();
-		return new TableControlHandle(tableControl);
-	}
-
-	/**
-	 * @return
-	 */
-	private static VTableControl createTableControl() {
-		final VTableControl tc = VTableFactory.eINSTANCE.createTableControl();
-		tc.setDomainModelReference(VTableFactory.eINSTANCE.createTableDomainModelReference());
-		return tc;
-	}
-
 	private GridTableViewer getTableViewerFromRenderer(AbstractSWTRenderer<VElement> renderer) {
 		try {
 			final Method method = TableControlSWTRenderer.class.getDeclaredMethod("getTableViewer");
@@ -952,7 +925,7 @@
 
 		/**
 		 * {@inheritDoc}
-		 * 
+		 *
 		 * @see org.eclipse.emf.ecp.view.spi.context.ViewModelContext#getChildContext(org.eclipse.emf.ecore.EObject,
 		 *      org.eclipse.emf.ecp.view.spi.model.VElement, org.eclipse.emf.ecp.view.spi.model.VView,
 		 *      org.eclipse.emf.ecp.view.spi.context.ViewModelServiceProvider)
diff --git a/tests/org.eclipse.emf.ecp.view.table.ui.nebula.grid.test/src/org/eclipse/emf/ecp/view/spi/table/nebula/grid/GridViewerColumnBuilder_ITest.java b/tests/org.eclipse.emf.ecp.view.table.ui.nebula.grid.test/src/org/eclipse/emf/ecp/view/spi/table/nebula/grid/GridViewerColumnBuilder_ITest.java
new file mode 100644
index 0000000..cbdaa5f
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.view.table.ui.nebula.grid.test/src/org/eclipse/emf/ecp/view/spi/table/nebula/grid/GridViewerColumnBuilder_ITest.java
@@ -0,0 +1,92 @@
+/*******************************************************************************
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * Eugen Neufeld - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.emf.ecp.view.spi.table.nebula.grid;
+
+import static org.junit.Assert.assertEquals;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import org.eclipse.core.databinding.observable.value.IObservableValue;
+import org.eclipse.emf.databinding.EMFDataBindingContext;
+import org.eclipse.emf.ecp.view.test.common.swt.spi.DatabindingClassRunner;
+import org.eclipse.emfforms.common.Optional;
+import org.eclipse.emfforms.common.Property;
+import org.eclipse.emfforms.spi.swt.table.ColumnConfiguration;
+import org.eclipse.jface.viewers.CellLabelProvider;
+import org.eclipse.jface.viewers.EditingSupport;
+import org.eclipse.nebula.jface.gridviewer.GridTableViewer;
+import org.eclipse.nebula.jface.gridviewer.GridViewerColumn;
+import org.eclipse.swt.widgets.Shell;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+@RunWith(DatabindingClassRunner.class)
+public class GridViewerColumnBuilder_ITest {
+
+	private EMFDataBindingContext dataBindingContext;
+	private GridTableViewer tableViewer;
+	private Shell shell;
+	private ColumnConfiguration config;
+
+	@SuppressWarnings({ "unchecked", "rawtypes" })
+	@Before
+	public void setUp() throws Exception {
+		dataBindingContext = new EMFDataBindingContext();
+		shell = new Shell();
+		tableViewer = new GridTableViewer(shell);
+
+		config = mock(ColumnConfiguration.class);
+		final CellLabelProvider labelProvider = mock(CellLabelProvider.class);
+		when(config.createLabelProvider(tableViewer)).thenReturn(labelProvider);
+		final Optional<EditingSupport> editingSupport = Optional.empty();
+		when(config.createEditingSupport(tableViewer)).thenReturn(editingSupport);
+		final Property visibleProperty = mock(Property.class);
+		when(visibleProperty.getValue()).thenReturn(Boolean.TRUE);
+		when(config.visible()).thenReturn(visibleProperty);
+		final Property showFilterProperty = mock(Property.class);
+		when(showFilterProperty.getValue()).thenReturn(Boolean.FALSE);
+		when(config.showFilterControl()).thenReturn(showFilterProperty);
+		final Property matchFilterProperty = mock(Property.class);
+		when(matchFilterProperty.getValue()).thenReturn(Boolean.FALSE);
+		when(config.matchFilter()).thenReturn(matchFilterProperty);
+	}
+
+	@After
+	public void tearDown() throws Exception {
+		shell.dispose();
+	}
+
+	@SuppressWarnings("rawtypes")
+	@Test
+	public void testConfigureDatabinding() {
+
+		final IObservableValue tooltipObservable = mock(IObservableValue.class);
+		final String tooltip = "Foo";
+		when(tooltipObservable.getValue()).thenReturn(tooltip);
+		when(tooltipObservable.getRealm()).thenReturn(dataBindingContext.getValidationRealm());
+		when(config.getColumnTooltip()).thenReturn(tooltipObservable);
+
+		final IObservableValue textObservable = mock(IObservableValue.class);
+		when(textObservable.getValue()).thenReturn("Bar");
+		when(textObservable.getValueType()).thenReturn(String.class);
+		when(textObservable.getRealm()).thenReturn(dataBindingContext.getValidationRealm());
+		when(config.getColumnText()).thenReturn(textObservable);
+
+		final GridViewerColumnBuilder builder = new GridViewerColumnBuilder(config);
+		builder.withDatabinding(dataBindingContext);
+		final GridViewerColumn column = builder.build(tableViewer);
+		assertEquals(tooltip, column.getColumn().getHeaderTooltip());
+	}
+
+}
diff --git a/tests/org.eclipse.emf.ecp.view.table.ui.nebula.grid.test/src/org/eclipse/emf/ecp/view/table/ui/nebula/grid/test/model/audit/AdminUser.java b/tests/org.eclipse.emf.ecp.view.table.ui.nebula.grid.test/src/org/eclipse/emf/ecp/view/table/ui/nebula/grid/test/model/audit/AdminUser.java
new file mode 100644
index 0000000..a613058
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.view.table.ui.nebula.grid.test/src/org/eclipse/emf/ecp/view/table/ui/nebula/grid/test/model/audit/AdminUser.java
@@ -0,0 +1,62 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
+ */
+package org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Admin User</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.AdminUser#getCreatedBy <em>Created
+ * By</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.AuditPackage#getAdminUser()
+ * @model
+ * @generated
+ */
+public interface AdminUser extends RegisteredUser, PrivilegedUser {
+	/**
+	 * Returns the value of the '<em><b>Created By</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Created By</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Created By</em>' reference.
+	 * @see #setCreatedBy(PrivilegedUser)
+	 * @see org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.AuditPackage#getAdminUser_CreatedBy()
+	 * @model
+	 * @generated
+	 */
+	PrivilegedUser getCreatedBy();
+
+	/**
+	 * Sets the value of the
+	 * '{@link org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.AdminUser#getCreatedBy <em>Created
+	 * By</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value the new value of the '<em>Created By</em>' reference.
+	 * @see #getCreatedBy()
+	 * @generated
+	 */
+	void setCreatedBy(PrivilegedUser value);
+
+} // AdminUser
diff --git a/tests/org.eclipse.emf.ecp.view.table.ui.nebula.grid.test/src/org/eclipse/emf/ecp/view/table/ui/nebula/grid/test/model/audit/AuditFactory.java b/tests/org.eclipse.emf.ecp.view.table.ui.nebula.grid.test/src/org/eclipse/emf/ecp/view/table/ui/nebula/grid/test/model/audit/AuditFactory.java
new file mode 100644
index 0000000..b2eb68d
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.view.table.ui.nebula.grid.test/src/org/eclipse/emf/ecp/view/table/ui/nebula/grid/test/model/audit/AuditFactory.java
@@ -0,0 +1,116 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
+ */
+package org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit;
+
+import org.eclipse.emf.ecore.EFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Factory</b> for the model.
+ * It provides a create method for each non-abstract class of the model.
+ * <!-- end-user-doc -->
+ *
+ * @see org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.AuditPackage
+ * @generated
+ */
+public interface AuditFactory extends EFactory {
+	/**
+	 * The singleton instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	AuditFactory eINSTANCE = org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.impl.AuditFactoryImpl
+		.init();
+
+	/**
+	 * Returns a new object of class '<em>Organization</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return a new object of class '<em>Organization</em>'.
+	 * @generated
+	 */
+	Organization createOrganization();
+
+	/**
+	 * Returns a new object of class '<em>Bot</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return a new object of class '<em>Bot</em>'.
+	 * @generated
+	 */
+	Bot createBot();
+
+	/**
+	 * Returns a new object of class '<em>Guest User</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return a new object of class '<em>Guest User</em>'.
+	 * @generated
+	 */
+	GuestUser createGuestUser();
+
+	/**
+	 * Returns a new object of class '<em>Registered User</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return a new object of class '<em>Registered User</em>'.
+	 * @generated
+	 */
+	RegisteredUser createRegisteredUser();
+
+	/**
+	 * Returns a new object of class '<em>Admin User</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return a new object of class '<em>Admin User</em>'.
+	 * @generated
+	 */
+	AdminUser createAdminUser();
+
+	/**
+	 * Returns a new object of class '<em>Privileged Bot</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return a new object of class '<em>Privileged Bot</em>'.
+	 * @generated
+	 */
+	PrivilegedBot createPrivilegedBot();
+
+	/**
+	 * Returns a new object of class '<em>Member Group</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return a new object of class '<em>Member Group</em>'.
+	 * @generated
+	 */
+	MemberGroup createMemberGroup();
+
+	/**
+	 * Returns the package supported by this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the package supported by this factory.
+	 * @generated
+	 */
+	AuditPackage getAuditPackage();
+
+} // AuditFactory
diff --git a/tests/org.eclipse.emf.ecp.view.table.ui.nebula.grid.test/src/org/eclipse/emf/ecp/view/table/ui/nebula/grid/test/model/audit/AuditPackage.java b/tests/org.eclipse.emf.ecp.view.table.ui.nebula.grid.test/src/org/eclipse/emf/ecp/view/table/ui/nebula/grid/test/model/audit/AuditPackage.java
new file mode 100644
index 0000000..f3694df
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.view.table.ui.nebula.grid.test/src/org/eclipse/emf/ecp/view/table/ui/nebula/grid/test/model/audit/AuditPackage.java
@@ -0,0 +1,1379 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
+ */
+package org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Package</b> for the model.
+ * It contains accessors for the meta objects to represent
+ * <ul>
+ * <li>each class,</li>
+ * <li>each feature of each class,</li>
+ * <li>each operation of each class,</li>
+ * <li>each enum,</li>
+ * <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ *
+ * @see org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.AuditFactory
+ * @model kind="package"
+ * @generated
+ */
+public interface AuditPackage extends EPackage {
+	/**
+	 * The package name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	String eNAME = "audit"; //$NON-NLS-1$
+
+	/**
+	 * The package namespace URI.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	String eNS_URI = "http://eclipse/org/emf/ecp/view/table/ui/nebula/grid/test/model"; //$NON-NLS-1$
+
+	/**
+	 * The package namespace name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	String eNS_PREFIX = "org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model"; //$NON-NLS-1$
+
+	/**
+	 * The singleton instance of the package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	AuditPackage eINSTANCE = org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.impl.AuditPackageImpl
+		.init();
+
+	/**
+	 * The meta object id for the
+	 * '{@link org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.impl.OrganizationImpl
+	 * <em>Organization</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.impl.OrganizationImpl
+	 * @see org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.impl.AuditPackageImpl#getOrganization()
+	 * @generated
+	 */
+	int ORGANIZATION = 0;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int ORGANIZATION__NAME = 0;
+
+	/**
+	 * The feature id for the '<em><b>Members</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int ORGANIZATION__MEMBERS = 1;
+
+	/**
+	 * The feature id for the '<em><b>Groups</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int ORGANIZATION__GROUPS = 2;
+
+	/**
+	 * The number of structural features of the '<em>Organization</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int ORGANIZATION_FEATURE_COUNT = 3;
+
+	/**
+	 * The number of operations of the '<em>Organization</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int ORGANIZATION_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.Member
+	 * <em>Member</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.Member
+	 * @see org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.impl.AuditPackageImpl#getMember()
+	 * @generated
+	 */
+	int MEMBER = 1;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int MEMBER__NAME = 0;
+
+	/**
+	 * The feature id for the '<em><b>Join Date</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int MEMBER__JOIN_DATE = 1;
+
+	/**
+	 * The feature id for the '<em><b>Is Active</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int MEMBER__IS_ACTIVE = 2;
+
+	/**
+	 * The number of structural features of the '<em>Member</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int MEMBER_FEATURE_COUNT = 3;
+
+	/**
+	 * The number of operations of the '<em>Member</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int MEMBER_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.impl.BotImpl
+	 * <em>Bot</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.impl.BotImpl
+	 * @see org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.impl.AuditPackageImpl#getBot()
+	 * @generated
+	 */
+	int BOT = 2;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int BOT__NAME = MEMBER__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Join Date</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int BOT__JOIN_DATE = MEMBER__JOIN_DATE;
+
+	/**
+	 * The feature id for the '<em><b>Is Active</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int BOT__IS_ACTIVE = MEMBER__IS_ACTIVE;
+
+	/**
+	 * The feature id for the '<em><b>Execution Interval Seconds</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int BOT__EXECUTION_INTERVAL_SECONDS = MEMBER_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Bot</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int BOT_FEATURE_COUNT = MEMBER_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of operations of the '<em>Bot</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int BOT_OPERATION_COUNT = MEMBER_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.impl.HumanImpl
+	 * <em>Human</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.impl.HumanImpl
+	 * @see org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.impl.AuditPackageImpl#getHuman()
+	 * @generated
+	 */
+	int HUMAN = 3;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int HUMAN__NAME = MEMBER__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Join Date</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int HUMAN__JOIN_DATE = MEMBER__JOIN_DATE;
+
+	/**
+	 * The feature id for the '<em><b>Is Active</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int HUMAN__IS_ACTIVE = MEMBER__IS_ACTIVE;
+
+	/**
+	 * The number of structural features of the '<em>Human</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int HUMAN_FEATURE_COUNT = MEMBER_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>Human</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int HUMAN_OPERATION_COUNT = MEMBER_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the
+	 * '{@link org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.impl.GuestUserImpl <em>Guest User</em>}'
+	 * class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.impl.GuestUserImpl
+	 * @see org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.impl.AuditPackageImpl#getGuestUser()
+	 * @generated
+	 */
+	int GUEST_USER = 4;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int GUEST_USER__NAME = HUMAN__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Join Date</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int GUEST_USER__JOIN_DATE = HUMAN__JOIN_DATE;
+
+	/**
+	 * The feature id for the '<em><b>Is Active</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int GUEST_USER__IS_ACTIVE = HUMAN__IS_ACTIVE;
+
+	/**
+	 * The number of structural features of the '<em>Guest User</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int GUEST_USER_FEATURE_COUNT = HUMAN_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>Guest User</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int GUEST_USER_OPERATION_COUNT = HUMAN_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the
+	 * '{@link org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.impl.RegisteredUserImpl <em>Registered
+	 * User</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.impl.RegisteredUserImpl
+	 * @see org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.impl.AuditPackageImpl#getRegisteredUser()
+	 * @generated
+	 */
+	int REGISTERED_USER = 5;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int REGISTERED_USER__NAME = HUMAN__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Join Date</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int REGISTERED_USER__JOIN_DATE = HUMAN__JOIN_DATE;
+
+	/**
+	 * The feature id for the '<em><b>Is Active</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int REGISTERED_USER__IS_ACTIVE = HUMAN__IS_ACTIVE;
+
+	/**
+	 * The feature id for the '<em><b>Login</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int REGISTERED_USER__LOGIN = HUMAN_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Password</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int REGISTERED_USER__PASSWORD = HUMAN_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Delegates</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int REGISTERED_USER__DELEGATES = HUMAN_FEATURE_COUNT + 2;
+
+	/**
+	 * The number of structural features of the '<em>Registered User</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int REGISTERED_USER_FEATURE_COUNT = HUMAN_FEATURE_COUNT + 3;
+
+	/**
+	 * The number of operations of the '<em>Registered User</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int REGISTERED_USER_OPERATION_COUNT = HUMAN_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.PrivilegedUser
+	 * <em>Privileged User</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.PrivilegedUser
+	 * @see org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.impl.AuditPackageImpl#getPrivilegedUser()
+	 * @generated
+	 */
+	int PRIVILEGED_USER = 6;
+
+	/**
+	 * The number of structural features of the '<em>Privileged User</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int PRIVILEGED_USER_FEATURE_COUNT = 0;
+
+	/**
+	 * The number of operations of the '<em>Privileged User</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int PRIVILEGED_USER_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the
+	 * '{@link org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.impl.AdminUserImpl <em>Admin User</em>}'
+	 * class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.impl.AdminUserImpl
+	 * @see org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.impl.AuditPackageImpl#getAdminUser()
+	 * @generated
+	 */
+	int ADMIN_USER = 7;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int ADMIN_USER__NAME = REGISTERED_USER__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Join Date</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int ADMIN_USER__JOIN_DATE = REGISTERED_USER__JOIN_DATE;
+
+	/**
+	 * The feature id for the '<em><b>Is Active</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int ADMIN_USER__IS_ACTIVE = REGISTERED_USER__IS_ACTIVE;
+
+	/**
+	 * The feature id for the '<em><b>Login</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int ADMIN_USER__LOGIN = REGISTERED_USER__LOGIN;
+
+	/**
+	 * The feature id for the '<em><b>Password</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int ADMIN_USER__PASSWORD = REGISTERED_USER__PASSWORD;
+
+	/**
+	 * The feature id for the '<em><b>Delegates</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int ADMIN_USER__DELEGATES = REGISTERED_USER__DELEGATES;
+
+	/**
+	 * The feature id for the '<em><b>Created By</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int ADMIN_USER__CREATED_BY = REGISTERED_USER_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Admin User</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int ADMIN_USER_FEATURE_COUNT = REGISTERED_USER_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of operations of the '<em>Admin User</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int ADMIN_USER_OPERATION_COUNT = REGISTERED_USER_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the
+	 * '{@link org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.impl.PrivilegedBotImpl <em>Privileged
+	 * Bot</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.impl.PrivilegedBotImpl
+	 * @see org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.impl.AuditPackageImpl#getPrivilegedBot()
+	 * @generated
+	 */
+	int PRIVILEGED_BOT = 8;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int PRIVILEGED_BOT__NAME = BOT__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Join Date</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int PRIVILEGED_BOT__JOIN_DATE = BOT__JOIN_DATE;
+
+	/**
+	 * The feature id for the '<em><b>Is Active</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int PRIVILEGED_BOT__IS_ACTIVE = BOT__IS_ACTIVE;
+
+	/**
+	 * The feature id for the '<em><b>Execution Interval Seconds</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int PRIVILEGED_BOT__EXECUTION_INTERVAL_SECONDS = BOT__EXECUTION_INTERVAL_SECONDS;
+
+	/**
+	 * The number of structural features of the '<em>Privileged Bot</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int PRIVILEGED_BOT_FEATURE_COUNT = BOT_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>Privileged Bot</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int PRIVILEGED_BOT_OPERATION_COUNT = BOT_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the
+	 * '{@link org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.impl.MemberGroupImpl <em>Member
+	 * Group</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.impl.MemberGroupImpl
+	 * @see org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.impl.AuditPackageImpl#getMemberGroup()
+	 * @generated
+	 */
+	int MEMBER_GROUP = 9;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int MEMBER_GROUP__NAME = 0;
+
+	/**
+	 * The feature id for the '<em><b>Members</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int MEMBER_GROUP__MEMBERS = 1;
+
+	/**
+	 * The feature id for the '<em><b>Admins</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int MEMBER_GROUP__ADMINS = 2;
+
+	/**
+	 * The feature id for the '<em><b>Bots</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int MEMBER_GROUP__BOTS = 3;
+
+	/**
+	 * The number of structural features of the '<em>Member Group</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int MEMBER_GROUP_FEATURE_COUNT = 4;
+
+	/**
+	 * The number of operations of the '<em>Member Group</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int MEMBER_GROUP_OPERATION_COUNT = 0;
+
+	/**
+	 * Returns the meta object for class
+	 * '{@link org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.Organization <em>Organization</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for class '<em>Organization</em>'.
+	 * @see org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.Organization
+	 * @generated
+	 */
+	EClass getOrganization();
+
+	/**
+	 * Returns the meta object for the attribute
+	 * '{@link org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.Organization#getName <em>Name</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the attribute '<em>Name</em>'.
+	 * @see org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.Organization#getName()
+	 * @see #getOrganization()
+	 * @generated
+	 */
+	EAttribute getOrganization_Name();
+
+	/**
+	 * Returns the meta object for the containment reference list
+	 * '{@link org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.Organization#getMembers
+	 * <em>Members</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the containment reference list '<em>Members</em>'.
+	 * @see org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.Organization#getMembers()
+	 * @see #getOrganization()
+	 * @generated
+	 */
+	EReference getOrganization_Members();
+
+	/**
+	 * Returns the meta object for the containment reference list
+	 * '{@link org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.Organization#getGroups <em>Groups</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the containment reference list '<em>Groups</em>'.
+	 * @see org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.Organization#getGroups()
+	 * @see #getOrganization()
+	 * @generated
+	 */
+	EReference getOrganization_Groups();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.Member
+	 * <em>Member</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for class '<em>Member</em>'.
+	 * @see org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.Member
+	 * @generated
+	 */
+	EClass getMember();
+
+	/**
+	 * Returns the meta object for the attribute
+	 * '{@link org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.Member#getName <em>Name</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the attribute '<em>Name</em>'.
+	 * @see org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.Member#getName()
+	 * @see #getMember()
+	 * @generated
+	 */
+	EAttribute getMember_Name();
+
+	/**
+	 * Returns the meta object for the attribute
+	 * '{@link org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.Member#getJoinDate <em>Join Date</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the attribute '<em>Join Date</em>'.
+	 * @see org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.Member#getJoinDate()
+	 * @see #getMember()
+	 * @generated
+	 */
+	EAttribute getMember_JoinDate();
+
+	/**
+	 * Returns the meta object for the attribute
+	 * '{@link org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.Member#isIsActive <em>Is Active</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the attribute '<em>Is Active</em>'.
+	 * @see org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.Member#isIsActive()
+	 * @see #getMember()
+	 * @generated
+	 */
+	EAttribute getMember_IsActive();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.Bot
+	 * <em>Bot</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for class '<em>Bot</em>'.
+	 * @see org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.Bot
+	 * @generated
+	 */
+	EClass getBot();
+
+	/**
+	 * Returns the meta object for the attribute
+	 * '{@link org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.Bot#getExecutionIntervalSeconds
+	 * <em>Execution Interval Seconds</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the attribute '<em>Execution Interval Seconds</em>'.
+	 * @see org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.Bot#getExecutionIntervalSeconds()
+	 * @see #getBot()
+	 * @generated
+	 */
+	EAttribute getBot_ExecutionIntervalSeconds();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.Human
+	 * <em>Human</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for class '<em>Human</em>'.
+	 * @see org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.Human
+	 * @generated
+	 */
+	EClass getHuman();
+
+	/**
+	 * Returns the meta object for class
+	 * '{@link org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.GuestUser <em>Guest User</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for class '<em>Guest User</em>'.
+	 * @see org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.GuestUser
+	 * @generated
+	 */
+	EClass getGuestUser();
+
+	/**
+	 * Returns the meta object for class
+	 * '{@link org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.RegisteredUser <em>Registered User</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for class '<em>Registered User</em>'.
+	 * @see org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.RegisteredUser
+	 * @generated
+	 */
+	EClass getRegisteredUser();
+
+	/**
+	 * Returns the meta object for the attribute
+	 * '{@link org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.RegisteredUser#getLogin <em>Login</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the attribute '<em>Login</em>'.
+	 * @see org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.RegisteredUser#getLogin()
+	 * @see #getRegisteredUser()
+	 * @generated
+	 */
+	EAttribute getRegisteredUser_Login();
+
+	/**
+	 * Returns the meta object for the attribute
+	 * '{@link org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.RegisteredUser#getPassword
+	 * <em>Password</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the attribute '<em>Password</em>'.
+	 * @see org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.RegisteredUser#getPassword()
+	 * @see #getRegisteredUser()
+	 * @generated
+	 */
+	EAttribute getRegisteredUser_Password();
+
+	/**
+	 * Returns the meta object for the reference list
+	 * '{@link org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.RegisteredUser#getDelegates
+	 * <em>Delegates</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the reference list '<em>Delegates</em>'.
+	 * @see org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.RegisteredUser#getDelegates()
+	 * @see #getRegisteredUser()
+	 * @generated
+	 */
+	EReference getRegisteredUser_Delegates();
+
+	/**
+	 * Returns the meta object for class
+	 * '{@link org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.PrivilegedUser <em>Privileged User</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for class '<em>Privileged User</em>'.
+	 * @see org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.PrivilegedUser
+	 * @generated
+	 */
+	EClass getPrivilegedUser();
+
+	/**
+	 * Returns the meta object for class
+	 * '{@link org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.AdminUser <em>Admin User</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for class '<em>Admin User</em>'.
+	 * @see org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.AdminUser
+	 * @generated
+	 */
+	EClass getAdminUser();
+
+	/**
+	 * Returns the meta object for the reference
+	 * '{@link org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.AdminUser#getCreatedBy <em>Created
+	 * By</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the reference '<em>Created By</em>'.
+	 * @see org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.AdminUser#getCreatedBy()
+	 * @see #getAdminUser()
+	 * @generated
+	 */
+	EReference getAdminUser_CreatedBy();
+
+	/**
+	 * Returns the meta object for class
+	 * '{@link org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.PrivilegedBot <em>Privileged Bot</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for class '<em>Privileged Bot</em>'.
+	 * @see org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.PrivilegedBot
+	 * @generated
+	 */
+	EClass getPrivilegedBot();
+
+	/**
+	 * Returns the meta object for class
+	 * '{@link org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.MemberGroup <em>Member Group</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for class '<em>Member Group</em>'.
+	 * @see org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.MemberGroup
+	 * @generated
+	 */
+	EClass getMemberGroup();
+
+	/**
+	 * Returns the meta object for the attribute
+	 * '{@link org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.MemberGroup#getName <em>Name</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the attribute '<em>Name</em>'.
+	 * @see org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.MemberGroup#getName()
+	 * @see #getMemberGroup()
+	 * @generated
+	 */
+	EAttribute getMemberGroup_Name();
+
+	/**
+	 * Returns the meta object for the reference list
+	 * '{@link org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.MemberGroup#getMembers <em>Members</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the reference list '<em>Members</em>'.
+	 * @see org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.MemberGroup#getMembers()
+	 * @see #getMemberGroup()
+	 * @generated
+	 */
+	EReference getMemberGroup_Members();
+
+	/**
+	 * Returns the meta object for the reference list
+	 * '{@link org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.MemberGroup#getAdmins <em>Admins</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the reference list '<em>Admins</em>'.
+	 * @see org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.MemberGroup#getAdmins()
+	 * @see #getMemberGroup()
+	 * @generated
+	 */
+	EReference getMemberGroup_Admins();
+
+	/**
+	 * Returns the meta object for the containment reference list
+	 * '{@link org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.MemberGroup#getBots <em>Bots</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the containment reference list '<em>Bots</em>'.
+	 * @see org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.MemberGroup#getBots()
+	 * @see #getMemberGroup()
+	 * @generated
+	 */
+	EReference getMemberGroup_Bots();
+
+	/**
+	 * 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.
+	 * @generated
+	 */
+	AuditFactory getAuditFactory();
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * Defines literals for the meta objects that represent
+	 * <ul>
+	 * <li>each class,</li>
+	 * <li>each feature of each class,</li>
+	 * <li>each operation of each class,</li>
+	 * <li>each enum,</li>
+	 * <li>and each data type</li>
+	 * </ul>
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	interface Literals {
+		/**
+		 * The meta object literal for the
+		 * '{@link org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.impl.OrganizationImpl
+		 * <em>Organization</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @see org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.impl.OrganizationImpl
+		 * @see org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.impl.AuditPackageImpl#getOrganization()
+		 * @generated
+		 */
+		EClass ORGANIZATION = eINSTANCE.getOrganization();
+
+		/**
+		 * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EAttribute ORGANIZATION__NAME = eINSTANCE.getOrganization_Name();
+
+		/**
+		 * The meta object literal for the '<em><b>Members</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EReference ORGANIZATION__MEMBERS = eINSTANCE.getOrganization_Members();
+
+		/**
+		 * The meta object literal for the '<em><b>Groups</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EReference ORGANIZATION__GROUPS = eINSTANCE.getOrganization_Groups();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.Member
+		 * <em>Member</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @see org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.Member
+		 * @see org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.impl.AuditPackageImpl#getMember()
+		 * @generated
+		 */
+		EClass MEMBER = eINSTANCE.getMember();
+
+		/**
+		 * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EAttribute MEMBER__NAME = eINSTANCE.getMember_Name();
+
+		/**
+		 * The meta object literal for the '<em><b>Join Date</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EAttribute MEMBER__JOIN_DATE = eINSTANCE.getMember_JoinDate();
+
+		/**
+		 * The meta object literal for the '<em><b>Is Active</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EAttribute MEMBER__IS_ACTIVE = eINSTANCE.getMember_IsActive();
+
+		/**
+		 * The meta object literal for the
+		 * '{@link org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.impl.BotImpl <em>Bot</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @see org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.impl.BotImpl
+		 * @see org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.impl.AuditPackageImpl#getBot()
+		 * @generated
+		 */
+		EClass BOT = eINSTANCE.getBot();
+
+		/**
+		 * The meta object literal for the '<em><b>Execution Interval Seconds</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EAttribute BOT__EXECUTION_INTERVAL_SECONDS = eINSTANCE.getBot_ExecutionIntervalSeconds();
+
+		/**
+		 * The meta object literal for the
+		 * '{@link org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.impl.HumanImpl <em>Human</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @see org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.impl.HumanImpl
+		 * @see org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.impl.AuditPackageImpl#getHuman()
+		 * @generated
+		 */
+		EClass HUMAN = eINSTANCE.getHuman();
+
+		/**
+		 * The meta object literal for the
+		 * '{@link org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.impl.GuestUserImpl <em>Guest
+		 * User</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @see org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.impl.GuestUserImpl
+		 * @see org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.impl.AuditPackageImpl#getGuestUser()
+		 * @generated
+		 */
+		EClass GUEST_USER = eINSTANCE.getGuestUser();
+
+		/**
+		 * The meta object literal for the
+		 * '{@link org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.impl.RegisteredUserImpl <em>Registered
+		 * User</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @see org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.impl.RegisteredUserImpl
+		 * @see org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.impl.AuditPackageImpl#getRegisteredUser()
+		 * @generated
+		 */
+		EClass REGISTERED_USER = eINSTANCE.getRegisteredUser();
+
+		/**
+		 * The meta object literal for the '<em><b>Login</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EAttribute REGISTERED_USER__LOGIN = eINSTANCE.getRegisteredUser_Login();
+
+		/**
+		 * The meta object literal for the '<em><b>Password</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EAttribute REGISTERED_USER__PASSWORD = eINSTANCE.getRegisteredUser_Password();
+
+		/**
+		 * The meta object literal for the '<em><b>Delegates</b></em>' reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EReference REGISTERED_USER__DELEGATES = eINSTANCE.getRegisteredUser_Delegates();
+
+		/**
+		 * The meta object literal for the
+		 * '{@link org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.PrivilegedUser <em>Privileged
+		 * User</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @see org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.PrivilegedUser
+		 * @see org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.impl.AuditPackageImpl#getPrivilegedUser()
+		 * @generated
+		 */
+		EClass PRIVILEGED_USER = eINSTANCE.getPrivilegedUser();
+
+		/**
+		 * The meta object literal for the
+		 * '{@link org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.impl.AdminUserImpl <em>Admin
+		 * User</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @see org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.impl.AdminUserImpl
+		 * @see org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.impl.AuditPackageImpl#getAdminUser()
+		 * @generated
+		 */
+		EClass ADMIN_USER = eINSTANCE.getAdminUser();
+
+		/**
+		 * The meta object literal for the '<em><b>Created By</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EReference ADMIN_USER__CREATED_BY = eINSTANCE.getAdminUser_CreatedBy();
+
+		/**
+		 * The meta object literal for the
+		 * '{@link org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.impl.PrivilegedBotImpl <em>Privileged
+		 * Bot</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @see org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.impl.PrivilegedBotImpl
+		 * @see org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.impl.AuditPackageImpl#getPrivilegedBot()
+		 * @generated
+		 */
+		EClass PRIVILEGED_BOT = eINSTANCE.getPrivilegedBot();
+
+		/**
+		 * The meta object literal for the
+		 * '{@link org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.impl.MemberGroupImpl <em>Member
+		 * Group</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @see org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.impl.MemberGroupImpl
+		 * @see org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.impl.AuditPackageImpl#getMemberGroup()
+		 * @generated
+		 */
+		EClass MEMBER_GROUP = eINSTANCE.getMemberGroup();
+
+		/**
+		 * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EAttribute MEMBER_GROUP__NAME = eINSTANCE.getMemberGroup_Name();
+
+		/**
+		 * The meta object literal for the '<em><b>Members</b></em>' reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EReference MEMBER_GROUP__MEMBERS = eINSTANCE.getMemberGroup_Members();
+
+		/**
+		 * The meta object literal for the '<em><b>Admins</b></em>' reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EReference MEMBER_GROUP__ADMINS = eINSTANCE.getMemberGroup_Admins();
+
+		/**
+		 * The meta object literal for the '<em><b>Bots</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EReference MEMBER_GROUP__BOTS = eINSTANCE.getMemberGroup_Bots();
+
+	}
+
+} // AuditPackage
diff --git a/tests/org.eclipse.emf.ecp.view.table.ui.nebula.grid.test/src/org/eclipse/emf/ecp/view/table/ui/nebula/grid/test/model/audit/Bot.java b/tests/org.eclipse.emf.ecp.view.table.ui.nebula.grid.test/src/org/eclipse/emf/ecp/view/table/ui/nebula/grid/test/model/audit/Bot.java
new file mode 100644
index 0000000..92325a6
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.view.table.ui.nebula.grid.test/src/org/eclipse/emf/ecp/view/table/ui/nebula/grid/test/model/audit/Bot.java
@@ -0,0 +1,62 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
+ */
+package org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Bot</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.Bot#getExecutionIntervalSeconds
+ * <em>Execution Interval Seconds</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.AuditPackage#getBot()
+ * @model
+ * @generated
+ */
+public interface Bot extends Member {
+	/**
+	 * Returns the value of the '<em><b>Execution Interval Seconds</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Execution Interval Seconds</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Execution Interval Seconds</em>' attribute.
+	 * @see #setExecutionIntervalSeconds(int)
+	 * @see org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.AuditPackage#getBot_ExecutionIntervalSeconds()
+	 * @model
+	 * @generated
+	 */
+	int getExecutionIntervalSeconds();
+
+	/**
+	 * Sets the value of the
+	 * '{@link org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.Bot#getExecutionIntervalSeconds
+	 * <em>Execution Interval Seconds</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value the new value of the '<em>Execution Interval Seconds</em>' attribute.
+	 * @see #getExecutionIntervalSeconds()
+	 * @generated
+	 */
+	void setExecutionIntervalSeconds(int value);
+
+} // Bot
diff --git a/tests/org.eclipse.emf.ecp.view.table.ui.nebula.grid.test/src/org/eclipse/emf/ecp/view/table/ui/nebula/grid/test/model/audit/GuestUser.java b/tests/org.eclipse.emf.ecp.view.table.ui.nebula.grid.test/src/org/eclipse/emf/ecp/view/table/ui/nebula/grid/test/model/audit/GuestUser.java
new file mode 100644
index 0000000..2410977
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.view.table.ui.nebula.grid.test/src/org/eclipse/emf/ecp/view/table/ui/nebula/grid/test/model/audit/GuestUser.java
@@ -0,0 +1,25 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
+ */
+package org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Guest User</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.AuditPackage#getGuestUser()
+ * @model
+ * @generated
+ */
+public interface GuestUser extends Human {
+} // GuestUser
diff --git a/tests/org.eclipse.emf.ecp.view.table.ui.nebula.grid.test/src/org/eclipse/emf/ecp/view/table/ui/nebula/grid/test/model/audit/Human.java b/tests/org.eclipse.emf.ecp.view.table.ui.nebula.grid.test/src/org/eclipse/emf/ecp/view/table/ui/nebula/grid/test/model/audit/Human.java
new file mode 100644
index 0000000..799aafa
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.view.table.ui.nebula.grid.test/src/org/eclipse/emf/ecp/view/table/ui/nebula/grid/test/model/audit/Human.java
@@ -0,0 +1,25 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
+ */
+package org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Human</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.AuditPackage#getHuman()
+ * @model abstract="true"
+ * @generated
+ */
+public interface Human extends Member {
+} // Human
diff --git a/tests/org.eclipse.emf.ecp.view.table.ui.nebula.grid.test/src/org/eclipse/emf/ecp/view/table/ui/nebula/grid/test/model/audit/Member.java b/tests/org.eclipse.emf.ecp.view.table.ui.nebula.grid.test/src/org/eclipse/emf/ecp/view/table/ui/nebula/grid/test/model/audit/Member.java
new file mode 100644
index 0000000..b9d8643
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.view.table.ui.nebula.grid.test/src/org/eclipse/emf/ecp/view/table/ui/nebula/grid/test/model/audit/Member.java
@@ -0,0 +1,124 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
+ */
+package org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit;
+
+import java.util.Date;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Member</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.Member#getName <em>Name</em>}</li>
+ * <li>{@link org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.Member#getJoinDate <em>Join Date</em>}</li>
+ * <li>{@link org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.Member#isIsActive <em>Is Active</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.AuditPackage#getMember()
+ * @model interface="true" abstract="true"
+ * @generated
+ */
+public interface Member extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Name</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Name</em>' attribute.
+	 * @see #setName(String)
+	 * @see org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.AuditPackage#getMember_Name()
+	 * @model
+	 * @generated
+	 */
+	String getName();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.Member#getName
+	 * <em>Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value the new value of the '<em>Name</em>' attribute.
+	 * @see #getName()
+	 * @generated
+	 */
+	void setName(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Join Date</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Join Date</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Join Date</em>' attribute.
+	 * @see #setJoinDate(Date)
+	 * @see org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.AuditPackage#getMember_JoinDate()
+	 * @model
+	 * @generated
+	 */
+	Date getJoinDate();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.Member#getJoinDate
+	 * <em>Join Date</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value the new value of the '<em>Join Date</em>' attribute.
+	 * @see #getJoinDate()
+	 * @generated
+	 */
+	void setJoinDate(Date value);
+
+	/**
+	 * Returns the value of the '<em><b>Is Active</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Is Active</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Is Active</em>' attribute.
+	 * @see #setIsActive(boolean)
+	 * @see org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.AuditPackage#getMember_IsActive()
+	 * @model
+	 * @generated
+	 */
+	boolean isIsActive();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.Member#isIsActive
+	 * <em>Is Active</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value the new value of the '<em>Is Active</em>' attribute.
+	 * @see #isIsActive()
+	 * @generated
+	 */
+	void setIsActive(boolean value);
+
+} // Member
diff --git a/tests/org.eclipse.emf.ecp.view.table.ui.nebula.grid.test/src/org/eclipse/emf/ecp/view/table/ui/nebula/grid/test/model/audit/MemberGroup.java b/tests/org.eclipse.emf.ecp.view.table.ui.nebula.grid.test/src/org/eclipse/emf/ecp/view/table/ui/nebula/grid/test/model/audit/MemberGroup.java
new file mode 100644
index 0000000..886b689
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.view.table.ui.nebula.grid.test/src/org/eclipse/emf/ecp/view/table/ui/nebula/grid/test/model/audit/MemberGroup.java
@@ -0,0 +1,118 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
+ */
+package org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Member Group</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.MemberGroup#getName <em>Name</em>}</li>
+ * <li>{@link org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.MemberGroup#getMembers
+ * <em>Members</em>}</li>
+ * <li>{@link org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.MemberGroup#getAdmins <em>Admins</em>}</li>
+ * <li>{@link org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.MemberGroup#getBots <em>Bots</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.AuditPackage#getMemberGroup()
+ * @model
+ * @generated
+ */
+public interface MemberGroup extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Name</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Name</em>' attribute.
+	 * @see #setName(String)
+	 * @see org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.AuditPackage#getMemberGroup_Name()
+	 * @model
+	 * @generated
+	 */
+	String getName();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.MemberGroup#getName
+	 * <em>Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value the new value of the '<em>Name</em>' attribute.
+	 * @see #getName()
+	 * @generated
+	 */
+	void setName(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Members</b></em>' reference list.
+	 * The list contents are of type {@link org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.Human}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Members</em>' reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Members</em>' reference list.
+	 * @see org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.AuditPackage#getMemberGroup_Members()
+	 * @model
+	 * @generated
+	 */
+	EList<Human> getMembers();
+
+	/**
+	 * Returns the value of the '<em><b>Admins</b></em>' reference list.
+	 * The list contents are of type {@link org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.AdminUser}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Admins</em>' reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Admins</em>' reference list.
+	 * @see org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.AuditPackage#getMemberGroup_Admins()
+	 * @model
+	 * @generated
+	 */
+	EList<AdminUser> getAdmins();
+
+	/**
+	 * Returns the value of the '<em><b>Bots</b></em>' containment reference list.
+	 * The list contents are of type {@link org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.Bot}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Bots</em>' containment reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Bots</em>' containment reference list.
+	 * @see org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.AuditPackage#getMemberGroup_Bots()
+	 * @model containment="true"
+	 * @generated
+	 */
+	EList<Bot> getBots();
+
+} // MemberGroup
diff --git a/tests/org.eclipse.emf.ecp.view.table.ui.nebula.grid.test/src/org/eclipse/emf/ecp/view/table/ui/nebula/grid/test/model/audit/Organization.java b/tests/org.eclipse.emf.ecp.view.table.ui.nebula.grid.test/src/org/eclipse/emf/ecp/view/table/ui/nebula/grid/test/model/audit/Organization.java
new file mode 100644
index 0000000..340036f
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.view.table.ui.nebula.grid.test/src/org/eclipse/emf/ecp/view/table/ui/nebula/grid/test/model/audit/Organization.java
@@ -0,0 +1,101 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
+ */
+package org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Organization</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.Organization#getName <em>Name</em>}</li>
+ * <li>{@link org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.Organization#getMembers
+ * <em>Members</em>}</li>
+ * <li>{@link org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.Organization#getGroups
+ * <em>Groups</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.AuditPackage#getOrganization()
+ * @model
+ * @generated
+ */
+public interface Organization extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Name</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Name</em>' attribute.
+	 * @see #setName(String)
+	 * @see org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.AuditPackage#getOrganization_Name()
+	 * @model
+	 * @generated
+	 */
+	String getName();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.Organization#getName
+	 * <em>Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value the new value of the '<em>Name</em>' attribute.
+	 * @see #getName()
+	 * @generated
+	 */
+	void setName(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Members</b></em>' containment reference list.
+	 * The list contents are of type {@link org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.Member}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Members</em>' containment reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Members</em>' containment reference list.
+	 * @see org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.AuditPackage#getOrganization_Members()
+	 * @model containment="true"
+	 * @generated
+	 */
+	EList<Member> getMembers();
+
+	/**
+	 * Returns the value of the '<em><b>Groups</b></em>' containment reference list.
+	 * The list contents are of type {@link org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.MemberGroup}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Groups</em>' containment reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Groups</em>' containment reference list.
+	 * @see org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.AuditPackage#getOrganization_Groups()
+	 * @model containment="true"
+	 * @generated
+	 */
+	EList<MemberGroup> getGroups();
+
+} // Organization
diff --git a/tests/org.eclipse.emf.ecp.view.table.ui.nebula.grid.test/src/org/eclipse/emf/ecp/view/table/ui/nebula/grid/test/model/audit/PrivilegedBot.java b/tests/org.eclipse.emf.ecp.view.table.ui.nebula.grid.test/src/org/eclipse/emf/ecp/view/table/ui/nebula/grid/test/model/audit/PrivilegedBot.java
new file mode 100644
index 0000000..f5dd24e
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.view.table.ui.nebula.grid.test/src/org/eclipse/emf/ecp/view/table/ui/nebula/grid/test/model/audit/PrivilegedBot.java
@@ -0,0 +1,25 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
+ */
+package org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Privileged Bot</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.AuditPackage#getPrivilegedBot()
+ * @model
+ * @generated
+ */
+public interface PrivilegedBot extends Bot, PrivilegedUser {
+} // PrivilegedBot
diff --git a/tests/org.eclipse.emf.ecp.view.table.ui.nebula.grid.test/src/org/eclipse/emf/ecp/view/table/ui/nebula/grid/test/model/audit/PrivilegedUser.java b/tests/org.eclipse.emf.ecp.view.table.ui.nebula.grid.test/src/org/eclipse/emf/ecp/view/table/ui/nebula/grid/test/model/audit/PrivilegedUser.java
new file mode 100644
index 0000000..798ea0b
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.view.table.ui.nebula.grid.test/src/org/eclipse/emf/ecp/view/table/ui/nebula/grid/test/model/audit/PrivilegedUser.java
@@ -0,0 +1,27 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
+ */
+package org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Privileged User</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.AuditPackage#getPrivilegedUser()
+ * @model interface="true" abstract="true"
+ * @generated
+ */
+public interface PrivilegedUser extends EObject {
+} // PrivilegedUser
diff --git a/tests/org.eclipse.emf.ecp.view.table.ui.nebula.grid.test/src/org/eclipse/emf/ecp/view/table/ui/nebula/grid/test/model/audit/RegisteredUser.java b/tests/org.eclipse.emf.ecp.view.table.ui.nebula.grid.test/src/org/eclipse/emf/ecp/view/table/ui/nebula/grid/test/model/audit/RegisteredUser.java
new file mode 100644
index 0000000..7bfd042
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.view.table.ui.nebula.grid.test/src/org/eclipse/emf/ecp/view/table/ui/nebula/grid/test/model/audit/RegisteredUser.java
@@ -0,0 +1,116 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
+ */
+package org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Registered User</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.RegisteredUser#getLogin
+ * <em>Login</em>}</li>
+ * <li>{@link org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.RegisteredUser#getPassword
+ * <em>Password</em>}</li>
+ * <li>{@link org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.RegisteredUser#getDelegates
+ * <em>Delegates</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.AuditPackage#getRegisteredUser()
+ * @model
+ * @generated
+ */
+public interface RegisteredUser extends Human {
+	/**
+	 * Returns the value of the '<em><b>Login</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Login</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Login</em>' attribute.
+	 * @see #setLogin(String)
+	 * @see org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.AuditPackage#getRegisteredUser_Login()
+	 * @model
+	 * @generated
+	 */
+	String getLogin();
+
+	/**
+	 * Sets the value of the
+	 * '{@link org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.RegisteredUser#getLogin <em>Login</em>}'
+	 * attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value the new value of the '<em>Login</em>' attribute.
+	 * @see #getLogin()
+	 * @generated
+	 */
+	void setLogin(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Password</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Password</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Password</em>' attribute.
+	 * @see #setPassword(String)
+	 * @see org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.AuditPackage#getRegisteredUser_Password()
+	 * @model
+	 * @generated
+	 */
+	String getPassword();
+
+	/**
+	 * Sets the value of the
+	 * '{@link org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.RegisteredUser#getPassword
+	 * <em>Password</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value the new value of the '<em>Password</em>' attribute.
+	 * @see #getPassword()
+	 * @generated
+	 */
+	void setPassword(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Delegates</b></em>' reference list.
+	 * The list contents are of type
+	 * {@link org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.RegisteredUser}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Delegates</em>' reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Delegates</em>' reference list.
+	 * @see org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.AuditPackage#getRegisteredUser_Delegates()
+	 * @model
+	 * @generated
+	 */
+	EList<RegisteredUser> getDelegates();
+
+} // RegisteredUser
diff --git a/tests/org.eclipse.emf.ecp.view.table.ui.nebula.grid.test/src/org/eclipse/emf/ecp/view/table/ui/nebula/grid/test/model/audit/impl/AdminUserImpl.java b/tests/org.eclipse.emf.ecp.view.table.ui.nebula.grid.test/src/org/eclipse/emf/ecp/view/table/ui/nebula/grid/test/model/audit/impl/AdminUserImpl.java
new file mode 100644
index 0000000..67c70d0
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.view.table.ui.nebula.grid.test/src/org/eclipse/emf/ecp/view/table/ui/nebula/grid/test/model/audit/impl/AdminUserImpl.java
@@ -0,0 +1,181 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
+ */
+package org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.AdminUser;
+import org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.AuditPackage;
+import org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.PrivilegedUser;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Admin User</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.impl.AdminUserImpl#getCreatedBy <em>Created
+ * By</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class AdminUserImpl extends RegisteredUserImpl implements AdminUser {
+	/**
+	 * The cached value of the '{@link #getCreatedBy() <em>Created By</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getCreatedBy()
+	 * @generated
+	 * @ordered
+	 */
+	protected PrivilegedUser createdBy;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected AdminUserImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return AuditPackage.Literals.ADMIN_USER;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public PrivilegedUser getCreatedBy() {
+		if (createdBy != null && createdBy.eIsProxy()) {
+			final InternalEObject oldCreatedBy = (InternalEObject) createdBy;
+			createdBy = (PrivilegedUser) eResolveProxy(oldCreatedBy);
+			if (createdBy != oldCreatedBy) {
+				if (eNotificationRequired()) {
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, AuditPackage.ADMIN_USER__CREATED_BY,
+						oldCreatedBy, createdBy));
+				}
+			}
+		}
+		return createdBy;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public PrivilegedUser basicGetCreatedBy() {
+		return createdBy;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setCreatedBy(PrivilegedUser newCreatedBy) {
+		final PrivilegedUser oldCreatedBy = createdBy;
+		createdBy = newCreatedBy;
+		if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, AuditPackage.ADMIN_USER__CREATED_BY, oldCreatedBy,
+				createdBy));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case AuditPackage.ADMIN_USER__CREATED_BY:
+			if (resolve) {
+				return getCreatedBy();
+			}
+			return basicGetCreatedBy();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case AuditPackage.ADMIN_USER__CREATED_BY:
+			setCreatedBy((PrivilegedUser) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case AuditPackage.ADMIN_USER__CREATED_BY:
+			setCreatedBy((PrivilegedUser) null);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case AuditPackage.ADMIN_USER__CREATED_BY:
+			return createdBy != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+} // AdminUserImpl
diff --git a/tests/org.eclipse.emf.ecp.view.table.ui.nebula.grid.test/src/org/eclipse/emf/ecp/view/table/ui/nebula/grid/test/model/audit/impl/AuditFactoryImpl.java b/tests/org.eclipse.emf.ecp.view.table.ui.nebula.grid.test/src/org/eclipse/emf/ecp/view/table/ui/nebula/grid/test/model/audit/impl/AuditFactoryImpl.java
new file mode 100644
index 0000000..2ee6a17
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.view.table.ui.nebula.grid.test/src/org/eclipse/emf/ecp/view/table/ui/nebula/grid/test/model/audit/impl/AuditFactoryImpl.java
@@ -0,0 +1,203 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
+ */
+package org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+import org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.AdminUser;
+import org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.AuditFactory;
+import org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.AuditPackage;
+import org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.Bot;
+import org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.GuestUser;
+import org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.MemberGroup;
+import org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.Organization;
+import org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.PrivilegedBot;
+import org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.RegisteredUser;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class AuditFactoryImpl extends EFactoryImpl implements AuditFactory {
+	/**
+	 * Creates the default factory implementation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public static AuditFactory init() {
+		try {
+			final AuditFactory theAuditFactory = (AuditFactory) EPackage.Registry.INSTANCE
+				.getEFactory(AuditPackage.eNS_URI);
+			if (theAuditFactory != null) {
+				return theAuditFactory;
+			}
+		} catch (final Exception exception) {
+			EcorePlugin.INSTANCE.log(exception);
+		}
+		return new AuditFactoryImpl();
+	}
+
+	/**
+	 * Creates an instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public AuditFactoryImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EObject create(EClass eClass) {
+		switch (eClass.getClassifierID()) {
+		case AuditPackage.ORGANIZATION:
+			return createOrganization();
+		case AuditPackage.BOT:
+			return createBot();
+		case AuditPackage.GUEST_USER:
+			return createGuestUser();
+		case AuditPackage.REGISTERED_USER:
+			return createRegisteredUser();
+		case AuditPackage.ADMIN_USER:
+			return createAdminUser();
+		case AuditPackage.PRIVILEGED_BOT:
+			return createPrivilegedBot();
+		case AuditPackage.MEMBER_GROUP:
+			return createMemberGroup();
+		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
+	public Organization createOrganization() {
+		final OrganizationImpl organization = new OrganizationImpl();
+		return organization;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Bot createBot() {
+		final BotImpl bot = new BotImpl();
+		return bot;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public GuestUser createGuestUser() {
+		final GuestUserImpl guestUser = new GuestUserImpl();
+		return guestUser;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public RegisteredUser createRegisteredUser() {
+		final RegisteredUserImpl registeredUser = new RegisteredUserImpl();
+		return registeredUser;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public AdminUser createAdminUser() {
+		final AdminUserImpl adminUser = new AdminUserImpl();
+		return adminUser;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public PrivilegedBot createPrivilegedBot() {
+		final PrivilegedBotImpl privilegedBot = new PrivilegedBotImpl();
+		return privilegedBot;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public MemberGroup createMemberGroup() {
+		final MemberGroupImpl memberGroup = new MemberGroupImpl();
+		return memberGroup;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public AuditPackage getAuditPackage() {
+		return (AuditPackage) getEPackage();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @deprecated
+	 * @generated
+	 */
+	@Deprecated
+	public static AuditPackage getPackage() {
+		return AuditPackage.eINSTANCE;
+	}
+
+} // AuditFactoryImpl
diff --git a/tests/org.eclipse.emf.ecp.view.table.ui.nebula.grid.test/src/org/eclipse/emf/ecp/view/table/ui/nebula/grid/test/model/audit/impl/AuditPackageImpl.java b/tests/org.eclipse.emf.ecp.view.table.ui.nebula.grid.test/src/org/eclipse/emf/ecp/view/table/ui/nebula/grid/test/model/audit/impl/AuditPackageImpl.java
new file mode 100644
index 0000000..248768e
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.view.table.ui.nebula.grid.test/src/org/eclipse/emf/ecp/view/table/ui/nebula/grid/test/model/audit/impl/AuditPackageImpl.java
@@ -0,0 +1,646 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
+ */
+package org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.impl;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+import org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.AdminUser;
+import org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.AuditFactory;
+import org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.AuditPackage;
+import org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.Bot;
+import org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.GuestUser;
+import org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.Human;
+import org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.Member;
+import org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.MemberGroup;
+import org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.Organization;
+import org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.PrivilegedBot;
+import org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.PrivilegedUser;
+import org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.RegisteredUser;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Package</b>.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class AuditPackageImpl extends EPackageImpl implements AuditPackage {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EClass organizationEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EClass memberEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EClass botEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EClass humanEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EClass guestUserEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EClass registeredUserEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EClass privilegedUserEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EClass adminUserEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EClass privilegedBotEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EClass memberGroupEClass = 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>
+	 * Note: the correct way to create the package is via the static
+	 * factory method {@link #init init()}, which also performs
+	 * initialization of the package, or returns the registered package,
+	 * if one already exists.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.emf.ecore.EPackage.Registry
+	 * @see org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.AuditPackage#eNS_URI
+	 * @see #init()
+	 * @generated
+	 */
+	private AuditPackageImpl() {
+		super(eNS_URI, AuditFactory.eINSTANCE);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private static boolean isInited = false;
+
+	/**
+	 * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
+	 *
+	 * <p>
+	 * This method is used to initialize {@link AuditPackage#eINSTANCE} when that field is accessed.
+	 * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #eNS_URI
+	 * @see #createPackageContents()
+	 * @see #initializePackageContents()
+	 * @generated
+	 */
+	public static AuditPackage init() {
+		if (isInited) {
+			return (AuditPackage) EPackage.Registry.INSTANCE.getEPackage(AuditPackage.eNS_URI);
+		}
+
+		// Obtain or create and register package
+		final AuditPackageImpl theAuditPackage = (AuditPackageImpl) (EPackage.Registry.INSTANCE
+			.get(eNS_URI) instanceof AuditPackageImpl ? EPackage.Registry.INSTANCE.get(eNS_URI)
+				: new AuditPackageImpl());
+
+		isInited = true;
+
+		// Create package meta-data objects
+		theAuditPackage.createPackageContents();
+
+		// Initialize created meta-data
+		theAuditPackage.initializePackageContents();
+
+		// Mark meta-data to indicate it can't be changed
+		theAuditPackage.freeze();
+
+		// Update the registry and return the package
+		EPackage.Registry.INSTANCE.put(AuditPackage.eNS_URI, theAuditPackage);
+		return theAuditPackage;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EClass getOrganization() {
+		return organizationEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EAttribute getOrganization_Name() {
+		return (EAttribute) organizationEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EReference getOrganization_Members() {
+		return (EReference) organizationEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EReference getOrganization_Groups() {
+		return (EReference) organizationEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EClass getMember() {
+		return memberEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EAttribute getMember_Name() {
+		return (EAttribute) memberEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EAttribute getMember_JoinDate() {
+		return (EAttribute) memberEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EAttribute getMember_IsActive() {
+		return (EAttribute) memberEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EClass getBot() {
+		return botEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EAttribute getBot_ExecutionIntervalSeconds() {
+		return (EAttribute) botEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EClass getHuman() {
+		return humanEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EClass getGuestUser() {
+		return guestUserEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EClass getRegisteredUser() {
+		return registeredUserEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EAttribute getRegisteredUser_Login() {
+		return (EAttribute) registeredUserEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EAttribute getRegisteredUser_Password() {
+		return (EAttribute) registeredUserEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EReference getRegisteredUser_Delegates() {
+		return (EReference) registeredUserEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EClass getPrivilegedUser() {
+		return privilegedUserEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EClass getAdminUser() {
+		return adminUserEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EReference getAdminUser_CreatedBy() {
+		return (EReference) adminUserEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EClass getPrivilegedBot() {
+		return privilegedBotEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EClass getMemberGroup() {
+		return memberGroupEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EAttribute getMemberGroup_Name() {
+		return (EAttribute) memberGroupEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EReference getMemberGroup_Members() {
+		return (EReference) memberGroupEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EReference getMemberGroup_Admins() {
+		return (EReference) memberGroupEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EReference getMemberGroup_Bots() {
+		return (EReference) memberGroupEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public AuditFactory getAuditFactory() {
+		return (AuditFactory) getEFactoryInstance();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private boolean isCreated = false;
+
+	/**
+	 * Creates the meta-model objects for the package. This method is
+	 * guarded to have no affect on any invocation but its first.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public void createPackageContents() {
+		if (isCreated) {
+			return;
+		}
+		isCreated = true;
+
+		// Create classes and their features
+		organizationEClass = createEClass(ORGANIZATION);
+		createEAttribute(organizationEClass, ORGANIZATION__NAME);
+		createEReference(organizationEClass, ORGANIZATION__MEMBERS);
+		createEReference(organizationEClass, ORGANIZATION__GROUPS);
+
+		memberEClass = createEClass(MEMBER);
+		createEAttribute(memberEClass, MEMBER__NAME);
+		createEAttribute(memberEClass, MEMBER__JOIN_DATE);
+		createEAttribute(memberEClass, MEMBER__IS_ACTIVE);
+
+		botEClass = createEClass(BOT);
+		createEAttribute(botEClass, BOT__EXECUTION_INTERVAL_SECONDS);
+
+		humanEClass = createEClass(HUMAN);
+
+		guestUserEClass = createEClass(GUEST_USER);
+
+		registeredUserEClass = createEClass(REGISTERED_USER);
+		createEAttribute(registeredUserEClass, REGISTERED_USER__LOGIN);
+		createEAttribute(registeredUserEClass, REGISTERED_USER__PASSWORD);
+		createEReference(registeredUserEClass, REGISTERED_USER__DELEGATES);
+
+		privilegedUserEClass = createEClass(PRIVILEGED_USER);
+
+		adminUserEClass = createEClass(ADMIN_USER);
+		createEReference(adminUserEClass, ADMIN_USER__CREATED_BY);
+
+		privilegedBotEClass = createEClass(PRIVILEGED_BOT);
+
+		memberGroupEClass = createEClass(MEMBER_GROUP);
+		createEAttribute(memberGroupEClass, MEMBER_GROUP__NAME);
+		createEReference(memberGroupEClass, MEMBER_GROUP__MEMBERS);
+		createEReference(memberGroupEClass, MEMBER_GROUP__ADMINS);
+		createEReference(memberGroupEClass, MEMBER_GROUP__BOTS);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private boolean isInitialized = false;
+
+	/**
+	 * Complete the initialization of the package and its meta-model. This
+	 * method is guarded to have no affect on any invocation but its first.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public void initializePackageContents() {
+		if (isInitialized) {
+			return;
+		}
+		isInitialized = true;
+
+		// Initialize package
+		setName(eNAME);
+		setNsPrefix(eNS_PREFIX);
+		setNsURI(eNS_URI);
+
+		// Create type parameters
+
+		// Set bounds for type parameters
+
+		// Add supertypes to classes
+		botEClass.getESuperTypes().add(getMember());
+		humanEClass.getESuperTypes().add(getMember());
+		guestUserEClass.getESuperTypes().add(getHuman());
+		registeredUserEClass.getESuperTypes().add(getHuman());
+		adminUserEClass.getESuperTypes().add(getRegisteredUser());
+		adminUserEClass.getESuperTypes().add(getPrivilegedUser());
+		privilegedBotEClass.getESuperTypes().add(getBot());
+		privilegedBotEClass.getESuperTypes().add(getPrivilegedUser());
+
+		// Initialize classes, features, and operations; add parameters
+		initEClass(organizationEClass, Organization.class, "Organization", !IS_ABSTRACT, !IS_INTERFACE, //$NON-NLS-1$
+			IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getOrganization_Name(), ecorePackage.getEString(), "name", null, 0, 1, Organization.class, //$NON-NLS-1$
+			!IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getOrganization_Members(), getMember(), null, "members", null, 0, -1, Organization.class, //$NON-NLS-1$
+			!IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE,
+			!IS_DERIVED, IS_ORDERED);
+		initEReference(getOrganization_Groups(), getMemberGroup(), null, "groups", null, 0, -1, Organization.class, //$NON-NLS-1$
+			!IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE,
+			!IS_DERIVED, IS_ORDERED);
+
+		initEClass(memberEClass, Member.class, "Member", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+		initEAttribute(getMember_Name(), ecorePackage.getEString(), "name", null, 0, 1, Member.class, !IS_TRANSIENT, //$NON-NLS-1$
+			!IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getMember_JoinDate(), ecorePackage.getEDate(), "joinDate", null, 0, 1, Member.class, //$NON-NLS-1$
+			!IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getMember_IsActive(), ecorePackage.getEBoolean(), "isActive", null, 0, 1, Member.class, //$NON-NLS-1$
+			!IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(botEClass, Bot.class, "Bot", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+		initEAttribute(getBot_ExecutionIntervalSeconds(), ecorePackage.getEInt(), "executionIntervalSeconds", null, 0, //$NON-NLS-1$
+			1, Bot.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED,
+			IS_ORDERED);
+
+		initEClass(humanEClass, Human.class, "Human", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+		initEClass(guestUserEClass, GuestUser.class, "GuestUser", !IS_ABSTRACT, !IS_INTERFACE, //$NON-NLS-1$
+			IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(registeredUserEClass, RegisteredUser.class, "RegisteredUser", !IS_ABSTRACT, !IS_INTERFACE, //$NON-NLS-1$
+			IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getRegisteredUser_Login(), ecorePackage.getEString(), "login", null, 0, 1, RegisteredUser.class, //$NON-NLS-1$
+			!IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getRegisteredUser_Password(), ecorePackage.getEString(), "password", null, 0, 1, //$NON-NLS-1$
+			RegisteredUser.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+			!IS_DERIVED, IS_ORDERED);
+		initEReference(getRegisteredUser_Delegates(), getRegisteredUser(), null, "delegates", null, 0, -1, //$NON-NLS-1$
+			RegisteredUser.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES,
+			!IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(privilegedUserEClass, PrivilegedUser.class, "PrivilegedUser", IS_ABSTRACT, IS_INTERFACE, //$NON-NLS-1$
+			IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(adminUserEClass, AdminUser.class, "AdminUser", !IS_ABSTRACT, !IS_INTERFACE, //$NON-NLS-1$
+			IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getAdminUser_CreatedBy(), getPrivilegedUser(), null, "createdBy", null, 0, 1, //$NON-NLS-1$
+			AdminUser.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES,
+			!IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(privilegedBotEClass, PrivilegedBot.class, "PrivilegedBot", !IS_ABSTRACT, !IS_INTERFACE, //$NON-NLS-1$
+			IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(memberGroupEClass, MemberGroup.class, "MemberGroup", !IS_ABSTRACT, !IS_INTERFACE, //$NON-NLS-1$
+			IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getMemberGroup_Name(), ecorePackage.getEString(), "name", null, 0, 1, MemberGroup.class, //$NON-NLS-1$
+			!IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getMemberGroup_Members(), getHuman(), null, "members", null, 0, -1, MemberGroup.class, //$NON-NLS-1$
+			!IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE,
+			!IS_DERIVED, IS_ORDERED);
+		initEReference(getMemberGroup_Admins(), getAdminUser(), null, "admins", null, 0, -1, MemberGroup.class, //$NON-NLS-1$
+			!IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE,
+			!IS_DERIVED, IS_ORDERED);
+		initEReference(getMemberGroup_Bots(), getBot(), null, "bots", null, 0, -1, MemberGroup.class, //$NON-NLS-1$
+			!IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE,
+			!IS_DERIVED, IS_ORDERED);
+
+		// Create resource
+		createResource(eNS_URI);
+	}
+
+} // AuditPackageImpl
diff --git a/tests/org.eclipse.emf.ecp.view.table.ui.nebula.grid.test/src/org/eclipse/emf/ecp/view/table/ui/nebula/grid/test/model/audit/impl/BotImpl.java b/tests/org.eclipse.emf.ecp.view.table.ui.nebula.grid.test/src/org/eclipse/emf/ecp/view/table/ui/nebula/grid/test/model/audit/impl/BotImpl.java
new file mode 100644
index 0000000..89af550
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.view.table.ui.nebula.grid.test/src/org/eclipse/emf/ecp/view/table/ui/nebula/grid/test/model/audit/impl/BotImpl.java
@@ -0,0 +1,374 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
+ */
+package org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.impl;
+
+import java.util.Date;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+import org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.AuditPackage;
+import org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.Bot;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Bot</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.impl.BotImpl#getName <em>Name</em>}</li>
+ * <li>{@link org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.impl.BotImpl#getJoinDate <em>Join
+ * Date</em>}</li>
+ * <li>{@link org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.impl.BotImpl#isIsActive <em>Is
+ * Active</em>}</li>
+ * <li>{@link org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.impl.BotImpl#getExecutionIntervalSeconds
+ * <em>Execution Interval Seconds</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class BotImpl extends MinimalEObjectImpl.Container implements Bot {
+	/**
+	 * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getName()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String NAME_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getName()
+	 * @generated
+	 * @ordered
+	 */
+	protected String name = NAME_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getJoinDate() <em>Join Date</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getJoinDate()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final Date JOIN_DATE_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getJoinDate() <em>Join Date</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getJoinDate()
+	 * @generated
+	 * @ordered
+	 */
+	protected Date joinDate = JOIN_DATE_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #isIsActive() <em>Is Active</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #isIsActive()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean IS_ACTIVE_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isIsActive() <em>Is Active</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #isIsActive()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean isActive = IS_ACTIVE_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getExecutionIntervalSeconds() <em>Execution Interval Seconds</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getExecutionIntervalSeconds()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int EXECUTION_INTERVAL_SECONDS_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getExecutionIntervalSeconds() <em>Execution Interval Seconds</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getExecutionIntervalSeconds()
+	 * @generated
+	 * @ordered
+	 */
+	protected int executionIntervalSeconds = EXECUTION_INTERVAL_SECONDS_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected BotImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return AuditPackage.Literals.BOT;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getName() {
+		return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setName(String newName) {
+		final String oldName = name;
+		name = newName;
+		if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, AuditPackage.BOT__NAME, oldName, name));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Date getJoinDate() {
+		return joinDate;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setJoinDate(Date newJoinDate) {
+		final Date oldJoinDate = joinDate;
+		joinDate = newJoinDate;
+		if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, AuditPackage.BOT__JOIN_DATE, oldJoinDate, joinDate));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public boolean isIsActive() {
+		return isActive;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setIsActive(boolean newIsActive) {
+		final boolean oldIsActive = isActive;
+		isActive = newIsActive;
+		if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, AuditPackage.BOT__IS_ACTIVE, oldIsActive, isActive));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public int getExecutionIntervalSeconds() {
+		return executionIntervalSeconds;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setExecutionIntervalSeconds(int newExecutionIntervalSeconds) {
+		final int oldExecutionIntervalSeconds = executionIntervalSeconds;
+		executionIntervalSeconds = newExecutionIntervalSeconds;
+		if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, AuditPackage.BOT__EXECUTION_INTERVAL_SECONDS,
+				oldExecutionIntervalSeconds, executionIntervalSeconds));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case AuditPackage.BOT__NAME:
+			return getName();
+		case AuditPackage.BOT__JOIN_DATE:
+			return getJoinDate();
+		case AuditPackage.BOT__IS_ACTIVE:
+			return isIsActive();
+		case AuditPackage.BOT__EXECUTION_INTERVAL_SECONDS:
+			return getExecutionIntervalSeconds();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case AuditPackage.BOT__NAME:
+			setName((String) newValue);
+			return;
+		case AuditPackage.BOT__JOIN_DATE:
+			setJoinDate((Date) newValue);
+			return;
+		case AuditPackage.BOT__IS_ACTIVE:
+			setIsActive((Boolean) newValue);
+			return;
+		case AuditPackage.BOT__EXECUTION_INTERVAL_SECONDS:
+			setExecutionIntervalSeconds((Integer) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case AuditPackage.BOT__NAME:
+			setName(NAME_EDEFAULT);
+			return;
+		case AuditPackage.BOT__JOIN_DATE:
+			setJoinDate(JOIN_DATE_EDEFAULT);
+			return;
+		case AuditPackage.BOT__IS_ACTIVE:
+			setIsActive(IS_ACTIVE_EDEFAULT);
+			return;
+		case AuditPackage.BOT__EXECUTION_INTERVAL_SECONDS:
+			setExecutionIntervalSeconds(EXECUTION_INTERVAL_SECONDS_EDEFAULT);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case AuditPackage.BOT__NAME:
+			return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+		case AuditPackage.BOT__JOIN_DATE:
+			return JOIN_DATE_EDEFAULT == null ? joinDate != null : !JOIN_DATE_EDEFAULT.equals(joinDate);
+		case AuditPackage.BOT__IS_ACTIVE:
+			return isActive != IS_ACTIVE_EDEFAULT;
+		case AuditPackage.BOT__EXECUTION_INTERVAL_SECONDS:
+			return executionIntervalSeconds != EXECUTION_INTERVAL_SECONDS_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) {
+			return super.toString();
+		}
+
+		final StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (name: "); //$NON-NLS-1$
+		result.append(name);
+		result.append(", joinDate: "); //$NON-NLS-1$
+		result.append(joinDate);
+		result.append(", isActive: "); //$NON-NLS-1$
+		result.append(isActive);
+		result.append(", executionIntervalSeconds: "); //$NON-NLS-1$
+		result.append(executionIntervalSeconds);
+		result.append(')');
+		return result.toString();
+	}
+
+} // BotImpl
diff --git a/tests/org.eclipse.emf.ecp.view.table.ui.nebula.grid.test/src/org/eclipse/emf/ecp/view/table/ui/nebula/grid/test/model/audit/impl/GuestUserImpl.java b/tests/org.eclipse.emf.ecp.view.table.ui.nebula.grid.test/src/org/eclipse/emf/ecp/view/table/ui/nebula/grid/test/model/audit/impl/GuestUserImpl.java
new file mode 100644
index 0000000..1948379
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.view.table.ui.nebula.grid.test/src/org/eclipse/emf/ecp/view/table/ui/nebula/grid/test/model/audit/impl/GuestUserImpl.java
@@ -0,0 +1,47 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
+ */
+package org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.AuditPackage;
+import org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.GuestUser;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Guest User</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class GuestUserImpl extends HumanImpl implements GuestUser {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected GuestUserImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return AuditPackage.Literals.GUEST_USER;
+	}
+
+} // GuestUserImpl
diff --git a/tests/org.eclipse.emf.ecp.view.table.ui.nebula.grid.test/src/org/eclipse/emf/ecp/view/table/ui/nebula/grid/test/model/audit/impl/HumanImpl.java b/tests/org.eclipse.emf.ecp.view.table.ui.nebula.grid.test/src/org/eclipse/emf/ecp/view/table/ui/nebula/grid/test/model/audit/impl/HumanImpl.java
new file mode 100644
index 0000000..819fd94
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.view.table.ui.nebula.grid.test/src/org/eclipse/emf/ecp/view/table/ui/nebula/grid/test/model/audit/impl/HumanImpl.java
@@ -0,0 +1,313 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
+ */
+package org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.impl;
+
+import java.util.Date;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+import org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.AuditPackage;
+import org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.Human;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Human</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.impl.HumanImpl#getName <em>Name</em>}</li>
+ * <li>{@link org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.impl.HumanImpl#getJoinDate <em>Join
+ * Date</em>}</li>
+ * <li>{@link org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.impl.HumanImpl#isIsActive <em>Is
+ * Active</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public abstract class HumanImpl extends MinimalEObjectImpl.Container implements Human {
+	/**
+	 * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getName()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String NAME_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getName()
+	 * @generated
+	 * @ordered
+	 */
+	protected String name = NAME_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getJoinDate() <em>Join Date</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getJoinDate()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final Date JOIN_DATE_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getJoinDate() <em>Join Date</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getJoinDate()
+	 * @generated
+	 * @ordered
+	 */
+	protected Date joinDate = JOIN_DATE_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #isIsActive() <em>Is Active</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #isIsActive()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean IS_ACTIVE_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isIsActive() <em>Is Active</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #isIsActive()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean isActive = IS_ACTIVE_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected HumanImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return AuditPackage.Literals.HUMAN;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getName() {
+		return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setName(String newName) {
+		final String oldName = name;
+		name = newName;
+		if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, AuditPackage.HUMAN__NAME, oldName, name));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Date getJoinDate() {
+		return joinDate;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setJoinDate(Date newJoinDate) {
+		final Date oldJoinDate = joinDate;
+		joinDate = newJoinDate;
+		if (eNotificationRequired()) {
+			eNotify(
+				new ENotificationImpl(this, Notification.SET, AuditPackage.HUMAN__JOIN_DATE, oldJoinDate, joinDate));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public boolean isIsActive() {
+		return isActive;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setIsActive(boolean newIsActive) {
+		final boolean oldIsActive = isActive;
+		isActive = newIsActive;
+		if (eNotificationRequired()) {
+			eNotify(
+				new ENotificationImpl(this, Notification.SET, AuditPackage.HUMAN__IS_ACTIVE, oldIsActive, isActive));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case AuditPackage.HUMAN__NAME:
+			return getName();
+		case AuditPackage.HUMAN__JOIN_DATE:
+			return getJoinDate();
+		case AuditPackage.HUMAN__IS_ACTIVE:
+			return isIsActive();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case AuditPackage.HUMAN__NAME:
+			setName((String) newValue);
+			return;
+		case AuditPackage.HUMAN__JOIN_DATE:
+			setJoinDate((Date) newValue);
+			return;
+		case AuditPackage.HUMAN__IS_ACTIVE:
+			setIsActive((Boolean) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case AuditPackage.HUMAN__NAME:
+			setName(NAME_EDEFAULT);
+			return;
+		case AuditPackage.HUMAN__JOIN_DATE:
+			setJoinDate(JOIN_DATE_EDEFAULT);
+			return;
+		case AuditPackage.HUMAN__IS_ACTIVE:
+			setIsActive(IS_ACTIVE_EDEFAULT);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case AuditPackage.HUMAN__NAME:
+			return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+		case AuditPackage.HUMAN__JOIN_DATE:
+			return JOIN_DATE_EDEFAULT == null ? joinDate != null : !JOIN_DATE_EDEFAULT.equals(joinDate);
+		case AuditPackage.HUMAN__IS_ACTIVE:
+			return isActive != IS_ACTIVE_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) {
+			return super.toString();
+		}
+
+		final StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (name: "); //$NON-NLS-1$
+		result.append(name);
+		result.append(", joinDate: "); //$NON-NLS-1$
+		result.append(joinDate);
+		result.append(", isActive: "); //$NON-NLS-1$
+		result.append(isActive);
+		result.append(')');
+		return result.toString();
+	}
+
+} // HumanImpl
diff --git a/tests/org.eclipse.emf.ecp.view.table.ui.nebula.grid.test/src/org/eclipse/emf/ecp/view/table/ui/nebula/grid/test/model/audit/impl/MemberGroupImpl.java b/tests/org.eclipse.emf.ecp.view.table.ui.nebula.grid.test/src/org/eclipse/emf/ecp/view/table/ui/nebula/grid/test/model/audit/impl/MemberGroupImpl.java
new file mode 100644
index 0000000..e0e4a96
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.view.table.ui.nebula.grid.test/src/org/eclipse/emf/ecp/view/table/ui/nebula/grid/test/model/audit/impl/MemberGroupImpl.java
@@ -0,0 +1,327 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
+ */
+package org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.EObjectResolvingEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+import org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.AdminUser;
+import org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.AuditPackage;
+import org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.Bot;
+import org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.Human;
+import org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.MemberGroup;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Member Group</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.impl.MemberGroupImpl#getName
+ * <em>Name</em>}</li>
+ * <li>{@link org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.impl.MemberGroupImpl#getMembers
+ * <em>Members</em>}</li>
+ * <li>{@link org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.impl.MemberGroupImpl#getAdmins
+ * <em>Admins</em>}</li>
+ * <li>{@link org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.impl.MemberGroupImpl#getBots
+ * <em>Bots</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class MemberGroupImpl extends MinimalEObjectImpl.Container implements MemberGroup {
+	/**
+	 * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getName()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String NAME_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getName()
+	 * @generated
+	 * @ordered
+	 */
+	protected String name = NAME_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getMembers() <em>Members</em>}' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getMembers()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Human> members;
+
+	/**
+	 * The cached value of the '{@link #getAdmins() <em>Admins</em>}' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getAdmins()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<AdminUser> admins;
+
+	/**
+	 * The cached value of the '{@link #getBots() <em>Bots</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getBots()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Bot> bots;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected MemberGroupImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return AuditPackage.Literals.MEMBER_GROUP;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getName() {
+		return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setName(String newName) {
+		final String oldName = name;
+		name = newName;
+		if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, AuditPackage.MEMBER_GROUP__NAME, oldName, name));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EList<Human> getMembers() {
+		if (members == null) {
+			members = new EObjectResolvingEList<Human>(Human.class, this, AuditPackage.MEMBER_GROUP__MEMBERS);
+		}
+		return members;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EList<AdminUser> getAdmins() {
+		if (admins == null) {
+			admins = new EObjectResolvingEList<AdminUser>(AdminUser.class, this, AuditPackage.MEMBER_GROUP__ADMINS);
+		}
+		return admins;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EList<Bot> getBots() {
+		if (bots == null) {
+			bots = new EObjectContainmentEList<Bot>(Bot.class, this, AuditPackage.MEMBER_GROUP__BOTS);
+		}
+		return bots;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+		case AuditPackage.MEMBER_GROUP__BOTS:
+			return ((InternalEList<?>) getBots()).basicRemove(otherEnd, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case AuditPackage.MEMBER_GROUP__NAME:
+			return getName();
+		case AuditPackage.MEMBER_GROUP__MEMBERS:
+			return getMembers();
+		case AuditPackage.MEMBER_GROUP__ADMINS:
+			return getAdmins();
+		case AuditPackage.MEMBER_GROUP__BOTS:
+			return getBots();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case AuditPackage.MEMBER_GROUP__NAME:
+			setName((String) newValue);
+			return;
+		case AuditPackage.MEMBER_GROUP__MEMBERS:
+			getMembers().clear();
+			getMembers().addAll((Collection<? extends Human>) newValue);
+			return;
+		case AuditPackage.MEMBER_GROUP__ADMINS:
+			getAdmins().clear();
+			getAdmins().addAll((Collection<? extends AdminUser>) newValue);
+			return;
+		case AuditPackage.MEMBER_GROUP__BOTS:
+			getBots().clear();
+			getBots().addAll((Collection<? extends Bot>) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case AuditPackage.MEMBER_GROUP__NAME:
+			setName(NAME_EDEFAULT);
+			return;
+		case AuditPackage.MEMBER_GROUP__MEMBERS:
+			getMembers().clear();
+			return;
+		case AuditPackage.MEMBER_GROUP__ADMINS:
+			getAdmins().clear();
+			return;
+		case AuditPackage.MEMBER_GROUP__BOTS:
+			getBots().clear();
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case AuditPackage.MEMBER_GROUP__NAME:
+			return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+		case AuditPackage.MEMBER_GROUP__MEMBERS:
+			return members != null && !members.isEmpty();
+		case AuditPackage.MEMBER_GROUP__ADMINS:
+			return admins != null && !admins.isEmpty();
+		case AuditPackage.MEMBER_GROUP__BOTS:
+			return bots != null && !bots.isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) {
+			return super.toString();
+		}
+
+		final StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (name: "); //$NON-NLS-1$
+		result.append(name);
+		result.append(')');
+		return result.toString();
+	}
+
+} // MemberGroupImpl
diff --git a/tests/org.eclipse.emf.ecp.view.table.ui.nebula.grid.test/src/org/eclipse/emf/ecp/view/table/ui/nebula/grid/test/model/audit/impl/OrganizationImpl.java b/tests/org.eclipse.emf.ecp.view.table.ui.nebula.grid.test/src/org/eclipse/emf/ecp/view/table/ui/nebula/grid/test/model/audit/impl/OrganizationImpl.java
new file mode 100644
index 0000000..eecf099
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.view.table.ui.nebula.grid.test/src/org/eclipse/emf/ecp/view/table/ui/nebula/grid/test/model/audit/impl/OrganizationImpl.java
@@ -0,0 +1,290 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
+ */
+package org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+import org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.AuditPackage;
+import org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.Member;
+import org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.MemberGroup;
+import org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.Organization;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Organization</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.impl.OrganizationImpl#getName
+ * <em>Name</em>}</li>
+ * <li>{@link org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.impl.OrganizationImpl#getMembers
+ * <em>Members</em>}</li>
+ * <li>{@link org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.impl.OrganizationImpl#getGroups
+ * <em>Groups</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class OrganizationImpl extends MinimalEObjectImpl.Container implements Organization {
+	/**
+	 * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getName()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String NAME_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getName()
+	 * @generated
+	 * @ordered
+	 */
+	protected String name = NAME_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getMembers() <em>Members</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getMembers()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Member> members;
+
+	/**
+	 * The cached value of the '{@link #getGroups() <em>Groups</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getGroups()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<MemberGroup> groups;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected OrganizationImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return AuditPackage.Literals.ORGANIZATION;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getName() {
+		return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setName(String newName) {
+		final String oldName = name;
+		name = newName;
+		if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, AuditPackage.ORGANIZATION__NAME, oldName, name));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EList<Member> getMembers() {
+		if (members == null) {
+			members = new EObjectContainmentEList<Member>(Member.class, this, AuditPackage.ORGANIZATION__MEMBERS);
+		}
+		return members;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EList<MemberGroup> getGroups() {
+		if (groups == null) {
+			groups = new EObjectContainmentEList<MemberGroup>(MemberGroup.class, this,
+				AuditPackage.ORGANIZATION__GROUPS);
+		}
+		return groups;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+		case AuditPackage.ORGANIZATION__MEMBERS:
+			return ((InternalEList<?>) getMembers()).basicRemove(otherEnd, msgs);
+		case AuditPackage.ORGANIZATION__GROUPS:
+			return ((InternalEList<?>) getGroups()).basicRemove(otherEnd, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case AuditPackage.ORGANIZATION__NAME:
+			return getName();
+		case AuditPackage.ORGANIZATION__MEMBERS:
+			return getMembers();
+		case AuditPackage.ORGANIZATION__GROUPS:
+			return getGroups();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case AuditPackage.ORGANIZATION__NAME:
+			setName((String) newValue);
+			return;
+		case AuditPackage.ORGANIZATION__MEMBERS:
+			getMembers().clear();
+			getMembers().addAll((Collection<? extends Member>) newValue);
+			return;
+		case AuditPackage.ORGANIZATION__GROUPS:
+			getGroups().clear();
+			getGroups().addAll((Collection<? extends MemberGroup>) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case AuditPackage.ORGANIZATION__NAME:
+			setName(NAME_EDEFAULT);
+			return;
+		case AuditPackage.ORGANIZATION__MEMBERS:
+			getMembers().clear();
+			return;
+		case AuditPackage.ORGANIZATION__GROUPS:
+			getGroups().clear();
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case AuditPackage.ORGANIZATION__NAME:
+			return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+		case AuditPackage.ORGANIZATION__MEMBERS:
+			return members != null && !members.isEmpty();
+		case AuditPackage.ORGANIZATION__GROUPS:
+			return groups != null && !groups.isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) {
+			return super.toString();
+		}
+
+		final StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (name: "); //$NON-NLS-1$
+		result.append(name);
+		result.append(')');
+		return result.toString();
+	}
+
+} // OrganizationImpl
diff --git a/tests/org.eclipse.emf.ecp.view.table.ui.nebula.grid.test/src/org/eclipse/emf/ecp/view/table/ui/nebula/grid/test/model/audit/impl/PrivilegedBotImpl.java b/tests/org.eclipse.emf.ecp.view.table.ui.nebula.grid.test/src/org/eclipse/emf/ecp/view/table/ui/nebula/grid/test/model/audit/impl/PrivilegedBotImpl.java
new file mode 100644
index 0000000..d11be11
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.view.table.ui.nebula.grid.test/src/org/eclipse/emf/ecp/view/table/ui/nebula/grid/test/model/audit/impl/PrivilegedBotImpl.java
@@ -0,0 +1,47 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
+ */
+package org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.AuditPackage;
+import org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.PrivilegedBot;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Privileged Bot</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class PrivilegedBotImpl extends BotImpl implements PrivilegedBot {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected PrivilegedBotImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return AuditPackage.Literals.PRIVILEGED_BOT;
+	}
+
+} // PrivilegedBotImpl
diff --git a/tests/org.eclipse.emf.ecp.view.table.ui.nebula.grid.test/src/org/eclipse/emf/ecp/view/table/ui/nebula/grid/test/model/audit/impl/RegisteredUserImpl.java b/tests/org.eclipse.emf.ecp.view.table.ui.nebula.grid.test/src/org/eclipse/emf/ecp/view/table/ui/nebula/grid/test/model/audit/impl/RegisteredUserImpl.java
new file mode 100644
index 0000000..682643d
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.view.table.ui.nebula.grid.test/src/org/eclipse/emf/ecp/view/table/ui/nebula/grid/test/model/audit/impl/RegisteredUserImpl.java
@@ -0,0 +1,293 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
+ */
+package org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.util.EObjectResolvingEList;
+import org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.AuditPackage;
+import org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.RegisteredUser;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Registered User</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.impl.RegisteredUserImpl#getLogin
+ * <em>Login</em>}</li>
+ * <li>{@link org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.impl.RegisteredUserImpl#getPassword
+ * <em>Password</em>}</li>
+ * <li>{@link org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.impl.RegisteredUserImpl#getDelegates
+ * <em>Delegates</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class RegisteredUserImpl extends HumanImpl implements RegisteredUser {
+	/**
+	 * The default value of the '{@link #getLogin() <em>Login</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getLogin()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String LOGIN_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getLogin() <em>Login</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getLogin()
+	 * @generated
+	 * @ordered
+	 */
+	protected String login = LOGIN_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getPassword() <em>Password</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getPassword()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String PASSWORD_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getPassword() <em>Password</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getPassword()
+	 * @generated
+	 * @ordered
+	 */
+	protected String password = PASSWORD_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getDelegates() <em>Delegates</em>}' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getDelegates()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<RegisteredUser> delegates;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected RegisteredUserImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return AuditPackage.Literals.REGISTERED_USER;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getLogin() {
+		return login;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setLogin(String newLogin) {
+		final String oldLogin = login;
+		login = newLogin;
+		if (eNotificationRequired()) {
+			eNotify(
+				new ENotificationImpl(this, Notification.SET, AuditPackage.REGISTERED_USER__LOGIN, oldLogin, login));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getPassword() {
+		return password;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setPassword(String newPassword) {
+		final String oldPassword = password;
+		password = newPassword;
+		if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, AuditPackage.REGISTERED_USER__PASSWORD, oldPassword,
+				password));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EList<RegisteredUser> getDelegates() {
+		if (delegates == null) {
+			delegates = new EObjectResolvingEList<RegisteredUser>(RegisteredUser.class, this,
+				AuditPackage.REGISTERED_USER__DELEGATES);
+		}
+		return delegates;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case AuditPackage.REGISTERED_USER__LOGIN:
+			return getLogin();
+		case AuditPackage.REGISTERED_USER__PASSWORD:
+			return getPassword();
+		case AuditPackage.REGISTERED_USER__DELEGATES:
+			return getDelegates();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case AuditPackage.REGISTERED_USER__LOGIN:
+			setLogin((String) newValue);
+			return;
+		case AuditPackage.REGISTERED_USER__PASSWORD:
+			setPassword((String) newValue);
+			return;
+		case AuditPackage.REGISTERED_USER__DELEGATES:
+			getDelegates().clear();
+			getDelegates().addAll((Collection<? extends RegisteredUser>) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case AuditPackage.REGISTERED_USER__LOGIN:
+			setLogin(LOGIN_EDEFAULT);
+			return;
+		case AuditPackage.REGISTERED_USER__PASSWORD:
+			setPassword(PASSWORD_EDEFAULT);
+			return;
+		case AuditPackage.REGISTERED_USER__DELEGATES:
+			getDelegates().clear();
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case AuditPackage.REGISTERED_USER__LOGIN:
+			return LOGIN_EDEFAULT == null ? login != null : !LOGIN_EDEFAULT.equals(login);
+		case AuditPackage.REGISTERED_USER__PASSWORD:
+			return PASSWORD_EDEFAULT == null ? password != null : !PASSWORD_EDEFAULT.equals(password);
+		case AuditPackage.REGISTERED_USER__DELEGATES:
+			return delegates != null && !delegates.isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) {
+			return super.toString();
+		}
+
+		final StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (login: "); //$NON-NLS-1$
+		result.append(login);
+		result.append(", password: "); //$NON-NLS-1$
+		result.append(password);
+		result.append(')');
+		return result.toString();
+	}
+
+} // RegisteredUserImpl
diff --git a/tests/org.eclipse.emf.ecp.view.table.ui.nebula.grid.test/src/org/eclipse/emf/ecp/view/table/ui/nebula/grid/test/model/audit/util/AuditAdapterFactory.java b/tests/org.eclipse.emf.ecp.view.table.ui.nebula.grid.test/src/org/eclipse/emf/ecp/view/table/ui/nebula/grid/test/model/audit/util/AuditAdapterFactory.java
new file mode 100644
index 0000000..450d5c9
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.view.table.ui.nebula.grid.test/src/org/eclipse/emf/ecp/view/table/ui/nebula/grid/test/model/audit/util/AuditAdapterFactory.java
@@ -0,0 +1,334 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
+ */
+package org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.util;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notifier;
+import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.AdminUser;
+import org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.AuditPackage;
+import org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.Bot;
+import org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.GuestUser;
+import org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.Human;
+import org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.Member;
+import org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.MemberGroup;
+import org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.Organization;
+import org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.PrivilegedBot;
+import org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.PrivilegedUser;
+import org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.RegisteredUser;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Adapter Factory</b> for the model.
+ * It provides an adapter <code>createXXX</code> method for each class of the model.
+ * <!-- end-user-doc -->
+ *
+ * @see org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.AuditPackage
+ * @generated
+ */
+public class AuditAdapterFactory extends AdapterFactoryImpl {
+	/**
+	 * The cached model package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected static AuditPackage modelPackage;
+
+	/**
+	 * Creates an instance of the adapter factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public AuditAdapterFactory() {
+		if (modelPackage == null) {
+			modelPackage = AuditPackage.eINSTANCE;
+		}
+	}
+
+	/**
+	 * Returns whether this factory is applicable for the type of the object.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns <code>true</code> if the object is either the model's package or is an instance
+	 * object of the model.
+	 * <!-- end-user-doc -->
+	 *
+	 * @return whether this factory is applicable for the type of the object.
+	 * @generated
+	 */
+	@Override
+	public boolean isFactoryForType(Object object) {
+		if (object == modelPackage) {
+			return true;
+		}
+		if (object instanceof EObject) {
+			return ((EObject) object).eClass().getEPackage() == modelPackage;
+		}
+		return false;
+	}
+
+	/**
+	 * The switch that delegates to the <code>createXXX</code> methods.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected AuditSwitch<Adapter> modelSwitch = new AuditSwitch<Adapter>() {
+		@Override
+		public Adapter caseOrganization(Organization object) {
+			return createOrganizationAdapter();
+		}
+
+		@Override
+		public Adapter caseMember(Member object) {
+			return createMemberAdapter();
+		}
+
+		@Override
+		public Adapter caseBot(Bot object) {
+			return createBotAdapter();
+		}
+
+		@Override
+		public Adapter caseHuman(Human object) {
+			return createHumanAdapter();
+		}
+
+		@Override
+		public Adapter caseGuestUser(GuestUser object) {
+			return createGuestUserAdapter();
+		}
+
+		@Override
+		public Adapter caseRegisteredUser(RegisteredUser object) {
+			return createRegisteredUserAdapter();
+		}
+
+		@Override
+		public Adapter casePrivilegedUser(PrivilegedUser object) {
+			return createPrivilegedUserAdapter();
+		}
+
+		@Override
+		public Adapter caseAdminUser(AdminUser object) {
+			return createAdminUserAdapter();
+		}
+
+		@Override
+		public Adapter casePrivilegedBot(PrivilegedBot object) {
+			return createPrivilegedBotAdapter();
+		}
+
+		@Override
+		public Adapter caseMemberGroup(MemberGroup object) {
+			return createMemberGroupAdapter();
+		}
+
+		@Override
+		public Adapter defaultCase(EObject object) {
+			return createEObjectAdapter();
+		}
+	};
+
+	/**
+	 * Creates an adapter for the <code>target</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param target the object to adapt.
+	 * @return the adapter for the <code>target</code>.
+	 * @generated
+	 */
+	@Override
+	public Adapter createAdapter(Notifier target) {
+		return modelSwitch.doSwitch((EObject) target);
+	}
+
+	/**
+	 * Creates a new adapter for an object of class
+	 * '{@link org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.Organization <em>Organization</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.emf.ecp.view.table.ui.nebula.grid.test.model.audit.Organization
+	 * @generated
+	 */
+	public Adapter createOrganizationAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class
+	 * '{@link org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.Member <em>Member</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.emf.ecp.view.table.ui.nebula.grid.test.model.audit.Member
+	 * @generated
+	 */
+	public Adapter createMemberAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class
+	 * '{@link org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.Bot <em>Bot</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.emf.ecp.view.table.ui.nebula.grid.test.model.audit.Bot
+	 * @generated
+	 */
+	public Adapter createBotAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class
+	 * '{@link org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.Human <em>Human</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.emf.ecp.view.table.ui.nebula.grid.test.model.audit.Human
+	 * @generated
+	 */
+	public Adapter createHumanAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class
+	 * '{@link org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.GuestUser <em>Guest User</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.emf.ecp.view.table.ui.nebula.grid.test.model.audit.GuestUser
+	 * @generated
+	 */
+	public Adapter createGuestUserAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class
+	 * '{@link org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.RegisteredUser <em>Registered User</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.emf.ecp.view.table.ui.nebula.grid.test.model.audit.RegisteredUser
+	 * @generated
+	 */
+	public Adapter createRegisteredUserAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class
+	 * '{@link org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.PrivilegedUser <em>Privileged User</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.emf.ecp.view.table.ui.nebula.grid.test.model.audit.PrivilegedUser
+	 * @generated
+	 */
+	public Adapter createPrivilegedUserAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class
+	 * '{@link org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.AdminUser <em>Admin User</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.emf.ecp.view.table.ui.nebula.grid.test.model.audit.AdminUser
+	 * @generated
+	 */
+	public Adapter createAdminUserAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class
+	 * '{@link org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.PrivilegedBot <em>Privileged Bot</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.emf.ecp.view.table.ui.nebula.grid.test.model.audit.PrivilegedBot
+	 * @generated
+	 */
+	public Adapter createPrivilegedBotAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class
+	 * '{@link org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.MemberGroup <em>Member Group</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.emf.ecp.view.table.ui.nebula.grid.test.model.audit.MemberGroup
+	 * @generated
+	 */
+	public Adapter createMemberGroupAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for the default case.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null.
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the new adapter.
+	 * @generated
+	 */
+	public Adapter createEObjectAdapter() {
+		return null;
+	}
+
+} // AuditAdapterFactory
diff --git a/tests/org.eclipse.emf.ecp.view.table.ui.nebula.grid.test/src/org/eclipse/emf/ecp/view/table/ui/nebula/grid/test/model/audit/util/AuditSwitch.java b/tests/org.eclipse.emf.ecp.view.table.ui.nebula.grid.test/src/org/eclipse/emf/ecp/view/table/ui/nebula/grid/test/model/audit/util/AuditSwitch.java
new file mode 100644
index 0000000..5a285c8
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.view.table.ui.nebula.grid.test/src/org/eclipse/emf/ecp/view/table/ui/nebula/grid/test/model/audit/util/AuditSwitch.java
@@ -0,0 +1,393 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
+ */
+package org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.util;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.util.Switch;
+import org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.AdminUser;
+import org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.AuditPackage;
+import org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.Bot;
+import org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.GuestUser;
+import org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.Human;
+import org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.Member;
+import org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.MemberGroup;
+import org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.Organization;
+import org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.PrivilegedBot;
+import org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.PrivilegedUser;
+import org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.RegisteredUser;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Switch</b> for the model's inheritance hierarchy.
+ * It supports the call {@link #doSwitch(EObject) doSwitch(object)}
+ * to invoke the <code>caseXXX</code> method for each class of the model,
+ * starting with the actual class of the object
+ * and proceeding up the inheritance hierarchy
+ * until a non-null result is returned,
+ * which is the result of the switch.
+ * <!-- end-user-doc -->
+ *
+ * @see org.eclipse.emf.ecp.view.table.ui.nebula.grid.test.model.audit.AuditPackage
+ * @generated
+ */
+public class AuditSwitch<T> extends Switch<T> {
+	/**
+	 * The cached model package
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected static AuditPackage modelPackage;
+
+	/**
+	 * Creates an instance of the switch.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public AuditSwitch() {
+		if (modelPackage == null) {
+			modelPackage = AuditPackage.eINSTANCE;
+		}
+	}
+
+	/**
+	 * Checks whether this is a switch for the given package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param ePackage the package in question.
+	 * @return whether this is a switch for the given package.
+	 * @generated
+	 */
+	@Override
+	protected boolean isSwitchFor(EPackage ePackage) {
+		return ePackage == modelPackage;
+	}
+
+	/**
+	 * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that
+	 * result.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the first non-null result returned by a <code>caseXXX</code> call.
+	 * @generated
+	 */
+	@Override
+	protected T doSwitch(int classifierID, EObject theEObject) {
+		switch (classifierID) {
+		case AuditPackage.ORGANIZATION: {
+			final Organization organization = (Organization) theEObject;
+			T result = caseOrganization(organization);
+			if (result == null) {
+				result = defaultCase(theEObject);
+			}
+			return result;
+		}
+		case AuditPackage.MEMBER: {
+			final Member member = (Member) theEObject;
+			T result = caseMember(member);
+			if (result == null) {
+				result = defaultCase(theEObject);
+			}
+			return result;
+		}
+		case AuditPackage.BOT: {
+			final Bot bot = (Bot) theEObject;
+			T result = caseBot(bot);
+			if (result == null) {
+				result = caseMember(bot);
+			}
+			if (result == null) {
+				result = defaultCase(theEObject);
+			}
+			return result;
+		}
+		case AuditPackage.HUMAN: {
+			final Human human = (Human) theEObject;
+			T result = caseHuman(human);
+			if (result == null) {
+				result = caseMember(human);
+			}
+			if (result == null) {
+				result = defaultCase(theEObject);
+			}
+			return result;
+		}
+		case AuditPackage.GUEST_USER: {
+			final GuestUser guestUser = (GuestUser) theEObject;
+			T result = caseGuestUser(guestUser);
+			if (result == null) {
+				result = caseHuman(guestUser);
+			}
+			if (result == null) {
+				result = caseMember(guestUser);
+			}
+			if (result == null) {
+				result = defaultCase(theEObject);
+			}
+			return result;
+		}
+		case AuditPackage.REGISTERED_USER: {
+			final RegisteredUser registeredUser = (RegisteredUser) theEObject;
+			T result = caseRegisteredUser(registeredUser);
+			if (result == null) {
+				result = caseHuman(registeredUser);
+			}
+			if (result == null) {
+				result = caseMember(registeredUser);
+			}
+			if (result == null) {
+				result = defaultCase(theEObject);
+			}
+			return result;
+		}
+		case AuditPackage.PRIVILEGED_USER: {
+			final PrivilegedUser privilegedUser = (PrivilegedUser) theEObject;
+			T result = casePrivilegedUser(privilegedUser);
+			if (result == null) {
+				result = defaultCase(theEObject);
+			}
+			return result;
+		}
+		case AuditPackage.ADMIN_USER: {
+			final AdminUser adminUser = (AdminUser) theEObject;
+			T result = caseAdminUser(adminUser);
+			if (result == null) {
+				result = caseRegisteredUser(adminUser);
+			}
+			if (result == null) {
+				result = casePrivilegedUser(adminUser);
+			}
+			if (result == null) {
+				result = caseHuman(adminUser);
+			}
+			if (result == null) {
+				result = caseMember(adminUser);
+			}
+			if (result == null) {
+				result = defaultCase(theEObject);
+			}
+			return result;
+		}
+		case AuditPackage.PRIVILEGED_BOT: {
+			final PrivilegedBot privilegedBot = (PrivilegedBot) theEObject;
+			T result = casePrivilegedBot(privilegedBot);
+			if (result == null) {
+				result = caseBot(privilegedBot);
+			}
+			if (result == null) {
+				result = casePrivilegedUser(privilegedBot);
+			}
+			if (result == null) {
+				result = caseMember(privilegedBot);
+			}
+			if (result == null) {
+				result = defaultCase(theEObject);
+			}
+			return result;
+		}
+		case AuditPackage.MEMBER_GROUP: {
+			final MemberGroup memberGroup = (MemberGroup) theEObject;
+			T result = caseMemberGroup(memberGroup);
+			if (result == null) {
+				result = defaultCase(theEObject);
+			}
+			return result;
+		}
+		default:
+			return defaultCase(theEObject);
+		}
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Organization</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>Organization</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseOrganization(Organization object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Member</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>Member</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseMember(Member object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Bot</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>Bot</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseBot(Bot object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Human</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>Human</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseHuman(Human object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Guest User</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>Guest User</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseGuestUser(GuestUser object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Registered User</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>Registered User</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseRegisteredUser(RegisteredUser object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Privileged User</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>Privileged User</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T casePrivilegedUser(PrivilegedUser object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Admin User</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>Admin User</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseAdminUser(AdminUser object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Privileged Bot</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>Privileged Bot</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T casePrivilegedBot(PrivilegedBot object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Member Group</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>Member Group</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseMemberGroup(MemberGroup object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch, but this is the last case anyway.
+	 * <!-- end-user-doc -->
+	 *
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject)
+	 * @generated
+	 */
+	@Override
+	public T defaultCase(EObject object) {
+		return null;
+	}
+
+} // AuditSwitch
diff --git a/tests/org.eclipse.emf.ecp.view.table.ui.swt.test/.settings/.api_filters b/tests/org.eclipse.emf.ecp.view.table.ui.swt.test/.settings/.api_filters
index 64a09ca..152cfff 100644
--- a/tests/org.eclipse.emf.ecp.view.table.ui.swt.test/.settings/.api_filters
+++ b/tests/org.eclipse.emf.ecp.view.table.ui.swt.test/.settings/.api_filters
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
 <component id="org.eclipse.emf.ecp.view.table.ui.swt.test" version="2">
-    <resource path="src/org/eclipse/emf/ecp/view/table/ui/swt/test/SWTTable_PTest.java" type="org.eclipse.emf.ecp.view.table.ui.swt.test.SWTTable_PTest$ViewModelContextWithoutServices">
+    <resource path="src/org/eclipse/emf/ecp/view/spi/table/swt/SWTTable_PTest.java" type="org.eclipse.emf.ecp.view.spi.table.swt.SWTTable_PTest$ViewModelContextWithoutServices">
         <filter comment="Used for testing purposes" id="574619656">
             <message_arguments>
                 <message_argument value="ViewModelContext"/>
diff --git a/tests/org.eclipse.emf.ecp.view.table.ui.swt.test/All Tests for view.table.ui.swt.launch b/tests/org.eclipse.emf.ecp.view.table.ui.swt.test/All Tests for view.table.ui.swt.launch
index 013351e..342e85f 100644
--- a/tests/org.eclipse.emf.ecp.view.table.ui.swt.test/All Tests for view.table.ui.swt.launch
+++ b/tests/org.eclipse.emf.ecp.view.table.ui.swt.test/All Tests for view.table.ui.swt.launch
@@ -32,8 +32,8 @@
 <stringAttribute key="pde.version" value="3.3"/>
 <stringAttribute key="product" value="org.eclipse.platform.ide"/>
 <booleanAttribute key="run_in_ui_thread" value="true"/>
-<stringAttribute key="selected_target_plugins" value="com.ibm.icu@default:default,javax.annotation@default:default,javax.inject@default:default,javax.servlet@default:default,org.apache.batik.css*1.7.0.v201011041433@default:default,org.apache.batik.css*1.8.0.v20170214-1941@default:default,org.apache.batik.util*1.7.0.v201011041433@default:default,org.apache.batik.util*1.8.0.v20170214-1941@default:default,org.apache.batik.util.gui*1.7.0.v200903091627@default:default,org.apache.batik.util.gui*1.8.0.v20170214-1941@default:default,org.apache.commons.codec@default:default,org.apache.commons.jxpath@default:default,org.apache.commons.logging@default:default,org.apache.felix.scr@default:default,org.eclipse.ant.core@default:default,org.eclipse.compare.core@default:default,org.eclipse.core.commands@default:default,org.eclipse.core.contenttype@default:default,org.eclipse.core.databinding*1.5.0.v20150422-0725@default:default,org.eclipse.core.databinding*1.6.100.v20170515-1119@default:default,org.eclipse.core.databinding.observable*1.5.0.v20150422-0725@default:default,org.eclipse.core.databinding.observable*1.6.100.v20170515-1119@default:default,org.eclipse.core.databinding.property*1.5.0.v20150422-0725@default:default,org.eclipse.core.databinding.property*1.6.100.v20170515-1119@default:default,org.eclipse.core.expressions@default:default,org.eclipse.core.filesystem.linux.x86_64@default:false,org.eclipse.core.filesystem@default:default,org.eclipse.core.jobs@default:default,org.eclipse.core.resources@default:default,org.eclipse.core.runtime@default:true,org.eclipse.core.variables@default:default,org.eclipse.e4.core.commands@default:default,org.eclipse.e4.core.contexts@default:default,org.eclipse.e4.core.di.annotations@default:default,org.eclipse.e4.core.di.extensions.supplier@default:default,org.eclipse.e4.core.di.extensions@default:default,org.eclipse.e4.core.di@default:default,org.eclipse.e4.core.services@default:default,org.eclipse.e4.emf.xpath@default:default,org.eclipse.e4.ui.bindings@default:default,org.eclipse.e4.ui.css.core@default:default,org.eclipse.e4.ui.css.swt.theme@default:default,org.eclipse.e4.ui.css.swt@default:default,org.eclipse.e4.ui.di@default:default,org.eclipse.e4.ui.model.workbench@default:default,org.eclipse.e4.ui.services@default:default,org.eclipse.e4.ui.swt.gtk@default:false,org.eclipse.e4.ui.widgets@default:default,org.eclipse.e4.ui.workbench.addons.swt@default:default,org.eclipse.e4.ui.workbench.renderers.swt@default:default,org.eclipse.e4.ui.workbench.swt@default:default,org.eclipse.e4.ui.workbench3@default:default,org.eclipse.e4.ui.workbench@default:default,org.eclipse.emf.common.ui@default:default,org.eclipse.emf.common@default:default,org.eclipse.emf.databinding.edit@default:default,org.eclipse.emf.databinding@default:default,org.eclipse.emf.ecore.change@default:default,org.eclipse.emf.ecore.edit@default:default,org.eclipse.emf.ecore.xmi@default:default,org.eclipse.emf.ecore@default:default,org.eclipse.emf.edit.ui@default:default,org.eclipse.emf.edit@default:default,org.eclipse.emf.emfstore.client@default:default,org.eclipse.emf.emfstore.common.model@default:default,org.eclipse.emf.emfstore.common@default:default,org.eclipse.emf.emfstore.examplemodel.edit@default:default,org.eclipse.emf.emfstore.examplemodel@default:default,org.eclipse.emf.emfstore.migration@default:default,org.eclipse.emf.emfstore.server.model@default:default,org.eclipse.emf.emfstore.server@default:default,org.eclipse.equinox.app@default:default,org.eclipse.equinox.common@2:true,org.eclipse.equinox.ds@1:true,org.eclipse.equinox.preferences@default:default,org.eclipse.equinox.region@default:false,org.eclipse.equinox.registry@default:default,org.eclipse.equinox.transforms.hook@default:false,org.eclipse.equinox.util@default:default,org.eclipse.equinox.weaving.hook@default:false,org.eclipse.help@default:default,org.eclipse.jface.databinding@default:default,org.eclipse.jface@default:default,org.eclipse.nebula.widgets.grid@default:default,org.eclipse.net4j.util@default:default,org.eclipse.osgi.compatibility.state@default:false,org.eclipse.osgi.services@default:default,org.eclipse.osgi.util@default:default,org.eclipse.osgi@-1:true,org.eclipse.swt.gtk.linux.x86_64@default:false,org.eclipse.swt@default:default,org.eclipse.team.core@default:default,org.eclipse.ui.forms@default:default,org.eclipse.ui.trace@default:default,org.eclipse.ui.views@default:default,org.eclipse.ui.workbench@default:default,org.eclipse.ui@default:default,org.hamcrest.core@default:default,org.hamcrest.library@default:default,org.junit@default:default,org.mockito.mockito-core-hamcrest-modified@default:default,org.objenesis@default:default,org.w3c.css.sac@default:default,org.w3c.dom.events@default:default,org.w3c.dom.smil*1.0.0.v200806040011@default:default,org.w3c.dom.smil*1.0.1.v200903091627@default:default,org.w3c.dom.svg@default:default"/>
-<stringAttribute key="selected_workspace_plugins" value="org.eclipse.emf.ecp.common.test@default:false,org.eclipse.emf.ecp.common.ui@default:default,org.eclipse.emf.ecp.common@default:default,org.eclipse.emf.ecp.core.test@default:false,org.eclipse.emf.ecp.core@default:default,org.eclipse.emf.ecp.edit.swt.test@default:false,org.eclipse.emf.ecp.edit.swt@default:default,org.eclipse.emf.ecp.edit@default:default,org.eclipse.emf.ecp.editor.e3@default:default,org.eclipse.emf.ecp.emfstore.core@default:default,org.eclipse.emf.ecp.explorereditorbridge@default:default,org.eclipse.emf.ecp.makeithappen.model@default:default,org.eclipse.emf.ecp.test.common@default:default,org.eclipse.emf.ecp.test.model@default:default,org.eclipse.emf.ecp.ui.rcp@default:false,org.eclipse.emf.ecp.ui.view.swt.test@default:false,org.eclipse.emf.ecp.ui.view.swt@default:default,org.eclipse.emf.ecp.ui.view.test@default:default,org.eclipse.emf.ecp.ui.view@default:default,org.eclipse.emf.ecp.ui@default:default,org.eclipse.emf.ecp.view.context.tests@default:false,org.eclipse.emf.ecp.view.context@default:default,org.eclipse.emf.ecp.view.core.swt@default:default,org.eclipse.emf.ecp.view.indexdmr.model@default:default,org.eclipse.emf.ecp.view.label.model@default:default,org.eclipse.emf.ecp.view.migrator@default:default,org.eclipse.emf.ecp.view.model.common.test@default:false,org.eclipse.emf.ecp.view.model.common@default:default,org.eclipse.emf.ecp.view.model.provider.generator@default:default,org.eclipse.emf.ecp.view.model.provider.xmi.test@default:false,org.eclipse.emf.ecp.view.model.provider.xmi@default:default,org.eclipse.emf.ecp.view.model@default:default,org.eclipse.emf.ecp.view.swt.layout@default:default,org.eclipse.emf.ecp.view.table.columnservice@default:default,org.eclipse.emf.ecp.view.table.model.test@default:false,org.eclipse.emf.ecp.view.table.model@default:default,org.eclipse.emf.ecp.view.table.ui.swt.test@default:default,org.eclipse.emf.ecp.view.table.ui.swt@default:default,org.eclipse.emf.ecp.view.template.model@default:default,org.eclipse.emf.ecp.view.template.service.test@default:false,org.eclipse.emf.ecp.view.template.service@default:default,org.eclipse.emf.ecp.view.test.common.swt@default:default,org.eclipse.emf.ecp.view.test.common@default:default,org.eclipse.emf.ecp.view.util.swt@default:default,org.eclipse.emf.ecp.view.validation@default:default,org.eclipse.emf.ecp.view.vertical.model@default:default,org.eclipse.emf.rap.edit.ui.minimal@default:default,org.eclipse.emfforms.common.tests@default:false,org.eclipse.emfforms.common.validation@default:default,org.eclipse.emfforms.common@default:default,org.eclipse.emfforms.core.services.databinding.featurepath.tests@default:false,org.eclipse.emfforms.core.services.databinding.featurepath@default:default,org.eclipse.emfforms.core.services.databinding.index.tests@default:false,org.eclipse.emfforms.core.services.databinding.index@default:default,org.eclipse.emfforms.core.services.databinding.testmodel@default:default,org.eclipse.emfforms.core.services.domainexpander.default.tests@default:false,org.eclipse.emfforms.core.services.domainexpander.default@default:default,org.eclipse.emfforms.core.services.domainexpander.index.tests@default:false,org.eclipse.emfforms.core.services.domainexpander.index@default:default,org.eclipse.emfforms.core.services.domainexpander.table@default:default,org.eclipse.emfforms.core.services.editsupport@default:default,org.eclipse.emfforms.core.services.emf.tests@default:false,org.eclipse.emfforms.core.services.emf@default:default,org.eclipse.emfforms.core.services.emfspecificservice@default:default,org.eclipse.emfforms.core.services.legacy.tests@default:false,org.eclipse.emfforms.core.services.legacy@default:default,org.eclipse.emfforms.core.services.locale.default@default:default,org.eclipse.emfforms.core.services.mappingprovider.default@default:default,org.eclipse.emfforms.core.services.mappingprovider.table@default:default,org.eclipse.emfforms.core.services.structuralchange.default@default:default,org.eclipse.emfforms.core.services.structuralchange.index@default:default,org.eclipse.emfforms.core.services.structuralchange.table@default:default,org.eclipse.emfforms.core.services.structuralchange@default:default,org.eclipse.emfforms.core.services.tests@default:false,org.eclipse.emfforms.core.services@default:default,org.eclipse.emfforms.localization.tests@default:false,org.eclipse.emfforms.localization@default:default,org.eclipse.emfforms.swt.core.di@default:default,org.eclipse.emfforms.swt.core.tests@default:false,org.eclipse.emfforms.swt.core@default:default,org.eclipse.emfforms.swt.table@default:default"/>
+<stringAttribute key="selected_target_plugins" value="com.ibm.icu@default:default,javax.annotation@default:default,javax.inject@default:default,javax.servlet@default:default,org.apache.batik.css*1.7.0.v201011041433@default:default,org.apache.batik.css*1.8.0.v20170214-1941@default:default,org.apache.batik.util*1.7.0.v201011041433@default:default,org.apache.batik.util*1.8.0.v20170214-1941@default:default,org.apache.batik.util.gui*1.7.0.v200903091627@default:default,org.apache.batik.util.gui*1.8.0.v20170214-1941@default:default,org.apache.commons.codec@default:default,org.apache.commons.jxpath@default:default,org.apache.commons.logging@default:default,org.apache.felix.scr@default:default,org.eclipse.ant.core@default:default,org.eclipse.compare.core@default:default,org.eclipse.core.commands@default:default,org.eclipse.core.contenttype@default:default,org.eclipse.core.databinding*1.5.0.v20150422-0725@default:default,org.eclipse.core.databinding*1.6.100.v20170515-1119@default:default,org.eclipse.core.databinding.observable*1.5.0.v20150422-0725@default:default,org.eclipse.core.databinding.observable*1.6.100.v20170515-1119@default:default,org.eclipse.core.databinding.property*1.5.0.v20150422-0725@default:default,org.eclipse.core.databinding.property*1.6.100.v20170515-1119@default:default,org.eclipse.core.expressions@default:default,org.eclipse.core.filesystem.linux.x86_64@default:false,org.eclipse.core.filesystem@default:default,org.eclipse.core.jobs@default:default,org.eclipse.core.resources@default:default,org.eclipse.core.runtime@default:true,org.eclipse.core.variables@default:default,org.eclipse.e4.core.commands@default:default,org.eclipse.e4.core.contexts@default:default,org.eclipse.e4.core.di.annotations@default:default,org.eclipse.e4.core.di.extensions.supplier@default:default,org.eclipse.e4.core.di.extensions@default:default,org.eclipse.e4.core.di@default:default,org.eclipse.e4.core.services@default:default,org.eclipse.e4.emf.xpath@default:default,org.eclipse.e4.ui.bindings@default:default,org.eclipse.e4.ui.css.core@default:default,org.eclipse.e4.ui.css.swt.theme@default:default,org.eclipse.e4.ui.css.swt@default:default,org.eclipse.e4.ui.di@default:default,org.eclipse.e4.ui.model.workbench@default:default,org.eclipse.e4.ui.services@default:default,org.eclipse.e4.ui.swt.gtk@default:false,org.eclipse.e4.ui.widgets@default:default,org.eclipse.e4.ui.workbench.addons.swt@default:default,org.eclipse.e4.ui.workbench.renderers.swt@default:default,org.eclipse.e4.ui.workbench.swt@default:default,org.eclipse.e4.ui.workbench3@default:default,org.eclipse.e4.ui.workbench@default:default,org.eclipse.emf.common.ui@default:default,org.eclipse.emf.common@default:default,org.eclipse.emf.databinding.edit@default:default,org.eclipse.emf.databinding@default:default,org.eclipse.emf.ecore.change@default:default,org.eclipse.emf.ecore.edit@default:default,org.eclipse.emf.ecore.xmi@default:default,org.eclipse.emf.ecore@default:default,org.eclipse.emf.edit.ui@default:default,org.eclipse.emf.edit@default:default,org.eclipse.emf.emfstore.client@default:default,org.eclipse.emf.emfstore.common.model@default:default,org.eclipse.emf.emfstore.common@default:default,org.eclipse.emf.emfstore.examplemodel.edit@default:default,org.eclipse.emf.emfstore.examplemodel@default:default,org.eclipse.emf.emfstore.migration@default:default,org.eclipse.emf.emfstore.server.model@default:default,org.eclipse.emf.emfstore.server@default:default,org.eclipse.equinox.app@default:default,org.eclipse.equinox.common@2:true,org.eclipse.equinox.ds@1:true,org.eclipse.equinox.preferences@default:default,org.eclipse.equinox.region@default:false,org.eclipse.equinox.registry@default:default,org.eclipse.equinox.transforms.hook@default:false,org.eclipse.equinox.util@default:default,org.eclipse.equinox.weaving.hook@default:false,org.eclipse.help@default:default,org.eclipse.jface.databinding@default:default,org.eclipse.jface@default:default,org.eclipse.net4j.util@default:default,org.eclipse.osgi.compatibility.state@default:false,org.eclipse.osgi.services@default:default,org.eclipse.osgi.util@default:default,org.eclipse.osgi@-1:true,org.eclipse.swt.gtk.linux.x86_64@default:false,org.eclipse.swt@default:default,org.eclipse.team.core@default:default,org.eclipse.ui.forms@default:default,org.eclipse.ui.trace@default:default,org.eclipse.ui.views@default:default,org.eclipse.ui.workbench@default:default,org.eclipse.ui@default:default,org.hamcrest.core@default:default,org.hamcrest.library@default:default,org.junit@default:default,org.mockito.mockito-core-hamcrest-modified@default:default,org.objenesis@default:default,org.w3c.css.sac@default:default,org.w3c.dom.events@default:default,org.w3c.dom.smil*1.0.0.v200806040011@default:default,org.w3c.dom.smil*1.0.1.v200903091627@default:default,org.w3c.dom.svg@default:default"/>
+<stringAttribute key="selected_workspace_plugins" value="org.eclipse.emf.ecp.common.test@default:false,org.eclipse.emf.ecp.common.ui@default:default,org.eclipse.emf.ecp.common@default:default,org.eclipse.emf.ecp.core.test@default:false,org.eclipse.emf.ecp.core@default:default,org.eclipse.emf.ecp.edit.swt.test@default:false,org.eclipse.emf.ecp.edit.swt@default:default,org.eclipse.emf.ecp.edit@default:default,org.eclipse.emf.ecp.editor.e3@default:default,org.eclipse.emf.ecp.emfstore.core@default:default,org.eclipse.emf.ecp.explorereditorbridge@default:default,org.eclipse.emf.ecp.makeithappen.model@default:default,org.eclipse.emf.ecp.test.common@default:default,org.eclipse.emf.ecp.test.model@default:default,org.eclipse.emf.ecp.ui.rcp@default:false,org.eclipse.emf.ecp.ui.view.swt.test@default:false,org.eclipse.emf.ecp.ui.view.swt@default:default,org.eclipse.emf.ecp.ui.view.test@default:default,org.eclipse.emf.ecp.ui.view@default:default,org.eclipse.emf.ecp.ui@default:default,org.eclipse.emf.ecp.view.context.tests@default:false,org.eclipse.emf.ecp.view.context@default:default,org.eclipse.emf.ecp.view.core.swt.tests@default:false,org.eclipse.emf.ecp.view.core.swt@default:default,org.eclipse.emf.ecp.view.group.model@default:default,org.eclipse.emf.ecp.view.indexdmr.model@default:default,org.eclipse.emf.ecp.view.label.model@default:default,org.eclipse.emf.ecp.view.migrator@default:default,org.eclipse.emf.ecp.view.model.common.test@default:false,org.eclipse.emf.ecp.view.model.common@default:default,org.eclipse.emf.ecp.view.model.provider.generator@default:default,org.eclipse.emf.ecp.view.model.provider.xmi.test@default:false,org.eclipse.emf.ecp.view.model.provider.xmi@default:default,org.eclipse.emf.ecp.view.model.test@default:false,org.eclipse.emf.ecp.view.model@default:default,org.eclipse.emf.ecp.view.swt.layout@default:default,org.eclipse.emf.ecp.view.table.columnservice@default:default,org.eclipse.emf.ecp.view.table.model.test@default:false,org.eclipse.emf.ecp.view.table.model@default:default,org.eclipse.emf.ecp.view.table.test.common@default:default,org.eclipse.emf.ecp.view.table.ui.swt.test@default:false,org.eclipse.emf.ecp.view.table.ui.swt@default:default,org.eclipse.emf.ecp.view.template.model.test@default:false,org.eclipse.emf.ecp.view.template.model@default:default,org.eclipse.emf.ecp.view.template.service.test@default:false,org.eclipse.emf.ecp.view.template.service@default:default,org.eclipse.emf.ecp.view.test.common.swt@default:default,org.eclipse.emf.ecp.view.test.common@default:default,org.eclipse.emf.ecp.view.util.swt@default:default,org.eclipse.emf.ecp.view.validation.test@default:false,org.eclipse.emf.ecp.view.validation@default:default,org.eclipse.emf.ecp.view.vertical.model@default:default,org.eclipse.emf.rap.edit.ui.minimal@default:default,org.eclipse.emfforms.common.prevalidation@default:default,org.eclipse.emfforms.common.tests@default:false,org.eclipse.emfforms.common.validation.tests@default:false,org.eclipse.emfforms.common.validation@default:default,org.eclipse.emfforms.common@default:default,org.eclipse.emfforms.core.bazaar.tests@default:false,org.eclipse.emfforms.core.bazaar@default:default,org.eclipse.emfforms.core.services.databinding.featurepath.tests@default:false,org.eclipse.emfforms.core.services.databinding.featurepath@default:default,org.eclipse.emfforms.core.services.databinding.index.tests@default:false,org.eclipse.emfforms.core.services.databinding.index@default:default,org.eclipse.emfforms.core.services.databinding.testmodel@default:default,org.eclipse.emfforms.core.services.domainexpander.default.tests@default:false,org.eclipse.emfforms.core.services.domainexpander.default@default:default,org.eclipse.emfforms.core.services.domainexpander.index.tests@default:false,org.eclipse.emfforms.core.services.domainexpander.index@default:default,org.eclipse.emfforms.core.services.domainexpander.table@default:default,org.eclipse.emfforms.core.services.editsupport@default:default,org.eclipse.emfforms.core.services.emf.tests@default:false,org.eclipse.emfforms.core.services.emf@default:default,org.eclipse.emfforms.core.services.emfspecificservice@default:default,org.eclipse.emfforms.core.services.legacy.tests@default:false,org.eclipse.emfforms.core.services.legacy@default:default,org.eclipse.emfforms.core.services.locale.default@default:default,org.eclipse.emfforms.core.services.mappingprovider.default@default:default,org.eclipse.emfforms.core.services.mappingprovider.table@default:default,org.eclipse.emfforms.core.services.structuralchange.default@default:default,org.eclipse.emfforms.core.services.structuralchange.index@default:default,org.eclipse.emfforms.core.services.structuralchange.table@default:default,org.eclipse.emfforms.core.services.structuralchange@default:default,org.eclipse.emfforms.core.services.tests@default:false,org.eclipse.emfforms.core.services@default:default,org.eclipse.emfforms.localization.tests@default:false,org.eclipse.emfforms.localization@default:default,org.eclipse.emfforms.swt.common.test@default:default,org.eclipse.emfforms.swt.core.di@default:default,org.eclipse.emfforms.swt.core.tests@default:false,org.eclipse.emfforms.swt.core@default:default,org.eclipse.emfforms.swt.table@default:default"/>
 <booleanAttribute key="show_selected_only" value="false"/>
 <booleanAttribute key="tracing" value="false"/>
 <booleanAttribute key="useCustomFeatures" value="false"/>
diff --git a/tests/org.eclipse.emf.ecp.view.table.ui.swt.test/META-INF/MANIFEST.MF b/tests/org.eclipse.emf.ecp.view.table.ui.swt.test/META-INF/MANIFEST.MF
index fff37b2..475955f 100644
--- a/tests/org.eclipse.emf.ecp.view.table.ui.swt.test/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.emf.ecp.view.table.ui.swt.test/META-INF/MANIFEST.MF
@@ -1,42 +1,47 @@
 Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
-Bundle-Name: Tests for the Group SWT Renderer
+Bundle-Name: Tests for the Table SWT Renderer
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.table.ui.swt.test
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emf.ecp.view.table.ui.swt.test;version="1.16.0";x-friends:="org.eclipse.emf.ecp.view.ui.editor.test"
-Require-Bundle: org.eclipse.emf.ecp.view.test.common.swt;bundle-version="[1.16.0,1.17.0)",
-  org.junit;bundle-version="[4.0.0,5.0.0)",
-  org.eclipse.emf.ecp.view.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.swt;bundle-version="[3.1.0,4.0.0)",
-  org.eclipse.emf.ecp.edit;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.ui.view.test;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.ui.view;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.ui.view.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.table.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.table.columnservice;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.table.ui.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.context;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.equinox.registry;bundle-version="[3.5.400,4.0.0)",
-  org.eclipse.core.runtime;bundle-version="[3.7.0,4.0.0)",
-  org.eclipse.jface;bundle-version="[3.10.0,4.0.0)",
-  org.mockito.mockito-core-hamcrest-modified;bundle-version="[1.9.5,2.0.0)",
-  org.eclipse.emf.ecp.view.core.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.common;bundle-version="[2.10.0,3.0.0)",
-  org.eclipse.core.databinding.property;bundle-version="[1.4.200,2.0.0)",
-  org.eclipse.emf.databinding;bundle-version="[1.3.0,2.0.0)",
-  org.eclipse.emf.ecp.view.template.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.util.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.swt.core;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services.editsupport;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.swt.core.di;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services.legacy;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services.domainexpander.default;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services.emf;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.e4.core.contexts;bundle-version="[1.4.0,2.0.0)",
-  org.eclipse.emf.edit;bundle-version="[2.11.1,3.0.0)",
-  org.eclipse.emf.ecp.edit.swt;bundle-version="[1.16.0,1.17.0)"
+Fragment-Host: org.eclipse.emf.ecp.view.table.ui.swt;bundle-version="[1.17.0,1.18.0]"
+Export-Package: org.eclipse.emf.ecp.view.spi.table.swt;version="1.17.0",
+ org.eclipse.emf.ecp.view.table.ui.swt.test;version="1.17.0";x-friends:="org.eclipse.emf.ecp.view.ui.editor.test"
+Require-Bundle: org.eclipse.emf.ecp.view.test.common.swt;bundle-version="[1.17.0,1.18.0]",
+ org.junit;bundle-version="[4.0.0,5.0.0)",
+ org.eclipse.emf.ecp.view.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.swt;bundle-version="[3.1.0,4.0.0)",
+ org.eclipse.emf.ecp.edit;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.ui.view.test;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.ui.view;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.ui.view.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.table.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.table.columnservice;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.context;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.equinox.registry;bundle-version="[3.5.400,4.0.0)",
+ org.eclipse.core.runtime;bundle-version="[3.7.0,4.0.0)",
+ org.eclipse.jface;bundle-version="[3.10.0,4.0.0)",
+ org.mockito.mockito-core-hamcrest-modified;bundle-version="[1.9.5,2.0.0)",
+ org.eclipse.emf.ecp.view.core.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.common;bundle-version="[2.10.0,3.0.0)",
+ org.eclipse.core.databinding.property;bundle-version="[1.4.200,2.0.0)",
+ org.eclipse.emf.databinding;bundle-version="[1.3.0,2.0.0)",
+ org.eclipse.emf.ecp.view.template.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.util.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.swt.core;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services.editsupport;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.swt.core.di;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services.legacy;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services.domainexpander.default;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services.emf;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.e4.core.contexts;bundle-version="[1.4.0,2.0.0)",
+ org.eclipse.emf.edit;bundle-version="[2.11.1,3.0.0)",
+ org.eclipse.emf.ecp.edit.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.table.test.common;bundle-version="[1.17.0,1.18.0]",
+ org.objenesis;bundle-version="1.0.0",
+ org.hamcrest.library;bundle-version="1.3.0"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
-Import-Package: org.eclipse.emfforms.spi.common.report;version="[1.16.0,1.17.0)"
+Import-Package: org.eclipse.emfforms.spi.common.report;version="[1.17.0,1.18.0]"
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.view.table.ui.swt.test
diff --git a/tests/org.eclipse.emf.ecp.view.table.ui.swt.test/pom.xml b/tests/org.eclipse.emf.ecp.view.table.ui.swt.test/pom.xml
index 9ee8693..65ba0cf 100644
--- a/tests/org.eclipse.emf.ecp.view.table.ui.swt.test/pom.xml
+++ b/tests/org.eclipse.emf.ecp.view.table.ui.swt.test/pom.xml
@@ -6,12 +6,12 @@
 	<parent>
 		<groupId>org.eclipse.emf.ecp</groupId>
 		<artifactId>ecp-tests-parent</artifactId>
-		<version>1.16.0-SNAPSHOT</version>
+		<version>1.17.0-SNAPSHOT</version>
 		<relativePath>../../releng/org.eclipse.emf.ecp.releng.tests/</relativePath>
 	</parent>
 	<groupId>org.eclipse.emf.ecp</groupId>
 	<artifactId>org.eclipse.emf.ecp.view.table.ui.swt.test</artifactId>
-	<version>1.16.0-SNAPSHOT</version>
+	<version>1.17.0-SNAPSHOT</version>
 	<packaging>eclipse-test-plugin</packaging>
 
 	<build>
diff --git a/tests/org.eclipse.emf.ecp.view.table.ui.swt.test/src/org/eclipse/emf/ecp/view/spi/table/swt/SWTTableDatabindingLabel_PTest.java b/tests/org.eclipse.emf.ecp.view.table.ui.swt.test/src/org/eclipse/emf/ecp/view/spi/table/swt/SWTTableDatabindingLabel_PTest.java
new file mode 100644
index 0000000..41fa8fd
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.view.table.ui.swt.test/src/org/eclipse/emf/ecp/view/spi/table/swt/SWTTableDatabindingLabel_PTest.java
@@ -0,0 +1,375 @@
+/*******************************************************************************
+ * Copyright (c) 2011-2015 EclipseSource Muenchen GmbH 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:
+ * Lucas Koehler - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.emf.ecp.view.spi.table.swt;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotEquals;
+import static org.junit.Assert.assertTrue;
+import static org.mockito.Matchers.any;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import java.util.LinkedHashSet;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Set;
+
+import org.eclipse.core.databinding.observable.Observables;
+import org.eclipse.core.databinding.observable.list.IObservableList;
+import org.eclipse.core.databinding.observable.list.WritableList;
+import org.eclipse.core.databinding.observable.value.IObservableValue;
+import org.eclipse.core.databinding.property.value.IValueProperty;
+import org.eclipse.emf.databinding.IEMFValueProperty;
+import org.eclipse.emf.databinding.internal.EMFValueProperty;
+import org.eclipse.emf.databinding.internal.EMFValuePropertyDecorator;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.ecore.EcoreFactory;
+import org.eclipse.emf.ecore.EcorePackage;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecp.view.internal.context.ViewModelContextImpl;
+import org.eclipse.emf.ecp.view.spi.model.VDomainModelReference;
+import org.eclipse.emf.ecp.view.spi.model.VFeaturePathDomainModelReference;
+import org.eclipse.emf.ecp.view.spi.model.VViewFactory;
+import org.eclipse.emf.ecp.view.spi.renderer.NoPropertyDescriptorFoundExeption;
+import org.eclipse.emf.ecp.view.spi.renderer.NoRendererFoundException;
+import org.eclipse.emf.ecp.view.spi.table.model.VTableControl;
+import org.eclipse.emf.ecp.view.spi.table.model.VTableDomainModelReference;
+import org.eclipse.emf.ecp.view.spi.table.model.VTableFactory;
+import org.eclipse.emf.ecp.view.spi.util.swt.ImageRegistryService;
+import org.eclipse.emf.ecp.view.template.model.VTStyleProperty;
+import org.eclipse.emf.ecp.view.template.model.VTViewTemplateProvider;
+import org.eclipse.emf.ecp.view.template.style.alignment.model.AlignmentType;
+import org.eclipse.emf.ecp.view.template.style.alignment.model.VTAlignmentFactory;
+import org.eclipse.emf.ecp.view.template.style.alignment.model.VTControlLabelAlignmentStyleProperty;
+import org.eclipse.emf.ecp.view.template.style.wrap.model.VTLabelWrapStyleProperty;
+import org.eclipse.emf.ecp.view.template.style.wrap.model.VTWrapFactory;
+import org.eclipse.emf.ecp.view.test.common.swt.spi.DatabindingClassRunner;
+import org.eclipse.emfforms.spi.common.report.ReportService;
+import org.eclipse.emfforms.spi.core.services.databinding.DatabindingFailedException;
+import org.eclipse.emfforms.spi.core.services.databinding.emf.EMFFormsDatabindingEMF;
+import org.eclipse.emfforms.spi.core.services.editsupport.EMFFormsEditSupport;
+import org.eclipse.emfforms.spi.core.services.label.EMFFormsLabelProvider;
+import org.eclipse.emfforms.spi.core.services.label.NoLabelFoundException;
+import org.eclipse.emfforms.spi.swt.core.layout.SWTGridCell;
+import org.eclipse.emfforms.spi.swt.core.layout.SWTGridDescription;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.Table;
+import org.eclipse.swt.widgets.TableColumn;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Matchers;
+import org.mockito.Mockito;
+
+/**
+ * JUnit tests for {@link TableControlSWTRenderer} testing the data binding of the table.
+ *
+ * @author Lucas Koehler
+ *
+ */
+@SuppressWarnings("restriction")
+@RunWith(DatabindingClassRunner.class)
+public class SWTTableDatabindingLabel_PTest {
+	private static final IObservableValue DISPLAYNAME = Observables.constantObservableValue("displayname");
+	private static final IObservableValue DISPLAYNAME_COLUMNS = Observables
+		.constantObservableValue("displayname-columns");
+	private static final IObservableValue DESCRIPTION = Observables.constantObservableValue("description");
+	private static final IObservableValue DESCRIPTION_COLUMNS = Observables
+		.constantObservableValue("description-columns");
+	private EMFFormsDatabindingEMF databindingService;
+	private TableControlSWTRenderer renderer;
+	private Shell shell;
+	private EClass domainModel;
+	private VTableControl vTableControl;
+	private EMFFormsLabelProvider labelProvider;
+	private VTViewTemplateProvider vtViewTemplateProvider;
+	private ViewModelContextImpl viewContext;
+
+	/**
+	 * Set up executed before every test.
+	 * Mocks and registers the databinding and label service.
+	 * Creates a new {@link TableControlSWTRenderer} to be tested. Mocks needed parameters and contents (e.g.
+	 * VControl, ViewModelContext).
+	 *
+	 * @throws DatabindingFailedException
+	 * @throws NoLabelFoundException
+	 */
+	@Before
+	public void setUp() throws DatabindingFailedException, NoLabelFoundException {
+		databindingService = mock(EMFFormsDatabindingEMF.class);
+		labelProvider = mock(EMFFormsLabelProvider.class);
+
+		when(labelProvider.getDescription(any(VDomainModelReference.class))).thenReturn(DESCRIPTION_COLUMNS);
+		when(labelProvider.getDescription(any(VDomainModelReference.class), any(EObject.class))).thenReturn(
+			DESCRIPTION);
+		when(labelProvider.getDisplayName(any(VDomainModelReference.class))).thenReturn(DISPLAYNAME_COLUMNS);
+		when(labelProvider.getDisplayName(any(VDomainModelReference.class), any(EObject.class))).thenReturn(
+			DISPLAYNAME);
+
+		shell = new Shell();
+
+		domainModel = EcoreFactory.eINSTANCE.createEClass();
+		final EStructuralFeature eStructuralFeature = EcorePackage.eINSTANCE.getEClass_ESuperTypes();
+
+		final VTableDomainModelReference tableDomainModelReference = createTableDomainModelReference(
+			eStructuralFeature);
+		vTableControl = VTableFactory.eINSTANCE.createTableControl();
+		vTableControl.setDomainModelReference(tableDomainModelReference);
+
+		final IValueProperty valueProperty = new EMFValueProperty(EcorePackage.eINSTANCE.getEClass_ESuperTypes());
+		final IObservableValue observableValue = valueProperty.observe(domainModel);
+		when(databindingService.getObservableValue(vTableControl.getDomainModelReference(), domainModel)).thenReturn(
+			observableValue);
+
+		final ReportService reportservice = mock(ReportService.class);
+		vtViewTemplateProvider = mock(VTViewTemplateProvider.class);
+		final ImageRegistryService imageRegistryService = mock(ImageRegistryService.class);
+		final EMFFormsEditSupport emfFormsEditSupport = mock(EMFFormsEditSupport.class);
+		viewContext = new ViewModelContextImpl(vTableControl, domainModel);
+
+		renderer = new TableControlSWTRenderer(vTableControl, viewContext, reportservice, databindingService,
+			labelProvider, vtViewTemplateProvider, imageRegistryService, emfFormsEditSupport);
+		renderer.init();
+		renderer.getGridDescription(new SWTGridDescription());
+	}
+
+	private VTableDomainModelReference createTableDomainModelReference(EStructuralFeature eStructuralFeature) {
+		final VTableDomainModelReference tableDomainModelReference = VTableFactory.eINSTANCE
+			.createTableDomainModelReference();
+		tableDomainModelReference.setDomainModelEFeature(eStructuralFeature);
+
+		final VFeaturePathDomainModelReference columnReference1 = VViewFactory.eINSTANCE
+			.createFeaturePathDomainModelReference();
+		columnReference1.setDomainModelEFeature(EcorePackage.eINSTANCE.getEClass_Abstract());
+
+		tableDomainModelReference.getColumnDomainModelReferences().add(columnReference1);
+
+		return tableDomainModelReference;
+	}
+
+	@Test
+	public void testLabelServiceUsage() throws NoRendererFoundException, NoPropertyDescriptorFoundExeption,
+		DatabindingFailedException {
+		final IEMFValueProperty columnValueProperty = new EMFValuePropertyDecorator(
+			new EMFValueProperty(EcorePackage.eINSTANCE.getEClass_Abstract()),
+			EcorePackage.eINSTANCE.getEClass_Abstract());
+		final VDomainModelReference columnDMR = ((VTableDomainModelReference) vTableControl.getDomainModelReference())
+			.getColumnDomainModelReferences().get(0);
+		when(databindingService.getValueProperty(columnDMR, domainModel)).thenReturn(columnValueProperty);
+
+		final EReference eReference = mock(EReference.class);
+		final EClass eClass = EcorePackage.eINSTANCE.getEClass();
+		when(eReference.getEReferenceType()).thenReturn(eClass);
+
+		final WritableList mockedObservableList = new WritableList(createInitialList(), eReference);
+
+		when(databindingService.getObservableList(Matchers.eq(vTableControl.getDomainModelReference()),
+			any(EObject.class)))
+				.thenReturn(mockedObservableList);
+		when(databindingService.getSetting(vTableControl.getDomainModelReference(), domainModel)).thenReturn(
+			InternalEObject.class.cast(domainModel).eSetting(EcorePackage.eINSTANCE.getEClass_ESuperTypes()));
+
+		final Composite renderedControl = (Composite) renderer.render(new SWTGridCell(0, 0, renderer), shell);
+		final Composite composite = (Composite) renderedControl.getChildren()[0];
+		final Composite titleComposite = (Composite) composite.getChildren()[0];
+		final Label titleLabel = (Label) titleComposite.getChildren()[0];
+
+		assertEquals(DISPLAYNAME.getValue(), titleLabel.getText());
+
+		final Control tableControl = getTable(renderedControl);
+		assertTrue(Table.class.isInstance(tableControl));
+		final Table table = (Table) tableControl;
+		final TableColumn column = table.getColumn(1);
+		assertEquals(DISPLAYNAME_COLUMNS.getValue(), column.getText());
+		assertEquals(DESCRIPTION_COLUMNS.getValue(), column.getToolTipText());
+	}
+
+	/**
+	 * Tests the initial binding from the model to the table.
+	 *
+	 * @throws NoRendererFoundException Renderer could not be found
+	 * @throws NoPropertyDescriptorFoundExeption Property descriptor could not be found
+	 * @throws DatabindingFailedException if the databinidng failed
+	 */
+	@Test
+	public void testDatabindingServiceUsageInitialBinding() throws NoRendererFoundException,
+		NoPropertyDescriptorFoundExeption, DatabindingFailedException {
+		final List<EClass> initialList = createInitialList();
+
+		final EReference eReference = mock(EReference.class);
+		final EClass eClass = EcorePackage.eINSTANCE.getEClass();
+		when(eReference.getEReferenceType()).thenReturn(eClass);
+
+		final WritableList mockedObservableList = new WritableList(initialList, eReference);
+
+		final Table table = setUpDatabindingTests(mockedObservableList, initialList.get(0), initialList.get(1));
+
+		assertDatabinding(mockedObservableList, table);
+	}
+
+	/**
+	 * Tests the binding from the model to the table for the addition of a new element to the model.
+	 *
+	 * @throws NoRendererFoundException Renderer could not be found
+	 * @throws NoPropertyDescriptorFoundExeption Property descriptor could not be found
+	 * @throws DatabindingFailedException if the databinidng failed
+	 */
+	@Test
+	public void testDatabindingServiceUsageAddToModel() throws NoRendererFoundException,
+		NoPropertyDescriptorFoundExeption, DatabindingFailedException {
+		final List<EClass> initialList = createInitialList();
+
+		final EReference eReference = mock(EReference.class);
+		final EClass eClass = EcorePackage.eINSTANCE.getEClass();
+		when(eReference.getEReferenceType()).thenReturn(eClass);
+
+		final WritableList mockedObservableList = new WritableList(initialList, eReference);
+
+		final Table table = setUpDatabindingTests(mockedObservableList, initialList.get(0), initialList.get(1));
+
+		final EClass class3 = EcoreFactory.eINSTANCE.createEClass();
+		class3.setAbstract(true);
+		mockedObservableList.add(class3);
+
+		assertDatabinding(mockedObservableList, table);
+	}
+
+	/**
+	 * Tests the binding from the model to the table for the removal of a element from the model .
+	 *
+	 * @throws NoRendererFoundException Renderer could not be found
+	 * @throws NoPropertyDescriptorFoundExeption Property descriptor could not be found
+	 * @throws DatabindingFailedException if the databinidng failed
+	 */
+	@Test
+	public void testDatabindingServiceUsageRemoveFromModel() throws NoRendererFoundException,
+		NoPropertyDescriptorFoundExeption, DatabindingFailedException {
+		final List<EClass> initialList = createInitialList();
+		final EReference eReference = mock(EReference.class);
+		final EClass eClass = EcorePackage.eINSTANCE.getEClass();
+		when(eReference.getEReferenceType()).thenReturn(eClass);
+		final WritableList mockedObservableList = new WritableList(initialList, eReference);
+
+		final Table table = setUpDatabindingTests(mockedObservableList, initialList.get(0), initialList.get(1));
+
+		mockedObservableList.remove(1);
+
+		assertDatabinding(mockedObservableList, table);
+	}
+
+	/**
+	 * Tests the binding from the model to the table for the change of an element of the model.
+	 *
+	 * @throws NoRendererFoundException Renderer could not be found
+	 * @throws NoPropertyDescriptorFoundExeption Property descriptor could not be found
+	 * @throws DatabindingFailedException if the databinidng failed
+	 */
+	@Test
+	public void testDatabindingServiceUsageChangeModel() throws NoRendererFoundException,
+		NoPropertyDescriptorFoundExeption, DatabindingFailedException {
+		final List<EClass> initialList = createInitialList();
+		final EReference eReference = mock(EReference.class);
+		final EClass eClass = EcorePackage.eINSTANCE.getEClass();
+		when(eReference.getEReferenceType()).thenReturn(eClass);
+		final WritableList mockedObservableList = new WritableList(initialList, eReference);
+
+		final Table table = setUpDatabindingTests(mockedObservableList, initialList.get(0), initialList.get(1));
+
+		((EClass) mockedObservableList.get(0)).setAbstract(true);
+
+		assertDatabinding(mockedObservableList, table);
+	}
+
+	@Test
+	public void testCreateLabelStyleBits() {
+		/* setup */
+		final VTControlLabelAlignmentStyleProperty alignProperty = VTAlignmentFactory.eINSTANCE
+			.createControlLabelAlignmentStyleProperty();
+		alignProperty.setType(AlignmentType.RIGHT);
+
+		final VTLabelWrapStyleProperty labelWrapStyleProperty = VTWrapFactory.eINSTANCE.createLabelWrapStyleProperty();
+		labelWrapStyleProperty.setWrapLabel(true);
+
+		final Set<VTStyleProperty> properties = new LinkedHashSet<VTStyleProperty>();
+		properties.add(alignProperty);
+		properties.add(labelWrapStyleProperty);
+		Mockito.when(vtViewTemplateProvider.getStyleProperties(vTableControl, viewContext)).thenReturn(properties);
+
+		/* act */
+		final Control render = renderer.createLabel(shell);
+
+		/* assert */
+		assertTrue(Label.class.isInstance(render));
+		assertNotEquals(0, render.getStyle() & SWT.WRAP);
+		assertEquals(SWT.RIGHT, Label.class.cast(render).getAlignment());
+	}
+
+	private void assertDatabinding(final WritableList mockedObservableList, final Table table) {
+		assertEquals(mockedObservableList.size(), table.getItemCount());
+		for (int i = 0; i < mockedObservableList.size(); i++) {
+			assertEquals(Boolean.toString(((EClass) mockedObservableList.get(i)).isAbstract()), table.getItem(i)
+				.getText(1));
+		}
+	}
+
+	/**
+	 * @return The initial list for data binding tests containing two {@link EClass} objects.
+	 */
+	private List<EClass> createInitialList() {
+		final List<EClass> initialList = new LinkedList<EClass>();
+		final EClass class1 = EcoreFactory.eINSTANCE.createEClass();
+		class1.setAbstract(false);
+		final EClass class2 = EcoreFactory.eINSTANCE.createEClass();
+		class2.setAbstract(true);
+		initialList.add(class1);
+		initialList.add(class2);
+		return initialList;
+	}
+
+	private Table setUpDatabindingTests(IObservableList mockedObservableList, EClass class1, EClass class2)
+		throws NoRendererFoundException,
+		NoPropertyDescriptorFoundExeption, DatabindingFailedException {
+
+		final IEMFValueProperty columnValueProperty = new EMFValuePropertyDecorator(
+			new EMFValueProperty(EcorePackage.eINSTANCE.getEClass_Abstract()),
+			EcorePackage.eINSTANCE.getEClass_Abstract());
+		final VDomainModelReference columnDMR = ((VTableDomainModelReference) vTableControl.getDomainModelReference())
+			.getColumnDomainModelReferences().get(0);
+		when(databindingService.getValueProperty(columnDMR, domainModel)).thenReturn(columnValueProperty);
+
+		when(databindingService.getSetting(vTableControl.getDomainModelReference(), domainModel)).thenReturn(
+			InternalEObject.class.cast(domainModel).eSetting(EcorePackage.eINSTANCE.getEClass_ESuperTypes()));
+
+		when(databindingService.getObservableList(any(VDomainModelReference.class), any(EObject.class))).thenReturn(
+			mockedObservableList);
+
+		final Control renderedControl = renderer.render(new SWTGridCell(0, 0, renderer), shell);
+		assertTrue(Composite.class.isInstance(renderedControl));
+		final Control tableControl = getTable(renderedControl);
+		assertTrue(Table.class.isInstance(tableControl));
+		return (Table) tableControl;
+	}
+
+	private Control getTable(Control render) {
+		Composite composite = (Composite) render;
+		composite = (Composite) composite.getChildren()[0];
+		composite = (Composite) composite.getChildren()[1];
+		return composite.getChildren()[0];
+	}
+}
diff --git a/tests/org.eclipse.emf.ecp.view.table.ui.swt.test/src/org/eclipse/emf/ecp/view/spi/table/swt/SWTTable_PTest.java b/tests/org.eclipse.emf.ecp.view.table.ui.swt.test/src/org/eclipse/emf/ecp/view/spi/table/swt/SWTTable_PTest.java
new file mode 100644
index 0000000..2913c3f
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.view.table.ui.swt.test/src/org/eclipse/emf/ecp/view/spi/table/swt/SWTTable_PTest.java
@@ -0,0 +1,1313 @@
+/*******************************************************************************
+ * Copyright (c) 2011-2017 EclipseSource Muenchen GmbH 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:
+ * Johannes Faltermeier
+ * Christian W. Damus - bug 527740
+ *
+ *******************************************************************************/
+package org.eclipse.emf.ecp.view.spi.table.swt;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertSame;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+import static org.mockito.Matchers.any;
+import static org.mockito.Matchers.anyBoolean;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import java.io.ByteArrayOutputStream;
+import java.io.PrintStream;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.util.Arrays;
+import java.util.LinkedHashMap;
+import java.util.Map;
+import java.util.Set;
+
+import org.eclipse.e4.core.contexts.IEclipseContext;
+import org.eclipse.emf.common.command.BasicCommandStack;
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.ecore.EStructuralFeature.Setting;
+import org.eclipse.emf.ecore.EcoreFactory;
+import org.eclipse.emf.ecore.EcorePackage;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.emf.ecp.common.spi.UniqueSetting;
+import org.eclipse.emf.ecp.edit.spi.ReferenceService;
+import org.eclipse.emf.ecp.edit.spi.swt.table.ECPCellEditorComparator;
+import org.eclipse.emf.ecp.edit.spi.swt.table.StringCellEditor;
+import org.eclipse.emf.ecp.view.internal.context.ViewModelContextImpl;
+import org.eclipse.emf.ecp.view.spi.context.ViewModelContext;
+import org.eclipse.emf.ecp.view.spi.context.ViewModelContextDisposeListener;
+import org.eclipse.emf.ecp.view.spi.context.ViewModelService;
+import org.eclipse.emf.ecp.view.spi.context.ViewModelServiceProvider;
+import org.eclipse.emf.ecp.view.spi.model.ModelChangeListener;
+import org.eclipse.emf.ecp.view.spi.model.VControl;
+import org.eclipse.emf.ecp.view.spi.model.VDomainModelReference;
+import org.eclipse.emf.ecp.view.spi.model.VElement;
+import org.eclipse.emf.ecp.view.spi.model.VFeaturePathDomainModelReference;
+import org.eclipse.emf.ecp.view.spi.model.VView;
+import org.eclipse.emf.ecp.view.spi.model.VViewFactory;
+import org.eclipse.emf.ecp.view.spi.model.VViewPackage;
+import org.eclipse.emf.ecp.view.spi.renderer.NoPropertyDescriptorFoundExeption;
+import org.eclipse.emf.ecp.view.spi.renderer.NoRendererFoundException;
+import org.eclipse.emf.ecp.view.spi.table.model.DetailEditing;
+import org.eclipse.emf.ecp.view.spi.table.model.VTableControl;
+import org.eclipse.emf.ecp.view.spi.table.model.VTableDomainModelReference;
+import org.eclipse.emf.ecp.view.spi.table.model.VTableFactory;
+import org.eclipse.emf.ecp.view.spi.util.swt.ImageRegistryService;
+import org.eclipse.emf.ecp.view.table.test.common.TableControlHandle;
+import org.eclipse.emf.ecp.view.table.test.common.TableTestUtil;
+import org.eclipse.emf.ecp.view.template.model.VTViewTemplateProvider;
+import org.eclipse.emf.ecp.view.test.common.swt.spi.DatabindingClassRunner;
+import org.eclipse.emf.ecp.view.test.common.swt.spi.SWTTestUtil;
+import org.eclipse.emf.ecp.view.test.common.swt.spi.SWTViewTestHelper;
+import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain;
+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
+import org.eclipse.emf.edit.provider.ReflectiveItemProviderAdapterFactory;
+import org.eclipse.emfforms.common.Optional;
+import org.eclipse.emfforms.spi.common.report.ReportService;
+import org.eclipse.emfforms.spi.core.services.databinding.emf.EMFFormsDatabindingEMF;
+import org.eclipse.emfforms.spi.core.services.editsupport.EMFFormsEditSupport;
+import org.eclipse.emfforms.spi.core.services.label.EMFFormsLabelProvider;
+import org.eclipse.emfforms.spi.core.services.view.EMFFormsContextListener;
+import org.eclipse.emfforms.spi.core.services.view.RootDomainModelChangeListener;
+import org.eclipse.emfforms.spi.swt.core.AbstractSWTRenderer;
+import org.eclipse.emfforms.spi.swt.core.EMFFormsNoRendererException;
+import org.eclipse.emfforms.spi.swt.core.EMFFormsRendererFactory;
+import org.eclipse.emfforms.spi.swt.core.di.EMFFormsContextProvider;
+import org.eclipse.emfforms.spi.swt.core.layout.SWTGridCell;
+import org.eclipse.emfforms.spi.swt.core.layout.SWTGridDescription;
+import org.eclipse.jface.viewers.CellEditor;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.swt.custom.ScrolledComposite;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.Table;
+import org.eclipse.swt.widgets.TableItem;
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Ignore;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.FrameworkUtil;
+import org.osgi.framework.ServiceReference;
+
+@SuppressWarnings("restriction")
+@RunWith(DatabindingClassRunner.class)
+public class SWTTable_PTest {
+	private static String log;
+	private static ServiceReference<EMFFormsRendererFactory> factoryServiceReference;
+	private static EMFFormsRendererFactory rendererFactory;
+	private static PrintStream systemErr;
+	private Shell shell;
+	private EObject domainElement;
+	private ComposedAdapterFactory adapterFactory;
+
+	@BeforeClass
+	public static void beforeClass() {
+		systemErr = System.err;
+		System.setErr(new PrintStreamWrapper(systemErr));
+		final BundleContext bundleContext = FrameworkUtil.getBundle(SWTTable_PTest.class).getBundleContext();
+		factoryServiceReference = bundleContext.getServiceReference(EMFFormsRendererFactory.class);
+		rendererFactory = bundleContext.getService(factoryServiceReference);
+	}
+
+	@AfterClass
+	public static void afterClass() {
+		System.setErr(systemErr);
+		final BundleContext bundleContext = FrameworkUtil.getBundle(SWTTable_PTest.class).getBundleContext();
+		bundleContext.ungetService(factoryServiceReference);
+	}
+
+	@Before
+	public void init() {
+		log = "";
+		shell = SWTViewTestHelper.createShell();
+
+		final EClass eClass = EcoreFactory.eINSTANCE.createEClass();
+		eClass.getESuperTypes().add(EcorePackage.eINSTANCE.getEClass());
+		domainElement = eClass;
+
+		// Add domain element to resource with editing domain
+		final ResourceSet rs = new ResourceSetImpl();
+		adapterFactory = new ComposedAdapterFactory(new AdapterFactory[] {
+			new ReflectiveItemProviderAdapterFactory(),
+			new ComposedAdapterFactory(ComposedAdapterFactory.Descriptor.Registry.INSTANCE) });
+		final AdapterFactoryEditingDomain editingDomain = new AdapterFactoryEditingDomain(
+			adapterFactory, new BasicCommandStack(), rs);
+		rs.eAdapters().add(new AdapterFactoryEditingDomain.EditingDomainProvider(editingDomain));
+		final Resource resource = rs.createResource(URI.createURI("VIRTUAL_URI")); //$NON-NLS-1$
+		resource.getContents().add(domainElement);
+	}
+
+	@After
+	public void after() {
+		if (!log.isEmpty()) {
+			fail("Unexpected log to System.err: " + log);
+		}
+		adapterFactory.dispose();
+	}
+
+	@Test
+	public void testUninitializedTableWithoutColumns() throws NoRendererFoundException,
+		NoPropertyDescriptorFoundExeption, EMFFormsNoRendererException {
+		// setup model
+		final TableControlHandle handle = TableTestUtil.createUninitializedTableWithoutColumns();
+		//
+		final Control render = SWTViewTestHelper.render(handle.getTableControl(), domainElement, shell);
+		assertTrue(Label.class.isInstance(render));// Error label with error text
+		assertEquals("The field domainModelEFeature of the given VFeaturePathDomainModelReference must not be null.",
+			Label.class.cast(render).getText());
+	}
+
+	@Test
+	public void testInitializedTableWithoutColumnsAndEmptyReference() throws NoRendererFoundException,
+		NoPropertyDescriptorFoundExeption, EMFFormsNoRendererException {
+		// setup model
+		final EClass createEClass = EcoreFactory.eINSTANCE.createEClass();
+		createEClass.eUnset(EcorePackage.eINSTANCE.getEClass_ESuperTypes());
+		domainElement = createEClass;
+		final TableControlHandle handle = TableTestUtil.createInitializedTableWithoutTableColumns();
+
+		try {
+			SWTViewTestHelper.render(handle.getTableControl(), domainElement, shell);
+		} catch (final NullPointerException e) {
+			fail("Fails without a reference in domain object");
+		}
+
+	}
+
+	@Ignore
+	@Test
+	public void testInitializedTableWithoutColumnsSingleReference() throws NoRendererFoundException,
+		NoPropertyDescriptorFoundExeption, EMFFormsNoRendererException {
+		// setup model
+		final VView view = VViewFactory.eINSTANCE.createView();
+		view.setRootEClass(VViewPackage.eINSTANCE.getView());
+		domainElement = view;
+		final TableControlHandle handle = TableTestUtil.createInitializedTableWithoutTableColumns();
+		final VFeaturePathDomainModelReference domainModelReference = VViewFactory.eINSTANCE
+			.createFeaturePathDomainModelReference();
+		domainModelReference.setDomainModelEFeature(VViewPackage.eINSTANCE.getView_RootEClass());
+		handle.getTableControl().setDomainModelReference(domainModelReference);
+
+		try {
+			SWTViewTestHelper.render(handle.getTableControl(), domainElement, shell);
+		} catch (final ClassCastException e) {
+			e.printStackTrace();
+			fail("Fails with single reference in domain object");
+		}
+
+	}
+
+	@Ignore
+	@Test
+	public void testInitializedTableWithoutColumnsEmptySingleReference() throws NoRendererFoundException,
+		NoPropertyDescriptorFoundExeption, EMFFormsNoRendererException {
+		// setup model
+		final VView view = VViewFactory.eINSTANCE.createView();
+		domainElement = view;
+		final TableControlHandle handle = TableTestUtil.createInitializedTableWithoutTableColumns();
+		final VFeaturePathDomainModelReference domainModelReference = VViewFactory.eINSTANCE
+			.createFeaturePathDomainModelReference();
+		domainModelReference.setDomainModelEFeature(VViewPackage.eINSTANCE.getView_RootEClass());
+		handle.getTableControl().setDomainModelReference(domainModelReference);
+
+		try {
+			SWTViewTestHelper.render(handle.getTableControl(), domainElement, shell);
+		} catch (final NullPointerException e) {
+			fail("Fails with empty single reference in domain object");
+		}
+
+	}
+
+	@Test
+	public void testTableWithoutColumns() throws NoRendererFoundException, NoPropertyDescriptorFoundExeption,
+		EMFFormsNoRendererException {
+		// setup model
+		final TableControlHandle handle = TableTestUtil.createInitializedTableWithoutTableColumns();
+
+		final Control render = SWTViewTestHelper.render(handle.getTableControl(), domainElement, shell);
+		assertTrue(render instanceof Composite);
+
+		// see bug #533262, TableColumnGenerator now includes attributes from super types
+		// if this is not desired the user has to specify the columns in the view model
+		assertEquals(domainElement.eClass().getEAllAttributes().size(),
+			VTableDomainModelReference.class.cast(handle.getTableControl().getDomainModelReference())
+				.getColumnDomainModelReferences().size());
+
+		final Control control = getTable(render);
+		assertTrue(control instanceof Table);
+		final Table table = (Table) control;
+		assertEquals(domainElement.eClass().getEAllAttributes().size() + 1, table.getColumnCount());
+	}
+
+	@Test
+	public void testTableWithoutColumnsWithoutViewServices() throws NoRendererFoundException,
+		NoPropertyDescriptorFoundExeption, EMFFormsNoRendererException {
+		final TableControlHandle handle = TableTestUtil.createInitializedTableWithoutTableColumns();
+		final AbstractSWTRenderer<VElement> tableRenderer = rendererFactory.getRendererInstance(
+			handle.getTableControl(),
+			new ViewModelContextWithoutServices(handle.getTableControl()));
+		tableRenderer.getGridDescription(new SWTGridDescription());
+		final Control render = tableRenderer.render(new SWTGridCell(0, 0, tableRenderer), shell);
+		if (render == null) {
+			fail();
+		}
+		assertTrue(render instanceof Composite);
+
+		assertEquals(0, VTableDomainModelReference.class.cast(handle.getTableControl().getDomainModelReference())
+			.getColumnDomainModelReferences().size());
+
+		final Control control = getTable(render);
+		assertTrue(control instanceof Table);
+		final Table table = (Table) control;
+		assertEquals(1, table.getColumnCount());
+	}
+
+	@Test
+	public void testTableWithTwoColumns() throws NoRendererFoundException, NoPropertyDescriptorFoundExeption,
+		EMFFormsNoRendererException {
+		// setup model
+		final TableControlHandle handle = createTableWithTwoTableColumns();
+		final Control render = SWTViewTestHelper.render(handle.getTableControl(), domainElement, shell);
+		assertTrue(render instanceof Composite);
+
+		final Control control = getTable(render);
+		assertTrue(control instanceof Table);
+		final Table table = (Table) control;
+		assertEquals(2 + 1, table.getColumnCount());
+
+	}
+
+	@Test
+	public void testTableWithTwoColumnsWithoutViewServices() throws NoRendererFoundException,
+		NoPropertyDescriptorFoundExeption, EMFFormsNoRendererException {
+		// setup model
+		final TableControlHandle handle = createTableWithTwoTableColumns();
+		final AbstractSWTRenderer<VElement> tableRenderer = rendererFactory.getRendererInstance(
+			handle.getTableControl(),
+			new ViewModelContextWithoutServices(handle.getTableControl()));
+		tableRenderer.getGridDescription(new SWTGridDescription());
+		final Control render = tableRenderer.render(new SWTGridCell(0, 0, tableRenderer), shell);
+		if (render == null) {
+			fail();
+		}
+		assertTrue(render instanceof Composite);
+
+		final Control control = getTable(render);
+		assertTrue(control instanceof Table);
+		final Table table = (Table) control;
+		assertEquals(2 + 1, table.getColumnCount());
+	}
+
+	@Test
+	public void testTableWithTwoColumnsAdd() throws NoRendererFoundException, NoPropertyDescriptorFoundExeption,
+		EMFFormsNoRendererException {
+		final TableControlHandle handle = createTableWithTwoTableColumns();
+		final AbstractSWTRenderer<VElement> tableRenderer = rendererFactory.getRendererInstance(
+			handle.getTableControl(),
+			new ViewModelContextWithoutServices(handle.getTableControl()));
+		tableRenderer.getGridDescription(new SWTGridDescription());
+		final Control control = tableRenderer.render(new SWTGridCell(0, 0, tableRenderer), shell);
+		if (control == null) {
+			fail("No control was rendered");
+		}
+		final Table table = (Table) getTable(control);
+		assertEquals(1, table.getItemCount());
+		final EClass eClass = EcoreFactory.eINSTANCE.createEClass();
+		((EClass) domainElement).getESuperTypes().add(eClass);
+		assertEquals(2, table.getItemCount());
+	}
+
+	@Test
+	public void testTableWithTwoColumnsRemove() throws NoRendererFoundException, NoPropertyDescriptorFoundExeption,
+		EMFFormsNoRendererException {
+		final TableControlHandle handle = createTableWithTwoTableColumns();
+		final AbstractSWTRenderer<VElement> tableRenderer = rendererFactory.getRendererInstance(
+			handle.getTableControl(),
+			new ViewModelContextWithoutServices(handle.getTableControl()));
+		tableRenderer.getGridDescription(new SWTGridDescription());
+		final Control control = tableRenderer.render(new SWTGridCell(0, 0, tableRenderer), shell);
+		if (control == null) {
+			fail("No control was rendered");
+		}
+		final Table table = (Table) getTable(control);
+		assertEquals(1, table.getItemCount());
+		final EClass eClass = ((EClass) domainElement).getESuperTypes().get(0);
+		((EClass) domainElement).getESuperTypes().remove(eClass);
+		assertEquals(0, table.getItemCount());
+	}
+
+	@Test
+	public void testTableWithTwoColumnsClear() throws NoRendererFoundException, NoPropertyDescriptorFoundExeption,
+		EMFFormsNoRendererException {
+		final EClass eClass = EcoreFactory.eINSTANCE.createEClass();
+		((EClass) domainElement).getESuperTypes().add(eClass);
+		final TableControlHandle handle = createTableWithTwoTableColumns();
+		final AbstractSWTRenderer<VElement> tableRenderer = rendererFactory.getRendererInstance(
+			handle.getTableControl(),
+			new ViewModelContextWithoutServices(handle.getTableControl()));
+		tableRenderer.getGridDescription(new SWTGridDescription());
+		final Control control = tableRenderer.render(new SWTGridCell(0, 0, tableRenderer), shell);
+		if (control == null) {
+			fail("No control was rendered");
+		}
+		final Table table = (Table) getTable(control);
+		assertEquals(2, table.getItemCount());
+		((EClass) domainElement).getESuperTypes().clear();
+		assertEquals(0, table.getItemCount());
+	}
+
+	@Test
+	public void testPanelTableWithTwoColumns() throws NoRendererFoundException, NoPropertyDescriptorFoundExeption,
+		EMFFormsNoRendererException {
+		final EClass eClass = EcoreFactory.eINSTANCE.createEClass();
+		((EClass) domainElement).getESuperTypes().add(eClass);
+		final TableControlHandle handle = createTableWithTwoTableColumns();
+		handle.getTableControl().setDetailEditing(DetailEditing.WITH_PANEL);
+		handle.getTableControl().setDetailView(createDetailView());
+		final AbstractSWTRenderer<VElement> tableRenderer = rendererFactory.getRendererInstance(
+			handle.getTableControl(),
+			new ViewModelContextWithoutServices(handle.getTableControl()));
+		tableRenderer.getGridDescription(new SWTGridDescription());
+		final Control render = tableRenderer.render(new SWTGridCell(0, 0, tableRenderer), shell);
+		final Control control = Composite.class.cast(render).getChildren()[0];
+		if (control == null) {
+			fail("No control was rendered");
+		}
+		final Composite controlComposite = (Composite) ((Composite) control).getChildren()[1];
+		final Composite tableComposite = (Composite) controlComposite.getChildren()[0];
+		final Table table = (Table) tableComposite.getChildren()[0];
+		final ScrolledComposite scrolledComposite = (ScrolledComposite) controlComposite.getChildren()[1];
+		final Composite parentForECPView = (Composite) scrolledComposite.getChildren()[0];
+		assertEquals(2, table.getItemCount());
+		final TableViewer tableViewer = getTableViewerFromRenderer(tableRenderer);
+
+		// no initial selection
+		assertEquals(0, parentForECPView.getChildren().length);
+
+		// single selection
+		tableViewer.setSelection(new StructuredSelection(table.getItem(0).getData()));
+		assertEquals(1, parentForECPView.getChildren().length);
+		final Composite viewComposite = (Composite) parentForECPView.getChildren()[0];
+		final Composite detailComposite = (Composite) viewComposite.getChildren()[0];
+		assertEquals(6, detailComposite.getChildren().length);
+
+		// multi selection
+		tableViewer.setSelection(new StructuredSelection(new Object[] { table.getItem(0).getData(),
+			table.getItem(1).getData() }));
+		assertEquals(0, parentForECPView.getChildren().length);
+
+		// select again
+		tableViewer.setSelection(new StructuredSelection(table.getItem(0).getData()));
+		assertEquals(1, parentForECPView.getChildren().length);
+
+		// no selection
+		tableViewer.setSelection(new StructuredSelection());
+		assertEquals(0, parentForECPView.getChildren().length);
+	}
+
+	@Test
+	public void testTableSorting() throws NoRendererFoundException, NoPropertyDescriptorFoundExeption,
+		EMFFormsNoRendererException {
+		// domain
+		((EClass) domainElement).getESuperTypes().clear();
+		final EClass class1 = createEClass("a", "b");
+		final EClass class2 = createEClass("b", "c");
+		final EClass class3 = createEClass("c", "a");
+		((EClass) domainElement).getESuperTypes().add(class1);
+		((EClass) domainElement).getESuperTypes().add(class2);
+		((EClass) domainElement).getESuperTypes().add(class3);
+
+		// table control
+		final VTableControl tableControl = TableTestUtil.createTableControl();
+		final VTableDomainModelReference tableDMR = (VTableDomainModelReference) tableControl.getDomainModelReference();
+		tableDMR.setDomainModelEFeature(EcorePackage.eINSTANCE.getEClass_ESuperTypes());
+		tableDMR.getColumnDomainModelReferences().add(createDMR(EcorePackage.eINSTANCE.getENamedElement_Name()));
+		tableDMR.getColumnDomainModelReferences().add(
+			createDMR(EcorePackage.eINSTANCE.getEClassifier_InstanceClassName()));
+
+		// render
+		final AbstractSWTRenderer<VElement> tableRenderer = rendererFactory.getRendererInstance(tableControl,
+			new ViewModelContextWithoutServices(tableControl));
+		tableRenderer.getGridDescription(new SWTGridDescription());
+		final Control control = tableRenderer.render(new SWTGridCell(0, 0, tableRenderer), shell);
+		if (control == null) {
+			fail("No control was rendered");
+		}
+		final Table table = SWTTestUtil.findControl(control, 0, Table.class);
+		assertTableItemOrder(table, class1, class2, class3);
+
+		// column 0 is validation column
+
+		// select column 1
+		// up
+		SWTTestUtil.selectWidget(table.getColumns()[1]);
+		SWTTestUtil.waitForUIThread();
+		assertTableItemOrder(table, class1, class2, class3);
+		// down
+		SWTTestUtil.selectWidget(table.getColumns()[1]);
+		SWTTestUtil.waitForUIThread();
+		assertTableItemOrder(table, class3, class2, class1);
+		// none
+		SWTTestUtil.selectWidget(table.getColumns()[1]);
+		SWTTestUtil.waitForUIThread();
+		assertTableItemOrder(table, class1, class2, class3);
+
+		// select column 2
+		// up
+		SWTTestUtil.selectWidget(table.getColumns()[2]);
+		SWTTestUtil.waitForUIThread();
+		assertTableItemOrder(table, class3, class1, class2);
+		// down
+		SWTTestUtil.selectWidget(table.getColumns()[2]);
+		SWTTestUtil.waitForUIThread();
+		assertTableItemOrder(table, class2, class1, class3);
+		// none
+		SWTTestUtil.selectWidget(table.getColumns()[2]);
+		SWTTestUtil.waitForUIThread();
+		assertTableItemOrder(table, class1, class2, class3);
+	}
+
+	@Test
+	public void testTableSortingWithCellEditor() throws NoRendererFoundException, NoPropertyDescriptorFoundExeption,
+		EMFFormsNoRendererException {
+		// domain
+		((EClass) domainElement).getESuperTypes().clear();
+		final EClass class1 = createEClass("a", "b");
+		final EClass class2 = createEClass("b", "c");
+		final EClass class3 = createEClass("c", "a");
+		((EClass) domainElement).getESuperTypes().add(class1);
+		((EClass) domainElement).getESuperTypes().add(class2);
+		((EClass) domainElement).getESuperTypes().add(class3);
+
+		// table control
+		final VTableControl tableControl = TableTestUtil.createTableControl();
+		final VTableDomainModelReference tableDMR = (VTableDomainModelReference) tableControl.getDomainModelReference();
+		tableDMR.setDomainModelEFeature(EcorePackage.eINSTANCE.getEClass_ESuperTypes());
+		tableDMR.getColumnDomainModelReferences().add(createDMR(EcorePackage.eINSTANCE.getENamedElement_Name()));
+		tableDMR.getColumnDomainModelReferences().add(
+			createDMR(EcorePackage.eINSTANCE.getEClassifier_InstanceClassName()));
+
+		// render
+		final TableControlSWTRenderer tableRenderer = createRendererInstanceWithCustomCellEditor(tableControl);
+		tableRenderer.getGridDescription(new SWTGridDescription());
+		final Control control = tableRenderer.render(new SWTGridCell(0, 0, tableRenderer), shell);
+		if (control == null) {
+			fail("No control was rendered");
+		}
+		final Table table = SWTTestUtil.findControl(control, 0, Table.class);
+		assertTableItemOrder(table, class1, class2, class3);
+
+		// column 0 is validation column
+
+		// select column 1
+		// up
+		SWTTestUtil.selectWidget(table.getColumns()[1]);
+		SWTTestUtil.waitForUIThread();
+		assertTableItemOrder(table, class3, class2, class1);
+		// down
+		SWTTestUtil.selectWidget(table.getColumns()[1]);
+		SWTTestUtil.waitForUIThread();
+		assertTableItemOrder(table, class1, class2, class3);
+		// none
+		SWTTestUtil.selectWidget(table.getColumns()[1]);
+		SWTTestUtil.waitForUIThread();
+		assertTableItemOrder(table, class1, class2, class3);
+
+		// select column 2
+		// up
+		SWTTestUtil.selectWidget(table.getColumns()[2]);
+		SWTTestUtil.waitForUIThread();
+		assertTableItemOrder(table, class3, class1, class2);
+		// down
+		SWTTestUtil.selectWidget(table.getColumns()[2]);
+		SWTTestUtil.waitForUIThread();
+		assertTableItemOrder(table, class2, class1, class3);
+		// none
+		SWTTestUtil.selectWidget(table.getColumns()[2]);
+		SWTTestUtil.waitForUIThread();
+		assertTableItemOrder(table, class1, class2, class3);
+	}
+
+	@Test
+	public void testTableReadonlyHidesAddRemoveButtons()
+		throws NoRendererFoundException, NoPropertyDescriptorFoundExeption,
+		EMFFormsNoRendererException {
+		// setup model
+		final TableControlHandle handle = createTableWithTwoTableColumns();
+		handle.getTableControl().setReadonly(true);
+		shell.open();
+		final Control render = SWTViewTestHelper.render(handle.getTableControl(), domainElement, shell);
+		assertTrue(render instanceof Composite);
+
+		Composite buttonComposite = (Composite) render;
+		buttonComposite = (Composite) buttonComposite.getChildren()[0];
+		buttonComposite = (Composite) buttonComposite.getChildren()[0];
+		buttonComposite = (Composite) buttonComposite.getChildren()[2];
+
+		final Button addButton = (Button) buttonComposite.getChildren()[0];
+		final Button removeButton = (Button) buttonComposite.getChildren()[1];
+
+		assertFalse(addButton.getVisible());
+		assertFalse(removeButton.getVisible());
+
+	}
+
+	@Test
+	public void testTable_AddRow_WithTableService() throws NoRendererFoundException, NoPropertyDescriptorFoundExeption,
+		EMFFormsNoRendererException {
+		// setup model
+		final TableControlHandle handle = TableTestUtil.createInitializedTableWithoutTableColumns();
+
+		// mock the TableControlService used to create a new element
+		final TableControlService tableService = mock(TableControlService.class);
+		final EClass newEClass = EcoreFactory.eINSTANCE.createEClass();
+		newEClass.setName("NewlyAddedEClass");
+		when(tableService.createNewElement(any(EClass.class), any(EObject.class), any(EStructuralFeature.class)))
+			.thenReturn(Optional.of((EObject) newEClass));
+
+		final ViewModelContextWithoutServices context = new ViewModelContextWithoutServices(handle.getTableControl());
+		context.addService(tableService, TableControlService.class);
+
+		// Render the table
+		final TableControlSWTRenderer tableRenderer = TableControlSWTRenderer.class
+			.cast(rendererFactory.getRendererInstance(
+				handle.getTableControl(), context));
+		tableRenderer.getGridDescription(new SWTGridDescription());
+		final Control render = tableRenderer.render(new SWTGridCell(0, 0, tableRenderer), shell);
+		if (render == null) {
+			fail();
+		}
+		final Control control = getTable(render);
+		assertTrue(control instanceof Table);
+		final Table table = (Table) control;
+
+		// The domain model is initialized with one super type in #init()
+		assertEquals(1, table.getItemCount());
+
+		// Add a new row
+		tableRenderer.addRow(EcorePackage.eINSTANCE.getEClass(), domainElement,
+			EcorePackage.eINSTANCE.getEClass_ESuperTypes());
+
+		// Verify that the new EClass was added to the domain object and the table, and that the TableControlService was
+		// used
+		assertEquals(2, table.getItemCount());
+		assertEquals(2, EClass.class.cast(domainElement).getESuperTypes().size());
+		assertEquals(newEClass, EClass.class.cast(domainElement).getESuperTypes().get(1));
+		assertEquals(1, table.getSelectionIndex());
+		verify(tableService).createNewElement(EcorePackage.eINSTANCE.getEClass(), domainElement,
+			EcorePackage.eINSTANCE.getEClass_ESuperTypes());
+	}
+
+	@Test
+	public void testTable_AddRow_WithTableService_EmptyResult()
+		throws NoRendererFoundException, NoPropertyDescriptorFoundExeption,
+		EMFFormsNoRendererException {
+		// setup model
+		final TableControlHandle handle = TableTestUtil.createInitializedTableWithoutTableColumns();
+
+		// mock the TableControlService used to create a new element
+		final TableControlService tableService = mock(TableControlService.class);
+		when(tableService.createNewElement(any(EClass.class), any(EObject.class), any(EStructuralFeature.class)))
+			.thenReturn(Optional.<EObject> empty());
+
+		final ViewModelContextWithoutServices context = new ViewModelContextWithoutServices(handle.getTableControl());
+		context.addService(tableService, TableControlService.class);
+
+		// Render the table
+		final TableControlSWTRenderer tableRenderer = TableControlSWTRenderer.class
+			.cast(rendererFactory.getRendererInstance(
+				handle.getTableControl(), context));
+		tableRenderer.getGridDescription(new SWTGridDescription());
+		final Control render = tableRenderer.render(new SWTGridCell(0, 0, tableRenderer), shell);
+		if (render == null) {
+			fail();
+		}
+		final Control control = getTable(render);
+		assertTrue(control instanceof Table);
+		final Table table = (Table) control;
+
+		// The domain model is initialized with one super type in #init()
+		assertEquals(1, table.getItemCount());
+
+		// Add a new row
+		tableRenderer.addRow(EcorePackage.eINSTANCE.getEClass(), domainElement,
+			EcorePackage.eINSTANCE.getEClass_ESuperTypes());
+
+		// Verify that the no new EClass was added to the domain object and the table, and that the TableControlService
+		// was used
+		assertEquals(1, table.getItemCount());
+		assertEquals(1, EClass.class.cast(domainElement).getESuperTypes().size());
+		verify(tableService).createNewElement(EcorePackage.eINSTANCE.getEClass(), domainElement,
+			EcorePackage.eINSTANCE.getEClass_ESuperTypes());
+	}
+
+	@Test
+	public void testTable_AddRow_WithTableService_NullResult()
+		throws NoRendererFoundException, NoPropertyDescriptorFoundExeption,
+		EMFFormsNoRendererException {
+		// setup model
+		final TableControlHandle handle = TableTestUtil.createInitializedTableWithoutTableColumns();
+
+		// mock the TableControlService to return null
+		final TableControlService tableService = mock(TableControlService.class);
+		when(tableService.createNewElement(any(EClass.class), any(EObject.class), any(EStructuralFeature.class)))
+			.thenReturn(null);
+		// mock the ReferenceService used to create a new element
+		final EClass newEClass = EcoreFactory.eINSTANCE.createEClass();
+		newEClass.setName("NewlyAddedEClass");
+		final ReferenceService referenceService = mock(ReferenceService.class);
+		when(referenceService.addNewModelElements(any(EObject.class), any(EReference.class), anyBoolean()))
+			.thenReturn(Optional.of((EObject) newEClass));
+
+		final ViewModelContextWithoutServices context = new ViewModelContextWithoutServices(handle.getTableControl());
+		context.addService(tableService, TableControlService.class);
+		context.addService(referenceService, ReferenceService.class);
+
+		// Render the table
+		final TableControlSWTRenderer tableRenderer = TableControlSWTRenderer.class
+			.cast(rendererFactory.getRendererInstance(
+				handle.getTableControl(), context));
+		tableRenderer.getGridDescription(new SWTGridDescription());
+		final Control render = tableRenderer.render(new SWTGridCell(0, 0, tableRenderer), shell);
+		if (render == null) {
+			fail();
+		}
+		final Control control = getTable(render);
+		assertTrue(control instanceof Table);
+		final Table table = (Table) control;
+
+		// The domain model is initialized with one super type in #init()
+		assertEquals(1, table.getItemCount());
+
+		// Add a new row
+		tableRenderer.addRow(EcorePackage.eINSTANCE.getEClass(), domainElement,
+			EcorePackage.eINSTANCE.getEClass_ESuperTypes());
+
+		// Verify that the new EClass was added although the table service returned null
+		assertEquals(2, table.getItemCount());
+		assertEquals(2, EClass.class.cast(domainElement).getESuperTypes().size());
+		assertEquals(1, table.getSelectionIndex());
+		verify(tableService).createNewElement(EcorePackage.eINSTANCE.getEClass(), domainElement,
+			EcorePackage.eINSTANCE.getEClass_ESuperTypes());
+		verify(referenceService).addNewModelElements(domainElement, EcorePackage.eINSTANCE.getEClass_ESuperTypes(),
+			false);
+	}
+
+	@Test
+	public void testTable_AddRow_WithReferenceService()
+		throws NoRendererFoundException, NoPropertyDescriptorFoundExeption,
+		EMFFormsNoRendererException {
+		// setup model
+		final TableControlHandle handle = TableTestUtil.createInitializedTableWithoutTableColumns();
+
+		// mock the ReferenceService used to create a new element
+		final EClass newEClass = EcoreFactory.eINSTANCE.createEClass();
+		newEClass.setName("NewlyAddedEClass");
+		final ReferenceService referenceService = mock(ReferenceService.class);
+		when(referenceService.addNewModelElements(any(EObject.class), any(EReference.class), anyBoolean()))
+			.thenReturn(Optional.of((EObject) newEClass));
+
+		final ViewModelContextWithoutServices context = new ViewModelContextWithoutServices(handle.getTableControl());
+		context.addService(referenceService, ReferenceService.class);
+
+		// Render the table
+		final TableControlSWTRenderer tableRenderer = TableControlSWTRenderer.class
+			.cast(rendererFactory.getRendererInstance(
+				handle.getTableControl(), context));
+		tableRenderer.getGridDescription(new SWTGridDescription());
+		final Control render = tableRenderer.render(new SWTGridCell(0, 0, tableRenderer), shell);
+		if (render == null) {
+			fail();
+		}
+		final Control control = getTable(render);
+		assertTrue(control instanceof Table);
+		final Table table = (Table) control;
+
+		// The domain model is initialized with one super type in #init()
+		assertEquals(1, table.getItemCount());
+
+		// Add a new row
+		tableRenderer.addRow(EcorePackage.eINSTANCE.getEClass(), domainElement,
+			EcorePackage.eINSTANCE.getEClass_ESuperTypes());
+
+		// Verify that the new EClass was added to the domain object and the table, and that the reference service was
+		// used
+		assertEquals(2, table.getItemCount());
+		assertEquals(2, EClass.class.cast(domainElement).getESuperTypes().size());
+		assertEquals(newEClass, EClass.class.cast(domainElement).getESuperTypes().get(1));
+		assertEquals(1, table.getSelectionIndex());
+		verify(referenceService).addNewModelElements(domainElement, EcorePackage.eINSTANCE.getEClass_ESuperTypes(),
+			false);
+	}
+
+	/**
+	 * Tests that the table's summary validation icon's tooltip shows validation messages related directly to the
+	 * table's reference even if the table style property 'showValidationSummaryTooltip' is false (this is the case by
+	 * default). Furthermore, the test checks that validation messages of objects contained in the table's reference are
+	 * not shown in this case.
+	 *
+	 * @throws EMFFormsNoRendererException
+	 * @throws NoRendererFoundException
+	 * @throws NoPropertyDescriptorFoundExeption
+	 */
+	@SuppressWarnings({ "unchecked", "rawtypes" })
+	@Test
+	public void testTable_summaryToolTip_defaultSettings()
+		throws EMFFormsNoRendererException, NoRendererFoundException, NoPropertyDescriptorFoundExeption {
+		// ----- Create Test Model
+		final EPackage ePackage = EcoreFactory.eINSTANCE.createEPackage();
+		final EClass foo = EcoreFactory.eINSTANCE.createEClass();
+		foo.setName("Foo");
+		final EClass bar = EcoreFactory.eINSTANCE.createEClass();
+		bar.setName("Bar");
+		ePackage.getEClassifiers().add(foo);
+		ePackage.getEClassifiers().add(bar);
+
+		final EReference fooToBar = EcoreFactory.eINSTANCE.createEReference();
+		fooToBar.setContainment(true);
+		fooToBar.setEType(bar);
+		fooToBar.setLowerBound(1);
+		fooToBar.setUpperBound(-1);
+		fooToBar.setName("fooToBar");
+		foo.getEStructuralFeatures().add(fooToBar);
+
+		final EAttribute barAttribute = EcoreFactory.eINSTANCE.createEAttribute();
+		barAttribute.setEType(EcorePackage.Literals.ESTRING);
+		barAttribute.setName("barAttribute");
+		bar.getEStructuralFeatures().add(barAttribute);
+		barAttribute.setLowerBound(1);
+		barAttribute.setUpperBound(1);
+		// -----
+
+		final VTableDomainModelReference tableDmr = VTableFactory.eINSTANCE.createTableDomainModelReference();
+		final VFeaturePathDomainModelReference featureDmr = VViewFactory.eINSTANCE
+			.createFeaturePathDomainModelReference();
+		featureDmr.setDomainModelEFeature(fooToBar);
+		tableDmr.setDomainModelReference(featureDmr);
+
+		final VTableControl tableControl = VTableFactory.eINSTANCE.createTableControl();
+		tableControl.setDomainModelReference(tableDmr);
+
+		domainElement = EcoreUtil.create(foo);
+		final VView view = VViewFactory.eINSTANCE.createView();
+		view.setRootEClass(bar);
+		view.getChildren().add(tableControl);
+		final ViewModelContext context = new ViewModelContextImpl(view, domainElement);
+
+		// Render the table
+		final TableControlSWTRenderer tableRenderer = TableControlSWTRenderer.class
+			.cast(rendererFactory.getRendererInstance(
+				tableControl, context));
+		tableRenderer.getGridDescription(new SWTGridDescription());
+		final Control render = tableRenderer.render(new SWTGridCell(0, 0, tableRenderer), shell);
+		if (render == null) {
+			fail();
+		}
+
+		// Get the validation icon
+		Composite composite = (Composite) render;
+		composite = (Composite) composite.getChildren()[0];
+		composite = (Composite) composite.getChildren()[0];
+		final Label validationIcon = (Label) composite.getChildren()[1];
+
+		// Apply validation and wait for Async operation to finish
+		tableRenderer.applyValidation();
+		SWTTestUtil.waitForUIThread();
+
+		assertEquals("The tooltip text should contain the multiplicity error.",
+			"The feature 'fooToBar' of 'Foo' with 0 values must have at least 1 values",
+			validationIcon.getToolTipText());
+
+		// Add a new Bar object to the foo to bar reference. This removes the validation error from the reference and
+		// adds a validation error on the created Bar object.
+		((EList) domainElement.eGet(fooToBar)).add(EcoreUtil.create(bar));
+
+		// Apply validation and wait for Async operation to finish
+		tableRenderer.applyValidation();
+		SWTTestUtil.waitForUIThread();
+
+		assertEquals("The tool tip text should be empty.", "", validationIcon.getToolTipText());
+	}
+
+	private TableControlSWTRenderer createRendererInstanceWithCustomCellEditor(final VTableControl tableControl)
+		throws EMFFormsNoRendererException {
+		final ViewModelContextWithoutServices viewModelContext = new ViewModelContextWithoutServices(tableControl);
+		final EMFFormsContextProvider contextProvider = viewModelContext.getService(EMFFormsContextProvider.class);
+		final IEclipseContext eclipseContext = contextProvider.getContext();
+		final TableControlSWTRenderer tableControlSWTRenderer = new TableControlSWTRenderer(
+			tableControl,
+			viewModelContext,
+			eclipseContext.get(ReportService.class),
+			eclipseContext.get(EMFFormsDatabindingEMF.class),
+			eclipseContext.get(EMFFormsLabelProvider.class),
+			eclipseContext.get(VTViewTemplateProvider.class),
+			eclipseContext.get(ImageRegistryService.class),
+			eclipseContext.get(EMFFormsEditSupport.class)) {
+
+			@Override
+			protected CellEditor createCellEditor(EObject tempInstance, EStructuralFeature feature, Composite table) {
+				if (feature == EcorePackage.eINSTANCE.getENamedElement_Name()) {
+					return new CompareCellEditor(table);
+				}
+				return super.createCellEditor(tempInstance, feature, table);
+			}
+		};
+		tableControlSWTRenderer.init();
+		return tableControlSWTRenderer;
+	}
+
+	private static void assertTableItemOrder(Table table, Object... objects) {
+		assertEquals(objects.length, table.getItemCount());
+		final TableItem[] items = table.getItems();
+		for (int i = 0; i < items.length; i++) {
+			assertSame(objects[i], items[i].getData());
+		}
+	}
+
+	private static EClass createEClass(String name, String instanceClassName) {
+		final EClass clazz = EcoreFactory.eINSTANCE.createEClass();
+		clazz.setName(name);
+		clazz.setInstanceClassName(instanceClassName);
+		return clazz;
+	}
+
+	private static VFeaturePathDomainModelReference createDMR(EAttribute attribute, EReference... refs) {
+		final VFeaturePathDomainModelReference dmr = VViewFactory.eINSTANCE.createFeaturePathDomainModelReference();
+		dmr.setDomainModelEFeature(attribute);
+		dmr.getDomainModelEReferencePath().addAll(Arrays.asList(refs));
+		return dmr;
+	}
+
+	private VView createDetailView() {
+		final VView detailView = VViewFactory.eINSTANCE.createView();
+		final VControl name = VViewFactory.eINSTANCE.createControl();
+		final VFeaturePathDomainModelReference nameRef = VViewFactory.eINSTANCE.createFeaturePathDomainModelReference();
+		nameRef.setDomainModelEFeature(EcorePackage.eINSTANCE.getENamedElement_Name());
+		name.setDomainModelReference(nameRef);
+		detailView.getChildren().add(name);
+		final VControl abstr = VViewFactory.eINSTANCE.createControl();
+		final VFeaturePathDomainModelReference abstractRef = VViewFactory.eINSTANCE
+			.createFeaturePathDomainModelReference();
+		abstractRef.setDomainModelEFeature(EcorePackage.eINSTANCE.getEClass_Abstract());
+		abstr.setDomainModelReference(abstractRef);
+		detailView.getChildren().add(abstr);
+		return detailView;
+
+	}
+
+	private Control getTable(Control render) {
+		Composite composite = (Composite) render;
+		composite = (Composite) composite.getChildren()[0];
+		composite = (Composite) composite.getChildren()[1];
+		// composite = (Composite) composite.getChildren()[0];
+		// composite = (Composite) composite.getChildren()[0];
+		// composite = (Composite) composite.getChildren()[0];
+		return composite.getChildren()[0];
+	}
+
+	private static TableControlHandle createTableWithTwoTableColumns() {
+		final TableControlHandle tableControlHandle = TableTestUtil.createInitializedTableWithoutTableColumns();
+		final VDomainModelReference tableColumn1 = TableTestUtil
+			.createTableColumn(EcorePackage.eINSTANCE.getEClass_Abstract());
+
+		tableControlHandle.addFirstTableColumn(tableColumn1);
+		final VDomainModelReference tableColumn2 = TableTestUtil
+			.createTableColumn(EcorePackage.eINSTANCE.getEClass_Abstract());
+		tableControlHandle.addSecondTableColumn(tableColumn2);
+		return tableControlHandle;
+	}
+
+	private TableViewer getTableViewerFromRenderer(AbstractSWTRenderer<VElement> renderer) {
+		try {
+			final Method method = TableControlSWTRenderer.class.getDeclaredMethod("getTableViewer");
+			method.setAccessible(true);
+			return (TableViewer) method.invoke(renderer);
+		} catch (final NoSuchMethodException ex) {
+			fail(ex.getMessage());
+		} catch (final SecurityException ex) {
+			fail(ex.getMessage());
+		} catch (final IllegalAccessException ex) {
+			fail(ex.getMessage());
+		} catch (final IllegalArgumentException ex) {
+			fail(ex.getMessage());
+		} catch (final InvocationTargetException ex) {
+			fail(ex.getMessage());
+		}
+		return null;
+	}
+
+	/**
+	 * Stub implementation without getting services from ex. point.
+	 *
+	 * @author jfaltermeier
+	 *
+	 */
+	private class ViewModelContextWithoutServices implements ViewModelContext {
+
+		private final VElement view;
+		private final EMFFormsContextProvider contextProvider;
+		private final Map<Class<?>, Object> services = new LinkedHashMap<Class<?>, Object>();
+
+		ViewModelContextWithoutServices(VElement view) {
+			this.view = view;
+			contextProvider = new org.eclipse.emfforms.internal.swt.core.di.EMFFormsContextProviderImpl();
+		}
+
+		/**
+		 * {@inheritDoc}
+		 *
+		 * @see org.eclipse.emf.ecp.view.spi.context.ViewModelContext#getViewModel()
+		 */
+		@Override
+		public VElement getViewModel() {
+			return view;
+		}
+
+		/**
+		 * {@inheritDoc}
+		 *
+		 * @see org.eclipse.emf.ecp.view.spi.context.ViewModelContext#getDomainModel()
+		 */
+		@Override
+		public EObject getDomainModel() {
+			return domainElement;
+		}
+
+		/**
+		 *
+		 * {@inheritDoc}
+		 *
+		 * @see org.eclipse.emf.ecp.view.spi.context.ViewModelContext#registerViewChangeListener(org.eclipse.emf.ecp.view.spi.model.ModelChangeListener)
+		 */
+		@Override
+		public void registerViewChangeListener(ModelChangeListener modelChangeListener) {
+			// not needed
+		}
+
+		/**
+		 *
+		 * {@inheritDoc}
+		 *
+		 * @see org.eclipse.emf.ecp.view.spi.context.ViewModelContext#unregisterViewChangeListener(org.eclipse.emf.ecp.view.spi.model.ModelChangeListener)
+		 */
+		@Override
+		public void unregisterViewChangeListener(ModelChangeListener modelChangeListener) {
+			// not needed
+		}
+
+		/**
+		 *
+		 * {@inheritDoc}
+		 *
+		 * @see org.eclipse.emf.ecp.view.spi.context.ViewModelContext#registerDomainChangeListener(org.eclipse.emf.ecp.view.spi.model.ModelChangeListener)
+		 */
+		@Override
+		public void registerDomainChangeListener(ModelChangeListener modelChangeListener) {
+			// not needed
+		}
+
+		/**
+		 *
+		 * {@inheritDoc}
+		 *
+		 * @see org.eclipse.emf.ecp.view.spi.context.ViewModelContext#unregisterDomainChangeListener(org.eclipse.emf.ecp.view.spi.model.ModelChangeListener)
+		 */
+		@Override
+		public void unregisterDomainChangeListener(ModelChangeListener modelChangeListener) {
+			// not needed
+		}
+
+		/**
+		 * {@inheritDoc}
+		 *
+		 * @see org.eclipse.emf.ecp.view.spi.context.ViewModelContext#dispose()
+		 */
+		@Override
+		public void dispose() {
+			// not needed
+		}
+
+		public <T> void addService(T service, Class<? super T> serviceClass) {
+			services.put(serviceClass, service);
+		}
+
+		/**
+		 * {@inheritDoc}
+		 *
+		 * @see org.eclipse.emf.ecp.view.spi.context.ViewModelContext#hasService(java.lang.Class)
+		 */
+		@Override
+		public <T> boolean hasService(Class<T> serviceType) {
+			if (EMFFormsContextProvider.class.equals(serviceType)) {
+				return true;
+			}
+			if (services.containsKey(serviceType)) {
+				return true;
+			}
+			return false;
+		}
+
+		/**
+		 * {@inheritDoc}
+		 *
+		 * @see org.eclipse.emf.ecp.view.spi.context.ViewModelContext#getService(java.lang.Class)
+		 */
+		@SuppressWarnings("unchecked")
+		@Override
+		public <T> T getService(Class<T> serviceType) {
+			if (EMFFormsContextProvider.class.equals(serviceType)) {
+				return (T) contextProvider;
+			}
+			return (T) services.get(serviceType);
+		}
+
+		/**
+		 * {@inheritDoc}
+		 *
+		 * @see org.eclipse.emf.ecp.view.spi.context.ViewModelContext#getControlsFor(org.eclipse.emf.ecore.EStructuralFeature.Setting)
+		 * @deprecated
+		 */
+		@Deprecated
+		@Override
+		public Set<VControl> getControlsFor(Setting setting) {
+			return null;
+		}
+
+		/**
+		 * {@inheritDoc}
+		 *
+		 * @see org.eclipse.emf.ecp.view.spi.context.ViewModelContext#getControlsFor(org.eclipse.emf.ecp.common.spi.UniqueSetting)
+		 * @deprecated
+		 */
+		@Deprecated
+		@Override
+		public Set<VElement> getControlsFor(UniqueSetting setting) {
+			return null;
+		}
+
+		/**
+		 * {@inheritDoc}
+		 *
+		 * @see org.eclipse.emf.ecp.view.spi.context.ViewModelContext#getContextValue(java.lang.String)
+		 */
+		@Override
+		public Object getContextValue(String key) {
+			return null;
+		}
+
+		/**
+		 * {@inheritDoc}
+		 *
+		 * @see org.eclipse.emf.ecp.view.spi.context.ViewModelContext#putContextValue(java.lang.String,
+		 *      java.lang.Object)
+		 */
+		@Override
+		public void putContextValue(String key, Object value) {
+
+		}
+
+		/**
+		 * {@inheritDoc}
+		 *
+		 * @see org.eclipse.emf.ecp.view.spi.context.ViewModelContext#registerDisposeListener(org.eclipse.emf.ecp.view.spi.context.ViewModelContextDisposeListener)
+		 */
+		@Override
+		public void registerDisposeListener(ViewModelContextDisposeListener listener) {
+			// TODO Auto-generated method stub
+
+		}
+
+		/**
+		 * {@inheritDoc}
+		 *
+		 * @see org.eclipse.emf.ecp.view.spi.context.ViewModelContext#addContextUser(java.lang.Object)
+		 */
+		@Override
+		public void addContextUser(Object user) {
+			// TODO Auto-generated method stub
+
+		}
+
+		/**
+		 * {@inheritDoc}
+		 *
+		 * @see org.eclipse.emf.ecp.view.spi.context.ViewModelContext#removeContextUser(java.lang.Object)
+		 */
+		@Override
+		public void removeContextUser(Object user) {
+			// TODO Auto-generated method stub
+
+		}
+
+		@Deprecated
+		@Override
+		public ViewModelContext getChildContext(EObject eObject, VElement parent, VView vView,
+			ViewModelService... viewModelServices) {
+
+			final ViewModelContextWithoutServices vmcws = new ViewModelContextWithoutServices(vView);
+			return vmcws;
+		}
+
+		@Override
+		public ViewModelContext getChildContext(EObject eObject, VElement parent, VView vView,
+			ViewModelServiceProvider viewModelServiceProvider) {
+
+			return new ViewModelContextWithoutServices(vView);
+		}
+
+		/**
+		 * {@inheritDoc}
+		 *
+		 * @see org.eclipse.emfforms.spi.core.services.view.EMFFormsViewContext#registerEMFFormsContextListener(org.eclipse.emfforms.spi.core.services.view.EMFFormsContextListener)
+		 */
+		@Override
+		public void registerEMFFormsContextListener(EMFFormsContextListener contextListener) {
+		}
+
+		/**
+		 * {@inheritDoc}
+		 *
+		 * @see org.eclipse.emfforms.spi.core.services.view.EMFFormsViewContext#unregisterEMFFormsContextListener(org.eclipse.emfforms.spi.core.services.view.EMFFormsContextListener)
+		 */
+		@Override
+		public void unregisterEMFFormsContextListener(EMFFormsContextListener contextListener) {
+		}
+
+		/**
+		 * {@inheritDoc}
+		 *
+		 * @see org.eclipse.emf.ecp.view.spi.context.ViewModelContext#getParentContext()
+		 */
+		@Override
+		public ViewModelContext getParentContext() {
+			// TODO Auto-generated method stub
+			return null;
+		}
+
+		/**
+		 * {@inheritDoc}
+		 *
+		 * @see org.eclipse.emfforms.spi.core.services.view.EMFFormsViewContext#changeDomainModel(org.eclipse.emf.ecore.EObject)
+		 */
+		@Override
+		public void changeDomainModel(EObject newDomainModel) {
+			// TODO Auto-generated method stub
+
+		}
+
+		/**
+		 * {@inheritDoc}
+		 *
+		 * @see org.eclipse.emfforms.spi.core.services.view.EMFFormsViewContext#registerRootDomainModelChangeListener(org.eclipse.emfforms.spi.core.services.view.RootDomainModelChangeListener)
+		 */
+		@Override
+		public void registerRootDomainModelChangeListener(RootDomainModelChangeListener rootDomainModelChangeListener) {
+			// TODO Auto-generated method stub
+
+		}
+
+		/**
+		 * {@inheritDoc}
+		 *
+		 * @see org.eclipse.emfforms.spi.core.services.view.EMFFormsViewContext#unregisterRootDomainModelChangeListener(org.eclipse.emfforms.spi.core.services.view.RootDomainModelChangeListener)
+		 */
+		@Override
+		public void unregisterRootDomainModelChangeListener(
+			RootDomainModelChangeListener rootDomainModelChangeListener) {
+			// TODO Auto-generated method stub
+
+		}
+
+		/**
+		 * {@inheritDoc}
+		 *
+		 * @see org.eclipse.emf.ecp.view.spi.context.ViewModelContext#getParentVElement()
+		 */
+		@Override
+		public VElement getParentVElement() {
+			// TODO Auto-generated method stub
+			return null;
+		}
+
+	}
+
+	private static class PrintStreamWrapper extends PrintStream {
+
+		private final PrintStream printStream;
+
+		PrintStreamWrapper(PrintStream printStream) {
+			super(new ByteArrayOutputStream());
+			this.printStream = printStream;
+		}
+
+		/**
+		 * {@inheritDoc}
+		 *
+		 * @see java.io.PrintStream#print(java.lang.String)
+		 */
+		@Override
+		public void print(String s) {
+			log = log.concat("\n" + s);
+			printStream.print(s + "\n");
+		}
+	}
+
+	private static class CompareCellEditor extends StringCellEditor implements ECPCellEditorComparator {
+
+		CompareCellEditor(Composite table) {
+			super(table);
+		}
+
+		@Override
+		public int compare(Object e1, Object e2, int direction) {
+			final String value1 = String.class.cast(e1);
+			final String value2 = String.class.cast(e2);
+			int result;
+			if (value1 == null) {
+				result = 1;
+			} else if (value2 == null) {
+				result = -1;
+			} else {
+				result = value1.toString().compareTo(value2.toString()) * -1;// we flip the oder in our custom
+																				// comparator
+			}
+			// If descending order, flip the direction
+			if (direction == 2) {
+				result = -result;
+			}
+			return result;
+		}
+
+	}
+
+}
diff --git a/tests/org.eclipse.emf.ecp.view.table.ui.swt.test/src/org/eclipse/emf/ecp/view/spi/table/swt/TableControlSWTRenderer_ITest.java b/tests/org.eclipse.emf.ecp.view.table.ui.swt.test/src/org/eclipse/emf/ecp/view/spi/table/swt/TableControlSWTRenderer_ITest.java
new file mode 100644
index 0000000..5c4d13e
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.view.table.ui.swt.test/src/org/eclipse/emf/ecp/view/spi/table/swt/TableControlSWTRenderer_ITest.java
@@ -0,0 +1,256 @@
+/*******************************************************************************
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * remi - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.emf.ecp.view.spi.table.swt;
+
+import static org.hamcrest.CoreMatchers.equalTo;
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.notNullValue;
+import static org.hamcrest.Matchers.nullValue;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import java.lang.reflect.Field;
+import java.util.HashSet;
+import java.util.Set;
+
+import org.eclipse.emf.databinding.EMFObservables;
+import org.eclipse.emf.databinding.EMFProperties;
+import org.eclipse.emf.databinding.EObjectObservableValue;
+import org.eclipse.emf.databinding.IEMFValueProperty;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.ecore.EStructuralFeature.Setting;
+import org.eclipse.emf.ecore.EcoreFactory;
+import org.eclipse.emf.ecore.EcorePackage;
+import org.eclipse.emf.ecp.view.model.common.AbstractGridCell.Alignment;
+import org.eclipse.emf.ecp.view.model.common.AbstractRenderer;
+import org.eclipse.emf.ecp.view.spi.context.ViewModelContext;
+import org.eclipse.emf.ecp.view.spi.model.LabelAlignment;
+import org.eclipse.emf.ecp.view.spi.model.VElement;
+import org.eclipse.emf.ecp.view.spi.model.VFeaturePathDomainModelReference;
+import org.eclipse.emf.ecp.view.spi.model.VViewFactory;
+import org.eclipse.emf.ecp.view.spi.table.model.VTableControl;
+import org.eclipse.emf.ecp.view.spi.util.swt.ImageRegistryService;
+import org.eclipse.emf.ecp.view.template.model.VTStyleProperty;
+import org.eclipse.emf.ecp.view.template.model.VTViewTemplateProvider;
+import org.eclipse.emf.ecp.view.template.style.tableStyleProperty.model.RenderMode;
+import org.eclipse.emf.ecp.view.template.style.tableStyleProperty.model.VTTableStyleProperty;
+import org.eclipse.emf.ecp.view.template.style.tableStyleProperty.model.VTTableStylePropertyFactory;
+import org.eclipse.emfforms.common.Optional;
+import org.eclipse.emfforms.internal.core.services.databinding.DefaultRealm;
+import org.eclipse.emfforms.spi.common.report.ReportService;
+import org.eclipse.emfforms.spi.core.services.databinding.DatabindingFailedException;
+import org.eclipse.emfforms.spi.core.services.databinding.emf.EMFFormsDatabindingEMF;
+import org.eclipse.emfforms.spi.core.services.editsupport.EMFFormsEditSupport;
+import org.eclipse.emfforms.spi.core.services.label.EMFFormsLabelProvider;
+import org.eclipse.emfforms.spi.swt.core.layout.SWTGridCell;
+import org.eclipse.emfforms.spi.swt.core.layout.SWTGridDescription;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.Matchers;
+import org.mockito.Mockito;
+
+/**
+ * Basic tests around {@link TableControlSWTRenderer}.
+ */
+@SuppressWarnings("restriction")
+public class TableControlSWTRenderer_ITest {
+
+	private EPackage ePackage;
+	private EClass eClass1;
+	private DefaultRealm realm;
+
+	private VTableControl vElement;
+	private ViewModelContext viewContext;
+	private ReportService reportService;
+	private EMFFormsDatabindingEMF emfFormsDatabinding;
+	private EMFFormsLabelProvider emfFormsLabelProvider;
+	private VTViewTemplateProvider vtViewTemplateProvider;
+	private ImageRegistryService imageRegistryService;
+	private EMFFormsEditSupport emfFormsEditSupport;
+
+	@Before
+	public void before() {
+		ePackage = EcoreFactory.eINSTANCE.createEPackage();
+		ePackage.setName("pack1");
+		eClass1 = EcoreFactory.eINSTANCE.createEClass();
+		ePackage.getEClassifiers().add(eClass1);
+		realm = new DefaultRealm();
+
+		vElement = mock(VTableControl.class);
+		viewContext = mock(ViewModelContext.class);
+		reportService = mock(ReportService.class);
+		emfFormsDatabinding = mock(EMFFormsDatabindingEMF.class);
+		emfFormsLabelProvider = mock(EMFFormsLabelProvider.class);
+		vtViewTemplateProvider = mock(VTViewTemplateProvider.class);
+		imageRegistryService = mock(ImageRegistryService.class);
+		emfFormsEditSupport = mock(EMFFormsEditSupport.class);
+	}
+
+	@After
+	public void after() {
+		realm.dispose();
+	}
+
+	private void setupCompact() {
+		final Set<VTStyleProperty> properties = new HashSet<VTStyleProperty>();
+		final VTTableStyleProperty tableStyleProperty = VTTableStylePropertyFactory.eINSTANCE
+			.createTableStyleProperty();
+		tableStyleProperty.setRenderMode(RenderMode.COMPACT_VERTICALLY);
+		properties.add(tableStyleProperty);
+		Mockito.when(vtViewTemplateProvider.getStyleProperties(Matchers.any(VElement.class),
+			Matchers.any(ViewModelContext.class))).thenReturn(properties);
+	}
+
+	@Test
+	public void getSettingFromObservable_simple() throws DatabindingFailedException {
+		final EStructuralFeature feature = EcorePackage.Literals.ENAMED_ELEMENT__NAME;
+
+		final Optional<Setting> result = doGetSettingFromObservable(feature, ePackage, ePackage);
+
+		assertThat(result.isPresent(), is(true));
+		assertThat(ePackage, equalTo(result.get().getEObject()));
+		assertThat(feature, equalTo(result.get().getEStructuralFeature()));
+	}
+
+	protected Optional<Setting> doGetSettingFromObservable(EStructuralFeature feature, EObject mainObject,
+		EObject observed) throws DatabindingFailedException {
+		final TableControlSWTRenderer renderer = mock(TableControlSWTRenderer.class);
+		final VFeaturePathDomainModelReference dmr = VViewFactory.eINSTANCE.createFeaturePathDomainModelReference();
+		dmr.setDomainModelEFeature(feature);
+
+		final IEMFValueProperty valueProperty = EMFProperties.value(feature);
+		final EObjectObservableValue observableValue = (EObjectObservableValue) EMFObservables.observeValue(
+			realm, observed,
+			feature);
+
+		final EMFFormsDatabindingEMF db = mock(EMFFormsDatabindingEMF.class);
+		Mockito.when(renderer.getEMFFormsDatabinding()).thenReturn(db);
+		when(db.getValueProperty(dmr, mainObject)).thenReturn(valueProperty);
+		when(db.getObservableValue(dmr, mainObject)).thenReturn(observableValue);
+
+		Mockito.when(renderer.getSettingFromObservable(dmr, mainObject)).thenCallRealMethod();
+		return renderer.getSettingFromObservable(dmr, mainObject);
+	}
+
+	protected TableControlSWTRenderer createNonMockRenderer() {
+		return new TableControlSWTRenderer(vElement, viewContext, reportService, emfFormsDatabinding,
+			emfFormsLabelProvider, vtViewTemplateProvider, imageRegistryService, emfFormsEditSupport);
+	}
+
+	@Test
+	public void getSettingFromObservable_noFeature() throws DatabindingFailedException {
+		final EStructuralFeature feature = EcorePackage.Literals.ECLASS__ABSTRACT;
+
+		final Optional<Setting> result = doGetSettingFromObservable(feature, ePackage, ePackage);
+		assertThat(result.isPresent(), is(false));
+	}
+
+	@Test
+	public void getSettingFromObservable_differentObserved() throws DatabindingFailedException {
+		final EStructuralFeature feature = EcorePackage.Literals.ECLASS__EOPERATIONS;
+		final Optional<Setting> result = doGetSettingFromObservable(feature, ePackage, eClass1);
+		assertThat(result.isPresent(), is(true));
+		assertThat(eClass1, equalTo(result.get().getEObject()));
+		assertThat(feature, equalTo(result.get().getEStructuralFeature()));
+	}
+
+	@Test
+	public void getSettingFromObservable_differentObservedNoFeature() throws DatabindingFailedException {
+		final EStructuralFeature feature = EcorePackage.Literals.EPACKAGE__ESUBPACKAGES;
+
+		final Optional<Setting> result = doGetSettingFromObservable(feature, ePackage, eClass1);
+		assertThat(result.isPresent(), is(false));
+	}
+
+	@Test
+	public void getSettingFromObservable_observedNull() throws DatabindingFailedException {
+		final EStructuralFeature feature = EcorePackage.Literals.EPACKAGE__ESUBPACKAGES;
+		final Optional<Setting> result = doGetSettingFromObservable(feature, ePackage, null);
+		assertThat(result.isPresent(), is(false));
+	}
+
+	@Test
+	public void getSettingFromObservable_databindingException()
+		throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException,
+		DatabindingFailedException {
+		final EStructuralFeature feature = EcorePackage.Literals.EPACKAGE__ESUBPACKAGES;
+		final TableControlSWTRenderer renderer = mock(TableControlSWTRenderer.class);
+		final DatabindingFailedException dbfe = new DatabindingFailedException("testing");
+		final ReportService reportService = mock(ReportService.class);
+
+		final Field field = AbstractRenderer.class.getDeclaredField("reportService");
+		field.setAccessible(true);
+		field.set(renderer, reportService);
+
+		final VFeaturePathDomainModelReference dmr = VViewFactory.eINSTANCE.createFeaturePathDomainModelReference();
+		dmr.setDomainModelEFeature(feature);
+
+		final EMFFormsDatabindingEMF db = mock(EMFFormsDatabindingEMF.class);
+		Mockito.when(renderer.getEMFFormsDatabinding()).thenReturn(db);
+		when(db.getObservableValue(dmr, ePackage)).thenThrow(dbfe);
+
+		Mockito.when(renderer.getSettingFromObservable(dmr, ePackage)).thenCallRealMethod();
+		final Optional<Setting> result = renderer.getSettingFromObservable(dmr, ePackage);
+		assertThat(result.isPresent(), is(false));
+	}
+
+	@Test
+	public void getGridDescription_WithLabel() {
+		setupCompact();
+		when(vElement.getLabelAlignment()).thenReturn(LabelAlignment.DEFAULT);
+		final TableControlSWTRenderer renderer = createNonMockRenderer();
+
+		final SWTGridDescription gridDescription = renderer.getGridDescription(null);
+		assertThat(gridDescription.getColumns(), is(equalTo(3)));
+
+		assertLabelCell(gridDescription.getGrid().get(0));
+		assertValidationCell(gridDescription.getGrid().get(1));
+		assertMainCell(gridDescription.getGrid().get(2));
+	}
+
+	@Test
+	public void getGridDescription_WithoutLabel() {
+		setupCompact();
+		when(vElement.getLabelAlignment()).thenReturn(LabelAlignment.NONE);
+		final TableControlSWTRenderer renderer = createNonMockRenderer();
+
+		final SWTGridDescription gridDescription = renderer.getGridDescription(null);
+		assertThat(gridDescription.getColumns(), is(equalTo(2)));
+
+		assertValidationCell(gridDescription.getGrid().get(0));
+		assertMainCell(gridDescription.getGrid().get(1));
+	}
+
+	private void assertLabelCell(SWTGridCell labelCell) {
+		assertThat(labelCell.getPreferredSize(), nullValue());
+		assertThat(labelCell.isHorizontalGrab(), is(false));
+		assertThat(labelCell.getVerticalAlignment(), is(Alignment.BEGINNING));
+	}
+
+	private void assertValidationCell(SWTGridCell validationCell) {
+		assertThat(validationCell.getPreferredSize(), notNullValue());
+		assertThat(validationCell.isHorizontalGrab(), is(false));
+		assertThat(validationCell.getVerticalAlignment(), is(Alignment.BEGINNING));
+	}
+
+	private void assertMainCell(SWTGridCell mainCell) {
+		assertThat(mainCell.getPreferredSize(), nullValue());
+		assertThat(mainCell.isHorizontalGrab(), is(true));
+		assertThat(mainCell.isVerticalGrab(), is(true));
+	}
+
+}
diff --git a/tests/org.eclipse.emf.ecp.view.table.ui.swt.test/src/org/eclipse/emf/ecp/view/table/ui/swt/test/AllTests.java b/tests/org.eclipse.emf.ecp.view.table.ui.swt.test/src/org/eclipse/emf/ecp/view/table/ui/swt/test/AllTests.java
index f4b5420..c259cc2 100644
--- a/tests/org.eclipse.emf.ecp.view.table.ui.swt.test/src/org/eclipse/emf/ecp/view/table/ui/swt/test/AllTests.java
+++ b/tests/org.eclipse.emf.ecp.view.table.ui.swt.test/src/org/eclipse/emf/ecp/view/table/ui/swt/test/AllTests.java
@@ -12,6 +12,8 @@
  ******************************************************************************/
 package org.eclipse.emf.ecp.view.table.ui.swt.test;
 
+import org.eclipse.emf.ecp.view.spi.table.swt.SWTTableDatabindingLabel_PTest;
+import org.eclipse.emf.ecp.view.spi.table.swt.SWTTable_PTest;
 import org.junit.runner.RunWith;
 import org.junit.runners.Suite;
 import org.junit.runners.Suite.SuiteClasses;
diff --git a/tests/org.eclipse.emf.ecp.view.table.ui.swt.test/src/org/eclipse/emf/ecp/view/table/ui/swt/test/SWTTableDatabindingLabel_PTest.java b/tests/org.eclipse.emf.ecp.view.table.ui.swt.test/src/org/eclipse/emf/ecp/view/table/ui/swt/test/SWTTableDatabindingLabel_PTest.java
deleted file mode 100644
index f60275b..0000000
--- a/tests/org.eclipse.emf.ecp.view.table.ui.swt.test/src/org/eclipse/emf/ecp/view/table/ui/swt/test/SWTTableDatabindingLabel_PTest.java
+++ /dev/null
@@ -1,340 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2011-2015 EclipseSource Muenchen GmbH 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:
- * Lucas Koehler - initial API and implementation
- ******************************************************************************/
-package org.eclipse.emf.ecp.view.table.ui.swt.test;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-import static org.mockito.Matchers.any;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
-
-import java.util.LinkedList;
-import java.util.List;
-
-import org.eclipse.core.databinding.observable.Observables;
-import org.eclipse.core.databinding.observable.list.IObservableList;
-import org.eclipse.core.databinding.observable.list.WritableList;
-import org.eclipse.core.databinding.observable.value.IObservableValue;
-import org.eclipse.core.databinding.property.value.IValueProperty;
-import org.eclipse.emf.databinding.IEMFValueProperty;
-import org.eclipse.emf.databinding.internal.EMFValueProperty;
-import org.eclipse.emf.databinding.internal.EMFValuePropertyDecorator;
-import org.eclipse.emf.ecore.EClass;
-import org.eclipse.emf.ecore.EObject;
-import org.eclipse.emf.ecore.EReference;
-import org.eclipse.emf.ecore.EStructuralFeature;
-import org.eclipse.emf.ecore.EcoreFactory;
-import org.eclipse.emf.ecore.EcorePackage;
-import org.eclipse.emf.ecore.InternalEObject;
-import org.eclipse.emf.ecp.view.internal.context.ViewModelContextImpl;
-import org.eclipse.emf.ecp.view.spi.context.ViewModelContext;
-import org.eclipse.emf.ecp.view.spi.model.VDomainModelReference;
-import org.eclipse.emf.ecp.view.spi.model.VFeaturePathDomainModelReference;
-import org.eclipse.emf.ecp.view.spi.model.VViewFactory;
-import org.eclipse.emf.ecp.view.spi.renderer.NoPropertyDescriptorFoundExeption;
-import org.eclipse.emf.ecp.view.spi.renderer.NoRendererFoundException;
-import org.eclipse.emf.ecp.view.spi.table.model.VTableControl;
-import org.eclipse.emf.ecp.view.spi.table.model.VTableDomainModelReference;
-import org.eclipse.emf.ecp.view.spi.table.model.VTableFactory;
-import org.eclipse.emf.ecp.view.spi.table.swt.TableControlSWTRenderer;
-import org.eclipse.emf.ecp.view.spi.util.swt.ImageRegistryService;
-import org.eclipse.emf.ecp.view.template.model.VTViewTemplateProvider;
-import org.eclipse.emf.ecp.view.test.common.swt.spi.DatabindingClassRunner;
-import org.eclipse.emfforms.spi.common.report.ReportService;
-import org.eclipse.emfforms.spi.core.services.databinding.DatabindingFailedException;
-import org.eclipse.emfforms.spi.core.services.databinding.emf.EMFFormsDatabindingEMF;
-import org.eclipse.emfforms.spi.core.services.editsupport.EMFFormsEditSupport;
-import org.eclipse.emfforms.spi.core.services.label.EMFFormsLabelProvider;
-import org.eclipse.emfforms.spi.core.services.label.NoLabelFoundException;
-import org.eclipse.emfforms.spi.swt.core.layout.SWTGridCell;
-import org.eclipse.emfforms.spi.swt.core.layout.SWTGridDescription;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.Table;
-import org.eclipse.swt.widgets.TableColumn;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.Matchers;
-
-/**
- * JUnit tests for {@link TableControlSWTRenderer} testing the data binding of the table.
- *
- * @author Lucas Koehler
- *
- */
-@SuppressWarnings("restriction")
-@RunWith(DatabindingClassRunner.class)
-public class SWTTableDatabindingLabel_PTest {
-	private static final IObservableValue DISPLAYNAME = Observables.constantObservableValue("displayname");
-	private static final IObservableValue DISPLAYNAME_COLUMNS = Observables
-		.constantObservableValue("displayname-columns");
-	private static final IObservableValue DESCRIPTION = Observables.constantObservableValue("description");
-	private static final IObservableValue DESCRIPTION_COLUMNS = Observables
-		.constantObservableValue("description-columns");
-	private EMFFormsDatabindingEMF databindingService;
-	private TableControlSWTRenderer renderer;
-	private Shell shell;
-	private EClass domainModel;
-	private VTableControl vTableControl;
-	private EMFFormsLabelProvider labelProvider;
-
-	/**
-	 * Set up executed before every test.
-	 * Mocks and registers the databinding and label service.
-	 * Creates a new {@link TableControlSWTRenderer} to be tested. Mocks needed parameters and contents (e.g.
-	 * VControl, ViewModelContext).
-	 *
-	 * @throws DatabindingFailedException
-	 * @throws NoLabelFoundException
-	 */
-	@Before
-	public void setUp() throws DatabindingFailedException, NoLabelFoundException {
-		databindingService = mock(EMFFormsDatabindingEMF.class);
-		labelProvider = mock(EMFFormsLabelProvider.class);
-
-		when(labelProvider.getDescription(any(VDomainModelReference.class))).thenReturn(DESCRIPTION_COLUMNS);
-		when(labelProvider.getDescription(any(VDomainModelReference.class), any(EObject.class))).thenReturn(
-			DESCRIPTION);
-		when(labelProvider.getDisplayName(any(VDomainModelReference.class))).thenReturn(DISPLAYNAME_COLUMNS);
-		when(labelProvider.getDisplayName(any(VDomainModelReference.class), any(EObject.class))).thenReturn(
-			DISPLAYNAME);
-
-		shell = new Shell();
-
-		domainModel = EcoreFactory.eINSTANCE.createEClass();
-		final EStructuralFeature eStructuralFeature = EcorePackage.eINSTANCE.getEClass_ESuperTypes();
-
-		final VTableDomainModelReference tableDomainModelReference = createTableDomainModelReference(
-			eStructuralFeature);
-		vTableControl = VTableFactory.eINSTANCE.createTableControl();
-		vTableControl.setDomainModelReference(tableDomainModelReference);
-
-		final IValueProperty valueProperty = new EMFValueProperty(EcorePackage.eINSTANCE.getEClass_ESuperTypes());
-		final IObservableValue observableValue = valueProperty.observe(domainModel);
-		when(databindingService.getObservableValue(vTableControl.getDomainModelReference(), domainModel)).thenReturn(
-			observableValue);
-
-		final ReportService reportservice = mock(ReportService.class);
-		final VTViewTemplateProvider vtViewTemplateProvider = mock(VTViewTemplateProvider.class);
-		final ImageRegistryService imageRegistryService = mock(ImageRegistryService.class);
-		final EMFFormsEditSupport emfFormsEditSupport = mock(EMFFormsEditSupport.class);
-		final ViewModelContext viewContext = new ViewModelContextImpl(vTableControl, domainModel);
-
-		renderer = new TableControlSWTRenderer(vTableControl, viewContext, reportservice, databindingService,
-			labelProvider, vtViewTemplateProvider, imageRegistryService, emfFormsEditSupport);
-		renderer.init();
-		renderer.getGridDescription(new SWTGridDescription());
-	}
-
-	private VTableDomainModelReference createTableDomainModelReference(EStructuralFeature eStructuralFeature) {
-		final VTableDomainModelReference tableDomainModelReference = VTableFactory.eINSTANCE
-			.createTableDomainModelReference();
-		tableDomainModelReference.setDomainModelEFeature(eStructuralFeature);
-
-		final VFeaturePathDomainModelReference columnReference1 = VViewFactory.eINSTANCE
-			.createFeaturePathDomainModelReference();
-		columnReference1.setDomainModelEFeature(EcorePackage.eINSTANCE.getEClass_Abstract());
-
-		tableDomainModelReference.getColumnDomainModelReferences().add(columnReference1);
-
-		return tableDomainModelReference;
-	}
-
-	@Test
-	public void testLabelServiceUsage() throws NoRendererFoundException, NoPropertyDescriptorFoundExeption,
-		DatabindingFailedException {
-		final IEMFValueProperty columnValueProperty = new EMFValuePropertyDecorator(
-			new EMFValueProperty(EcorePackage.eINSTANCE.getEClass_Abstract()),
-			EcorePackage.eINSTANCE.getEClass_Abstract());
-		final VDomainModelReference columnDMR = ((VTableDomainModelReference) vTableControl.getDomainModelReference())
-			.getColumnDomainModelReferences().get(0);
-		when(databindingService.getValueProperty(columnDMR, domainModel)).thenReturn(columnValueProperty);
-
-		final EReference eReference = mock(EReference.class);
-		final EClass eClass = EcorePackage.eINSTANCE.getEClass();
-		when(eReference.getEReferenceType()).thenReturn(eClass);
-
-		final WritableList mockedObservableList = new WritableList(createInitialList(), eReference);
-
-		when(databindingService.getObservableList(Matchers.eq(vTableControl.getDomainModelReference()),
-			any(EObject.class)))
-				.thenReturn(mockedObservableList);
-		when(databindingService.getSetting(vTableControl.getDomainModelReference(), domainModel)).thenReturn(
-			InternalEObject.class.cast(domainModel).eSetting(EcorePackage.eINSTANCE.getEClass_ESuperTypes()));
-
-		final Composite renderedControl = (Composite) renderer.render(new SWTGridCell(0, 0, renderer), shell);
-		final Composite composite = (Composite) renderedControl.getChildren()[0];
-		final Composite titleComposite = (Composite) composite.getChildren()[0];
-		final Label titleLabel = (Label) titleComposite.getChildren()[0];
-
-		assertEquals(DISPLAYNAME.getValue(), titleLabel.getText());
-
-		final Control tableControl = getTable(renderedControl);
-		assertTrue(Table.class.isInstance(tableControl));
-		final Table table = (Table) tableControl;
-		final TableColumn column = table.getColumn(1);
-		assertEquals(DISPLAYNAME_COLUMNS.getValue(), column.getText());
-		assertEquals(DESCRIPTION_COLUMNS.getValue(), column.getToolTipText());
-	}
-
-	/**
-	 * Tests the initial binding from the model to the table.
-	 *
-	 * @throws NoRendererFoundException Renderer could not be found
-	 * @throws NoPropertyDescriptorFoundExeption Property descriptor could not be found
-	 * @throws DatabindingFailedException if the databinidng failed
-	 */
-	@Test
-	public void testDatabindingServiceUsageInitialBinding() throws NoRendererFoundException,
-		NoPropertyDescriptorFoundExeption, DatabindingFailedException {
-		final List<EClass> initialList = createInitialList();
-
-		final EReference eReference = mock(EReference.class);
-		final EClass eClass = EcorePackage.eINSTANCE.getEClass();
-		when(eReference.getEReferenceType()).thenReturn(eClass);
-
-		final WritableList mockedObservableList = new WritableList(initialList, eReference);
-
-		final Table table = setUpDatabindingTests(mockedObservableList, initialList.get(0), initialList.get(1));
-
-		assertDatabinding(mockedObservableList, table);
-	}
-
-	/**
-	 * Tests the binding from the model to the table for the addition of a new element to the model.
-	 *
-	 * @throws NoRendererFoundException Renderer could not be found
-	 * @throws NoPropertyDescriptorFoundExeption Property descriptor could not be found
-	 * @throws DatabindingFailedException if the databinidng failed
-	 */
-	@Test
-	public void testDatabindingServiceUsageAddToModel() throws NoRendererFoundException,
-		NoPropertyDescriptorFoundExeption, DatabindingFailedException {
-		final List<EClass> initialList = createInitialList();
-
-		final EReference eReference = mock(EReference.class);
-		final EClass eClass = EcorePackage.eINSTANCE.getEClass();
-		when(eReference.getEReferenceType()).thenReturn(eClass);
-
-		final WritableList mockedObservableList = new WritableList(initialList, eReference);
-
-		final Table table = setUpDatabindingTests(mockedObservableList, initialList.get(0), initialList.get(1));
-
-		final EClass class3 = EcoreFactory.eINSTANCE.createEClass();
-		class3.setAbstract(true);
-		mockedObservableList.add(class3);
-
-		assertDatabinding(mockedObservableList, table);
-	}
-
-	/**
-	 * Tests the binding from the model to the table for the removal of a element from the model .
-	 *
-	 * @throws NoRendererFoundException Renderer could not be found
-	 * @throws NoPropertyDescriptorFoundExeption Property descriptor could not be found
-	 * @throws DatabindingFailedException if the databinidng failed
-	 */
-	@Test
-	public void testDatabindingServiceUsageRemoveFromModel() throws NoRendererFoundException,
-		NoPropertyDescriptorFoundExeption, DatabindingFailedException {
-		final List<EClass> initialList = createInitialList();
-		final EReference eReference = mock(EReference.class);
-		final EClass eClass = EcorePackage.eINSTANCE.getEClass();
-		when(eReference.getEReferenceType()).thenReturn(eClass);
-		final WritableList mockedObservableList = new WritableList(initialList, eReference);
-
-		final Table table = setUpDatabindingTests(mockedObservableList, initialList.get(0), initialList.get(1));
-
-		mockedObservableList.remove(1);
-
-		assertDatabinding(mockedObservableList, table);
-	}
-
-	/**
-	 * Tests the binding from the model to the table for the change of an element of the model.
-	 *
-	 * @throws NoRendererFoundException Renderer could not be found
-	 * @throws NoPropertyDescriptorFoundExeption Property descriptor could not be found
-	 * @throws DatabindingFailedException if the databinidng failed
-	 */
-	@Test
-	public void testDatabindingServiceUsageChangeModel() throws NoRendererFoundException,
-		NoPropertyDescriptorFoundExeption, DatabindingFailedException {
-		final List<EClass> initialList = createInitialList();
-		final EReference eReference = mock(EReference.class);
-		final EClass eClass = EcorePackage.eINSTANCE.getEClass();
-		when(eReference.getEReferenceType()).thenReturn(eClass);
-		final WritableList mockedObservableList = new WritableList(initialList, eReference);
-
-		final Table table = setUpDatabindingTests(mockedObservableList, initialList.get(0), initialList.get(1));
-
-		((EClass) mockedObservableList.get(0)).setAbstract(true);
-
-		assertDatabinding(mockedObservableList, table);
-	}
-
-	private void assertDatabinding(final WritableList mockedObservableList, final Table table) {
-		assertEquals(mockedObservableList.size(), table.getItemCount());
-		for (int i = 0; i < mockedObservableList.size(); i++) {
-			assertEquals(Boolean.toString(((EClass) mockedObservableList.get(i)).isAbstract()), table.getItem(i)
-				.getText(1));
-		}
-	}
-
-	/**
-	 * @return The initial list for data binding tests containing two {@link EClass} objects.
-	 */
-	private List<EClass> createInitialList() {
-		final List<EClass> initialList = new LinkedList<EClass>();
-		final EClass class1 = EcoreFactory.eINSTANCE.createEClass();
-		class1.setAbstract(false);
-		final EClass class2 = EcoreFactory.eINSTANCE.createEClass();
-		class2.setAbstract(true);
-		initialList.add(class1);
-		initialList.add(class2);
-		return initialList;
-	}
-
-	private Table setUpDatabindingTests(IObservableList mockedObservableList, EClass class1, EClass class2)
-		throws NoRendererFoundException,
-		NoPropertyDescriptorFoundExeption, DatabindingFailedException {
-
-		final IEMFValueProperty columnValueProperty = new EMFValuePropertyDecorator(
-			new EMFValueProperty(EcorePackage.eINSTANCE.getEClass_Abstract()),
-			EcorePackage.eINSTANCE.getEClass_Abstract());
-		final VDomainModelReference columnDMR = ((VTableDomainModelReference) vTableControl.getDomainModelReference())
-			.getColumnDomainModelReferences().get(0);
-		when(databindingService.getValueProperty(columnDMR, domainModel)).thenReturn(columnValueProperty);
-
-		when(databindingService.getSetting(vTableControl.getDomainModelReference(), domainModel)).thenReturn(
-			InternalEObject.class.cast(domainModel).eSetting(EcorePackage.eINSTANCE.getEClass_ESuperTypes()));
-
-		when(databindingService.getObservableList(any(VDomainModelReference.class), any(EObject.class))).thenReturn(
-			mockedObservableList);
-
-		final Control renderedControl = renderer.render(new SWTGridCell(0, 0, renderer), shell);
-		assertTrue(Composite.class.isInstance(renderedControl));
-		final Control tableControl = getTable(renderedControl);
-		assertTrue(Table.class.isInstance(tableControl));
-		return (Table) tableControl;
-	}
-
-	private Control getTable(Control render) {
-		Composite composite = (Composite) render;
-		composite = (Composite) composite.getChildren()[0];
-		composite = (Composite) composite.getChildren()[1];
-		return composite.getChildren()[0];
-	}
-}
diff --git a/tests/org.eclipse.emf.ecp.view.table.ui.swt.test/src/org/eclipse/emf/ecp/view/table/ui/swt/test/SWTTable_PTest.java b/tests/org.eclipse.emf.ecp.view.table.ui.swt.test/src/org/eclipse/emf/ecp/view/table/ui/swt/test/SWTTable_PTest.java
deleted file mode 100644
index 32a34b3..0000000
--- a/tests/org.eclipse.emf.ecp.view.table.ui.swt.test/src/org/eclipse/emf/ecp/view/table/ui/swt/test/SWTTable_PTest.java
+++ /dev/null
@@ -1,1019 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2011-2017 EclipseSource Muenchen GmbH 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:
- * Johannes Faltermeier
- * Christian W. Damus - bug 527740
- *
- *******************************************************************************/
-package org.eclipse.emf.ecp.view.table.ui.swt.test;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertSame;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-
-import java.io.ByteArrayOutputStream;
-import java.io.PrintStream;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.util.Arrays;
-import java.util.Set;
-
-import org.eclipse.e4.core.contexts.IEclipseContext;
-import org.eclipse.emf.ecore.EAttribute;
-import org.eclipse.emf.ecore.EClass;
-import org.eclipse.emf.ecore.EObject;
-import org.eclipse.emf.ecore.EReference;
-import org.eclipse.emf.ecore.EStructuralFeature;
-import org.eclipse.emf.ecore.EStructuralFeature.Setting;
-import org.eclipse.emf.ecore.EcoreFactory;
-import org.eclipse.emf.ecore.EcorePackage;
-import org.eclipse.emf.ecp.common.spi.UniqueSetting;
-import org.eclipse.emf.ecp.edit.spi.swt.table.ECPCellEditorComparator;
-import org.eclipse.emf.ecp.edit.spi.swt.table.StringCellEditor;
-import org.eclipse.emf.ecp.view.spi.context.ViewModelContext;
-import org.eclipse.emf.ecp.view.spi.context.ViewModelContextDisposeListener;
-import org.eclipse.emf.ecp.view.spi.context.ViewModelService;
-import org.eclipse.emf.ecp.view.spi.context.ViewModelServiceProvider;
-import org.eclipse.emf.ecp.view.spi.model.ModelChangeListener;
-import org.eclipse.emf.ecp.view.spi.model.VControl;
-import org.eclipse.emf.ecp.view.spi.model.VDomainModelReference;
-import org.eclipse.emf.ecp.view.spi.model.VElement;
-import org.eclipse.emf.ecp.view.spi.model.VFeaturePathDomainModelReference;
-import org.eclipse.emf.ecp.view.spi.model.VView;
-import org.eclipse.emf.ecp.view.spi.model.VViewFactory;
-import org.eclipse.emf.ecp.view.spi.model.VViewPackage;
-import org.eclipse.emf.ecp.view.spi.renderer.NoPropertyDescriptorFoundExeption;
-import org.eclipse.emf.ecp.view.spi.renderer.NoRendererFoundException;
-import org.eclipse.emf.ecp.view.spi.table.model.DetailEditing;
-import org.eclipse.emf.ecp.view.spi.table.model.VTableControl;
-import org.eclipse.emf.ecp.view.spi.table.model.VTableDomainModelReference;
-import org.eclipse.emf.ecp.view.spi.table.model.VTableFactory;
-import org.eclipse.emf.ecp.view.spi.table.swt.TableControlSWTRenderer;
-import org.eclipse.emf.ecp.view.spi.util.swt.ImageRegistryService;
-import org.eclipse.emf.ecp.view.template.model.VTViewTemplateProvider;
-import org.eclipse.emf.ecp.view.test.common.swt.spi.DatabindingClassRunner;
-import org.eclipse.emf.ecp.view.test.common.swt.spi.SWTTestUtil;
-import org.eclipse.emf.ecp.view.test.common.swt.spi.SWTViewTestHelper;
-import org.eclipse.emfforms.spi.common.report.ReportService;
-import org.eclipse.emfforms.spi.core.services.databinding.emf.EMFFormsDatabindingEMF;
-import org.eclipse.emfforms.spi.core.services.editsupport.EMFFormsEditSupport;
-import org.eclipse.emfforms.spi.core.services.label.EMFFormsLabelProvider;
-import org.eclipse.emfforms.spi.core.services.view.EMFFormsContextListener;
-import org.eclipse.emfforms.spi.core.services.view.RootDomainModelChangeListener;
-import org.eclipse.emfforms.spi.swt.core.AbstractSWTRenderer;
-import org.eclipse.emfforms.spi.swt.core.EMFFormsNoRendererException;
-import org.eclipse.emfforms.spi.swt.core.EMFFormsRendererFactory;
-import org.eclipse.emfforms.spi.swt.core.di.EMFFormsContextProvider;
-import org.eclipse.emfforms.spi.swt.core.layout.SWTGridCell;
-import org.eclipse.emfforms.spi.swt.core.layout.SWTGridDescription;
-import org.eclipse.jface.viewers.CellEditor;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.jface.viewers.TableViewer;
-import org.eclipse.swt.custom.ScrolledComposite;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.Table;
-import org.eclipse.swt.widgets.TableItem;
-import org.junit.After;
-import org.junit.AfterClass;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.Ignore;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.osgi.framework.BundleContext;
-import org.osgi.framework.FrameworkUtil;
-import org.osgi.framework.ServiceReference;
-
-@RunWith(DatabindingClassRunner.class)
-public class SWTTable_PTest {
-	private static String log;
-	private static ServiceReference<EMFFormsRendererFactory> factoryServiceReference;
-	private static EMFFormsRendererFactory rendererFactory;
-	private static PrintStream systemErr;
-	private Shell shell;
-	private EObject domainElement;
-
-	@BeforeClass
-	public static void beforeClass() {
-		systemErr = System.err;
-		System.setErr(new PrintStreamWrapper(systemErr));
-		final BundleContext bundleContext = FrameworkUtil.getBundle(SWTTable_PTest.class).getBundleContext();
-		factoryServiceReference = bundleContext.getServiceReference(EMFFormsRendererFactory.class);
-		rendererFactory = bundleContext.getService(factoryServiceReference);
-	}
-
-	@AfterClass
-	public static void afterClass() {
-		System.setErr(systemErr);
-		final BundleContext bundleContext = FrameworkUtil.getBundle(SWTTable_PTest.class).getBundleContext();
-		bundleContext.ungetService(factoryServiceReference);
-	}
-
-	@Before
-	public void init() {
-		log = "";
-		shell = SWTViewTestHelper.createShell();
-
-		final EClass eClass = EcoreFactory.eINSTANCE.createEClass();
-		eClass.getESuperTypes().add(EcorePackage.eINSTANCE.getEClass());
-		domainElement = eClass;
-	}
-
-	@After
-	public void after() {
-		if (!log.isEmpty()) {
-			fail("Unexpected log to System.err: " + log);
-		}
-	}
-
-	@Test
-	public void testUninitializedTableWithoutColumns() throws NoRendererFoundException,
-		NoPropertyDescriptorFoundExeption, EMFFormsNoRendererException {
-		// setup model
-		final TableControlHandle handle = createUninitializedTableWithoutColumns();
-		//
-		final Control render = SWTViewTestHelper.render(handle.getTableControl(), domainElement, shell);
-		assertTrue(Label.class.isInstance(render));// Error label with error text
-		assertEquals("The field domainModelEFeature of the given VFeaturePathDomainModelReference must not be null.",
-			Label.class.cast(render).getText());
-	}
-
-	@Test
-	public void testInitializedTableWithoutColumnsAndEmptyReference() throws NoRendererFoundException,
-		NoPropertyDescriptorFoundExeption, EMFFormsNoRendererException {
-		// setup model
-		final EClass createEClass = EcoreFactory.eINSTANCE.createEClass();
-		createEClass.eUnset(EcorePackage.eINSTANCE.getEClass_ESuperTypes());
-		domainElement = createEClass;
-		final TableControlHandle handle = createInitializedTableWithoutTableColumns();
-
-		try {
-			SWTViewTestHelper.render(handle.getTableControl(), domainElement, shell);
-		} catch (final NullPointerException e) {
-			fail("Fails without a reference in domain object");
-		}
-
-	}
-
-	@Ignore
-	@Test
-	public void testInitializedTableWithoutColumnsSingleReference() throws NoRendererFoundException,
-		NoPropertyDescriptorFoundExeption, EMFFormsNoRendererException {
-		// setup model
-		final VView view = VViewFactory.eINSTANCE.createView();
-		view.setRootEClass(VViewPackage.eINSTANCE.getView());
-		domainElement = view;
-		final TableControlHandle handle = createInitializedTableWithoutTableColumns();
-		final VFeaturePathDomainModelReference domainModelReference = VViewFactory.eINSTANCE
-			.createFeaturePathDomainModelReference();
-		domainModelReference.setDomainModelEFeature(VViewPackage.eINSTANCE.getView_RootEClass());
-		handle.getTableControl().setDomainModelReference(domainModelReference);
-
-		try {
-			SWTViewTestHelper.render(handle.getTableControl(), domainElement, shell);
-		} catch (final ClassCastException e) {
-			e.printStackTrace();
-			fail("Fails with single reference in domain object");
-		}
-
-	}
-
-	@Ignore
-	@Test
-	public void testInitializedTableWithoutColumnsEmptySingleReference() throws NoRendererFoundException,
-		NoPropertyDescriptorFoundExeption, EMFFormsNoRendererException {
-		// setup model
-		final VView view = VViewFactory.eINSTANCE.createView();
-		domainElement = view;
-		final TableControlHandle handle = createInitializedTableWithoutTableColumns();
-		final VFeaturePathDomainModelReference domainModelReference = VViewFactory.eINSTANCE
-			.createFeaturePathDomainModelReference();
-		domainModelReference.setDomainModelEFeature(VViewPackage.eINSTANCE.getView_RootEClass());
-		handle.getTableControl().setDomainModelReference(domainModelReference);
-
-		try {
-			SWTViewTestHelper.render(handle.getTableControl(), domainElement, shell);
-		} catch (final NullPointerException e) {
-			fail("Fails with empty single reference in domain object");
-		}
-
-	}
-
-	@Test
-	public void testTableWithoutColumns() throws NoRendererFoundException, NoPropertyDescriptorFoundExeption,
-		EMFFormsNoRendererException {
-		// setup model
-		final TableControlHandle handle = createInitializedTableWithoutTableColumns();
-
-		final Control render = SWTViewTestHelper.render(handle.getTableControl(), domainElement, shell);
-		assertTrue(render instanceof Composite);
-
-		assertEquals(domainElement.eClass().getEAttributes().size(),
-			VTableDomainModelReference.class.cast(handle.getTableControl().getDomainModelReference())
-				.getColumnDomainModelReferences().size());
-
-		final Control control = getTable(render);
-		assertTrue(control instanceof Table);
-		final Table table = (Table) control;
-		assertEquals(3, table.getColumnCount());
-	}
-
-	@Test
-	public void testTableWithoutColumnsWithoutViewServices() throws NoRendererFoundException,
-		NoPropertyDescriptorFoundExeption, EMFFormsNoRendererException {
-		final TableControlHandle handle = createInitializedTableWithoutTableColumns();
-		final AbstractSWTRenderer<VElement> tableRenderer = rendererFactory.getRendererInstance(
-			handle.getTableControl(),
-			new ViewModelContextWithoutServices(handle.getTableControl()));
-		tableRenderer.getGridDescription(new SWTGridDescription());
-		final Control render = tableRenderer.render(new SWTGridCell(0, 0, tableRenderer), shell);
-		if (render == null) {
-			fail();
-		}
-		assertTrue(render instanceof Composite);
-
-		assertEquals(0, VTableDomainModelReference.class.cast(handle.getTableControl().getDomainModelReference())
-			.getColumnDomainModelReferences().size());
-
-		final Control control = getTable(render);
-		assertTrue(control instanceof Table);
-		final Table table = (Table) control;
-		assertEquals(1, table.getColumnCount());
-	}
-
-	@Test
-	public void testTableWithTwoColumns() throws NoRendererFoundException, NoPropertyDescriptorFoundExeption,
-		EMFFormsNoRendererException {
-		// setup model
-		final TableControlHandle handle = createTableWithTwoTableColumns();
-		final Control render = SWTViewTestHelper.render(handle.getTableControl(), domainElement, shell);
-		assertTrue(render instanceof Composite);
-
-		final Control control = getTable(render);
-		assertTrue(control instanceof Table);
-		final Table table = (Table) control;
-		assertEquals(2 + 1, table.getColumnCount());
-
-	}
-
-	@Test
-	public void testTableWithTwoColumnsWithoutViewServices() throws NoRendererFoundException,
-		NoPropertyDescriptorFoundExeption, EMFFormsNoRendererException {
-		// setup model
-		final TableControlHandle handle = createTableWithTwoTableColumns();
-		final AbstractSWTRenderer<VElement> tableRenderer = rendererFactory.getRendererInstance(
-			handle.getTableControl(),
-			new ViewModelContextWithoutServices(handle.getTableControl()));
-		tableRenderer.getGridDescription(new SWTGridDescription());
-		final Control render = tableRenderer.render(new SWTGridCell(0, 0, tableRenderer), shell);
-		if (render == null) {
-			fail();
-		}
-		assertTrue(render instanceof Composite);
-
-		final Control control = getTable(render);
-		assertTrue(control instanceof Table);
-		final Table table = (Table) control;
-		assertEquals(2 + 1, table.getColumnCount());
-	}
-
-	@Test
-	public void testTableWithTwoColumnsAdd() throws NoRendererFoundException, NoPropertyDescriptorFoundExeption,
-		EMFFormsNoRendererException {
-		final TableControlHandle handle = createTableWithTwoTableColumns();
-		final AbstractSWTRenderer<VElement> tableRenderer = rendererFactory.getRendererInstance(
-			handle.getTableControl(),
-			new ViewModelContextWithoutServices(handle.getTableControl()));
-		tableRenderer.getGridDescription(new SWTGridDescription());
-		final Control control = tableRenderer.render(new SWTGridCell(0, 0, tableRenderer), shell);
-		if (control == null) {
-			fail("No control was rendered");
-		}
-		final Table table = (Table) getTable(control);
-		assertEquals(1, table.getItemCount());
-		final EClass eClass = EcoreFactory.eINSTANCE.createEClass();
-		((EClass) domainElement).getESuperTypes().add(eClass);
-		assertEquals(2, table.getItemCount());
-	}
-
-	@Test
-	public void testTableWithTwoColumnsRemove() throws NoRendererFoundException, NoPropertyDescriptorFoundExeption,
-		EMFFormsNoRendererException {
-		final TableControlHandle handle = createTableWithTwoTableColumns();
-		final AbstractSWTRenderer<VElement> tableRenderer = rendererFactory.getRendererInstance(
-			handle.getTableControl(),
-			new ViewModelContextWithoutServices(handle.getTableControl()));
-		tableRenderer.getGridDescription(new SWTGridDescription());
-		final Control control = tableRenderer.render(new SWTGridCell(0, 0, tableRenderer), shell);
-		if (control == null) {
-			fail("No control was rendered");
-		}
-		final Table table = (Table) getTable(control);
-		assertEquals(1, table.getItemCount());
-		final EClass eClass = ((EClass) domainElement).getESuperTypes().get(0);
-		((EClass) domainElement).getESuperTypes().remove(eClass);
-		assertEquals(0, table.getItemCount());
-	}
-
-	@Test
-	public void testTableWithTwoColumnsClear() throws NoRendererFoundException, NoPropertyDescriptorFoundExeption,
-		EMFFormsNoRendererException {
-		final EClass eClass = EcoreFactory.eINSTANCE.createEClass();
-		((EClass) domainElement).getESuperTypes().add(eClass);
-		final TableControlHandle handle = createTableWithTwoTableColumns();
-		final AbstractSWTRenderer<VElement> tableRenderer = rendererFactory.getRendererInstance(
-			handle.getTableControl(),
-			new ViewModelContextWithoutServices(handle.getTableControl()));
-		tableRenderer.getGridDescription(new SWTGridDescription());
-		final Control control = tableRenderer.render(new SWTGridCell(0, 0, tableRenderer), shell);
-		if (control == null) {
-			fail("No control was rendered");
-		}
-		final Table table = (Table) getTable(control);
-		assertEquals(2, table.getItemCount());
-		((EClass) domainElement).getESuperTypes().clear();
-		assertEquals(0, table.getItemCount());
-	}
-
-	@Test
-	public void testPanelTableWithTwoColumns() throws NoRendererFoundException, NoPropertyDescriptorFoundExeption,
-		EMFFormsNoRendererException {
-		final EClass eClass = EcoreFactory.eINSTANCE.createEClass();
-		((EClass) domainElement).getESuperTypes().add(eClass);
-		final TableControlHandle handle = createTableWithTwoTableColumns();
-		handle.getTableControl().setDetailEditing(DetailEditing.WITH_PANEL);
-		handle.getTableControl().setDetailView(createDetailView());
-		final AbstractSWTRenderer<VElement> tableRenderer = rendererFactory.getRendererInstance(
-			handle.getTableControl(),
-			new ViewModelContextWithoutServices(handle.getTableControl()));
-		tableRenderer.getGridDescription(new SWTGridDescription());
-		final Control render = tableRenderer.render(new SWTGridCell(0, 0, tableRenderer), shell);
-		final Control control = Composite.class.cast(render).getChildren()[0];
-		if (control == null) {
-			fail("No control was rendered");
-		}
-		final Composite controlComposite = (Composite) ((Composite) control).getChildren()[1];
-		final Composite tableComposite = (Composite) controlComposite.getChildren()[0];
-		final Table table = (Table) tableComposite.getChildren()[0];
-		final ScrolledComposite scrolledComposite = (ScrolledComposite) controlComposite.getChildren()[1];
-		final Composite parentForECPView = (Composite) scrolledComposite.getChildren()[0];
-		assertEquals(2, table.getItemCount());
-		final TableViewer tableViewer = getTableViewerFromRenderer(tableRenderer);
-
-		// no initial selection
-		assertEquals(0, parentForECPView.getChildren().length);
-
-		// single selection
-		tableViewer.setSelection(new StructuredSelection(table.getItem(0).getData()));
-		assertEquals(1, parentForECPView.getChildren().length);
-		final Composite viewComposite = (Composite) parentForECPView.getChildren()[0];
-		final Composite detailComposite = (Composite) viewComposite.getChildren()[0];
-		assertEquals(6, detailComposite.getChildren().length);
-
-		// multi selection
-		tableViewer.setSelection(new StructuredSelection(new Object[] { table.getItem(0).getData(),
-			table.getItem(1).getData() }));
-		assertEquals(0, parentForECPView.getChildren().length);
-
-		// select again
-		tableViewer.setSelection(new StructuredSelection(table.getItem(0).getData()));
-		assertEquals(1, parentForECPView.getChildren().length);
-
-		// no selection
-		tableViewer.setSelection(new StructuredSelection());
-		assertEquals(0, parentForECPView.getChildren().length);
-	}
-
-	@Test
-	public void testTableSorting() throws NoRendererFoundException, NoPropertyDescriptorFoundExeption,
-		EMFFormsNoRendererException {
-		// domain
-		((EClass) domainElement).getESuperTypes().clear();
-		final EClass class1 = createEClass("a", "b");
-		final EClass class2 = createEClass("b", "c");
-		final EClass class3 = createEClass("c", "a");
-		((EClass) domainElement).getESuperTypes().add(class1);
-		((EClass) domainElement).getESuperTypes().add(class2);
-		((EClass) domainElement).getESuperTypes().add(class3);
-
-		// table control
-		final VTableControl tableControl = createTableControl();
-		final VTableDomainModelReference tableDMR = (VTableDomainModelReference) tableControl.getDomainModelReference();
-		tableDMR.setDomainModelEFeature(EcorePackage.eINSTANCE.getEClass_ESuperTypes());
-		tableDMR.getColumnDomainModelReferences().add(createDMR(EcorePackage.eINSTANCE.getENamedElement_Name()));
-		tableDMR.getColumnDomainModelReferences().add(
-			createDMR(EcorePackage.eINSTANCE.getEClassifier_InstanceClassName()));
-
-		// render
-		final AbstractSWTRenderer<VElement> tableRenderer = rendererFactory.getRendererInstance(tableControl,
-			new ViewModelContextWithoutServices(tableControl));
-		tableRenderer.getGridDescription(new SWTGridDescription());
-		final Control control = tableRenderer.render(new SWTGridCell(0, 0, tableRenderer), shell);
-		if (control == null) {
-			fail("No control was rendered");
-		}
-		final Table table = SWTTestUtil.findControl(control, 0, Table.class);
-		assertTableItemOrder(table, class1, class2, class3);
-
-		// column 0 is validation column
-
-		// select column 1
-		// up
-		SWTTestUtil.selectWidget(table.getColumns()[1]);
-		SWTTestUtil.waitForUIThread();
-		assertTableItemOrder(table, class1, class2, class3);
-		// down
-		SWTTestUtil.selectWidget(table.getColumns()[1]);
-		SWTTestUtil.waitForUIThread();
-		assertTableItemOrder(table, class3, class2, class1);
-		// none
-		SWTTestUtil.selectWidget(table.getColumns()[1]);
-		SWTTestUtil.waitForUIThread();
-		assertTableItemOrder(table, class1, class2, class3);
-
-		// select column 2
-		// up
-		SWTTestUtil.selectWidget(table.getColumns()[2]);
-		SWTTestUtil.waitForUIThread();
-		assertTableItemOrder(table, class3, class1, class2);
-		// down
-		SWTTestUtil.selectWidget(table.getColumns()[2]);
-		SWTTestUtil.waitForUIThread();
-		assertTableItemOrder(table, class2, class1, class3);
-		// none
-		SWTTestUtil.selectWidget(table.getColumns()[2]);
-		SWTTestUtil.waitForUIThread();
-		assertTableItemOrder(table, class1, class2, class3);
-	}
-
-	@Test
-	public void testTableSortingWithCellEditor() throws NoRendererFoundException, NoPropertyDescriptorFoundExeption,
-		EMFFormsNoRendererException {
-		// domain
-		((EClass) domainElement).getESuperTypes().clear();
-		final EClass class1 = createEClass("a", "b");
-		final EClass class2 = createEClass("b", "c");
-		final EClass class3 = createEClass("c", "a");
-		((EClass) domainElement).getESuperTypes().add(class1);
-		((EClass) domainElement).getESuperTypes().add(class2);
-		((EClass) domainElement).getESuperTypes().add(class3);
-
-		// table control
-		final VTableControl tableControl = createTableControl();
-		final VTableDomainModelReference tableDMR = (VTableDomainModelReference) tableControl.getDomainModelReference();
-		tableDMR.setDomainModelEFeature(EcorePackage.eINSTANCE.getEClass_ESuperTypes());
-		tableDMR.getColumnDomainModelReferences().add(createDMR(EcorePackage.eINSTANCE.getENamedElement_Name()));
-		tableDMR.getColumnDomainModelReferences().add(
-			createDMR(EcorePackage.eINSTANCE.getEClassifier_InstanceClassName()));
-
-		// render
-		final TableControlSWTRenderer tableRenderer = createRendererInstanceWithCustomCellEditor(tableControl);
-		tableRenderer.getGridDescription(new SWTGridDescription());
-		final Control control = tableRenderer.render(new SWTGridCell(0, 0, tableRenderer), shell);
-		if (control == null) {
-			fail("No control was rendered");
-		}
-		final Table table = SWTTestUtil.findControl(control, 0, Table.class);
-		assertTableItemOrder(table, class1, class2, class3);
-
-		// column 0 is validation column
-
-		// select column 1
-		// up
-		SWTTestUtil.selectWidget(table.getColumns()[1]);
-		SWTTestUtil.waitForUIThread();
-		assertTableItemOrder(table, class3, class2, class1);
-		// down
-		SWTTestUtil.selectWidget(table.getColumns()[1]);
-		SWTTestUtil.waitForUIThread();
-		assertTableItemOrder(table, class1, class2, class3);
-		// none
-		SWTTestUtil.selectWidget(table.getColumns()[1]);
-		SWTTestUtil.waitForUIThread();
-		assertTableItemOrder(table, class1, class2, class3);
-
-		// select column 2
-		// up
-		SWTTestUtil.selectWidget(table.getColumns()[2]);
-		SWTTestUtil.waitForUIThread();
-		assertTableItemOrder(table, class3, class1, class2);
-		// down
-		SWTTestUtil.selectWidget(table.getColumns()[2]);
-		SWTTestUtil.waitForUIThread();
-		assertTableItemOrder(table, class2, class1, class3);
-		// none
-		SWTTestUtil.selectWidget(table.getColumns()[2]);
-		SWTTestUtil.waitForUIThread();
-		assertTableItemOrder(table, class1, class2, class3);
-	}
-
-	@Test
-	public void testTableReadonlyHidesAddRemoveButtons()
-		throws NoRendererFoundException, NoPropertyDescriptorFoundExeption,
-		EMFFormsNoRendererException {
-		// setup model
-		final TableControlHandle handle = createTableWithTwoTableColumns();
-		handle.getTableControl().setReadonly(true);
-		shell.open();
-		final Control render = SWTViewTestHelper.render(handle.getTableControl(), domainElement, shell);
-		assertTrue(render instanceof Composite);
-
-		Composite buttonComposite = (Composite) render;
-		buttonComposite = (Composite) buttonComposite.getChildren()[0];
-		buttonComposite = (Composite) buttonComposite.getChildren()[0];
-		buttonComposite = (Composite) buttonComposite.getChildren()[2];
-
-		final Button addButton = (Button) buttonComposite.getChildren()[0];
-		final Button removeButton = (Button) buttonComposite.getChildren()[1];
-
-		assertFalse(addButton.getVisible());
-		assertFalse(removeButton.getVisible());
-
-	}
-
-	private TableControlSWTRenderer createRendererInstanceWithCustomCellEditor(final VTableControl tableControl)
-		throws EMFFormsNoRendererException {
-		final ViewModelContextWithoutServices viewModelContext = new ViewModelContextWithoutServices(tableControl);
-		final EMFFormsContextProvider contextProvider = viewModelContext.getService(EMFFormsContextProvider.class);
-		final IEclipseContext eclipseContext = contextProvider.getContext();
-		final TableControlSWTRenderer tableControlSWTRenderer = new TableControlSWTRenderer(
-			tableControl,
-			viewModelContext,
-			eclipseContext.get(ReportService.class),
-			eclipseContext.get(EMFFormsDatabindingEMF.class),
-			eclipseContext.get(EMFFormsLabelProvider.class),
-			eclipseContext.get(VTViewTemplateProvider.class),
-			eclipseContext.get(ImageRegistryService.class),
-			eclipseContext.get(EMFFormsEditSupport.class)) {
-
-			@Override
-			protected CellEditor createCellEditor(EObject tempInstance, EStructuralFeature feature, Composite table) {
-				if (feature == EcorePackage.eINSTANCE.getENamedElement_Name()) {
-					return new CompareCellEditor(table);
-				}
-				return super.createCellEditor(tempInstance, feature, table);
-			}
-		};
-		tableControlSWTRenderer.init();
-		return tableControlSWTRenderer;
-	}
-
-	private static void assertTableItemOrder(Table table, Object... objects) {
-		assertEquals(objects.length, table.getItemCount());
-		final TableItem[] items = table.getItems();
-		for (int i = 0; i < items.length; i++) {
-			assertSame(objects[i], items[i].getData());
-		}
-	}
-
-	private static EClass createEClass(String name, String instanceClassName) {
-		final EClass clazz = EcoreFactory.eINSTANCE.createEClass();
-		clazz.setName(name);
-		clazz.setInstanceClassName(instanceClassName);
-		return clazz;
-	}
-
-	private static VFeaturePathDomainModelReference createDMR(EAttribute attribute, EReference... refs) {
-		final VFeaturePathDomainModelReference dmr = VViewFactory.eINSTANCE.createFeaturePathDomainModelReference();
-		dmr.setDomainModelEFeature(attribute);
-		dmr.getDomainModelEReferencePath().addAll(Arrays.asList(refs));
-		return dmr;
-	}
-
-	private VView createDetailView() {
-		final VView detailView = VViewFactory.eINSTANCE.createView();
-		final VControl name = VViewFactory.eINSTANCE.createControl();
-		final VFeaturePathDomainModelReference nameRef = VViewFactory.eINSTANCE.createFeaturePathDomainModelReference();
-		nameRef.setDomainModelEFeature(EcorePackage.eINSTANCE.getENamedElement_Name());
-		name.setDomainModelReference(nameRef);
-		detailView.getChildren().add(name);
-		final VControl abstr = VViewFactory.eINSTANCE.createControl();
-		final VFeaturePathDomainModelReference abstractRef = VViewFactory.eINSTANCE
-			.createFeaturePathDomainModelReference();
-		abstractRef.setDomainModelEFeature(EcorePackage.eINSTANCE.getEClass_Abstract());
-		abstr.setDomainModelReference(abstractRef);
-		detailView.getChildren().add(abstr);
-		return detailView;
-
-	}
-
-	private Control getTable(Control render) {
-		Composite composite = (Composite) render;
-		composite = (Composite) composite.getChildren()[0];
-		composite = (Composite) composite.getChildren()[1];
-		// composite = (Composite) composite.getChildren()[0];
-		// composite = (Composite) composite.getChildren()[0];
-		// composite = (Composite) composite.getChildren()[0];
-		return composite.getChildren()[0];
-	}
-
-	private static TableControlHandle createTableWithTwoTableColumns() {
-		final TableControlHandle tableControlHandle = createInitializedTableWithoutTableColumns();
-		final VDomainModelReference tableColumn1 = createTableColumn(EcorePackage.eINSTANCE.getEClass_Abstract());
-
-		tableControlHandle.addFirstTableColumn(tableColumn1);
-		final VDomainModelReference tableColumn2 = createTableColumn(EcorePackage.eINSTANCE.getEClass_Abstract());
-		tableControlHandle.addSecondTableColumn(tableColumn2);
-		return tableControlHandle;
-	}
-
-	public static VDomainModelReference createTableColumn(EStructuralFeature feature) {
-		final VFeaturePathDomainModelReference reference = VViewFactory.eINSTANCE
-			.createFeaturePathDomainModelReference();
-		reference.setDomainModelEFeature(feature);
-		return reference;
-	}
-
-	public static TableControlHandle createInitializedTableWithoutTableColumns() {
-		final TableControlHandle tableControlHandle = createUninitializedTableWithoutColumns();
-		final VFeaturePathDomainModelReference domainModelReference = VTableFactory.eINSTANCE
-			.createTableDomainModelReference();
-		domainModelReference.setDomainModelEFeature(EcorePackage.eINSTANCE.getEClass_ESuperTypes());
-		tableControlHandle.getTableControl().setDomainModelReference(domainModelReference);
-
-		return tableControlHandle;
-	}
-
-	public static TableControlHandle createUninitializedTableWithoutColumns() {
-		final VTableControl tableControl = createTableControl();
-		return new TableControlHandle(tableControl);
-	}
-
-	/**
-	 * @return
-	 */
-	private static VTableControl createTableControl() {
-		final VTableControl tc = VTableFactory.eINSTANCE.createTableControl();
-		tc.setDomainModelReference(VTableFactory.eINSTANCE.createTableDomainModelReference());
-		return tc;
-	}
-
-	private TableViewer getTableViewerFromRenderer(AbstractSWTRenderer<VElement> renderer) {
-		try {
-			final Method method = TableControlSWTRenderer.class.getDeclaredMethod("getTableViewer");
-			method.setAccessible(true);
-			return (TableViewer) method.invoke(renderer);
-		} catch (final NoSuchMethodException ex) {
-			fail(ex.getMessage());
-		} catch (final SecurityException ex) {
-			fail(ex.getMessage());
-		} catch (final IllegalAccessException ex) {
-			fail(ex.getMessage());
-		} catch (final IllegalArgumentException ex) {
-			fail(ex.getMessage());
-		} catch (final InvocationTargetException ex) {
-			fail(ex.getMessage());
-		}
-		return null;
-	}
-
-	/**
-	 * Stub implementation without getting services from ex. point.
-	 *
-	 * @author jfaltermeier
-	 *
-	 */
-	private class ViewModelContextWithoutServices implements ViewModelContext {
-
-		private final VElement view;
-		private final EMFFormsContextProvider contextProvider;
-
-		@SuppressWarnings("restriction")
-		ViewModelContextWithoutServices(VElement view) {
-			this.view = view;
-			contextProvider = new org.eclipse.emfforms.internal.swt.core.di.EMFFormsContextProviderImpl();
-		}
-
-		/**
-		 * {@inheritDoc}
-		 *
-		 * @see org.eclipse.emf.ecp.view.spi.context.ViewModelContext#getViewModel()
-		 */
-		@Override
-		public VElement getViewModel() {
-			return view;
-		}
-
-		/**
-		 * {@inheritDoc}
-		 *
-		 * @see org.eclipse.emf.ecp.view.spi.context.ViewModelContext#getDomainModel()
-		 */
-		@Override
-		public EObject getDomainModel() {
-			return domainElement;
-		}
-
-		/**
-		 *
-		 * {@inheritDoc}
-		 *
-		 * @see org.eclipse.emf.ecp.view.spi.context.ViewModelContext#registerViewChangeListener(org.eclipse.emf.ecp.view.spi.model.ModelChangeListener)
-		 */
-		@Override
-		public void registerViewChangeListener(ModelChangeListener modelChangeListener) {
-			// not needed
-		}
-
-		/**
-		 *
-		 * {@inheritDoc}
-		 *
-		 * @see org.eclipse.emf.ecp.view.spi.context.ViewModelContext#unregisterViewChangeListener(org.eclipse.emf.ecp.view.spi.model.ModelChangeListener)
-		 */
-		@Override
-		public void unregisterViewChangeListener(ModelChangeListener modelChangeListener) {
-			// not needed
-		}
-
-		/**
-		 *
-		 * {@inheritDoc}
-		 *
-		 * @see org.eclipse.emf.ecp.view.spi.context.ViewModelContext#registerDomainChangeListener(org.eclipse.emf.ecp.view.spi.model.ModelChangeListener)
-		 */
-		@Override
-		public void registerDomainChangeListener(ModelChangeListener modelChangeListener) {
-			// not needed
-		}
-
-		/**
-		 *
-		 * {@inheritDoc}
-		 *
-		 * @see org.eclipse.emf.ecp.view.spi.context.ViewModelContext#unregisterDomainChangeListener(org.eclipse.emf.ecp.view.spi.model.ModelChangeListener)
-		 */
-		@Override
-		public void unregisterDomainChangeListener(ModelChangeListener modelChangeListener) {
-			// not needed
-		}
-
-		/**
-		 * {@inheritDoc}
-		 *
-		 * @see org.eclipse.emf.ecp.view.spi.context.ViewModelContext#dispose()
-		 */
-		@Override
-		public void dispose() {
-			// not needed
-		}
-
-		/**
-		 * {@inheritDoc}
-		 *
-		 * @see org.eclipse.emf.ecp.view.spi.context.ViewModelContext#hasService(java.lang.Class)
-		 */
-		@Override
-		public <T> boolean hasService(Class<T> serviceType) {
-			if (EMFFormsContextProvider.class.equals(serviceType)) {
-				return true;
-			}
-			return false;
-		}
-
-		/**
-		 * {@inheritDoc}
-		 *
-		 * @see org.eclipse.emf.ecp.view.spi.context.ViewModelContext#getService(java.lang.Class)
-		 */
-		@SuppressWarnings("unchecked")
-		@Override
-		public <T> T getService(Class<T> serviceType) {
-			if (EMFFormsContextProvider.class.equals(serviceType)) {
-				return (T) contextProvider;
-			}
-			return null;
-		}
-
-		/**
-		 * {@inheritDoc}
-		 *
-		 * @see org.eclipse.emf.ecp.view.spi.context.ViewModelContext#getControlsFor(org.eclipse.emf.ecore.EStructuralFeature.Setting)
-		 * @deprecated
-		 */
-		@Deprecated
-		@Override
-		public Set<VControl> getControlsFor(Setting setting) {
-			return null;
-		}
-
-		/**
-		 * {@inheritDoc}
-		 *
-		 * @see org.eclipse.emf.ecp.view.spi.context.ViewModelContext#getControlsFor(org.eclipse.emf.ecp.common.spi.UniqueSetting)
-		 * @deprecated
-		 */
-		@Deprecated
-		@Override
-		public Set<VElement> getControlsFor(UniqueSetting setting) {
-			return null;
-		}
-
-		/**
-		 * {@inheritDoc}
-		 *
-		 * @see org.eclipse.emf.ecp.view.spi.context.ViewModelContext#getContextValue(java.lang.String)
-		 */
-		@Override
-		public Object getContextValue(String key) {
-			return null;
-		}
-
-		/**
-		 * {@inheritDoc}
-		 *
-		 * @see org.eclipse.emf.ecp.view.spi.context.ViewModelContext#putContextValue(java.lang.String,
-		 *      java.lang.Object)
-		 */
-		@Override
-		public void putContextValue(String key, Object value) {
-
-		}
-
-		/**
-		 * {@inheritDoc}
-		 *
-		 * @see org.eclipse.emf.ecp.view.spi.context.ViewModelContext#registerDisposeListener(org.eclipse.emf.ecp.view.spi.context.ViewModelContextDisposeListener)
-		 */
-		@Override
-		public void registerDisposeListener(ViewModelContextDisposeListener listener) {
-			// TODO Auto-generated method stub
-
-		}
-
-		/**
-		 * {@inheritDoc}
-		 *
-		 * @see org.eclipse.emf.ecp.view.spi.context.ViewModelContext#addContextUser(java.lang.Object)
-		 */
-		@Override
-		public void addContextUser(Object user) {
-			// TODO Auto-generated method stub
-
-		}
-
-		/**
-		 * {@inheritDoc}
-		 *
-		 * @see org.eclipse.emf.ecp.view.spi.context.ViewModelContext#removeContextUser(java.lang.Object)
-		 */
-		@Override
-		public void removeContextUser(Object user) {
-			// TODO Auto-generated method stub
-
-		}
-
-		@Deprecated
-		@Override
-		public ViewModelContext getChildContext(EObject eObject, VElement parent, VView vView,
-			ViewModelService... viewModelServices) {
-
-			final ViewModelContextWithoutServices vmcws = new ViewModelContextWithoutServices(vView);
-			return vmcws;
-		}
-
-		@Override
-		public ViewModelContext getChildContext(EObject eObject, VElement parent, VView vView,
-			ViewModelServiceProvider viewModelServiceProvider) {
-
-			return new ViewModelContextWithoutServices(vView);
-		}
-
-		/**
-		 * {@inheritDoc}
-		 *
-		 * @see org.eclipse.emfforms.spi.core.services.view.EMFFormsViewContext#registerEMFFormsContextListener(org.eclipse.emfforms.spi.core.services.view.EMFFormsContextListener)
-		 */
-		@Override
-		public void registerEMFFormsContextListener(EMFFormsContextListener contextListener) {
-		}
-
-		/**
-		 * {@inheritDoc}
-		 *
-		 * @see org.eclipse.emfforms.spi.core.services.view.EMFFormsViewContext#unregisterEMFFormsContextListener(org.eclipse.emfforms.spi.core.services.view.EMFFormsContextListener)
-		 */
-		@Override
-		public void unregisterEMFFormsContextListener(EMFFormsContextListener contextListener) {
-		}
-
-		/**
-		 * {@inheritDoc}
-		 *
-		 * @see org.eclipse.emf.ecp.view.spi.context.ViewModelContext#getParentContext()
-		 */
-		@Override
-		public ViewModelContext getParentContext() {
-			// TODO Auto-generated method stub
-			return null;
-		}
-
-		/**
-		 * {@inheritDoc}
-		 *
-		 * @see org.eclipse.emfforms.spi.core.services.view.EMFFormsViewContext#changeDomainModel(org.eclipse.emf.ecore.EObject)
-		 */
-		@Override
-		public void changeDomainModel(EObject newDomainModel) {
-			// TODO Auto-generated method stub
-
-		}
-
-		/**
-		 * {@inheritDoc}
-		 *
-		 * @see org.eclipse.emfforms.spi.core.services.view.EMFFormsViewContext#registerRootDomainModelChangeListener(org.eclipse.emfforms.spi.core.services.view.RootDomainModelChangeListener)
-		 */
-		@Override
-		public void registerRootDomainModelChangeListener(RootDomainModelChangeListener rootDomainModelChangeListener) {
-			// TODO Auto-generated method stub
-
-		}
-
-		/**
-		 * {@inheritDoc}
-		 *
-		 * @see org.eclipse.emfforms.spi.core.services.view.EMFFormsViewContext#unregisterRootDomainModelChangeListener(org.eclipse.emfforms.spi.core.services.view.RootDomainModelChangeListener)
-		 */
-		@Override
-		public void unregisterRootDomainModelChangeListener(
-			RootDomainModelChangeListener rootDomainModelChangeListener) {
-			// TODO Auto-generated method stub
-
-		}
-
-		/**
-		 * {@inheritDoc}
-		 *
-		 * @see org.eclipse.emf.ecp.view.spi.context.ViewModelContext#getParentVElement()
-		 */
-		@Override
-		public VElement getParentVElement() {
-			// TODO Auto-generated method stub
-			return null;
-		}
-
-	}
-
-	private static class PrintStreamWrapper extends PrintStream {
-
-		private final PrintStream printStream;
-
-		PrintStreamWrapper(PrintStream printStream) {
-			super(new ByteArrayOutputStream());
-			this.printStream = printStream;
-		}
-
-		/**
-		 * {@inheritDoc}
-		 *
-		 * @see java.io.PrintStream#print(java.lang.String)
-		 */
-		@Override
-		public void print(String s) {
-			log = log.concat("\n" + s);
-			printStream.print(s + "\n");
-		}
-	}
-
-	private static class CompareCellEditor extends StringCellEditor implements ECPCellEditorComparator {
-
-		CompareCellEditor(Composite table) {
-			super(table);
-		}
-
-		@Override
-		public int compare(Object e1, Object e2, int direction) {
-			final String value1 = String.class.cast(e1);
-			final String value2 = String.class.cast(e2);
-			int result;
-			if (value1 == null) {
-				result = 1;
-			} else if (value2 == null) {
-				result = -1;
-			} else {
-				result = value1.toString().compareTo(value2.toString()) * -1;// we flip the oder in our custom
-																				// comparator
-			}
-			// If descending order, flip the direction
-			if (direction == 2) {
-				result = -result;
-			}
-			return result;
-		}
-
-	}
-
-}
diff --git a/tests/org.eclipse.emf.ecp.view.table.ui.swt.test/src/org/eclipse/emf/ecp/view/table/ui/swt/test/TableControlHandle.java b/tests/org.eclipse.emf.ecp.view.table.ui.swt.test/src/org/eclipse/emf/ecp/view/table/ui/swt/test/TableControlHandle.java
deleted file mode 100644
index f342531..0000000
--- a/tests/org.eclipse.emf.ecp.view.table.ui.swt.test/src/org/eclipse/emf/ecp/view/table/ui/swt/test/TableControlHandle.java
+++ /dev/null
@@ -1,94 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2011-2013 EclipseSource Muenchen GmbH 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:
- * Jonas - initial API and implementation
- ******************************************************************************/
-package org.eclipse.emf.ecp.view.table.ui.swt.test;
-
-import org.eclipse.emf.ecp.view.spi.model.VDomainModelReference;
-import org.eclipse.emf.ecp.view.spi.table.model.VTableControl;
-import org.eclipse.emf.ecp.view.spi.table.model.VTableDomainModelReference;
-
-/**
- * @author Jonas
- *
- */
-public class TableControlHandle {
-
-	public TableControlHandle(VTableControl tableControl) {
-		setTableControl(tableControl);
-	}
-
-	private VTableControl tableControl;
-	private VDomainModelReference tableColumn1;
-	private VDomainModelReference tableColumn2;
-
-	/**
-	 * @param tableColumn1
-	 */
-	public void addFirstTableColumn(VDomainModelReference tableColumn1) {
-		setTableColumn1(tableColumn1);
-		VTableDomainModelReference.class.cast(getTableControl().getDomainModelReference())
-			.getColumnDomainModelReferences().add(tableColumn1);
-
-	}
-
-	/**
-	 * @param tableColumn2
-	 */
-	public void addSecondTableColumn(VDomainModelReference tableColumn2) {
-		setTableColumn2(tableColumn2);
-		VTableDomainModelReference.class.cast(getTableControl().getDomainModelReference())
-			.getColumnDomainModelReferences().add(tableColumn2);
-
-	}
-
-	/**
-	 * @return the tableControl
-	 */
-	public VTableControl getTableControl() {
-		return tableControl;
-	}
-
-	/**
-	 * @param tableControl the tableControl to set
-	 */
-	public void setTableControl(VTableControl tableControl) {
-		this.tableControl = tableControl;
-	}
-
-	/**
-	 * @return the tableColumn1
-	 */
-	public VDomainModelReference getTableColumn1() {
-		return tableColumn1;
-	}
-
-	/**
-	 * @param tableColumn1 the tableColumn1 to set
-	 */
-	public void setTableColumn1(VDomainModelReference tableColumn1) {
-		this.tableColumn1 = tableColumn1;
-	}
-
-	/**
-	 * @return the tableColumn2
-	 */
-	public VDomainModelReference getTableColumn2() {
-		return tableColumn2;
-	}
-
-	/**
-	 * @param tableColumn2 the tableColumn2 to set
-	 */
-	public void setTableColumn2(VDomainModelReference tableColumn2) {
-		this.tableColumn2 = tableColumn2;
-	}
-
-}
diff --git a/tests/org.eclipse.emf.ecp.view.table.validation.test/META-INF/MANIFEST.MF b/tests/org.eclipse.emf.ecp.view.table.validation.test/META-INF/MANIFEST.MF
index bc8db6d..75b910b 100644
--- a/tests/org.eclipse.emf.ecp.view.table.validation.test/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.emf.ecp.view.table.validation.test/META-INF/MANIFEST.MF
@@ -2,13 +2,14 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Table Validation Test
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.table.validation.test
-Bundle-Version: 1.16.0.qualifier
-Fragment-Host: org.eclipse.emf.ecp.view.table.validation;bundle-version="[1.16.0,1.17.0)"
-Export-Package: org.eclipse.emf.ecp.view.table.internal.validation;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.view.table.validation.test;version="1.16.0";x-internal:=true
+Bundle-Version: 1.17.0.qualifier
+Fragment-Host: org.eclipse.emf.ecp.view.table.validation;bundle-version="[1.17.0,1.18.0]"
+Export-Package: org.eclipse.emf.ecp.view.table.internal.validation;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.table.validation.test;version="1.17.0";x-internal:=true
 Require-Bundle: org.junit;bundle-version="[4.12.0,5.0.0)",
-  org.mockito.mockito-core-hamcrest-modified;bundle-version="[1.9.5,2.0.0)",
-  org.objenesis;bundle-version="[1.0.0,2.0.0)",
-  org.eclipse.emf.databinding;bundle-version="[1.3.0,2.0.0)",
-  org.eclipse.emf.ecp.test.common;bundle-version="[1.16.0,1.17.0)"
+ org.mockito.mockito-core-hamcrest-modified;bundle-version="[1.9.5,2.0.0)",
+ org.objenesis;bundle-version="[1.0.0,2.0.0)",
+ org.eclipse.emf.databinding;bundle-version="[1.3.0,2.0.0)",
+ org.eclipse.emf.ecp.test.common;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Automatic-Module-Name: org.eclipse.emf.ecp.view.table.validation.test
diff --git a/tests/org.eclipse.emf.ecp.view.table.validation.test/pom.xml b/tests/org.eclipse.emf.ecp.view.table.validation.test/pom.xml
index d8fc03f..4a453db 100644
--- a/tests/org.eclipse.emf.ecp.view.table.validation.test/pom.xml
+++ b/tests/org.eclipse.emf.ecp.view.table.validation.test/pom.xml
@@ -6,12 +6,12 @@
 	<parent>
 		<groupId>org.eclipse.emf.ecp</groupId>
 		<artifactId>ecp-tests-parent</artifactId>
-		<version>1.16.0-SNAPSHOT</version>
+		<version>1.17.0-SNAPSHOT</version>
 		<relativePath>../../releng/org.eclipse.emf.ecp.releng.tests/</relativePath>
 	</parent>
 	<groupId>org.eclipse.emf.ecp</groupId>
 	<artifactId>org.eclipse.emf.ecp.view.table.validation.test</artifactId>
-	<version>1.16.0-SNAPSHOT</version>
+	<version>1.17.0-SNAPSHOT</version>
 	<packaging>eclipse-plugin</packaging>
 
 	<build>
diff --git a/tests/org.eclipse.emf.ecp.view.template.model.test/META-INF/MANIFEST.MF b/tests/org.eclipse.emf.ecp.view.template.model.test/META-INF/MANIFEST.MF
index 14ee87d..6a1480c 100644
--- a/tests/org.eclipse.emf.ecp.view.template.model.test/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.emf.ecp.view.template.model.test/META-INF/MANIFEST.MF
@@ -2,9 +2,17 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: EMF Forms Template Model Tests
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.template.model.test
-Bundle-Version: 1.16.0.qualifier
-Fragment-Host: org.eclipse.emf.ecp.view.template.model;bundle-version="[1.16.0,1.17.0)"
-Export-Package: org.eclipse.emf.ecp.view.template.style.alignment.model.impl;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.view.template.style.labelwidth.model.impl;version="1.16.0";x-internal:=true
-Require-Bundle: org.junit;bundle-version="[4.0.0,5.0.0)"
+Bundle-Version: 1.17.0.qualifier
+Fragment-Host: org.eclipse.emf.ecp.view.template.model;bundle-version="[1.17.0,1.18.0]"
+Export-Package: org.eclipse.emf.ecp.view.template.selector.annotation.model.impl;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.template.selector.bool.model.impl;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.template.selector.hierarchy.model.impl;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.template.style.alignment.model.impl;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.template.style.labelwidth.model.impl;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.template.style.wrap.model.impl;version="1.17.0";x-internal:=true
+Require-Bundle: org.junit;bundle-version="[4.0.0,5.0.0)",
+ org.eclipse.emf.ecp.view.template.annotation.model;bundle-version="[1.17.0,1.18.0)",
+ org.eclipse.emfforms.view.annotation.model;bundle-version="[1.17.0,1.18.0)"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Automatic-Module-Name: org.eclipse.emf.ecp.view.template.model.test
+Import-Package: org.eclipse.emf.emfforms.spi.view.controlgrid.model;version="[1.17.0,1.18.0)"
diff --git a/tests/org.eclipse.emf.ecp.view.template.model.test/pom.xml b/tests/org.eclipse.emf.ecp.view.template.model.test/pom.xml
index f91d8f6..338b570 100644
--- a/tests/org.eclipse.emf.ecp.view.template.model.test/pom.xml
+++ b/tests/org.eclipse.emf.ecp.view.template.model.test/pom.xml
@@ -6,12 +6,12 @@
 	<parent>
 		<groupId>org.eclipse.emf.ecp</groupId>
 		<artifactId>ecp-tests-parent</artifactId>
-		<version>1.16.0-SNAPSHOT</version>
+		<version>1.17.0-SNAPSHOT</version>
 		<relativePath>../../releng/org.eclipse.emf.ecp.releng.tests/</relativePath>
 	</parent>
 	<groupId>org.eclipse.emf.ecp</groupId>
 	<artifactId>org.eclipse.emf.ecp.view.template.model.test</artifactId>
-	<version>1.16.0-SNAPSHOT</version>
+	<version>1.17.0-SNAPSHOT</version>
 	<packaging>eclipse-plugin</packaging>
 
 </project>
diff --git a/tests/org.eclipse.emf.ecp.view.template.model.test/src/org/eclipse/emf/ecp/view/template/selector/annotation/model/impl/VTAnnotationSelectorImpl_Test.java b/tests/org.eclipse.emf.ecp.view.template.model.test/src/org/eclipse/emf/ecp/view/template/selector/annotation/model/impl/VTAnnotationSelectorImpl_Test.java
new file mode 100644
index 0000000..2d286b3
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.view.template.model.test/src/org/eclipse/emf/ecp/view/template/selector/annotation/model/impl/VTAnnotationSelectorImpl_Test.java
@@ -0,0 +1,203 @@
+/*******************************************************************************
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * Johannes Faltermeier - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.emf.ecp.view.template.selector.annotation.model.impl;
+
+import static org.junit.Assert.assertEquals;
+
+import org.eclipse.emf.ecp.view.spi.model.VAttachment;
+import org.eclipse.emf.ecp.view.spi.model.VControl;
+import org.eclipse.emf.ecp.view.spi.model.VElement;
+import org.eclipse.emf.ecp.view.spi.model.VViewFactory;
+import org.eclipse.emf.ecp.view.template.model.VTStyleSelector;
+import org.eclipse.emf.ecp.view.template.selector.annotation.model.VTAnnotationFactory;
+import org.eclipse.emf.ecp.view.template.selector.annotation.model.VTAnnotationSelector;
+import org.eclipse.emf.emfforms.spi.view.annotation.model.VAnnotation;
+import org.eclipse.emf.emfforms.spi.view.annotation.model.VAnnotationFactory;
+import org.junit.Before;
+import org.junit.Test;
+
+public class VTAnnotationSelectorImpl_Test {
+
+	private static final String BAR = "BAR"; //$NON-NLS-1$
+	private static final String FOO = "FOO"; //$NON-NLS-1$
+
+	private VControl control;
+
+	private static void createAnnotation(VElement parent, String key, String value) {
+		final VAnnotation annotation = VAnnotationFactory.eINSTANCE.createAnnotation();
+		annotation.setKey(key);
+		annotation.setValue(value);
+		parent.getAttachments().add(annotation);
+	}
+
+	private static VTAnnotationSelector selector(String key, String value) {
+		final VTAnnotationSelector selector = VTAnnotationFactory.eINSTANCE
+			.createAnnotationSelector();
+		selector.setKey(key);
+		selector.setValue(value);
+		return selector;
+	}
+
+	@Before
+	public void before() {
+		control = VViewFactory.eINSTANCE.createControl();
+		final VAttachment dummyAttachment = VViewFactory.eINSTANCE.createDateTimeDisplayAttachment();
+		control.getAttachments().add(dummyAttachment);
+	}
+
+	@Test
+	public void noAnnotations() {
+		/* setup */
+		final VTAnnotationSelector selector = selector(FOO, BAR);
+
+		/* act */
+		final Double applicable = selector.isApplicable(control, null);
+
+		/* assert */
+		assertEquals(VTStyleSelector.NOT_APPLICABLE, applicable);
+	}
+
+	@Test
+	public void nonMatchingAnnotation() {
+		/* setup */
+		createAnnotation(control, BAR, FOO);
+		final VTAnnotationSelector selector = selector(FOO, BAR);
+
+		/* act */
+		final Double applicable = selector.isApplicable(control, null);
+
+		/* assert */
+		assertEquals(VTStyleSelector.NOT_APPLICABLE, applicable);
+	}
+
+	@Test
+	public void matchingAnnotation() {
+		/* setup */
+		createAnnotation(control, FOO, BAR);
+		final VTAnnotationSelector selector = selector(FOO, BAR);
+
+		/* act */
+		final Double applicable = selector.isApplicable(control, null);
+
+		/* assert */
+		assertEquals(new Double(15d), applicable);
+	}
+
+	@Test
+	public void nullKeyExpectedNotFound() {
+		/* setup */
+		createAnnotation(control, BAR, FOO);
+		final VTAnnotationSelector selector = selector(null, BAR);
+
+		/* act */
+		final Double applicable = selector.isApplicable(control, null);
+
+		/* assert */
+		assertEquals(VTStyleSelector.NOT_APPLICABLE, applicable);
+	}
+
+	@Test
+	public void nullKeyExpectedFound() {
+		/* setup */
+		createAnnotation(control, null, BAR);
+		final VTAnnotationSelector selector = selector(null, BAR);
+
+		/* act */
+		final Double applicable = selector.isApplicable(control, null);
+
+		/* assert */
+		assertEquals(new Double(15d), applicable);
+	}
+
+	@Test
+	public void keyExpectedNullFound() {
+		/* setup */
+		createAnnotation(control, null, BAR);
+		final VTAnnotationSelector selector = selector(FOO, BAR);
+
+		/* act */
+		final Double applicable = selector.isApplicable(control, null);
+
+		/* assert */
+		assertEquals(VTStyleSelector.NOT_APPLICABLE, applicable);
+	}
+
+	@Test
+	public void nullValueExpectedNotFound() {
+		/* setup */
+		createAnnotation(control, FOO, BAR);
+		final VTAnnotationSelector selector = selector(FOO, null);
+
+		/* act */
+		final Double applicable = selector.isApplicable(control, null);
+
+		/* assert */
+		assertEquals(VTStyleSelector.NOT_APPLICABLE, applicable);
+	}
+
+	@Test
+	public void nullValueExpectedFound() {
+		/* setup */
+		createAnnotation(control, FOO, null);
+		final VTAnnotationSelector selector = selector(FOO, null);
+
+		/* act */
+		final Double applicable = selector.isApplicable(control, null);
+
+		/* assert */
+		assertEquals(new Double(15d), applicable);
+	}
+
+	@Test
+	public void valueExpectedNullFound() {
+		/* setup */
+		createAnnotation(control, FOO, null);
+		final VTAnnotationSelector selector = selector(FOO, BAR);
+
+		/* act */
+		final Double applicable = selector.isApplicable(control, null);
+
+		/* assert */
+		assertEquals(VTStyleSelector.NOT_APPLICABLE, applicable);
+	}
+
+	@Test
+	public void multipleMatchingKeys1() {
+		/* first one wins */
+		/* setup */
+		createAnnotation(control, FOO, FOO);
+		createAnnotation(control, FOO, BAR);
+		final VTAnnotationSelector selector = selector(FOO, BAR);
+
+		/* act */
+		final Double applicable = selector.isApplicable(control, null);
+
+		/* assert */
+		assertEquals(VTStyleSelector.NOT_APPLICABLE, applicable);
+	}
+
+	@Test
+	public void multipleMatchingKeys2() {
+		/* first one wins */
+		/* setup */
+		createAnnotation(control, FOO, BAR);
+		createAnnotation(control, FOO, FOO);
+		final VTAnnotationSelector selector = selector(FOO, BAR);
+
+		/* act */
+		final Double applicable = selector.isApplicable(control, null);
+
+		/* assert */
+		assertEquals(new Double(15d), applicable);
+	}
+
+}
diff --git a/tests/org.eclipse.emf.ecp.view.template.model.test/src/org/eclipse/emf/ecp/view/template/selector/bool/model/impl/VTAndSelectorImpl_Test.java b/tests/org.eclipse.emf.ecp.view.template.model.test/src/org/eclipse/emf/ecp/view/template/selector/bool/model/impl/VTAndSelectorImpl_Test.java
new file mode 100644
index 0000000..6fed271
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.view.template.model.test/src/org/eclipse/emf/ecp/view/template/selector/bool/model/impl/VTAndSelectorImpl_Test.java
@@ -0,0 +1,107 @@
+/*******************************************************************************
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * Johannes Faltermeier - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.emf.ecp.view.template.selector.bool.model.impl;
+
+import static org.junit.Assert.assertEquals;
+
+import java.util.Arrays;
+
+import org.eclipse.emf.ecp.view.spi.model.VControl;
+import org.eclipse.emf.ecp.view.spi.model.VElement;
+import org.eclipse.emf.ecp.view.spi.model.VViewFactory;
+import org.eclipse.emf.ecp.view.template.model.VTStyleSelector;
+import org.eclipse.emf.ecp.view.template.selector.annotation.model.VTAnnotationFactory;
+import org.eclipse.emf.ecp.view.template.selector.annotation.model.VTAnnotationSelector;
+import org.eclipse.emf.ecp.view.template.selector.bool.model.VTAndSelector;
+import org.eclipse.emf.ecp.view.template.selector.bool.model.VTBoolFactory;
+import org.eclipse.emf.emfforms.spi.view.annotation.model.VAnnotation;
+import org.eclipse.emf.emfforms.spi.view.annotation.model.VAnnotationFactory;
+import org.junit.Before;
+import org.junit.Test;
+
+public class VTAndSelectorImpl_Test {
+
+	private static final String FOO = "FOO"; //$NON-NLS-1$
+	private static final String BAR = "BAR"; //$NON-NLS-1$
+
+	private VControl control;
+
+	private static void createAnnotation(VElement parent, String key, String value) {
+		final VAnnotation annotation = VAnnotationFactory.eINSTANCE.createAnnotation();
+		annotation.setKey(key);
+		annotation.setValue(value);
+		parent.getAttachments().add(annotation);
+	}
+
+	private static VTAnnotationSelector selector(String key, String value) {
+		final VTAnnotationSelector selector = VTAnnotationFactory.eINSTANCE
+			.createAnnotationSelector();
+		selector.setKey(key);
+		selector.setValue(value);
+		return selector;
+	}
+
+	private static VTAndSelector selector(VTStyleSelector... selectors) {
+		final VTAndSelector andSelector = VTBoolFactory.eINSTANCE.createAndSelector();
+		andSelector.getSelectors().addAll(Arrays.asList(selectors));
+		return andSelector;
+	}
+
+	@Before
+	public void before() {
+		control = VViewFactory.eINSTANCE.createControl();
+	}
+
+	@Test
+	public void noSelectors() {
+		/* setup */
+		final VTAndSelector selector = selector();
+
+		/* act */
+		final Double applicable = selector.isApplicable(control, null);
+
+		/* assert */
+		assertEquals(VTStyleSelector.NOT_APPLICABLE, applicable);
+	}
+
+	@Test
+	public void notAllMatching() {
+		/* setup */
+		createAnnotation(control, FOO, BAR);
+		final VTAndSelector selector = selector(
+			selector(FOO, BAR),
+			selector(BAR, FOO));
+
+		/* act */
+		final Double applicable = selector.isApplicable(control, null);
+
+		/* assert */
+		assertEquals(VTStyleSelector.NOT_APPLICABLE, applicable);
+	}
+
+	@Test
+	public void allMatching() {
+		/* setup */
+		createAnnotation(control, FOO, BAR);
+		createAnnotation(control, BAR, FOO);
+		final VTAndSelector selector = selector(
+			selector(FOO, BAR),
+			selector(BAR, FOO));
+
+		/* act */
+		final Double applicable = selector.isApplicable(control, null);
+
+		/* assert */
+		assertEquals(new Double(30d), applicable);
+	}
+
+}
diff --git a/tests/org.eclipse.emf.ecp.view.template.model.test/src/org/eclipse/emf/ecp/view/template/selector/hierarchy/model/impl/VTHierarchySelectorImpl_Test.java b/tests/org.eclipse.emf.ecp.view.template.model.test/src/org/eclipse/emf/ecp/view/template/selector/hierarchy/model/impl/VTHierarchySelectorImpl_Test.java
new file mode 100644
index 0000000..b151fff
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.view.template.model.test/src/org/eclipse/emf/ecp/view/template/selector/hierarchy/model/impl/VTHierarchySelectorImpl_Test.java
@@ -0,0 +1,144 @@
+/*******************************************************************************
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * Johannes Faltermeier - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.emf.ecp.view.template.selector.hierarchy.model.impl;
+
+import static org.junit.Assert.assertEquals;
+
+import org.eclipse.emf.ecp.view.spi.model.VControl;
+import org.eclipse.emf.ecp.view.spi.model.VElement;
+import org.eclipse.emf.ecp.view.spi.model.VView;
+import org.eclipse.emf.ecp.view.spi.model.VViewFactory;
+import org.eclipse.emf.ecp.view.template.model.VTStyleSelector;
+import org.eclipse.emf.ecp.view.template.selector.annotation.model.VTAnnotationFactory;
+import org.eclipse.emf.ecp.view.template.selector.annotation.model.VTAnnotationSelector;
+import org.eclipse.emf.ecp.view.template.selector.hierarchy.model.VTHierarchyFactory;
+import org.eclipse.emf.ecp.view.template.selector.hierarchy.model.VTHierarchySelector;
+import org.eclipse.emf.emfforms.spi.view.annotation.model.VAnnotation;
+import org.eclipse.emf.emfforms.spi.view.annotation.model.VAnnotationFactory;
+import org.eclipse.emf.emfforms.spi.view.controlgrid.model.VControlGrid;
+import org.eclipse.emf.emfforms.spi.view.controlgrid.model.VControlGridCell;
+import org.eclipse.emf.emfforms.spi.view.controlgrid.model.VControlGridRow;
+import org.eclipse.emf.emfforms.spi.view.controlgrid.model.VControlgridFactory;
+import org.junit.Before;
+import org.junit.Test;
+
+public class VTHierarchySelectorImpl_Test {
+
+	private static final String FOO = "FOO"; //$NON-NLS-1$
+	private static final String BAR = "BAR"; //$NON-NLS-1$
+
+	private VView view;
+	private VControlGrid layout;
+	private VControl control;
+
+	private static void createAnnotation(VElement parent, String key, String value) {
+		final VAnnotation annotation = VAnnotationFactory.eINSTANCE.createAnnotation();
+		annotation.setKey(key);
+		annotation.setValue(value);
+		parent.getAttachments().add(annotation);
+	}
+
+	private static VTHierarchySelector selector(VTStyleSelector selector) {
+		final VTHierarchySelector hierarchySelector = VTHierarchyFactory.eINSTANCE.createHierarchySelector();
+		hierarchySelector.setSelector(selector);
+		return hierarchySelector;
+	}
+
+	private static VTAnnotationSelector selector(String key, String value) {
+		final VTAnnotationSelector selector = VTAnnotationFactory.eINSTANCE
+			.createAnnotationSelector();
+		selector.setKey(key);
+		selector.setValue(value);
+		return selector;
+	}
+
+	@Before
+	public void before() {
+		view = VViewFactory.eINSTANCE.createView();
+
+		layout = VControlgridFactory.eINSTANCE.createControlGrid();
+		view.getChildren().add(layout);
+
+		final VControlGridRow row = VControlgridFactory.eINSTANCE.createControlGridRow();
+		layout.getRows().add(row);
+
+		final VControlGridCell cell = VControlgridFactory.eINSTANCE.createControlGridCell();
+		row.getCells().add(cell);
+
+		control = VViewFactory.eINSTANCE.createControl();
+		cell.setControl(control);
+	}
+
+	@Test
+	public void selectorNull() {
+		/* setup */
+		final VTHierarchySelector selector = selector(null);
+
+		/* act */
+		final Double applicable = selector.isApplicable(control, null);
+
+		/* assert */
+		assertEquals(VTStyleSelector.NOT_APPLICABLE, applicable);
+	}
+
+	@Test
+	public void applicable1() {
+		/* setup */
+		createAnnotation(control, FOO, BAR);
+		final VTHierarchySelector selector = selector(selector(FOO, BAR));
+
+		/* act */
+		final Double applicable = selector.isApplicable(control, null);
+
+		/* assert */
+		assertEquals(new Double(15d), applicable);
+	}
+
+	@Test
+	public void applicable2() {
+		/* setup */
+		createAnnotation(layout, FOO, BAR);
+		final VTHierarchySelector selector = selector(selector(FOO, BAR));
+
+		/* act */
+		final Double applicable = selector.isApplicable(control, null);
+
+		/* assert */
+		assertEquals(new Double(15d), applicable);
+	}
+
+	@Test
+	public void applicable3() {
+		/* setup */
+		createAnnotation(view, FOO, BAR);
+		final VTHierarchySelector selector = selector(selector(FOO, BAR));
+
+		/* act */
+		final Double applicable = selector.isApplicable(control, null);
+
+		/* assert */
+		assertEquals(new Double(15d), applicable);
+	}
+
+	@Test
+	public void notApplicable() {
+		/* setup */
+		final VTHierarchySelector selector = selector(selector(FOO, BAR));
+
+		/* act */
+		final Double applicable = selector.isApplicable(control, null);
+
+		/* assert */
+		assertEquals(VTStyleSelector.NOT_APPLICABLE, applicable);
+	}
+
+}
diff --git a/tests/org.eclipse.emf.ecp.view.template.model.test/src/org/eclipse/emf/ecp/view/template/style/wrap/model/impl/VTLabelWrapStylePropertyImpl_Test.java b/tests/org.eclipse.emf.ecp.view.template.model.test/src/org/eclipse/emf/ecp/view/template/style/wrap/model/impl/VTLabelWrapStylePropertyImpl_Test.java
new file mode 100644
index 0000000..17e551f
--- /dev/null
+++ b/tests/org.eclipse.emf.ecp.view.template.model.test/src/org/eclipse/emf/ecp/view/template/style/wrap/model/impl/VTLabelWrapStylePropertyImpl_Test.java
@@ -0,0 +1,107 @@
+/*******************************************************************************
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * Johannes Faltermeier - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.emf.ecp.view.template.style.wrap.model.impl;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+import org.eclipse.emf.ecp.view.template.style.labelwidth.model.VTLabelwidthFactory;
+import org.eclipse.emf.ecp.view.template.style.wrap.model.VTLabelWrapStyleProperty;
+import org.eclipse.emf.ecp.view.template.style.wrap.model.VTWrapFactory;
+import org.junit.Test;
+
+public class VTLabelWrapStylePropertyImpl_Test {
+
+	private static VTLabelWrapStyleProperty property(boolean isWrap) {
+		final VTLabelWrapStyleProperty property = VTWrapFactory.eINSTANCE.createLabelWrapStyleProperty();
+		property.setWrapLabel(isWrap);
+		return property;
+	}
+
+	@Test
+	public void equalStyle_null() {
+		/* setup */
+		final VTLabelWrapStyleProperty underTest = property(true);
+
+		/* act */
+		final boolean equalStyles = underTest.equalStyles(null);
+
+		/* assert */
+		assertFalse(equalStyles);
+	}
+
+	@Test
+	public void equalStyle_differentProperty() {
+		/* setup */
+		final VTLabelWrapStyleProperty underTest = property(true);
+
+		/* act */
+		final boolean equalStyles = underTest
+			.equalStyles(VTLabelwidthFactory.eINSTANCE.createLabelWidthStyleProperty());
+
+		/* assert */
+		assertFalse(equalStyles);
+	}
+
+	@Test
+	public void equalStyle_false1() {
+		/* setup */
+		final VTLabelWrapStyleProperty underTest = property(true);
+
+		/* act */
+		final boolean equalStyles = underTest
+			.equalStyles(property(false));
+
+		/* assert */
+		assertFalse(equalStyles);
+	}
+
+	@Test
+	public void equalStyle_false2() {
+		/* setup */
+		final VTLabelWrapStyleProperty underTest = property(false);
+
+		/* act */
+		final boolean equalStyles = underTest
+			.equalStyles(property(true));
+
+		/* assert */
+		assertFalse(equalStyles);
+	}
+
+	@Test
+	public void equalStyle_true1() {
+		/* setup */
+		final VTLabelWrapStyleProperty underTest = property(true);
+
+		/* act */
+		final boolean equalStyles = underTest
+			.equalStyles(property(true));
+
+		/* assert */
+		assertTrue(equalStyles);
+	}
+
+	@Test
+	public void equalStyle_true2() {
+		/* setup */
+		final VTLabelWrapStyleProperty underTest = property(false);
+
+		/* act */
+		final boolean equalStyles = underTest
+			.equalStyles(property(false));
+
+		/* assert */
+		assertTrue(equalStyles);
+	}
+
+}
diff --git a/tests/org.eclipse.emf.ecp.view.template.service.test/META-INF/MANIFEST.MF b/tests/org.eclipse.emf.ecp.view.template.service.test/META-INF/MANIFEST.MF
index e3f6a6f..0cb4d5b 100644
--- a/tests/org.eclipse.emf.ecp.view.template.service.test/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.emf.ecp.view.template.service.test/META-INF/MANIFEST.MF
@@ -2,14 +2,15 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Template Test
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.template.service.test
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Fragment-Host: org.eclipse.emf.ecp.view.template.service;bundle-version="[1.16.0,1.17.0)"
-Export-Package: org.eclipse.emf.ecp.view.template.service;version="1.16.0";x-internal:=true
-Require-Bundle: org.eclipse.emf.ecp.view.label.model;bundle-version="[1.16.0,1.17.0)",
-  org.junit;bundle-version="[4.11.0,5.0.0)",
-  org.mockito.mockito-core-hamcrest-modified;bundle-version="[1.9.5,2.0.0)",
-  org.eclipse.emf.ecp.view.test.common.swt;bundle-version="[1.16.0,1.17.0)"
+Fragment-Host: org.eclipse.emf.ecp.view.template.service;bundle-version="[1.17.0,1.18.0]"
+Export-Package: org.eclipse.emf.ecp.view.template.service;version="1.17.0";x-internal:=true
+Require-Bundle: org.eclipse.emf.ecp.view.label.model;bundle-version="[1.17.0,1.18.0]",
+ org.junit;bundle-version="[4.11.0,5.0.0)",
+ org.mockito.mockito-core-hamcrest-modified;bundle-version="[1.9.5,2.0.0)",
+ org.eclipse.emf.ecp.view.test.common.swt;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Import-Package: org.eclipse.emf.edit.domain;version="0.0.0",
   org.eclipse.emf.edit.provider;version="0.0.0"
+Automatic-Module-Name: org.eclipse.emf.ecp.view.template.service.test
diff --git a/tests/org.eclipse.emf.ecp.view.template.service.test/pom.xml b/tests/org.eclipse.emf.ecp.view.template.service.test/pom.xml
index 60cfc0a..643d08b 100644
--- a/tests/org.eclipse.emf.ecp.view.template.service.test/pom.xml
+++ b/tests/org.eclipse.emf.ecp.view.template.service.test/pom.xml
@@ -6,12 +6,12 @@
 	<parent>

 		<groupId>org.eclipse.emf.ecp</groupId>

 		<artifactId>ecp-tests-parent</artifactId>

-		<version>1.16.0-SNAPSHOT</version>

+		<version>1.17.0-SNAPSHOT</version>

 		<relativePath>../../releng/org.eclipse.emf.ecp.releng.tests/</relativePath>

 	</parent>

 	<artifactId>org.eclipse.emf.ecp.view.template.service.test</artifactId>

 	<packaging>eclipse-test-plugin</packaging>

-	<version>1.16.0-SNAPSHOT</version>

+	<version>1.17.0-SNAPSHOT</version>

 	<groupId>org.eclipse.emf.ecp</groupId>

 	

 		<build>

diff --git a/tests/org.eclipse.emf.ecp.view.test.common.swt/META-INF/MANIFEST.MF b/tests/org.eclipse.emf.ecp.view.test.common.swt/META-INF/MANIFEST.MF
index 58ed5e4..1df6dcd 100644
--- a/tests/org.eclipse.emf.ecp.view.test.common.swt/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.emf.ecp.view.test.common.swt/META-INF/MANIFEST.MF
@@ -2,21 +2,22 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Helper Class for the SWT View Model Tests
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.test.common.swt
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emf.ecp.view.test.common.swt;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.view.test.common.swt.spi;version="1.16.0"
+Export-Package: org.eclipse.emf.ecp.view.test.common.swt;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.test.common.swt.spi;version="1.17.0"
 Require-Bundle: org.eclipse.swt;bundle-version="[3.1.0,4.0.0)",
-  org.eclipse.jface.databinding;bundle-version="[1.4.0,2.0.0)",
-  org.junit;bundle-version="[4.0.0,5.0.0)",
-  org.eclipse.core.databinding.observable;bundle-version="[1.4.0,2.0.0)",
-  org.eclipse.emf.ecp.view.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.ui.view;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.edit;bundle-version="[2.8.0,3.0.0)",
-  org.eclipse.emf.ecp.ui.view.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.edit;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.ui.view.test;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.swt.core;bundle-version="[1.16.0,1.17.0)";visibility:=reexport
+ org.eclipse.jface.databinding;bundle-version="[1.4.0,2.0.0)",
+ org.junit;bundle-version="[4.0.0,5.0.0)",
+ org.eclipse.core.databinding.observable;bundle-version="[1.4.0,2.0.0)",
+ org.eclipse.emf.ecp.view.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.ui.view;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.edit;bundle-version="[2.8.0,3.0.0)",
+ org.eclipse.emf.ecp.ui.view.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.edit;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.ui.view.test;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.swt.core;bundle-version="[1.17.0,1.18.0]";visibility:=reexport
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Import-Package: org.osgi.framework;version="[1.3.0,2.0.0)"
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.view.test.common.swt
diff --git a/tests/org.eclipse.emf.ecp.view.test.common.swt/pom.xml b/tests/org.eclipse.emf.ecp.view.test.common.swt/pom.xml
index 21617a0..354c3a6 100644
--- a/tests/org.eclipse.emf.ecp.view.test.common.swt/pom.xml
+++ b/tests/org.eclipse.emf.ecp.view.test.common.swt/pom.xml
@@ -7,12 +7,12 @@
 	<parent>

 		<groupId>org.eclipse.emf.ecp</groupId>

 		<artifactId>ecp-tests-parent</artifactId>

-		<version>1.16.0-SNAPSHOT</version>

+		<version>1.17.0-SNAPSHOT</version>

 		<relativePath>../../releng/org.eclipse.emf.ecp.releng.tests/</relativePath>

 	</parent>

 

   <artifactId>org.eclipse.emf.ecp.view.test.common.swt</artifactId>

   <packaging>eclipse-plugin</packaging>

-  <version>1.16.0-SNAPSHOT</version>

+  <version>1.17.0-SNAPSHOT</version>

 

 </project>

diff --git a/tests/org.eclipse.emf.ecp.view.test.common/META-INF/MANIFEST.MF b/tests/org.eclipse.emf.ecp.view.test.common/META-INF/MANIFEST.MF
index b6a38a9..7153090 100644
--- a/tests/org.eclipse.emf.ecp.view.test.common/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.emf.ecp.view.test.common/META-INF/MANIFEST.MF
@@ -2,8 +2,9 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Common Test Plugin
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.test.common
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emf.ecp.view.test.common.spi;version="1.16.0"
+Export-Package: org.eclipse.emf.ecp.view.test.common.spi;version="1.17.0"
 Require-Bundle: org.eclipse.emf.ecore;bundle-version="2.9.0"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Automatic-Module-Name: org.eclipse.emf.ecp.view.test.common
diff --git a/tests/org.eclipse.emf.ecp.view.test.common/pom.xml b/tests/org.eclipse.emf.ecp.view.test.common/pom.xml
index 98ea02a..9b2c7e9 100644
--- a/tests/org.eclipse.emf.ecp.view.test.common/pom.xml
+++ b/tests/org.eclipse.emf.ecp.view.test.common/pom.xml
@@ -6,11 +6,11 @@
 	<parent>
 		<groupId>org.eclipse.emf.ecp</groupId>
 		<artifactId>ecp-tests-parent</artifactId>
-		<version>1.16.0-SNAPSHOT</version>
+		<version>1.17.0-SNAPSHOT</version>
 		<relativePath>../../releng/org.eclipse.emf.ecp.releng.tests/</relativePath>
 	</parent>
 
 	<artifactId>org.eclipse.emf.ecp.view.test.common</artifactId>
 	<packaging>eclipse-plugin</packaging>
-	<version>1.16.0-SNAPSHOT</version>
+	<version>1.17.0-SNAPSHOT</version>
 </project>
diff --git a/tests/org.eclipse.emf.ecp.view.treemasterdetail.ui.swt.test/META-INF/MANIFEST.MF b/tests/org.eclipse.emf.ecp.view.treemasterdetail.ui.swt.test/META-INF/MANIFEST.MF
index 0cb7783..de93c72 100644
--- a/tests/org.eclipse.emf.ecp.view.treemasterdetail.ui.swt.test/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.emf.ecp.view.treemasterdetail.ui.swt.test/META-INF/MANIFEST.MF
@@ -2,23 +2,24 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Tests for the TreeMasterDetail Renderer
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.treemasterdetail.ui.swt.test
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Fragment-Host: org.eclipse.emf.ecp.view.treemasterdetail.ui.swt;bundle-version="[1.16.0,1.17.0)"
-Export-Package: org.eclipse.emf.ecp.view.spi.treemasterdetail.ui.swt;version="1.16.0",
- org.eclipse.emf.ecp.view.treemasterdetail.ui.swt.test;version="1.16.0";x-internal:=true
+Fragment-Host: org.eclipse.emf.ecp.view.treemasterdetail.ui.swt;bundle-version="[1.17.0,1.18.0]"
+Export-Package: org.eclipse.emf.ecp.view.spi.treemasterdetail.ui.swt;version="1.17.0",
+ org.eclipse.emf.ecp.view.treemasterdetail.ui.swt.test;version="1.17.0";x-internal:=true
 Require-Bundle: org.eclipse.emf.emfstore.examplemodel;bundle-version="[1.4.0,2.0.0)",
-  org.eclipse.emf.ecore;bundle-version="[2.5.0,3.0.0)",
-  org.eclipse.emf.ecp.view.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.test.common.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.swt;bundle-version="[3.1.0,4.0.0)",
-  org.eclipse.emf.ecp.view.treemasterdetail.model;bundle-version="[1.16.0,1.17.0)",
-  org.junit;bundle-version="[4.0.0,5.0.0)",
-  org.eclipse.emf.ecp.ui.view.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.context;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services.domainexpander.default;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.swt.common.test;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.test.common;bundle-version="[1.16.0,1.17.0)",
-  org.mockito.mockito-core-hamcrest-modified;bundle-version="[1.9.5,2.0.0)"
+ org.eclipse.emf.ecore;bundle-version="[2.5.0,3.0.0)",
+ org.eclipse.emf.ecp.view.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.test.common.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.swt;bundle-version="[3.1.0,4.0.0)",
+ org.eclipse.emf.ecp.view.treemasterdetail.model;bundle-version="[1.17.0,1.18.0]",
+ org.junit;bundle-version="[4.0.0,5.0.0)",
+ org.eclipse.emf.ecp.ui.view.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.context;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services.domainexpander.default;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.swt.common.test;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.test.common;bundle-version="[1.17.0,1.18.0]",
+ org.mockito.mockito-core-hamcrest-modified;bundle-version="[1.9.5,2.0.0)"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.view.treemasterdetail.ui.swt.test
diff --git a/tests/org.eclipse.emf.ecp.view.treemasterdetail.ui.swt.test/pom.xml b/tests/org.eclipse.emf.ecp.view.treemasterdetail.ui.swt.test/pom.xml
index 8c887ca..16d8ed9 100644
--- a/tests/org.eclipse.emf.ecp.view.treemasterdetail.ui.swt.test/pom.xml
+++ b/tests/org.eclipse.emf.ecp.view.treemasterdetail.ui.swt.test/pom.xml
@@ -5,13 +5,13 @@
 	<parent>
 		<groupId>org.eclipse.emf.ecp</groupId>
 		<artifactId>ecp-tests-parent</artifactId>
-		<version>1.16.0-SNAPSHOT</version>
+		<version>1.17.0-SNAPSHOT</version>
 		<relativePath>../../releng/org.eclipse.emf.ecp.releng.tests/</relativePath>
 	</parent>
   
   <groupId>org.eclipse.emf.ecp</groupId>
   <artifactId>org.eclipse.emf.ecp.view.treemasterdetail.ui.swt.test</artifactId>
-  <version>1.16.0-SNAPSHOT</version>
+  <version>1.17.0-SNAPSHOT</version>
   <packaging>eclipse-test-plugin</packaging>
   
 	<build>
diff --git a/tests/org.eclipse.emf.ecp.view.treemasterdetail.ui.swt.test/src/org/eclipse/emf/ecp/view/treemasterdetail/ui/swt/test/TreeMasterDetailContextMenuViewModelService_PTest.java b/tests/org.eclipse.emf.ecp.view.treemasterdetail.ui.swt.test/src/org/eclipse/emf/ecp/view/treemasterdetail/ui/swt/test/TreeMasterDetailContextMenuViewModelService_PTest.java
index 04bf178..4de72f9 100644
--- a/tests/org.eclipse.emf.ecp.view.treemasterdetail.ui.swt.test/src/org/eclipse/emf/ecp/view/treemasterdetail/ui/swt/test/TreeMasterDetailContextMenuViewModelService_PTest.java
+++ b/tests/org.eclipse.emf.ecp.view.treemasterdetail.ui.swt.test/src/org/eclipse/emf/ecp/view/treemasterdetail/ui/swt/test/TreeMasterDetailContextMenuViewModelService_PTest.java
@@ -1,6 +1,14 @@
-/**
+/*******************************************************************************
+ * Copyright (c) 2011-2017 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
+ ******************************************************************************/
 package org.eclipse.emf.ecp.view.treemasterdetail.ui.swt.test;
 
 import static org.junit.Assert.assertFalse;
diff --git a/tests/org.eclipse.emf.ecp.view.treemasterdetail.validation.test/META-INF/MANIFEST.MF b/tests/org.eclipse.emf.ecp.view.treemasterdetail.validation.test/META-INF/MANIFEST.MF
index 4e4c4fb..1f81e61 100644
--- a/tests/org.eclipse.emf.ecp.view.treemasterdetail.validation.test/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.emf.ecp.view.treemasterdetail.validation.test/META-INF/MANIFEST.MF
@@ -2,16 +2,17 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: EMF Forms TreeMasterDetail Validation Test
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.treemasterdetail.validation.test;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Fragment-Host: org.eclipse.emf.ecp.view.treemasterdetail.ui.swt;bundle-version="[1.16.0,1.17.0)"
+Fragment-Host: org.eclipse.emf.ecp.view.treemasterdetail.ui.swt;bundle-version="[1.17.0,1.18.0]"
 Bundle-Localization: plugin
-Export-Package: org.eclipse.emf.ecp.view.treemasterdetail.validation.test;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.view.treemasterdetail.validation.test.TestTMD;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.view.treemasterdetail.validation.test.TestTMD.impl;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.view.treemasterdetail.validation.test.TestTMD.util;version="1.16.0";x-internal:=true
+Export-Package: org.eclipse.emf.ecp.view.treemasterdetail.validation.test;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.treemasterdetail.validation.test.TestTMD;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.treemasterdetail.validation.test.TestTMD.impl;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.treemasterdetail.validation.test.TestTMD.util;version="1.17.0";x-internal:=true
 Require-Bundle: org.junit;bundle-version="[4.11.0,5.0.0)",
-  org.eclipse.emfforms.core.services.legacy;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services.domainexpander.default;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.test.common;bundle-version="[1.16.0,1.17.0)"
+ org.eclipse.emfforms.core.services.legacy;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services.domainexpander.default;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.test.common;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Automatic-Module-Name: org.eclipse.emf.ecp.view.treemasterdetail.validation.test
diff --git a/tests/org.eclipse.emf.ecp.view.treemasterdetail.validation.test/pom.xml b/tests/org.eclipse.emf.ecp.view.treemasterdetail.validation.test/pom.xml
index 1945d41..0833e8c 100644
--- a/tests/org.eclipse.emf.ecp.view.treemasterdetail.validation.test/pom.xml
+++ b/tests/org.eclipse.emf.ecp.view.treemasterdetail.validation.test/pom.xml
@@ -6,12 +6,12 @@
 	<parent>
 		<groupId>org.eclipse.emf.ecp</groupId>
 		<artifactId>ecp-tests-parent</artifactId>
-		<version>1.16.0-SNAPSHOT</version>
+		<version>1.17.0-SNAPSHOT</version>
 		<relativePath>../../releng/org.eclipse.emf.ecp.releng.tests/</relativePath>
 	</parent>
 	<groupId>org.eclipse.emf.ecp</groupId>
 	<artifactId>org.eclipse.emf.ecp.view.treemasterdetail.validation.test</artifactId>
-	<version>1.16.0-SNAPSHOT</version>
+	<version>1.17.0-SNAPSHOT</version>
 	<packaging>eclipse-test-plugin</packaging>
 
 	<build>
diff --git a/tests/org.eclipse.emf.ecp.view.ui.editor.test/META-INF/MANIFEST.MF b/tests/org.eclipse.emf.ecp.view.ui.editor.test/META-INF/MANIFEST.MF
index 664e5f3..a1045a9 100644
--- a/tests/org.eclipse.emf.ecp.view.ui.editor.test/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.emf.ecp.view.ui.editor.test/META-INF/MANIFEST.MF
@@ -2,39 +2,43 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Editor SWTBot Tests
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.ui.editor.test;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Activator: org.eclipse.emf.ecp.view.ui.editor.test.Activator
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emf.ecp.view.ui.editor.test;version="1.16.0";uses:="org.eclipse.emf.emfstore.bowling,org.eclipse.swtbot.swt.finder,org.osgi.framework",
-  org.eclipse.emf.ecp.view.ui.editor.test.controls;version="1.16.0";x-internal:=true
+Export-Package: org.eclipse.emf.ecp.view.ui.editor.test;version="1.17.0";
+  uses:="org.eclipse.emf.emfstore.bowling,
+   org.eclipse.swtbot.swt.finder,
+   org.osgi.framework",
+ org.eclipse.emf.ecp.view.ui.editor.test.controls;version="1.17.0";x-internal:=true
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.4.0,4.0.0)",
-  org.eclipse.swtbot.eclipse.finder;bundle-version="[2.1.1,3.0.0)",
-  org.eclipse.emf.ecp.view.test.common.swt;bundle-version="[1.16.0,1.17.0)",
-  org.junit;bundle-version="4.11.0",
-  org.eclipse.emf.emfstore.examplemodel;bundle-version="[1.3.0,2.0.0)",
-  org.eclipse.emf.ecp.view.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.ui.view;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.ui.view.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.swt;bundle-version="3.102.0",
-  org.eclipse.swtbot.junit4_x;bundle-version="2.1.1",
-  org.eclipse.jface.databinding;bundle-version="1.6.200",
-  org.apache.log4j;bundle-version="1.2.15",
-  org.eclipse.emf.ecp.view.test.common;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.core.databinding;bundle-version="1.4.1",
-  org.eclipse.emf.ecp.ui.view.test;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.ui;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.ui;bundle-version="3.105.0",
-  org.eclipse.emf.ecp.emfstore.core;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.edit;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.dynamictree.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.dynamictree.model.test;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.categorization.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.table.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.edit;bundle-version="[2.8.0,3.0.0)",
-  org.eclipse.emf.ecp.view.table.ui.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.table.ui.swt.test;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.view.model.localization;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services.legacy;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services;bundle-version="[1.16.0,1.17.0)"
+ org.eclipse.swtbot.eclipse.finder;bundle-version="[2.1.1,3.0.0)",
+ org.eclipse.emf.ecp.view.test.common.swt;bundle-version="[1.17.0,1.18.0]",
+ org.junit;bundle-version="4.11.0",
+ org.eclipse.emf.emfstore.examplemodel;bundle-version="[1.3.0,2.0.0)",
+ org.eclipse.emf.ecp.view.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.ui.view;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.ui.view.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.swt;bundle-version="3.102.0",
+ org.eclipse.swtbot.junit4_x;bundle-version="2.1.1",
+ org.eclipse.jface.databinding;bundle-version="1.6.200",
+ org.apache.log4j;bundle-version="1.2.15",
+ org.eclipse.emf.ecp.view.test.common;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.core.databinding;bundle-version="1.4.1",
+ org.eclipse.emf.ecp.ui.view.test;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.ui;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.ui;bundle-version="3.105.0",
+ org.eclipse.emf.ecp.emfstore.core;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.edit;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.dynamictree.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.dynamictree.model.test;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.categorization.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.table.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.edit;bundle-version="[2.8.0,3.0.0)",
+ org.eclipse.emf.ecp.view.table.ui.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.view.model.localization;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services.legacy;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.table.test.common;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.view.ui.editor.test
diff --git a/tests/org.eclipse.emf.ecp.view.ui.editor.test/pom.xml b/tests/org.eclipse.emf.ecp.view.ui.editor.test/pom.xml
index 4911cc0..0e317a7 100644
--- a/tests/org.eclipse.emf.ecp.view.ui.editor.test/pom.xml
+++ b/tests/org.eclipse.emf.ecp.view.ui.editor.test/pom.xml
@@ -6,13 +6,13 @@
 	<parent>
 		<groupId>org.eclipse.emf.ecp</groupId>
 		<artifactId>ecp-tests-parent</artifactId>
-		<version>1.16.0-SNAPSHOT</version>
+		<version>1.17.0-SNAPSHOT</version>
 		<relativePath>../../releng/org.eclipse.emf.ecp.releng.tests/</relativePath>
 	</parent>
 
 	<groupId>org.eclipse.emf.ecp</groupId>
 	<artifactId>org.eclipse.emf.ecp.view.ui.editor.test</artifactId>
-	<version>1.16.0-SNAPSHOT</version>
+	<version>1.17.0-SNAPSHOT</version>
 	<packaging>eclipse-test-plugin</packaging>
 
 	<build>
diff --git a/tests/org.eclipse.emf.ecp.view.ui.editor.test/src/org/eclipse/emf/ecp/view/ui/editor/test/CellReadOnly_PTest.java b/tests/org.eclipse.emf.ecp.view.ui.editor.test/src/org/eclipse/emf/ecp/view/ui/editor/test/CellReadOnly_PTest.java
index 277210b..83e56e4 100644
--- a/tests/org.eclipse.emf.ecp.view.ui.editor.test/src/org/eclipse/emf/ecp/view/ui/editor/test/CellReadOnly_PTest.java
+++ b/tests/org.eclipse.emf.ecp.view.ui.editor.test/src/org/eclipse/emf/ecp/view/ui/editor/test/CellReadOnly_PTest.java
@@ -22,8 +22,8 @@
 import org.eclipse.emf.ecp.view.spi.model.VViewFactory;
 import org.eclipse.emf.ecp.view.spi.table.model.VTableControl;
 import org.eclipse.emf.ecp.view.spi.table.swt.ECPCellReadOnlyTester;
-import org.eclipse.emf.ecp.view.table.ui.swt.test.SWTTable_PTest;
-import org.eclipse.emf.ecp.view.table.ui.swt.test.TableControlHandle;
+import org.eclipse.emf.ecp.view.table.test.common.TableControlHandle;
+import org.eclipse.emf.ecp.view.table.test.common.TableTestUtil;
 import org.eclipse.swt.widgets.Display;
 import org.eclipse.swtbot.swt.finder.widgets.SWTBotTable;
 import org.eclipse.swtbot.swt.finder.widgets.SWTBotText;
@@ -82,13 +82,13 @@
 		};
 		CellReadOnlyTesterHelper.getInstance().registerCellReadOnlyTester(tester);
 
-		final TableControlHandle tableControlHandle = SWTTable_PTest.createInitializedTableWithoutTableColumns();
+		final TableControlHandle tableControlHandle = TableTestUtil.createInitializedTableWithoutTableColumns();
 
-		final VDomainModelReference tableColumn1 = SWTTable_PTest.createTableColumn(EcorePackage.eINSTANCE
+		final VDomainModelReference tableColumn1 = TableTestUtil.createTableColumn(EcorePackage.eINSTANCE
 			.getENamedElement_Name());
 		tableControlHandle.addFirstTableColumn(tableColumn1);
 
-		final VDomainModelReference tableColumn2 = SWTTable_PTest.createTableColumn(EcorePackage.eINSTANCE
+		final VDomainModelReference tableColumn2 = TableTestUtil.createTableColumn(EcorePackage.eINSTANCE
 			.getEClass_Interface());
 		tableControlHandle.addSecondTableColumn(tableColumn2);
 
diff --git a/tests/org.eclipse.emf.ecp.view.ui.editor.test/src/org/eclipse/emf/ecp/view/ui/editor/test/controls/TableControlSWTBot_PTest.java b/tests/org.eclipse.emf.ecp.view.ui.editor.test/src/org/eclipse/emf/ecp/view/ui/editor/test/controls/TableControlSWTBot_PTest.java
index 7f25d4c..5896d0d 100644
--- a/tests/org.eclipse.emf.ecp.view.ui.editor.test/src/org/eclipse/emf/ecp/view/ui/editor/test/controls/TableControlSWTBot_PTest.java
+++ b/tests/org.eclipse.emf.ecp.view.ui.editor.test/src/org/eclipse/emf/ecp/view/ui/editor/test/controls/TableControlSWTBot_PTest.java
@@ -31,7 +31,7 @@
 import org.eclipse.emf.ecp.view.spi.table.model.VTableControl;
 import org.eclipse.emf.ecp.view.spi.table.model.VTableDomainModelReference;
 import org.eclipse.emf.ecp.view.spi.table.model.VTableFactory;
-import org.eclipse.emf.ecp.view.table.ui.swt.test.SWTTable_PTest;
+import org.eclipse.emf.ecp.view.table.test.common.TableTestUtil;
 import org.eclipse.emf.ecp.view.test.common.spi.GCCollectable;
 import org.eclipse.emf.ecp.view.ui.editor.test.ECPCommonSWTBotTest;
 import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain;
@@ -268,16 +268,16 @@
 		domainRef.setDomainModelEFeature(BowlingPackage.eINSTANCE.getLeague_Players());
 		control.setDomainModelReference(domainRef);
 
-		final VDomainModelReference nameColumn = SWTTable_PTest.createTableColumn(BowlingPackage.eINSTANCE
+		final VDomainModelReference nameColumn = TableTestUtil.createTableColumn(BowlingPackage.eINSTANCE
 			.getPlayer_Name());
 
-		final VDomainModelReference birthColumn = SWTTable_PTest.createTableColumn(BowlingPackage.eINSTANCE
+		final VDomainModelReference birthColumn = TableTestUtil.createTableColumn(BowlingPackage.eINSTANCE
 			.getPlayer_DateOfBirth());
 
-		final VDomainModelReference professionalColumn = SWTTable_PTest.createTableColumn(BowlingPackage.eINSTANCE
+		final VDomainModelReference professionalColumn = TableTestUtil.createTableColumn(BowlingPackage.eINSTANCE
 			.getPlayer_IsProfessional());
 
-		final VDomainModelReference eMailsColumn = SWTTable_PTest.createTableColumn(BowlingPackage.eINSTANCE
+		final VDomainModelReference eMailsColumn = TableTestUtil.createTableColumn(BowlingPackage.eINSTANCE
 			.getPlayer_EMails());
 
 		VTableDomainModelReference.class.cast(control.getDomainModelReference()).getColumnDomainModelReferences()
diff --git a/tests/org.eclipse.emf.ecp.view.unset.test/META-INF/MANIFEST.MF b/tests/org.eclipse.emf.ecp.view.unset.test/META-INF/MANIFEST.MF
index b8f6473..588d984 100644
--- a/tests/org.eclipse.emf.ecp.view.unset.test/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.emf.ecp.view.unset.test/META-INF/MANIFEST.MF
@@ -2,22 +2,23 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: View Model Unset Service Test
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.unset.test
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emf.ecp.view.unset.test;version="1.16.0"
+Export-Package: org.eclipse.emf.ecp.view.unset.test;version="1.17.0"
 Require-Bundle: org.junit;bundle-version="[4.0.0,5.0.0)",
-  org.eclipse.emf.emfstore.examplemodel;bundle-version="[1.3.0,2.0.0)",
-  org.eclipse.emf.common;bundle-version="[2.7.0,3.0.0)",
-  org.eclipse.emf.ecp.view.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.context;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.unset;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.vertical.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.categorization.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.rule.test;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.rule;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.rule.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.table.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.test.common;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services.legacy;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services;bundle-version="[1.16.0,1.17.0)"
+ org.eclipse.emf.emfstore.examplemodel;bundle-version="[1.3.0,2.0.0)",
+ org.eclipse.emf.common;bundle-version="[2.7.0,3.0.0)",
+ org.eclipse.emf.ecp.view.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.context;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.unset;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.vertical.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.categorization.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.rule.test;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.rule;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.rule.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.table.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.test.common;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services.legacy;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Automatic-Module-Name: org.eclipse.emf.ecp.view.unset.test
diff --git a/tests/org.eclipse.emf.ecp.view.unset.test/pom.xml b/tests/org.eclipse.emf.ecp.view.unset.test/pom.xml
index 1f1adcc..c47fec0 100644
--- a/tests/org.eclipse.emf.ecp.view.unset.test/pom.xml
+++ b/tests/org.eclipse.emf.ecp.view.unset.test/pom.xml
@@ -6,12 +6,12 @@
 	<parent>
 		<groupId>org.eclipse.emf.ecp</groupId>
 		<artifactId>ecp-tests-parent</artifactId>
-		<version>1.16.0-SNAPSHOT</version>
+		<version>1.17.0-SNAPSHOT</version>
 		<relativePath>../../releng/org.eclipse.emf.ecp.releng.tests/</relativePath>
 	</parent>
 	<groupId>org.eclipse.emf.ecp</groupId>
 	<artifactId>org.eclipse.emf.ecp.view.unset.test</artifactId>
-	<version>1.16.0-SNAPSHOT</version>
+	<version>1.17.0-SNAPSHOT</version>
 	<packaging>eclipse-test-plugin</packaging>
 	<build>
 		<sourceDirectory>src</sourceDirectory>
diff --git a/tests/org.eclipse.emf.ecp.view.validation.bean.test/META-INF/MANIFEST.MF b/tests/org.eclipse.emf.ecp.view.validation.bean.test/META-INF/MANIFEST.MF
index 9c20618..f9013e8 100644
--- a/tests/org.eclipse.emf.ecp.view.validation.bean.test/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.emf.ecp.view.validation.bean.test/META-INF/MANIFEST.MF
@@ -2,18 +2,19 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.validation.bean.test;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-ClassPath: .,
   lib/commons-beanutils-1.9.2.jar,
   lib/commons-lang3-3.3.2.jar,
   lib/org.apache.bval.bundle-0.5.jar
 Bundle-Vendor: %providerName
-Fragment-Host: org.eclipse.emf.ecp.view.validation.bean.default;bundle-version="[1.16.0,1.17.0)"
+Fragment-Host: org.eclipse.emf.ecp.view.validation.bean.default;bundle-version="[1.17.0,1.18.0]"
 Bundle-Localization: plugin
-Export-Package: car;version="1.16.0";x-internal:=true,
-  car.impl;version="1.16.0";x-internal:=true,
-  car.util;version="1.16.0";x-internal:=true,
-  org.eclipse.emf.ecp.view.validation.bean.test;version="1.16.0";x-internal:=true
+Export-Package: car;version="1.17.0";x-internal:=true,
+ car.impl;version="1.17.0";x-internal:=true,
+ car.util;version="1.17.0";x-internal:=true,
+ org.eclipse.emf.ecp.view.validation.bean.test;version="1.17.0";x-internal:=true
 Require-Bundle: org.junit;bundle-version="[4.0.0,5.0.0)"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.view.validation.bean.test
diff --git a/tests/org.eclipse.emf.ecp.view.validation.bean.test/pom.xml b/tests/org.eclipse.emf.ecp.view.validation.bean.test/pom.xml
index 3795c07..190ba3a 100644
--- a/tests/org.eclipse.emf.ecp.view.validation.bean.test/pom.xml
+++ b/tests/org.eclipse.emf.ecp.view.validation.bean.test/pom.xml
@@ -6,11 +6,11 @@
 	<parent>
 		<groupId>org.eclipse.emf.ecp</groupId>
 		<artifactId>ecp-tests-parent</artifactId>
-		<version>1.16.0-SNAPSHOT</version>
+		<version>1.17.0-SNAPSHOT</version>
 		<relativePath>../../releng/org.eclipse.emf.ecp.releng.tests/</relativePath>
 	</parent>
 	<groupId>org.eclipse.emf.ecp</groupId>
 	<artifactId>org.eclipse.emf.ecp.view.validation.bean.test</artifactId>
-	<version>1.16.0-SNAPSHOT</version>
+	<version>1.17.0-SNAPSHOT</version>
 	<packaging>eclipse-plugin</packaging>
 </project>
diff --git a/tests/org.eclipse.emf.ecp.view.validation.test/META-INF/MANIFEST.MF b/tests/org.eclipse.emf.ecp.view.validation.test/META-INF/MANIFEST.MF
index c7cb127..881366e 100644
--- a/tests/org.eclipse.emf.ecp.view.validation.test/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.emf.ecp.view.validation.test/META-INF/MANIFEST.MF
@@ -2,31 +2,32 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.validation.test;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-ClassPath: .
 Bundle-Vendor: %providerName
-Fragment-Host: org.eclipse.emf.ecp.view.validation;bundle-version="[1.16.0,1.17.0)"
+Fragment-Host: org.eclipse.emf.ecp.view.validation;bundle-version="[1.17.0,1.18.0]"
 Bundle-Localization: plugin
-Export-Package: org.eclipse.emf.ecp.view.validation.test;version="1.16.0",
-  org.eclipse.emf.ecp.view.validation.test.model;version="1.16.0",
-  org.eclipse.emf.ecp.view.validation.test.model.impl;version="1.16.0",
-  org.eclipse.emf.ecp.view.validation.test.model.util;version="1.16.0"
+Export-Package: org.eclipse.emf.ecp.view.validation.test;version="1.17.0",
+ org.eclipse.emf.ecp.view.validation.test.model;version="1.17.0",
+ org.eclipse.emf.ecp.view.validation.test.model.impl;version="1.17.0",
+ org.eclipse.emf.ecp.view.validation.test.model.util;version="1.17.0"
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.4.0,4.0.0)",
  org.eclipse.emf.ecore;bundle-version="[2.5.0,3.0.0)";visibility:=reexport,
- org.eclipse.emf.ecp.view.model;bundle-version="[1.16.0,1.17.0)",
+ org.eclipse.emf.ecp.view.model;bundle-version="[1.17.0,1.18.0]",
  org.junit;bundle-version="[4.11.0,5.0.0)",
- org.eclipse.emf.ecp.view.context;bundle-version="[1.16.0,1.17.0)",
- org.eclipse.emf.ecp.view.table.model;bundle-version="[1.16.0,1.17.0)",
- org.eclipse.emf.ecp.view.test.common;bundle-version="[1.16.0,1.17.0)",
- org.eclipse.emf.ecp.view.vertical.model;bundle-version="[1.16.0,1.17.0)",
- org.eclipse.emf.ecp.view.model.provider.xmi;bundle-version="[1.16.0,1.17.0)",
- org.eclipse.emf.ecp.test.common;bundle-version="[1.16.0,1.17.0)",
- org.eclipse.emfforms.core.services.legacy;bundle-version="[1.16.0,1.17.0)",
- org.eclipse.emfforms.core.services.domainexpander.default;bundle-version="[1.16.0,1.17.0)",
- org.eclipse.emfforms.core.services.mappingprovider.default;bundle-version="[1.16.0,1.17.0)",
- org.eclipse.emfforms.core.services.mappingprovider.table;bundle-version="[1.16.0,1.17.0)",
- org.eclipse.emfforms.core.services.domainexpander.table;bundle-version="[1.16.0,1.17.0)",
- org.eclipse.emfforms.common.prevalidation;bundle-version="[1.16.0,1.17.0)",
+ org.eclipse.emf.ecp.view.context;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.table.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.test.common;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.vertical.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.model.provider.xmi;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.test.common;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services.legacy;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services.domainexpander.default;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services.mappingprovider.default;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services.mappingprovider.table;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services.domainexpander.table;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.common.prevalidation;bundle-version="[1.17.0,1.18.0]",
  org.mockito.mockito-core-hamcrest-modified;bundle-version="[1.9.5,2.0.0)"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.view.validation.test
diff --git a/tests/org.eclipse.emf.ecp.view.validation.test/pom.xml b/tests/org.eclipse.emf.ecp.view.validation.test/pom.xml
index 169ce4c..708acb6 100644
--- a/tests/org.eclipse.emf.ecp.view.validation.test/pom.xml
+++ b/tests/org.eclipse.emf.ecp.view.validation.test/pom.xml
@@ -6,12 +6,12 @@
 	<parent>
 		<groupId>org.eclipse.emf.ecp</groupId>
 		<artifactId>ecp-tests-parent</artifactId>
-		<version>1.16.0-SNAPSHOT</version>
+		<version>1.17.0-SNAPSHOT</version>
 		<relativePath>../../releng/org.eclipse.emf.ecp.releng.tests/</relativePath>
 	</parent>
 	<groupId>org.eclipse.emf.ecp</groupId>
 	<artifactId>org.eclipse.emf.ecp.view.validation.test</artifactId>
-	<version>1.16.0-SNAPSHOT</version>
+	<version>1.17.0-SNAPSHOT</version>
 	<packaging>eclipse-test-plugin</packaging>
 
 	<build>
diff --git a/tests/org.eclipse.emf.ecp.view.validation.test/src/org/eclipse/emf/ecp/view/validation/test/ValidationService_PTest.java b/tests/org.eclipse.emf.ecp.view.validation.test/src/org/eclipse/emf/ecp/view/validation/test/ValidationService_PTest.java
index 1222737..8e0d1a7 100644
--- a/tests/org.eclipse.emf.ecp.view.validation.test/src/org/eclipse/emf/ecp/view/validation/test/ValidationService_PTest.java
+++ b/tests/org.eclipse.emf.ecp.view.validation.test/src/org/eclipse/emf/ecp/view/validation/test/ValidationService_PTest.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2011-2016 EclipseSource Muenchen GmbH and others.
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH and others.
  *
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
@@ -8,14 +8,13 @@
  *
  * Contributors:
  * Stefan Dirix - initial API and implementation
+ * Christian W. Damus - bug 533522
  ******************************************************************************/
 package org.eclipse.emf.ecp.view.validation.test;
 
-import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
 
-import java.lang.reflect.Field;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
@@ -26,7 +25,6 @@
 import org.eclipse.emf.ecp.common.spi.UniqueSetting;
 import org.eclipse.emf.ecp.test.common.DefaultRealm;
 import org.eclipse.emf.ecp.view.internal.context.ViewModelContextImpl;
-import org.eclipse.emf.ecp.view.internal.validation.ValidationTimerTask;
 import org.eclipse.emf.ecp.view.spi.context.ViewModelContext;
 import org.eclipse.emf.ecp.view.spi.context.ViewModelContextFactory;
 import org.eclipse.emf.ecp.view.spi.model.VControl;
@@ -295,35 +293,6 @@
 	}
 
 	@Test
-	public void testValidationTimerTaskNullReferenceAfterCancel()
-		throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException {
-		setupContent();
-		final ValidationTimerTask timerTask = new ValidationTimerTask(
-			content);
-
-		final Class<? extends ValidationTimerTask> taskClass = timerTask.getClass();
-		final Field validatedEObjectField = taskClass.getDeclaredField("validatedEObject");
-		validatedEObjectField.setAccessible(true);
-		assertEquals(content, validatedEObjectField.get(timerTask));
-		timerTask.cancel();
-		assertEquals(null, validatedEObjectField.get(timerTask));
-	}
-
-	@Test
-	public void testValidationTimerTaskNullReferenceAfterRun()
-		throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException {
-		setupContent();
-		final ValidationTimerTask timerTask = new ValidationTimerTask(content);
-
-		final Class<? extends ValidationTimerTask> taskClass = timerTask.getClass();
-		final Field validatedEObjectField = taskClass.getDeclaredField("validatedEObject");
-		validatedEObjectField.setAccessible(true);
-		assertEquals(content, validatedEObjectField.get(timerTask));
-		timerTask.run();
-		assertEquals(null, validatedEObjectField.get(timerTask));
-	}
-
-	@Test
 	public void testViewModelChangeListenerCutOffDMR() {
 		/* setup domain */
 		final TableContentWithInnerChild parent = TestFactory.eINSTANCE.createTableContentWithInnerChild();
diff --git a/tests/org.eclipse.emf.ecp.view.validation.test/viewmodels/TableContentWithInnerChild.view b/tests/org.eclipse.emf.ecp.view.validation.test/viewmodels/TableContentWithInnerChild.view
index 872fd32..64aa7fe 100644
--- a/tests/org.eclipse.emf.ecp.view.validation.test/viewmodels/TableContentWithInnerChild.view
+++ b/tests/org.eclipse.emf.ecp.view.validation.test/viewmodels/TableContentWithInnerChild.view
@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="ASCII"?>
-<org.eclipse.emf.ecp.view.model:View xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:org.eclipse.emf.ecp.view.model="http://org/eclipse/emf/ecp/view/model/170" xmi:id="_hCRsQEWDEeWfKJaajyNdyA" ecorePath="/org.eclipse.emf.ecp.view.validation.test/model/test.ecore">
+<org.eclipse.emf.ecp.view.model:View xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:org.eclipse.emf.ecp.view.model="http://org/eclipse/emf/ecp/view/model/1170" xmi:id="_hCRsQEWDEeWfKJaajyNdyA">
+  <ecorePaths>/org.eclipse.emf.ecp.view.validation.test/model/test.ecore</ecorePaths>
   <rootEClass href="htp://www.eclipse.org/emf/ecp/view/validation/test/model#//TableContentWithInnerChild"/>
   <children xsi:type="org.eclipse.emf.ecp.view.model:Control" xmi:id="_hCRsQUWDEeWfKJaajyNdyA" name="Control innerChild">
     <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_hCRsQkWDEeWfKJaajyNdyA">
diff --git a/tests/org.eclipse.emf.ecp.view.vertical.ui.swt.test/META-INF/MANIFEST.MF b/tests/org.eclipse.emf.ecp.view.vertical.ui.swt.test/META-INF/MANIFEST.MF
index 56241eb..935ae22 100644
--- a/tests/org.eclipse.emf.ecp.view.vertical.ui.swt.test/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.emf.ecp.view.vertical.ui.swt.test/META-INF/MANIFEST.MF
@@ -2,22 +2,23 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Tests for the VerticalSWT Renderer
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.vertical.ui.swt.test
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Fragment-Host: org.eclipse.emf.ecp.view.vertical.ui.swt;bundle-version="[1.16.0,1.17.0)"
-Export-Package: org.eclipse.emf.ecp.view.vertical.ui.swt.test;version="1.16.0";x-internal:=true
-Require-Bundle: org.eclipse.emf.ecp.view.test.common.swt;bundle-version="[1.16.0,1.17.0)",
-  org.junit;bundle-version="[4.0.0,5.0.0)",
-  org.eclipse.emf.ecp.view.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.swt;bundle-version="[3.1.0,4.0.0)",
-  org.eclipse.emf.ecp.edit;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.ui.view.test;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.ui.view;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.ui.view.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.jface;bundle-version="3.8.102",
-  org.eclipse.emf.ecp.view.vertical.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services.legacy;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services.domainexpander.default;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services.structuralchange;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services.structuralchange.default;bundle-version="[1.16.0,1.17.0)"
+Fragment-Host: org.eclipse.emf.ecp.view.vertical.ui.swt;bundle-version="[1.17.0,1.18.0]"
+Export-Package: org.eclipse.emf.ecp.view.vertical.ui.swt.test;version="1.17.0";x-internal:=true
+Require-Bundle: org.eclipse.emf.ecp.view.test.common.swt;bundle-version="[1.17.0,1.18.0]",
+ org.junit;bundle-version="[4.0.0,5.0.0)",
+ org.eclipse.emf.ecp.view.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.swt;bundle-version="[3.1.0,4.0.0)",
+ org.eclipse.emf.ecp.edit;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.ui.view.test;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.ui.view;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.ui.view.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.jface;bundle-version="3.8.102",
+ org.eclipse.emf.ecp.view.vertical.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services.legacy;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services.domainexpander.default;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services.structuralchange;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services.structuralchange.default;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Automatic-Module-Name: org.eclipse.emf.ecp.view.vertical.ui.swt.test
diff --git a/tests/org.eclipse.emf.ecp.view.vertical.ui.swt.test/pom.xml b/tests/org.eclipse.emf.ecp.view.vertical.ui.swt.test/pom.xml
index b0263ab..0dec1ae 100644
--- a/tests/org.eclipse.emf.ecp.view.vertical.ui.swt.test/pom.xml
+++ b/tests/org.eclipse.emf.ecp.view.vertical.ui.swt.test/pom.xml
@@ -6,12 +6,12 @@
 	<parent>
 		<groupId>org.eclipse.emf.ecp</groupId>
 		<artifactId>ecp-tests-parent</artifactId>
-		<version>1.16.0-SNAPSHOT</version>
+		<version>1.17.0-SNAPSHOT</version>
 		<relativePath>../../releng/org.eclipse.emf.ecp.releng.tests/</relativePath>
 	</parent>
 	<groupId>org.eclipse.emf.ecp</groupId>
 	<artifactId>org.eclipse.emf.ecp.view.vertical.ui.swt.test</artifactId>
-	<version>1.16.0-SNAPSHOT</version>
+	<version>1.17.0-SNAPSHOT</version>
 	<packaging>eclipse-test-plugin</packaging>
 
 	<build>
diff --git a/tests/org.eclipse.emf.ecp.view.viewproxy.test/META-INF/MANIFEST.MF b/tests/org.eclipse.emf.ecp.view.viewproxy.test/META-INF/MANIFEST.MF
index 3625709..952ce33 100644
--- a/tests/org.eclipse.emf.ecp.view.viewproxy.test/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.emf.ecp.view.viewproxy.test/META-INF/MANIFEST.MF
@@ -2,11 +2,12 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: ViewProxy Tests
 Bundle-SymbolicName: org.eclipse.emf.ecp.view.viewproxy.tests;singleton:=true
-Bundle-Version: 1.16.0.qualifier
-Fragment-Host: org.eclipse.emf.ecp.view.viewproxy.model;bundle-version="[1.16.0,1.17.0)"
-Export-Package: org.eclipse.emf.ecp.view.internal.viewproxy.resolver;version="1.16.0",
-  org.eclipse.emf.ecp.view.viewproxy.tests;version="1.16.0";x-internal:=true
+Bundle-Version: 1.17.0.qualifier
+Fragment-Host: org.eclipse.emf.ecp.view.viewproxy.model;bundle-version="[1.17.0,1.18.0]"
+Export-Package: org.eclipse.emf.ecp.view.internal.viewproxy.resolver;version="1.17.0",
+ org.eclipse.emf.ecp.view.viewproxy.tests;version="1.17.0";x-internal:=true
 Require-Bundle: org.junit;bundle-version="[4.11.0,5.0.0)",
-  org.eclipse.emf.emfstore.examplemodel;bundle-version="[1.2.0,2.0.0)",
-  org.eclipse.emfforms.core.services;bundle-version="[1.16.0,1.17.0)"
+ org.eclipse.emf.emfstore.examplemodel;bundle-version="[1.2.0,2.0.0)",
+ org.eclipse.emfforms.core.services;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Automatic-Module-Name: org.eclipse.emf.ecp.view.viewproxy.tests
diff --git a/tests/org.eclipse.emf.ecp.view.viewproxy.test/Player.view b/tests/org.eclipse.emf.ecp.view.viewproxy.test/Player.view
index c4eb7e1..e1b20fb 100644
--- a/tests/org.eclipse.emf.ecp.view.viewproxy.test/Player.view
+++ b/tests/org.eclipse.emf.ecp.view.viewproxy.test/Player.view
@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="ASCII"?>
-<org.eclipse.emf.ecp.view.model:View xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:org.eclipse.emf.ecp.view.model="http://org/eclipse/emf/ecp/view/model/170" xmi:id="_mzv7oEWDEeWfKJaajyNdyA" ecorePath="/org.eclipse.emf.emfstore.examplemodel/model/bowling.ecore">
+<org.eclipse.emf.ecp.view.model:View xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:org.eclipse.emf.ecp.view.model="http://org/eclipse/emf/ecp/view/model/1170" xmi:id="_mzv7oEWDEeWfKJaajyNdyA">
+  <ecorePaths>/org.eclipse.emf.emfstore.examplemodel/model/bowling.ecore</ecorePaths>
   <rootEClass href="http://org/eclipse/example/bowling#//Player"/>
   <children xsi:type="org.eclipse.emf.ecp.view.model:Control" xmi:id="_mzv7oUWDEeWfKJaajyNdyA" name="name">
     <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_mzv7okWDEeWfKJaajyNdyA">
diff --git a/tests/org.eclipse.emf.ecp.view.viewproxy.test/Player2.view b/tests/org.eclipse.emf.ecp.view.viewproxy.test/Player2.view
index d29ed79..639fd01 100644
--- a/tests/org.eclipse.emf.ecp.view.viewproxy.test/Player2.view
+++ b/tests/org.eclipse.emf.ecp.view.viewproxy.test/Player2.view
@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="ASCII"?>
-<org.eclipse.emf.ecp.view.model:View xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:org.eclipse.emf.ecp.view.model="http://org/eclipse/emf/ecp/view/model/170" xmi:id="_kd6FoEWDEeWfKJaajyNdyA" ecorePath="/org.eclipse.emf.emfstore.examplemodel/model/bowling.ecore">
+<org.eclipse.emf.ecp.view.model:View xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:org.eclipse.emf.ecp.view.model="http://org/eclipse/emf/ecp/view/model/1170" xmi:id="_kd6FoEWDEeWfKJaajyNdyA">
+  <ecorePaths>/org.eclipse.emf.emfstore.examplemodel/model/bowling.ecore</ecorePaths>
   <rootEClass href="http://org/eclipse/example/bowling#//Player"/>
   <children xsi:type="org.eclipse.emf.ecp.view.model:Control" xmi:id="_kd6FoUWDEeWfKJaajyNdyA" name="gender">
     <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_kd6FokWDEeWfKJaajyNdyA">
diff --git a/tests/org.eclipse.emf.ecp.view.viewproxy.test/pom.xml b/tests/org.eclipse.emf.ecp.view.viewproxy.test/pom.xml
index 615b165..814a70c 100644
--- a/tests/org.eclipse.emf.ecp.view.viewproxy.test/pom.xml
+++ b/tests/org.eclipse.emf.ecp.view.viewproxy.test/pom.xml
@@ -6,12 +6,12 @@
 	<parent>
 		<groupId>org.eclipse.emf.ecp</groupId>
 		<artifactId>ecp-tests-parent</artifactId>
-		<version>1.16.0-SNAPSHOT</version>
+		<version>1.17.0-SNAPSHOT</version>
 		<relativePath>../../releng/org.eclipse.emf.ecp.releng.tests/</relativePath>
 	</parent>
 	<groupId>org.eclipse.emf.ecp</groupId>
 	<artifactId>org.eclipse.emf.ecp.view.viewproxy.tests</artifactId>
-	<version>1.16.0-SNAPSHOT</version>
+	<version>1.17.0-SNAPSHOT</version>
 	<packaging>eclipse-test-plugin</packaging>
 
 	<build>
diff --git a/tests/org.eclipse.emf.ecp.workspace.ui.rap.test/META-INF/MANIFEST.MF b/tests/org.eclipse.emf.ecp.workspace.ui.rap.test/META-INF/MANIFEST.MF
index e44017c..253464e 100644
--- a/tests/org.eclipse.emf.ecp.workspace.ui.rap.test/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.emf.ecp.workspace.ui.rap.test/META-INF/MANIFEST.MF
@@ -2,19 +2,20 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Test
 Bundle-SymbolicName: org.eclipse.emf.ecp.workspace.ui.rap.test
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emf.ecp.workspace.ui.rap.test;version="1.16.0";x-internal:=true
+Export-Package: org.eclipse.emf.ecp.workspace.ui.rap.test;version="1.17.0";x-internal:=true
 Require-Bundle: org.junit;bundle-version="[4.11.0,5.0.0)",
-  org.eclipse.emf.ecp.core;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.core.rap;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.core.rap.sessionprovider.test;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.equinox.ds;bundle-version="[1.4.300,2.0.0)",
-  org.eclipse.emf.ecp.workspace.core;bundle-version="[1.16.0,1.17.0)"
+ org.eclipse.emf.ecp.core;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.core.rap;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.core.rap.sessionprovider.test;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.equinox.ds;bundle-version="[1.4.300,2.0.0)",
+ org.eclipse.emf.ecp.workspace.core;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Import-Package: org.eclipse.core.runtime;version="0.0.0",
-  org.eclipse.emf.ecp.core;version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.core.rap;version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.core.rap.sessionprovider.test;version="[1.16.0,1.17.0)",
-  org.osgi.framework;version="0.0.0"
+ org.eclipse.emf.ecp.core;version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.core.rap;version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.core.rap.sessionprovider.test;version="[1.17.0,1.18.0]",
+ org.osgi.framework;version="0.0.0"
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emf.ecp.workspace.ui.rap.test
diff --git a/tests/org.eclipse.emf.ecp.workspace.ui.rap.test/pom.xml b/tests/org.eclipse.emf.ecp.workspace.ui.rap.test/pom.xml
index e19ff03..c978b84 100644
--- a/tests/org.eclipse.emf.ecp.workspace.ui.rap.test/pom.xml
+++ b/tests/org.eclipse.emf.ecp.workspace.ui.rap.test/pom.xml
@@ -6,12 +6,12 @@
 	<parent>
 		<groupId>org.eclipse.emf.ecp</groupId>
 		<artifactId>ecp-tests-parent</artifactId>
-		<version>1.16.0-SNAPSHOT</version>
+		<version>1.17.0-SNAPSHOT</version>
 		<relativePath>../../releng/org.eclipse.emf.ecp.releng.tests/</relativePath>
 	</parent>
 	<groupId>org.eclipse.emf.ecp</groupId>
 	<artifactId>org.eclipse.emf.ecp.workspace.ui.rap.test</artifactId>
-	<version>1.16.0-SNAPSHOT</version>
+	<version>1.17.0-SNAPSHOT</version>
 	<packaging>eclipse-test-plugin</packaging>
 
 	<build>
diff --git a/tests/org.eclipse.emfforms.common.tests/META-INF/MANIFEST.MF b/tests/org.eclipse.emfforms.common.tests/META-INF/MANIFEST.MF
index 729a04f..3d013b1 100644
--- a/tests/org.eclipse.emfforms.common.tests/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.emfforms.common.tests/META-INF/MANIFEST.MF
@@ -2,11 +2,12 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: EMFForms Locale Tests
 Bundle-SymbolicName: org.eclipse.emfforms.common.tests
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Fragment-Host: org.eclipse.emfforms.common;bundle-version="[1.16.0,1.17.0)"
-Export-Package: org.eclipse.emfforms.common.tests;version="1.16.0";x-internal:=true,
-  org.eclipse.emfforms.spi.common.locale;version="1.16.0"
+Fragment-Host: org.eclipse.emfforms.common;bundle-version="[1.17.0,1.18.0]"
+Export-Package: org.eclipse.emfforms.common.tests;version="1.17.0";x-internal:=true,
+ org.eclipse.emfforms.spi.common.locale;version="1.17.0"
 Require-Bundle: org.junit;bundle-version="[4.11.0,5.0.0)",
   org.mockito.mockito-core-hamcrest-modified;bundle-version="[1.9.5,2.0.0)"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Automatic-Module-Name: org.eclipse.emfforms.common.tests
diff --git a/tests/org.eclipse.emfforms.common.tests/pom.xml b/tests/org.eclipse.emfforms.common.tests/pom.xml
index 8ec9289..005a330 100644
--- a/tests/org.eclipse.emfforms.common.tests/pom.xml
+++ b/tests/org.eclipse.emfforms.common.tests/pom.xml
@@ -6,12 +6,12 @@
 	<parent>
 		<groupId>org.eclipse.emf.ecp</groupId>
 		<artifactId>ecp-tests-parent</artifactId>
-		<version>1.16.0-SNAPSHOT</version>
+		<version>1.17.0-SNAPSHOT</version>
 		<relativePath>../../releng/org.eclipse.emf.ecp.releng.tests/</relativePath>
 	</parent>
 	<groupId>org.eclipse.emf.ecp</groupId>
 	<artifactId>org.eclipse.emfforms.common.tests</artifactId>
-	<version>1.16.0-SNAPSHOT</version>
+	<version>1.17.0-SNAPSHOT</version>
 	<packaging>eclipse-test-plugin</packaging>
 
 	<build>
diff --git a/tests/org.eclipse.emfforms.common.validation.tests/META-INF/MANIFEST.MF b/tests/org.eclipse.emfforms.common.validation.tests/META-INF/MANIFEST.MF
index 925dc8e..16ac0d3 100644
--- a/tests/org.eclipse.emfforms.common.validation.tests/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.emfforms.common.validation.tests/META-INF/MANIFEST.MF
@@ -2,13 +2,14 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: EMFForms Common Validation Tests
 Bundle-SymbolicName: org.eclipse.emfforms.common.validation.tests
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Fragment-Host: org.eclipse.emfforms.common.validation;bundle-version="[1.16.0,1.17.0)"
-Export-Package: org.eclipse.emfforms.common.internal.validation;version="1.16.0";x-internal:=true,
-  org.eclipse.emfforms.common.validation.tests;version="1.16.0"
+Fragment-Host: org.eclipse.emfforms.common.validation;bundle-version="[1.17.0,1.18.0]"
+Export-Package: org.eclipse.emfforms.common.internal.validation;version="1.17.0";x-internal:=true,
+ org.eclipse.emfforms.common.validation.tests;version="1.17.0"
 Require-Bundle: org.junit;bundle-version="[4.11.0,5.0.0)",
   org.mockito.mockito-core-hamcrest-modified;bundle-version="[1.9.5,2.0.0)",
   org.eclipse.emf.emfstore.examplemodel;bundle-version="[1.9.0,2.0.0)",
   org.objenesis;bundle-version="[1.0.0,2.0.0)"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Automatic-Module-Name: org.eclipse.emfforms.common.validation.tests
diff --git a/tests/org.eclipse.emfforms.common.validation.tests/pom.xml b/tests/org.eclipse.emfforms.common.validation.tests/pom.xml
index 07a2459..7b7cd17 100644
--- a/tests/org.eclipse.emfforms.common.validation.tests/pom.xml
+++ b/tests/org.eclipse.emfforms.common.validation.tests/pom.xml
@@ -6,12 +6,12 @@
 	<parent>
 		<groupId>org.eclipse.emf.ecp</groupId>
 		<artifactId>ecp-tests-parent</artifactId>
-		<version>1.16.0-SNAPSHOT</version>
+		<version>1.17.0-SNAPSHOT</version>
 		<relativePath>../../releng/org.eclipse.emf.ecp.releng.tests/</relativePath>
 	</parent>
 	<groupId>org.eclipse.emf.ecp</groupId>
 	<artifactId>org.eclipse.emfforms.common.validation.tests</artifactId>
-	<version>1.16.0-SNAPSHOT</version>
+	<version>1.17.0-SNAPSHOT</version>
 	<packaging>eclipse-test-plugin</packaging>
 
 	<build>
diff --git a/tests/org.eclipse.emfforms.core.bazaar.tests/META-INF/MANIFEST.MF b/tests/org.eclipse.emfforms.core.bazaar.tests/META-INF/MANIFEST.MF
index cefd4ad..6f00c49 100644
--- a/tests/org.eclipse.emfforms.core.bazaar.tests/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.emfforms.core.bazaar.tests/META-INF/MANIFEST.MF
@@ -2,8 +2,8 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Bazaar Tests
 Bundle-SymbolicName: org.eclipse.emfforms.core.bazaar.tests
-Bundle-Version: 1.16.0.qualifier
-Fragment-Host: org.eclipse.emfforms.core.bazaar;bundle-version="[1.16.0,1.17.0)"
+Bundle-Version: 1.17.0.qualifier
+Fragment-Host: org.eclipse.emfforms.core.bazaar;bundle-version="[1.17.0,1.18.0]"
 Require-Bundle: org.junit;bundle-version="[4.12.0,5.0.0)",
  org.mockito.mockito-core-hamcrest-modified;bundle-version="[1.9.5,2.0.0)",
  org.objenesis;bundle-version="[1.0.0,2.0.0)"
@@ -12,4 +12,5 @@
  org.eclipse.e4.core.contexts;version="[1.6.0,2.0.0)",
  org.eclipse.emfforms.bazaar;version="1.16.0",
  org.osgi.framework;version="[1.3.0,2.0.0)"
-Export-Package: org.eclipse.emfforms.bazaar.internal;version="1.16.0";x-internal:=true
+Export-Package: org.eclipse.emfforms.bazaar.internal;version="1.17.0";x-internal:=true
+Automatic-Module-Name: org.eclipse.emfforms.core.bazaar.tests
diff --git a/tests/org.eclipse.emfforms.core.bazaar.tests/pom.xml b/tests/org.eclipse.emfforms.core.bazaar.tests/pom.xml
index 13e94d2..781874e 100644
--- a/tests/org.eclipse.emfforms.core.bazaar.tests/pom.xml
+++ b/tests/org.eclipse.emfforms.core.bazaar.tests/pom.xml
@@ -6,7 +6,7 @@
 	<parent>
 		<groupId>org.eclipse.emf.ecp</groupId>
 		<artifactId>ecp-tests-parent</artifactId>
-		<version>1.16.0-SNAPSHOT</version>
+		<version>1.17.0-SNAPSHOT</version>
 		<relativePath>../../releng/org.eclipse.emf.ecp.releng.tests/</relativePath>
 	</parent>
 	<artifactId>org.eclipse.emfforms.core.bazaar.tests</artifactId>
diff --git a/tests/org.eclipse.emfforms.core.bazaar.tests/src/org/eclipse/emfforms/bazaar/internal/AllTests.java b/tests/org.eclipse.emfforms.core.bazaar.tests/src/org/eclipse/emfforms/bazaar/internal/AllTests.java
index 55632d0..08dfa78 100644
--- a/tests/org.eclipse.emfforms.core.bazaar.tests/src/org/eclipse/emfforms/bazaar/internal/AllTests.java
+++ b/tests/org.eclipse.emfforms.core.bazaar.tests/src/org/eclipse/emfforms/bazaar/internal/AllTests.java
@@ -23,8 +23,8 @@
  *
  */
 @RunWith(Suite.class)
-@SuiteClasses({ Bazaar_ITest.class,
-	BazaarBuilderTest.class,
+@SuiteClasses({ Bazaar_Test.class,
+	BazaarBuilder_Test.class,
 	ThreadSafeBazaar_ITest.class,
 	Bazaar_PTest.class
 })
diff --git a/tests/org.eclipse.emfforms.core.bazaar.tests/src/org/eclipse/emfforms/bazaar/internal/BazaarBuilderTest.java b/tests/org.eclipse.emfforms.core.bazaar.tests/src/org/eclipse/emfforms/bazaar/internal/BazaarBuilderTest.java
deleted file mode 100644
index bb46ef8..0000000
--- a/tests/org.eclipse.emfforms.core.bazaar.tests/src/org/eclipse/emfforms/bazaar/internal/BazaarBuilderTest.java
+++ /dev/null
@@ -1,161 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2018 Christian W. Damus 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:
- * Christian W. Damus - initial API and implementation
- ******************************************************************************/
-package org.eclipse.emfforms.bazaar.internal;
-
-import static java.util.Arrays.asList;
-import static org.hamcrest.CoreMatchers.hasItems;
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-
-import java.util.Arrays;
-
-import org.eclipse.e4.core.contexts.EclipseContextFactory;
-import org.eclipse.emfforms.bazaar.Bazaar;
-import org.eclipse.emfforms.bazaar.Bazaar.PriorityOverlapCallBack;
-import org.eclipse.emfforms.bazaar.BazaarContext;
-import org.eclipse.emfforms.bazaar.Vendor;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.Parameterized;
-import org.junit.runners.Parameterized.Parameters;
-
-/**
- * Test cases for the {@link org.eclipse.emfforms.bazaar.Bazaar.Builder} class.
- *
- * @author Christian W. Damus
- */
-@RunWith(Parameterized.class)
-public class BazaarBuilderTest {
-
-	private final BazaarVariant variant;
-
-	/**
-	 * Initializes me.
-	 */
-	public BazaarBuilderTest(BazaarVariant variant) {
-		super();
-
-		this.variant = variant;
-	}
-
-	@Test
-	public void addVendor() {
-		final MyProduct myProductMock = mock(MyProduct.class);
-		final Bazaar.Builder<MyProduct> fixture = basicFixture();
-		final Bazaar<MyProduct> bazaar = fixture
-			.add(new FullVendorParameter2(myProductMock))
-			.build();
-
-		assertThat(bazaar.createProduct(context()), is(myProductMock));
-	}
-
-	@Test
-	public void addTwoVendors() {
-		final MyProduct myProductMock1 = mock(MyProduct.class);
-		final MyProduct myProductMock2 = mock(MyProduct.class);
-		final Bazaar.Builder<MyProduct> fixture = basicFixture();
-		@SuppressWarnings("unchecked")
-		final Bazaar<MyProduct> bazaar = fixture
-			.add(new FullVendorParameter2(myProductMock1), new FullVendorParameter2(myProductMock2))
-			.build();
-
-		assertThat(bazaar.createProducts(context()), hasItems(myProductMock1, myProductMock2));
-	}
-
-	@Test
-	public void addThreeVendors() {
-		final MyProduct myProductMock1 = mock(MyProduct.class);
-		final MyProduct myProductMock2 = mock(MyProduct.class);
-		final MyProduct myProductMock3 = mock(MyProduct.class);
-		final Bazaar.Builder<MyProduct> fixture = basicFixture();
-		@SuppressWarnings("unchecked")
-		final Bazaar<MyProduct> bazaar = fixture
-			.add(new FullVendorParameter2(myProductMock1),
-				new FullVendorParameter2(myProductMock2),
-				new FullVendorParameter2(myProductMock3))
-			.build();
-
-		assertThat(bazaar.createProducts(context()), hasItems(myProductMock1, myProductMock2, myProductMock3));
-	}
-
-	@Test
-	public void addAllVendors() {
-		final MyProduct myProductMock1 = mock(MyProduct.class);
-		final MyProduct myProductMock2 = mock(MyProduct.class);
-		final MyProduct myProductMock3 = mock(MyProduct.class);
-		final Bazaar.Builder<MyProduct> fixture = basicFixture();
-		final Bazaar<MyProduct> bazaar = fixture
-			.addAll(Arrays.asList(new FullVendorParameter2(myProductMock1),
-				new FullVendorParameter2(myProductMock2),
-				new FullVendorParameter2(myProductMock3)))
-			.build();
-
-		assertThat(bazaar.createProducts(context()), hasItems(myProductMock1, myProductMock2, myProductMock3));
-	}
-
-	@Test
-	public void onPriorityOverlap() {
-		final Vendor<MyProduct> vendor = new VendorPriority1Parameter0();
-		final Vendor<MyProduct> vendor2 = new VendorPriority1Parameter0();
-		@SuppressWarnings("unchecked")
-		final Bazaar.Builder<MyProduct> fixture = vendorFixture(vendor, vendor2);
-
-		@SuppressWarnings("unchecked")
-		final PriorityOverlapCallBack<MyProduct> priorityOverlapCallBackMock = mock(PriorityOverlapCallBack.class);
-		final Bazaar<MyProduct> bazaar = fixture
-			.onPriorityOverlap(priorityOverlapCallBackMock)
-			.build();
-
-		((BazaarImpl<?>) bazaar).getBestVendor(EclipseContextFactory.create());
-
-		verify(priorityOverlapCallBackMock, times(1)).priorityOverlap(vendor, vendor2);
-	}
-
-	@Test(expected = IllegalStateException.class)
-	public void onPriorityOverlapAlreadySet() {
-		final Bazaar.Builder<MyProduct> fixture = basicFixture();
-
-		@SuppressWarnings("unchecked")
-		final PriorityOverlapCallBack<MyProduct> priorityOverlapCallBackMock1 = mock(PriorityOverlapCallBack.class);
-		@SuppressWarnings("unchecked")
-		final PriorityOverlapCallBack<MyProduct> priorityOverlapCallBackMock2 = mock(PriorityOverlapCallBack.class);
-
-		fixture.onPriorityOverlap(priorityOverlapCallBackMock1);
-		fixture.onPriorityOverlap(priorityOverlapCallBackMock2);
-	}
-
-	//
-	// Test framework
-	//
-
-	@Parameters(name = "{0}")
-	public static Object[] parameters() {
-		return BazaarVariant.values();
-	}
-
-	Bazaar.Builder<MyProduct> basicFixture() {
-		return variant.<MyProduct> builder()
-			.addContextFunction(String.class, new BazaarContextFunctionParameter1("")); //$NON-NLS-1$
-	}
-
-	Bazaar.Builder<MyProduct> vendorFixture(Vendor<? extends MyProduct>... vendors) {
-		return variant.builder(asList(vendors))
-			.addContextFunction(String.class, new BazaarContextFunctionParameter1("")); //$NON-NLS-1$
-	}
-
-	static BazaarContext context() {
-		return BazaarContext.Builder.empty().add(0).build();
-	}
-}
diff --git a/tests/org.eclipse.emfforms.core.bazaar.tests/src/org/eclipse/emfforms/bazaar/internal/BazaarBuilder_Test.java b/tests/org.eclipse.emfforms.core.bazaar.tests/src/org/eclipse/emfforms/bazaar/internal/BazaarBuilder_Test.java
new file mode 100644
index 0000000..f4eb1b4
--- /dev/null
+++ b/tests/org.eclipse.emfforms.core.bazaar.tests/src/org/eclipse/emfforms/bazaar/internal/BazaarBuilder_Test.java
@@ -0,0 +1,161 @@
+/*******************************************************************************
+ * Copyright (c) 2018 Christian W. Damus 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:
+ * Christian W. Damus - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.emfforms.bazaar.internal;
+
+import static java.util.Arrays.asList;
+import static org.hamcrest.CoreMatchers.hasItems;
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+
+import java.util.Arrays;
+
+import org.eclipse.e4.core.contexts.EclipseContextFactory;
+import org.eclipse.emfforms.bazaar.Bazaar;
+import org.eclipse.emfforms.bazaar.Bazaar.PriorityOverlapCallBack;
+import org.eclipse.emfforms.bazaar.BazaarContext;
+import org.eclipse.emfforms.bazaar.Vendor;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+import org.junit.runners.Parameterized.Parameters;
+
+/**
+ * Test cases for the {@link org.eclipse.emfforms.bazaar.Bazaar.Builder} class.
+ *
+ * @author Christian W. Damus
+ */
+@RunWith(Parameterized.class)
+public class BazaarBuilder_Test {
+
+	private final BazaarVariant variant;
+
+	/**
+	 * Initializes me.
+	 */
+	public BazaarBuilder_Test(BazaarVariant variant) {
+		super();
+
+		this.variant = variant;
+	}
+
+	@Test
+	public void addVendor() {
+		final MyProduct myProductMock = mock(MyProduct.class);
+		final Bazaar.Builder<MyProduct> fixture = basicFixture();
+		final Bazaar<MyProduct> bazaar = fixture
+			.add(new FullVendorParameter2(myProductMock))
+			.build();
+
+		assertThat(bazaar.createProduct(context()), is(myProductMock));
+	}
+
+	@Test
+	public void addTwoVendors() {
+		final MyProduct myProductMock1 = mock(MyProduct.class);
+		final MyProduct myProductMock2 = mock(MyProduct.class);
+		final Bazaar.Builder<MyProduct> fixture = basicFixture();
+		@SuppressWarnings("unchecked")
+		final Bazaar<MyProduct> bazaar = fixture
+			.add(new FullVendorParameter2(myProductMock1), new FullVendorParameter2(myProductMock2))
+			.build();
+
+		assertThat(bazaar.createProducts(context()), hasItems(myProductMock1, myProductMock2));
+	}
+
+	@Test
+	public void addThreeVendors() {
+		final MyProduct myProductMock1 = mock(MyProduct.class);
+		final MyProduct myProductMock2 = mock(MyProduct.class);
+		final MyProduct myProductMock3 = mock(MyProduct.class);
+		final Bazaar.Builder<MyProduct> fixture = basicFixture();
+		@SuppressWarnings("unchecked")
+		final Bazaar<MyProduct> bazaar = fixture
+			.add(new FullVendorParameter2(myProductMock1),
+				new FullVendorParameter2(myProductMock2),
+				new FullVendorParameter2(myProductMock3))
+			.build();
+
+		assertThat(bazaar.createProducts(context()), hasItems(myProductMock1, myProductMock2, myProductMock3));
+	}
+
+	@Test
+	public void addAllVendors() {
+		final MyProduct myProductMock1 = mock(MyProduct.class);
+		final MyProduct myProductMock2 = mock(MyProduct.class);
+		final MyProduct myProductMock3 = mock(MyProduct.class);
+		final Bazaar.Builder<MyProduct> fixture = basicFixture();
+		final Bazaar<MyProduct> bazaar = fixture
+			.addAll(Arrays.asList(new FullVendorParameter2(myProductMock1),
+				new FullVendorParameter2(myProductMock2),
+				new FullVendorParameter2(myProductMock3)))
+			.build();
+
+		assertThat(bazaar.createProducts(context()), hasItems(myProductMock1, myProductMock2, myProductMock3));
+	}
+
+	@Test
+	public void onPriorityOverlap() {
+		final Vendor<MyProduct> vendor = new VendorPriority1Parameter0();
+		final Vendor<MyProduct> vendor2 = new VendorPriority1Parameter0();
+		@SuppressWarnings("unchecked")
+		final Bazaar.Builder<MyProduct> fixture = vendorFixture(vendor, vendor2);
+
+		@SuppressWarnings("unchecked")
+		final PriorityOverlapCallBack<MyProduct> priorityOverlapCallBackMock = mock(PriorityOverlapCallBack.class);
+		final Bazaar<MyProduct> bazaar = fixture
+			.onPriorityOverlap(priorityOverlapCallBackMock)
+			.build();
+
+		((BazaarImpl<?>) bazaar).getBestVendor(EclipseContextFactory.create());
+
+		verify(priorityOverlapCallBackMock, times(1)).priorityOverlap(vendor, vendor2);
+	}
+
+	@Test(expected = IllegalStateException.class)
+	public void onPriorityOverlapAlreadySet() {
+		final Bazaar.Builder<MyProduct> fixture = basicFixture();
+
+		@SuppressWarnings("unchecked")
+		final PriorityOverlapCallBack<MyProduct> priorityOverlapCallBackMock1 = mock(PriorityOverlapCallBack.class);
+		@SuppressWarnings("unchecked")
+		final PriorityOverlapCallBack<MyProduct> priorityOverlapCallBackMock2 = mock(PriorityOverlapCallBack.class);
+
+		fixture.onPriorityOverlap(priorityOverlapCallBackMock1);
+		fixture.onPriorityOverlap(priorityOverlapCallBackMock2);
+	}
+
+	//
+	// Test framework
+	//
+
+	@Parameters(name = "{0}")
+	public static Object[] parameters() {
+		return BazaarVariant.values();
+	}
+
+	Bazaar.Builder<MyProduct> basicFixture() {
+		return variant.<MyProduct> builder()
+			.addContextFunction(String.class, new BazaarContextFunctionParameter1("")); //$NON-NLS-1$
+	}
+
+	Bazaar.Builder<MyProduct> vendorFixture(Vendor<? extends MyProduct>... vendors) {
+		return variant.builder(asList(vendors))
+			.addContextFunction(String.class, new BazaarContextFunctionParameter1("")); //$NON-NLS-1$
+	}
+
+	static BazaarContext context() {
+		return BazaarContext.Builder.empty().add(0).build();
+	}
+}
diff --git a/tests/org.eclipse.emfforms.core.bazaar.tests/src/org/eclipse/emfforms/bazaar/internal/Bazaar_ITest.java b/tests/org.eclipse.emfforms.core.bazaar.tests/src/org/eclipse/emfforms/bazaar/internal/Bazaar_ITest.java
deleted file mode 100644
index da367a2..0000000
--- a/tests/org.eclipse.emfforms.core.bazaar.tests/src/org/eclipse/emfforms/bazaar/internal/Bazaar_ITest.java
+++ /dev/null
@@ -1,662 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
- * jonas - initial API and implementation
- * Christian W. Damus - bug 529542
- ******************************************************************************/
-package org.eclipse.emfforms.bazaar.internal;
-
-import static java.util.Arrays.asList;
-import static org.hamcrest.CoreMatchers.any;
-import static org.hamcrest.CoreMatchers.hasItem;
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.CoreMatchers.not;
-import static org.hamcrest.CoreMatchers.nullValue;
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertSame;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assume.assumeThat;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-
-import org.eclipse.e4.core.contexts.EclipseContextFactory;
-import org.eclipse.e4.core.contexts.IEclipseContext;
-import org.eclipse.emfforms.bazaar.Bazaar.PriorityOverlapCallBack;
-import org.eclipse.emfforms.bazaar.BazaarContext;
-import org.eclipse.emfforms.bazaar.BazaarContextFunction;
-import org.eclipse.emfforms.bazaar.Bid;
-import org.eclipse.emfforms.bazaar.Create;
-import org.eclipse.emfforms.bazaar.Vendor;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.Parameterized;
-import org.junit.runners.Parameterized.Parameters;
-
-/**
- * @author jonas
- *
- */
-@RunWith(Parameterized.class)
-public class Bazaar_ITest {
-
-	public static final String TESTSTRING = ""; //$NON-NLS-1$
-	private final BazaarImpl<MyProduct> bazaar;
-
-	/**
-	 * Initializes me with the bazaar variant to create.
-	 *
-	 * @param variant the bazaar variant
-	 */
-	public Bazaar_ITest(BazaarVariant variant) {
-		super();
-
-		bazaar = variant.createBazaarImpl();
-	}
-
-	@Parameters(name = "{0}")
-	public static Object[] parameters() {
-		return BazaarVariant.values();
-	}
-
-	@Test
-	public void testEmptyBazaar() {
-		final Vendor<? extends MyProduct> bestVendor = bazaar.getBestVendor(EclipseContextFactory.create());
-
-		assertSame(null, bestVendor);
-	}
-
-	@Test
-	public void testSingleVendorNoParameter() {
-		final Vendor<MyProduct> vendor = new VendorPriority1Parameter0();
-		bazaar.addVendor(vendor);
-
-		final Vendor<? extends MyProduct> bestVendor = bazaar.getBestVendor(EclipseContextFactory.create());
-
-		assertSame(vendor, bestVendor);
-	}
-
-	@Test
-	public void testSingleVendorNoParameterWrongBid() {
-		final Vendor<MyProduct> vendor = new VendorWrongBidParameter0();
-		bazaar.addVendor(vendor);
-
-		final Vendor<? extends MyProduct> bestVendor = bazaar.getBestVendor(EclipseContextFactory.create());
-
-		assertNull(bestVendor);
-	}
-
-	@Test
-	public void testTwoVendorNoParameter() {
-		final Vendor<MyProduct> vendor = new VendorPriority1Parameter0();
-		final Vendor<MyProduct> vendor2 = new VendorPriority2Parameter0();
-		bazaar.addVendor(vendor);
-		bazaar.addVendor(vendor2);
-
-		final Vendor<? extends MyProduct> bestVendor = bazaar.getBestVendor(EclipseContextFactory.create());
-
-		assertSame(vendor2, bestVendor);
-	}
-
-	@Test
-	public void testTwoVendorNoParameterTwisted() {
-		final Vendor<MyProduct> vendor = new VendorPriority1Parameter0();
-		final Vendor<MyProduct> vendor2 = new VendorPriority2Parameter0();
-		bazaar.addVendor(vendor2);
-		bazaar.addVendor(vendor);
-
-		final Vendor<? extends MyProduct> bestVendor = bazaar.getBestVendor(EclipseContextFactory.create());
-
-		assertSame(vendor2, bestVendor);
-	}
-
-	@Test
-	public void testTwoVendorNoMatchingParameter() {
-		final Vendor<MyProduct> vendor = new VendorPriority1Parameter0();
-		final Vendor<MyProduct> vendor2 = new VendorPriority2Parameter1();
-		bazaar.addVendor(vendor);
-		bazaar.addVendor(vendor2);
-
-		final IEclipseContext context = EclipseContextFactory.create();
-
-		final Vendor<? extends MyProduct> bestVendor = bazaar.getBestVendor(context);
-
-		assertSame(vendor, bestVendor);
-	}
-
-	@Test
-	public void testTwoVendorMatchingParameter() {
-		final Vendor<MyProduct> vendor = new VendorPriority1Parameter0();
-		final Vendor<MyProduct> vendor2 = new VendorPriority2Parameter1();
-		bazaar.addVendor(vendor);
-		bazaar.addVendor(vendor2);
-
-		final IEclipseContext context = EclipseContextFactory.create();
-		context.set(String.class, TESTSTRING);
-
-		final Vendor<? extends MyProduct> bestVendor = bazaar.getBestVendor(context);
-
-		assertSame(vendor2, bestVendor);
-	}
-
-	@Test
-	public void testTwoVendorSamePriority() {
-		final Vendor<MyProduct> vendor = new VendorPriority1Parameter0();
-		final Vendor<MyProduct> vendor2 = new VendorPriority1Parameter0();
-		bazaar.addVendor(vendor);
-		bazaar.addVendor(vendor2);
-
-		@SuppressWarnings("unchecked")
-		final PriorityOverlapCallBack<MyProduct> priorityOverlapCallBackMock = mock(PriorityOverlapCallBack.class);
-
-		bazaar.setPriorityOverlapCallBack(priorityOverlapCallBackMock);
-
-		final IEclipseContext context = EclipseContextFactory.create();
-		final Vendor<? extends MyProduct> best = bazaar.getBestVendor(context);
-
-		verify(priorityOverlapCallBackMock, times(1)).priorityOverlap(vendor, vendor2);
-		assertThat(best, is((Object) vendor));
-	}
-
-	@Test
-	public void testTwoVendorSamePriorityNoCallBack() {
-		final Vendor<MyProduct> vendor = new VendorPriority1Parameter0();
-		final Vendor<MyProduct> vendor2 = new VendorPriority1Parameter0();
-		bazaar.addVendor(vendor);
-		bazaar.addVendor(vendor2);
-
-		final IEclipseContext context = EclipseContextFactory.create();
-		bazaar.getBestVendor(context);
-	}
-
-	@Test
-	public void testVendorNoMatchingPreCondition() {
-		final Vendor<MyProduct> vendor = new VendorWithPrecondition();
-		bazaar.addVendor(vendor);
-		final IEclipseContext context = EclipseContextFactory.create();
-		final Vendor<? extends MyProduct> bestVendor = bazaar.getBestVendor(context);
-		assertNull(bestVendor);
-	}
-
-	@Test
-	public void testVendorMatchingPreCondition() {
-		final Vendor<MyProduct> vendor = new VendorWithPrecondition(0);
-		bazaar.addVendor(vendor);
-		final IEclipseContext context = EclipseContextFactory.create();
-		context.set(VendorWithPrecondition.KEY, VendorWithPrecondition.VALUE);
-		final Vendor<? extends MyProduct> bestVendor = bazaar.getBestVendor(context);
-		assertSame(vendor, bestVendor);
-	}
-
-	@Test
-	public void testVendorMatchingNoValuePreCondition() {
-		final Vendor<MyProduct> vendor = new VendorWithNoValuePrecondition();
-		bazaar.addVendor(vendor);
-		final IEclipseContext context = EclipseContextFactory.create();
-		context.set(VendorWithPrecondition.KEY, VendorWithPrecondition.VALUE);
-		final Vendor<? extends MyProduct> bestVendor = bazaar.getBestVendor(context);
-		assertNotNull(bestVendor);
-	}
-
-	@Test
-	public void testVendorWithNullInContextNoValuePreCondition() {
-		final Vendor<MyProduct> vendor = new VendorWithNoValuePrecondition();
-		bazaar.addVendor(vendor);
-		final IEclipseContext context = EclipseContextFactory.create();
-		context.set(VendorWithPrecondition.KEY, null);
-		final Vendor<? extends MyProduct> bestVendor = bazaar.getBestVendor(context);
-		assertNotNull(bestVendor);
-	}
-
-	@Test
-	public void testVendorNotMatchingNoValuePreCondition() {
-		final Vendor<MyProduct> vendor = new VendorWithNoValuePrecondition();
-		bazaar.addVendor(vendor);
-		final IEclipseContext context = EclipseContextFactory.create();
-		final Vendor<? extends MyProduct> bestVendor = bazaar.getBestVendor(context);
-		assertNull(bestVendor);
-
-	}
-
-	@Test
-	public void testTwoVendorOneMatchingPreCondition() {
-		final Vendor<MyProduct> vendor = new VendorWithPrecondition(0);
-		final Vendor<MyProduct> vendor2 = new VendorWithTwoPreconditions(1);
-		bazaar.addVendor(vendor);
-		bazaar.addVendor(vendor2);
-		final IEclipseContext context = EclipseContextFactory.create();
-		context.set(VendorWithPrecondition.KEY, VendorWithPrecondition.VALUE);
-		final Vendor<? extends MyProduct> bestVendor = bazaar.getBestVendor(context);
-		assertSame(vendor, bestVendor);
-	}
-
-	@Test
-	public void testTwoVendorNoMatchingPreCondition() {
-		final Vendor<MyProduct> vendor = new VendorWithPrecondition();
-		final Vendor<MyProduct> vendor2 = new VendorWithTwoPreconditions();
-		bazaar.addVendor(vendor);
-		bazaar.addVendor(vendor2);
-		final IEclipseContext context = EclipseContextFactory.create();
-		final Vendor<? extends MyProduct> bestVendor = bazaar.getBestVendor(context);
-		assertNull(bestVendor);
-	}
-
-	@Test
-	public void testTwoVendorBothMatchingPreCondition() {
-		final Vendor<MyProduct> vendor = new VendorWithPrecondition(1);
-		final Vendor<MyProduct> vendor2 = new VendorWithTwoPreconditions(0);
-		bazaar.addVendor(vendor);
-		bazaar.addVendor(vendor2);
-		final IEclipseContext context = EclipseContextFactory.create();
-		context.set(VendorWithPrecondition.KEY, VendorWithPrecondition.VALUE);
-		context.set(VendorWithTwoPreconditions.KEY1, VendorWithTwoPreconditions.VALUE1);
-		context.set(VendorWithTwoPreconditions.KEY2, VendorWithTwoPreconditions.VALUE2);
-		final Vendor<? extends MyProduct> bestVendor = bazaar.getBestVendor(context);
-		assertSame(vendor, bestVendor);
-	}
-
-	@Test
-	public void testNoMatchingPreConditionKey() {
-		final Vendor<MyProduct> vendor = new VendorWithPrecondition();
-		bazaar.addVendor(vendor);
-		final IEclipseContext context = EclipseContextFactory.create();
-		final boolean checkPreConditions = bazaar.checkPreConditions(vendor, context);
-		assertFalse(checkPreConditions);
-	}
-
-	@Test
-	public void testNoMatchingPreConditionValue() {
-		final Vendor<MyProduct> vendor = new VendorWithPrecondition();
-		bazaar.addVendor(vendor);
-		final IEclipseContext context = EclipseContextFactory.create();
-		context.set(VendorWithPrecondition.KEY, mock(Object.class));
-		final boolean checkPreConditions = bazaar.checkPreConditions(vendor, context);
-		assertFalse(checkPreConditions);
-	}
-
-	@Test
-	public void testTwoPreConditionsNoMatch() {
-		final Vendor<MyProduct> vendor = new VendorWithTwoPreconditions();
-		bazaar.addVendor(vendor);
-		final IEclipseContext context = EclipseContextFactory.create();
-		context.set(VendorWithTwoPreconditions.KEY1, mock(Object.class));
-		final boolean checkPreConditions = bazaar.checkPreConditions(vendor, context);
-		assertFalse(checkPreConditions);
-	}
-
-	@Test
-	public void testTwoPreConditionsOneNoMatch() {
-		final Vendor<MyProduct> vendor = new VendorWithTwoPreconditions();
-		bazaar.addVendor(vendor);
-		final IEclipseContext context = EclipseContextFactory.create();
-		context.set(VendorWithTwoPreconditions.KEY1, VendorWithTwoPreconditions.VALUE1);
-		final boolean checkPreConditions = bazaar.checkPreConditions(vendor, context);
-		assertFalse(checkPreConditions);
-	}
-
-	@Test
-	public void testTwoPreConditionsBothMatch() {
-		final Vendor<MyProduct> vendor = new VendorWithTwoPreconditions();
-		bazaar.addVendor(vendor);
-		final IEclipseContext context = EclipseContextFactory.create();
-		context.set(VendorWithTwoPreconditions.KEY1, VendorWithTwoPreconditions.VALUE1);
-		context.set(VendorWithTwoPreconditions.KEY2, VendorWithTwoPreconditions.VALUE2);
-		final boolean checkPreConditions = bazaar.checkPreConditions(vendor, context);
-		assertTrue(checkPreConditions);
-	}
-
-	@Test
-	public void testMatchingPreCondition() {
-		final Vendor<MyProduct> vendor = new VendorWithPrecondition();
-		bazaar.addVendor(vendor);
-		final IEclipseContext context = EclipseContextFactory.create();
-		context.set(VendorWithPrecondition.KEY, VendorWithPrecondition.VALUE);
-		final boolean checkPreConditions = bazaar.checkPreConditions(vendor, context);
-		assertTrue(checkPreConditions);
-	}
-
-	@Test
-	public void testOneStaticBid() {
-		final Vendor<MyProduct> vendor = new VendorWithStaticBid0();
-		bazaar.addVendor(vendor);
-		final IEclipseContext context = EclipseContextFactory.create();
-		final Vendor<? extends MyProduct> bestVendor = bazaar.getBestVendor(context);
-		assertSame(vendor, bestVendor);
-	}
-
-	@Test
-	public void testTwoStaticBids() {
-		final Vendor<MyProduct> vendor = new VendorWithStaticBid0();
-		final Vendor<MyProduct> vendor2 = new VendorWithStaticBid2();
-		bazaar.addVendor(vendor);
-		bazaar.addVendor(vendor2);
-		final IEclipseContext context = EclipseContextFactory.create();
-		final Vendor<? extends MyProduct> bestVendor = bazaar.getBestVendor(context);
-		assertSame(vendor2, bestVendor);
-	}
-
-	@Test
-	public void testStaticAndDynamicBidsDynamicWins() {
-		final Vendor<MyProduct> vendor = new VendorWithStaticBid0();
-		final Vendor<MyProduct> vendor2 = new VendorPriority1Parameter0();
-		bazaar.addVendor(vendor);
-		bazaar.addVendor(vendor2);
-		final IEclipseContext context = EclipseContextFactory.create();
-		final Vendor<? extends MyProduct> bestVendor = bazaar.getBestVendor(context);
-		assertSame(vendor2, bestVendor);
-	}
-
-	@Test
-	public void testStaticAndDynamicBidsStaticWins() {
-		final Vendor<MyProduct> vendor = new VendorWithStaticBid2();
-		final Vendor<MyProduct> vendor2 = new VendorPriority1Parameter0();
-		bazaar.addVendor(vendor);
-		bazaar.addVendor(vendor2);
-		final IEclipseContext context = EclipseContextFactory.create();
-		final Vendor<? extends MyProduct> bestVendor = bazaar.getBestVendor(context);
-		assertSame(vendor, bestVendor);
-	}
-
-	@Test
-	public void testOverlappingBidsStaticDynamic() {
-		final Vendor<MyProduct> vendor = new VendorWithStaticBid2();
-		final Vendor<MyProduct> vendor2 = new VendorPriority2Parameter0();
-		bazaar.addVendor(vendor);
-		bazaar.addVendor(vendor2);
-
-		@SuppressWarnings("unchecked")
-		final PriorityOverlapCallBack<MyProduct> priorityOverlapCallBackMock = mock(PriorityOverlapCallBack.class);
-
-		bazaar.setPriorityOverlapCallBack(priorityOverlapCallBackMock);
-
-		final IEclipseContext context = EclipseContextFactory.create();
-		final Vendor<? extends MyProduct> best = bazaar.getBestVendor(context);
-
-		verify(priorityOverlapCallBackMock, times(1)).priorityOverlap(vendor, vendor2);
-		assertThat(best, is((Object) vendor));
-	}
-
-	@Test
-	public void testCreateProductNoParameter0() {
-		final MyProduct myProductMock = mock(MyProduct.class);
-		final Vendor<MyProduct> vendor = new VendorCreatingProductParameter0(myProductMock);
-
-		final MyProduct myProduct = bazaar.createProduct(vendor, EclipseContextFactory.create());
-		assertSame(myProductMock, myProduct);
-	}
-
-	@Test
-	public void testCreateProductParameter1() {
-		final MyProduct myProductMock = mock(MyProduct.class);
-		final Vendor<MyProduct> vendor = new VendorCreatingProductParameter1(myProductMock);
-
-		final IEclipseContext context = EclipseContextFactory.create();
-		context.set(String.class, TESTSTRING);
-
-		final MyProduct myProduct = bazaar.createProduct(vendor, context);
-		assertSame(myProductMock, myProduct);
-	}
-
-	@Test
-	public void testCreateEmptyEclipseContext() {
-		final BazaarContext bazaarContextMock = mock(BazaarContext.class);
-
-		final IEclipseContext eclipseContext = bazaar.createEclipseContext(bazaarContextMock);
-
-		assertNotNull(eclipseContext);
-	}
-
-	@Test
-	public void testCreateEclipseContextOneObject() {
-		final Object value = new Object();
-		final BazaarContext bazaarContext = BazaarContext.Builder.with(
-			Collections.singletonMap(TESTSTRING, value)).build();
-
-		final IEclipseContext eclipseContext = bazaar.createEclipseContext(bazaarContext);
-
-		final Object actual = eclipseContext.get(TESTSTRING);
-		assertSame(value, actual);
-	}
-
-	@Test
-	public void testContextWithContextFunction() {
-		final Object transformed = mock(Object.class);
-		final BazaarContextFunction contextFunction = new BazaarContextFunctionNoParameter(transformed);
-		bazaar.addContextFunction(TESTSTRING, contextFunction);
-		final BazaarContext bazaarContextMock = mock(BazaarContext.class);
-		IEclipseContext eclipseContext = bazaar.createEclipseContext(bazaarContextMock);
-		eclipseContext = bazaar.addContextFunctions(eclipseContext);
-		final Object actual = eclipseContext.get(TESTSTRING);
-		assertSame(transformed, actual);
-	}
-
-	@Test
-	public void testContextWithContextFunctionNoMatchingParameter() {
-		final Object transformed = mock(Object.class);
-		final BazaarContextFunction contextFunction = new BazaarContextFunctionParameter1(transformed);
-		bazaar.addContextFunction(TESTSTRING, contextFunction);
-		final BazaarContext bazaarContextMock = mock(BazaarContext.class);
-		IEclipseContext eclipseContext = bazaar.createEclipseContext(bazaarContextMock);
-		eclipseContext = bazaar.addContextFunctions(eclipseContext);
-
-		final Object actual = eclipseContext.get(TESTSTRING);
-		assertSame(null, actual);
-	}
-
-	@Test
-	public void testContextWithContextFunctionMatchingParameter() {
-		final Object transformed = mock(Object.class);
-		final BazaarContextFunction contextFunction = new BazaarContextFunctionParameter1(transformed);
-		bazaar.addContextFunction(TESTSTRING, contextFunction);
-		final BazaarContext bazaarContextMock = mock(BazaarContext.class);
-		IEclipseContext eclipseContext = bazaar.createEclipseContext(bazaarContextMock);
-		eclipseContext = bazaar.addContextFunctions(eclipseContext);
-		eclipseContext.set(Integer.class, new Integer(1));
-
-		final Object actual = eclipseContext.get(TESTSTRING);
-
-		assertSame(transformed, actual);
-	}
-
-	@Test
-	public void testContextWithContextFunctionReturningNull() {
-		final BazaarContextFunction contextFunction = new BazaarContextFunctionReturningNull();
-		bazaar.addContextFunction(TESTSTRING, contextFunction);
-		final BazaarContext bazaarContextMock = mock(BazaarContext.class);
-		IEclipseContext eclipseContext = bazaar.createEclipseContext(bazaarContextMock);
-		eclipseContext = bazaar.addContextFunctions(eclipseContext);
-
-		final Object actual = eclipseContext.get(TESTSTRING);
-
-		assertSame(null, actual);
-	}
-
-	@Test
-	public void testContextWithContextFunctionCacheValue() {
-		final Object transformed = mock(Object.class);
-		final BazaarContextFunctionWithCounter contextFunction = new BazaarContextFunctionWithCounter(transformed);
-		bazaar.addContextFunction(TESTSTRING, contextFunction);
-		final BazaarContext bazaarContextMock = mock(BazaarContext.class);
-		IEclipseContext eclipseContext = bazaar.createEclipseContext(bazaarContextMock);
-		eclipseContext = bazaar.addContextFunctions(eclipseContext);
-
-		Object actual = eclipseContext.get(TESTSTRING);
-		actual = eclipseContext.get(TESTSTRING);
-
-		assertSame(transformed, actual);
-		assertSame(1, contextFunction.getCount());
-	}
-
-	@Test
-	public void testCreateProduct() {
-		final BazaarContextFunction contextFunction = new BazaarContextFunctionParameter1(TESTSTRING);
-		bazaar.addContextFunction(String.class.getName(), contextFunction);
-		final BazaarContext bazaarContextMock = mock(BazaarContext.class);
-		final HashMap<String, Object> contextMap = new HashMap<String, Object>();
-		contextMap.put(Integer.class.getName(), new Integer(0));
-		when(bazaarContextMock.getContextMap()).thenReturn(contextMap);
-
-		final MyProduct myProductMock = mock(MyProduct.class);
-		final Vendor<MyProduct> vendor = new FullVendorParameter2(myProductMock);
-		bazaar.addVendor(vendor);
-
-		final MyProduct createdProduct = bazaar.createProduct(bazaarContextMock);
-
-		assertSame(myProductMock, createdProduct);
-	}
-
-	@Test
-	public void testCreateProductNoBiddingVendor() {
-		final BazaarContextFunction contextFunction = new BazaarContextFunctionParameter1(TESTSTRING);
-		bazaar.addContextFunction(String.class.getName(), contextFunction);
-
-		final BazaarContext bazaarContext = BazaarContext.Builder.empty()
-			.put(Integer.class, 0).build();
-
-		final MyProduct myProductMock = mock(MyProduct.class);
-		bazaar.addVendor(new VendorCreatingProductParameter0(myProductMock) {
-			@Bid
-			public Double bid(String string) {
-				return null;
-			}
-		});
-
-		final MyProduct createdProduct = bazaar.createProduct(bazaarContext);
-		assertThat(createdProduct, nullValue());
-	}
-
-	@Test
-	public void testCreateProductNoVendor() {
-
-		final BazaarContext bazaarContext = BazaarContext.Builder.empty().build();
-
-		final MyProduct createdProduct = bazaar.createProduct(bazaarContext);
-		assertThat(createdProduct, nullValue());
-	}
-
-	@Test
-	public void testCreateProductsWithPriority() {
-		final BazaarContextFunction contextFunction = new BazaarContextFunctionParameter1(TESTSTRING);
-		bazaar.addContextFunction(String.class.getName(), contextFunction);
-
-		final BazaarContext bazaarContext = BazaarContext.Builder.empty()
-			.add(0).build();
-
-		final MyProduct myProductMock1 = mock(MyProduct.class);
-		bazaar.addVendor(new VendorPriority01Parameter1() {
-			@Create
-			public MyProduct make(String string) {
-				return myProductMock1;
-			}
-		});
-		final MyProduct myProductMock2 = mock(MyProduct.class);
-		bazaar.addVendor(new VendorPriority1Parameter1() {
-			@Create
-			public MyProduct make(String string) {
-				return myProductMock2;
-			}
-		});
-		final MyProduct myProductMock3 = mock(MyProduct.class);
-		bazaar.addVendor(new VendorPriority2Parameter1() {
-			@Create
-			public MyProduct make(String string) {
-				return myProductMock3;
-			}
-		});
-
-		final List<MyProduct> createdProducts = bazaar.createProducts(bazaarContext);
-
-		// The vendor bids order these in reverse (high bid first)
-		assertThat(createdProducts, is(asList(myProductMock3, myProductMock2, myProductMock1)));
-	}
-
-	@Test
-	public void testCreateProductsNoBid() {
-
-		final BazaarContext bazaarContext = BazaarContext.Builder.empty().build();
-
-		final MyProduct myProductMock = mock(MyProduct.class);
-		bazaar.addVendor(new VendorCreatingProductParameter1(myProductMock)); // No bid
-
-		final List<MyProduct> createdProducts = bazaar.createProducts(bazaarContext);
-
-		assertThat(createdProducts, not(hasItem(any(MyProduct.class))));
-	}
-
-	@Test
-	public void testCreateProductsBidButNoCreate() {
-
-		final BazaarContext bazaarContext = BazaarContext.Builder.empty().build();
-
-		final MyProduct myProductMock = mock(MyProduct.class);
-		bazaar.addVendor(new VendorCreatingProductParameter1(myProductMock) {
-			@Bid
-			public double bid() {
-				return 2.0;
-			}
-		});
-
-		final List<MyProduct> createdProducts = bazaar.createProducts(bazaarContext);
-
-		assertTrue(createdProducts.isEmpty());
-	}
-
-	@Test
-	public void testCreateProductsBidCreateNull() {
-
-		final BazaarContext bazaarContext = BazaarContext.Builder.empty().build();
-
-		bazaar.addVendor(new Vendor<MyProduct>() {
-
-			@Bid
-			public double bid() {
-				return 2.0;
-			}
-
-			@Create
-			public MyProduct create() {
-				return null;
-			}
-		});
-
-		final List<MyProduct> createdProducts = bazaar.createProducts(bazaarContext);
-
-		assertTrue(createdProducts.isEmpty());
-	}
-
-	@Test
-	public void testRemoveVendor() {
-		final Vendor<MyProduct> vendor = new VendorPriority1Parameter0();
-		final Vendor<MyProduct> vendor2 = new VendorPriority2Parameter1();
-		bazaar.addVendor(vendor);
-		bazaar.addVendor(vendor2);
-
-		final IEclipseContext context = EclipseContextFactory.create();
-		context.set(String.class, TESTSTRING);
-
-		Vendor<?> bestVendor = bazaar.getBestVendor(context);
-
-		assumeThat(bestVendor, is((Object) vendor2));
-
-		bazaar.removeVendor(vendor2);
-
-		bestVendor = bazaar.getBestVendor(context);
-
-		assertThat(bestVendor, is((Object) vendor));
-	}
-
-}
diff --git a/tests/org.eclipse.emfforms.core.bazaar.tests/src/org/eclipse/emfforms/bazaar/internal/Bazaar_Test.java b/tests/org.eclipse.emfforms.core.bazaar.tests/src/org/eclipse/emfforms/bazaar/internal/Bazaar_Test.java
new file mode 100644
index 0000000..73353af
--- /dev/null
+++ b/tests/org.eclipse.emfforms.core.bazaar.tests/src/org/eclipse/emfforms/bazaar/internal/Bazaar_Test.java
@@ -0,0 +1,662 @@
+/*******************************************************************************
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * jonas - initial API and implementation
+ * Christian W. Damus - bug 529542
+ ******************************************************************************/
+package org.eclipse.emfforms.bazaar.internal;
+
+import static java.util.Arrays.asList;
+import static org.hamcrest.CoreMatchers.any;
+import static org.hamcrest.CoreMatchers.hasItem;
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.CoreMatchers.not;
+import static org.hamcrest.CoreMatchers.nullValue;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertSame;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assume.assumeThat;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+
+import org.eclipse.e4.core.contexts.EclipseContextFactory;
+import org.eclipse.e4.core.contexts.IEclipseContext;
+import org.eclipse.emfforms.bazaar.Bazaar.PriorityOverlapCallBack;
+import org.eclipse.emfforms.bazaar.BazaarContext;
+import org.eclipse.emfforms.bazaar.BazaarContextFunction;
+import org.eclipse.emfforms.bazaar.Bid;
+import org.eclipse.emfforms.bazaar.Create;
+import org.eclipse.emfforms.bazaar.Vendor;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+import org.junit.runners.Parameterized.Parameters;
+
+/**
+ * @author jonas
+ *
+ */
+@RunWith(Parameterized.class)
+public class Bazaar_Test {
+
+	public static final String TESTSTRING = ""; //$NON-NLS-1$
+	private final BazaarImpl<MyProduct> bazaar;
+
+	/**
+	 * Initializes me with the bazaar variant to create.
+	 *
+	 * @param variant the bazaar variant
+	 */
+	public Bazaar_Test(BazaarVariant variant) {
+		super();
+
+		bazaar = variant.createBazaarImpl();
+	}
+
+	@Parameters(name = "{0}")
+	public static Object[] parameters() {
+		return BazaarVariant.values();
+	}
+
+	@Test
+	public void testEmptyBazaar() {
+		final Vendor<? extends MyProduct> bestVendor = bazaar.getBestVendor(EclipseContextFactory.create());
+
+		assertSame(null, bestVendor);
+	}
+
+	@Test
+	public void testSingleVendorNoParameter() {
+		final Vendor<MyProduct> vendor = new VendorPriority1Parameter0();
+		bazaar.addVendor(vendor);
+
+		final Vendor<? extends MyProduct> bestVendor = bazaar.getBestVendor(EclipseContextFactory.create());
+
+		assertSame(vendor, bestVendor);
+	}
+
+	@Test
+	public void testSingleVendorNoParameterWrongBid() {
+		final Vendor<MyProduct> vendor = new VendorWrongBidParameter0();
+		bazaar.addVendor(vendor);
+
+		final Vendor<? extends MyProduct> bestVendor = bazaar.getBestVendor(EclipseContextFactory.create());
+
+		assertNull(bestVendor);
+	}
+
+	@Test
+	public void testTwoVendorNoParameter() {
+		final Vendor<MyProduct> vendor = new VendorPriority1Parameter0();
+		final Vendor<MyProduct> vendor2 = new VendorPriority2Parameter0();
+		bazaar.addVendor(vendor);
+		bazaar.addVendor(vendor2);
+
+		final Vendor<? extends MyProduct> bestVendor = bazaar.getBestVendor(EclipseContextFactory.create());
+
+		assertSame(vendor2, bestVendor);
+	}
+
+	@Test
+	public void testTwoVendorNoParameterTwisted() {
+		final Vendor<MyProduct> vendor = new VendorPriority1Parameter0();
+		final Vendor<MyProduct> vendor2 = new VendorPriority2Parameter0();
+		bazaar.addVendor(vendor2);
+		bazaar.addVendor(vendor);
+
+		final Vendor<? extends MyProduct> bestVendor = bazaar.getBestVendor(EclipseContextFactory.create());
+
+		assertSame(vendor2, bestVendor);
+	}
+
+	@Test
+	public void testTwoVendorNoMatchingParameter() {
+		final Vendor<MyProduct> vendor = new VendorPriority1Parameter0();
+		final Vendor<MyProduct> vendor2 = new VendorPriority2Parameter1();
+		bazaar.addVendor(vendor);
+		bazaar.addVendor(vendor2);
+
+		final IEclipseContext context = EclipseContextFactory.create();
+
+		final Vendor<? extends MyProduct> bestVendor = bazaar.getBestVendor(context);
+
+		assertSame(vendor, bestVendor);
+	}
+
+	@Test
+	public void testTwoVendorMatchingParameter() {
+		final Vendor<MyProduct> vendor = new VendorPriority1Parameter0();
+		final Vendor<MyProduct> vendor2 = new VendorPriority2Parameter1();
+		bazaar.addVendor(vendor);
+		bazaar.addVendor(vendor2);
+
+		final IEclipseContext context = EclipseContextFactory.create();
+		context.set(String.class, TESTSTRING);
+
+		final Vendor<? extends MyProduct> bestVendor = bazaar.getBestVendor(context);
+
+		assertSame(vendor2, bestVendor);
+	}
+
+	@Test
+	public void testTwoVendorSamePriority() {
+		final Vendor<MyProduct> vendor = new VendorPriority1Parameter0();
+		final Vendor<MyProduct> vendor2 = new VendorPriority1Parameter0();
+		bazaar.addVendor(vendor);
+		bazaar.addVendor(vendor2);
+
+		@SuppressWarnings("unchecked")
+		final PriorityOverlapCallBack<MyProduct> priorityOverlapCallBackMock = mock(PriorityOverlapCallBack.class);
+
+		bazaar.setPriorityOverlapCallBack(priorityOverlapCallBackMock);
+
+		final IEclipseContext context = EclipseContextFactory.create();
+		final Vendor<? extends MyProduct> best = bazaar.getBestVendor(context);
+
+		verify(priorityOverlapCallBackMock, times(1)).priorityOverlap(vendor, vendor2);
+		assertThat(best, is((Object) vendor));
+	}
+
+	@Test
+	public void testTwoVendorSamePriorityNoCallBack() {
+		final Vendor<MyProduct> vendor = new VendorPriority1Parameter0();
+		final Vendor<MyProduct> vendor2 = new VendorPriority1Parameter0();
+		bazaar.addVendor(vendor);
+		bazaar.addVendor(vendor2);
+
+		final IEclipseContext context = EclipseContextFactory.create();
+		bazaar.getBestVendor(context);
+	}
+
+	@Test
+	public void testVendorNoMatchingPreCondition() {
+		final Vendor<MyProduct> vendor = new VendorWithPrecondition();
+		bazaar.addVendor(vendor);
+		final IEclipseContext context = EclipseContextFactory.create();
+		final Vendor<? extends MyProduct> bestVendor = bazaar.getBestVendor(context);
+		assertNull(bestVendor);
+	}
+
+	@Test
+	public void testVendorMatchingPreCondition() {
+		final Vendor<MyProduct> vendor = new VendorWithPrecondition(0);
+		bazaar.addVendor(vendor);
+		final IEclipseContext context = EclipseContextFactory.create();
+		context.set(VendorWithPrecondition.KEY, VendorWithPrecondition.VALUE);
+		final Vendor<? extends MyProduct> bestVendor = bazaar.getBestVendor(context);
+		assertSame(vendor, bestVendor);
+	}
+
+	@Test
+	public void testVendorMatchingNoValuePreCondition() {
+		final Vendor<MyProduct> vendor = new VendorWithNoValuePrecondition();
+		bazaar.addVendor(vendor);
+		final IEclipseContext context = EclipseContextFactory.create();
+		context.set(VendorWithPrecondition.KEY, VendorWithPrecondition.VALUE);
+		final Vendor<? extends MyProduct> bestVendor = bazaar.getBestVendor(context);
+		assertNotNull(bestVendor);
+	}
+
+	@Test
+	public void testVendorWithNullInContextNoValuePreCondition() {
+		final Vendor<MyProduct> vendor = new VendorWithNoValuePrecondition();
+		bazaar.addVendor(vendor);
+		final IEclipseContext context = EclipseContextFactory.create();
+		context.set(VendorWithPrecondition.KEY, null);
+		final Vendor<? extends MyProduct> bestVendor = bazaar.getBestVendor(context);
+		assertNotNull(bestVendor);
+	}
+
+	@Test
+	public void testVendorNotMatchingNoValuePreCondition() {
+		final Vendor<MyProduct> vendor = new VendorWithNoValuePrecondition();
+		bazaar.addVendor(vendor);
+		final IEclipseContext context = EclipseContextFactory.create();
+		final Vendor<? extends MyProduct> bestVendor = bazaar.getBestVendor(context);
+		assertNull(bestVendor);
+
+	}
+
+	@Test
+	public void testTwoVendorOneMatchingPreCondition() {
+		final Vendor<MyProduct> vendor = new VendorWithPrecondition(0);
+		final Vendor<MyProduct> vendor2 = new VendorWithTwoPreconditions(1);
+		bazaar.addVendor(vendor);
+		bazaar.addVendor(vendor2);
+		final IEclipseContext context = EclipseContextFactory.create();
+		context.set(VendorWithPrecondition.KEY, VendorWithPrecondition.VALUE);
+		final Vendor<? extends MyProduct> bestVendor = bazaar.getBestVendor(context);
+		assertSame(vendor, bestVendor);
+	}
+
+	@Test
+	public void testTwoVendorNoMatchingPreCondition() {
+		final Vendor<MyProduct> vendor = new VendorWithPrecondition();
+		final Vendor<MyProduct> vendor2 = new VendorWithTwoPreconditions();
+		bazaar.addVendor(vendor);
+		bazaar.addVendor(vendor2);
+		final IEclipseContext context = EclipseContextFactory.create();
+		final Vendor<? extends MyProduct> bestVendor = bazaar.getBestVendor(context);
+		assertNull(bestVendor);
+	}
+
+	@Test
+	public void testTwoVendorBothMatchingPreCondition() {
+		final Vendor<MyProduct> vendor = new VendorWithPrecondition(1);
+		final Vendor<MyProduct> vendor2 = new VendorWithTwoPreconditions(0);
+		bazaar.addVendor(vendor);
+		bazaar.addVendor(vendor2);
+		final IEclipseContext context = EclipseContextFactory.create();
+		context.set(VendorWithPrecondition.KEY, VendorWithPrecondition.VALUE);
+		context.set(VendorWithTwoPreconditions.KEY1, VendorWithTwoPreconditions.VALUE1);
+		context.set(VendorWithTwoPreconditions.KEY2, VendorWithTwoPreconditions.VALUE2);
+		final Vendor<? extends MyProduct> bestVendor = bazaar.getBestVendor(context);
+		assertSame(vendor, bestVendor);
+	}
+
+	@Test
+	public void testNoMatchingPreConditionKey() {
+		final Vendor<MyProduct> vendor = new VendorWithPrecondition();
+		bazaar.addVendor(vendor);
+		final IEclipseContext context = EclipseContextFactory.create();
+		final boolean checkPreConditions = bazaar.checkPreConditions(vendor, context);
+		assertFalse(checkPreConditions);
+	}
+
+	@Test
+	public void testNoMatchingPreConditionValue() {
+		final Vendor<MyProduct> vendor = new VendorWithPrecondition();
+		bazaar.addVendor(vendor);
+		final IEclipseContext context = EclipseContextFactory.create();
+		context.set(VendorWithPrecondition.KEY, mock(Object.class));
+		final boolean checkPreConditions = bazaar.checkPreConditions(vendor, context);
+		assertFalse(checkPreConditions);
+	}
+
+	@Test
+	public void testTwoPreConditionsNoMatch() {
+		final Vendor<MyProduct> vendor = new VendorWithTwoPreconditions();
+		bazaar.addVendor(vendor);
+		final IEclipseContext context = EclipseContextFactory.create();
+		context.set(VendorWithTwoPreconditions.KEY1, mock(Object.class));
+		final boolean checkPreConditions = bazaar.checkPreConditions(vendor, context);
+		assertFalse(checkPreConditions);
+	}
+
+	@Test
+	public void testTwoPreConditionsOneNoMatch() {
+		final Vendor<MyProduct> vendor = new VendorWithTwoPreconditions();
+		bazaar.addVendor(vendor);
+		final IEclipseContext context = EclipseContextFactory.create();
+		context.set(VendorWithTwoPreconditions.KEY1, VendorWithTwoPreconditions.VALUE1);
+		final boolean checkPreConditions = bazaar.checkPreConditions(vendor, context);
+		assertFalse(checkPreConditions);
+	}
+
+	@Test
+	public void testTwoPreConditionsBothMatch() {
+		final Vendor<MyProduct> vendor = new VendorWithTwoPreconditions();
+		bazaar.addVendor(vendor);
+		final IEclipseContext context = EclipseContextFactory.create();
+		context.set(VendorWithTwoPreconditions.KEY1, VendorWithTwoPreconditions.VALUE1);
+		context.set(VendorWithTwoPreconditions.KEY2, VendorWithTwoPreconditions.VALUE2);
+		final boolean checkPreConditions = bazaar.checkPreConditions(vendor, context);
+		assertTrue(checkPreConditions);
+	}
+
+	@Test
+	public void testMatchingPreCondition() {
+		final Vendor<MyProduct> vendor = new VendorWithPrecondition();
+		bazaar.addVendor(vendor);
+		final IEclipseContext context = EclipseContextFactory.create();
+		context.set(VendorWithPrecondition.KEY, VendorWithPrecondition.VALUE);
+		final boolean checkPreConditions = bazaar.checkPreConditions(vendor, context);
+		assertTrue(checkPreConditions);
+	}
+
+	@Test
+	public void testOneStaticBid() {
+		final Vendor<MyProduct> vendor = new VendorWithStaticBid0();
+		bazaar.addVendor(vendor);
+		final IEclipseContext context = EclipseContextFactory.create();
+		final Vendor<? extends MyProduct> bestVendor = bazaar.getBestVendor(context);
+		assertSame(vendor, bestVendor);
+	}
+
+	@Test
+	public void testTwoStaticBids() {
+		final Vendor<MyProduct> vendor = new VendorWithStaticBid0();
+		final Vendor<MyProduct> vendor2 = new VendorWithStaticBid2();
+		bazaar.addVendor(vendor);
+		bazaar.addVendor(vendor2);
+		final IEclipseContext context = EclipseContextFactory.create();
+		final Vendor<? extends MyProduct> bestVendor = bazaar.getBestVendor(context);
+		assertSame(vendor2, bestVendor);
+	}
+
+	@Test
+	public void testStaticAndDynamicBidsDynamicWins() {
+		final Vendor<MyProduct> vendor = new VendorWithStaticBid0();
+		final Vendor<MyProduct> vendor2 = new VendorPriority1Parameter0();
+		bazaar.addVendor(vendor);
+		bazaar.addVendor(vendor2);
+		final IEclipseContext context = EclipseContextFactory.create();
+		final Vendor<? extends MyProduct> bestVendor = bazaar.getBestVendor(context);
+		assertSame(vendor2, bestVendor);
+	}
+
+	@Test
+	public void testStaticAndDynamicBidsStaticWins() {
+		final Vendor<MyProduct> vendor = new VendorWithStaticBid2();
+		final Vendor<MyProduct> vendor2 = new VendorPriority1Parameter0();
+		bazaar.addVendor(vendor);
+		bazaar.addVendor(vendor2);
+		final IEclipseContext context = EclipseContextFactory.create();
+		final Vendor<? extends MyProduct> bestVendor = bazaar.getBestVendor(context);
+		assertSame(vendor, bestVendor);
+	}
+
+	@Test
+	public void testOverlappingBidsStaticDynamic() {
+		final Vendor<MyProduct> vendor = new VendorWithStaticBid2();
+		final Vendor<MyProduct> vendor2 = new VendorPriority2Parameter0();
+		bazaar.addVendor(vendor);
+		bazaar.addVendor(vendor2);
+
+		@SuppressWarnings("unchecked")
+		final PriorityOverlapCallBack<MyProduct> priorityOverlapCallBackMock = mock(PriorityOverlapCallBack.class);
+
+		bazaar.setPriorityOverlapCallBack(priorityOverlapCallBackMock);
+
+		final IEclipseContext context = EclipseContextFactory.create();
+		final Vendor<? extends MyProduct> best = bazaar.getBestVendor(context);
+
+		verify(priorityOverlapCallBackMock, times(1)).priorityOverlap(vendor, vendor2);
+		assertThat(best, is((Object) vendor));
+	}
+
+	@Test
+	public void testCreateProductNoParameter0() {
+		final MyProduct myProductMock = mock(MyProduct.class);
+		final Vendor<MyProduct> vendor = new VendorCreatingProductParameter0(myProductMock);
+
+		final MyProduct myProduct = bazaar.createProduct(vendor, EclipseContextFactory.create());
+		assertSame(myProductMock, myProduct);
+	}
+
+	@Test
+	public void testCreateProductParameter1() {
+		final MyProduct myProductMock = mock(MyProduct.class);
+		final Vendor<MyProduct> vendor = new VendorCreatingProductParameter1(myProductMock);
+
+		final IEclipseContext context = EclipseContextFactory.create();
+		context.set(String.class, TESTSTRING);
+
+		final MyProduct myProduct = bazaar.createProduct(vendor, context);
+		assertSame(myProductMock, myProduct);
+	}
+
+	@Test
+	public void testCreateEmptyEclipseContext() {
+		final BazaarContext bazaarContextMock = mock(BazaarContext.class);
+
+		final IEclipseContext eclipseContext = bazaar.createEclipseContext(bazaarContextMock);
+
+		assertNotNull(eclipseContext);
+	}
+
+	@Test
+	public void testCreateEclipseContextOneObject() {
+		final Object value = new Object();
+		final BazaarContext bazaarContext = BazaarContext.Builder.with(
+			Collections.singletonMap(TESTSTRING, value)).build();
+
+		final IEclipseContext eclipseContext = bazaar.createEclipseContext(bazaarContext);
+
+		final Object actual = eclipseContext.get(TESTSTRING);
+		assertSame(value, actual);
+	}
+
+	@Test
+	public void testContextWithContextFunction() {
+		final Object transformed = mock(Object.class);
+		final BazaarContextFunction contextFunction = new BazaarContextFunctionNoParameter(transformed);
+		bazaar.addContextFunction(TESTSTRING, contextFunction);
+		final BazaarContext bazaarContextMock = mock(BazaarContext.class);
+		IEclipseContext eclipseContext = bazaar.createEclipseContext(bazaarContextMock);
+		eclipseContext = bazaar.addContextFunctions(eclipseContext);
+		final Object actual = eclipseContext.get(TESTSTRING);
+		assertSame(transformed, actual);
+	}
+
+	@Test
+	public void testContextWithContextFunctionNoMatchingParameter() {
+		final Object transformed = mock(Object.class);
+		final BazaarContextFunction contextFunction = new BazaarContextFunctionParameter1(transformed);
+		bazaar.addContextFunction(TESTSTRING, contextFunction);
+		final BazaarContext bazaarContextMock = mock(BazaarContext.class);
+		IEclipseContext eclipseContext = bazaar.createEclipseContext(bazaarContextMock);
+		eclipseContext = bazaar.addContextFunctions(eclipseContext);
+
+		final Object actual = eclipseContext.get(TESTSTRING);
+		assertSame(null, actual);
+	}
+
+	@Test
+	public void testContextWithContextFunctionMatchingParameter() {
+		final Object transformed = mock(Object.class);
+		final BazaarContextFunction contextFunction = new BazaarContextFunctionParameter1(transformed);
+		bazaar.addContextFunction(TESTSTRING, contextFunction);
+		final BazaarContext bazaarContextMock = mock(BazaarContext.class);
+		IEclipseContext eclipseContext = bazaar.createEclipseContext(bazaarContextMock);
+		eclipseContext = bazaar.addContextFunctions(eclipseContext);
+		eclipseContext.set(Integer.class, new Integer(1));
+
+		final Object actual = eclipseContext.get(TESTSTRING);
+
+		assertSame(transformed, actual);
+	}
+
+	@Test
+	public void testContextWithContextFunctionReturningNull() {
+		final BazaarContextFunction contextFunction = new BazaarContextFunctionReturningNull();
+		bazaar.addContextFunction(TESTSTRING, contextFunction);
+		final BazaarContext bazaarContextMock = mock(BazaarContext.class);
+		IEclipseContext eclipseContext = bazaar.createEclipseContext(bazaarContextMock);
+		eclipseContext = bazaar.addContextFunctions(eclipseContext);
+
+		final Object actual = eclipseContext.get(TESTSTRING);
+
+		assertSame(null, actual);
+	}
+
+	@Test
+	public void testContextWithContextFunctionCacheValue() {
+		final Object transformed = mock(Object.class);
+		final BazaarContextFunctionWithCounter contextFunction = new BazaarContextFunctionWithCounter(transformed);
+		bazaar.addContextFunction(TESTSTRING, contextFunction);
+		final BazaarContext bazaarContextMock = mock(BazaarContext.class);
+		IEclipseContext eclipseContext = bazaar.createEclipseContext(bazaarContextMock);
+		eclipseContext = bazaar.addContextFunctions(eclipseContext);
+
+		Object actual = eclipseContext.get(TESTSTRING);
+		actual = eclipseContext.get(TESTSTRING);
+
+		assertSame(transformed, actual);
+		assertSame(1, contextFunction.getCount());
+	}
+
+	@Test
+	public void testCreateProduct() {
+		final BazaarContextFunction contextFunction = new BazaarContextFunctionParameter1(TESTSTRING);
+		bazaar.addContextFunction(String.class.getName(), contextFunction);
+		final BazaarContext bazaarContextMock = mock(BazaarContext.class);
+		final HashMap<String, Object> contextMap = new HashMap<String, Object>();
+		contextMap.put(Integer.class.getName(), new Integer(0));
+		when(bazaarContextMock.getContextMap()).thenReturn(contextMap);
+
+		final MyProduct myProductMock = mock(MyProduct.class);
+		final Vendor<MyProduct> vendor = new FullVendorParameter2(myProductMock);
+		bazaar.addVendor(vendor);
+
+		final MyProduct createdProduct = bazaar.createProduct(bazaarContextMock);
+
+		assertSame(myProductMock, createdProduct);
+	}
+
+	@Test
+	public void testCreateProductNoBiddingVendor() {
+		final BazaarContextFunction contextFunction = new BazaarContextFunctionParameter1(TESTSTRING);
+		bazaar.addContextFunction(String.class.getName(), contextFunction);
+
+		final BazaarContext bazaarContext = BazaarContext.Builder.empty()
+			.put(Integer.class, 0).build();
+
+		final MyProduct myProductMock = mock(MyProduct.class);
+		bazaar.addVendor(new VendorCreatingProductParameter0(myProductMock) {
+			@Bid
+			public Double bid(String string) {
+				return null;
+			}
+		});
+
+		final MyProduct createdProduct = bazaar.createProduct(bazaarContext);
+		assertThat(createdProduct, nullValue());
+	}
+
+	@Test
+	public void testCreateProductNoVendor() {
+
+		final BazaarContext bazaarContext = BazaarContext.Builder.empty().build();
+
+		final MyProduct createdProduct = bazaar.createProduct(bazaarContext);
+		assertThat(createdProduct, nullValue());
+	}
+
+	@Test
+	public void testCreateProductsWithPriority() {
+		final BazaarContextFunction contextFunction = new BazaarContextFunctionParameter1(TESTSTRING);
+		bazaar.addContextFunction(String.class.getName(), contextFunction);
+
+		final BazaarContext bazaarContext = BazaarContext.Builder.empty()
+			.add(0).build();
+
+		final MyProduct myProductMock1 = mock(MyProduct.class);
+		bazaar.addVendor(new VendorPriority01Parameter1() {
+			@Create
+			public MyProduct make(String string) {
+				return myProductMock1;
+			}
+		});
+		final MyProduct myProductMock2 = mock(MyProduct.class);
+		bazaar.addVendor(new VendorPriority1Parameter1() {
+			@Create
+			public MyProduct make(String string) {
+				return myProductMock2;
+			}
+		});
+		final MyProduct myProductMock3 = mock(MyProduct.class);
+		bazaar.addVendor(new VendorPriority2Parameter1() {
+			@Create
+			public MyProduct make(String string) {
+				return myProductMock3;
+			}
+		});
+
+		final List<MyProduct> createdProducts = bazaar.createProducts(bazaarContext);
+
+		// The vendor bids order these in reverse (high bid first)
+		assertThat(createdProducts, is(asList(myProductMock3, myProductMock2, myProductMock1)));
+	}
+
+	@Test
+	public void testCreateProductsNoBid() {
+
+		final BazaarContext bazaarContext = BazaarContext.Builder.empty().build();
+
+		final MyProduct myProductMock = mock(MyProduct.class);
+		bazaar.addVendor(new VendorCreatingProductParameter1(myProductMock)); // No bid
+
+		final List<MyProduct> createdProducts = bazaar.createProducts(bazaarContext);
+
+		assertThat(createdProducts, not(hasItem(any(MyProduct.class))));
+	}
+
+	@Test
+	public void testCreateProductsBidButNoCreate() {
+
+		final BazaarContext bazaarContext = BazaarContext.Builder.empty().build();
+
+		final MyProduct myProductMock = mock(MyProduct.class);
+		bazaar.addVendor(new VendorCreatingProductParameter1(myProductMock) {
+			@Bid
+			public double bid() {
+				return 2.0;
+			}
+		});
+
+		final List<MyProduct> createdProducts = bazaar.createProducts(bazaarContext);
+
+		assertTrue(createdProducts.isEmpty());
+	}
+
+	@Test
+	public void testCreateProductsBidCreateNull() {
+
+		final BazaarContext bazaarContext = BazaarContext.Builder.empty().build();
+
+		bazaar.addVendor(new Vendor<MyProduct>() {
+
+			@Bid
+			public double bid() {
+				return 2.0;
+			}
+
+			@Create
+			public MyProduct create() {
+				return null;
+			}
+		});
+
+		final List<MyProduct> createdProducts = bazaar.createProducts(bazaarContext);
+
+		assertTrue(createdProducts.isEmpty());
+	}
+
+	@Test
+	public void testRemoveVendor() {
+		final Vendor<MyProduct> vendor = new VendorPriority1Parameter0();
+		final Vendor<MyProduct> vendor2 = new VendorPriority2Parameter1();
+		bazaar.addVendor(vendor);
+		bazaar.addVendor(vendor2);
+
+		final IEclipseContext context = EclipseContextFactory.create();
+		context.set(String.class, TESTSTRING);
+
+		Vendor<?> bestVendor = bazaar.getBestVendor(context);
+
+		assumeThat(bestVendor, is((Object) vendor2));
+
+		bazaar.removeVendor(vendor2);
+
+		bestVendor = bazaar.getBestVendor(context);
+
+		assertThat(bestVendor, is((Object) vendor));
+	}
+
+}
diff --git a/tests/org.eclipse.emfforms.core.bazaar.tests/src/org/eclipse/emfforms/bazaar/internal/ThreadSafeBazaar_ITest.java b/tests/org.eclipse.emfforms.core.bazaar.tests/src/org/eclipse/emfforms/bazaar/internal/ThreadSafeBazaar_ITest.java
index b611dc6..e8a85ce 100644
--- a/tests/org.eclipse.emfforms.core.bazaar.tests/src/org/eclipse/emfforms/bazaar/internal/ThreadSafeBazaar_ITest.java
+++ b/tests/org.eclipse.emfforms.core.bazaar.tests/src/org/eclipse/emfforms/bazaar/internal/ThreadSafeBazaar_ITest.java
@@ -47,7 +47,7 @@
 
 /**
  * Specific concurrency tests for the {@link ThreadSafeBazaar}. Other
- * tests are covered by the {@link Bazaar_ITest} suite.
+ * tests are covered by the {@link Bazaar_Test} suite.
  *
  * @author Christian W. Damus
  */
diff --git a/tests/org.eclipse.emfforms.core.services.databinding.featurepath.tests/META-INF/MANIFEST.MF b/tests/org.eclipse.emfforms.core.services.databinding.featurepath.tests/META-INF/MANIFEST.MF
index 99fa530..0388899 100644
--- a/tests/org.eclipse.emfforms.core.services.databinding.featurepath.tests/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.emfforms.core.services.databinding.featurepath.tests/META-INF/MANIFEST.MF
@@ -2,16 +2,18 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Databinding Services Featurepath Tests
 Bundle-SymbolicName: org.eclipse.emfforms.core.services.databinding.featurepath.tests;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-ClassPath: .
 Bundle-Vendor: Eclipse Modeling Project
-Fragment-Host: org.eclipse.emfforms.core.services.databinding.featurepath;bundle-version="[1.16.0,1.17.0)"
-Export-Package: org.eclipse.emfforms.core.services.databinding.featurepath.tests;version="1.16.0";x-internal:=true,
-  org.eclipse.emfforms.internal.core.services.databinding.featurepath;version="1.16.0";x-internal:=true
+Fragment-Host: org.eclipse.emfforms.core.services.databinding.featurepath;bundle-version="[1.17.0,1.18.0]"
+Export-Package: org.eclipse.emfforms.core.services.databinding.featurepath.tests;version="1.17.0";x-internal:=true,
+ org.eclipse.emfforms.internal.core.services.databinding.featurepath;version="1.17.0";x-internal:=true
 Require-Bundle: org.junit;bundle-version="[4.11.0,5.0.0)",
-  org.mockito.mockito-core-hamcrest-modified;bundle-version="[1.9.5,2.0.0)",
-  org.eclipse.emf.ecore;bundle-version="[2.9.0,3.0.0)",
-  org.eclipse.emfforms.core.services.databinding.testmodel;bundle-version="[1.16.0,1.17.0)"
+ org.mockito.mockito-core-hamcrest-modified;bundle-version="[1.9.5,2.0.0)",
+ org.objenesis;bundle-version="[1.0.0,2.0.0)",
+ org.eclipse.emf.ecore;bundle-version="[2.9.0,3.0.0)",
+ org.eclipse.emfforms.core.services.databinding.testmodel;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Bundle-ActivationPolicy: lazy
 Import-Package: org.osgi.framework;version="[1.1.0,2.0.0)"
+Automatic-Module-Name: org.eclipse.emfforms.core.services.databinding.featurepath.tests
diff --git a/tests/org.eclipse.emfforms.core.services.databinding.featurepath.tests/pom.xml b/tests/org.eclipse.emfforms.core.services.databinding.featurepath.tests/pom.xml
index 38a5f24..fd2fe97 100644
--- a/tests/org.eclipse.emfforms.core.services.databinding.featurepath.tests/pom.xml
+++ b/tests/org.eclipse.emfforms.core.services.databinding.featurepath.tests/pom.xml
@@ -6,7 +6,7 @@
 	<parent>
 		<groupId>org.eclipse.emf.ecp</groupId>
 		<artifactId>ecp-tests-parent</artifactId>
-		<version>1.16.0-SNAPSHOT</version>
+		<version>1.17.0-SNAPSHOT</version>
 		<relativePath>../../releng/org.eclipse.emf.ecp.releng.tests/</relativePath>
 	</parent>
 	<artifactId>org.eclipse.emfforms.core.services.databinding.featurepath.tests</artifactId>
@@ -42,6 +42,6 @@
 		</plugins>
 	</build>
 	<groupId>org.eclipse.emf.ecp</groupId>
-	<version>1.16.0-SNAPSHOT</version>
+	<version>1.17.0-SNAPSHOT</version>
 	
 </project>
diff --git a/tests/org.eclipse.emfforms.core.services.databinding.featurepath.tests/src/org/eclipse/emfforms/internal/core/services/databinding/featurepath/FeaturePathDomainModelReferenceConverter_Test.java b/tests/org.eclipse.emfforms.core.services.databinding.featurepath.tests/src/org/eclipse/emfforms/internal/core/services/databinding/featurepath/FeaturePathDomainModelReferenceConverter_Test.java
index bc7fe32..8d94429 100644
--- a/tests/org.eclipse.emfforms.core.services.databinding.featurepath.tests/src/org/eclipse/emfforms/internal/core/services/databinding/featurepath/FeaturePathDomainModelReferenceConverter_Test.java
+++ b/tests/org.eclipse.emfforms.core.services.databinding.featurepath.tests/src/org/eclipse/emfforms/internal/core/services/databinding/featurepath/FeaturePathDomainModelReferenceConverter_Test.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2011-2015 EclipseSource Muenchen GmbH and others.
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH and others.
  *
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
@@ -392,4 +392,14 @@
 	public void testGetSettingWrongReferenceType() throws DatabindingFailedException {
 		converter.getSetting(mock(VDomainModelReference.class), validEObject);
 	}
+
+	@Test(expected = DatabindingFailedException.class)
+	public void testGetSettingInvalidFeatureInPath() throws DatabindingFailedException {
+		final VFeaturePathDomainModelReference reference = VViewFactory.eINSTANCE
+			.createFeaturePathDomainModelReference();
+		reference.getDomainModelEReferencePath().add(TestPackage.eINSTANCE.getDExtended_A());
+		reference.setDomainModelEFeature(TestPackage.eINSTANCE.getA_B());
+		final D d = TestFactory.eINSTANCE.createD();
+		converter.getSetting(reference, d);
+	}
 }
diff --git a/tests/org.eclipse.emfforms.core.services.databinding.index.tests/META-INF/MANIFEST.MF b/tests/org.eclipse.emfforms.core.services.databinding.index.tests/META-INF/MANIFEST.MF
index 8c1ba70..0793140 100644
--- a/tests/org.eclipse.emfforms.core.services.databinding.index.tests/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.emfforms.core.services.databinding.index.tests/META-INF/MANIFEST.MF
@@ -2,13 +2,14 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Index DMR Converter Tests
 Bundle-SymbolicName: org.eclipse.emfforms.core.services.databinding.index.tests
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Fragment-Host: org.eclipse.emfforms.core.services.databinding.index;bundle-version="[1.16.0,1.17.0)"
-Export-Package: org.eclipse.emfforms.core.services.databinding.index.tests;version="1.16.0";x-internal:=true,
-  org.eclipse.emfforms.internal.core.services.databinding.index;version="1.16.0";x-internal:=true
+Fragment-Host: org.eclipse.emfforms.core.services.databinding.index;bundle-version="[1.17.0,1.18.0)"
+Export-Package: org.eclipse.emfforms.core.services.databinding.index.tests;version="1.17.0";x-internal:=true,
+  org.eclipse.emfforms.internal.core.services.databinding.index;version="1.17.0";x-internal:=true
 Require-Bundle: org.junit;bundle-version="[4.11.0,5.0.0)",
   org.mockito.mockito-core-hamcrest-modified;bundle-version="[1.9.5,2.0.0)",
-  org.eclipse.emfforms.core.services.databinding.testmodel;bundle-version="[1.16.0,1.17.0)"
+  org.eclipse.emfforms.core.services.databinding.testmodel;bundle-version="[1.17.0,1.18.0)"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Import-Package: org.osgi.framework;version="[1.3.0,2.0.0]"
+Automatic-Module-Name: org.eclipse.emfforms.core.services.databinding.index.tests
diff --git a/tests/org.eclipse.emfforms.core.services.databinding.index.tests/pom.xml b/tests/org.eclipse.emfforms.core.services.databinding.index.tests/pom.xml
index 1e0fe03..8ea882f 100644
--- a/tests/org.eclipse.emfforms.core.services.databinding.index.tests/pom.xml
+++ b/tests/org.eclipse.emfforms.core.services.databinding.index.tests/pom.xml
@@ -6,7 +6,7 @@
 	<parent>
 		<groupId>org.eclipse.emf.ecp</groupId>
 		<artifactId>ecp-tests-parent</artifactId>
-		<version>1.16.0-SNAPSHOT</version>
+		<version>1.17.0-SNAPSHOT</version>
 		<relativePath>../../releng/org.eclipse.emf.ecp.releng.tests/</relativePath>
 	</parent>
 	<artifactId>org.eclipse.emfforms.core.services.databinding.index.tests</artifactId>
@@ -27,5 +27,5 @@
 		</plugins>
 	</build>
 	<groupId>org.eclipse.emfforms</groupId>
-	<version>1.16.0-SNAPSHOT</version>
+	<version>1.17.0-SNAPSHOT</version>
 </project>
diff --git a/tests/org.eclipse.emfforms.core.services.databinding.integrationtest/META-INF/MANIFEST.MF b/tests/org.eclipse.emfforms.core.services.databinding.integrationtest/META-INF/MANIFEST.MF
index 3d8f40e..430d9c4 100644
--- a/tests/org.eclipse.emfforms.core.services.databinding.integrationtest/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.emfforms.core.services.databinding.integrationtest/META-INF/MANIFEST.MF
@@ -2,14 +2,15 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Databinding Services Integration Test
 Bundle-SymbolicName: org.eclipse.emfforms.core.services.databinding.integrationtest
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emfforms.core.services.databinding.integrationtest;version="1.16.0";x-internal:=true
+Export-Package: org.eclipse.emfforms.core.services.databinding.integrationtest;version="1.17.0";x-internal:=true
 Require-Bundle: org.junit;bundle-version="[4.11.0,5.0.0)",
-  org.eclipse.emfforms.core.services;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services.databinding.testmodel;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.databinding;bundle-version="[1.2.0,2.0.0)"
+ org.eclipse.emfforms.core.services;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services.databinding.testmodel;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.databinding;bundle-version="[1.2.0,2.0.0)"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Import-Package: org.osgi.framework;version="[1.1.0,2.0.0)"
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emfforms.core.services.databinding.integrationtest
diff --git a/tests/org.eclipse.emfforms.core.services.databinding.integrationtest/pom.xml b/tests/org.eclipse.emfforms.core.services.databinding.integrationtest/pom.xml
index 9696a3d..188915d 100644
--- a/tests/org.eclipse.emfforms.core.services.databinding.integrationtest/pom.xml
+++ b/tests/org.eclipse.emfforms.core.services.databinding.integrationtest/pom.xml
@@ -6,7 +6,7 @@
 	<parent>
 		<groupId>org.eclipse.emf.ecp</groupId>
 		<artifactId>ecp-tests-parent</artifactId>
-		<version>1.16.0-SNAPSHOT</version>
+		<version>1.17.0-SNAPSHOT</version>
 		<relativePath>../../releng/org.eclipse.emf.ecp.releng.tests/</relativePath>
 	</parent>
 	<artifactId>org.eclipse.emfforms.core.services.databinding.integrationtest</artifactId>
@@ -52,5 +52,5 @@
 		</plugins>
 	</build>
 	<groupId>org.eclipse.emf.ecp</groupId>
-	<version>1.16.0-SNAPSHOT</version>
+	<version>1.17.0-SNAPSHOT</version>
 </project>
diff --git a/tests/org.eclipse.emfforms.core.services.databinding.keyattribute.tests/META-INF/MANIFEST.MF b/tests/org.eclipse.emfforms.core.services.databinding.keyattribute.tests/META-INF/MANIFEST.MF
index 066a26f..59a4bfd 100644
--- a/tests/org.eclipse.emfforms.core.services.databinding.keyattribute.tests/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.emfforms.core.services.databinding.keyattribute.tests/META-INF/MANIFEST.MF
@@ -2,14 +2,15 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: KeyAttribute DMR Converter Tests
 Bundle-SymbolicName: org.eclipse.emfforms.core.services.databinding.keyattribute.tests
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Fragment-Host: org.eclipse.emfforms.core.services.databinding.keyattribute;bundle-version="[1.16.0,1.17.0)"
-Export-Package: org.eclipse.emfforms.core.services.databinding.keyattribute.tests;version="1.16.0";x-internal:=true,
-  org.eclipse.emfforms.internal.core.services.databinding.keyattribute;version="1.16.0";x-internal:=true
+Fragment-Host: org.eclipse.emfforms.core.services.databinding.keyattribute;bundle-version="[1.17.0,1.18.0]"
+Export-Package: org.eclipse.emfforms.core.services.databinding.keyattribute.tests;version="1.17.0";x-internal:=true,
+ org.eclipse.emfforms.internal.core.services.databinding.keyattribute;version="1.17.0";x-internal:=true
 Require-Bundle: org.junit;bundle-version="[4.11.0,5.0.0)",
-  org.mockito.mockito-core-hamcrest-modified;bundle-version="[1.9.5,2.0.0)",
-  org.eclipse.emf.ecore;bundle-version="[2.11.0,3.0.0)",
-  org.eclipse.emfforms.core.services.databinding.testmodel;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.test.common;bundle-version="[1.16.0,1.17.0)"
+ org.mockito.mockito-core-hamcrest-modified;bundle-version="[1.9.5,2.0.0)",
+ org.eclipse.emf.ecore;bundle-version="[2.11.0,3.0.0)",
+ org.eclipse.emfforms.core.services.databinding.testmodel;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.test.common;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Automatic-Module-Name: org.eclipse.emfforms.core.services.databinding.keyattribute.tests
diff --git a/tests/org.eclipse.emfforms.core.services.databinding.keyattribute.tests/pom.xml b/tests/org.eclipse.emfforms.core.services.databinding.keyattribute.tests/pom.xml
index 3352e46..e58e987 100644
--- a/tests/org.eclipse.emfforms.core.services.databinding.keyattribute.tests/pom.xml
+++ b/tests/org.eclipse.emfforms.core.services.databinding.keyattribute.tests/pom.xml
@@ -6,12 +6,12 @@
 	<parent>
 		<groupId>org.eclipse.emf.ecp</groupId>
 		<artifactId>ecp-tests-parent</artifactId>
-		<version>1.16.0-SNAPSHOT</version>
+		<version>1.17.0-SNAPSHOT</version>
 		<relativePath>../../releng/org.eclipse.emf.ecp.releng.tests/</relativePath>
 	</parent>
 	<groupId>org.eclipse.emf.ecp</groupId>
 	<artifactId>org.eclipse.emfforms.core.services.databinding.keyattribute.tests</artifactId>
-	<version>1.16.0-SNAPSHOT</version>
+	<version>1.17.0-SNAPSHOT</version>
 	<packaging>eclipse-test-plugin</packaging>
 	
 	<build>
diff --git a/tests/org.eclipse.emfforms.core.services.databinding.mapping.tests/META-INF/MANIFEST.MF b/tests/org.eclipse.emfforms.core.services.databinding.mapping.tests/META-INF/MANIFEST.MF
index 8c5efa7..10f7408 100644
--- a/tests/org.eclipse.emfforms.core.services.databinding.mapping.tests/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.emfforms.core.services.databinding.mapping.tests/META-INF/MANIFEST.MF
@@ -2,13 +2,14 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Mapping DMR Converter Tests
 Bundle-SymbolicName: org.eclipse.emfforms.core.services.databinding.mapping.tests
-Bundle-Version: 1.16.0.qualifier
-Fragment-Host: org.eclipse.emfforms.core.services.databinding.mapping;bundle-version="[1.16.0,1.17.0)"
-Export-Package: org.eclipse.emfforms.core.services.databinding.mapping.tests;version="1.16.0";x-internal:=true,
-  org.eclipse.emfforms.internal.core.services.databinding.mapping;version="1.16.0";x-internal:=true
+Bundle-Version: 1.17.0.qualifier
+Fragment-Host: org.eclipse.emfforms.core.services.databinding.mapping;bundle-version="[1.17.0,1.18.0]"
+Export-Package: org.eclipse.emfforms.core.services.databinding.mapping.tests;version="1.17.0";x-internal:=true,
+ org.eclipse.emfforms.internal.core.services.databinding.mapping;version="1.17.0";x-internal:=true
 Require-Bundle: org.junit;bundle-version="[4.11.0,5.0.0)",
-  org.mockito.mockito-core-hamcrest-modified;bundle-version="[1.9.5,2.0.0)",
-  org.eclipse.emfforms.core.services.databinding.testmodel;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.test.common;bundle-version="[1.16.0,1.17.0)"
+ org.mockito.mockito-core-hamcrest-modified;bundle-version="[1.9.5,2.0.0)",
+ org.eclipse.emfforms.core.services.databinding.testmodel;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.test.common;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Import-Package: org.osgi.framework;version="[1.3.0,2.0.0)"
+Automatic-Module-Name: org.eclipse.emfforms.core.services.databinding.mapping.tests
diff --git a/tests/org.eclipse.emfforms.core.services.databinding.mapping.tests/pom.xml b/tests/org.eclipse.emfforms.core.services.databinding.mapping.tests/pom.xml
index b90eb33..c036e99 100644
--- a/tests/org.eclipse.emfforms.core.services.databinding.mapping.tests/pom.xml
+++ b/tests/org.eclipse.emfforms.core.services.databinding.mapping.tests/pom.xml
@@ -6,7 +6,7 @@
 	<parent>
 		<groupId>org.eclipse.emf.ecp</groupId>
 		<artifactId>ecp-tests-parent</artifactId>
-		<version>1.16.0-SNAPSHOT</version>
+		<version>1.17.0-SNAPSHOT</version>
 		<relativePath>../../releng/org.eclipse.emf.ecp.releng.tests/</relativePath>
 	</parent>
 	<artifactId>org.eclipse.emfforms.core.services.databinding.mapping.tests</artifactId>
@@ -27,5 +27,5 @@
 		</plugins>
 	</build>
 	<groupId>org.eclipse.emfforms</groupId>
-	<version>1.16.0-SNAPSHOT</version>
+	<version>1.17.0-SNAPSHOT</version>
 </project>
diff --git a/tests/org.eclipse.emfforms.core.services.databinding.testmodel/META-INF/MANIFEST.MF b/tests/org.eclipse.emfforms.core.services.databinding.testmodel/META-INF/MANIFEST.MF
index f629d15..b45425d 100644
--- a/tests/org.eclipse.emfforms.core.services.databinding.testmodel/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.emfforms.core.services.databinding.testmodel/META-INF/MANIFEST.MF
@@ -2,14 +2,15 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.emfforms.core.services.databinding.testmodel;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-ClassPath: .
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
-Export-Package: org.eclipse.emfforms.core.services.databinding.testmodel.test.model;version="1.16.0",
- org.eclipse.emfforms.core.services.databinding.testmodel.test.model.impl;version="1.16.0";x-internal:=true,
- org.eclipse.emfforms.core.services.databinding.testmodel.test.model.util;version="1.16.0";x-internal:=true
+Export-Package: org.eclipse.emfforms.core.services.databinding.testmodel.test.model;version="1.17.0",
+ org.eclipse.emfforms.core.services.databinding.testmodel.test.model.impl;version="1.17.0";x-internal:=true,
+ org.eclipse.emfforms.core.services.databinding.testmodel.test.model.util;version="1.17.0";x-internal:=true
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.9.0,4.0.0)",
  org.eclipse.emf.ecore;bundle-version="[2.9.0,3.0.0)";visibility:=reexport
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emfforms.core.services.databinding.testmodel
diff --git a/tests/org.eclipse.emfforms.core.services.databinding.testmodel/model/test.ecore b/tests/org.eclipse.emfforms.core.services.databinding.testmodel/model/test.ecore
index 0c6cd7c..f6bccfd 100644
--- a/tests/org.eclipse.emfforms.core.services.databinding.testmodel/model/test.ecore
+++ b/tests/org.eclipse.emfforms.core.services.databinding.testmodel/model/test.ecore
@@ -30,4 +30,7 @@
     <eStructuralFeatures xsi:type="ecore:EReference" name="key" eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EClass"/>
     <eStructuralFeatures xsi:type="ecore:EReference" name="value" eType="#//A"/>
   </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="DExtended" eSuperTypes="#//D">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="a" eType="#//A"/>
+  </eClassifiers>
 </ecore:EPackage>
diff --git a/tests/org.eclipse.emfforms.core.services.databinding.testmodel/pom.xml b/tests/org.eclipse.emfforms.core.services.databinding.testmodel/pom.xml
index 8e475de..a2ffe18 100644
--- a/tests/org.eclipse.emfforms.core.services.databinding.testmodel/pom.xml
+++ b/tests/org.eclipse.emfforms.core.services.databinding.testmodel/pom.xml
@@ -6,12 +6,12 @@
 	<parent>
 		<groupId>org.eclipse.emf.ecp</groupId>
 		<artifactId>ecp-tests-parent</artifactId>
-		<version>1.16.0-SNAPSHOT</version>
+		<version>1.17.0-SNAPSHOT</version>
 		<relativePath>../../releng/org.eclipse.emf.ecp.releng.tests/</relativePath>
 	</parent>
 	<artifactId>org.eclipse.emfforms.core.services.databinding.testmodel</artifactId>
 	<packaging>eclipse-plugin</packaging>
 
 	<groupId>org.eclipse.emf.ecp</groupId>
-	<version>1.16.0-SNAPSHOT</version>
+	<version>1.17.0-SNAPSHOT</version>
 </project>
diff --git a/tests/org.eclipse.emfforms.core.services.databinding.testmodel/src/org/eclipse/emfforms/core/services/databinding/testmodel/test/model/DExtended.java b/tests/org.eclipse.emfforms.core.services.databinding.testmodel/src/org/eclipse/emfforms/core/services/databinding/testmodel/test/model/DExtended.java
new file mode 100644
index 0000000..fbbac4c
--- /dev/null
+++ b/tests/org.eclipse.emfforms.core.services.databinding.testmodel/src/org/eclipse/emfforms/core/services/databinding/testmodel/test/model/DExtended.java
@@ -0,0 +1,60 @@
+/**
+ * Copyright (c) 2011-2016 EclipseSource Muenchen GmbH 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:
+ * Lucas Koehler - initial API and implementation
+ */
+package org.eclipse.emfforms.core.services.databinding.testmodel.test.model;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>DExtended</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.emfforms.core.services.databinding.testmodel.test.model.DExtended#getA <em>A</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.emfforms.core.services.databinding.testmodel.test.model.TestPackage#getDExtended()
+ * @model
+ * @generated
+ */
+public interface DExtended extends D {
+	/**
+	 * Returns the value of the '<em><b>A</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>A</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the value of the '<em>A</em>' reference.
+	 * @see #setA(A)
+	 * @see org.eclipse.emfforms.core.services.databinding.testmodel.test.model.TestPackage#getDExtended_A()
+	 * @model
+	 * @generated
+	 */
+	A getA();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.emfforms.core.services.databinding.testmodel.test.model.DExtended#getA
+	 * <em>A</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @param value the new value of the '<em>A</em>' reference.
+	 * @see #getA()
+	 * @generated
+	 */
+	void setA(A value);
+
+} // DExtended
diff --git a/tests/org.eclipse.emfforms.core.services.databinding.testmodel/src/org/eclipse/emfforms/core/services/databinding/testmodel/test/model/TestFactory.java b/tests/org.eclipse.emfforms.core.services.databinding.testmodel/src/org/eclipse/emfforms/core/services/databinding/testmodel/test/model/TestFactory.java
index e46cb89..0850d27 100644
--- a/tests/org.eclipse.emfforms.core.services.databinding.testmodel/src/org/eclipse/emfforms/core/services/databinding/testmodel/test/model/TestFactory.java
+++ b/tests/org.eclipse.emfforms.core.services.databinding.testmodel/src/org/eclipse/emfforms/core/services/databinding/testmodel/test/model/TestFactory.java
@@ -74,6 +74,16 @@
 	D createD();
 
 	/**
+	 * Returns a new object of class '<em>DExtended</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return a new object of class '<em>DExtended</em>'.
+	 * @generated
+	 */
+	DExtended createDExtended();
+
+	/**
 	 * Returns the package supported by this factory.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
diff --git a/tests/org.eclipse.emfforms.core.services.databinding.testmodel/src/org/eclipse/emfforms/core/services/databinding/testmodel/test/model/TestPackage.java b/tests/org.eclipse.emfforms.core.services.databinding.testmodel/src/org/eclipse/emfforms/core/services/databinding/testmodel/test/model/TestPackage.java
index 9d2f6a7..0d6c43c 100644
--- a/tests/org.eclipse.emfforms.core.services.databinding.testmodel/src/org/eclipse/emfforms/core/services/databinding/testmodel/test/model/TestPackage.java
+++ b/tests/org.eclipse.emfforms.core.services.databinding.testmodel/src/org/eclipse/emfforms/core/services/databinding/testmodel/test/model/TestPackage.java
@@ -249,8 +249,8 @@
 	int D_FEATURE_COUNT = 2;
 
 	/**
-	 * The meta object id for the '
-	 * {@link org.eclipse.emfforms.core.services.databinding.testmodel.test.model.impl.EClassToEStringMapImpl
+	 * The meta object id for the
+	 * '{@link org.eclipse.emfforms.core.services.databinding.testmodel.test.model.impl.EClassToEStringMapImpl
 	 * <em>EClass To EString Map</em>}' class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -292,9 +292,9 @@
 	int ECLASS_TO_ESTRING_MAP_FEATURE_COUNT = 2;
 
 	/**
-	 * The meta object id for the '
-	 * {@link org.eclipse.emfforms.core.services.databinding.testmodel.test.model.impl.EClassToAMapImpl
-	 * <em>EClass To AMap</em>}' class.
+	 * The meta object id for the
+	 * '{@link org.eclipse.emfforms.core.services.databinding.testmodel.test.model.impl.EClassToAMapImpl <em>EClass To
+	 * AMap</em>}' class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * 
@@ -335,6 +335,59 @@
 	int ECLASS_TO_AMAP_FEATURE_COUNT = 2;
 
 	/**
+	 * The meta object id for the
+	 * '{@link org.eclipse.emfforms.core.services.databinding.testmodel.test.model.impl.DExtendedImpl
+	 * <em>DExtended</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see org.eclipse.emfforms.core.services.databinding.testmodel.test.model.impl.DExtendedImpl
+	 * @see org.eclipse.emfforms.core.services.databinding.testmodel.test.model.impl.TestPackageImpl#getDExtended()
+	 * @generated
+	 */
+	int DEXTENDED = 6;
+
+	/**
+	 * The feature id for the '<em><b>X</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int DEXTENDED__X = D__X;
+
+	/**
+	 * The feature id for the '<em><b>YList</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int DEXTENDED__YLIST = D__YLIST;
+
+	/**
+	 * The feature id for the '<em><b>A</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int DEXTENDED__A = D_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>DExtended</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int DEXTENDED_FEATURE_COUNT = D_FEATURE_COUNT + 1;
+
+	/**
 	 * Returns the meta object for class '{@link org.eclipse.emfforms.core.services.databinding.testmodel.test.model.A
 	 * <em>A</em>}'.
 	 * <!-- begin-user-doc -->
@@ -347,8 +400,8 @@
 	EClass getA();
 
 	/**
-	 * Returns the meta object for the containment reference '
-	 * {@link org.eclipse.emfforms.core.services.databinding.testmodel.test.model.A#getB <em>B</em>}'.
+	 * Returns the meta object for the containment reference
+	 * '{@link org.eclipse.emfforms.core.services.databinding.testmodel.test.model.A#getB <em>B</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * 
@@ -372,8 +425,8 @@
 	EClass getB();
 
 	/**
-	 * Returns the meta object for the containment reference '
-	 * {@link org.eclipse.emfforms.core.services.databinding.testmodel.test.model.B#getC <em>C</em>}'.
+	 * Returns the meta object for the containment reference
+	 * '{@link org.eclipse.emfforms.core.services.databinding.testmodel.test.model.B#getC <em>C</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * 
@@ -385,8 +438,8 @@
 	EReference getB_C();
 
 	/**
-	 * Returns the meta object for the reference list '
-	 * {@link org.eclipse.emfforms.core.services.databinding.testmodel.test.model.B#getCList <em>CList</em>}'.
+	 * Returns the meta object for the reference list
+	 * '{@link org.eclipse.emfforms.core.services.databinding.testmodel.test.model.B#getCList <em>CList</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * 
@@ -410,8 +463,8 @@
 	EClass getC();
 
 	/**
-	 * Returns the meta object for the containment reference '
-	 * {@link org.eclipse.emfforms.core.services.databinding.testmodel.test.model.C#getD <em>D</em>}'.
+	 * Returns the meta object for the containment reference
+	 * '{@link org.eclipse.emfforms.core.services.databinding.testmodel.test.model.C#getD <em>D</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * 
@@ -423,9 +476,9 @@
 	EReference getC_D();
 
 	/**
-	 * Returns the meta object for the map '
-	 * {@link org.eclipse.emfforms.core.services.databinding.testmodel.test.model.C#getEClassToString
-	 * <em>EClass To String</em>}'.
+	 * Returns the meta object for the map
+	 * '{@link org.eclipse.emfforms.core.services.databinding.testmodel.test.model.C#getEClassToString <em>EClass To
+	 * String</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * 
@@ -437,8 +490,9 @@
 	EReference getC_EClassToString();
 
 	/**
-	 * Returns the meta object for the map '
-	 * {@link org.eclipse.emfforms.core.services.databinding.testmodel.test.model.C#getEClassToA <em>EClass To A</em>}'.
+	 * Returns the meta object for the map
+	 * '{@link org.eclipse.emfforms.core.services.databinding.testmodel.test.model.C#getEClassToA <em>EClass To
+	 * A</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * 
@@ -450,8 +504,8 @@
 	EReference getC_EClassToA();
 
 	/**
-	 * Returns the meta object for the reference '
-	 * {@link org.eclipse.emfforms.core.services.databinding.testmodel.test.model.C#getA <em>A</em>}'.
+	 * Returns the meta object for the reference
+	 * '{@link org.eclipse.emfforms.core.services.databinding.testmodel.test.model.C#getA <em>A</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * 
@@ -475,8 +529,8 @@
 	EClass getD();
 
 	/**
-	 * Returns the meta object for the attribute '
-	 * {@link org.eclipse.emfforms.core.services.databinding.testmodel.test.model.D#getX <em>X</em>}'.
+	 * Returns the meta object for the attribute
+	 * '{@link org.eclipse.emfforms.core.services.databinding.testmodel.test.model.D#getX <em>X</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * 
@@ -488,8 +542,8 @@
 	EAttribute getD_X();
 
 	/**
-	 * Returns the meta object for the attribute list '
-	 * {@link org.eclipse.emfforms.core.services.databinding.testmodel.test.model.D#getYList <em>YList</em>}'.
+	 * Returns the meta object for the attribute list
+	 * '{@link org.eclipse.emfforms.core.services.databinding.testmodel.test.model.D#getYList <em>YList</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * 
@@ -575,6 +629,31 @@
 	EReference getEClassToAMap_Value();
 
 	/**
+	 * Returns the meta object for class
+	 * '{@link org.eclipse.emfforms.core.services.databinding.testmodel.test.model.DExtended <em>DExtended</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for class '<em>DExtended</em>'.
+	 * @see org.eclipse.emfforms.core.services.databinding.testmodel.test.model.DExtended
+	 * @generated
+	 */
+	EClass getDExtended();
+
+	/**
+	 * Returns the meta object for the reference
+	 * '{@link org.eclipse.emfforms.core.services.databinding.testmodel.test.model.DExtended#getA <em>A</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for the reference '<em>A</em>'.
+	 * @see org.eclipse.emfforms.core.services.databinding.testmodel.test.model.DExtended#getA()
+	 * @see #getDExtended()
+	 * @generated
+	 */
+	EReference getDExtended_A();
+
+	/**
 	 * Returns the factory that creates the instances of the model.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -599,8 +678,8 @@
 	 */
 	interface Literals {
 		/**
-		 * The meta object literal for the '
-		 * {@link org.eclipse.emfforms.core.services.databinding.testmodel.test.model.impl.AImpl <em>A</em>}' class.
+		 * The meta object literal for the
+		 * '{@link org.eclipse.emfforms.core.services.databinding.testmodel.test.model.impl.AImpl <em>A</em>}' class.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
 		 * 
@@ -620,8 +699,8 @@
 		EReference A__B = eINSTANCE.getA_B();
 
 		/**
-		 * The meta object literal for the '
-		 * {@link org.eclipse.emfforms.core.services.databinding.testmodel.test.model.impl.BImpl <em>B</em>}' class.
+		 * The meta object literal for the
+		 * '{@link org.eclipse.emfforms.core.services.databinding.testmodel.test.model.impl.BImpl <em>B</em>}' class.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
 		 * 
@@ -650,8 +729,8 @@
 		EReference B__CLIST = eINSTANCE.getB_CList();
 
 		/**
-		 * The meta object literal for the '
-		 * {@link org.eclipse.emfforms.core.services.databinding.testmodel.test.model.impl.CImpl <em>C</em>}' class.
+		 * The meta object literal for the
+		 * '{@link org.eclipse.emfforms.core.services.databinding.testmodel.test.model.impl.CImpl <em>C</em>}' class.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
 		 * 
@@ -698,8 +777,8 @@
 		EReference C__A = eINSTANCE.getC_A();
 
 		/**
-		 * The meta object literal for the '
-		 * {@link org.eclipse.emfforms.core.services.databinding.testmodel.test.model.impl.DImpl <em>D</em>}' class.
+		 * The meta object literal for the
+		 * '{@link org.eclipse.emfforms.core.services.databinding.testmodel.test.model.impl.DImpl <em>D</em>}' class.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
 		 * 
@@ -728,8 +807,8 @@
 		EAttribute D__YLIST = eINSTANCE.getD_YList();
 
 		/**
-		 * The meta object literal for the '
-		 * {@link org.eclipse.emfforms.core.services.databinding.testmodel.test.model.impl.EClassToEStringMapImpl
+		 * The meta object literal for the
+		 * '{@link org.eclipse.emfforms.core.services.databinding.testmodel.test.model.impl.EClassToEStringMapImpl
 		 * <em>EClass To EString Map</em>}' class.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
@@ -759,9 +838,9 @@
 		EAttribute ECLASS_TO_ESTRING_MAP__VALUE = eINSTANCE.getEClassToEStringMap_Value();
 
 		/**
-		 * The meta object literal for the '
-		 * {@link org.eclipse.emfforms.core.services.databinding.testmodel.test.model.impl.EClassToAMapImpl
-		 * <em>EClass To AMap</em>}' class.
+		 * The meta object literal for the
+		 * '{@link org.eclipse.emfforms.core.services.databinding.testmodel.test.model.impl.EClassToAMapImpl <em>EClass
+		 * To AMap</em>}' class.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
 		 * 
@@ -789,6 +868,28 @@
 		 */
 		EReference ECLASS_TO_AMAP__VALUE = eINSTANCE.getEClassToAMap_Value();
 
+		/**
+		 * The meta object literal for the
+		 * '{@link org.eclipse.emfforms.core.services.databinding.testmodel.test.model.impl.DExtendedImpl
+		 * <em>DExtended</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * 
+		 * @see org.eclipse.emfforms.core.services.databinding.testmodel.test.model.impl.DExtendedImpl
+		 * @see org.eclipse.emfforms.core.services.databinding.testmodel.test.model.impl.TestPackageImpl#getDExtended()
+		 * @generated
+		 */
+		EClass DEXTENDED = eINSTANCE.getDExtended();
+
+		/**
+		 * The meta object literal for the '<em><b>A</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * 
+		 * @generated
+		 */
+		EReference DEXTENDED__A = eINSTANCE.getDExtended_A();
+
 	}
 
 } // TestPackage
diff --git a/tests/org.eclipse.emfforms.core.services.databinding.testmodel/src/org/eclipse/emfforms/core/services/databinding/testmodel/test/model/impl/DExtendedImpl.java b/tests/org.eclipse.emfforms.core.services.databinding.testmodel/src/org/eclipse/emfforms/core/services/databinding/testmodel/test/model/impl/DExtendedImpl.java
new file mode 100644
index 0000000..64787d9
--- /dev/null
+++ b/tests/org.eclipse.emfforms.core.services.databinding.testmodel/src/org/eclipse/emfforms/core/services/databinding/testmodel/test/model/impl/DExtendedImpl.java
@@ -0,0 +1,176 @@
+/**
+ * Copyright (c) 2011-2016 EclipseSource Muenchen GmbH 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:
+ * Lucas Koehler - initial API and implementation
+ */
+package org.eclipse.emfforms.core.services.databinding.testmodel.test.model.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emfforms.core.services.databinding.testmodel.test.model.A;
+import org.eclipse.emfforms.core.services.databinding.testmodel.test.model.DExtended;
+import org.eclipse.emfforms.core.services.databinding.testmodel.test.model.TestPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>DExtended</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.emfforms.core.services.databinding.testmodel.test.model.impl.DExtendedImpl#getA
+ * <em>A</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class DExtendedImpl extends DImpl implements DExtended {
+	/**
+	 * The cached value of the '{@link #getA() <em>A</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see #getA()
+	 * @generated
+	 * @ordered
+	 */
+	protected A a;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	protected DExtendedImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return TestPackage.Literals.DEXTENDED;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public A getA() {
+		if (a != null && a.eIsProxy()) {
+			InternalEObject oldA = (InternalEObject) a;
+			a = (A) eResolveProxy(oldA);
+			if (a != oldA) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, TestPackage.DEXTENDED__A, oldA, a));
+			}
+		}
+		return a;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public A basicGetA() {
+		return a;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public void setA(A newA) {
+		A oldA = a;
+		a = newA;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, TestPackage.DEXTENDED__A, oldA, a));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case TestPackage.DEXTENDED__A:
+			if (resolve)
+				return getA();
+			return basicGetA();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case TestPackage.DEXTENDED__A:
+			setA((A) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case TestPackage.DEXTENDED__A:
+			setA((A) null);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case TestPackage.DEXTENDED__A:
+			return a != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+} // DExtendedImpl
diff --git a/tests/org.eclipse.emfforms.core.services.databinding.testmodel/src/org/eclipse/emfforms/core/services/databinding/testmodel/test/model/impl/TestFactoryImpl.java b/tests/org.eclipse.emfforms.core.services.databinding.testmodel/src/org/eclipse/emfforms/core/services/databinding/testmodel/test/model/impl/TestFactoryImpl.java
index fcf0255..3d67d4d 100644
--- a/tests/org.eclipse.emfforms.core.services.databinding.testmodel/src/org/eclipse/emfforms/core/services/databinding/testmodel/test/model/impl/TestFactoryImpl.java
+++ b/tests/org.eclipse.emfforms.core.services.databinding.testmodel/src/org/eclipse/emfforms/core/services/databinding/testmodel/test/model/impl/TestFactoryImpl.java
@@ -22,6 +22,7 @@
 import org.eclipse.emfforms.core.services.databinding.testmodel.test.model.B;
 import org.eclipse.emfforms.core.services.databinding.testmodel.test.model.C;
 import org.eclipse.emfforms.core.services.databinding.testmodel.test.model.D;
+import org.eclipse.emfforms.core.services.databinding.testmodel.test.model.DExtended;
 import org.eclipse.emfforms.core.services.databinding.testmodel.test.model.TestFactory;
 import org.eclipse.emfforms.core.services.databinding.testmodel.test.model.TestPackage;
 
@@ -29,7 +30,7 @@
  * <!-- begin-user-doc -->
  * An implementation of the model <b>Factory</b>.
  * <!-- end-user-doc -->
- * 
+ *
  * @generated
  */
 public class TestFactoryImpl extends EFactoryImpl implements TestFactory {
@@ -37,16 +38,17 @@
 	 * Creates the default factory implementation.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	public static TestFactory init() {
 		try {
-			TestFactory theTestFactory = (TestFactory) EPackage.Registry.INSTANCE.getEFactory(TestPackage.eNS_URI);
+			final TestFactory theTestFactory = (TestFactory) EPackage.Registry.INSTANCE
+				.getEFactory(TestPackage.eNS_URI);
 			if (theTestFactory != null) {
 				return theTestFactory;
 			}
-		} catch (Exception exception) {
+		} catch (final Exception exception) {
 			EcorePlugin.INSTANCE.log(exception);
 		}
 		return new TestFactoryImpl();
@@ -56,7 +58,7 @@
 	 * Creates an instance of the factory.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	public TestFactoryImpl() {
@@ -66,7 +68,7 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
@@ -84,6 +86,8 @@
 			return (EObject) createEClassToEStringMap();
 		case TestPackage.ECLASS_TO_AMAP:
 			return (EObject) createEClassToAMap();
+		case TestPackage.DEXTENDED:
+			return createDExtended();
 		default:
 			throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier"); //$NON-NLS-1$ //$NON-NLS-2$
 		}
@@ -92,77 +96,89 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
 	public A createA() {
-		AImpl a = new AImpl();
+		final AImpl a = new AImpl();
 		return a;
 	}
 
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
 	public B createB() {
-		BImpl b = new BImpl();
+		final BImpl b = new BImpl();
 		return b;
 	}
 
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
 	public C createC() {
-		CImpl c = new CImpl();
+		final CImpl c = new CImpl();
 		return c;
 	}
 
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	@Override
 	public D createD() {
-		DImpl d = new DImpl();
+		final DImpl d = new DImpl();
 		return d;
 	}
 
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	public Map.Entry<EClass, String> createEClassToEStringMap() {
-		EClassToEStringMapImpl eClassToEStringMap = new EClassToEStringMapImpl();
+		final EClassToEStringMapImpl eClassToEStringMap = new EClassToEStringMapImpl();
 		return eClassToEStringMap;
 	}
 
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	public Map.Entry<EClass, A> createEClassToAMap() {
-		EClassToAMapImpl eClassToAMap = new EClassToAMapImpl();
+		final EClassToAMapImpl eClassToAMap = new EClassToAMapImpl();
 		return eClassToAMap;
 	}
 
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
+	 * @generated
+	 */
+	@Override
+	public DExtended createDExtended() {
+		final DExtendedImpl dExtended = new DExtendedImpl();
+		return dExtended;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
 	 * @generated
 	 */
 	@Override
@@ -173,7 +189,7 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @deprecated
 	 * @generated
 	 */
diff --git a/tests/org.eclipse.emfforms.core.services.databinding.testmodel/src/org/eclipse/emfforms/core/services/databinding/testmodel/test/model/impl/TestPackageImpl.java b/tests/org.eclipse.emfforms.core.services.databinding.testmodel/src/org/eclipse/emfforms/core/services/databinding/testmodel/test/model/impl/TestPackageImpl.java
index 8fa6255..adfcd3d 100644
--- a/tests/org.eclipse.emfforms.core.services.databinding.testmodel/src/org/eclipse/emfforms/core/services/databinding/testmodel/test/model/impl/TestPackageImpl.java
+++ b/tests/org.eclipse.emfforms.core.services.databinding.testmodel/src/org/eclipse/emfforms/core/services/databinding/testmodel/test/model/impl/TestPackageImpl.java
@@ -18,6 +18,7 @@
 import org.eclipse.emf.ecore.EPackage;
 import org.eclipse.emf.ecore.EReference;
 import org.eclipse.emf.ecore.impl.EPackageImpl;
+import org.eclipse.emfforms.core.services.databinding.testmodel.test.model.DExtended;
 import org.eclipse.emfforms.core.services.databinding.testmodel.test.model.TestFactory;
 import org.eclipse.emfforms.core.services.databinding.testmodel.test.model.TestPackage;
 
@@ -78,6 +79,14 @@
 	private EClass eClassToAMapEClass = null;
 
 	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EClass dExtendedEClass = 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.
@@ -358,6 +367,28 @@
 	 * @generated
 	 */
 	@Override
+	public EClass getDExtended() {
+		return dExtendedEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EReference getDExtended_A() {
+		return (EReference) dExtendedEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
 	public TestFactory getTestFactory() {
 		return (TestFactory) getEFactoryInstance();
 	}
@@ -409,6 +440,9 @@
 		eClassToAMapEClass = createEClass(ECLASS_TO_AMAP);
 		createEReference(eClassToAMapEClass, ECLASS_TO_AMAP__KEY);
 		createEReference(eClassToAMapEClass, ECLASS_TO_AMAP__VALUE);
+
+		dExtendedEClass = createEClass(DEXTENDED);
+		createEReference(dExtendedEClass, DEXTENDED__A);
 	}
 
 	/**
@@ -443,6 +477,7 @@
 		// Set bounds for type parameters
 
 		// Add supertypes to classes
+		dExtendedEClass.getESuperTypes().add(getD());
 
 		// Initialize classes and features; add operations and parameters
 		initEClass(aEClass, org.eclipse.emfforms.core.services.databinding.testmodel.test.model.A.class, "A", //$NON-NLS-1$
@@ -501,6 +536,12 @@
 			!IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED,
 			IS_ORDERED);
 
+		initEClass(dExtendedEClass, DExtended.class, "DExtended", !IS_ABSTRACT, !IS_INTERFACE, //$NON-NLS-1$
+			IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getDExtended_A(), getA(), null, "a", null, 0, 1, DExtended.class, !IS_TRANSIENT, //$NON-NLS-1$
+			!IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED,
+			IS_ORDERED);
+
 		// Create resource
 		createResource(eNS_URI);
 	}
diff --git a/tests/org.eclipse.emfforms.core.services.databinding.testmodel/src/org/eclipse/emfforms/core/services/databinding/testmodel/test/model/util/TestAdapterFactory.java b/tests/org.eclipse.emfforms.core.services.databinding.testmodel/src/org/eclipse/emfforms/core/services/databinding/testmodel/test/model/util/TestAdapterFactory.java
index 0625944..8a953a6 100644
--- a/tests/org.eclipse.emfforms.core.services.databinding.testmodel/src/org/eclipse/emfforms/core/services/databinding/testmodel/test/model/util/TestAdapterFactory.java
+++ b/tests/org.eclipse.emfforms.core.services.databinding.testmodel/src/org/eclipse/emfforms/core/services/databinding/testmodel/test/model/util/TestAdapterFactory.java
@@ -22,6 +22,7 @@
 import org.eclipse.emfforms.core.services.databinding.testmodel.test.model.B;
 import org.eclipse.emfforms.core.services.databinding.testmodel.test.model.C;
 import org.eclipse.emfforms.core.services.databinding.testmodel.test.model.D;
+import org.eclipse.emfforms.core.services.databinding.testmodel.test.model.DExtended;
 import org.eclipse.emfforms.core.services.databinding.testmodel.test.model.TestPackage;
 
 /**
@@ -29,7 +30,7 @@
  * The <b>Adapter Factory</b> for the model.
  * It provides an adapter <code>createXXX</code> method for each class of the model.
  * <!-- end-user-doc -->
- * 
+ *
  * @see org.eclipse.emfforms.core.services.databinding.testmodel.test.model.TestPackage
  * @generated
  */
@@ -38,7 +39,7 @@
 	 * The cached model package.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	protected static TestPackage modelPackage;
@@ -47,7 +48,7 @@
 	 * Creates an instance of the adapter factory.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	public TestAdapterFactory() {
@@ -62,7 +63,7 @@
 	 * This implementation returns <code>true</code> if the object is either the model's package or is an instance
 	 * object of the model.
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @return whether this factory is applicable for the type of the object.
 	 * @generated
 	 */
@@ -81,7 +82,7 @@
 	 * The switch that delegates to the <code>createXXX</code> methods.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	protected TestSwitch<Adapter> modelSwitch = new TestSwitch<Adapter>() {
@@ -116,6 +117,11 @@
 		}
 
 		@Override
+		public Adapter caseDExtended(DExtended object) {
+			return createDExtendedAdapter();
+		}
+
+		@Override
 		public Adapter defaultCase(EObject object) {
 			return createEObjectAdapter();
 		}
@@ -125,7 +131,7 @@
 	 * Creates an adapter for the <code>target</code>.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @param target the object to adapt.
 	 * @return the adapter for the <code>target</code>.
 	 * @generated
@@ -136,13 +142,13 @@
 	}
 
 	/**
-	 * Creates a new adapter for an object of class '
-	 * {@link org.eclipse.emfforms.core.services.databinding.testmodel.test.model.A <em>A</em>}'.
+	 * Creates a new adapter for an object of class
+	 * '{@link org.eclipse.emfforms.core.services.databinding.testmodel.test.model.A <em>A</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.emfforms.core.services.databinding.testmodel.test.model.A
 	 * @generated
@@ -152,13 +158,13 @@
 	}
 
 	/**
-	 * Creates a new adapter for an object of class '
-	 * {@link org.eclipse.emfforms.core.services.databinding.testmodel.test.model.B <em>B</em>}'.
+	 * Creates a new adapter for an object of class
+	 * '{@link org.eclipse.emfforms.core.services.databinding.testmodel.test.model.B <em>B</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.emfforms.core.services.databinding.testmodel.test.model.B
 	 * @generated
@@ -168,13 +174,13 @@
 	}
 
 	/**
-	 * Creates a new adapter for an object of class '
-	 * {@link org.eclipse.emfforms.core.services.databinding.testmodel.test.model.C <em>C</em>}'.
+	 * Creates a new adapter for an object of class
+	 * '{@link org.eclipse.emfforms.core.services.databinding.testmodel.test.model.C <em>C</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.emfforms.core.services.databinding.testmodel.test.model.C
 	 * @generated
@@ -184,13 +190,13 @@
 	}
 
 	/**
-	 * Creates a new adapter for an object of class '
-	 * {@link org.eclipse.emfforms.core.services.databinding.testmodel.test.model.D <em>D</em>}'.
+	 * Creates a new adapter for an object of class
+	 * '{@link org.eclipse.emfforms.core.services.databinding.testmodel.test.model.D <em>D</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.emfforms.core.services.databinding.testmodel.test.model.D
 	 * @generated
@@ -205,7 +211,7 @@
 	 * 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 java.util.Map.Entry
 	 * @generated
@@ -220,7 +226,7 @@
 	 * 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 java.util.Map.Entry
 	 * @generated
@@ -230,11 +236,27 @@
 	}
 
 	/**
+	 * Creates a new adapter for an object of class
+	 * '{@link org.eclipse.emfforms.core.services.databinding.testmodel.test.model.DExtended <em>DExtended</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.emfforms.core.services.databinding.testmodel.test.model.DExtended
+	 * @generated
+	 */
+	public Adapter createDExtendedAdapter() {
+		return null;
+	}
+
+	/**
 	 * Creates a new adapter for the default case.
 	 * <!-- begin-user-doc -->
 	 * This default implementation returns null.
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @return the new adapter.
 	 * @generated
 	 */
diff --git a/tests/org.eclipse.emfforms.core.services.databinding.testmodel/src/org/eclipse/emfforms/core/services/databinding/testmodel/test/model/util/TestSwitch.java b/tests/org.eclipse.emfforms.core.services.databinding.testmodel/src/org/eclipse/emfforms/core/services/databinding/testmodel/test/model/util/TestSwitch.java
index 70ffa0e..8bb172d 100644
--- a/tests/org.eclipse.emfforms.core.services.databinding.testmodel/src/org/eclipse/emfforms/core/services/databinding/testmodel/test/model/util/TestSwitch.java
+++ b/tests/org.eclipse.emfforms.core.services.databinding.testmodel/src/org/eclipse/emfforms/core/services/databinding/testmodel/test/model/util/TestSwitch.java
@@ -21,6 +21,7 @@
 import org.eclipse.emfforms.core.services.databinding.testmodel.test.model.B;
 import org.eclipse.emfforms.core.services.databinding.testmodel.test.model.C;
 import org.eclipse.emfforms.core.services.databinding.testmodel.test.model.D;
+import org.eclipse.emfforms.core.services.databinding.testmodel.test.model.DExtended;
 import org.eclipse.emfforms.core.services.databinding.testmodel.test.model.TestPackage;
 
 /**
@@ -33,7 +34,7 @@
  * until a non-null result is returned,
  * which is the result of the switch.
  * <!-- end-user-doc -->
- * 
+ *
  * @see org.eclipse.emfforms.core.services.databinding.testmodel.test.model.TestPackage
  * @generated
  */
@@ -42,7 +43,7 @@
 	 * The cached model package
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	protected static TestPackage modelPackage;
@@ -51,7 +52,7 @@
 	 * Creates an instance of the switch.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @generated
 	 */
 	public TestSwitch() {
@@ -64,7 +65,7 @@
 	 * Checks whether this is a switch for the given package.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @param ePackage the package in question.
 	 * @return whether this is a switch for the given package.
 	 * @generated
@@ -79,7 +80,7 @@
 	 * result.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @return the first non-null result returned by a <code>caseXXX</code> call.
 	 * @generated
 	 */
@@ -87,47 +88,64 @@
 	protected T doSwitch(int classifierID, EObject theEObject) {
 		switch (classifierID) {
 		case TestPackage.A: {
-			A a = (A) theEObject;
+			final A a = (A) theEObject;
 			T result = caseA(a);
-			if (result == null)
+			if (result == null) {
 				result = defaultCase(theEObject);
+			}
 			return result;
 		}
 		case TestPackage.B: {
-			B b = (B) theEObject;
+			final B b = (B) theEObject;
 			T result = caseB(b);
-			if (result == null)
+			if (result == null) {
 				result = defaultCase(theEObject);
+			}
 			return result;
 		}
 		case TestPackage.C: {
-			C c = (C) theEObject;
+			final C c = (C) theEObject;
 			T result = caseC(c);
-			if (result == null)
+			if (result == null) {
 				result = defaultCase(theEObject);
+			}
 			return result;
 		}
 		case TestPackage.D: {
-			D d = (D) theEObject;
+			final D d = (D) theEObject;
 			T result = caseD(d);
-			if (result == null)
+			if (result == null) {
 				result = defaultCase(theEObject);
+			}
 			return result;
 		}
 		case TestPackage.ECLASS_TO_ESTRING_MAP: {
 			@SuppressWarnings("unchecked")
-			Map.Entry<EClass, String> eClassToEStringMap = (Map.Entry<EClass, String>) theEObject;
+			final Map.Entry<EClass, String> eClassToEStringMap = (Map.Entry<EClass, String>) theEObject;
 			T result = caseEClassToEStringMap(eClassToEStringMap);
-			if (result == null)
+			if (result == null) {
 				result = defaultCase(theEObject);
+			}
 			return result;
 		}
 		case TestPackage.ECLASS_TO_AMAP: {
 			@SuppressWarnings("unchecked")
-			Map.Entry<EClass, A> eClassToAMap = (Map.Entry<EClass, A>) theEObject;
+			final Map.Entry<EClass, A> eClassToAMap = (Map.Entry<EClass, A>) theEObject;
 			T result = caseEClassToAMap(eClassToAMap);
-			if (result == null)
+			if (result == null) {
 				result = defaultCase(theEObject);
+			}
+			return result;
+		}
+		case TestPackage.DEXTENDED: {
+			final DExtended dExtended = (DExtended) theEObject;
+			T result = caseDExtended(dExtended);
+			if (result == null) {
+				result = caseD(dExtended);
+			}
+			if (result == null) {
+				result = defaultCase(theEObject);
+			}
 			return result;
 		}
 		default:
@@ -141,7 +159,7 @@
 	 * 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>A</em>'.
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
@@ -157,7 +175,7 @@
 	 * 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>B</em>'.
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
@@ -173,7 +191,7 @@
 	 * 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>C</em>'.
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
@@ -189,7 +207,7 @@
 	 * 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>D</em>'.
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
@@ -205,7 +223,7 @@
 	 * 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>EClass To EString Map</em>'.
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
@@ -221,7 +239,7 @@
 	 * 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>EClass To AMap</em>'.
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
@@ -232,12 +250,28 @@
 	}
 
 	/**
+	 * Returns the result of interpreting the object as an instance of '<em>DExtended</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>DExtended</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseDExtended(DExtended object) {
+		return null;
+	}
+
+	/**
 	 * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
 	 * <!-- begin-user-doc -->
 	 * This implementation returns null;
 	 * returning a non-null result will terminate the switch, but this is the last case anyway.
 	 * <!-- end-user-doc -->
-	 * 
+	 *
 	 * @param object the target of the switch.
 	 * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject)
diff --git a/tests/org.eclipse.emfforms.core.services.datatemplate.test/.checkstyle b/tests/org.eclipse.emfforms.core.services.datatemplate.test/.checkstyle
new file mode 100644
index 0000000..24d357f
--- /dev/null
+++ b/tests/org.eclipse.emfforms.core.services.datatemplate.test/.checkstyle
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<fileset-config file-format-version="1.2.0" simple-config="false" sync-formatter="false">
+  <local-check-config name="ESMCheckstyleTest" location="/org.eclipse.emf.ecp.releng/checkstyle/esmCheckstyleTest.xml" type="project" description="">
+    <additional-data name="protect-config-file" value="false"/>
+  </local-check-config>
+  <fileset name="Java Files" enabled="true" check-config-name="ESMCheckstyleTest" local="true">
+    <file-match-pattern match-pattern=".java" include-pattern="true"/>
+  </fileset>
+</fileset-config>
diff --git a/tests/org.eclipse.emfforms.core.services.datatemplate.test/.classpath b/tests/org.eclipse.emfforms.core.services.datatemplate.test/.classpath
new file mode 100644
index 0000000..8a8f166
--- /dev/null
+++ b/tests/org.eclipse.emfforms.core.services.datatemplate.test/.classpath
@@ -0,0 +1,7 @@
+<?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.6"/>

+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>

+	<classpathentry kind="src" path="src"/>

+	<classpathentry kind="output" path="bin"/>

+</classpath>

diff --git a/tests/org.eclipse.emfforms.core.services.datatemplate.test/.project b/tests/org.eclipse.emfforms.core.services.datatemplate.test/.project
new file mode 100644
index 0000000..fa1c046
--- /dev/null
+++ b/tests/org.eclipse.emfforms.core.services.datatemplate.test/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.emfforms.core.services.datatemplate.test</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>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/tests/org.eclipse.emfforms.core.services.datatemplate.test/.settings/org.eclipse.core.resources.prefs b/tests/org.eclipse.emfforms.core.services.datatemplate.test/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..f548abb
--- /dev/null
+++ b/tests/org.eclipse.emfforms.core.services.datatemplate.test/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,6 @@
+eclipse.preferences.version=1
+
+encoding//model/etypes.ecore=UTF-8
+
+
+encoding/<project>=UTF-8
diff --git a/tests/org.eclipse.emfforms.core.services.datatemplate.test/.settings/org.eclipse.core.runtime.prefs b/tests/org.eclipse.emfforms.core.services.datatemplate.test/.settings/org.eclipse.core.runtime.prefs
new file mode 100644
index 0000000..5a0ad22
--- /dev/null
+++ b/tests/org.eclipse.emfforms.core.services.datatemplate.test/.settings/org.eclipse.core.runtime.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+line.separator=\n
diff --git a/tests/org.eclipse.emfforms.core.services.datatemplate.test/.settings/org.eclipse.jdt.core.prefs b/tests/org.eclipse.emfforms.core.services.datatemplate.test/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..66c53c1
--- /dev/null
+++ b/tests/org.eclipse.emfforms.core.services.datatemplate.test/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,419 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.builder.cleanOutputFolder=clean
+org.eclipse.jdt.core.builder.duplicateResourceTask=warning
+org.eclipse.jdt.core.builder.invalidClasspath=abort
+org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
+org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=
+org.eclipse.jdt.core.circularClasspath=error
+org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
+org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
+org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error
+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.annotation.inheritNullAnnotations=disabled
+org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
+org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
+org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
+org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.6
+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.doc.comment.support=enabled
+org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
+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=enabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
+org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=disabled
+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.invalidJavadoc=warning
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=disabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=public
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
+org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=warning
+org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
+org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=public
+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=warning
+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.nonnullParameterAnnotationDropped=warning
+org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
+org.eclipse.jdt.core.compiler.problem.nullReference=warning
+org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
+org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
+org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
+org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
+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.syntacticNullAnalysisForFields=disabled
+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.unclosedCloseable=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=warning
+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.unusedTypeParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.source=1.6
+org.eclipse.jdt.core.compiler.taskCaseSensitive=enabled
+org.eclipse.jdt.core.compiler.taskPriorities=NORMAL,HIGH,HIGH,LOW,LOW,LOW,LOW,LOW,NORMAL
+org.eclipse.jdt.core.compiler.taskTags=TODO,FIXME,XXX,PERF,MEM,POLISH,@generated NOT,@ADDED,APITODO
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+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_binary_expression=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_method_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=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_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=false
+org.eclipse.jdt.core.formatter.comment.format_block_comments=true
+org.eclipse.jdt.core.formatter.comment.format_header=true
+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=do not 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=1
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=1
+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=do not 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_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_binary_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_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_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_unary_operator=do not 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_binary_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_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_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_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=false
+org.eclipse.jdt.core.formatter.join_wrapped_lines=false
+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=120
+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_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
+org.eclipse.jdt.core.incompatibleJDKLevel=ignore
+org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/tests/org.eclipse.emfforms.core.services.datatemplate.test/.settings/org.eclipse.jdt.launching.prefs b/tests/org.eclipse.emfforms.core.services.datatemplate.test/.settings/org.eclipse.jdt.launching.prefs
new file mode 100644
index 0000000..3bb2352
--- /dev/null
+++ b/tests/org.eclipse.emfforms.core.services.datatemplate.test/.settings/org.eclipse.jdt.launching.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.launching.PREF_STRICTLY_COMPATIBLE_JRE_NOT_AVAILABLE=ignore
diff --git a/tests/org.eclipse.emfforms.core.services.datatemplate.test/.settings/org.eclipse.jdt.ui.prefs b/tests/org.eclipse.emfforms.core.services.datatemplate.test/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 0000000..8bc4bb4
--- /dev/null
+++ b/tests/org.eclipse.emfforms.core.services.datatemplate.test/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,127 @@
+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_functional_interfaces=false
+cleanup.convert_to_enhanced_for_loop=false
+cleanup.correct_indentation=false
+cleanup.format_source_code=true
+cleanup.format_source_code_changes_only=false
+cleanup.insert_inferred_type_arguments=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=true
+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=true
+cleanup.remove_redundant_type_arguments=true
+cleanup.remove_trailing_whitespaces=true
+cleanup.remove_trailing_whitespaces_all=true
+cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_casts=false
+cleanup.remove_unnecessary_nls_tags=false
+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=true
+cleanup.remove_unused_private_types=true
+cleanup.sort_members=false
+cleanup.sort_members_all=false
+cleanup.use_anonymous_class_creation=false
+cleanup.use_blocks=true
+cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_lambda=true
+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.use_type_arguments=false
+cleanup_profile=_esmCleanUp
+cleanup_settings_version=2
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+formatter_profile=_esmFormatter
+formatter_settings_version=12
+org.eclipse.jdt.ui.exception.name=ex
+org.eclipse.jdt.ui.gettersetter.use.is=true
+org.eclipse.jdt.ui.javadoc=true
+org.eclipse.jdt.ui.keywordthis=false
+org.eclipse.jdt.ui.overrideannotation=true
+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 * Copyright (c) 2011-${year} EclipseSource Muenchen GmbH and others.\r\n * \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 * ${user} - initial API and implementation\r\n ******************************************************************************/</template><template autoinsert\="true" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * @author ${user}\r\n *\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment"/><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 * {@inheritDoc}\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">\t\t\t// TODO Auto-generated catch block\r\n\t\t\t// Do NOT catch all Exceptions ("catch (Exception e)")\r\n\t\t\t// Log AND handle Exceptions if possible \r\n            //\r\n            // You can just uncomment one of the lines below to log an exception\:\r\n\t\t\t// logException will show the logged excpetion to the user\r\n\t\t\t// ModelUtil.logException(${exception_var});\r\n\t\t\t// ModelUtil.logException("YOUR MESSAGE HERE", ${exception_var});\r\n\t\t\t// logWarning will only add the message to the error log\r\n\t\t\t// ModelUtil.logWarning("YOUR MESSAGE HERE", ${exception_var});\r\n\t\t\t// ModelUtil.logWarning("YOUR MESSAGE HERE");\r\n\t\t\t//\t\t\t\r\n\t\t\t// If handling is not possible declare and rethrow Exception</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_functional_interfaces=false
+sp_cleanup.convert_to_enhanced_for_loop=false
+sp_cleanup.correct_indentation=false
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.insert_inferred_type_arguments=false
+sp_cleanup.make_local_variable_final=true
+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=true
+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=true
+sp_cleanup.remove_redundant_type_arguments=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=false
+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=true
+sp_cleanup.remove_unused_private_types=true
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.use_anonymous_class_creation=false
+sp_cleanup.use_blocks=true
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_lambda=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
+sp_cleanup.use_type_arguments=false
diff --git a/tests/org.eclipse.emfforms.core.services.datatemplate.test/.settings/org.eclipse.ltk.core.refactoring.prefs b/tests/org.eclipse.emfforms.core.services.datatemplate.test/.settings/org.eclipse.ltk.core.refactoring.prefs
new file mode 100644
index 0000000..864e30f
--- /dev/null
+++ b/tests/org.eclipse.emfforms.core.services.datatemplate.test/.settings/org.eclipse.ltk.core.refactoring.prefs
@@ -0,0 +1,3 @@
+#Thu Feb 04 09:44:24 CET 2010
+eclipse.preferences.version=1
+org.eclipse.ltk.core.refactoring.enable.project.refactoring.history=false
diff --git a/tests/org.eclipse.emfforms.core.services.datatemplate.test/.settings/org.eclipse.pde.api.tools.prefs b/tests/org.eclipse.emfforms.core.services.datatemplate.test/.settings/org.eclipse.pde.api.tools.prefs
new file mode 100644
index 0000000..e4e3c00
--- /dev/null
+++ b/tests/org.eclipse.emfforms.core.services.datatemplate.test/.settings/org.eclipse.pde.api.tools.prefs
@@ -0,0 +1,97 @@
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_TYPE=Error
+API_USE_SCAN_FIELD_SEVERITY=Error
+API_USE_SCAN_METHOD_SEVERITY=Error
+API_USE_SCAN_TYPE_SEVERITY=Error
+CLASS_ELEMENT_TYPE_ADDED_METHOD=Error
+CLASS_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CLASS_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+CLASS_ELEMENT_TYPE_REMOVED_CONSTRUCTOR=Error
+CLASS_ELEMENT_TYPE_REMOVED_FIELD=Error
+CLASS_ELEMENT_TYPE_REMOVED_METHOD=Error
+CLASS_ELEMENT_TYPE_REMOVED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+ENUM_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ENUM_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ENUM_ELEMENT_TYPE_REMOVED_ENUM_CONSTANT=Error
+ENUM_ELEMENT_TYPE_REMOVED_FIELD=Error
+ENUM_ELEMENT_TYPE_REMOVED_METHOD=Error
+ENUM_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+FIELD_ELEMENT_TYPE_ADDED_VALUE=Error
+FIELD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+FIELD_ELEMENT_TYPE_CHANGED_FINAL_TO_NON_FINAL_STATIC_CONSTANT=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_TYPE=Error
+FIELD_ELEMENT_TYPE_CHANGED_VALUE=Error
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENT=Error
+FIELD_ELEMENT_TYPE_REMOVED_VALUE=Error
+ILLEGAL_EXTEND=Warning
+ILLEGAL_IMPLEMENT=Warning
+ILLEGAL_INSTANTIATE=Warning
+ILLEGAL_OVERRIDE=Warning
+ILLEGAL_REFERENCE=Warning
+INTERFACE_ELEMENT_TYPE_ADDED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_SUPER_INTERFACE_WITH_METHODS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+INVALID_JAVADOC_TAG=Warning
+INVALID_REFERENCE_IN_SYSTEM_LIBRARIES=Error
+LEAK_EXTEND=Warning
+LEAK_FIELD_DECL=Warning
+LEAK_IMPLEMENT=Warning
+LEAK_METHOD_PARAM=Warning
+LEAK_METHOD_RETURN_TYPE=Warning
+METHOD_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+METHOD_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+METHOD_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+MISSING_EE_DESCRIPTIONS=Error
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+UNUSED_PROBLEM_FILTERS=Ignore
+automatically_removed_unused_problem_filters=Disabled
+eclipse.preferences.version=1
+incompatible_api_component_version=Error
+incompatible_api_component_version_include_major_without_breaking_change=Disabled
+incompatible_api_component_version_include_minor_without_api_change=Disabled
+invalid_since_tag_version=Error
+malformed_since_tag=Error
+missing_since_tag=Error
+report_api_breakage_when_major_version_incremented=Disabled
+report_resolution_errors_api_component=Warning
diff --git a/tests/org.eclipse.emfforms.core.services.datatemplate.test/.settings/org.eclipse.pde.core.prefs b/tests/org.eclipse.emfforms.core.services.datatemplate.test/.settings/org.eclipse.pde.core.prefs
new file mode 100644
index 0000000..f29e940
--- /dev/null
+++ b/tests/org.eclipse.emfforms.core.services.datatemplate.test/.settings/org.eclipse.pde.core.prefs
@@ -0,0 +1,3 @@
+eclipse.preferences.version=1
+pluginProject.extensions=false
+resolve.requirebundle=false
diff --git a/tests/org.eclipse.emfforms.core.services.datatemplate.test/.settings/org.eclipse.pde.prefs b/tests/org.eclipse.emfforms.core.services.datatemplate.test/.settings/org.eclipse.pde.prefs
new file mode 100644
index 0000000..0bbee3c
--- /dev/null
+++ b/tests/org.eclipse.emfforms.core.services.datatemplate.test/.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=1
+compilers.p.missing-version-import-package=1
+compilers.p.missing-version-require-bundle=1
+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.emfforms.core.services.datatemplate.test/AllPluginTests for core.services.datatemplate.launch b/tests/org.eclipse.emfforms.core.services.datatemplate.test/AllPluginTests for core.services.datatemplate.launch
new file mode 100644
index 0000000..b9479e1
--- /dev/null
+++ b/tests/org.eclipse.emfforms.core.services.datatemplate.test/AllPluginTests for core.services.datatemplate.launch
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.pde.ui.JunitLaunchConfig">
+<booleanAttribute key="append.args" value="true"/>
+<booleanAttribute key="askclear" value="false"/>
+<booleanAttribute key="automaticAdd" value="false"/>
+<booleanAttribute key="automaticValidate" value="true"/>
+<stringAttribute key="bootstrap" value=""/>
+<stringAttribute key="checked" value="[NONE]"/>
+<booleanAttribute key="clearConfig" value="true"/>
+<booleanAttribute key="clearws" value="true"/>
+<booleanAttribute key="clearwslog" value="false"/>
+<stringAttribute key="configLocation" value="${workspace_loc}/.metadata/.plugins/org.eclipse.pde.core/AllPluginTests for core.services.datatemplate"/>
+<booleanAttribute key="default" value="false"/>
+<booleanAttribute key="includeOptional" value="false"/>
+<stringAttribute key="location" value="${workspace_loc}/../junit-workspace"/>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
+<listEntry value="/org.eclipse.emfforms.core.services.datatemplate.test/src/org/eclipse/emfforms/core/services/datatemplate/test/AllPluginTests.java"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
+<listEntry value="1"/>
+</listAttribute>
+<stringAttribute key="org.eclipse.jdt.junit.CONTAINER" value=""/>
+<booleanAttribute key="org.eclipse.jdt.junit.KEEPRUNNING_ATTR" value="false"/>
+<stringAttribute key="org.eclipse.jdt.junit.TESTNAME" value=""/>
+<stringAttribute key="org.eclipse.jdt.junit.TEST_KIND" value="org.eclipse.jdt.junit.loader.junit4"/>
+<booleanAttribute key="org.eclipse.jdt.launching.ATTR_USE_START_ON_FIRST_THREAD" value="true"/>
+<stringAttribute key="org.eclipse.jdt.launching.JRE_CONTAINER" value="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.eclipse.emfforms.core.services.datatemplate.test.AllPluginTests"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-os ${target.os} -ws ${target.ws} -arch ${target.arch} -nl ${target.nl} -consoleLog"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.emfforms.core.services.datatemplate.test"/>
+<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.pde.ui.workbenchClasspathProvider"/>
+<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-ea"/>
+<stringAttribute key="pde.version" value="3.3"/>
+<stringAttribute key="product" value="org.eclipse.platform.ide"/>
+<booleanAttribute key="run_in_ui_thread" value="true"/>
+<stringAttribute key="selected_target_plugins" value="com.ibm.icu@default:default,javax.annotation@default:default,javax.el@default:default,javax.inject@default:default,javax.servlet.jsp@default:default,javax.servlet@default:default,org.apache.batik.css*1.8.0.v20170214-1941@default:default,org.apache.batik.util*1.8.0.v20170214-1941@default:default,org.apache.commons.codec@default:default,org.apache.commons.jxpath@default:default,org.apache.commons.logging@default:default,org.apache.felix.scr@default:default,org.apache.jasper.glassfish@default:default,org.apache.lucene.analyzers-common@default:default,org.apache.lucene.analyzers-smartcn@default:default,org.apache.lucene.core@default:default,org.apache.lucene.misc@default:default,org.eclipse.ant.core@default:default,org.eclipse.compare.core@default:default,org.eclipse.compare@default:default,org.eclipse.core.commands@default:default,org.eclipse.core.contenttype@default:default,org.eclipse.core.databinding*1.6.100.v20170515-1119@default:default,org.eclipse.core.databinding.observable*1.6.100.v20170515-1119@default:default,org.eclipse.core.databinding.property*1.6.100.v20170515-1119@default:default,org.eclipse.core.expressions@default:default,org.eclipse.core.filebuffers@default:default,org.eclipse.core.filesystem.linux.x86_64@default:false,org.eclipse.core.filesystem@default:default,org.eclipse.core.jobs@default:default,org.eclipse.core.net.linux.x86_64@default:false,org.eclipse.core.net@default:default,org.eclipse.core.resources@default:default,org.eclipse.core.runtime@default:true,org.eclipse.core.variables@default:default,org.eclipse.e4.core.commands@default:default,org.eclipse.e4.core.contexts@default:default,org.eclipse.e4.core.di.annotations@default:default,org.eclipse.e4.core.di.extensions.supplier@default:default,org.eclipse.e4.core.di.extensions@default:default,org.eclipse.e4.core.di@default:default,org.eclipse.e4.core.services@default:default,org.eclipse.e4.emf.xpath@default:default,org.eclipse.e4.ui.bindings@default:default,org.eclipse.e4.ui.css.core@default:default,org.eclipse.e4.ui.css.swt.theme@default:default,org.eclipse.e4.ui.css.swt@default:default,org.eclipse.e4.ui.di@default:default,org.eclipse.e4.ui.model.workbench@default:default,org.eclipse.e4.ui.services@default:default,org.eclipse.e4.ui.swt.gtk@default:false,org.eclipse.e4.ui.widgets@default:default,org.eclipse.e4.ui.workbench.addons.swt@default:default,org.eclipse.e4.ui.workbench.renderers.swt@default:default,org.eclipse.e4.ui.workbench.swt@default:default,org.eclipse.e4.ui.workbench3@default:default,org.eclipse.e4.ui.workbench@default:default,org.eclipse.emf.common.ui@default:default,org.eclipse.emf.common@default:default,org.eclipse.emf.databinding.edit@default:default,org.eclipse.emf.databinding@default:default,org.eclipse.emf.ecore.change@default:default,org.eclipse.emf.ecore.edit@default:default,org.eclipse.emf.ecore.xmi@default:default,org.eclipse.emf.ecore@default:default,org.eclipse.emf.edit.ui@default:default,org.eclipse.emf.edit@default:default,org.eclipse.emf.emfstore.client@default:default,org.eclipse.emf.emfstore.common.model@default:default,org.eclipse.emf.emfstore.common@default:default,org.eclipse.emf.emfstore.examplemodel.edit@default:default,org.eclipse.emf.emfstore.examplemodel@default:default,org.eclipse.emf.emfstore.migration@default:default,org.eclipse.emf.emfstore.server.model@default:default,org.eclipse.emf.emfstore.server@default:default,org.eclipse.equinox.app@default:default,org.eclipse.equinox.bidi@default:default,org.eclipse.equinox.common@2:true,org.eclipse.equinox.ds@1:true,org.eclipse.equinox.event@default:default,org.eclipse.equinox.http.registry@default:default,org.eclipse.equinox.jsp.jasper.registry@default:default,org.eclipse.equinox.jsp.jasper@default:default,org.eclipse.equinox.p2.core@default:default,org.eclipse.equinox.p2.engine@default:default,org.eclipse.equinox.p2.metadata.repository@default:default,org.eclipse.equinox.p2.metadata@default:default,org.eclipse.equinox.p2.repository@default:default,org.eclipse.equinox.preferences@default:default,org.eclipse.equinox.region@default:false,org.eclipse.equinox.registry@default:default,org.eclipse.equinox.security.linux.x86_64@default:false,org.eclipse.equinox.security@default:default,org.eclipse.equinox.transforms.hook@default:false,org.eclipse.equinox.weaving.hook@default:false,org.eclipse.help.base@default:default,org.eclipse.help.ui@default:default,org.eclipse.help.webapp@default:default,org.eclipse.help@default:default,org.eclipse.jface.databinding@default:default,org.eclipse.jface.text@default:default,org.eclipse.jface@default:default,org.eclipse.ltk.core.refactoring@default:default,org.eclipse.ltk.ui.refactoring@default:default,org.eclipse.net4j.util@default:default,org.eclipse.osgi.compatibility.state@default:false,org.eclipse.osgi.services@default:default,org.eclipse.osgi.util@default:default,org.eclipse.osgi@-1:true,org.eclipse.platform@default:default,org.eclipse.rcp@default:default,org.eclipse.swt.gtk.linux.x86_64@default:false,org.eclipse.swt@default:default,org.eclipse.team.core@default:default,org.eclipse.team.ui@default:default,org.eclipse.text@default:default,org.eclipse.ui.editors@default:default,org.eclipse.ui.forms@default:default,org.eclipse.ui.ide.application@default:default,org.eclipse.ui.ide@default:default,org.eclipse.ui.intro@default:default,org.eclipse.ui.navigator.resources@default:default,org.eclipse.ui.navigator@default:default,org.eclipse.ui.trace@default:default,org.eclipse.ui.views.properties.tabbed@default:default,org.eclipse.ui.views@default:default,org.eclipse.ui.workbench.texteditor@default:default,org.eclipse.ui.workbench@default:default,org.eclipse.ui@default:default,org.hamcrest.core@default:default,org.junit@default:default,org.mockito.mockito-core-hamcrest-modified@default:default,org.objenesis@default:default,org.tukaani.xz@default:default,org.w3c.css.sac@default:default"/>
+<stringAttribute key="selected_workspace_plugins" value="org.eclipse.emf.ecp.common.test@default:false,org.eclipse.emf.ecp.common.ui@default:default,org.eclipse.emf.ecp.common@default:default,org.eclipse.emf.ecp.core.test@default:false,org.eclipse.emf.ecp.core@default:default,org.eclipse.emf.ecp.edit.swt.test@default:false,org.eclipse.emf.ecp.edit.swt@default:default,org.eclipse.emf.ecp.edit@default:default,org.eclipse.emf.ecp.editor.e3@default:default,org.eclipse.emf.ecp.emfstore.core@default:default,org.eclipse.emf.ecp.explorereditorbridge@default:default,org.eclipse.emf.ecp.makeithappen.model@default:default,org.eclipse.emf.ecp.test.common@default:default,org.eclipse.emf.ecp.test.model@default:default,org.eclipse.emf.ecp.ui.view.swt.test@default:false,org.eclipse.emf.ecp.ui.view.swt@default:default,org.eclipse.emf.ecp.ui.view.test@default:default,org.eclipse.emf.ecp.ui.view@default:default,org.eclipse.emf.ecp.ui@default:default,org.eclipse.emf.ecp.view.context.tests@default:false,org.eclipse.emf.ecp.view.context@default:default,org.eclipse.emf.ecp.view.group.model@default:default,org.eclipse.emf.ecp.view.migrator@default:default,org.eclipse.emf.ecp.view.model.common.test@default:false,org.eclipse.emf.ecp.view.model.common@default:default,org.eclipse.emf.ecp.view.model.edit.test@default:false,org.eclipse.emf.ecp.view.model.edit@default:default,org.eclipse.emf.ecp.view.model.provider.generator@default:default,org.eclipse.emf.ecp.view.model.provider.xmi.test@default:false,org.eclipse.emf.ecp.view.model.provider.xmi@default:default,org.eclipse.emf.ecp.view.model.test@default:false,org.eclipse.emf.ecp.view.model@default:default,org.eclipse.emf.ecp.view.table.model.test@default:false,org.eclipse.emf.ecp.view.table.model@default:default,org.eclipse.emf.ecp.view.template.annotation.model@default:default,org.eclipse.emf.ecp.view.template.model.edit@default:default,org.eclipse.emf.ecp.view.template.model.test@default:false,org.eclipse.emf.ecp.view.template.model@default:default,org.eclipse.emf.ecp.view.test.common.swt@default:default,org.eclipse.emf.ecp.view.test.common@default:default,org.eclipse.emf.ecp.view.util.swt@default:default,org.eclipse.emf.ecp.view.validation.test@default:false,org.eclipse.emf.ecp.view.validation@default:default,org.eclipse.emf.ecp.view.vertical.model@default:default,org.eclipse.emfforms.common.prevalidation@default:default,org.eclipse.emfforms.common.tests@default:false,org.eclipse.emfforms.common.validation.tests@default:false,org.eclipse.emfforms.common.validation@default:default,org.eclipse.emfforms.common@default:default,org.eclipse.emfforms.core.bazaar.tests@default:false,org.eclipse.emfforms.core.bazaar@default:default,org.eclipse.emfforms.core.services.databinding.testmodel@default:default,org.eclipse.emfforms.core.services.datatemplate.test@default:false,org.eclipse.emfforms.core.services.datatemplate@default:default,org.eclipse.emfforms.core.services.domainexpander.default.tests@default:false,org.eclipse.emfforms.core.services.domainexpander.default@default:default,org.eclipse.emfforms.core.services.domainexpander.table@default:default,org.eclipse.emfforms.core.services.editsupport@default:default,org.eclipse.emfforms.core.services.emf.tests@default:false,org.eclipse.emfforms.core.services.emf@default:default,org.eclipse.emfforms.core.services.emfspecificservice@default:default,org.eclipse.emfforms.core.services.legacy.tests@default:false,org.eclipse.emfforms.core.services.legacy@default:default,org.eclipse.emfforms.core.services.locale.default@default:default,org.eclipse.emfforms.core.services.mappingprovider.default@default:default,org.eclipse.emfforms.core.services.mappingprovider.table.test@default:false,org.eclipse.emfforms.core.services.mappingprovider.table@default:default,org.eclipse.emfforms.core.services.structuralchange.default@default:default,org.eclipse.emfforms.core.services.structuralchange@default:default,org.eclipse.emfforms.core.services.tests@default:false,org.eclipse.emfforms.core.services@default:default,org.eclipse.emfforms.datatemplate.model@default:default,org.eclipse.emfforms.localization.tests@default:false,org.eclipse.emfforms.localization@default:default,org.eclipse.emfforms.swt.core.tests@default:false,org.eclipse.emfforms.swt.core@default:default,org.eclipse.emfforms.view.annotation.model@default:default,org.eclipse.emfforms.view.controlgrid.model@default:default"/>
+<booleanAttribute key="show_selected_only" value="false"/>
+<booleanAttribute key="tracing" value="false"/>
+<booleanAttribute key="useCustomFeatures" value="false"/>
+<booleanAttribute key="useDefaultConfig" value="true"/>
+<booleanAttribute key="useDefaultConfigArea" value="true"/>
+<booleanAttribute key="useProduct" value="true"/>
+</launchConfiguration>
diff --git a/tests/org.eclipse.emfforms.core.services.datatemplate.test/META-INF/MANIFEST.MF b/tests/org.eclipse.emfforms.core.services.datatemplate.test/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..71c8c30
--- /dev/null
+++ b/tests/org.eclipse.emfforms.core.services.datatemplate.test/META-INF/MANIFEST.MF
@@ -0,0 +1,28 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: EMFForms DataTemplate Service Tests
+Bundle-SymbolicName: org.eclipse.emfforms.core.services.datatemplate.test;singleton:=true
+Bundle-Version: 1.17.0.qualifier
+Bundle-ClassPath: .
+Fragment-Host: org.eclipse.emfforms.core.services.datatemplate;bundle-version="[1.17.0,1.18.0]"
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Export-Package: org.eclipse.emfforms.core.services.datatemplate.test;version="1.17.0";x-internal:=true,
+ org.eclipse.emfforms.core.services.datatemplate.test.model.audit;version="1.17.0";x-internal:=true,
+ org.eclipse.emfforms.core.services.datatemplate.test.model.audit.impl;version="1.17.0";x-internal:=true,
+ org.eclipse.emfforms.core.services.datatemplate.test.model.audit.util;version="1.17.0";x-internal:=true,
+ org.eclipse.emfforms.internal.core.services.datatemplate;version="1.17.0";x-internal:=true
+Bundle-Vendor: Eclipse Modeling Project
+Bundle-Localization: plugin
+Require-Bundle: org.junit;bundle-version="[4.12.0,5.0.0)",
+ org.mockito.mockito-core-hamcrest-modified;bundle-version="[1.9.5,2.0.0)",
+ org.objenesis;bundle-version="[1.0.0,2.0.0)",
+ org.eclipse.emf.ecore;bundle-version="[2.8.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.emfstore.examplemodel;bundle-version="[1.3.0,2.0.0)",
+ org.eclipse.core.runtime;bundle-version="[3.7.0,4.0.0)",
+ org.eclipse.emf.edit;bundle-version="[2.8.0,3.0.0)",
+ org.eclipse.emf.ecp.view.test.common.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecore.edit;bundle-version="[2.9.0,3.0.0)"
+Bundle-ActivationPolicy: lazy
+Import-Package: org.eclipse.swt;version="0.0.0",
+ org.eclipse.swt.widgets;version="0.0.0"
+Automatic-Module-Name: org.eclipse.emfforms.core.services.datatemplate.test
diff --git a/tests/org.eclipse.emfforms.core.services.datatemplate.test/build.properties b/tests/org.eclipse.emfforms.core.services.datatemplate.test/build.properties
new file mode 100644
index 0000000..e80d8bc
--- /dev/null
+++ b/tests/org.eclipse.emfforms.core.services.datatemplate.test/build.properties
@@ -0,0 +1,19 @@
+# Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+# EclipseSource Munich - initial API and implementation
+
+bin.includes = .,\
+               model/,\
+               META-INF/,\
+               plugin.properties,\
+               fragment.xml,\
+               templates.xmi
+jars.compile.order = .
+source.. = src/
+output.. = bin/
diff --git a/tests/org.eclipse.emfforms.core.services.datatemplate.test/fragment.xml b/tests/org.eclipse.emfforms.core.services.datatemplate.test/fragment.xml
new file mode 100644
index 0000000..b521d4f
--- /dev/null
+++ b/tests/org.eclipse.emfforms.core.services.datatemplate.test/fragment.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<!--
+-->
+
+<plugin>
+
+   <extension point="org.eclipse.emf.ecore.generated_package">
+      <!-- @generated audit -->
+      <package
+            uri="http://eclipse/org/emfforms/core/services/datatemplate/test/model/audit"
+            class="org.eclipse.emfforms.core.services.datatemplate.test.model.audit.AuditPackage"
+            genModel="model/audit.genmodel"/>
+   </extension>
+
+   <extension
+         point="org.eclipse.emfforms.core.services.datatemplate.xmi">
+      <template
+              file="templates.xmi">
+      </template>
+   </extension>
+   
+   <extension point="org.eclipse.emf.edit.itemProviderAdapterFactories">
+      <!-- Fake an Edit bundle for mocking the provision of labels. -->
+      <factory
+            uri="http://eclipse/org/emfforms/core/services/datatemplate/test/model/audit"
+            class="org.eclipse.emf.common.notify.impl.AdapterFactoryImpl"
+            supportedTypes=""/>
+   </extension>
+   
+</plugin>
diff --git a/tests/org.eclipse.emfforms.core.services.datatemplate.test/model/audit.ecore b/tests/org.eclipse.emfforms.core.services.datatemplate.test/model/audit.ecore
new file mode 100644
index 0000000..0a2c8e2
--- /dev/null
+++ b/tests/org.eclipse.emfforms.core.services.datatemplate.test/model/audit.ecore
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="audit" nsURI="http://eclipse/org/emfforms/core/services/datatemplate/test/model/audit"
+    nsPrefix="org.eclipse.emfforms.core.services.datatemplate.test.model.audit">
+  <eClassifiers xsi:type="ecore:EClass" name="User" abstract="true">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="displayName" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="login" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="password" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="delegates" upperBound="-1"
+        eType="#//RegisteredUser"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="subUsers" upperBound="-1"
+        eType="#//AbstractSubUser"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="PrivilegedUser" abstract="true" interface="true"
+      eSuperTypes="#//User"/>
+  <eClassifiers xsi:type="ecore:EClass" name="GuestUser" eSuperTypes="#//User"/>
+  <eClassifiers xsi:type="ecore:EClass" name="RegisteredUser" eSuperTypes="#//User"/>
+  <eClassifiers xsi:type="ecore:EClass" name="AdminUser" eSuperTypes="#//RegisteredUser #//PrivilegedUser"/>
+  <eClassifiers xsi:type="ecore:EClass" name="UserGroup">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="users" upperBound="-1"
+        eType="#//User"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="admins" upperBound="-1"
+        eType="#//PrivilegedUser"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="registeredUsers" upperBound="-1"
+        eType="#//RegisteredUser"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="guests" upperBound="-1"
+        eType="#//GuestUser"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="AbstractSubUser" abstract="true" eSuperTypes="#//User"/>
+</ecore:EPackage>
diff --git a/tests/org.eclipse.emfforms.core.services.datatemplate.test/model/audit.genmodel b/tests/org.eclipse.emfforms.core.services.datatemplate.test/model/audit.genmodel
new file mode 100644
index 0000000..1d0eb05
--- /dev/null
+++ b/tests/org.eclipse.emfforms.core.services.datatemplate.test/model/audit.genmodel
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<genmodel:GenModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
+    xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel" copyrightText="Copyright (c) 2011-2018 EclipseSource Muenchen GmbH and others.&#xD;&#xA;&#xD;&#xA;All rights reserved. This program and the accompanying materials&#xD;&#xA;are made available under the terms of the Eclipse Public License v1.0&#xD;&#xA;which accompanies this distribution, and is available at&#xD;&#xA;http://www.eclipse.org/legal/epl-v10.html&#xD;&#xA;&#xD;&#xA;Contributors:&#xD;&#xA;EclipseSource Munich - initial API and implementation"
+    modelDirectory="/org.eclipse.emfforms.core.services.datatemplate.test/src" modelPluginID="org.eclipse.emfforms.core.services.datatemplate.test"
+    modelName="Audit" nonNLSMarkers="true" rootExtendsClass="org.eclipse.emf.ecore.impl.MinimalEObjectImpl$Container"
+    importerID="org.eclipse.emf.importer.ecore" complianceLevel="7.0" copyrightFields="false"
+    language="" operationReflection="true" importOrganizing="true">
+  <foreignModel>audit.ecore</foreignModel>
+  <genPackages prefix="Audit" basePackage="org.eclipse.emfforms.core.services.datatemplate.test.model"
+      disposableProviderFactory="true" ecorePackage="audit.ecore#/">
+    <genClasses image="false" ecoreClass="audit.ecore#//User">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute audit.ecore#//User/displayName"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute audit.ecore#//User/login"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute audit.ecore#//User/password"/>
+      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference audit.ecore#//User/delegates"/>
+      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference audit.ecore#//User/subUsers"/>
+    </genClasses>
+    <genClasses image="false" ecoreClass="audit.ecore#//PrivilegedUser"/>
+    <genClasses ecoreClass="audit.ecore#//GuestUser"/>
+    <genClasses ecoreClass="audit.ecore#//RegisteredUser"/>
+    <genClasses ecoreClass="audit.ecore#//AdminUser"/>
+    <genClasses ecoreClass="audit.ecore#//UserGroup">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute audit.ecore#//UserGroup/name"/>
+      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference audit.ecore#//UserGroup/users"/>
+      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference audit.ecore#//UserGroup/admins"/>
+      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference audit.ecore#//UserGroup/registeredUsers"/>
+      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference audit.ecore#//UserGroup/guests"/>
+    </genClasses>
+    <genClasses image="false" ecoreClass="audit.ecore#//AbstractSubUser"/>
+  </genPackages>
+</genmodel:GenModel>
diff --git a/tests/org.eclipse.emfforms.core.services.datatemplate.test/plugin.properties b/tests/org.eclipse.emfforms.core.services.datatemplate.test/plugin.properties
new file mode 100644
index 0000000..f80eafd
--- /dev/null
+++ b/tests/org.eclipse.emfforms.core.services.datatemplate.test/plugin.properties
@@ -0,0 +1,4 @@
+#
+
+pluginName = Audit Model
+providerName = www.example.org
diff --git a/tests/org.eclipse.emfforms.core.services.datatemplate.test/pom.xml b/tests/org.eclipse.emfforms.core.services.datatemplate.test/pom.xml
new file mode 100644
index 0000000..e4c0ba2
--- /dev/null
+++ b/tests/org.eclipse.emfforms.core.services.datatemplate.test/pom.xml
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
+	xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+	<modelVersion>4.0.0</modelVersion>
+	<parent>
+		<groupId>org.eclipse.emf.ecp</groupId>
+		<artifactId>ecp-tests-parent</artifactId>
+		<version>1.17.0-SNAPSHOT</version>
+		<relativePath>../../releng/org.eclipse.emf.ecp.releng.tests/</relativePath>
+	</parent>
+	<groupId>org.eclipse.emf.ecp</groupId>
+	<artifactId>org.eclipse.emfforms.core.services.datatemplate.test</artifactId>
+	<version>1.17.0-SNAPSHOT</version>
+	<packaging>eclipse-test-plugin</packaging>
+	<build>
+		<sourceDirectory>src</sourceDirectory>
+		<plugins>
+			<plugin>
+				<groupId>org.eclipse.tycho</groupId>
+				<artifactId>tycho-surefire-plugin</artifactId>
+				<version>${tycho-version}</version>
+				<configuration>
+		          	<useUIHarness>true</useUIHarness>
+		          	<useUIThread>true</useUIThread>
+				</configuration>
+			</plugin>
+			<plugin>
+				<groupId>org.eclipse.tycho</groupId>
+				<artifactId>target-platform-configuration</artifactId>
+				<configuration>
+					<dependency-resolution>
+						<extraRequirements>
+							<requirement>
+								<type>p2-installable-unit</type>
+								<id>org.eclipse.equinox.ds</id>
+								<versionRange>0.0.0</versionRange>
+							</requirement>
+						</extraRequirements>
+					</dependency-resolution>
+				</configuration>
+			</plugin>
+		</plugins>
+	</build>
+</project>
diff --git a/tests/org.eclipse.emfforms.core.services.datatemplate.test/src/org/eclipse/emfforms/core/services/datatemplate/test/AllPluginTests.java b/tests/org.eclipse.emfforms.core.services.datatemplate.test/src/org/eclipse/emfforms/core/services/datatemplate/test/AllPluginTests.java
new file mode 100644
index 0000000..52ad79a
--- /dev/null
+++ b/tests/org.eclipse.emfforms.core.services.datatemplate.test/src/org/eclipse/emfforms/core/services/datatemplate/test/AllPluginTests.java
@@ -0,0 +1,34 @@
+/*******************************************************************************
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * Lucas Koehler - initial API and implementation
+ * Christian W. Damus - bugs 529138, 532622
+ ******************************************************************************/
+package org.eclipse.emfforms.core.services.datatemplate.test;
+
+import org.eclipse.emfforms.internal.core.services.datatemplate.BlankTemplateProvider_PTest;
+import org.eclipse.emfforms.internal.core.services.datatemplate.EClassLabelProvider_PTest;
+import org.eclipse.emfforms.internal.core.services.datatemplate.SelectSubclassAndTemplateWizard_PTest;
+import org.eclipse.emfforms.internal.core.services.datatemplate.XmiTemplateProvider_PTest;
+import org.junit.runner.RunWith;
+import org.junit.runners.Suite;
+import org.junit.runners.Suite.SuiteClasses;
+
+/**
+ * Test Suite for OSGi Tests.
+ *
+ * @author Lucas Koehler
+ *
+ */
+@RunWith(Suite.class)
+@SuiteClasses({ XmiTemplateProvider_PTest.class, SelectSubclassAndTemplateWizard_PTest.class,
+	BlankTemplateProvider_PTest.class, EClassLabelProvider_PTest.class })
+public class AllPluginTests {
+
+}
diff --git a/tests/org.eclipse.emfforms.core.services.datatemplate.test/src/org/eclipse/emfforms/core/services/datatemplate/test/AllTests.java b/tests/org.eclipse.emfforms.core.services.datatemplate.test/src/org/eclipse/emfforms/core/services/datatemplate/test/AllTests.java
new file mode 100644
index 0000000..273c548
--- /dev/null
+++ b/tests/org.eclipse.emfforms.core.services.datatemplate.test/src/org/eclipse/emfforms/core/services/datatemplate/test/AllTests.java
@@ -0,0 +1,32 @@
+/*******************************************************************************
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * Lucas Koehler - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.emfforms.core.services.datatemplate.test;
+
+import org.eclipse.emfforms.internal.core.services.datatemplate.BlankTemplateProvider_Test;
+import org.eclipse.emfforms.internal.core.services.datatemplate.TemplateCreateNewModelElementStrategyProvider_Test;
+import org.eclipse.emfforms.internal.core.services.datatemplate.XmiTemplateProvider_Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Suite;
+import org.junit.runners.Suite.SuiteClasses;
+
+/**
+ * Test Suite for Unit Tests.
+ *
+ * @author Lucas Koehler
+ *
+ */
+@RunWith(Suite.class)
+@SuiteClasses({ BlankTemplateProvider_Test.class, TemplateCreateNewModelElementStrategyProvider_Test.class,
+	XmiTemplateProvider_Test.class })
+public class AllTests {
+
+}
diff --git a/tests/org.eclipse.emfforms.core.services.datatemplate.test/src/org/eclipse/emfforms/core/services/datatemplate/test/model/audit/AbstractSubUser.java b/tests/org.eclipse.emfforms.core.services.datatemplate.test/src/org/eclipse/emfforms/core/services/datatemplate/test/model/audit/AbstractSubUser.java
new file mode 100644
index 0000000..00bb925
--- /dev/null
+++ b/tests/org.eclipse.emfforms.core.services.datatemplate.test/src/org/eclipse/emfforms/core/services/datatemplate/test/model/audit/AbstractSubUser.java
@@ -0,0 +1,26 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
+ */
+package org.eclipse.emfforms.core.services.datatemplate.test.model.audit;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Abstract Sub User</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.emfforms.core.services.datatemplate.test.model.audit.AuditPackage#getAbstractSubUser()
+ * @model abstract="true"
+ * @generated
+ */
+public interface AbstractSubUser extends User {
+} // AbstractSubUser
diff --git a/tests/org.eclipse.emfforms.core.services.datatemplate.test/src/org/eclipse/emfforms/core/services/datatemplate/test/model/audit/AdminUser.java b/tests/org.eclipse.emfforms.core.services.datatemplate.test/src/org/eclipse/emfforms/core/services/datatemplate/test/model/audit/AdminUser.java
new file mode 100644
index 0000000..cab3e96
--- /dev/null
+++ b/tests/org.eclipse.emfforms.core.services.datatemplate.test/src/org/eclipse/emfforms/core/services/datatemplate/test/model/audit/AdminUser.java
@@ -0,0 +1,25 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
+ */
+package org.eclipse.emfforms.core.services.datatemplate.test.model.audit;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Admin User</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.emfforms.core.services.datatemplate.test.model.audit.AuditPackage#getAdminUser()
+ * @model
+ * @generated
+ */
+public interface AdminUser extends RegisteredUser, PrivilegedUser {
+} // AdminUser
diff --git a/tests/org.eclipse.emfforms.core.services.datatemplate.test/src/org/eclipse/emfforms/core/services/datatemplate/test/model/audit/AuditFactory.java b/tests/org.eclipse.emfforms.core.services.datatemplate.test/src/org/eclipse/emfforms/core/services/datatemplate/test/model/audit/AuditFactory.java
new file mode 100644
index 0000000..11f51c7
--- /dev/null
+++ b/tests/org.eclipse.emfforms.core.services.datatemplate.test/src/org/eclipse/emfforms/core/services/datatemplate/test/model/audit/AuditFactory.java
@@ -0,0 +1,78 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
+ */
+package org.eclipse.emfforms.core.services.datatemplate.test.model.audit;
+
+import org.eclipse.emf.ecore.EFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Factory</b> for the model.
+ * It provides a create method for each non-abstract class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.emfforms.core.services.datatemplate.test.model.audit.AuditPackage
+ * @generated
+ */
+public interface AuditFactory extends EFactory {
+	/**
+	 * The singleton instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	AuditFactory eINSTANCE = org.eclipse.emfforms.core.services.datatemplate.test.model.audit.impl.AuditFactoryImpl.init();
+
+	/**
+	 * Returns a new object of class '<em>Guest User</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Guest User</em>'.
+	 * @generated
+	 */
+	GuestUser createGuestUser();
+
+	/**
+	 * Returns a new object of class '<em>Registered User</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Registered User</em>'.
+	 * @generated
+	 */
+	RegisteredUser createRegisteredUser();
+
+	/**
+	 * Returns a new object of class '<em>Admin User</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Admin User</em>'.
+	 * @generated
+	 */
+	AdminUser createAdminUser();
+
+	/**
+	 * Returns a new object of class '<em>User Group</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>User Group</em>'.
+	 * @generated
+	 */
+	UserGroup createUserGroup();
+
+	/**
+	 * Returns the package supported by this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the package supported by this factory.
+	 * @generated
+	 */
+	AuditPackage getAuditPackage();
+
+} // AuditFactory
diff --git a/tests/org.eclipse.emfforms.core.services.datatemplate.test/src/org/eclipse/emfforms/core/services/datatemplate/test/model/audit/AuditPackage.java b/tests/org.eclipse.emfforms.core.services.datatemplate.test/src/org/eclipse/emfforms/core/services/datatemplate/test/model/audit/AuditPackage.java
new file mode 100644
index 0000000..d8039acf
--- /dev/null
+++ b/tests/org.eclipse.emfforms.core.services.datatemplate.test/src/org/eclipse/emfforms/core/services/datatemplate/test/model/audit/AuditPackage.java
@@ -0,0 +1,1081 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
+ * Christian W. Damus - bug 529138
+ */
+package org.eclipse.emfforms.core.services.datatemplate.test.model.audit;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Package</b> for the model.
+ * It contains accessors for the meta objects to represent
+ * <ul>
+ * <li>each class,</li>
+ * <li>each feature of each class,</li>
+ * <li>each operation of each class,</li>
+ * <li>each enum,</li>
+ * <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * 
+ * @see org.eclipse.emfforms.core.services.datatemplate.test.model.audit.AuditFactory
+ * @model kind="package"
+ * @generated
+ */
+public interface AuditPackage extends EPackage {
+	/**
+	 * The package name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	String eNAME = "audit"; //$NON-NLS-1$
+
+	/**
+	 * The package namespace URI.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	String eNS_URI = "http://eclipse/org/emfforms/core/services/datatemplate/test/model/audit"; //$NON-NLS-1$
+
+	/**
+	 * The package namespace name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	String eNS_PREFIX = "org.eclipse.emfforms.core.services.datatemplate.test.model.audit"; //$NON-NLS-1$
+
+	/**
+	 * The singleton instance of the package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	AuditPackage eINSTANCE = org.eclipse.emfforms.core.services.datatemplate.test.model.audit.impl.AuditPackageImpl
+		.init();
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.emfforms.core.services.datatemplate.test.model.audit.impl.UserImpl
+	 * <em>User</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see org.eclipse.emfforms.core.services.datatemplate.test.model.audit.impl.UserImpl
+	 * @see org.eclipse.emfforms.core.services.datatemplate.test.model.audit.impl.AuditPackageImpl#getUser()
+	 * @generated
+	 */
+	int USER = 0;
+
+	/**
+	 * The feature id for the '<em><b>Display Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int USER__DISPLAY_NAME = 0;
+
+	/**
+	 * The feature id for the '<em><b>Login</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int USER__LOGIN = 1;
+
+	/**
+	 * The feature id for the '<em><b>Password</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int USER__PASSWORD = 2;
+
+	/**
+	 * The feature id for the '<em><b>Delegates</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int USER__DELEGATES = 3;
+
+	/**
+	 * The feature id for the '<em><b>Sub Users</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int USER__SUB_USERS = 4;
+
+	/**
+	 * The number of structural features of the '<em>User</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int USER_FEATURE_COUNT = 5;
+
+	/**
+	 * The number of operations of the '<em>User</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int USER_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the
+	 * '{@link org.eclipse.emfforms.core.services.datatemplate.test.model.audit.PrivilegedUser <em>Privileged
+	 * User</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see org.eclipse.emfforms.core.services.datatemplate.test.model.audit.PrivilegedUser
+	 * @see org.eclipse.emfforms.core.services.datatemplate.test.model.audit.impl.AuditPackageImpl#getPrivilegedUser()
+	 * @generated
+	 */
+	int PRIVILEGED_USER = 1;
+
+	/**
+	 * The feature id for the '<em><b>Display Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int PRIVILEGED_USER__DISPLAY_NAME = USER__DISPLAY_NAME;
+
+	/**
+	 * The feature id for the '<em><b>Login</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int PRIVILEGED_USER__LOGIN = USER__LOGIN;
+
+	/**
+	 * The feature id for the '<em><b>Password</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int PRIVILEGED_USER__PASSWORD = USER__PASSWORD;
+
+	/**
+	 * The feature id for the '<em><b>Delegates</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int PRIVILEGED_USER__DELEGATES = USER__DELEGATES;
+
+	/**
+	 * The feature id for the '<em><b>Sub Users</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int PRIVILEGED_USER__SUB_USERS = USER__SUB_USERS;
+
+	/**
+	 * The number of structural features of the '<em>Privileged User</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int PRIVILEGED_USER_FEATURE_COUNT = USER_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>Privileged User</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int PRIVILEGED_USER_OPERATION_COUNT = USER_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the
+	 * '{@link org.eclipse.emfforms.core.services.datatemplate.test.model.audit.impl.GuestUserImpl <em>Guest User</em>}'
+	 * class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see org.eclipse.emfforms.core.services.datatemplate.test.model.audit.impl.GuestUserImpl
+	 * @see org.eclipse.emfforms.core.services.datatemplate.test.model.audit.impl.AuditPackageImpl#getGuestUser()
+	 * @generated
+	 */
+	int GUEST_USER = 2;
+
+	/**
+	 * The feature id for the '<em><b>Display Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int GUEST_USER__DISPLAY_NAME = USER__DISPLAY_NAME;
+
+	/**
+	 * The feature id for the '<em><b>Login</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int GUEST_USER__LOGIN = USER__LOGIN;
+
+	/**
+	 * The feature id for the '<em><b>Password</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int GUEST_USER__PASSWORD = USER__PASSWORD;
+
+	/**
+	 * The feature id for the '<em><b>Delegates</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int GUEST_USER__DELEGATES = USER__DELEGATES;
+
+	/**
+	 * The feature id for the '<em><b>Sub Users</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int GUEST_USER__SUB_USERS = USER__SUB_USERS;
+
+	/**
+	 * The number of structural features of the '<em>Guest User</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int GUEST_USER_FEATURE_COUNT = USER_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>Guest User</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int GUEST_USER_OPERATION_COUNT = USER_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the
+	 * '{@link org.eclipse.emfforms.core.services.datatemplate.test.model.audit.impl.RegisteredUserImpl <em>Registered
+	 * User</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see org.eclipse.emfforms.core.services.datatemplate.test.model.audit.impl.RegisteredUserImpl
+	 * @see org.eclipse.emfforms.core.services.datatemplate.test.model.audit.impl.AuditPackageImpl#getRegisteredUser()
+	 * @generated
+	 */
+	int REGISTERED_USER = 3;
+
+	/**
+	 * The feature id for the '<em><b>Display Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int REGISTERED_USER__DISPLAY_NAME = USER__DISPLAY_NAME;
+
+	/**
+	 * The feature id for the '<em><b>Login</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int REGISTERED_USER__LOGIN = USER__LOGIN;
+
+	/**
+	 * The feature id for the '<em><b>Password</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int REGISTERED_USER__PASSWORD = USER__PASSWORD;
+
+	/**
+	 * The feature id for the '<em><b>Delegates</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int REGISTERED_USER__DELEGATES = USER__DELEGATES;
+
+	/**
+	 * The feature id for the '<em><b>Sub Users</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int REGISTERED_USER__SUB_USERS = USER__SUB_USERS;
+
+	/**
+	 * The number of structural features of the '<em>Registered User</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int REGISTERED_USER_FEATURE_COUNT = USER_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>Registered User</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int REGISTERED_USER_OPERATION_COUNT = USER_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the
+	 * '{@link org.eclipse.emfforms.core.services.datatemplate.test.model.audit.impl.AdminUserImpl <em>Admin User</em>}'
+	 * class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see org.eclipse.emfforms.core.services.datatemplate.test.model.audit.impl.AdminUserImpl
+	 * @see org.eclipse.emfforms.core.services.datatemplate.test.model.audit.impl.AuditPackageImpl#getAdminUser()
+	 * @generated
+	 */
+	int ADMIN_USER = 4;
+
+	/**
+	 * The feature id for the '<em><b>Display Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int ADMIN_USER__DISPLAY_NAME = REGISTERED_USER__DISPLAY_NAME;
+
+	/**
+	 * The feature id for the '<em><b>Login</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int ADMIN_USER__LOGIN = REGISTERED_USER__LOGIN;
+
+	/**
+	 * The feature id for the '<em><b>Password</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int ADMIN_USER__PASSWORD = REGISTERED_USER__PASSWORD;
+
+	/**
+	 * The feature id for the '<em><b>Delegates</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int ADMIN_USER__DELEGATES = REGISTERED_USER__DELEGATES;
+
+	/**
+	 * The feature id for the '<em><b>Sub Users</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int ADMIN_USER__SUB_USERS = REGISTERED_USER__SUB_USERS;
+
+	/**
+	 * The number of structural features of the '<em>Admin User</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int ADMIN_USER_FEATURE_COUNT = REGISTERED_USER_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>Admin User</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int ADMIN_USER_OPERATION_COUNT = REGISTERED_USER_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the
+	 * '{@link org.eclipse.emfforms.core.services.datatemplate.test.model.audit.impl.UserGroupImpl <em>User Group</em>}'
+	 * class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see org.eclipse.emfforms.core.services.datatemplate.test.model.audit.impl.UserGroupImpl
+	 * @see org.eclipse.emfforms.core.services.datatemplate.test.model.audit.impl.AuditPackageImpl#getUserGroup()
+	 * @generated
+	 */
+	int USER_GROUP = 5;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int USER_GROUP__NAME = 0;
+
+	/**
+	 * The feature id for the '<em><b>Users</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int USER_GROUP__USERS = 1;
+
+	/**
+	 * The feature id for the '<em><b>Admins</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int USER_GROUP__ADMINS = 2;
+
+	/**
+	 * The feature id for the '<em><b>Registered Users</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int USER_GROUP__REGISTERED_USERS = 3;
+
+	/**
+	 * The feature id for the '<em><b>Guests</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int USER_GROUP__GUESTS = 4;
+
+	/**
+	 * The number of structural features of the '<em>User Group</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int USER_GROUP_FEATURE_COUNT = 5;
+
+	/**
+	 * The number of operations of the '<em>User Group</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int USER_GROUP_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the
+	 * '{@link org.eclipse.emfforms.core.services.datatemplate.test.model.audit.impl.AbstractSubUserImpl <em>Abstract
+	 * Sub User</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see org.eclipse.emfforms.core.services.datatemplate.test.model.audit.impl.AbstractSubUserImpl
+	 * @see org.eclipse.emfforms.core.services.datatemplate.test.model.audit.impl.AuditPackageImpl#getAbstractSubUser()
+	 * @generated
+	 */
+	int ABSTRACT_SUB_USER = 6;
+
+	/**
+	 * The feature id for the '<em><b>Display Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int ABSTRACT_SUB_USER__DISPLAY_NAME = USER__DISPLAY_NAME;
+
+	/**
+	 * The feature id for the '<em><b>Login</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int ABSTRACT_SUB_USER__LOGIN = USER__LOGIN;
+
+	/**
+	 * The feature id for the '<em><b>Password</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int ABSTRACT_SUB_USER__PASSWORD = USER__PASSWORD;
+
+	/**
+	 * The feature id for the '<em><b>Delegates</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int ABSTRACT_SUB_USER__DELEGATES = USER__DELEGATES;
+
+	/**
+	 * The feature id for the '<em><b>Sub Users</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int ABSTRACT_SUB_USER__SUB_USERS = USER__SUB_USERS;
+
+	/**
+	 * The number of structural features of the '<em>Abstract Sub User</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int ABSTRACT_SUB_USER_FEATURE_COUNT = USER_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>Abstract Sub User</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 */
+	int ABSTRACT_SUB_USER_OPERATION_COUNT = USER_OPERATION_COUNT + 0;
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.emfforms.core.services.datatemplate.test.model.audit.User
+	 * <em>User</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for class '<em>User</em>'.
+	 * @see org.eclipse.emfforms.core.services.datatemplate.test.model.audit.User
+	 * @generated
+	 */
+	EClass getUser();
+
+	/**
+	 * Returns the meta object for the attribute
+	 * '{@link org.eclipse.emfforms.core.services.datatemplate.test.model.audit.User#getDisplayName <em>Display
+	 * Name</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for the attribute '<em>Display Name</em>'.
+	 * @see org.eclipse.emfforms.core.services.datatemplate.test.model.audit.User#getDisplayName()
+	 * @see #getUser()
+	 * @generated
+	 */
+	EAttribute getUser_DisplayName();
+
+	/**
+	 * Returns the meta object for the attribute
+	 * '{@link org.eclipse.emfforms.core.services.datatemplate.test.model.audit.User#getLogin <em>Login</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for the attribute '<em>Login</em>'.
+	 * @see org.eclipse.emfforms.core.services.datatemplate.test.model.audit.User#getLogin()
+	 * @see #getUser()
+	 * @generated
+	 */
+	EAttribute getUser_Login();
+
+	/**
+	 * Returns the meta object for the attribute
+	 * '{@link org.eclipse.emfforms.core.services.datatemplate.test.model.audit.User#getPassword <em>Password</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for the attribute '<em>Password</em>'.
+	 * @see org.eclipse.emfforms.core.services.datatemplate.test.model.audit.User#getPassword()
+	 * @see #getUser()
+	 * @generated
+	 */
+	EAttribute getUser_Password();
+
+	/**
+	 * Returns the meta object for the reference list
+	 * '{@link org.eclipse.emfforms.core.services.datatemplate.test.model.audit.User#getDelegates <em>Delegates</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for the reference list '<em>Delegates</em>'.
+	 * @see org.eclipse.emfforms.core.services.datatemplate.test.model.audit.User#getDelegates()
+	 * @see #getUser()
+	 * @generated
+	 */
+	EReference getUser_Delegates();
+
+	/**
+	 * Returns the meta object for the reference list
+	 * '{@link org.eclipse.emfforms.core.services.datatemplate.test.model.audit.User#getSubUsers <em>Sub Users</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for the reference list '<em>Sub Users</em>'.
+	 * @see org.eclipse.emfforms.core.services.datatemplate.test.model.audit.User#getSubUsers()
+	 * @see #getUser()
+	 * @generated
+	 */
+	EReference getUser_SubUsers();
+
+	/**
+	 * Returns the meta object for class
+	 * '{@link org.eclipse.emfforms.core.services.datatemplate.test.model.audit.PrivilegedUser <em>Privileged
+	 * User</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for class '<em>Privileged User</em>'.
+	 * @see org.eclipse.emfforms.core.services.datatemplate.test.model.audit.PrivilegedUser
+	 * @generated
+	 */
+	EClass getPrivilegedUser();
+
+	/**
+	 * Returns the meta object for class
+	 * '{@link org.eclipse.emfforms.core.services.datatemplate.test.model.audit.GuestUser <em>Guest User</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for class '<em>Guest User</em>'.
+	 * @see org.eclipse.emfforms.core.services.datatemplate.test.model.audit.GuestUser
+	 * @generated
+	 */
+	EClass getGuestUser();
+
+	/**
+	 * Returns the meta object for class
+	 * '{@link org.eclipse.emfforms.core.services.datatemplate.test.model.audit.RegisteredUser <em>Registered
+	 * User</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for class '<em>Registered User</em>'.
+	 * @see org.eclipse.emfforms.core.services.datatemplate.test.model.audit.RegisteredUser
+	 * @generated
+	 */
+	EClass getRegisteredUser();
+
+	/**
+	 * Returns the meta object for class
+	 * '{@link org.eclipse.emfforms.core.services.datatemplate.test.model.audit.AdminUser <em>Admin User</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for class '<em>Admin User</em>'.
+	 * @see org.eclipse.emfforms.core.services.datatemplate.test.model.audit.AdminUser
+	 * @generated
+	 */
+	EClass getAdminUser();
+
+	/**
+	 * Returns the meta object for class
+	 * '{@link org.eclipse.emfforms.core.services.datatemplate.test.model.audit.UserGroup <em>User Group</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for class '<em>User Group</em>'.
+	 * @see org.eclipse.emfforms.core.services.datatemplate.test.model.audit.UserGroup
+	 * @generated
+	 */
+	EClass getUserGroup();
+
+	/**
+	 * Returns the meta object for the attribute
+	 * '{@link org.eclipse.emfforms.core.services.datatemplate.test.model.audit.UserGroup#getName <em>Name</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for the attribute '<em>Name</em>'.
+	 * @see org.eclipse.emfforms.core.services.datatemplate.test.model.audit.UserGroup#getName()
+	 * @see #getUserGroup()
+	 * @generated
+	 */
+	EAttribute getUserGroup_Name();
+
+	/**
+	 * Returns the meta object for the reference list
+	 * '{@link org.eclipse.emfforms.core.services.datatemplate.test.model.audit.UserGroup#getUsers <em>Users</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for the reference list '<em>Users</em>'.
+	 * @see org.eclipse.emfforms.core.services.datatemplate.test.model.audit.UserGroup#getUsers()
+	 * @see #getUserGroup()
+	 * @generated
+	 */
+	EReference getUserGroup_Users();
+
+	/**
+	 * Returns the meta object for the reference list
+	 * '{@link org.eclipse.emfforms.core.services.datatemplate.test.model.audit.UserGroup#getAdmins <em>Admins</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for the reference list '<em>Admins</em>'.
+	 * @see org.eclipse.emfforms.core.services.datatemplate.test.model.audit.UserGroup#getAdmins()
+	 * @see #getUserGroup()
+	 * @generated
+	 */
+	EReference getUserGroup_Admins();
+
+	/**
+	 * Returns the meta object for the reference list
+	 * '{@link org.eclipse.emfforms.core.services.datatemplate.test.model.audit.UserGroup#getRegisteredUsers
+	 * <em>Registered Users</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for the reference list '<em>Registered Users</em>'.
+	 * @see org.eclipse.emfforms.core.services.datatemplate.test.model.audit.UserGroup#getRegisteredUsers()
+	 * @see #getUserGroup()
+	 * @generated
+	 */
+	EReference getUserGroup_RegisteredUsers();
+
+	/**
+	 * Returns the meta object for the reference list
+	 * '{@link org.eclipse.emfforms.core.services.datatemplate.test.model.audit.UserGroup#getGuests <em>Guests</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for the reference list '<em>Guests</em>'.
+	 * @see org.eclipse.emfforms.core.services.datatemplate.test.model.audit.UserGroup#getGuests()
+	 * @see #getUserGroup()
+	 * @generated
+	 */
+	EReference getUserGroup_Guests();
+
+	/**
+	 * Returns the meta object for class
+	 * '{@link org.eclipse.emfforms.core.services.datatemplate.test.model.audit.AbstractSubUser <em>Abstract Sub
+	 * User</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for class '<em>Abstract Sub User</em>'.
+	 * @see org.eclipse.emfforms.core.services.datatemplate.test.model.audit.AbstractSubUser
+	 * @generated
+	 */
+	EClass getAbstractSubUser();
+
+	/**
+	 * 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.
+	 * @generated
+	 */
+	AuditFactory getAuditFactory();
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * Defines literals for the meta objects that represent
+	 * <ul>
+	 * <li>each class,</li>
+	 * <li>each feature of each class,</li>
+	 * <li>each operation of each class,</li>
+	 * <li>each enum,</li>
+	 * <li>and each data type</li>
+	 * </ul>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	interface Literals {
+		/**
+		 * The meta object literal for the
+		 * '{@link org.eclipse.emfforms.core.services.datatemplate.test.model.audit.impl.UserImpl <em>User</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * 
+		 * @see org.eclipse.emfforms.core.services.datatemplate.test.model.audit.impl.UserImpl
+		 * @see org.eclipse.emfforms.core.services.datatemplate.test.model.audit.impl.AuditPackageImpl#getUser()
+		 * @generated
+		 */
+		EClass USER = eINSTANCE.getUser();
+
+		/**
+		 * The meta object literal for the '<em><b>Display Name</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * 
+		 * @generated
+		 */
+		EAttribute USER__DISPLAY_NAME = eINSTANCE.getUser_DisplayName();
+
+		/**
+		 * The meta object literal for the '<em><b>Login</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * 
+		 * @generated
+		 */
+		EAttribute USER__LOGIN = eINSTANCE.getUser_Login();
+
+		/**
+		 * The meta object literal for the '<em><b>Password</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * 
+		 * @generated
+		 */
+		EAttribute USER__PASSWORD = eINSTANCE.getUser_Password();
+
+		/**
+		 * The meta object literal for the '<em><b>Delegates</b></em>' reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * 
+		 * @generated
+		 */
+		EReference USER__DELEGATES = eINSTANCE.getUser_Delegates();
+
+		/**
+		 * The meta object literal for the '<em><b>Sub Users</b></em>' reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * 
+		 * @generated
+		 */
+		EReference USER__SUB_USERS = eINSTANCE.getUser_SubUsers();
+
+		/**
+		 * The meta object literal for the
+		 * '{@link org.eclipse.emfforms.core.services.datatemplate.test.model.audit.PrivilegedUser <em>Privileged
+		 * User</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * 
+		 * @see org.eclipse.emfforms.core.services.datatemplate.test.model.audit.PrivilegedUser
+		 * @see org.eclipse.emfforms.core.services.datatemplate.test.model.audit.impl.AuditPackageImpl#getPrivilegedUser()
+		 * @generated
+		 */
+		EClass PRIVILEGED_USER = eINSTANCE.getPrivilegedUser();
+
+		/**
+		 * The meta object literal for the
+		 * '{@link org.eclipse.emfforms.core.services.datatemplate.test.model.audit.impl.GuestUserImpl <em>Guest
+		 * User</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * 
+		 * @see org.eclipse.emfforms.core.services.datatemplate.test.model.audit.impl.GuestUserImpl
+		 * @see org.eclipse.emfforms.core.services.datatemplate.test.model.audit.impl.AuditPackageImpl#getGuestUser()
+		 * @generated
+		 */
+		EClass GUEST_USER = eINSTANCE.getGuestUser();
+
+		/**
+		 * The meta object literal for the
+		 * '{@link org.eclipse.emfforms.core.services.datatemplate.test.model.audit.impl.RegisteredUserImpl
+		 * <em>Registered User</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * 
+		 * @see org.eclipse.emfforms.core.services.datatemplate.test.model.audit.impl.RegisteredUserImpl
+		 * @see org.eclipse.emfforms.core.services.datatemplate.test.model.audit.impl.AuditPackageImpl#getRegisteredUser()
+		 * @generated
+		 */
+		EClass REGISTERED_USER = eINSTANCE.getRegisteredUser();
+
+		/**
+		 * The meta object literal for the
+		 * '{@link org.eclipse.emfforms.core.services.datatemplate.test.model.audit.impl.AdminUserImpl <em>Admin
+		 * User</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * 
+		 * @see org.eclipse.emfforms.core.services.datatemplate.test.model.audit.impl.AdminUserImpl
+		 * @see org.eclipse.emfforms.core.services.datatemplate.test.model.audit.impl.AuditPackageImpl#getAdminUser()
+		 * @generated
+		 */
+		EClass ADMIN_USER = eINSTANCE.getAdminUser();
+
+		/**
+		 * The meta object literal for the
+		 * '{@link org.eclipse.emfforms.core.services.datatemplate.test.model.audit.impl.UserGroupImpl <em>User
+		 * Group</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * 
+		 * @see org.eclipse.emfforms.core.services.datatemplate.test.model.audit.impl.UserGroupImpl
+		 * @see org.eclipse.emfforms.core.services.datatemplate.test.model.audit.impl.AuditPackageImpl#getUserGroup()
+		 * @generated
+		 */
+		EClass USER_GROUP = eINSTANCE.getUserGroup();
+
+		/**
+		 * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * 
+		 * @generated
+		 */
+		EAttribute USER_GROUP__NAME = eINSTANCE.getUserGroup_Name();
+
+		/**
+		 * The meta object literal for the '<em><b>Users</b></em>' reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * 
+		 * @generated
+		 */
+		EReference USER_GROUP__USERS = eINSTANCE.getUserGroup_Users();
+
+		/**
+		 * The meta object literal for the '<em><b>Admins</b></em>' reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * 
+		 * @generated
+		 */
+		EReference USER_GROUP__ADMINS = eINSTANCE.getUserGroup_Admins();
+
+		/**
+		 * The meta object literal for the '<em><b>Registered Users</b></em>' reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * 
+		 * @generated
+		 */
+		EReference USER_GROUP__REGISTERED_USERS = eINSTANCE.getUserGroup_RegisteredUsers();
+
+		/**
+		 * The meta object literal for the '<em><b>Guests</b></em>' reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * 
+		 * @generated
+		 */
+		EReference USER_GROUP__GUESTS = eINSTANCE.getUserGroup_Guests();
+
+		/**
+		 * The meta object literal for the
+		 * '{@link org.eclipse.emfforms.core.services.datatemplate.test.model.audit.impl.AbstractSubUserImpl
+		 * <em>Abstract Sub User</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * 
+		 * @see org.eclipse.emfforms.core.services.datatemplate.test.model.audit.impl.AbstractSubUserImpl
+		 * @see org.eclipse.emfforms.core.services.datatemplate.test.model.audit.impl.AuditPackageImpl#getAbstractSubUser()
+		 * @generated
+		 */
+		EClass ABSTRACT_SUB_USER = eINSTANCE.getAbstractSubUser();
+
+	}
+
+} // AuditPackage
diff --git a/tests/org.eclipse.emfforms.core.services.datatemplate.test/src/org/eclipse/emfforms/core/services/datatemplate/test/model/audit/GuestUser.java b/tests/org.eclipse.emfforms.core.services.datatemplate.test/src/org/eclipse/emfforms/core/services/datatemplate/test/model/audit/GuestUser.java
new file mode 100644
index 0000000..a1e0d4d
--- /dev/null
+++ b/tests/org.eclipse.emfforms.core.services.datatemplate.test/src/org/eclipse/emfforms/core/services/datatemplate/test/model/audit/GuestUser.java
@@ -0,0 +1,25 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
+ */
+package org.eclipse.emfforms.core.services.datatemplate.test.model.audit;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Guest User</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.emfforms.core.services.datatemplate.test.model.audit.AuditPackage#getGuestUser()
+ * @model
+ * @generated
+ */
+public interface GuestUser extends User {
+} // GuestUser
diff --git a/tests/org.eclipse.emfforms.core.services.datatemplate.test/src/org/eclipse/emfforms/core/services/datatemplate/test/model/audit/PrivilegedUser.java b/tests/org.eclipse.emfforms.core.services.datatemplate.test/src/org/eclipse/emfforms/core/services/datatemplate/test/model/audit/PrivilegedUser.java
new file mode 100644
index 0000000..fdc8f5e
--- /dev/null
+++ b/tests/org.eclipse.emfforms.core.services.datatemplate.test/src/org/eclipse/emfforms/core/services/datatemplate/test/model/audit/PrivilegedUser.java
@@ -0,0 +1,25 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
+ */
+package org.eclipse.emfforms.core.services.datatemplate.test.model.audit;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Privileged User</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.emfforms.core.services.datatemplate.test.model.audit.AuditPackage#getPrivilegedUser()
+ * @model interface="true" abstract="true"
+ * @generated
+ */
+public interface PrivilegedUser extends User {
+} // PrivilegedUser
diff --git a/tests/org.eclipse.emfforms.core.services.datatemplate.test/src/org/eclipse/emfforms/core/services/datatemplate/test/model/audit/RegisteredUser.java b/tests/org.eclipse.emfforms.core.services.datatemplate.test/src/org/eclipse/emfforms/core/services/datatemplate/test/model/audit/RegisteredUser.java
new file mode 100644
index 0000000..bde1482
--- /dev/null
+++ b/tests/org.eclipse.emfforms.core.services.datatemplate.test/src/org/eclipse/emfforms/core/services/datatemplate/test/model/audit/RegisteredUser.java
@@ -0,0 +1,25 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
+ */
+package org.eclipse.emfforms.core.services.datatemplate.test.model.audit;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Registered User</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.emfforms.core.services.datatemplate.test.model.audit.AuditPackage#getRegisteredUser()
+ * @model
+ * @generated
+ */
+public interface RegisteredUser extends User {
+} // RegisteredUser
diff --git a/tests/org.eclipse.emfforms.core.services.datatemplate.test/src/org/eclipse/emfforms/core/services/datatemplate/test/model/audit/User.java b/tests/org.eclipse.emfforms.core.services.datatemplate.test/src/org/eclipse/emfforms/core/services/datatemplate/test/model/audit/User.java
new file mode 100644
index 0000000..2bbc7fb
--- /dev/null
+++ b/tests/org.eclipse.emfforms.core.services.datatemplate.test/src/org/eclipse/emfforms/core/services/datatemplate/test/model/audit/User.java
@@ -0,0 +1,151 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
+ * Christian W. Damus - bug 529138
+ */
+package org.eclipse.emfforms.core.services.datatemplate.test.model.audit;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>User</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.emfforms.core.services.datatemplate.test.model.audit.User#getDisplayName <em>Display Name</em>}</li>
+ *   <li>{@link org.eclipse.emfforms.core.services.datatemplate.test.model.audit.User#getLogin <em>Login</em>}</li>
+ *   <li>{@link org.eclipse.emfforms.core.services.datatemplate.test.model.audit.User#getPassword <em>Password</em>}</li>
+ *   <li>{@link org.eclipse.emfforms.core.services.datatemplate.test.model.audit.User#getDelegates <em>Delegates</em>}</li>
+ *   <li>{@link org.eclipse.emfforms.core.services.datatemplate.test.model.audit.User#getSubUsers <em>Sub Users</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.emfforms.core.services.datatemplate.test.model.audit.AuditPackage#getUser()
+ * @model abstract="true"
+ * @generated
+ */
+public interface User extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Display Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Display Name</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Display Name</em>' attribute.
+	 * @see #setDisplayName(String)
+	 * @see org.eclipse.emfforms.core.services.datatemplate.test.model.audit.AuditPackage#getUser_DisplayName()
+	 * @model
+	 * @generated
+	 */
+	String getDisplayName();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.emfforms.core.services.datatemplate.test.model.audit.User#getDisplayName <em>Display Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Display Name</em>' attribute.
+	 * @see #getDisplayName()
+	 * @generated
+	 */
+	void setDisplayName(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Login</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Login</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Login</em>' attribute.
+	 * @see #setLogin(String)
+	 * @see org.eclipse.emfforms.core.services.datatemplate.test.model.audit.AuditPackage#getUser_Login()
+	 * @model
+	 * @generated
+	 */
+	String getLogin();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.emfforms.core.services.datatemplate.test.model.audit.User#getLogin <em>Login</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Login</em>' attribute.
+	 * @see #getLogin()
+	 * @generated
+	 */
+	void setLogin(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Password</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Password</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Password</em>' attribute.
+	 * @see #setPassword(String)
+	 * @see org.eclipse.emfforms.core.services.datatemplate.test.model.audit.AuditPackage#getUser_Password()
+	 * @model
+	 * @generated
+	 */
+	String getPassword();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.emfforms.core.services.datatemplate.test.model.audit.User#getPassword <em>Password</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Password</em>' attribute.
+	 * @see #getPassword()
+	 * @generated
+	 */
+	void setPassword(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Delegates</b></em>' reference list.
+	 * The list contents are of type {@link org.eclipse.emfforms.core.services.datatemplate.test.model.audit.RegisteredUser}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Delegates</em>' reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Delegates</em>' reference list.
+	 * @see org.eclipse.emfforms.core.services.datatemplate.test.model.audit.AuditPackage#getUser_Delegates()
+	 * @model
+	 * @generated
+	 */
+	EList<RegisteredUser> getDelegates();
+
+	/**
+	 * Returns the value of the '<em><b>Sub Users</b></em>' reference list.
+	 * The list contents are of type
+	 * {@link org.eclipse.emfforms.core.services.datatemplate.test.model.audit.AbstractSubUser}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Sub Users</em>' reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * 
+	 * @return the value of the '<em>Sub Users</em>' reference list.
+	 * @see org.eclipse.emfforms.core.services.datatemplate.test.model.audit.AuditPackage#getUser_SubUsers()
+	 * @model
+	 * @generated
+	 */
+	EList<AbstractSubUser> getSubUsers();
+
+} // User
diff --git a/tests/org.eclipse.emfforms.core.services.datatemplate.test/src/org/eclipse/emfforms/core/services/datatemplate/test/model/audit/UserGroup.java b/tests/org.eclipse.emfforms.core.services.datatemplate.test/src/org/eclipse/emfforms/core/services/datatemplate/test/model/audit/UserGroup.java
new file mode 100644
index 0000000..ed74d84
--- /dev/null
+++ b/tests/org.eclipse.emfforms.core.services.datatemplate.test/src/org/eclipse/emfforms/core/services/datatemplate/test/model/audit/UserGroup.java
@@ -0,0 +1,128 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
+ */
+package org.eclipse.emfforms.core.services.datatemplate.test.model.audit;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>User Group</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.emfforms.core.services.datatemplate.test.model.audit.UserGroup#getName <em>Name</em>}</li>
+ *   <li>{@link org.eclipse.emfforms.core.services.datatemplate.test.model.audit.UserGroup#getUsers <em>Users</em>}</li>
+ *   <li>{@link org.eclipse.emfforms.core.services.datatemplate.test.model.audit.UserGroup#getAdmins <em>Admins</em>}</li>
+ *   <li>{@link org.eclipse.emfforms.core.services.datatemplate.test.model.audit.UserGroup#getRegisteredUsers <em>Registered Users</em>}</li>
+ *   <li>{@link org.eclipse.emfforms.core.services.datatemplate.test.model.audit.UserGroup#getGuests <em>Guests</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.emfforms.core.services.datatemplate.test.model.audit.AuditPackage#getUserGroup()
+ * @model
+ * @generated
+ */
+public interface UserGroup extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Name</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Name</em>' attribute.
+	 * @see #setName(String)
+	 * @see org.eclipse.emfforms.core.services.datatemplate.test.model.audit.AuditPackage#getUserGroup_Name()
+	 * @model
+	 * @generated
+	 */
+	String getName();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.emfforms.core.services.datatemplate.test.model.audit.UserGroup#getName <em>Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Name</em>' attribute.
+	 * @see #getName()
+	 * @generated
+	 */
+	void setName(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Users</b></em>' reference list.
+	 * The list contents are of type {@link org.eclipse.emfforms.core.services.datatemplate.test.model.audit.User}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Users</em>' reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Users</em>' reference list.
+	 * @see org.eclipse.emfforms.core.services.datatemplate.test.model.audit.AuditPackage#getUserGroup_Users()
+	 * @model
+	 * @generated
+	 */
+	EList<User> getUsers();
+
+	/**
+	 * Returns the value of the '<em><b>Admins</b></em>' reference list.
+	 * The list contents are of type {@link org.eclipse.emfforms.core.services.datatemplate.test.model.audit.PrivilegedUser}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Admins</em>' reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Admins</em>' reference list.
+	 * @see org.eclipse.emfforms.core.services.datatemplate.test.model.audit.AuditPackage#getUserGroup_Admins()
+	 * @model
+	 * @generated
+	 */
+	EList<PrivilegedUser> getAdmins();
+
+	/**
+	 * Returns the value of the '<em><b>Registered Users</b></em>' reference list.
+	 * The list contents are of type {@link org.eclipse.emfforms.core.services.datatemplate.test.model.audit.RegisteredUser}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Registered Users</em>' reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Registered Users</em>' reference list.
+	 * @see org.eclipse.emfforms.core.services.datatemplate.test.model.audit.AuditPackage#getUserGroup_RegisteredUsers()
+	 * @model
+	 * @generated
+	 */
+	EList<RegisteredUser> getRegisteredUsers();
+
+	/**
+	 * Returns the value of the '<em><b>Guests</b></em>' reference list.
+	 * The list contents are of type {@link org.eclipse.emfforms.core.services.datatemplate.test.model.audit.GuestUser}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Guests</em>' reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Guests</em>' reference list.
+	 * @see org.eclipse.emfforms.core.services.datatemplate.test.model.audit.AuditPackage#getUserGroup_Guests()
+	 * @model
+	 * @generated
+	 */
+	EList<GuestUser> getGuests();
+
+} // UserGroup
diff --git a/tests/org.eclipse.emfforms.core.services.datatemplate.test/src/org/eclipse/emfforms/core/services/datatemplate/test/model/audit/impl/AbstractSubUserImpl.java b/tests/org.eclipse.emfforms.core.services.datatemplate.test/src/org/eclipse/emfforms/core/services/datatemplate/test/model/audit/impl/AbstractSubUserImpl.java
new file mode 100644
index 0000000..480a664
--- /dev/null
+++ b/tests/org.eclipse.emfforms.core.services.datatemplate.test/src/org/eclipse/emfforms/core/services/datatemplate/test/model/audit/impl/AbstractSubUserImpl.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
+ */
+package org.eclipse.emfforms.core.services.datatemplate.test.model.audit.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emfforms.core.services.datatemplate.test.model.audit.AbstractSubUser;
+import org.eclipse.emfforms.core.services.datatemplate.test.model.audit.AuditPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Abstract Sub User</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public abstract class AbstractSubUserImpl extends UserImpl implements AbstractSubUser {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected AbstractSubUserImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return AuditPackage.Literals.ABSTRACT_SUB_USER;
+	}
+
+} //AbstractSubUserImpl
diff --git a/tests/org.eclipse.emfforms.core.services.datatemplate.test/src/org/eclipse/emfforms/core/services/datatemplate/test/model/audit/impl/AdminUserImpl.java b/tests/org.eclipse.emfforms.core.services.datatemplate.test/src/org/eclipse/emfforms/core/services/datatemplate/test/model/audit/impl/AdminUserImpl.java
new file mode 100644
index 0000000..9e52f3b
--- /dev/null
+++ b/tests/org.eclipse.emfforms.core.services.datatemplate.test/src/org/eclipse/emfforms/core/services/datatemplate/test/model/audit/impl/AdminUserImpl.java
@@ -0,0 +1,45 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
+ */
+package org.eclipse.emfforms.core.services.datatemplate.test.model.audit.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emfforms.core.services.datatemplate.test.model.audit.AdminUser;
+import org.eclipse.emfforms.core.services.datatemplate.test.model.audit.AuditPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Admin User</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class AdminUserImpl extends RegisteredUserImpl implements AdminUser {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected AdminUserImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return AuditPackage.Literals.ADMIN_USER;
+	}
+
+} // AdminUserImpl
diff --git a/tests/org.eclipse.emfforms.core.services.datatemplate.test/src/org/eclipse/emfforms/core/services/datatemplate/test/model/audit/impl/AuditFactoryImpl.java b/tests/org.eclipse.emfforms.core.services.datatemplate.test/src/org/eclipse/emfforms/core/services/datatemplate/test/model/audit/impl/AuditFactoryImpl.java
new file mode 100644
index 0000000..10c93d0
--- /dev/null
+++ b/tests/org.eclipse.emfforms.core.services.datatemplate.test/src/org/eclipse/emfforms/core/services/datatemplate/test/model/audit/impl/AuditFactoryImpl.java
@@ -0,0 +1,158 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
+ */
+package org.eclipse.emfforms.core.services.datatemplate.test.model.audit.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+import org.eclipse.emfforms.core.services.datatemplate.test.model.audit.AdminUser;
+import org.eclipse.emfforms.core.services.datatemplate.test.model.audit.AuditFactory;
+import org.eclipse.emfforms.core.services.datatemplate.test.model.audit.AuditPackage;
+import org.eclipse.emfforms.core.services.datatemplate.test.model.audit.GuestUser;
+import org.eclipse.emfforms.core.services.datatemplate.test.model.audit.RegisteredUser;
+import org.eclipse.emfforms.core.services.datatemplate.test.model.audit.UserGroup;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * 
+ * @generated
+ */
+public class AuditFactoryImpl extends EFactoryImpl implements AuditFactory {
+	/**
+	 * Creates the default factory implementation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public static AuditFactory init() {
+		try {
+			final AuditFactory theAuditFactory = (AuditFactory) EPackage.Registry.INSTANCE
+				.getEFactory(AuditPackage.eNS_URI);
+			if (theAuditFactory != null) {
+				return theAuditFactory;
+			}
+		} catch (final Exception exception) {
+			EcorePlugin.INSTANCE.log(exception);
+		}
+		return new AuditFactoryImpl();
+	}
+
+	/**
+	 * Creates an instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public AuditFactoryImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public EObject create(EClass eClass) {
+		switch (eClass.getClassifierID()) {
+		case AuditPackage.GUEST_USER:
+			return createGuestUser();
+		case AuditPackage.REGISTERED_USER:
+			return createRegisteredUser();
+		case AuditPackage.ADMIN_USER:
+			return createAdminUser();
+		case AuditPackage.USER_GROUP:
+			return createUserGroup();
+		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
+	public GuestUser createGuestUser() {
+		final GuestUserImpl guestUser = new GuestUserImpl();
+		return guestUser;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public RegisteredUser createRegisteredUser() {
+		final RegisteredUserImpl registeredUser = new RegisteredUserImpl();
+		return registeredUser;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public AdminUser createAdminUser() {
+		final AdminUserImpl adminUser = new AdminUserImpl();
+		return adminUser;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public UserGroup createUserGroup() {
+		final UserGroupImpl userGroup = new UserGroupImpl();
+		return userGroup;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public AuditPackage getAuditPackage() {
+		return (AuditPackage) getEPackage();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @deprecated
+	 * @generated
+	 */
+	@Deprecated
+	public static AuditPackage getPackage() {
+		return AuditPackage.eINSTANCE;
+	}
+
+} // AuditFactoryImpl
diff --git a/tests/org.eclipse.emfforms.core.services.datatemplate.test/src/org/eclipse/emfforms/core/services/datatemplate/test/model/audit/impl/AuditPackageImpl.java b/tests/org.eclipse.emfforms.core.services.datatemplate.test/src/org/eclipse/emfforms/core/services/datatemplate/test/model/audit/impl/AuditPackageImpl.java
new file mode 100644
index 0000000..917f8f5
--- /dev/null
+++ b/tests/org.eclipse.emfforms.core.services.datatemplate.test/src/org/eclipse/emfforms/core/services/datatemplate/test/model/audit/impl/AuditPackageImpl.java
@@ -0,0 +1,499 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
+ * Christian W. Damus - bug 529138
+ */
+package org.eclipse.emfforms.core.services.datatemplate.test.model.audit.impl;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+import org.eclipse.emfforms.core.services.datatemplate.test.model.audit.AbstractSubUser;
+import org.eclipse.emfforms.core.services.datatemplate.test.model.audit.AdminUser;
+import org.eclipse.emfforms.core.services.datatemplate.test.model.audit.AuditFactory;
+import org.eclipse.emfforms.core.services.datatemplate.test.model.audit.AuditPackage;
+import org.eclipse.emfforms.core.services.datatemplate.test.model.audit.GuestUser;
+import org.eclipse.emfforms.core.services.datatemplate.test.model.audit.PrivilegedUser;
+import org.eclipse.emfforms.core.services.datatemplate.test.model.audit.RegisteredUser;
+import org.eclipse.emfforms.core.services.datatemplate.test.model.audit.User;
+import org.eclipse.emfforms.core.services.datatemplate.test.model.audit.UserGroup;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Package</b>.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class AuditPackageImpl extends EPackageImpl implements AuditPackage {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EClass userEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EClass privilegedUserEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EClass guestUserEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EClass registeredUserEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EClass adminUserEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EClass userGroupEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EClass abstractSubUserEClass = 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>
+	 * Note: the correct way to create the package is via the static
+	 * factory method {@link #init init()}, which also performs
+	 * initialization of the package, or returns the registered package,
+	 * if one already exists.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.emf.ecore.EPackage.Registry
+	 * @see org.eclipse.emfforms.core.services.datatemplate.test.model.audit.AuditPackage#eNS_URI
+	 * @see #init()
+	 * @generated
+	 */
+	private AuditPackageImpl() {
+		super(eNS_URI, AuditFactory.eINSTANCE);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private static boolean isInited = false;
+
+	/**
+	 * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
+	 *
+	 * <p>
+	 * This method is used to initialize {@link AuditPackage#eINSTANCE} when that field is accessed.
+	 * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #eNS_URI
+	 * @see #createPackageContents()
+	 * @see #initializePackageContents()
+	 * @generated
+	 */
+	public static AuditPackage init() {
+		if (isInited) {
+			return (AuditPackage) EPackage.Registry.INSTANCE.getEPackage(AuditPackage.eNS_URI);
+		}
+
+		// Obtain or create and register package
+		final AuditPackageImpl theAuditPackage = (AuditPackageImpl) (EPackage.Registry.INSTANCE
+			.get(eNS_URI) instanceof AuditPackageImpl ? EPackage.Registry.INSTANCE.get(eNS_URI)
+				: new AuditPackageImpl());
+
+		isInited = true;
+
+		// Create package meta-data objects
+		theAuditPackage.createPackageContents();
+
+		// Initialize created meta-data
+		theAuditPackage.initializePackageContents();
+
+		// Mark meta-data to indicate it can't be changed
+		theAuditPackage.freeze();
+
+		// Update the registry and return the package
+		EPackage.Registry.INSTANCE.put(AuditPackage.eNS_URI, theAuditPackage);
+		return theAuditPackage;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EClass getUser() {
+		return userEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EAttribute getUser_DisplayName() {
+		return (EAttribute) userEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EAttribute getUser_Login() {
+		return (EAttribute) userEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EAttribute getUser_Password() {
+		return (EAttribute) userEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EReference getUser_Delegates() {
+		return (EReference) userEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EReference getUser_SubUsers() {
+		return (EReference) userEClass.getEStructuralFeatures().get(4);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public EClass getPrivilegedUser() {
+		return privilegedUserEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EClass getGuestUser() {
+		return guestUserEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EClass getRegisteredUser() {
+		return registeredUserEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EClass getAdminUser() {
+		return adminUserEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EClass getUserGroup() {
+		return userGroupEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EAttribute getUserGroup_Name() {
+		return (EAttribute) userGroupEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EReference getUserGroup_Users() {
+		return (EReference) userGroupEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EReference getUserGroup_Admins() {
+		return (EReference) userGroupEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EReference getUserGroup_RegisteredUsers() {
+		return (EReference) userGroupEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public EReference getUserGroup_Guests() {
+		return (EReference) userGroupEClass.getEStructuralFeatures().get(4);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public EClass getAbstractSubUser() {
+		return abstractSubUserEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public AuditFactory getAuditFactory() {
+		return (AuditFactory) getEFactoryInstance();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private boolean isCreated = false;
+
+	/**
+	 * Creates the meta-model objects for the package. This method is
+	 * guarded to have no affect on any invocation but its first.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public void createPackageContents() {
+		if (isCreated) {
+			return;
+		}
+		isCreated = true;
+
+		// Create classes and their features
+		userEClass = createEClass(USER);
+		createEAttribute(userEClass, USER__DISPLAY_NAME);
+		createEAttribute(userEClass, USER__LOGIN);
+		createEAttribute(userEClass, USER__PASSWORD);
+		createEReference(userEClass, USER__DELEGATES);
+		createEReference(userEClass, USER__SUB_USERS);
+
+		privilegedUserEClass = createEClass(PRIVILEGED_USER);
+
+		guestUserEClass = createEClass(GUEST_USER);
+
+		registeredUserEClass = createEClass(REGISTERED_USER);
+
+		adminUserEClass = createEClass(ADMIN_USER);
+
+		userGroupEClass = createEClass(USER_GROUP);
+		createEAttribute(userGroupEClass, USER_GROUP__NAME);
+		createEReference(userGroupEClass, USER_GROUP__USERS);
+		createEReference(userGroupEClass, USER_GROUP__ADMINS);
+		createEReference(userGroupEClass, USER_GROUP__REGISTERED_USERS);
+		createEReference(userGroupEClass, USER_GROUP__GUESTS);
+
+		abstractSubUserEClass = createEClass(ABSTRACT_SUB_USER);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private boolean isInitialized = false;
+
+	/**
+	 * Complete the initialization of the package and its meta-model. This
+	 * method is guarded to have no affect on any invocation but its first.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public void initializePackageContents() {
+		if (isInitialized) {
+			return;
+		}
+		isInitialized = true;
+
+		// Initialize package
+		setName(eNAME);
+		setNsPrefix(eNS_PREFIX);
+		setNsURI(eNS_URI);
+
+		// Create type parameters
+
+		// Set bounds for type parameters
+
+		// Add supertypes to classes
+		privilegedUserEClass.getESuperTypes().add(getUser());
+		guestUserEClass.getESuperTypes().add(getUser());
+		registeredUserEClass.getESuperTypes().add(getUser());
+		adminUserEClass.getESuperTypes().add(getRegisteredUser());
+		adminUserEClass.getESuperTypes().add(getPrivilegedUser());
+		abstractSubUserEClass.getESuperTypes().add(getUser());
+
+		// Initialize classes, features, and operations; add parameters
+		initEClass(userEClass, User.class, "User", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+		initEAttribute(getUser_DisplayName(), ecorePackage.getEString(), "displayName", null, 0, 1, User.class, //$NON-NLS-1$
+			!IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getUser_Login(), ecorePackage.getEString(), "login", null, 0, 1, User.class, !IS_TRANSIENT, //$NON-NLS-1$
+			!IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getUser_Password(), ecorePackage.getEString(), "password", null, 0, 1, User.class, !IS_TRANSIENT, //$NON-NLS-1$
+			!IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getUser_Delegates(), getRegisteredUser(), null, "delegates", null, 0, -1, User.class, //$NON-NLS-1$
+			!IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE,
+			!IS_DERIVED, IS_ORDERED);
+		initEReference(getUser_SubUsers(), getAbstractSubUser(), null, "subUsers", null, 0, -1, User.class, //$NON-NLS-1$
+			!IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE,
+			!IS_DERIVED, IS_ORDERED);
+
+		initEClass(privilegedUserEClass, PrivilegedUser.class, "PrivilegedUser", IS_ABSTRACT, IS_INTERFACE, //$NON-NLS-1$
+			IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(guestUserEClass, GuestUser.class, "GuestUser", !IS_ABSTRACT, !IS_INTERFACE, //$NON-NLS-1$
+			IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(registeredUserEClass, RegisteredUser.class, "RegisteredUser", !IS_ABSTRACT, !IS_INTERFACE, //$NON-NLS-1$
+			IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(adminUserEClass, AdminUser.class, "AdminUser", !IS_ABSTRACT, !IS_INTERFACE, //$NON-NLS-1$
+			IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(userGroupEClass, UserGroup.class, "UserGroup", !IS_ABSTRACT, !IS_INTERFACE, //$NON-NLS-1$
+			IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getUserGroup_Name(), ecorePackage.getEString(), "name", null, 0, 1, UserGroup.class, //$NON-NLS-1$
+			!IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getUserGroup_Users(), getUser(), null, "users", null, 0, -1, UserGroup.class, !IS_TRANSIENT, //$NON-NLS-1$
+			!IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED,
+			IS_ORDERED);
+		initEReference(getUserGroup_Admins(), getPrivilegedUser(), null, "admins", null, 0, -1, UserGroup.class, //$NON-NLS-1$
+			!IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE,
+			!IS_DERIVED, IS_ORDERED);
+		initEReference(getUserGroup_RegisteredUsers(), getRegisteredUser(), null, "registeredUsers", null, 0, -1, //$NON-NLS-1$
+			UserGroup.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES,
+			!IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getUserGroup_Guests(), getGuestUser(), null, "guests", null, 0, -1, UserGroup.class, //$NON-NLS-1$
+			!IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE,
+			!IS_DERIVED, IS_ORDERED);
+
+		initEClass(abstractSubUserEClass, AbstractSubUser.class, "AbstractSubUser", IS_ABSTRACT, !IS_INTERFACE, //$NON-NLS-1$
+			IS_GENERATED_INSTANCE_CLASS);
+
+		// Create resource
+		createResource(eNS_URI);
+	}
+
+} // AuditPackageImpl
diff --git a/tests/org.eclipse.emfforms.core.services.datatemplate.test/src/org/eclipse/emfforms/core/services/datatemplate/test/model/audit/impl/GuestUserImpl.java b/tests/org.eclipse.emfforms.core.services.datatemplate.test/src/org/eclipse/emfforms/core/services/datatemplate/test/model/audit/impl/GuestUserImpl.java
new file mode 100644
index 0000000..2015405
--- /dev/null
+++ b/tests/org.eclipse.emfforms.core.services.datatemplate.test/src/org/eclipse/emfforms/core/services/datatemplate/test/model/audit/impl/GuestUserImpl.java
@@ -0,0 +1,45 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
+ */
+package org.eclipse.emfforms.core.services.datatemplate.test.model.audit.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emfforms.core.services.datatemplate.test.model.audit.AuditPackage;
+import org.eclipse.emfforms.core.services.datatemplate.test.model.audit.GuestUser;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Guest User</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class GuestUserImpl extends UserImpl implements GuestUser {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected GuestUserImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return AuditPackage.Literals.GUEST_USER;
+	}
+
+} // GuestUserImpl
diff --git a/tests/org.eclipse.emfforms.core.services.datatemplate.test/src/org/eclipse/emfforms/core/services/datatemplate/test/model/audit/impl/RegisteredUserImpl.java b/tests/org.eclipse.emfforms.core.services.datatemplate.test/src/org/eclipse/emfforms/core/services/datatemplate/test/model/audit/impl/RegisteredUserImpl.java
new file mode 100644
index 0000000..7a7becc
--- /dev/null
+++ b/tests/org.eclipse.emfforms.core.services.datatemplate.test/src/org/eclipse/emfforms/core/services/datatemplate/test/model/audit/impl/RegisteredUserImpl.java
@@ -0,0 +1,45 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
+ */
+package org.eclipse.emfforms.core.services.datatemplate.test.model.audit.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emfforms.core.services.datatemplate.test.model.audit.AuditPackage;
+import org.eclipse.emfforms.core.services.datatemplate.test.model.audit.RegisteredUser;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Registered User</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class RegisteredUserImpl extends UserImpl implements RegisteredUser {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected RegisteredUserImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return AuditPackage.Literals.REGISTERED_USER;
+	}
+
+} // RegisteredUserImpl
diff --git a/tests/org.eclipse.emfforms.core.services.datatemplate.test/src/org/eclipse/emfforms/core/services/datatemplate/test/model/audit/impl/UserGroupImpl.java b/tests/org.eclipse.emfforms.core.services.datatemplate.test/src/org/eclipse/emfforms/core/services/datatemplate/test/model/audit/impl/UserGroupImpl.java
new file mode 100644
index 0000000..8baec94
--- /dev/null
+++ b/tests/org.eclipse.emfforms.core.services.datatemplate.test/src/org/eclipse/emfforms/core/services/datatemplate/test/model/audit/impl/UserGroupImpl.java
@@ -0,0 +1,349 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
+ */
+package org.eclipse.emfforms.core.services.datatemplate.test.model.audit.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+import org.eclipse.emf.ecore.util.EObjectResolvingEList;
+import org.eclipse.emfforms.core.services.datatemplate.test.model.audit.AuditPackage;
+import org.eclipse.emfforms.core.services.datatemplate.test.model.audit.GuestUser;
+import org.eclipse.emfforms.core.services.datatemplate.test.model.audit.PrivilegedUser;
+import org.eclipse.emfforms.core.services.datatemplate.test.model.audit.RegisteredUser;
+import org.eclipse.emfforms.core.services.datatemplate.test.model.audit.User;
+import org.eclipse.emfforms.core.services.datatemplate.test.model.audit.UserGroup;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>User Group</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.emfforms.core.services.datatemplate.test.model.audit.impl.UserGroupImpl#getName
+ * <em>Name</em>}</li>
+ * <li>{@link org.eclipse.emfforms.core.services.datatemplate.test.model.audit.impl.UserGroupImpl#getUsers
+ * <em>Users</em>}</li>
+ * <li>{@link org.eclipse.emfforms.core.services.datatemplate.test.model.audit.impl.UserGroupImpl#getAdmins
+ * <em>Admins</em>}</li>
+ * <li>{@link org.eclipse.emfforms.core.services.datatemplate.test.model.audit.impl.UserGroupImpl#getRegisteredUsers
+ * <em>Registered Users</em>}</li>
+ * <li>{@link org.eclipse.emfforms.core.services.datatemplate.test.model.audit.impl.UserGroupImpl#getGuests
+ * <em>Guests</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class UserGroupImpl extends MinimalEObjectImpl.Container implements UserGroup {
+	/**
+	 * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see #getName()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String NAME_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see #getName()
+	 * @generated
+	 * @ordered
+	 */
+	protected String name = NAME_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getUsers() <em>Users</em>}' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see #getUsers()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<User> users;
+
+	/**
+	 * The cached value of the '{@link #getAdmins() <em>Admins</em>}' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see #getAdmins()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<PrivilegedUser> admins;
+
+	/**
+	 * The cached value of the '{@link #getRegisteredUsers() <em>Registered Users</em>}' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see #getRegisteredUsers()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<RegisteredUser> registeredUsers;
+
+	/**
+	 * The cached value of the '{@link #getGuests() <em>Guests</em>}' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see #getGuests()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<GuestUser> guests;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	protected UserGroupImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return AuditPackage.Literals.USER_GROUP;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public String getName() {
+		return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public void setName(String newName) {
+		final String oldName = name;
+		name = newName;
+		if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, AuditPackage.USER_GROUP__NAME, oldName, name));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public EList<User> getUsers() {
+		if (users == null) {
+			users = new EObjectResolvingEList<User>(User.class, this, AuditPackage.USER_GROUP__USERS);
+		}
+		return users;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public EList<PrivilegedUser> getAdmins() {
+		if (admins == null) {
+			admins = new EObjectResolvingEList<PrivilegedUser>(PrivilegedUser.class, this,
+				AuditPackage.USER_GROUP__ADMINS);
+		}
+		return admins;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public EList<RegisteredUser> getRegisteredUsers() {
+		if (registeredUsers == null) {
+			registeredUsers = new EObjectResolvingEList<RegisteredUser>(RegisteredUser.class, this,
+				AuditPackage.USER_GROUP__REGISTERED_USERS);
+		}
+		return registeredUsers;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public EList<GuestUser> getGuests() {
+		if (guests == null) {
+			guests = new EObjectResolvingEList<GuestUser>(GuestUser.class, this, AuditPackage.USER_GROUP__GUESTS);
+		}
+		return guests;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case AuditPackage.USER_GROUP__NAME:
+			return getName();
+		case AuditPackage.USER_GROUP__USERS:
+			return getUsers();
+		case AuditPackage.USER_GROUP__ADMINS:
+			return getAdmins();
+		case AuditPackage.USER_GROUP__REGISTERED_USERS:
+			return getRegisteredUsers();
+		case AuditPackage.USER_GROUP__GUESTS:
+			return getGuests();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case AuditPackage.USER_GROUP__NAME:
+			setName((String) newValue);
+			return;
+		case AuditPackage.USER_GROUP__USERS:
+			getUsers().clear();
+			getUsers().addAll((Collection<? extends User>) newValue);
+			return;
+		case AuditPackage.USER_GROUP__ADMINS:
+			getAdmins().clear();
+			getAdmins().addAll((Collection<? extends PrivilegedUser>) newValue);
+			return;
+		case AuditPackage.USER_GROUP__REGISTERED_USERS:
+			getRegisteredUsers().clear();
+			getRegisteredUsers().addAll((Collection<? extends RegisteredUser>) newValue);
+			return;
+		case AuditPackage.USER_GROUP__GUESTS:
+			getGuests().clear();
+			getGuests().addAll((Collection<? extends GuestUser>) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case AuditPackage.USER_GROUP__NAME:
+			setName(NAME_EDEFAULT);
+			return;
+		case AuditPackage.USER_GROUP__USERS:
+			getUsers().clear();
+			return;
+		case AuditPackage.USER_GROUP__ADMINS:
+			getAdmins().clear();
+			return;
+		case AuditPackage.USER_GROUP__REGISTERED_USERS:
+			getRegisteredUsers().clear();
+			return;
+		case AuditPackage.USER_GROUP__GUESTS:
+			getGuests().clear();
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case AuditPackage.USER_GROUP__NAME:
+			return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+		case AuditPackage.USER_GROUP__USERS:
+			return users != null && !users.isEmpty();
+		case AuditPackage.USER_GROUP__ADMINS:
+			return admins != null && !admins.isEmpty();
+		case AuditPackage.USER_GROUP__REGISTERED_USERS:
+			return registeredUsers != null && !registeredUsers.isEmpty();
+		case AuditPackage.USER_GROUP__GUESTS:
+			return guests != null && !guests.isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) {
+			return super.toString();
+		}
+
+		final StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (name: "); //$NON-NLS-1$
+		result.append(name);
+		result.append(')');
+		return result.toString();
+	}
+
+} // UserGroupImpl
diff --git a/tests/org.eclipse.emfforms.core.services.datatemplate.test/src/org/eclipse/emfforms/core/services/datatemplate/test/model/audit/impl/UserImpl.java b/tests/org.eclipse.emfforms.core.services.datatemplate.test/src/org/eclipse/emfforms/core/services/datatemplate/test/model/audit/impl/UserImpl.java
new file mode 100644
index 0000000..0a4396a
--- /dev/null
+++ b/tests/org.eclipse.emfforms.core.services.datatemplate.test/src/org/eclipse/emfforms/core/services/datatemplate/test/model/audit/impl/UserImpl.java
@@ -0,0 +1,397 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
+ * Christian W. Damus - bug 529138
+ */
+package org.eclipse.emfforms.core.services.datatemplate.test.model.audit.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+import org.eclipse.emf.ecore.util.EObjectResolvingEList;
+import org.eclipse.emfforms.core.services.datatemplate.test.model.audit.AbstractSubUser;
+import org.eclipse.emfforms.core.services.datatemplate.test.model.audit.AuditPackage;
+import org.eclipse.emfforms.core.services.datatemplate.test.model.audit.RegisteredUser;
+import org.eclipse.emfforms.core.services.datatemplate.test.model.audit.User;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>User</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.emfforms.core.services.datatemplate.test.model.audit.impl.UserImpl#getDisplayName <em>Display
+ * Name</em>}</li>
+ * <li>{@link org.eclipse.emfforms.core.services.datatemplate.test.model.audit.impl.UserImpl#getLogin
+ * <em>Login</em>}</li>
+ * <li>{@link org.eclipse.emfforms.core.services.datatemplate.test.model.audit.impl.UserImpl#getPassword
+ * <em>Password</em>}</li>
+ * <li>{@link org.eclipse.emfforms.core.services.datatemplate.test.model.audit.impl.UserImpl#getDelegates
+ * <em>Delegates</em>}</li>
+ * <li>{@link org.eclipse.emfforms.core.services.datatemplate.test.model.audit.impl.UserImpl#getSubUsers <em>Sub
+ * Users</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public abstract class UserImpl extends MinimalEObjectImpl.Container implements User {
+	/**
+	 * The default value of the '{@link #getDisplayName() <em>Display Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see #getDisplayName()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String DISPLAY_NAME_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getDisplayName() <em>Display Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see #getDisplayName()
+	 * @generated
+	 * @ordered
+	 */
+	protected String displayName = DISPLAY_NAME_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getLogin() <em>Login</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see #getLogin()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String LOGIN_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getLogin() <em>Login</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see #getLogin()
+	 * @generated
+	 * @ordered
+	 */
+	protected String login = LOGIN_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getPassword() <em>Password</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see #getPassword()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String PASSWORD_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getPassword() <em>Password</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see #getPassword()
+	 * @generated
+	 * @ordered
+	 */
+	protected String password = PASSWORD_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getDelegates() <em>Delegates</em>}' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see #getDelegates()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<RegisteredUser> delegates;
+
+	/**
+	 * The cached value of the '{@link #getSubUsers() <em>Sub Users</em>}' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @see #getSubUsers()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<AbstractSubUser> subUsers;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	protected UserImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return AuditPackage.Literals.USER;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public String getDisplayName() {
+		return displayName;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public void setDisplayName(String newDisplayName) {
+		final String oldDisplayName = displayName;
+		displayName = newDisplayName;
+		if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, AuditPackage.USER__DISPLAY_NAME, oldDisplayName,
+				displayName));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public String getLogin() {
+		return login;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public void setLogin(String newLogin) {
+		final String oldLogin = login;
+		login = newLogin;
+		if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, AuditPackage.USER__LOGIN, oldLogin, login));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public String getPassword() {
+		return password;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public void setPassword(String newPassword) {
+		final String oldPassword = password;
+		password = newPassword;
+		if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, AuditPackage.USER__PASSWORD, oldPassword, password));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public EList<RegisteredUser> getDelegates() {
+		if (delegates == null) {
+			delegates = new EObjectResolvingEList<RegisteredUser>(RegisteredUser.class, this,
+				AuditPackage.USER__DELEGATES);
+		}
+		return delegates;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public EList<AbstractSubUser> getSubUsers() {
+		if (subUsers == null) {
+			subUsers = new EObjectResolvingEList<AbstractSubUser>(AbstractSubUser.class, this,
+				AuditPackage.USER__SUB_USERS);
+		}
+		return subUsers;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case AuditPackage.USER__DISPLAY_NAME:
+			return getDisplayName();
+		case AuditPackage.USER__LOGIN:
+			return getLogin();
+		case AuditPackage.USER__PASSWORD:
+			return getPassword();
+		case AuditPackage.USER__DELEGATES:
+			return getDelegates();
+		case AuditPackage.USER__SUB_USERS:
+			return getSubUsers();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case AuditPackage.USER__DISPLAY_NAME:
+			setDisplayName((String) newValue);
+			return;
+		case AuditPackage.USER__LOGIN:
+			setLogin((String) newValue);
+			return;
+		case AuditPackage.USER__PASSWORD:
+			setPassword((String) newValue);
+			return;
+		case AuditPackage.USER__DELEGATES:
+			getDelegates().clear();
+			getDelegates().addAll((Collection<? extends RegisteredUser>) newValue);
+			return;
+		case AuditPackage.USER__SUB_USERS:
+			getSubUsers().clear();
+			getSubUsers().addAll((Collection<? extends AbstractSubUser>) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case AuditPackage.USER__DISPLAY_NAME:
+			setDisplayName(DISPLAY_NAME_EDEFAULT);
+			return;
+		case AuditPackage.USER__LOGIN:
+			setLogin(LOGIN_EDEFAULT);
+			return;
+		case AuditPackage.USER__PASSWORD:
+			setPassword(PASSWORD_EDEFAULT);
+			return;
+		case AuditPackage.USER__DELEGATES:
+			getDelegates().clear();
+			return;
+		case AuditPackage.USER__SUB_USERS:
+			getSubUsers().clear();
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case AuditPackage.USER__DISPLAY_NAME:
+			return DISPLAY_NAME_EDEFAULT == null ? displayName != null : !DISPLAY_NAME_EDEFAULT.equals(displayName);
+		case AuditPackage.USER__LOGIN:
+			return LOGIN_EDEFAULT == null ? login != null : !LOGIN_EDEFAULT.equals(login);
+		case AuditPackage.USER__PASSWORD:
+			return PASSWORD_EDEFAULT == null ? password != null : !PASSWORD_EDEFAULT.equals(password);
+		case AuditPackage.USER__DELEGATES:
+			return delegates != null && !delegates.isEmpty();
+		case AuditPackage.USER__SUB_USERS:
+			return subUsers != null && !subUsers.isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) {
+			return super.toString();
+		}
+
+		final StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (displayName: "); //$NON-NLS-1$
+		result.append(displayName);
+		result.append(", login: "); //$NON-NLS-1$
+		result.append(login);
+		result.append(", password: "); //$NON-NLS-1$
+		result.append(password);
+		result.append(')');
+		return result.toString();
+	}
+
+} // UserImpl
diff --git a/tests/org.eclipse.emfforms.core.services.datatemplate.test/src/org/eclipse/emfforms/core/services/datatemplate/test/model/audit/util/AuditAdapterFactory.java b/tests/org.eclipse.emfforms.core.services.datatemplate.test/src/org/eclipse/emfforms/core/services/datatemplate/test/model/audit/util/AuditAdapterFactory.java
new file mode 100644
index 0000000..c092f7e
--- /dev/null
+++ b/tests/org.eclipse.emfforms.core.services.datatemplate.test/src/org/eclipse/emfforms/core/services/datatemplate/test/model/audit/util/AuditAdapterFactory.java
@@ -0,0 +1,240 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
+ */
+package org.eclipse.emfforms.core.services.datatemplate.test.model.audit.util;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notifier;
+import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emfforms.core.services.datatemplate.test.model.audit.AbstractSubUser;
+import org.eclipse.emfforms.core.services.datatemplate.test.model.audit.AdminUser;
+import org.eclipse.emfforms.core.services.datatemplate.test.model.audit.AuditPackage;
+import org.eclipse.emfforms.core.services.datatemplate.test.model.audit.GuestUser;
+import org.eclipse.emfforms.core.services.datatemplate.test.model.audit.PrivilegedUser;
+import org.eclipse.emfforms.core.services.datatemplate.test.model.audit.RegisteredUser;
+import org.eclipse.emfforms.core.services.datatemplate.test.model.audit.User;
+import org.eclipse.emfforms.core.services.datatemplate.test.model.audit.UserGroup;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Adapter Factory</b> for the model.
+ * It provides an adapter <code>createXXX</code> method for each class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.emfforms.core.services.datatemplate.test.model.audit.AuditPackage
+ * @generated
+ */
+public class AuditAdapterFactory extends AdapterFactoryImpl {
+	/**
+	 * The cached model package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected static AuditPackage modelPackage;
+
+	/**
+	 * Creates an instance of the adapter factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public AuditAdapterFactory() {
+		if (modelPackage == null) {
+			modelPackage = AuditPackage.eINSTANCE;
+		}
+	}
+
+	/**
+	 * Returns whether this factory is applicable for the type of the object.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns <code>true</code> if the object is either the model's package or is an instance
+	 * object of the model.
+	 * <!-- end-user-doc -->
+	 * @return whether this factory is applicable for the type of the object.
+	 * @generated
+	 */
+	@Override
+	public boolean isFactoryForType(Object object) {
+		if (object == modelPackage) {
+			return true;
+		}
+		if (object instanceof EObject) {
+			return ((EObject)object).eClass().getEPackage() == modelPackage;
+		}
+		return false;
+	}
+
+	/**
+	 * The switch that delegates to the <code>createXXX</code> methods.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected AuditSwitch<Adapter> modelSwitch = new AuditSwitch<Adapter>() {
+			@Override
+			public Adapter caseUser(User object) {
+				return createUserAdapter();
+			}
+			@Override
+			public Adapter casePrivilegedUser(PrivilegedUser object) {
+				return createPrivilegedUserAdapter();
+			}
+			@Override
+			public Adapter caseGuestUser(GuestUser object) {
+				return createGuestUserAdapter();
+			}
+			@Override
+			public Adapter caseRegisteredUser(RegisteredUser object) {
+				return createRegisteredUserAdapter();
+			}
+			@Override
+			public Adapter caseAdminUser(AdminUser object) {
+				return createAdminUserAdapter();
+			}
+			@Override
+			public Adapter caseUserGroup(UserGroup object) {
+				return createUserGroupAdapter();
+			}
+			@Override
+			public Adapter caseAbstractSubUser(AbstractSubUser object) {
+				return createAbstractSubUserAdapter();
+			}
+			@Override
+			public Adapter defaultCase(EObject object) {
+				return createEObjectAdapter();
+			}
+		};
+
+	/**
+	 * Creates an adapter for the <code>target</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param target the object to adapt.
+	 * @return the adapter for the <code>target</code>.
+	 * @generated
+	 */
+	@Override
+	public Adapter createAdapter(Notifier target) {
+		return modelSwitch.doSwitch((EObject)target);
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.emfforms.core.services.datatemplate.test.model.audit.User <em>User</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.emfforms.core.services.datatemplate.test.model.audit.User
+	 * @generated
+	 */
+	public Adapter createUserAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.emfforms.core.services.datatemplate.test.model.audit.PrivilegedUser <em>Privileged User</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.emfforms.core.services.datatemplate.test.model.audit.PrivilegedUser
+	 * @generated
+	 */
+	public Adapter createPrivilegedUserAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.emfforms.core.services.datatemplate.test.model.audit.GuestUser <em>Guest User</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.emfforms.core.services.datatemplate.test.model.audit.GuestUser
+	 * @generated
+	 */
+	public Adapter createGuestUserAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.emfforms.core.services.datatemplate.test.model.audit.RegisteredUser <em>Registered User</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.emfforms.core.services.datatemplate.test.model.audit.RegisteredUser
+	 * @generated
+	 */
+	public Adapter createRegisteredUserAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.emfforms.core.services.datatemplate.test.model.audit.AdminUser <em>Admin User</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.emfforms.core.services.datatemplate.test.model.audit.AdminUser
+	 * @generated
+	 */
+	public Adapter createAdminUserAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.emfforms.core.services.datatemplate.test.model.audit.UserGroup <em>User Group</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.emfforms.core.services.datatemplate.test.model.audit.UserGroup
+	 * @generated
+	 */
+	public Adapter createUserGroupAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.emfforms.core.services.datatemplate.test.model.audit.AbstractSubUser <em>Abstract Sub User</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.emfforms.core.services.datatemplate.test.model.audit.AbstractSubUser
+	 * @generated
+	 */
+	public Adapter createAbstractSubUserAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for the default case.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @generated
+	 */
+	public Adapter createEObjectAdapter() {
+		return null;
+	}
+
+} // AuditAdapterFactory
diff --git a/tests/org.eclipse.emfforms.core.services.datatemplate.test/src/org/eclipse/emfforms/core/services/datatemplate/test/model/audit/util/AuditSwitch.java b/tests/org.eclipse.emfforms.core.services.datatemplate.test/src/org/eclipse/emfforms/core/services/datatemplate/test/model/audit/util/AuditSwitch.java
new file mode 100644
index 0000000..e6988ac
--- /dev/null
+++ b/tests/org.eclipse.emfforms.core.services.datatemplate.test/src/org/eclipse/emfforms/core/services/datatemplate/test/model/audit/util/AuditSwitch.java
@@ -0,0 +1,257 @@
+/**
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * EclipseSource Munich - initial API and implementation
+ */
+package org.eclipse.emfforms.core.services.datatemplate.test.model.audit.util;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.util.Switch;
+import org.eclipse.emfforms.core.services.datatemplate.test.model.audit.AbstractSubUser;
+import org.eclipse.emfforms.core.services.datatemplate.test.model.audit.AdminUser;
+import org.eclipse.emfforms.core.services.datatemplate.test.model.audit.AuditPackage;
+import org.eclipse.emfforms.core.services.datatemplate.test.model.audit.GuestUser;
+import org.eclipse.emfforms.core.services.datatemplate.test.model.audit.PrivilegedUser;
+import org.eclipse.emfforms.core.services.datatemplate.test.model.audit.RegisteredUser;
+import org.eclipse.emfforms.core.services.datatemplate.test.model.audit.User;
+import org.eclipse.emfforms.core.services.datatemplate.test.model.audit.UserGroup;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Switch</b> for the model's inheritance hierarchy.
+ * It supports the call {@link #doSwitch(EObject) doSwitch(object)}
+ * to invoke the <code>caseXXX</code> method for each class of the model,
+ * starting with the actual class of the object
+ * and proceeding up the inheritance hierarchy
+ * until a non-null result is returned,
+ * which is the result of the switch.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.emfforms.core.services.datatemplate.test.model.audit.AuditPackage
+ * @generated
+ */
+public class AuditSwitch<T> extends Switch<T> {
+	/**
+	 * The cached model package
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected static AuditPackage modelPackage;
+
+	/**
+	 * Creates an instance of the switch.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public AuditSwitch() {
+		if (modelPackage == null) {
+			modelPackage = AuditPackage.eINSTANCE;
+		}
+	}
+
+	/**
+	 * Checks whether this is a switch for the given package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param ePackage the package in question.
+	 * @return whether this is a switch for the given package.
+	 * @generated
+	 */
+	@Override
+	protected boolean isSwitchFor(EPackage ePackage) {
+		return ePackage == modelPackage;
+	}
+
+	/**
+	 * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the first non-null result returned by a <code>caseXXX</code> call.
+	 * @generated
+	 */
+	@Override
+	protected T doSwitch(int classifierID, EObject theEObject) {
+		switch (classifierID) {
+			case AuditPackage.USER: {
+				User user = (User)theEObject;
+				T result = caseUser(user);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case AuditPackage.PRIVILEGED_USER: {
+				PrivilegedUser privilegedUser = (PrivilegedUser)theEObject;
+				T result = casePrivilegedUser(privilegedUser);
+				if (result == null) result = caseUser(privilegedUser);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case AuditPackage.GUEST_USER: {
+				GuestUser guestUser = (GuestUser)theEObject;
+				T result = caseGuestUser(guestUser);
+				if (result == null) result = caseUser(guestUser);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case AuditPackage.REGISTERED_USER: {
+				RegisteredUser registeredUser = (RegisteredUser)theEObject;
+				T result = caseRegisteredUser(registeredUser);
+				if (result == null) result = caseUser(registeredUser);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case AuditPackage.ADMIN_USER: {
+				AdminUser adminUser = (AdminUser)theEObject;
+				T result = caseAdminUser(adminUser);
+				if (result == null) result = caseRegisteredUser(adminUser);
+				if (result == null) result = casePrivilegedUser(adminUser);
+				if (result == null) result = caseUser(adminUser);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case AuditPackage.USER_GROUP: {
+				UserGroup userGroup = (UserGroup)theEObject;
+				T result = caseUserGroup(userGroup);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case AuditPackage.ABSTRACT_SUB_USER: {
+				AbstractSubUser abstractSubUser = (AbstractSubUser)theEObject;
+				T result = caseAbstractSubUser(abstractSubUser);
+				if (result == null) result = caseUser(abstractSubUser);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			default: return defaultCase(theEObject);
+		}
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>User</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>User</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseUser(User object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Privileged User</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>Privileged User</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T casePrivilegedUser(PrivilegedUser object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Guest User</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>Guest User</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseGuestUser(GuestUser object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Registered User</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>Registered User</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseRegisteredUser(RegisteredUser object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Admin User</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>Admin User</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseAdminUser(AdminUser object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>User Group</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>User Group</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseUserGroup(UserGroup object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Abstract Sub User</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>Abstract Sub User</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseAbstractSubUser(AbstractSubUser object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch, but this is the last case anyway.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject)
+	 * @generated
+	 */
+	@Override
+	public T defaultCase(EObject object) {
+		return null;
+	}
+
+} // AuditSwitch
diff --git a/tests/org.eclipse.emfforms.core.services.datatemplate.test/src/org/eclipse/emfforms/internal/core/services/datatemplate/BlankTemplateProvider_PTest.java b/tests/org.eclipse.emfforms.core.services.datatemplate.test/src/org/eclipse/emfforms/internal/core/services/datatemplate/BlankTemplateProvider_PTest.java
new file mode 100644
index 0000000..05878e7
--- /dev/null
+++ b/tests/org.eclipse.emfforms.core.services.datatemplate.test/src/org/eclipse/emfforms/internal/core/services/datatemplate/BlankTemplateProvider_PTest.java
@@ -0,0 +1,192 @@
+/*******************************************************************************
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * Lucas Koehler - initial API and implementation
+ * Christian W. Damus - bug 529138
+ ******************************************************************************/
+package org.eclipse.emfforms.internal.core.services.datatemplate;
+
+import static java.lang.Double.POSITIVE_INFINITY;
+import static org.hamcrest.CoreMatchers.both;
+import static org.hamcrest.CoreMatchers.hasItem;
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.mockito.Matchers.any;
+import static org.mockito.Matchers.anyCollectionOf;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Set;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EEnum;
+import org.eclipse.emf.ecore.ENamedElement;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.EcoreFactory;
+import org.eclipse.emf.ecore.EcorePackage;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecp.ui.view.swt.reference.DefaultCreateNewModelElementStrategyProvider;
+import org.eclipse.emf.ecp.ui.view.swt.reference.EClassSelectionStrategy;
+import org.eclipse.emfforms.bazaar.Bid;
+import org.eclipse.emfforms.bazaar.Create;
+import org.eclipse.emfforms.datatemplate.Template;
+import org.eclipse.emfforms.internal.core.services.label.BundleResolver;
+import org.eclipse.emfforms.spi.localization.EMFFormsLocalizationService;
+import org.hamcrest.CoreMatchers;
+import org.hamcrest.CustomTypeSafeMatcher;
+import org.hamcrest.FeatureMatcher;
+import org.hamcrest.Matcher;
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.invocation.InvocationOnMock;
+import org.mockito.stubbing.Answer;
+import org.osgi.framework.Bundle;
+
+/**
+ * Unit tests for {@link BlankTemplateProvider}.
+ *
+ * @author Lucas Koehler
+ *
+ */
+@SuppressWarnings({ "restriction", "nls" })
+public class BlankTemplateProvider_PTest {
+
+	private BlankTemplateProvider provider;
+	private Resource resource;
+
+	@Test
+	public void provideEMFEditConfiguredObject() {
+		final EPackage ePackage = EcoreFactory.eINSTANCE.createEPackage();
+		resource.getContents().add(ePackage);
+
+		assertThat(provider.canProvideTemplates(ePackage, EcorePackage.Literals.EPACKAGE__ECLASSIFIERS), is(true));
+		final Set<Template> templates = provider.provideTemplates(ePackage,
+			EcorePackage.Literals.EPACKAGE__ECLASSIFIERS);
+
+		assertThat(templates,
+			hasItem(templateThat(both(CoreMatchers.<EObject> instanceOf(EEnum.class))
+				.and(named("NewEnum1")))));
+	}
+
+	//
+	// Test framework
+	//
+
+	@Before
+	public void createTemplateProvider() {
+		provider = new BlankTemplateProvider();
+		final EMFFormsLocalizationService localizationService = mock(EMFFormsLocalizationService.class);
+		when(localizationService.getString(BlankTemplateProvider.class,
+			MessageKeys.BlankTemplateProvider_blankTemplateLabel)).thenReturn("Blank {0}");
+		when(localizationService.getString(any(Bundle.class), any(String.class))).thenAnswer(new Answer<String>() {
+
+			@Override
+			public String answer(InvocationOnMock invocation) throws Throwable {
+				final String classKey = (String) invocation.getArguments()[1];
+				return classKey.substring(4, classKey.length() - 5);
+			}
+		});
+
+		final BundleResolver bundleResolver = mock(BundleResolver.class);
+		provider.setBundleResolver(bundleResolver);
+		provider.setLocalizationService(localizationService);
+
+		final DefaultCreateNewModelElementStrategyProvider dcnmesp = new DefaultCreateNewModelElementStrategyProvider();
+		dcnmesp.addEClassSelectionStrategyProvider(new TestEClassSelectionStrategyProvider(
+			POSITIVE_INFINITY, forceEClass(EcorePackage.Literals.EENUM)));
+		provider.setDefaultNewElementStrategyProvider(dcnmesp);
+	}
+
+	@Before
+	public void createResource() {
+		final EEnum template = EcoreFactory.eINSTANCE.createEEnum();
+		template.setName("NewEnum1");
+
+		resource = new EMFEditNewChildFactoryBuilder()
+			.addTemplate(EPackage.class, EcorePackage.Literals.EPACKAGE__ECLASSIFIERS, template)
+			.buildResource();
+	}
+
+	/**
+	 * Obtain a Hamcrest matcher for templates whose instances match the given instance matcher.
+	 *
+	 * @param instanceMatcher a template instance matcher
+	 * @return the template matcher
+	 */
+	Matcher<Template> templateThat(Matcher<? super EObject> instanceMatcher) {
+		return new FeatureMatcher<Template, EObject>(instanceMatcher, "object", "object") {
+			@Override
+			protected EObject featureValueOf(Template actual) {
+				return actual.getInstance();
+			}
+		};
+	}
+
+	/**
+	 * Obtain a Hamcrest matcher for objects that the EMF named elements having the given name.
+	 *
+	 * @param name the element name to match
+	 * @return the matcher
+	 */
+	Matcher<EObject> named(final String name) {
+		return new CustomTypeSafeMatcher<EObject>("named " + name) {
+			@Override
+			protected boolean matchesSafely(EObject item) {
+				return item instanceof ENamedElement
+					&& name.equals(((ENamedElement) item).getName());
+			}
+		};
+	}
+
+	/**
+	 * Create a mock EClass selection strategy (suitable for verification) that forces
+	 * selection of the given class.
+	 *
+	 * @param eClass the class to force
+	 * @return the mocl strategy
+	 */
+	EClassSelectionStrategy forceEClass(EClass eClass) {
+		final EClassSelectionStrategy result = mock(EClassSelectionStrategy.class);
+		final Collection<EClass> eClasses = Collections.singleton(eClass);
+		when(result.collectEClasses(any(EObject.class), any(EReference.class),
+			anyCollectionOf(EClass.class))).thenReturn(eClasses);
+
+		return result;
+	}
+
+	//
+	// Nested types
+	//
+
+	class TestEClassSelectionStrategyProvider implements EClassSelectionStrategy.Provider {
+		private final Double bid;
+		private final EClassSelectionStrategy strategy;
+
+		TestEClassSelectionStrategyProvider(Double bid, EClassSelectionStrategy strategy) {
+			super();
+
+			this.bid = bid;
+			this.strategy = strategy;
+		}
+
+		@Bid
+		public Double bid() {
+			return bid;
+		}
+
+		@Create
+		public EClassSelectionStrategy create() {
+			return strategy;
+		}
+	}
+}
diff --git a/tests/org.eclipse.emfforms.core.services.datatemplate.test/src/org/eclipse/emfforms/internal/core/services/datatemplate/BlankTemplateProvider_Test.java b/tests/org.eclipse.emfforms.core.services.datatemplate.test/src/org/eclipse/emfforms/internal/core/services/datatemplate/BlankTemplateProvider_Test.java
new file mode 100644
index 0000000..a52b852
--- /dev/null
+++ b/tests/org.eclipse.emfforms.core.services.datatemplate.test/src/org/eclipse/emfforms/internal/core/services/datatemplate/BlankTemplateProvider_Test.java
@@ -0,0 +1,130 @@
+/*******************************************************************************
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * Lucas Koehler - initial API and implementation
+ * Christian W. Damus - bug 529138
+ ******************************************************************************/
+package org.eclipse.emfforms.internal.core.services.datatemplate;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+import static org.mockito.Matchers.any;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import java.util.Collection;
+import java.util.Hashtable;
+import java.util.Set;
+
+import org.eclipse.emfforms.core.services.datatemplate.test.model.audit.AuditFactory;
+import org.eclipse.emfforms.core.services.datatemplate.test.model.audit.AuditPackage;
+import org.eclipse.emfforms.core.services.datatemplate.test.model.audit.User;
+import org.eclipse.emfforms.core.services.datatemplate.test.model.audit.UserGroup;
+import org.eclipse.emfforms.datatemplate.Template;
+import org.eclipse.emfforms.internal.core.services.label.BundleResolver;
+import org.eclipse.emfforms.spi.localization.EMFFormsLocalizationService;
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.invocation.InvocationOnMock;
+import org.mockito.stubbing.Answer;
+import org.osgi.framework.Bundle;
+import org.osgi.service.component.ComponentContext;
+
+/**
+ * Unit tests for {@link BlankTemplateProvider}.
+ *
+ * @author Lucas Koehler
+ *
+ */
+@SuppressWarnings("restriction")
+public class BlankTemplateProvider_Test {
+
+	private BlankTemplateProvider provider;
+
+	/**
+	 * Set up the test cases.
+	 */
+	@Before
+	public void setUp() {
+		provider = new BlankTemplateProvider();
+		final EMFFormsLocalizationService localizationService = mock(EMFFormsLocalizationService.class);
+		when(localizationService.getString(BlankTemplateProvider.class,
+			MessageKeys.BlankTemplateProvider_blankTemplateLabel)).thenReturn("Blank {0}"); //$NON-NLS-1$
+		when(localizationService.getString(any(Bundle.class), any(String.class))).thenAnswer(new Answer<String>() {
+
+			@Override
+			public String answer(InvocationOnMock invocation) throws Throwable {
+				final String classKey = (String) invocation.getArguments()[1];
+				return classKey.substring(4, classKey.length() - 5);
+			}
+		});
+
+		final BundleResolver bundleResolver = mock(BundleResolver.class);
+		provider.setBundleResolver(bundleResolver);
+		provider.setLocalizationService(localizationService);
+		final ComponentContext context = mock(ComponentContext.class);
+		when(context.getProperties()).thenReturn(new Hashtable<String, Object>());
+	}
+
+	@Test
+	public void testCanProvide_ConcreteClass() {
+		final UserGroup group = AuditFactory.eINSTANCE.createUserGroup();
+		assertTrue(provider.canProvideTemplates(group, AuditPackage.Literals.USER_GROUP__ADMINS));
+	}
+
+	@Test
+	public void testCanProvide_ConcreteSubClass() {
+		final UserGroup group = AuditFactory.eINSTANCE.createUserGroup();
+		assertTrue(provider.canProvideTemplates(group, AuditPackage.Literals.USER_GROUP__USERS));
+	}
+
+	@Test
+	public void testCanProvide_NoConcreteSubClass() {
+		final User user = AuditFactory.eINSTANCE.createGuestUser();
+		assertFalse(provider.canProvideTemplates(user, AuditPackage.Literals.USER__SUB_USERS));
+	}
+
+	@Test
+	public void testProvide_NoSubClasses() {
+		final UserGroup group = AuditFactory.eINSTANCE.createUserGroup();
+		final Set<Template> result = provider.provideTemplates(group, AuditPackage.Literals.USER_GROUP__ADMINS);
+		assertEquals(1, result.size());
+		final Template template = result.iterator().next();
+		assertEquals(AuditPackage.eINSTANCE.getAdminUser(), template.getInstance().eClass());
+		assertEquals("Blank AdminUser", template.getName()); //$NON-NLS-1$
+	}
+
+	@Test
+	public void testProvide_ConcreteSubClasses() {
+		final UserGroup group = AuditFactory.eINSTANCE.createUserGroup();
+		final Set<Template> result = provider.provideTemplates(group, AuditPackage.Literals.USER_GROUP__USERS);
+		assertEquals(3, result.size());
+		assertTrue(hasTemplateWithName(result, "Blank AdminUser")); //$NON-NLS-1$
+		assertTrue(hasTemplateWithName(result, "Blank GuestUser")); //$NON-NLS-1$
+		assertTrue(hasTemplateWithName(result, "Blank RegisteredUser")); //$NON-NLS-1$
+
+	}
+
+	private boolean hasTemplateWithName(Collection<Template> templates, String name) {
+		for (final Template template : templates) {
+			if (template.getName().equals(name)) {
+				return true;
+			}
+		}
+		return false;
+	}
+
+	@Test
+	public void testProvide_NonConcreteSubClass() {
+		final User user = AuditFactory.eINSTANCE.createGuestUser();
+		final Set<Template> result = provider.provideTemplates(user, AuditPackage.Literals.USER__SUB_USERS);
+		assertEquals(0, result.size());
+	}
+}
diff --git a/tests/org.eclipse.emfforms.core.services.datatemplate.test/src/org/eclipse/emfforms/internal/core/services/datatemplate/EClassLabelProvider_PTest.java b/tests/org.eclipse.emfforms.core.services.datatemplate.test/src/org/eclipse/emfforms/internal/core/services/datatemplate/EClassLabelProvider_PTest.java
new file mode 100644
index 0000000..79959e8
--- /dev/null
+++ b/tests/org.eclipse.emfforms.core.services.datatemplate.test/src/org/eclipse/emfforms/internal/core/services/datatemplate/EClassLabelProvider_PTest.java
@@ -0,0 +1,154 @@
+/*******************************************************************************
+ * Copyright (c) 2018 Christian W. Damus 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:
+ * Christian W. Damus - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.emfforms.internal.core.services.datatemplate;
+
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.CoreMatchers.notNullValue;
+import static org.hamcrest.CoreMatchers.nullValue;
+import static org.junit.Assert.assertThat;
+import static org.mockito.Matchers.any;
+import static org.mockito.Matchers.anyString;
+import static org.mockito.Mockito.atLeastOnce;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import java.util.regex.Pattern;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EcoreFactory;
+import org.eclipse.emf.ecore.EcorePackage;
+import org.eclipse.emfforms.core.services.datatemplate.test.model.audit.AuditPackage;
+import org.eclipse.emfforms.spi.localization.EMFFormsLocalizationService;
+import org.hamcrest.CustomTypeSafeMatcher;
+import org.hamcrest.Matcher;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.runners.MockitoJUnitRunner;
+import org.osgi.framework.Bundle;
+
+/**
+ * Unit tests for the {@link EClassLabelProvider} class.
+ */
+@SuppressWarnings("nls")
+@RunWith(MockitoJUnitRunner.class)
+public class EClassLabelProvider_PTest {
+
+	@Mock
+	private EMFFormsLocalizationService l10nService;
+
+	private EClassLabelProvider labelProvider;
+
+	/**
+	 * Initializes me.
+	 */
+	public EClassLabelProvider_PTest() {
+		super();
+	}
+
+	/**
+	 * Test the provision of text for classes that have edit bundles.
+	 */
+	@Test
+	public void getText_editLabelsAvailable() {
+		assertThat(labelProvider.getText(EcorePackage.Literals.EDATA_TYPE), is("PASS"));
+	}
+
+	/**
+	 * Test the provision of text for classes that do not have edit bundles.
+	 */
+	@Test
+	public void getText_editLabelsUnavailable() {
+		final EPackage ePackage = spy(EcoreFactory.eINSTANCE.createEPackage());
+		ePackage.setNsURI("http://www.example.com/test/foo");
+		ePackage.setName("foo");
+		final EClass eClass = EcoreFactory.eINSTANCE.createEClass();
+		eClass.setName("FooCamelCase");
+		ePackage.getEClassifiers().add(eClass);
+
+		assertThat(labelProvider.getText(eClass), is("FooCamelCase"));
+
+		verify(ePackage, atLeastOnce()).getNsURI();
+
+		// We didn't attempt to get a string from any bundle
+		verify(l10nService, never()).getString(any(Bundle.class), anyString());
+	}
+
+	/**
+	 * Test the provision of text for non-classes.
+	 */
+	@Test
+	public void getText_nonEClass() {
+		assertThat(labelProvider.getText(new Object()), containsRegex("@\\p{XDigit}+"));
+
+		// We didn't attempt to get a string from any bundle
+		verify(l10nService, never()).getString(any(Bundle.class), anyString());
+	}
+
+	/**
+	 * Test the provision of images for classes that have edit bundles.
+	 */
+	@Test
+	public void getImage_editImagesAvailable() {
+		assertThat(labelProvider.getImage(EcorePackage.Literals.EDATA_TYPE), notNullValue());
+	}
+
+	/**
+	 * Test the provision of images for classes that do not have edit bundles.
+	 */
+	@Test
+	public void getImage_editImagesUnavailable() {
+		assertThat(labelProvider.getImage(AuditPackage.Literals.GUEST_USER), nullValue());
+	}
+
+	/**
+	 * Test the provision of images for non-classes.
+	 */
+	@Test
+	public void getImage_editImagesNonEClass() {
+		assertThat(labelProvider.getImage(new Object()), nullValue());
+	}
+
+	//
+	// Test framework
+	//
+
+	@Before
+	public void createLabelProvider() {
+		labelProvider = new EClassLabelProvider(l10nService);
+	}
+
+	@Before
+	public void configureL10nService() {
+		when(l10nService.getString(any(Bundle.class), anyString())).thenReturn("PASS");
+	}
+
+	@After
+	public void verifyL10nService() {
+		verify(l10nService, never()).getString(any(Class.class), anyString());
+	}
+
+	static Matcher<String> containsRegex(String regex) {
+		final Pattern pattern = Pattern.compile(regex);
+		return new CustomTypeSafeMatcher<String>("=~ " + pattern) {
+			@Override
+			protected boolean matchesSafely(String item) {
+				return pattern.matcher(item).find();
+			}
+		};
+	}
+}
diff --git a/tests/org.eclipse.emfforms.core.services.datatemplate.test/src/org/eclipse/emfforms/internal/core/services/datatemplate/EMFEditNewChildFactoryBuilder.java b/tests/org.eclipse.emfforms.core.services.datatemplate.test/src/org/eclipse/emfforms/internal/core/services/datatemplate/EMFEditNewChildFactoryBuilder.java
new file mode 100644
index 0000000..de7a849
--- /dev/null
+++ b/tests/org.eclipse.emfforms.core.services.datatemplate.test/src/org/eclipse/emfforms/internal/core/services/datatemplate/EMFEditNewChildFactoryBuilder.java
@@ -0,0 +1,123 @@
+/*******************************************************************************
+ * Copyright (c) 2018 Christian W. Damus 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:
+ * Christian W. Damus - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.emfforms.internal.core.services.datatemplate;
+
+import static org.mockito.Matchers.any;
+import static org.mockito.Matchers.same;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+import static org.mockito.Mockito.withSettings;
+
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.emf.common.command.BasicCommandStack;
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain;
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+
+/**
+ * Utility for tests to create EMF.Edit-based factories of new children.
+ *
+ * @author Christian W. Damus
+ */
+public final class EMFEditNewChildFactoryBuilder {
+	private final Map<Class<? extends EObject>, Map<EReference, EObject>> templates = new HashMap<Class<? extends EObject>, Map<EReference, EObject>>();
+
+	/**
+	 * Initializes me.
+	 */
+	public EMFEditNewChildFactoryBuilder() {
+		super();
+	}
+
+	public AdapterFactory buildFactory() {
+		final AdapterFactory result = mock(AdapterFactory.class,
+			withSettings().extraInterfaces(ComposeableAdapterFactory.class));
+
+		for (final Map.Entry<Class<? extends EObject>, Map<EReference, EObject>> next : templates.entrySet()) {
+			final NewChildFactory itemProvider = new NewChildFactory(result, next.getValue());
+
+			when(result.adapt(any(next.getKey()), same(IEditingDomainItemProvider.class)))
+				.thenReturn(itemProvider);
+			when(result.adapt((Object) any(next.getKey()), same(IEditingDomainItemProvider.class)))
+				.thenReturn(itemProvider);
+			when(result.adaptNew(any(next.getKey()), same(IEditingDomainItemProvider.class)))
+				.thenReturn(itemProvider);
+		}
+
+		return result;
+	}
+
+	public EditingDomain buildEditingDomain() {
+		return new AdapterFactoryEditingDomain(buildFactory(), new BasicCommandStack());
+	}
+
+	public Resource buildResource() {
+		return buildEditingDomain().getResourceSet().createResource(URI.createURI("bogus://test/foo.xmi")); //$NON-NLS-1$
+	}
+
+	public EMFEditNewChildFactoryBuilder addTemplate(Class<? extends EObject> owner, EReference reference,
+		EObject template) {
+		return addTemplates(owner, Collections.singletonMap(reference, template));
+	}
+
+	public EMFEditNewChildFactoryBuilder addTemplates(Class<? extends EObject> owner,
+		Map<EReference, EObject> templates) {
+		Map<EReference, EObject> merge = this.templates.get(owner);
+		if (merge == null) {
+			merge = new HashMap<EReference, EObject>();
+			this.templates.put(owner, merge);
+		}
+
+		merge.putAll(templates);
+		return this;
+	}
+
+	//
+	// Nested types
+	//
+
+	private static class NewChildFactory extends ItemProviderAdapter implements IEditingDomainItemProvider {
+		private final Map<EReference, EObject> templates;
+
+		NewChildFactory(AdapterFactory adapterFactory, Map<EReference, EObject> templates) {
+			super(adapterFactory);
+
+			this.templates = templates;
+		}
+
+		@Override
+		public boolean isAdapterForType(Object type) {
+			// I am a fake EMF.Edit item provider adapter, so I should respond like one
+			return type instanceof AdapterFactory || type == IEditingDomainItemProvider.class;
+		}
+
+		@Override
+		protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+			for (final Map.Entry<EReference, EObject> next : templates.entrySet()) {
+				newChildDescriptors.add(createChildParameter(next.getKey(), EcoreUtil.copy(next.getValue())));
+			}
+		}
+	}
+
+}
diff --git a/tests/org.eclipse.emfforms.core.services.datatemplate.test/src/org/eclipse/emfforms/internal/core/services/datatemplate/SelectSubclassAndTemplateWizard_PTest.java b/tests/org.eclipse.emfforms.core.services.datatemplate.test/src/org/eclipse/emfforms/internal/core/services/datatemplate/SelectSubclassAndTemplateWizard_PTest.java
new file mode 100644
index 0000000..4740d8e
--- /dev/null
+++ b/tests/org.eclipse.emfforms.core.services.datatemplate.test/src/org/eclipse/emfforms/internal/core/services/datatemplate/SelectSubclassAndTemplateWizard_PTest.java
@@ -0,0 +1,579 @@
+/*******************************************************************************
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * Lucas Koehler - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.emfforms.internal.core.services.datatemplate;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+import static org.mockito.Matchers.any;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import java.util.Collections;
+import java.util.LinkedHashSet;
+import java.util.Set;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EcorePackage;
+import org.eclipse.emf.ecp.view.test.common.swt.spi.SWTTestUtil;
+import org.eclipse.emfforms.common.Optional;
+import org.eclipse.emfforms.core.services.datatemplate.test.model.audit.AuditPackage;
+import org.eclipse.emfforms.datatemplate.DataTemplateFactory;
+import org.eclipse.emfforms.datatemplate.Template;
+import org.eclipse.emfforms.spi.localization.EMFFormsLocalizationService;
+import org.eclipse.jface.window.Window;
+import org.eclipse.jface.wizard.Wizard;
+import org.eclipse.jface.wizard.WizardDialog;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.SWTException;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.Table;
+import org.eclipse.swt.widgets.TableItem;
+import org.eclipse.swt.widgets.Tree;
+import org.eclipse.swt.widgets.TreeItem;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.invocation.InvocationOnMock;
+import org.mockito.stubbing.Answer;
+import org.osgi.framework.Bundle;
+
+/**
+ * Plugin tests for the {@link SelectSubclassAndTemplateWizard}.
+ * <p>
+ * <strong>Note:</strong> The wizard itself would be unit testable but the used selection composites use the
+ * LocalizationServiceHelper which only works in a Plugin execution context.
+ *
+ * @author Lucas Koehler
+ *
+ */
+public class SelectSubclassAndTemplateWizard_PTest {
+
+	private EMFFormsLocalizationService localizationService;
+	private Shell shell;
+
+	/**
+	 * @throws SWTException if the Shell cannot be instantiated
+	 */
+	@Before
+	public void setUp() throws SWTException {
+		localizationService = mock(EMFFormsLocalizationService.class);
+		when(localizationService.getString(any(Class.class), any(String.class))).thenReturn(""); //$NON-NLS-1$
+		when(localizationService.getString(any(Bundle.class), any(String.class))).thenAnswer(
+			new Answer<String>() {
+				@SuppressWarnings("nls")
+				@Override
+				public String answer(InvocationOnMock invocation) throws Throwable {
+					final String key = (String) invocation.getArguments()[1];
+					if ("_UI_AbstractSubUser_type".equals(key)) {
+						return "Abstract Sub User";
+					}
+					if ("_UI_AdminUser_type".equals(key)) {
+						return "Admin User";
+					}
+					if ("_UI_GuestUser_type".equals(key)) {
+						return "Guest User";
+					}
+					if ("_UI_PrivilegedUser_type".equals(key)) {
+						return "Privileged User";
+					}
+					if ("_UI_RegisteredUser_type".equals(key)) {
+						return "Registered User";
+					}
+					if ("_UI_UserGroup_type".equals(key)) {
+						return "User Group";
+					}
+					if ("_UI_User_type".equals(key)) {
+						return "User";
+					}
+					return "";
+				}
+			});
+		shell = new Shell();
+	}
+
+	@After
+	public void tearDown() {
+		shell.dispose();
+	}
+
+	/**
+	 * Tests the standard use case: first selecting an EClass and then a template on the next page.
+	 */
+	@Test
+	public void testSubClassAndTemplateSelection() {
+		// Add selectable EClasses
+		final LinkedHashSet<EClass> subClasses = new LinkedHashSet<EClass>();
+		subClasses.add(AuditPackage.eINSTANCE.getAdminUser());
+		subClasses.add(AuditPackage.eINSTANCE.getRegisteredUser());
+
+		// Configure templates
+		final Template template1 = createTemplate("AdminTemplate1", AuditPackage.eINSTANCE.getAdminUser()); //$NON-NLS-1$
+		final Template template2 = createTemplate("RegisteredUserTemplate1", //$NON-NLS-1$
+			AuditPackage.eINSTANCE.getRegisteredUser());
+
+		final LinkedHashSet<Template> templates = new LinkedHashSet<Template>();
+		templates.add(template1);
+		templates.add(template2);
+
+		// Create and open wizard
+		final SelectSubclassAndTemplateWizard wizard = new SelectSubclassAndTemplateWizard("Wizard", subClasses, //$NON-NLS-1$
+			templates, localizationService);
+
+		final WizardDialog wizardDialog = openWizardDialog(wizard);
+
+		// Get the wizard dialog's shell from our parent shell
+		final Shell wizardShell = shell.getShells()[0];
+		final Composite dialogComposite = (Composite) Composite.class.cast(wizardShell.getChildren()[0])
+			.getChildren()[0];
+
+		// Get wizard buttons
+		final Composite buttonComposite = getButtonComposite(wizardDialog);
+		final Composite innerButtonComposite = (Composite) buttonComposite.getChildren()[0];
+		final Button backButton = (Button) innerButtonComposite.getChildren()[0];
+		final Button nextButton = (Button) innerButtonComposite.getChildren()[1];
+		final Button cancelButton = (Button) buttonComposite.getChildren()[1];
+		final Button finishButton = (Button) buttonComposite.getChildren()[2];
+
+		// Get the composites containing the wizard pages
+		final Composite pagesComposite = (Composite) Composite.class.cast(dialogComposite.getChildren()[0])
+			.getChildren()[1];
+		final Composite subClassPageComposite = (Composite) pagesComposite.getChildren()[0];
+		final Composite templateSelectionPageComposite = (Composite) pagesComposite.getChildren()[1];
+
+		final Tree subClassTable = (Tree) subClassPageComposite.getChildren()[2];
+		assertEquals(2, subClassTable.getItemCount());
+
+		// Select the registered user class
+		final TreeItem item = selectTreeItem(subClassTable, 1);
+		SWTTestUtil.waitForUIThread();
+		assertEquals("RegisteredUser", item.getText()); //$NON-NLS-1$
+
+		// verify button enablement
+		assertFalse(backButton.isEnabled());
+		assertTrue(nextButton.isEnabled());
+		assertTrue(cancelButton.isEnabled());
+		assertFalse(finishButton.isEnabled());
+
+		// click next button and wait for next page
+		SWTTestUtil.clickButton(nextButton);
+		SWTTestUtil.waitForUIThread();
+
+		final Table templateTable = (Table) templateSelectionPageComposite.getChildren()[2];
+
+		// Next button must not be enabled on final page
+		assertFalse(nextButton.isEnabled());
+
+		assertEquals(2, templateTable.getItemCount());
+		selectTableItem(templateTable, 0);
+		SWTTestUtil.waitForUIThread();
+
+		// Finish
+		SWTTestUtil.clickButton(finishButton);
+		SWTTestUtil.waitForUIThread();
+
+		// Evaluate wizard result
+		assertEquals(Window.OK, wizardDialog.getReturnCode());
+		final Optional<Template> templateOptional = wizard.getSelectedTemplate();
+		assertTrue(templateOptional.isPresent());
+		assertEquals(template1, templateOptional.get());
+	}
+
+	/**
+	 * Test that the sub class selection page is skipped if there is only one selectable {@link EClass}.
+	 */
+	@Test
+	public void testTemplateSelectionOnly() {
+		// Only add one sub class
+		final LinkedHashSet<EClass> subClasses = new LinkedHashSet<EClass>();
+		subClasses.add(AuditPackage.eINSTANCE.getRegisteredUser());
+
+		// Configure templates
+		final Template template1 = createTemplate("AdminTemplate1", AuditPackage.eINSTANCE.getAdminUser()); //$NON-NLS-1$
+		final Template template2 = createTemplate("RegisteredUserTemplate1", //$NON-NLS-1$
+			AuditPackage.eINSTANCE.getRegisteredUser());
+
+		final LinkedHashSet<Template> templates = new LinkedHashSet<Template>();
+		templates.add(template1);
+		templates.add(template2);
+
+		// Create and open wizard
+		final SelectSubclassAndTemplateWizard wizard = new SelectSubclassAndTemplateWizard("Wizard", subClasses, //$NON-NLS-1$
+			templates, localizationService);
+		final WizardDialog wizardDialog = openWizardDialog(wizard);
+
+		// Get the wizard dialog's shell from our parent shell
+		final Shell wizardShell = shell.getShells()[0];
+		final Composite dialogComposite = (Composite) Composite.class.cast(wizardShell.getChildren()[0])
+			.getChildren()[0];
+
+		// Get wizard buttons
+		// final Composite buttonComposite = (Composite) Composite.class.cast(dialogComposite.getChildren()[1])
+		// .getChildren()[0];
+		final Composite buttonComposite = getButtonComposite(wizardDialog);
+		final Button cancelButton = (Button) buttonComposite.getChildren()[0];
+		final Button finishButton = (Button) buttonComposite.getChildren()[1];
+
+		// Get the composites containing the template selection page
+		final Composite pagesComposite = (Composite) Composite.class.cast(dialogComposite.getChildren()[0])
+			.getChildren()[1];
+		final Composite templateSelectionPageComposite = (Composite) pagesComposite.getChildren()[0];
+
+		// Verify that the wizard starts at the template selection page
+		assertTrue(wizardDialog.getCurrentPage() instanceof SelectSubclassAndTemplateWizard.TemplateSelectionPage);
+
+		SWTTestUtil.waitForUIThread();
+
+		assertTrue(cancelButton.isEnabled());
+		assertFalse(finishButton.isEnabled());
+
+		final Table templateTable = (Table) templateSelectionPageComposite.getChildren()[2];
+
+		assertEquals(2, templateTable.getItemCount());
+		selectTableItem(templateTable, 0);
+		SWTTestUtil.waitForUIThread();
+
+		// Finish
+		assertTrue(finishButton.isEnabled());
+		SWTTestUtil.clickButton(finishButton);
+		SWTTestUtil.waitForUIThread();
+
+		// Evaluate wizard result
+		assertEquals(Window.OK, wizardDialog.getReturnCode());
+		final Optional<Template> templateOptional = wizard.getSelectedTemplate();
+		assertTrue(templateOptional.isPresent());
+		assertEquals(template1, templateOptional.get());
+	}
+
+	/**
+	 * Tests that the template selection page is not shown if there is only one template for the selected EClass.
+	 */
+	@Test
+	public void testSubClassSelectionOnly() {
+		// Add selectable EClasses
+		final LinkedHashSet<EClass> subClasses = new LinkedHashSet<EClass>();
+		subClasses.add(AuditPackage.eINSTANCE.getAdminUser());
+		subClasses.add(AuditPackage.eINSTANCE.getGuestUser());
+
+		// Configure templates
+		final Template template1 = createTemplate("AdminTemplate1", AuditPackage.eINSTANCE.getAdminUser()); //$NON-NLS-1$
+		final Template template2 = createTemplate("GuestUserTemplate1", AuditPackage.eINSTANCE.getGuestUser()); //$NON-NLS-1$
+
+		final LinkedHashSet<Template> templates = new LinkedHashSet<Template>();
+		templates.add(template1);
+		templates.add(template2);
+
+		// Create and open wizard
+		final SelectSubclassAndTemplateWizard wizard = new SelectSubclassAndTemplateWizard("Wizard", subClasses, //$NON-NLS-1$
+			templates, localizationService);
+		final WizardDialog wizardDialog = openWizardDialog(wizard);
+
+		SWTTestUtil.waitForUIThread();
+
+		// Get the wizard dialog's shell from our parent shell
+		final Shell wizardShell = shell.getShells()[0];
+		final Composite dialogComposite = (Composite) Composite.class.cast(wizardShell.getChildren()[0])
+			.getChildren()[0];
+
+		// Get wizard buttons
+		final Composite buttonComposite = getButtonComposite(wizardDialog);
+		final Composite innerButtonComposite = (Composite) buttonComposite.getChildren()[0];
+		final Button backButton = (Button) innerButtonComposite.getChildren()[0];
+		final Button nextButton = (Button) innerButtonComposite.getChildren()[1];
+		final Button cancelButton = (Button) buttonComposite.getChildren()[1];
+		final Button finishButton = (Button) buttonComposite.getChildren()[2];
+
+		// Get the composites containing the wizard pages
+		final Composite pagesComposite = (Composite) Composite.class.cast(dialogComposite.getChildren()[0])
+			.getChildren()[1];
+		final Composite subClassPageComposite = (Composite) pagesComposite.getChildren()[0];
+
+		final Tree subClassTree = (Tree) subClassPageComposite.getChildren()[2];
+		assertEquals(2, subClassTree.getItemCount());
+
+		// Select the guest user class
+		final TreeItem item = selectTreeItem(subClassTree, 1);
+		SWTTestUtil.waitForUIThread();
+		assertEquals("GuestUser", item.getText()); //$NON-NLS-1$
+
+		// Because there is only one template for the guest user EClass the wizard should offer to finish directly but
+		// not to go to the template selection page
+		assertFalse(backButton.isEnabled());
+		assertFalse(nextButton.isEnabled());
+		assertTrue(cancelButton.isEnabled());
+		assertTrue(finishButton.isEnabled());
+
+		// Finish
+		SWTTestUtil.clickButton(finishButton);
+		SWTTestUtil.waitForUIThread();
+
+		// Evaluate wizard result
+		assertEquals(Window.OK, wizardDialog.getReturnCode());
+		final Optional<Template> templateOptional = wizard.getSelectedTemplate();
+		assertTrue(templateOptional.isPresent());
+		assertEquals(template2, templateOptional.get());
+	}
+
+	/**
+	 * Tests that the template selection table gets updated correctly after the back functionality of the wizard was
+	 * used.
+	 */
+	@Test
+	public void testBackButton() {
+		// Add selectable EClasses
+		final LinkedHashSet<EClass> subClasses = new LinkedHashSet<EClass>();
+		subClasses.add(AuditPackage.eINSTANCE.getAdminUser());
+		subClasses.add(AuditPackage.eINSTANCE.getGuestUser());
+
+		// Configure 2 templates for each EClass
+		final Template adminTemplate1 = createTemplate("AdminTemplate1", AuditPackage.eINSTANCE.getAdminUser()); //$NON-NLS-1$
+		final Template adminTemplate2 = createTemplate("AdminTemplate2", AuditPackage.eINSTANCE.getAdminUser()); //$NON-NLS-1$
+		final Template guestTemplate1 = createTemplate("GuestUserTemplate1", AuditPackage.eINSTANCE.getGuestUser()); //$NON-NLS-1$
+		final Template guestTemplate2 = createTemplate("GuestUserTemplate2", AuditPackage.eINSTANCE.getGuestUser()); //$NON-NLS-1$
+
+		final LinkedHashSet<Template> templates = new LinkedHashSet<Template>();
+		templates.add(adminTemplate1);
+		templates.add(adminTemplate2);
+		templates.add(guestTemplate1);
+		templates.add(guestTemplate2);
+
+		// Create and open wizard
+		final SelectSubclassAndTemplateWizard wizard = new SelectSubclassAndTemplateWizard("Wizard", subClasses, //$NON-NLS-1$
+			templates, localizationService);
+		final WizardDialog wizardDialog = openWizardDialog(wizard);
+
+		// Get the wizard dialog's shell from our parent shell
+		final Shell wizardShell = shell.getShells()[0];
+		final Composite dialogComposite = (Composite) Composite.class.cast(wizardShell.getChildren()[0])
+			.getChildren()[0];
+
+		// Get wizard buttons
+		final Composite buttonComposite = getButtonComposite(wizardDialog);
+		final Composite innerButtonComposite = (Composite) buttonComposite.getChildren()[0];
+		final Button backButton = (Button) innerButtonComposite.getChildren()[0];
+		final Button nextButton = (Button) innerButtonComposite.getChildren()[1];
+		// final Button cancelButton = (Button) buttonComposite.getChildren()[1];
+		final Button finishButton = (Button) buttonComposite.getChildren()[2];
+
+		// Get the composites containing the wizard pages
+		final Composite pagesComposite = (Composite) Composite.class.cast(dialogComposite.getChildren()[0])
+			.getChildren()[1];
+		final Composite subClassPageComposite = (Composite) pagesComposite.getChildren()[0];
+		final Composite templateSelectionPageComposite = (Composite) pagesComposite.getChildren()[1];
+
+		final Tree subClassTable = (Tree) subClassPageComposite.getChildren()[2];
+		assertEquals(2, subClassTable.getItemCount());
+
+		// Select the admin user class
+		selectTreeItem(subClassTable, 0);
+
+		SWTTestUtil.waitForUIThread();
+
+		// Next
+		SWTTestUtil.clickButton(nextButton);
+		SWTTestUtil.waitForUIThread();
+
+		final Table templateTable = (Table) templateSelectionPageComposite.getChildren()[2];
+
+		assertEquals(2, templateTable.getItemCount());
+		assertTrue(templateTable.getItem(0).getText().contains("AdminTemplate1")); //$NON-NLS-1$
+		assertTrue(templateTable.getItem(1).getText().contains("AdminTemplate2")); //$NON-NLS-1$
+
+		// Go back
+		SWTTestUtil.waitForUIThread();
+		SWTTestUtil.clickButton(backButton);
+
+		// Select guest user class and click next again
+		selectTreeItem(subClassTable, 1);
+		SWTTestUtil.waitForUIThread();
+		assertTrue(nextButton.isEnabled());
+		SWTTestUtil.clickButton(nextButton);
+		SWTTestUtil.waitForUIThread();
+
+		// Verify that the template selection table was updated correctly
+		assertEquals(2, templateTable.getItemCount());
+		assertTrue(templateTable.getItem(0).getText().contains("GuestUserTemplate1")); //$NON-NLS-1$
+		assertTrue(templateTable.getItem(1).getText().contains("GuestUserTemplate2")); //$NON-NLS-1$
+
+		selectTableItem(templateTable, 1);
+		SWTTestUtil.clickButton(finishButton);
+		SWTTestUtil.waitForUIThread();
+
+		// Evaluate wizard result
+		assertEquals(Window.OK, wizardDialog.getReturnCode());
+		final Optional<Template> templateOptional = wizard.getSelectedTemplate();
+		assertTrue(templateOptional.isPresent());
+		assertEquals(guestTemplate2, templateOptional.get());
+	}
+
+	/**
+	 * If the wizard is cancelled it should return an empty Optional as a result even if a template was selected by the
+	 * user.
+	 */
+	@Test
+	public void testCancel() {
+		// Only add one sub class
+		final LinkedHashSet<EClass> subClasses = new LinkedHashSet<EClass>();
+		subClasses.add(AuditPackage.eINSTANCE.getRegisteredUser());
+
+		// Configure templates
+		final Template template1 = createTemplate("AdminTemplate1", AuditPackage.eINSTANCE.getAdminUser()); //$NON-NLS-1$
+		final Template template2 = createTemplate("RegisteredUserTemplate1", //$NON-NLS-1$
+			AuditPackage.eINSTANCE.getRegisteredUser());
+
+		final LinkedHashSet<Template> templates = new LinkedHashSet<Template>();
+		templates.add(template1);
+		templates.add(template2);
+
+		// Create and open wizard
+		final SelectSubclassAndTemplateWizard wizard = new SelectSubclassAndTemplateWizard("Wizard", subClasses, //$NON-NLS-1$
+			templates, localizationService);
+		final WizardDialog wizardDialog = openWizardDialog(wizard);
+
+		// Get the wizard dialog's shell from our parent shell
+		final Shell wizardShell = shell.getShells()[0];
+		final Composite dialogComposite = (Composite) Composite.class.cast(wizardShell.getChildren()[0])
+			.getChildren()[0];
+
+		// Get wizard buttons
+		final Composite buttonComposite = getButtonComposite(wizardDialog);
+		final Button cancelButton = (Button) buttonComposite.getChildren()[0];
+		final Button finishButton = (Button) buttonComposite.getChildren()[1];
+
+		// Get the composites containing the template selection page
+		final Composite pagesComposite = (Composite) Composite.class.cast(dialogComposite.getChildren()[0])
+			.getChildren()[1];
+		final Composite templateSelectionPageComposite = (Composite) pagesComposite.getChildren()[0];
+
+		// Verify that the wizard starts at the template selection page
+		assertTrue(wizardDialog.getCurrentPage() instanceof SelectSubclassAndTemplateWizard.TemplateSelectionPage);
+
+		assertTrue(cancelButton.isEnabled());
+		assertFalse(finishButton.isEnabled());
+
+		final Table templateTable = (Table) templateSelectionPageComposite.getChildren()[2];
+
+		// Select a template
+		assertEquals(2, templateTable.getItemCount());
+		selectTableItem(templateTable, 0);
+		SWTTestUtil.waitForUIThread();
+
+		// Cancel after a template was selected
+		assertTrue(cancelButton.isEnabled());
+		SWTTestUtil.clickButton(cancelButton);
+		SWTTestUtil.waitForUIThread();
+
+		// Evaluate wizard result: the result Optional should be empty
+		assertEquals(Window.CANCEL, wizardDialog.getReturnCode());
+		final Optional<Template> templateOptional = wizard.getSelectedTemplate();
+		assertFalse(templateOptional.isPresent());
+	}
+
+	@Test
+	public void testGetAvailableTemplates() {
+		final Set<EClass> subClasses = Collections.emptySet();
+		final Set<Template> templates = new LinkedHashSet<Template>();
+		// corupt eclass
+		final Template templateInvalid = mock(Template.class);
+		final EObject templateInstanceInvalid = mock(EObject.class);
+		when(templateInvalid.getInstance()).thenReturn(templateInstanceInvalid);
+		when(templateInstanceInvalid.eClass()).thenThrow(new IllegalArgumentException());
+		templates.add(templateInvalid);
+		// valid template
+		final Template templateValid = mock(Template.class);
+		final EObject templateInstanceValid = mock(EObject.class);
+		when(templateValid.getInstance()).thenReturn(templateInstanceValid);
+		when(templateInstanceValid.eClass()).thenReturn(EcorePackage.eINSTANCE.getEAttribute());
+		templates.add(templateValid);
+
+		final SelectSubclassAndTemplateWizard wizard = new SelectSubclassAndTemplateWizard("", subClasses, templates, //$NON-NLS-1$
+			localizationService);
+		final Set<Template> filteredTemplates = wizard.getAvailableTemplates(EcorePackage.eINSTANCE.getEAttribute());
+		assertEquals(1, filteredTemplates.size());
+		assertEquals(templateValid, filteredTemplates.iterator().next());
+	}
+
+	/**
+	 * Gets the button composite containing the cancel, finish, and sometimes the back and next buttons.
+	 *
+	 * @param wizardDialog The {@link WizardDialog} to get the button composite from
+	 * @return The {@link Composite} containing the wizard's buttons
+	 */
+	private Composite getButtonComposite(final WizardDialog wizardDialog) {
+		final Composite buttonBar = (Composite) wizardDialog.buttonBar;
+		// take the second as the first is a toolbar with help entries
+		final Composite buttonComposite = (Composite) buttonBar.getChildren()[1];
+		return buttonComposite;
+	}
+
+	/**
+	 * Selects the index in the given table and notifies the table's listeners about the selection
+	 *
+	 * @param table
+	 * @param index
+	 * @return the selected table item
+	 */
+	private TreeItem selectTreeItem(Tree tree, int index) {
+		tree.setSelection(tree.getItem(index));
+		final Event event = new Event();
+		event.type = SWT.Selection;
+		event.widget = tree;
+		final TreeItem result = tree.getItem(index);
+		event.item = result;
+		tree.notifyListeners(SWT.Selection, event);
+		return result;
+	}
+
+	private TableItem selectTableItem(Table table, int index) {
+		table.setSelection(index);
+		final Event event = new Event();
+		event.type = SWT.Selection;
+		event.widget = table;
+		final TableItem result = table.getItem(index);
+		event.item = result;
+		table.notifyListeners(SWT.Selection, event);
+		return result;
+	}
+
+	/**
+	 * Open the wizard in a wizard dialog and wait for the UI to finish opening it.
+	 *
+	 * @param wizard The wizard to open
+	 * @return The opened {@link WizardDialog}
+	 */
+	private WizardDialog openWizardDialog(final Wizard wizard) {
+		final WizardDialog wizardDialog = new WizardDialog(shell, wizard);
+		wizardDialog.setBlockOnOpen(false);
+		wizardDialog.open();
+		SWTTestUtil.waitForUIThread();
+		return wizardDialog;
+	}
+
+	/**
+	 * Creates a new {@link Template} with the given name and an instance of the given {@link EClass}
+	 *
+	 * @param name The template's name
+	 * @param instanceClass The instance's type
+	 * @return The created {@link Template}
+	 */
+	private Template createTemplate(String name, EClass instanceClass) {
+		final Template template = DataTemplateFactory.eINSTANCE.createTemplate();
+		template.setName(name);
+		final EObject instance = instanceClass.getEPackage().getEFactoryInstance().create(instanceClass);
+		template.setInstance(instance);
+		return template;
+	}
+}
diff --git a/tests/org.eclipse.emfforms.core.services.datatemplate.test/src/org/eclipse/emfforms/internal/core/services/datatemplate/TemplateCreateNewModelElementStrategyProvider_Test.java b/tests/org.eclipse.emfforms.core.services.datatemplate.test/src/org/eclipse/emfforms/internal/core/services/datatemplate/TemplateCreateNewModelElementStrategyProvider_Test.java
new file mode 100644
index 0000000..71424d3
--- /dev/null
+++ b/tests/org.eclipse.emfforms.core.services.datatemplate.test/src/org/eclipse/emfforms/internal/core/services/datatemplate/TemplateCreateNewModelElementStrategyProvider_Test.java
@@ -0,0 +1,236 @@
+/*******************************************************************************
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * Lucas Koehler - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.emfforms.internal.core.services.datatemplate;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import static org.mockito.Matchers.any;
+import static org.mockito.Matchers.same;
+import static org.mockito.Mockito.inOrder;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import java.util.Collection;
+import java.util.Hashtable;
+import java.util.LinkedHashSet;
+import java.util.Set;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecp.ui.view.swt.reference.CreateNewModelElementStrategy;
+import org.eclipse.emf.ecp.ui.view.swt.reference.EClassSelectionStrategy;
+import org.eclipse.emfforms.bazaar.Bid;
+import org.eclipse.emfforms.bazaar.Create;
+import org.eclipse.emfforms.common.Optional;
+import org.eclipse.emfforms.core.services.datatemplate.TemplateProvider;
+import org.eclipse.emfforms.core.services.datatemplate.test.model.audit.AdminUser;
+import org.eclipse.emfforms.core.services.datatemplate.test.model.audit.AuditFactory;
+import org.eclipse.emfforms.core.services.datatemplate.test.model.audit.AuditPackage;
+import org.eclipse.emfforms.datatemplate.DataTemplateFactory;
+import org.eclipse.emfforms.datatemplate.Template;
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.InOrder;
+import org.mockito.Matchers;
+import org.mockito.Mockito;
+import org.mockito.invocation.InvocationOnMock;
+import org.mockito.stubbing.Answer;
+import org.osgi.service.component.ComponentContext;
+
+/**
+ * Test cases for the TemplateCreateNewModelElementStrategyProvider and its provided strategy.
+ *
+ * @author Lucas Koehler
+ *
+ */
+public class TemplateCreateNewModelElementStrategyProvider_Test {
+
+	private TemplateCreateNewModelElementStrategyProvider strategyProvider;
+
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@Before
+	public void setUp() throws Exception {
+		strategyProvider = new TemplateCreateNewModelElementStrategyProvider();
+	}
+
+	@Test
+	public void testHandles_availableTemplates() {
+		final TemplateProvider canProvide = mock(TemplateProvider.class);
+		when(canProvide.canProvideTemplates(any(EObject.class), any(EReference.class))).thenReturn(true);
+
+		final TemplateProvider cannotProvide = mock(TemplateProvider.class);
+		when(cannotProvide.canProvideTemplates(any(EObject.class), any(EReference.class))).thenReturn(false);
+		strategyProvider.registerTemplateProvider(canProvide);
+		strategyProvider.registerTemplateProvider(cannotProvide);
+
+		final EObject eObject = mock(EObject.class);
+		final EReference eReference = mock(EReference.class);
+		assertTrue(strategyProvider.handles(eObject, eReference));
+		final InOrder inOrder = Mockito.inOrder(canProvide, cannotProvide);
+		inOrder.verify(canProvide, Mockito.times(1)).canProvideTemplates(any(EObject.class), any(EReference.class));
+		inOrder.verify(cannotProvide, Mockito.never()).canProvideTemplates(any(EObject.class), any(EReference.class));
+	}
+
+	@Test
+	public void testHandles_noAvailableTemplates() {
+		final TemplateProvider cannotProvide = mock(TemplateProvider.class);
+		when(cannotProvide.canProvideTemplates(any(EObject.class), any(EReference.class))).thenReturn(false);
+		strategyProvider.registerTemplateProvider(cannotProvide);
+
+		final EObject eObject = mock(EObject.class);
+		final EReference eReference = mock(EReference.class);
+		assertFalse(strategyProvider.handles(eObject, eReference));
+	}
+
+	@Test
+	public void testCollectAvailableTemplates() {
+		final TemplateProvider canProvide = mock(TemplateProvider.class);
+		when(canProvide.canProvideTemplates(any(EObject.class), any(EReference.class))).thenReturn(true);
+		final LinkedHashSet<Template> canProvideTemplates = new LinkedHashSet<Template>(2);
+		final Template template = mock(Template.class);
+		canProvideTemplates.add(template);
+		when(canProvide.provideTemplates(any(EObject.class), any(EReference.class))).thenReturn(canProvideTemplates);
+
+		final TemplateProvider cannotProvide = mock(TemplateProvider.class);
+		when(cannotProvide.canProvideTemplates(any(EObject.class), any(EReference.class))).thenReturn(false);
+		strategyProvider.registerTemplateProvider(canProvide);
+		strategyProvider.registerTemplateProvider(cannotProvide);
+
+		final EObject eObject = mock(EObject.class);
+		final EReference eReference = mock(EReference.class);
+		final Set<Template> templates = strategyProvider.collectAvailableTemplates(eObject, eReference);
+
+		assertEquals(1, templates.size());
+		assertTrue(templates.contains(template));
+
+		final InOrder canProvideOrder = inOrder(canProvide);
+		canProvideOrder.verify(canProvide).canProvideTemplates(same(eObject), same(eReference));
+		canProvideOrder.verify(canProvide).provideTemplates(same(eObject), same(eReference));
+		verify(cannotProvide).canProvideTemplates(same(eObject), same(eReference));
+		verify(cannotProvide, times(0)).provideTemplates(same(eObject), same(eReference));
+	}
+
+	/**
+	 * Simply test that a non-null strategy is created. The strategy's behavior is tested in separate test cases.
+	 */
+	@Test
+	public void testCreateNewModelELementStrategy() {
+		final ComponentContext componentContext = mock(ComponentContext.class);
+		when(componentContext.getProperties()).thenReturn(new Hashtable<String, Object>());
+
+		strategyProvider.activate(componentContext);
+
+		final CreateNewModelElementStrategy strategy = strategyProvider.createCreateNewModelElementStrategy();
+		assertNotNull(strategy);
+	}
+
+	@Test
+	public void testStrategy() {
+		final ComponentContext componentContext = mock(ComponentContext.class);
+		when(componentContext.getProperties()).thenReturn(new Hashtable<String, Object>());
+		strategyProvider.activate(componentContext);
+
+		final TemplateProvider canProvide = mock(TemplateProvider.class);
+		when(canProvide.canProvideTemplates(any(EObject.class), any(EReference.class))).thenReturn(true);
+		final LinkedHashSet<Template> canProvideTemplates = new LinkedHashSet<Template>(2);
+		final Template template = DataTemplateFactory.eINSTANCE.createTemplate();
+		final AdminUser adminUser = AuditFactory.eINSTANCE.createAdminUser();
+		adminUser.setDisplayName("Test"); //$NON-NLS-1$
+		template.setInstance(adminUser);
+		canProvideTemplates.add(template);
+		when(canProvide.provideTemplates(any(EObject.class), any(EReference.class))).thenReturn(canProvideTemplates);
+		strategyProvider.registerTemplateProvider(canProvide);
+
+		final EClassSelectionStrategy selectionStrategy = mock(EClassSelectionStrategy.class);
+		when(selectionStrategy.collectEClasses(any(EObject.class), any(EReference.class),
+			Matchers.<Collection<EClass>> any())).then(new Answer<Collection<EClass>>() {
+
+				@SuppressWarnings("unchecked")
+				@Override
+				public Collection<EClass> answer(InvocationOnMock invocation) throws Throwable {
+					return (Collection<EClass>) invocation.getArguments()[2];
+				}
+
+			});
+		strategyProvider
+			.addEClassSelectionStrategyProvider(new TestEClassSelectionStrategyProvider(1d, selectionStrategy));
+
+		final CreateNewModelElementStrategy strategy = strategyProvider.createCreateNewModelElementStrategy();
+
+		final EObject owner = AuditFactory.eINSTANCE.createUserGroup();
+		final EReference reference = AuditPackage.Literals.USER_GROUP__ADMINS;
+		final Optional<EObject> resultOptional = strategy.createNewModelElement(owner, reference);
+
+		assertTrue(resultOptional.isPresent());
+		assertTrue(resultOptional.get() instanceof AdminUser);
+		final AdminUser createdElement = (AdminUser) resultOptional.get();
+		assertEquals(adminUser.getDisplayName(), createdElement.getDisplayName());
+
+		verify(selectionStrategy).collectEClasses(same(owner), same(reference), Matchers.<Collection<EClass>> any());
+	}
+
+	@Test
+	public void testStrategyNoAvailableTemplate() {
+		final ComponentContext componentContext = mock(ComponentContext.class);
+		when(componentContext.getProperties()).thenReturn(new Hashtable<String, Object>());
+		strategyProvider.activate(componentContext);
+
+		final TemplateProvider canProvide = mock(TemplateProvider.class);
+		when(canProvide.canProvideTemplates(any(EObject.class), any(EReference.class))).thenReturn(false);
+		strategyProvider.registerTemplateProvider(canProvide);
+
+		final EClassSelectionStrategy selectionStrategy = mock(EClassSelectionStrategy.class);
+		strategyProvider
+			.addEClassSelectionStrategyProvider(new TestEClassSelectionStrategyProvider(1d, selectionStrategy));
+
+		final CreateNewModelElementStrategy strategy = strategyProvider.createCreateNewModelElementStrategy();
+
+		final EObject owner = mock(EObject.class);
+		final EReference reference = mock(EReference.class);
+		final Optional<EObject> resultOptional = strategy.createNewModelElement(owner, reference);
+
+		assertNotNull(resultOptional);
+		assertFalse(resultOptional.isPresent());
+
+		verify(selectionStrategy, times(0)).collectEClasses(any(EObject.class), any(EReference.class),
+			Matchers.<Collection<EClass>> any());
+	}
+
+	class TestEClassSelectionStrategyProvider implements EClassSelectionStrategy.Provider {
+		private final Double bid;
+		private final EClassSelectionStrategy strategy;
+
+		TestEClassSelectionStrategyProvider(Double bid, EClassSelectionStrategy strategy) {
+			super();
+
+			this.bid = bid;
+			this.strategy = strategy;
+		}
+
+		@Bid
+		public Double bid() {
+			return bid;
+		}
+
+		@Create
+		public EClassSelectionStrategy create() {
+			return strategy;
+		}
+	}
+}
diff --git a/tests/org.eclipse.emfforms.core.services.datatemplate.test/src/org/eclipse/emfforms/internal/core/services/datatemplate/XmiTemplateProvider_PTest.java b/tests/org.eclipse.emfforms.core.services.datatemplate.test/src/org/eclipse/emfforms/internal/core/services/datatemplate/XmiTemplateProvider_PTest.java
new file mode 100644
index 0000000..ad1fa02
--- /dev/null
+++ b/tests/org.eclipse.emfforms.core.services.datatemplate.test/src/org/eclipse/emfforms/internal/core/services/datatemplate/XmiTemplateProvider_PTest.java
@@ -0,0 +1,81 @@
+/*******************************************************************************
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * Lucas Koehler - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.emfforms.internal.core.services.datatemplate;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+
+import java.lang.reflect.Field;
+import java.util.Collection;
+import java.util.LinkedHashSet;
+import java.util.Map;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emfforms.core.services.datatemplate.TemplateProvider;
+import org.eclipse.emfforms.core.services.datatemplate.test.model.audit.AuditPackage;
+import org.eclipse.emfforms.datatemplate.Template;
+import org.junit.Test;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.FrameworkUtil;
+import org.osgi.framework.InvalidSyntaxException;
+import org.osgi.framework.ServiceReference;
+
+/**
+ * Tests that the {@link XmiTemplateProvider} correctly reads in the extension point
+ *
+ * @author Lucas Koehler
+ *
+ */
+public class XmiTemplateProvider_PTest {
+
+	/**
+	 * Tests that the extension point is read in correctly
+	 *
+	 * @throws InvalidSyntaxException
+	 * @throws SecurityException
+	 * @throws NoSuchFieldException
+	 * @throws IllegalAccessException
+	 */
+	@SuppressWarnings("unchecked")
+	@Test
+	public void testExtensionPoint() throws InvalidSyntaxException, NoSuchFieldException, SecurityException,
+		IllegalArgumentException, IllegalAccessException {
+		final BundleContext bundleContext = FrameworkUtil.getBundle(XmiTemplateProvider_PTest.class).getBundleContext();
+		final Collection<ServiceReference<TemplateProvider>> serviceReferences = bundleContext
+			.getServiceReferences(TemplateProvider.class, null);
+
+		XmiTemplateProvider provider = null;
+		for (final ServiceReference<TemplateProvider> ref : serviceReferences) {
+			final TemplateProvider service = bundleContext.getService(ref);
+			if (service instanceof XmiTemplateProvider) {
+				provider = (XmiTemplateProvider) service;
+				break;
+			}
+		}
+
+		assertNotNull("The XmiTemplateProvider was not registered", provider); //$NON-NLS-1$
+
+		// Get templates by reflection
+		final Field templatesField = provider.getClass().getDeclaredField("templates"); //$NON-NLS-1$
+		templatesField.setAccessible(true);
+		final Map<EClass, LinkedHashSet<Template>> templates = (Map<EClass, LinkedHashSet<Template>>) templatesField
+			.get(provider);
+
+		assertEquals(2, templates.keySet().size());
+		final LinkedHashSet<Template> set1 = templates.get(AuditPackage.eINSTANCE.getAdminUser());
+		assertEquals("There should be exactly one template for AdminUser", 1, set1.size()); //$NON-NLS-1$
+
+		final LinkedHashSet<Template> set2 = templates.get(AuditPackage.eINSTANCE.getRegisteredUser());
+		assertEquals("There should be exactly one template for RegisteredUser", 1, set2.size()); //$NON-NLS-1$
+	}
+
+}
diff --git a/tests/org.eclipse.emfforms.core.services.datatemplate.test/src/org/eclipse/emfforms/internal/core/services/datatemplate/XmiTemplateProvider_Test.java b/tests/org.eclipse.emfforms.core.services.datatemplate.test/src/org/eclipse/emfforms/internal/core/services/datatemplate/XmiTemplateProvider_Test.java
new file mode 100644
index 0000000..727c375
--- /dev/null
+++ b/tests/org.eclipse.emfforms.core.services.datatemplate.test/src/org/eclipse/emfforms/internal/core/services/datatemplate/XmiTemplateProvider_Test.java
@@ -0,0 +1,121 @@
+/*******************************************************************************
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * Lucas Koehler - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.emfforms.internal.core.services.datatemplate;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+import static org.mockito.Mockito.mock;
+
+import java.util.Set;
+
+import org.eclipse.emfforms.core.services.datatemplate.test.model.audit.AdminUser;
+import org.eclipse.emfforms.core.services.datatemplate.test.model.audit.AuditFactory;
+import org.eclipse.emfforms.core.services.datatemplate.test.model.audit.AuditPackage;
+import org.eclipse.emfforms.core.services.datatemplate.test.model.audit.GuestUser;
+import org.eclipse.emfforms.core.services.datatemplate.test.model.audit.RegisteredUser;
+import org.eclipse.emfforms.core.services.datatemplate.test.model.audit.User;
+import org.eclipse.emfforms.core.services.datatemplate.test.model.audit.UserGroup;
+import org.eclipse.emfforms.datatemplate.DataTemplateFactory;
+import org.eclipse.emfforms.datatemplate.Template;
+import org.eclipse.emfforms.spi.common.report.ReportService;
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ * JUnit tests for {@link XmiTemplateProvider}.
+ *
+ * @author Lucas Koehler
+ *
+ */
+public class XmiTemplateProvider_Test {
+
+	private XmiTemplateProvider provider;
+	private Template adminTemplate;
+	private Template guestTemplate;
+	private Template registeredTemplate;
+
+	@Before
+	public void setUp() {
+		adminTemplate = DataTemplateFactory.eINSTANCE.createTemplate();
+		adminTemplate.setName("Admin Template"); //$NON-NLS-1$
+		guestTemplate = DataTemplateFactory.eINSTANCE.createTemplate();
+		guestTemplate.setName("Guest Template"); //$NON-NLS-1$
+		registeredTemplate = DataTemplateFactory.eINSTANCE.createTemplate();
+		registeredTemplate.setName("Registered Template"); //$NON-NLS-1$
+
+		final AdminUser adminUser = AuditFactory.eINSTANCE.createAdminUser();
+		adminUser.setLogin("admin"); //$NON-NLS-1$
+		final GuestUser guestUser = AuditFactory.eINSTANCE.createGuestUser();
+		guestUser.setLogin("guest"); //$NON-NLS-1$
+		final RegisteredUser registeredUser = AuditFactory.eINSTANCE.createRegisteredUser();
+		registeredUser.setLogin("registered"); //$NON-NLS-1$
+
+		adminTemplate.setInstance(adminUser);
+		guestTemplate.setInstance(guestUser);
+		registeredTemplate.setInstance(registeredUser);
+
+		provider = new XmiTemplateProvider();
+		provider.setReportService(mock(ReportService.class));
+		provider.registerTemplate(adminTemplate);
+		provider.registerTemplate(guestTemplate);
+		provider.registerTemplate(registeredTemplate);
+	}
+
+	@Test
+	public void testCanProvideTemplates() {
+		final UserGroup group = AuditFactory.eINSTANCE.createUserGroup();
+		assertTrue(provider.canProvideTemplates(group, AuditPackage.Literals.USER_GROUP__ADMINS));
+		assertTrue(provider.canProvideTemplates(group, AuditPackage.Literals.USER_GROUP__USERS));
+		assertTrue(provider.canProvideTemplates(group, AuditPackage.Literals.USER__DELEGATES));
+		assertFalse(provider.canProvideTemplates(group, AuditPackage.Literals.USER__SUB_USERS));
+	}
+
+	@Test
+	public void testProvideTemplates() {
+		final UserGroup group = AuditFactory.eINSTANCE.createUserGroup();
+		final User user = AuditFactory.eINSTANCE.createGuestUser();
+
+		// Only the template for admin matches
+		final Set<Template> adminSet = provider.provideTemplates(group, AuditPackage.Literals.USER_GROUP__ADMINS);
+		assertEquals(1, adminSet.size());
+		assertEquals(adminTemplate, adminSet.iterator().next());
+
+		// Only the template for guest matches
+		final Set<Template> guestSet = provider.provideTemplates(group, AuditPackage.Literals.USER_GROUP__GUESTS);
+		assertEquals(1, guestSet.size());
+		assertEquals(guestTemplate, guestSet.iterator().next());
+
+		// The templates for registered and admin (sub class of registered) match
+		final Set<Template> registeredSet = provider.provideTemplates(group,
+			AuditPackage.Literals.USER_GROUP__REGISTERED_USERS);
+		assertEquals(2, registeredSet.size());
+		assertTrue(registeredSet.contains(adminTemplate));
+		assertTrue(registeredSet.contains(registeredTemplate));
+
+		// The template for admin (sub class of privileged) matches
+		final Set<Template> privilegedSet = provider.provideTemplates(group, AuditPackage.Literals.USER_GROUP__ADMINS);
+		assertEquals(1, privilegedSet.size());
+		assertEquals(adminTemplate, privilegedSet.iterator().next());
+
+		// All templates match (all other user classes are sub classes of User)
+		final Set<Template> userSet = provider.provideTemplates(group, AuditPackage.Literals.USER_GROUP__USERS);
+		assertEquals(3, userSet.size());
+		assertTrue(userSet.contains(adminTemplate));
+		assertTrue(userSet.contains(registeredTemplate));
+		assertTrue(userSet.contains(guestTemplate));
+
+		// No templates matches for sub-user
+		final Set<Template> userGroupSet = provider.provideTemplates(user, AuditPackage.Literals.USER__SUB_USERS);
+		assertEquals(0, userGroupSet.size());
+	}
+}
diff --git a/tests/org.eclipse.emfforms.core.services.datatemplate.test/templates.xmi b/tests/org.eclipse.emfforms.core.services.datatemplate.test/templates.xmi
new file mode 100644
index 0000000..f99723e
--- /dev/null
+++ b/tests/org.eclipse.emfforms.core.services.datatemplate.test/templates.xmi
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="ASCII"?>
+<org.eclipse.emfforms.datatemplate.model:TemplateCollection xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:org.eclipse.emfforms.core.services.datatemplate.test.model.audit="http://eclipse/org/emfforms/core/services/datatemplate/test/model/audit" xmlns:org.eclipse.emfforms.datatemplate.model="http://org/eclipse/emfforms/datatemplate/model">
+  <templates name="AdminTemplate">
+    <instance xsi:type="org.eclipse.emfforms.core.services.datatemplate.test.model.audit:AdminUser" login="admin" password="admin"/>
+  </templates>
+  <templates name="RegisteredUserTemplate">
+    <instance xsi:type="org.eclipse.emfforms.core.services.datatemplate.test.model.audit:RegisteredUser" displayName="Registered"/>
+  </templates>
+</org.eclipse.emfforms.datatemplate.model:TemplateCollection>
diff --git a/tests/org.eclipse.emfforms.core.services.domainexpander.default.tests/META-INF/MANIFEST.MF b/tests/org.eclipse.emfforms.core.services.domainexpander.default.tests/META-INF/MANIFEST.MF
index 46a143f..2da9ec6 100644
--- a/tests/org.eclipse.emfforms.core.services.domainexpander.default.tests/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.emfforms.core.services.domainexpander.default.tests/META-INF/MANIFEST.MF
@@ -2,12 +2,15 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Default Domain Expander Tests
 Bundle-SymbolicName: org.eclipse.emfforms.core.services.domainexpander.default.tests
-Bundle-Version: 1.16.0.qualifier
-Fragment-Host: org.eclipse.emfforms.core.services.domainexpander.default;bundle-version="[1.16.0,1.17.0)"
-Export-Package: org.eclipse.emfforms.core.services.domainexpander.defaultheuristic.tests;version="1.16.0";x-internal:=true,
-  org.eclipse.emfforms.internal.core.services.domainexpander.defaultheuristic;version="1.16.0";x-internal:=true
+Bundle-Version: 1.17.0.qualifier
+Fragment-Host: org.eclipse.emfforms.core.services.domainexpander.default;bundle-version="[1.17.0,1.18.0]"
+Export-Package: org.eclipse.emfforms.core.services.domainexpander.defaultheuristic.tests;version="1.17.0";x-internal:=true,
+ org.eclipse.emfforms.internal.core.services.domainexpander.defaultheuristic;version="1.17.0";x-internal:=true
 Require-Bundle: org.junit;bundle-version="[4.11.0,5.0.0)",
-  org.mockito.mockito-core-hamcrest-modified;bundle-version="[1.9.5,2.0.0)",
-  org.eclipse.emfforms.core.services.databinding.testmodel;bundle-version="[1.16.0,1.17.0)"
+ org.mockito.mockito-core-hamcrest-modified;bundle-version="[1.9.5,2.0.0)",
+ org.eclipse.emfforms.core.services.databinding.testmodel;bundle-version="[1.17.0,1.18.0]",
+ org.objenesis;bundle-version="[1.0.0,2.0.0)"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Import-Package: org.osgi.framework;version="1.3.0"
+Bundle-Vendor: Eclipse Modeling Project
+Automatic-Module-Name: org.eclipse.emfforms.core.services.domainexpander.default.tests
diff --git a/tests/org.eclipse.emfforms.core.services.domainexpander.default.tests/pom.xml b/tests/org.eclipse.emfforms.core.services.domainexpander.default.tests/pom.xml
index 297c591..2b43548 100644
--- a/tests/org.eclipse.emfforms.core.services.domainexpander.default.tests/pom.xml
+++ b/tests/org.eclipse.emfforms.core.services.domainexpander.default.tests/pom.xml
@@ -6,12 +6,12 @@
 	<parent>
 		<groupId>org.eclipse.emf.ecp</groupId>
 		<artifactId>ecp-tests-parent</artifactId>
-		<version>1.16.0-SNAPSHOT</version>
+		<version>1.17.0-SNAPSHOT</version>
 		<relativePath>../../releng/org.eclipse.emf.ecp.releng.tests/</relativePath>
 	</parent>
 	<groupId>org.eclipse.emf.ecp</groupId>
 	<artifactId>org.eclipse.emfforms.core.services.domainexpander.default.tests</artifactId>
-	<version>1.16.0-SNAPSHOT</version>
+	<version>1.17.0-SNAPSHOT</version>
 	<packaging>eclipse-test-plugin</packaging>
 	
 	<build>
diff --git a/tests/org.eclipse.emfforms.core.services.domainexpander.default.tests/src/org/eclipse/emfforms/internal/core/services/domainexpander/defaultheuristic/EMFFormsDMRExpanderDefaultHeuristic_Test.java b/tests/org.eclipse.emfforms.core.services.domainexpander.default.tests/src/org/eclipse/emfforms/internal/core/services/domainexpander/defaultheuristic/EMFFormsDMRExpanderDefaultHeuristic_Test.java
index 8d73443..c0a87e4 100644
--- a/tests/org.eclipse.emfforms.core.services.domainexpander.default.tests/src/org/eclipse/emfforms/internal/core/services/domainexpander/defaultheuristic/EMFFormsDMRExpanderDefaultHeuristic_Test.java
+++ b/tests/org.eclipse.emfforms.core.services.domainexpander.default.tests/src/org/eclipse/emfforms/internal/core/services/domainexpander/defaultheuristic/EMFFormsDMRExpanderDefaultHeuristic_Test.java
@@ -22,6 +22,7 @@
 import org.eclipse.emf.ecp.view.spi.model.VFeaturePathDomainModelReference;

 import org.eclipse.emf.ecp.view.spi.model.VViewFactory;

 import org.eclipse.emfforms.core.services.databinding.testmodel.test.model.A;

+import org.eclipse.emfforms.core.services.databinding.testmodel.test.model.D;

 import org.eclipse.emfforms.core.services.databinding.testmodel.test.model.TestFactory;

 import org.eclipse.emfforms.core.services.databinding.testmodel.test.model.TestPackage;

 import org.eclipse.emfforms.spi.common.report.ReportService;

@@ -143,6 +144,23 @@
 	}

 

 	/**

+	 * Tests that an invalid reference path does not cause an Exception

+	 * 

+	 * @throws EMFFormsExpandingFailedException

+	 */

+	@Test

+	public void testPrepareDomainObject_InvalidReferencePath() throws EMFFormsExpandingFailedException {

+		final VFeaturePathDomainModelReference reference = VViewFactory.eINSTANCE

+			.createFeaturePathDomainModelReference();

+		reference.getDomainModelEReferencePath().add(TestPackage.eINSTANCE.getDExtended_A());

+		reference.setDomainModelEFeature(TestPackage.eINSTANCE.getA_B());

+		final D d = TestFactory.eINSTANCE.createD();

+		domainExpander.prepareDomainObject(reference, d);

+		// Nothing to assert, the test simply checks that an invalid EReference in the reference path does not lead to

+		// an Exception

+	}

+

+	/**

 	 * Test method for

 	 * {@link org.eclipse.emfforms.internal.core.services.domainexpander.defaultheuristic.EMFFormsDMRExpanderDefaultHeuristic#prepareDomainObject(org.eclipse.emf.ecp.view.spi.model.VDomainModelReference, org.eclipse.emf.ecore.EObject)}

 	 * .

diff --git a/tests/org.eclipse.emfforms.core.services.domainexpander.index.tests/META-INF/MANIFEST.MF b/tests/org.eclipse.emfforms.core.services.domainexpander.index.tests/META-INF/MANIFEST.MF
index 20bf2dc..a515c8e 100644
--- a/tests/org.eclipse.emfforms.core.services.domainexpander.index.tests/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.emfforms.core.services.domainexpander.index.tests/META-INF/MANIFEST.MF
@@ -2,14 +2,15 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Index DMR Expander Tests
 Bundle-SymbolicName: org.eclipse.emfforms.core.services.domainexpander.index.tests
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Fragment-Host: org.eclipse.emfforms.core.services.domainexpander.index;bundle-version="[1.16.0,1.17.0)"
-Export-Package: org.eclipse.emfforms.core.services.domainexpander.index.tests;version="1.16.0";x-internal:=true,
-  org.eclipse.emfforms.internal.core.services.domainexpander.index;version="1.16.0";x-internal:=true
-Require-Bundle: org.eclipse.emfforms.core.services.databinding.testmodel;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.test.common;bundle-version="[1.16.0,1.17.0)",
-  org.junit;bundle-version="[4.11.0,5.0.0)",
-  org.mockito.mockito-core-hamcrest-modified;bundle-version="[1.9.5,2.0.0)"
+Fragment-Host: org.eclipse.emfforms.core.services.domainexpander.index;bundle-version="[1.17.0,1.18.0]"
+Export-Package: org.eclipse.emfforms.core.services.domainexpander.index.tests;version="1.17.0";x-internal:=true,
+ org.eclipse.emfforms.internal.core.services.domainexpander.index;version="1.17.0";x-internal:=true
+Require-Bundle: org.eclipse.emfforms.core.services.databinding.testmodel;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.test.common;bundle-version="[1.17.0,1.18.0]",
+ org.junit;bundle-version="[4.11.0,5.0.0)",
+ org.mockito.mockito-core-hamcrest-modified;bundle-version="[1.9.5,2.0.0)"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Import-Package: org.osgi.framework;version="1.3.0"
+Automatic-Module-Name: org.eclipse.emfforms.core.services.domainexpander.index.tests
diff --git a/tests/org.eclipse.emfforms.core.services.domainexpander.index.tests/pom.xml b/tests/org.eclipse.emfforms.core.services.domainexpander.index.tests/pom.xml
index 44b8ae0..c1c6cdb 100644
--- a/tests/org.eclipse.emfforms.core.services.domainexpander.index.tests/pom.xml
+++ b/tests/org.eclipse.emfforms.core.services.domainexpander.index.tests/pom.xml
@@ -6,12 +6,12 @@
 	<parent>
 		<groupId>org.eclipse.emf.ecp</groupId>
 		<artifactId>ecp-tests-parent</artifactId>
-		<version>1.16.0-SNAPSHOT</version>
+		<version>1.17.0-SNAPSHOT</version>
 		<relativePath>../../releng/org.eclipse.emf.ecp.releng.tests/</relativePath>
 	</parent>
 	<groupId>org.eclipse.emf.ecp</groupId>
 	<artifactId>org.eclipse.emfforms.core.services.domainexpander.index.tests</artifactId>
-	<version>1.16.0-SNAPSHOT</version>
+	<version>1.17.0-SNAPSHOT</version>
 	<packaging>eclipse-test-plugin</packaging>
 	
 	<build>
diff --git a/tests/org.eclipse.emfforms.core.services.domainexpander.keyattribute.tests/META-INF/MANIFEST.MF b/tests/org.eclipse.emfforms.core.services.domainexpander.keyattribute.tests/META-INF/MANIFEST.MF
index cc3dfbd..eb3012d 100644
--- a/tests/org.eclipse.emfforms.core.services.domainexpander.keyattribute.tests/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.emfforms.core.services.domainexpander.keyattribute.tests/META-INF/MANIFEST.MF
@@ -2,13 +2,14 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: KeyAttribute DMR Expander Tests
 Bundle-SymbolicName: org.eclipse.emfforms.core.services.domainexpander.keyattribute.tests
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Fragment-Host: org.eclipse.emfforms.core.services.domainexpander.keyattribute;bundle-version="[1.16.0,1.17.0)"
-Export-Package: org.eclipse.emfforms.core.services.domainexpander.keyattribute.tests;version="1.16.0";x-internal:=true,
-  org.eclipse.emfforms.internal.core.services.domainexpander.keyattribute;version="1.16.0";x-internal:=true
+Fragment-Host: org.eclipse.emfforms.core.services.domainexpander.keyattribute;bundle-version="[1.17.0,1.18.0]"
+Export-Package: org.eclipse.emfforms.core.services.domainexpander.keyattribute.tests;version="1.17.0";x-internal:=true,
+ org.eclipse.emfforms.internal.core.services.domainexpander.keyattribute;version="1.17.0";x-internal:=true
 Require-Bundle: org.junit;bundle-version="[4.11.0,5.0.0)",
-  org.mockito.mockito-core-hamcrest-modified;bundle-version="[1.9.5,2.0.0)",
-  org.eclipse.emf.ecp.test.common;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services.databinding.testmodel;bundle-version="[1.16.0,1.17.0)"
+ org.mockito.mockito-core-hamcrest-modified;bundle-version="[1.9.5,2.0.0)",
+ org.eclipse.emf.ecp.test.common;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services.databinding.testmodel;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Automatic-Module-Name: org.eclipse.emfforms.core.services.domainexpander.keyattribute.tests
diff --git a/tests/org.eclipse.emfforms.core.services.domainexpander.keyattribute.tests/pom.xml b/tests/org.eclipse.emfforms.core.services.domainexpander.keyattribute.tests/pom.xml
index 537bf3d..ce0f411 100644
--- a/tests/org.eclipse.emfforms.core.services.domainexpander.keyattribute.tests/pom.xml
+++ b/tests/org.eclipse.emfforms.core.services.domainexpander.keyattribute.tests/pom.xml
@@ -6,12 +6,12 @@
 	<parent>
 		<groupId>org.eclipse.emf.ecp</groupId>
 		<artifactId>ecp-tests-parent</artifactId>
-		<version>1.16.0-SNAPSHOT</version>
+		<version>1.17.0-SNAPSHOT</version>
 		<relativePath>../../releng/org.eclipse.emf.ecp.releng.tests/</relativePath>
 	</parent>
 	<groupId>org.eclipse.emf.ecp</groupId>
 	<artifactId>org.eclipse.emfforms.core.services.domainexpander.keyattribute.tests</artifactId>
-	<version>1.16.0-SNAPSHOT</version>
+	<version>1.17.0-SNAPSHOT</version>
 	<packaging>eclipse-test-plugin</packaging>
 	
 	<build>
diff --git a/tests/org.eclipse.emfforms.core.services.domainexpander.mapping.tests/META-INF/MANIFEST.MF b/tests/org.eclipse.emfforms.core.services.domainexpander.mapping.tests/META-INF/MANIFEST.MF
index 02767f0..9efefb6 100644
--- a/tests/org.eclipse.emfforms.core.services.domainexpander.mapping.tests/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.emfforms.core.services.domainexpander.mapping.tests/META-INF/MANIFEST.MF
@@ -2,12 +2,13 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Mapping DMR Expander Tests
 Bundle-SymbolicName: org.eclipse.emfforms.core.services.domainexpander.mapping.tests
-Bundle-Version: 1.16.0.qualifier
-Fragment-Host: org.eclipse.emfforms.core.services.domainexpander.mapping;bundle-version="[1.16.0,1.17.0)"
-Export-Package: org.eclipse.emfforms.core.services.domainexpander.mapping.tests;version="1.16.0";x-internal:=true,
-  org.eclipse.emfforms.internal.core.services.domainexpander.mapping;version="1.16.0";x-internal:=true
+Bundle-Version: 1.17.0.qualifier
+Fragment-Host: org.eclipse.emfforms.core.services.domainexpander.mapping;bundle-version="[1.17.0,1.18.0]"
+Export-Package: org.eclipse.emfforms.core.services.domainexpander.mapping.tests;version="1.17.0";x-internal:=true,
+ org.eclipse.emfforms.internal.core.services.domainexpander.mapping;version="1.17.0";x-internal:=true
 Require-Bundle: org.junit;bundle-version="[4.11.0,5.0.0)",
-  org.mockito.mockito-core-hamcrest-modified;bundle-version="[1.9.5,2.0.0)",
-  org.eclipse.emfforms.core.services.databinding.testmodel;bundle-version="[1.16.0,1.17.0)"
+ org.mockito.mockito-core-hamcrest-modified;bundle-version="[1.9.5,2.0.0)",
+ org.eclipse.emfforms.core.services.databinding.testmodel;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Import-Package: org.osgi.framework;version="1.3.0"
+Automatic-Module-Name: org.eclipse.emfforms.core.services.domainexpander.mapping.tests
diff --git a/tests/org.eclipse.emfforms.core.services.domainexpander.mapping.tests/pom.xml b/tests/org.eclipse.emfforms.core.services.domainexpander.mapping.tests/pom.xml
index 13b8661..12d3230 100644
--- a/tests/org.eclipse.emfforms.core.services.domainexpander.mapping.tests/pom.xml
+++ b/tests/org.eclipse.emfforms.core.services.domainexpander.mapping.tests/pom.xml
@@ -6,12 +6,12 @@
 	<parent>
 		<groupId>org.eclipse.emf.ecp</groupId>
 		<artifactId>ecp-tests-parent</artifactId>
-		<version>1.16.0-SNAPSHOT</version>
+		<version>1.17.0-SNAPSHOT</version>
 		<relativePath>../../releng/org.eclipse.emf.ecp.releng.tests/</relativePath>
 	</parent>
 	<groupId>org.eclipse.emf.ecp</groupId>
 	<artifactId>org.eclipse.emfforms.core.services.domainexpander.mapping.tests</artifactId>
-	<version>1.16.0-SNAPSHOT</version>
+	<version>1.17.0-SNAPSHOT</version>
 	<packaging>eclipse-test-plugin</packaging>
 	
 	<build>
diff --git a/tests/org.eclipse.emfforms.core.services.emf.tests/META-INF/MANIFEST.MF b/tests/org.eclipse.emfforms.core.services.emf.tests/META-INF/MANIFEST.MF
index 8554818..891c67c 100644
--- a/tests/org.eclipse.emfforms.core.services.emf.tests/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.emfforms.core.services.emf.tests/META-INF/MANIFEST.MF
@@ -2,15 +2,16 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: EMFForms Core Service EMF Tests
 Bundle-SymbolicName: org.eclipse.emfforms.core.services.emf.tests
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Fragment-Host: org.eclipse.emfforms.core.services.emf;bundle-version="[1.16.0,1.17.0)"
-Export-Package: org.eclipse.emfforms.core.services.emf.tests;version="1.16.0";x-internal:=true,
-  org.eclipse.emfforms.internal.core.services.databinding;version="1.16.0";x-internal:=true,
-  org.eclipse.emfforms.internal.core.services.label;version="1.16.0";x-internal:=true
+Fragment-Host: org.eclipse.emfforms.core.services.emf;bundle-version="[1.17.0,1.18.0]"
+Export-Package: org.eclipse.emfforms.core.services.emf.tests;version="1.17.0";x-internal:=true,
+ org.eclipse.emfforms.internal.core.services.databinding;version="1.17.0";x-internal:=true,
+ org.eclipse.emfforms.internal.core.services.label;version="1.17.0";x-internal:=true
 Require-Bundle: org.junit;bundle-version="[4.11.0,5.0.0)",
-  org.mockito.mockito-core-hamcrest-modified;bundle-version="[1.9.5,2.0.0)",
-  org.eclipse.emf.ecp.test.common;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services.databinding.testmodel;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.databinding;bundle-version="[1.3.0,2.0.0)"
+ org.mockito.mockito-core-hamcrest-modified;bundle-version="[1.9.5,2.0.0)",
+ org.eclipse.emf.ecp.test.common;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services.databinding.testmodel;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.databinding;bundle-version="[1.3.0,2.0.0)"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Automatic-Module-Name: org.eclipse.emfforms.core.services.emf.tests
diff --git a/tests/org.eclipse.emfforms.core.services.emf.tests/pom.xml b/tests/org.eclipse.emfforms.core.services.emf.tests/pom.xml
index 80f5112..5a69ef4 100644
--- a/tests/org.eclipse.emfforms.core.services.emf.tests/pom.xml
+++ b/tests/org.eclipse.emfforms.core.services.emf.tests/pom.xml
@@ -6,12 +6,12 @@
 	<parent>
 		<groupId>org.eclipse.emf.ecp</groupId>
 		<artifactId>ecp-tests-parent</artifactId>
-		<version>1.16.0-SNAPSHOT</version>
+		<version>1.17.0-SNAPSHOT</version>
 		<relativePath>../../releng/org.eclipse.emf.ecp.releng.tests/</relativePath>
 	</parent>
 	<groupId>org.eclipse.emf.ecp</groupId>
 	<artifactId>org.eclipse.emfforms.core.services.emf.tests</artifactId>
-	<version>1.16.0-SNAPSHOT</version>
+	<version>1.17.0-SNAPSHOT</version>
 	<packaging>eclipse-test-plugin</packaging>
 	
 	<build>
diff --git a/tests/org.eclipse.emfforms.core.services.legacy.tests/META-INF/MANIFEST.MF b/tests/org.eclipse.emfforms.core.services.legacy.tests/META-INF/MANIFEST.MF
index 2bc60df..6619763 100644
--- a/tests/org.eclipse.emfforms.core.services.legacy.tests/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.emfforms.core.services.legacy.tests/META-INF/MANIFEST.MF
@@ -2,12 +2,13 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: EMFForms Core Services Legacy Tests
 Bundle-SymbolicName: org.eclipse.emfforms.core.services.legacy.tests;singleton:=true
-Bundle-Version: 1.16.0.qualifier
-Fragment-Host: org.eclipse.emfforms.core.services.legacy;bundle-version="[1.16.0,1.17.0)"
-Export-Package: org.eclipse.emfforms.core.services.legacy.tests;version="1.16.0";x-internal:=true,
-  org.eclipse.emfforms.internal.core.services.legacy;version="1.16.0";x-internal:=true
+Bundle-Version: 1.17.0.qualifier
+Fragment-Host: org.eclipse.emfforms.core.services.legacy;bundle-version="[1.17.0,1.18.0]"
+Export-Package: org.eclipse.emfforms.core.services.legacy.tests;version="1.17.0";x-internal:=true,
+ org.eclipse.emfforms.internal.core.services.legacy;version="1.17.0";x-internal:=true
 Require-Bundle: org.junit;bundle-version="[4.11.0,5.0.0)",
   org.mockito.mockito-core-hamcrest-modified;bundle-version="[1.9.5,2.0.0)"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
-Import-Package: org.eclipse.emfforms.common;version="[1.16.0,1.17.0)",
-  org.osgi.framework;version="[1.3.0,2.0.0)"
+Import-Package: org.eclipse.emfforms.common;version="[1.17.0,1.18.0]",
+ org.osgi.framework;version="[1.3.0,2.0.0)"
+Automatic-Module-Name: org.eclipse.emfforms.core.services.legacy.tests
diff --git a/tests/org.eclipse.emfforms.core.services.legacy.tests/pom.xml b/tests/org.eclipse.emfforms.core.services.legacy.tests/pom.xml
index c91b1c0..34d0d00 100644
--- a/tests/org.eclipse.emfforms.core.services.legacy.tests/pom.xml
+++ b/tests/org.eclipse.emfforms.core.services.legacy.tests/pom.xml
@@ -6,12 +6,12 @@
 	<parent>
 		<groupId>org.eclipse.emf.ecp</groupId>
 		<artifactId>ecp-tests-parent</artifactId>
-		<version>1.16.0-SNAPSHOT</version>
+		<version>1.17.0-SNAPSHOT</version>
 		<relativePath>../../releng/org.eclipse.emf.ecp.releng.tests/</relativePath>
 	</parent>
 	<groupId>org.eclipse.emf.ecp</groupId>
 	<artifactId>org.eclipse.emfforms.core.services.legacy.tests</artifactId>
-	<version>1.16.0-SNAPSHOT</version>
+	<version>1.17.0-SNAPSHOT</version>
 	<packaging>eclipse-test-plugin</packaging>
 
 	<build>
diff --git a/tests/org.eclipse.emfforms.core.services.mappingprovider.table.test/.checkstyle b/tests/org.eclipse.emfforms.core.services.mappingprovider.table.test/.checkstyle
new file mode 100644
index 0000000..24d357f
--- /dev/null
+++ b/tests/org.eclipse.emfforms.core.services.mappingprovider.table.test/.checkstyle
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<fileset-config file-format-version="1.2.0" simple-config="false" sync-formatter="false">
+  <local-check-config name="ESMCheckstyleTest" location="/org.eclipse.emf.ecp.releng/checkstyle/esmCheckstyleTest.xml" type="project" description="">
+    <additional-data name="protect-config-file" value="false"/>
+  </local-check-config>
+  <fileset name="Java Files" enabled="true" check-config-name="ESMCheckstyleTest" local="true">
+    <file-match-pattern match-pattern=".java" include-pattern="true"/>
+  </fileset>
+</fileset-config>
diff --git a/tests/org.eclipse.emfforms.core.services.mappingprovider.table.test/.classpath b/tests/org.eclipse.emfforms.core.services.mappingprovider.table.test/.classpath
new file mode 100644
index 0000000..ad32c83
--- /dev/null
+++ b/tests/org.eclipse.emfforms.core.services.mappingprovider.table.test/.classpath
@@ -0,0 +1,7 @@
+<?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.6"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/tests/org.eclipse.emfforms.core.services.mappingprovider.table.test/.project b/tests/org.eclipse.emfforms.core.services.mappingprovider.table.test/.project
new file mode 100644
index 0000000..3fd4f53
--- /dev/null
+++ b/tests/org.eclipse.emfforms.core.services.mappingprovider.table.test/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.emfforms.core.services.mappingprovider.table.test</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>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/tests/org.eclipse.emfforms.core.services.mappingprovider.table.test/.settings/org.eclipse.core.resources.prefs b/tests/org.eclipse.emfforms.core.services.mappingprovider.table.test/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..f548abb
--- /dev/null
+++ b/tests/org.eclipse.emfforms.core.services.mappingprovider.table.test/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,6 @@
+eclipse.preferences.version=1
+
+encoding//model/etypes.ecore=UTF-8
+
+
+encoding/<project>=UTF-8
diff --git a/tests/org.eclipse.emfforms.core.services.mappingprovider.table.test/.settings/org.eclipse.core.runtime.prefs b/tests/org.eclipse.emfforms.core.services.mappingprovider.table.test/.settings/org.eclipse.core.runtime.prefs
new file mode 100644
index 0000000..5a0ad22
--- /dev/null
+++ b/tests/org.eclipse.emfforms.core.services.mappingprovider.table.test/.settings/org.eclipse.core.runtime.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+line.separator=\n
diff --git a/tests/org.eclipse.emfforms.core.services.mappingprovider.table.test/.settings/org.eclipse.jdt.core.prefs b/tests/org.eclipse.emfforms.core.services.mappingprovider.table.test/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..c948297
--- /dev/null
+++ b/tests/org.eclipse.emfforms.core.services.mappingprovider.table.test/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,418 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.builder.cleanOutputFolder=clean
+org.eclipse.jdt.core.builder.duplicateResourceTask=warning
+org.eclipse.jdt.core.builder.invalidClasspath=abort
+org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
+org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=
+org.eclipse.jdt.core.circularClasspath=error
+org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
+org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
+org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error
+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.annotation.inheritNullAnnotations=disabled
+org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
+org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
+org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
+org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.6
+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.doc.comment.support=enabled
+org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
+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=enabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
+org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=disabled
+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.invalidJavadoc=warning
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=disabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=public
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
+org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=warning
+org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
+org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=public
+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=warning
+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.nonnullParameterAnnotationDropped=warning
+org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
+org.eclipse.jdt.core.compiler.problem.nullReference=warning
+org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
+org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
+org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
+org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
+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.syntacticNullAnalysisForFields=disabled
+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.unclosedCloseable=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=warning
+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.unusedTypeParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.source=1.6
+org.eclipse.jdt.core.compiler.taskCaseSensitive=enabled
+org.eclipse.jdt.core.compiler.taskPriorities=NORMAL,HIGH,HIGH,LOW,LOW,LOW,LOW,LOW,NORMAL
+org.eclipse.jdt.core.compiler.taskTags=TODO,FIXME,XXX,PERF,MEM,POLISH,@generated NOT,@ADDED,APITODO
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+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_binary_expression=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_method_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=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_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=false
+org.eclipse.jdt.core.formatter.comment.format_block_comments=true
+org.eclipse.jdt.core.formatter.comment.format_header=true
+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=do not 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=1
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=1
+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=do not 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_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_binary_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_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_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_unary_operator=do not 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_binary_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_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_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_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=false
+org.eclipse.jdt.core.formatter.join_wrapped_lines=false
+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=120
+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_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
+org.eclipse.jdt.core.incompatibleJDKLevel=ignore
+org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/tests/org.eclipse.emfforms.core.services.mappingprovider.table.test/.settings/org.eclipse.jdt.launching.prefs b/tests/org.eclipse.emfforms.core.services.mappingprovider.table.test/.settings/org.eclipse.jdt.launching.prefs
new file mode 100644
index 0000000..3bb2352
--- /dev/null
+++ b/tests/org.eclipse.emfforms.core.services.mappingprovider.table.test/.settings/org.eclipse.jdt.launching.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.launching.PREF_STRICTLY_COMPATIBLE_JRE_NOT_AVAILABLE=ignore
diff --git a/tests/org.eclipse.emfforms.core.services.mappingprovider.table.test/.settings/org.eclipse.jdt.ui.prefs b/tests/org.eclipse.emfforms.core.services.mappingprovider.table.test/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 0000000..8bc4bb4
--- /dev/null
+++ b/tests/org.eclipse.emfforms.core.services.mappingprovider.table.test/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,127 @@
+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_functional_interfaces=false
+cleanup.convert_to_enhanced_for_loop=false
+cleanup.correct_indentation=false
+cleanup.format_source_code=true
+cleanup.format_source_code_changes_only=false
+cleanup.insert_inferred_type_arguments=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=true
+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=true
+cleanup.remove_redundant_type_arguments=true
+cleanup.remove_trailing_whitespaces=true
+cleanup.remove_trailing_whitespaces_all=true
+cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_casts=false
+cleanup.remove_unnecessary_nls_tags=false
+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=true
+cleanup.remove_unused_private_types=true
+cleanup.sort_members=false
+cleanup.sort_members_all=false
+cleanup.use_anonymous_class_creation=false
+cleanup.use_blocks=true
+cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_lambda=true
+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.use_type_arguments=false
+cleanup_profile=_esmCleanUp
+cleanup_settings_version=2
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+formatter_profile=_esmFormatter
+formatter_settings_version=12
+org.eclipse.jdt.ui.exception.name=ex
+org.eclipse.jdt.ui.gettersetter.use.is=true
+org.eclipse.jdt.ui.javadoc=true
+org.eclipse.jdt.ui.keywordthis=false
+org.eclipse.jdt.ui.overrideannotation=true
+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 * Copyright (c) 2011-${year} EclipseSource Muenchen GmbH and others.\r\n * \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 * ${user} - initial API and implementation\r\n ******************************************************************************/</template><template autoinsert\="true" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * @author ${user}\r\n *\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment"/><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 * {@inheritDoc}\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">\t\t\t// TODO Auto-generated catch block\r\n\t\t\t// Do NOT catch all Exceptions ("catch (Exception e)")\r\n\t\t\t// Log AND handle Exceptions if possible \r\n            //\r\n            // You can just uncomment one of the lines below to log an exception\:\r\n\t\t\t// logException will show the logged excpetion to the user\r\n\t\t\t// ModelUtil.logException(${exception_var});\r\n\t\t\t// ModelUtil.logException("YOUR MESSAGE HERE", ${exception_var});\r\n\t\t\t// logWarning will only add the message to the error log\r\n\t\t\t// ModelUtil.logWarning("YOUR MESSAGE HERE", ${exception_var});\r\n\t\t\t// ModelUtil.logWarning("YOUR MESSAGE HERE");\r\n\t\t\t//\t\t\t\r\n\t\t\t// If handling is not possible declare and rethrow Exception</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_functional_interfaces=false
+sp_cleanup.convert_to_enhanced_for_loop=false
+sp_cleanup.correct_indentation=false
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.insert_inferred_type_arguments=false
+sp_cleanup.make_local_variable_final=true
+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=true
+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=true
+sp_cleanup.remove_redundant_type_arguments=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=false
+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=true
+sp_cleanup.remove_unused_private_types=true
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.use_anonymous_class_creation=false
+sp_cleanup.use_blocks=true
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_lambda=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
+sp_cleanup.use_type_arguments=false
diff --git a/tests/org.eclipse.emfforms.core.services.mappingprovider.table.test/.settings/org.eclipse.ltk.core.refactoring.prefs b/tests/org.eclipse.emfforms.core.services.mappingprovider.table.test/.settings/org.eclipse.ltk.core.refactoring.prefs
new file mode 100644
index 0000000..864e30f
--- /dev/null
+++ b/tests/org.eclipse.emfforms.core.services.mappingprovider.table.test/.settings/org.eclipse.ltk.core.refactoring.prefs
@@ -0,0 +1,3 @@
+#Thu Feb 04 09:44:24 CET 2010
+eclipse.preferences.version=1
+org.eclipse.ltk.core.refactoring.enable.project.refactoring.history=false
diff --git a/tests/org.eclipse.emfforms.core.services.mappingprovider.table.test/.settings/org.eclipse.pde.api.tools.prefs b/tests/org.eclipse.emfforms.core.services.mappingprovider.table.test/.settings/org.eclipse.pde.api.tools.prefs
new file mode 100644
index 0000000..e4e3c00
--- /dev/null
+++ b/tests/org.eclipse.emfforms.core.services.mappingprovider.table.test/.settings/org.eclipse.pde.api.tools.prefs
@@ -0,0 +1,97 @@
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_TYPE=Error
+API_USE_SCAN_FIELD_SEVERITY=Error
+API_USE_SCAN_METHOD_SEVERITY=Error
+API_USE_SCAN_TYPE_SEVERITY=Error
+CLASS_ELEMENT_TYPE_ADDED_METHOD=Error
+CLASS_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CLASS_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+CLASS_ELEMENT_TYPE_REMOVED_CONSTRUCTOR=Error
+CLASS_ELEMENT_TYPE_REMOVED_FIELD=Error
+CLASS_ELEMENT_TYPE_REMOVED_METHOD=Error
+CLASS_ELEMENT_TYPE_REMOVED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+ENUM_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ENUM_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ENUM_ELEMENT_TYPE_REMOVED_ENUM_CONSTANT=Error
+ENUM_ELEMENT_TYPE_REMOVED_FIELD=Error
+ENUM_ELEMENT_TYPE_REMOVED_METHOD=Error
+ENUM_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+FIELD_ELEMENT_TYPE_ADDED_VALUE=Error
+FIELD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+FIELD_ELEMENT_TYPE_CHANGED_FINAL_TO_NON_FINAL_STATIC_CONSTANT=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_TYPE=Error
+FIELD_ELEMENT_TYPE_CHANGED_VALUE=Error
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENT=Error
+FIELD_ELEMENT_TYPE_REMOVED_VALUE=Error
+ILLEGAL_EXTEND=Warning
+ILLEGAL_IMPLEMENT=Warning
+ILLEGAL_INSTANTIATE=Warning
+ILLEGAL_OVERRIDE=Warning
+ILLEGAL_REFERENCE=Warning
+INTERFACE_ELEMENT_TYPE_ADDED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_SUPER_INTERFACE_WITH_METHODS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+INVALID_JAVADOC_TAG=Warning
+INVALID_REFERENCE_IN_SYSTEM_LIBRARIES=Error
+LEAK_EXTEND=Warning
+LEAK_FIELD_DECL=Warning
+LEAK_IMPLEMENT=Warning
+LEAK_METHOD_PARAM=Warning
+LEAK_METHOD_RETURN_TYPE=Warning
+METHOD_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+METHOD_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+METHOD_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+MISSING_EE_DESCRIPTIONS=Error
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+UNUSED_PROBLEM_FILTERS=Ignore
+automatically_removed_unused_problem_filters=Disabled
+eclipse.preferences.version=1
+incompatible_api_component_version=Error
+incompatible_api_component_version_include_major_without_breaking_change=Disabled
+incompatible_api_component_version_include_minor_without_api_change=Disabled
+invalid_since_tag_version=Error
+malformed_since_tag=Error
+missing_since_tag=Error
+report_api_breakage_when_major_version_incremented=Disabled
+report_resolution_errors_api_component=Warning
diff --git a/tests/org.eclipse.emfforms.core.services.mappingprovider.table.test/.settings/org.eclipse.pde.prefs b/tests/org.eclipse.emfforms.core.services.mappingprovider.table.test/.settings/org.eclipse.pde.prefs
new file mode 100644
index 0000000..0bbee3c
--- /dev/null
+++ b/tests/org.eclipse.emfforms.core.services.mappingprovider.table.test/.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=1
+compilers.p.missing-version-import-package=1
+compilers.p.missing-version-require-bundle=1
+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.emfforms.core.services.mappingprovider.table.test/META-INF/MANIFEST.MF b/tests/org.eclipse.emfforms.core.services.mappingprovider.table.test/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..9afe3f5
--- /dev/null
+++ b/tests/org.eclipse.emfforms.core.services.mappingprovider.table.test/META-INF/MANIFEST.MF
@@ -0,0 +1,13 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Table Mapping Provider Tests
+Bundle-SymbolicName: org.eclipse.emfforms.core.services.mappingprovider.table.test
+Bundle-Version: 1.17.0.qualifier
+Bundle-Vendor: Eclipse Modeling Project
+Fragment-Host: org.eclipse.emfforms.core.services.mappingprovider.table;bundle-version="[1.17.0,1.18.0]"
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Require-Bundle: org.junit;bundle-version="[4.12.0,5.0.0)",
+ org.mockito.mockito-core-hamcrest-modified;bundle-version="[1.9.5,2.0.0)",
+ org.objenesis;bundle-version="[1.0.0,2.0.0)"
+Export-Package: org.eclipse.emfforms.core.services.mappingprovider.table.test;version="1.17.0";x-internal:=true,
+ org.eclipse.emfforms.internal.core.services.mappingprovider.table;version="1.17.0";x-internal:=true
diff --git a/tests/org.eclipse.emfforms.core.services.mappingprovider.table.test/build.properties b/tests/org.eclipse.emfforms.core.services.mappingprovider.table.test/build.properties
new file mode 100644
index 0000000..34d2e4d
--- /dev/null
+++ b/tests/org.eclipse.emfforms.core.services.mappingprovider.table.test/build.properties
@@ -0,0 +1,4 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+               .
diff --git a/tests/org.eclipse.emfforms.core.services.mappingprovider.table.test/pom.xml b/tests/org.eclipse.emfforms.core.services.mappingprovider.table.test/pom.xml
new file mode 100644
index 0000000..ee88d12
--- /dev/null
+++ b/tests/org.eclipse.emfforms.core.services.mappingprovider.table.test/pom.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
+	xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+	<modelVersion>4.0.0</modelVersion>
+	<parent>
+		<groupId>org.eclipse.emf.ecp</groupId>
+		<artifactId>ecp-tests-parent</artifactId>
+		<version>1.17.0-SNAPSHOT</version>
+		<relativePath>../../releng/org.eclipse.emf.ecp.releng.tests/</relativePath>
+	</parent>
+	<groupId>org.eclipse.emf.ecp</groupId>
+	<artifactId>org.eclipse.emfforms.core.services.mappingprovider.table.test</artifactId>
+	<version>1.17.0-SNAPSHOT</version>
+	<packaging>eclipse-test-plugin</packaging>
+</project>
diff --git a/tests/org.eclipse.emfforms.core.services.mappingprovider.table.test/src/org/eclipse/emfforms/core/services/mappingprovider/table/test/AllTests.java b/tests/org.eclipse.emfforms.core.services.mappingprovider.table.test/src/org/eclipse/emfforms/core/services/mappingprovider/table/test/AllTests.java
new file mode 100644
index 0000000..a09d1d1
--- /dev/null
+++ b/tests/org.eclipse.emfforms.core.services.mappingprovider.table.test/src/org/eclipse/emfforms/core/services/mappingprovider/table/test/AllTests.java
@@ -0,0 +1,29 @@
+/*******************************************************************************
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * Lucas Koehler - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.emfforms.core.services.mappingprovider.table.test;
+
+import org.eclipse.emfforms.internal.core.services.mappingprovider.table.EMFFormsMappingProviderTable_Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Suite;
+import org.junit.runners.Suite.SuiteClasses;
+
+/**
+ * All unit tests for core.services.mappingprovider.table.
+ *
+ * @author Lucas Koehler
+ *
+ */
+@RunWith(Suite.class)
+@SuiteClasses({ EMFFormsMappingProviderTable_Test.class })
+public class AllTests {
+
+}
diff --git a/tests/org.eclipse.emfforms.core.services.mappingprovider.table.test/src/org/eclipse/emfforms/internal/core/services/mappingprovider/table/EMFFormsMappingProviderTable_Test.java b/tests/org.eclipse.emfforms.core.services.mappingprovider.table.test/src/org/eclipse/emfforms/internal/core/services/mappingprovider/table/EMFFormsMappingProviderTable_Test.java
new file mode 100644
index 0000000..38e2f5b
--- /dev/null
+++ b/tests/org.eclipse.emfforms.core.services.mappingprovider.table.test/src/org/eclipse/emfforms/internal/core/services/mappingprovider/table/EMFFormsMappingProviderTable_Test.java
@@ -0,0 +1,111 @@
+/*******************************************************************************
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * Lucas Koehler - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.emfforms.internal.core.services.mappingprovider.table;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+import static org.mockito.Matchers.any;
+import static org.mockito.Matchers.anyBoolean;
+import static org.mockito.Matchers.same;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import java.util.Collections;
+import java.util.Set;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EStructuralFeature.Setting;
+import org.eclipse.emf.ecp.common.spi.UniqueSetting;
+import org.eclipse.emf.ecp.view.spi.model.VDomainModelReference;
+import org.eclipse.emf.ecp.view.spi.model.VViewFactory;
+import org.eclipse.emf.ecp.view.spi.table.model.VTableDomainModelReference;
+import org.eclipse.emf.ecp.view.spi.table.model.VTableFactory;
+import org.eclipse.emfforms.spi.common.report.AbstractReport;
+import org.eclipse.emfforms.spi.common.report.ReportService;
+import org.eclipse.emfforms.spi.core.services.databinding.DatabindingFailedException;
+import org.eclipse.emfforms.spi.core.services.databinding.emf.EMFFormsDatabindingEMF;
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ * Unit tests for {@link EMFFormsMappingProviderTable}.
+ *
+ * @author Lucas Koehler
+ *
+ */
+public class EMFFormsMappingProviderTable_Test {
+
+	private EMFFormsMappingProviderTable provider;
+	private ReportService reportService;
+	private EMFFormsDatabindingEMF databinding;
+
+	@Before
+	public void setUp() {
+		provider = new EMFFormsMappingProviderTable();
+		reportService = mock(ReportService.class);
+		databinding = mock(EMFFormsDatabindingEMF.class);
+
+		provider.setReportService(reportService);
+		provider.setEMFFormsDatabinding(databinding);
+	}
+
+	/**
+	 * Tests that the get mapping for method does not fail and does not report an error if the data binding of a column
+	 * dmr fails.
+	 *
+	 * @throws DatabindingFailedException
+	 */
+	@SuppressWarnings("unchecked")
+	@Test
+	public void testGetMappingFor_InvalidColumnDmr() throws DatabindingFailedException {
+		final VTableDomainModelReference tableDmr = VTableFactory.eINSTANCE.createTableDomainModelReference();
+		final Setting tableSetting = mock(Setting.class);
+		when(tableSetting.get(anyBoolean())).thenReturn(Collections.singletonList(mock(EObject.class)));
+		final Setting columnValidSetting = mock(Setting.class);
+
+		// Return mocked EObject's to avoid the created unique settings being equal.
+		final EObject tableSettingEObject = mock(EObject.class);
+		final EObject columSettingEObject = mock(EObject.class);
+		when(tableSetting.getEObject()).thenReturn(tableSettingEObject);
+		when(columnValidSetting.getEObject()).thenReturn(columSettingEObject);
+
+		// Cannot mock dmrs because mocked dmrs cannot be added to an EList
+		final VDomainModelReference columnInvalid = VViewFactory.eINSTANCE.createFeaturePathDomainModelReference();
+		final VDomainModelReference columnValid = VViewFactory.eINSTANCE.createFeaturePathDomainModelReference();
+		tableDmr.getColumnDomainModelReferences().add(columnInvalid);
+		tableDmr.getColumnDomainModelReferences().add(columnValid);
+
+		when(databinding.getSetting(same(columnInvalid), any(EObject.class)))
+			.thenThrow(DatabindingFailedException.class);
+		when(databinding.getSetting(same(columnValid), any(EObject.class))).thenReturn(columnValidSetting);
+		when(databinding.getSetting(same(tableDmr), any(EObject.class))).thenReturn(tableSetting);
+
+		final Set<UniqueSetting> result = provider.getMappingFor(tableDmr, mock(EObject.class));
+
+		assertEquals(2, result.size());
+		assertTrue("Result must contain the table setting.", containsSettingWithEObject(result, tableSettingEObject)); //$NON-NLS-1$
+		assertTrue("Result must contain the valid column's setting.", //$NON-NLS-1$
+			containsSettingWithEObject(result, columSettingEObject));
+		verify(reportService, times(0)).report(any(AbstractReport.class));
+	}
+
+	private boolean containsSettingWithEObject(Set<UniqueSetting> set, EObject eObject) {
+		for (final UniqueSetting unique : set) {
+			if (unique.getEObject().equals(eObject)) {
+				return true;
+			}
+		}
+		return false;
+	}
+}
diff --git a/tests/org.eclipse.emfforms.core.services.structuralchange.keyattribute.tests/META-INF/MANIFEST.MF b/tests/org.eclipse.emfforms.core.services.structuralchange.keyattribute.tests/META-INF/MANIFEST.MF
index 5d93414..163ab70 100644
--- a/tests/org.eclipse.emfforms.core.services.structuralchange.keyattribute.tests/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.emfforms.core.services.structuralchange.keyattribute.tests/META-INF/MANIFEST.MF
@@ -2,12 +2,13 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Key Attribute Structural Change Tester Tests
 Bundle-SymbolicName: org.eclipse.emfforms.core.services.structuralchange.keyattribute.tests
-Bundle-Version: 1.16.0.qualifier
-Fragment-Host: org.eclipse.emfforms.core.services.structuralchange.keyattribute;bundle-version="[1.16.0,1.17.0)"
-Export-Package: org.eclipse.emfforms.core.services.structuralchange.keyattribute.tests;version="1.16.0";x-internal:=true,
-  org.eclipse.emfforms.internal.core.services.structuralchange.keyattribute;version="1.16.0";x-internal:=true
+Bundle-Version: 1.17.0.qualifier
+Fragment-Host: org.eclipse.emfforms.core.services.structuralchange.keyattribute;bundle-version="[1.17.0,1.18.0]"
+Export-Package: org.eclipse.emfforms.core.services.structuralchange.keyattribute.tests;version="1.17.0";x-internal:=true,
+ org.eclipse.emfforms.internal.core.services.structuralchange.keyattribute;version="1.17.0";x-internal:=true
 Require-Bundle: org.junit;bundle-version="[4.11.0,5.0.0)",
-  org.mockito.mockito-core-hamcrest-modified;bundle-version="[1.9.5,2.0.0)",
-  org.eclipse.emfforms.core.services.databinding.testmodel;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.common;bundle-version="[2.11.0,3.0.0)"
+ org.mockito.mockito-core-hamcrest-modified;bundle-version="[1.9.5,2.0.0)",
+ org.eclipse.emfforms.core.services.databinding.testmodel;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.common;bundle-version="[2.11.0,3.0.0)"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Automatic-Module-Name: org.eclipse.emfforms.core.services.structuralchange.keyattribute.tests
diff --git a/tests/org.eclipse.emfforms.core.services.structuralchange.keyattribute.tests/pom.xml b/tests/org.eclipse.emfforms.core.services.structuralchange.keyattribute.tests/pom.xml
index acb25d8..5239229 100644
--- a/tests/org.eclipse.emfforms.core.services.structuralchange.keyattribute.tests/pom.xml
+++ b/tests/org.eclipse.emfforms.core.services.structuralchange.keyattribute.tests/pom.xml
@@ -6,12 +6,12 @@
 	<parent>
 		<groupId>org.eclipse.emf.ecp</groupId>
 		<artifactId>ecp-tests-parent</artifactId>
-		<version>1.16.0-SNAPSHOT</version>
+		<version>1.17.0-SNAPSHOT</version>
 		<relativePath>../../releng/org.eclipse.emf.ecp.releng.tests/</relativePath>
 	</parent>
 	<groupId>org.eclipse.emf.ecp</groupId>
 	<artifactId>org.eclipse.emfforms.core.services.structuralchange.keyattribute.tests</artifactId>
-	<version>1.16.0-SNAPSHOT</version>
+	<version>1.17.0-SNAPSHOT</version>
 	<packaging>eclipse-test-plugin</packaging>
 	
 	<build>
diff --git a/tests/org.eclipse.emfforms.core.services.tests/META-INF/MANIFEST.MF b/tests/org.eclipse.emfforms.core.services.tests/META-INF/MANIFEST.MF
index d715713..1f0bb78 100644
--- a/tests/org.eclipse.emfforms.core.services.tests/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.emfforms.core.services.tests/META-INF/MANIFEST.MF
@@ -2,13 +2,14 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: EMFForms Core Services Tests
 Bundle-SymbolicName: org.eclipse.emfforms.core.services.tests
-Bundle-Version: 1.16.0.qualifier
-Fragment-Host: org.eclipse.emfforms.core.services;bundle-version="[1.16.0,1.17.0)"
-Export-Package: org.eclipse.emfforms.internal.core.services.scoped;version="1.16.0";x-internal:=true,
-  org.eclipse.emfforms.internal.core.services.tests;version="1.16.0";x-internal:=true
+Bundle-Version: 1.17.0.qualifier
+Fragment-Host: org.eclipse.emfforms.core.services;bundle-version="[1.17.0,1.18.0]"
+Export-Package: org.eclipse.emfforms.internal.core.services.scoped;version="1.17.0";x-internal:=true,
+ org.eclipse.emfforms.internal.core.services.tests;version="1.17.0";x-internal:=true
 Require-Bundle: org.junit;bundle-version="[4.11.0,5.0.0)",
   org.mockito.mockito-core-hamcrest-modified;bundle-version="[1.9.5,2.0.0)",
   org.eclipse.equinox.ds;bundle-version="[1.4.300,2.0.0)",
   org.objenesis;bundle-version="1.0.0"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Import-Package: org.osgi.framework;version="[1.3.0,2.0.0)"
+Automatic-Module-Name: org.eclipse.emfforms.core.services.tests
diff --git a/tests/org.eclipse.emfforms.core.services.tests/pom.xml b/tests/org.eclipse.emfforms.core.services.tests/pom.xml
index e7f2306..bcaf228 100644
--- a/tests/org.eclipse.emfforms.core.services.tests/pom.xml
+++ b/tests/org.eclipse.emfforms.core.services.tests/pom.xml
@@ -6,12 +6,12 @@
 	<parent>
 		<groupId>org.eclipse.emf.ecp</groupId>
 		<artifactId>ecp-tests-parent</artifactId>
-		<version>1.16.0-SNAPSHOT</version>
+		<version>1.17.0-SNAPSHOT</version>
 		<relativePath>../../releng/org.eclipse.emf.ecp.releng.tests/</relativePath>
 	</parent>
 	<groupId>org.eclipse.emf.ecp</groupId>
 	<artifactId>org.eclipse.emfforms.core.services.tests</artifactId>
-	<version>1.16.0-SNAPSHOT</version>
+	<version>1.17.0-SNAPSHOT</version>
 	<packaging>eclipse-test-plugin</packaging>
 
 	<build>
diff --git a/tests/org.eclipse.emfforms.core.services.tests/src/org/eclipse/emfforms/internal/core/services/scoped/EMFFormsViewServiceManagerImpl_Test.java b/tests/org.eclipse.emfforms.core.services.tests/src/org/eclipse/emfforms/internal/core/services/scoped/EMFFormsViewServiceManagerImpl_Test.java
new file mode 100644
index 0000000..021390c
--- /dev/null
+++ b/tests/org.eclipse.emfforms.core.services.tests/src/org/eclipse/emfforms/internal/core/services/scoped/EMFFormsViewServiceManagerImpl_Test.java
@@ -0,0 +1,186 @@
+/*******************************************************************************
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * eugen - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.emfforms.internal.core.services.scoped;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+import static org.mockito.Matchers.any;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EcoreFactory;
+import org.eclipse.emfforms.common.Optional;
+import org.eclipse.emfforms.spi.core.services.view.EMFFormsViewContext;
+import org.eclipse.emfforms.spi.core.services.view.EMFFormsViewServiceFactory;
+import org.eclipse.emfforms.spi.core.services.view.EMFFormsViewServicePolicy;
+import org.eclipse.emfforms.spi.core.services.view.EMFFormsViewServiceScope;
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ * @author eugen
+ *
+ */
+public class EMFFormsViewServiceManagerImpl_Test {
+
+	private EMFFormsViewServiceManagerImpl serviceManager;
+
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@Before
+	public void setUp() throws Exception {
+		serviceManager = new EMFFormsViewServiceManagerImpl();
+	}
+
+	@SuppressWarnings("unchecked")
+	@Test
+	public void testCreateLocalImmediateService_null() {
+		final EMFFormsViewServiceFactory<EClass> factory = mock(EMFFormsViewServiceFactory.class);
+		when(factory.getPolicy()).thenReturn(EMFFormsViewServicePolicy.IMMEDIATE);
+		when(factory.getScope()).thenReturn(EMFFormsViewServiceScope.LOCAL);
+		when(factory.getType()).thenReturn(EClass.class);
+		when(factory.createService(any(EMFFormsViewContext.class))).thenReturn(null);
+		serviceManager.addEMFFormsScopedServiceProvider(factory);
+		final Optional<?> service = serviceManager.createLocalImmediateService(EClass.class,
+			mock(EMFFormsViewContext.class));
+		assertFalse(service.isPresent());
+	}
+
+	@SuppressWarnings("unchecked")
+	@Test
+	public void testCreateLocalImmediateService_nonNull() {
+		final EMFFormsViewServiceFactory<EClass> factory = mock(EMFFormsViewServiceFactory.class);
+		when(factory.getPolicy()).thenReturn(EMFFormsViewServicePolicy.IMMEDIATE);
+		when(factory.getScope()).thenReturn(EMFFormsViewServiceScope.LOCAL);
+		when(factory.getType()).thenReturn(EClass.class);
+		when(factory.createService(any(EMFFormsViewContext.class))).thenReturn(EcoreFactory.eINSTANCE.createEClass());
+		serviceManager.addEMFFormsScopedServiceProvider(factory);
+		final Optional<?> service = serviceManager.createLocalImmediateService(EClass.class,
+			mock(EMFFormsViewContext.class));
+		assertTrue(service.isPresent());
+	}
+
+	@Test
+	public void testCreateLocalImmediateService_notExisting() {
+		final Optional<?> service = serviceManager.createLocalImmediateService(EClass.class,
+			mock(EMFFormsViewContext.class));
+		assertFalse(service.isPresent());
+	}
+
+	@SuppressWarnings("unchecked")
+	@Test
+	public void testCreateLocalLazyService_null() {
+		final EMFFormsViewServiceFactory<EClass> factory = mock(EMFFormsViewServiceFactory.class);
+		when(factory.getPolicy()).thenReturn(EMFFormsViewServicePolicy.LAZY);
+		when(factory.getScope()).thenReturn(EMFFormsViewServiceScope.LOCAL);
+		when(factory.getType()).thenReturn(EClass.class);
+		when(factory.createService(any(EMFFormsViewContext.class))).thenReturn(null);
+		serviceManager.addEMFFormsScopedServiceProvider(factory);
+		final Optional<?> service = serviceManager.createLocalLazyService(EClass.class,
+			mock(EMFFormsViewContext.class));
+		assertFalse(service.isPresent());
+	}
+
+	@SuppressWarnings("unchecked")
+	@Test
+	public void testCreateLocalLazyService_nonNull() {
+		final EMFFormsViewServiceFactory<EClass> factory = mock(EMFFormsViewServiceFactory.class);
+		when(factory.getPolicy()).thenReturn(EMFFormsViewServicePolicy.LAZY);
+		when(factory.getScope()).thenReturn(EMFFormsViewServiceScope.LOCAL);
+		when(factory.getType()).thenReturn(EClass.class);
+		when(factory.createService(any(EMFFormsViewContext.class))).thenReturn(EcoreFactory.eINSTANCE.createEClass());
+		serviceManager.addEMFFormsScopedServiceProvider(factory);
+		final Optional<?> service = serviceManager.createLocalLazyService(EClass.class,
+			mock(EMFFormsViewContext.class));
+		assertTrue(service.isPresent());
+	}
+
+	@Test
+	public void testCreateLocalLazyService_notExisting() {
+		final Optional<?> service = serviceManager.createLocalLazyService(EClass.class,
+			mock(EMFFormsViewContext.class));
+		assertFalse(service.isPresent());
+	}
+
+	@SuppressWarnings("unchecked")
+	@Test
+	public void testCreateGlobalImmediateService_null() {
+		final EMFFormsViewServiceFactory<EClass> factory = mock(EMFFormsViewServiceFactory.class);
+		when(factory.getPolicy()).thenReturn(EMFFormsViewServicePolicy.IMMEDIATE);
+		when(factory.getScope()).thenReturn(EMFFormsViewServiceScope.GLOBAL);
+		when(factory.getType()).thenReturn(EClass.class);
+		when(factory.createService(any(EMFFormsViewContext.class))).thenReturn(null);
+		serviceManager.addEMFFormsScopedServiceProvider(factory);
+		final Optional<?> service = serviceManager.createGlobalImmediateService(EClass.class,
+			mock(EMFFormsViewContext.class));
+		assertFalse(service.isPresent());
+	}
+
+	@SuppressWarnings("unchecked")
+	@Test
+	public void testCreateGlobalImmediateService_nonNull() {
+		final EMFFormsViewServiceFactory<EClass> factory = mock(EMFFormsViewServiceFactory.class);
+		when(factory.getPolicy()).thenReturn(EMFFormsViewServicePolicy.IMMEDIATE);
+		when(factory.getScope()).thenReturn(EMFFormsViewServiceScope.GLOBAL);
+		when(factory.getType()).thenReturn(EClass.class);
+		when(factory.createService(any(EMFFormsViewContext.class))).thenReturn(EcoreFactory.eINSTANCE.createEClass());
+		serviceManager.addEMFFormsScopedServiceProvider(factory);
+		final Optional<?> service = serviceManager.createGlobalImmediateService(EClass.class,
+			mock(EMFFormsViewContext.class));
+		assertTrue(service.isPresent());
+	}
+
+	@Test
+	public void testCreateGlobalImmediateService_notExisting() {
+		final Optional<?> service = serviceManager.createGlobalImmediateService(EClass.class,
+			mock(EMFFormsViewContext.class));
+		assertFalse(service.isPresent());
+	}
+
+	@SuppressWarnings("unchecked")
+	@Test
+	public void testCreateGlobalLazyService_null() {
+		final EMFFormsViewServiceFactory<EClass> factory = mock(EMFFormsViewServiceFactory.class);
+		when(factory.getPolicy()).thenReturn(EMFFormsViewServicePolicy.LAZY);
+		when(factory.getScope()).thenReturn(EMFFormsViewServiceScope.GLOBAL);
+		when(factory.getType()).thenReturn(EClass.class);
+		when(factory.createService(any(EMFFormsViewContext.class))).thenReturn(null);
+		serviceManager.addEMFFormsScopedServiceProvider(factory);
+		final Optional<?> service = serviceManager.createGlobalLazyService(EClass.class,
+			mock(EMFFormsViewContext.class));
+		assertFalse(service.isPresent());
+	}
+
+	@SuppressWarnings("unchecked")
+	@Test
+	public void testCreateGlobalLazyService_nonNull() {
+		final EMFFormsViewServiceFactory<EClass> factory = mock(EMFFormsViewServiceFactory.class);
+		when(factory.getPolicy()).thenReturn(EMFFormsViewServicePolicy.LAZY);
+		when(factory.getScope()).thenReturn(EMFFormsViewServiceScope.GLOBAL);
+		when(factory.getType()).thenReturn(EClass.class);
+		when(factory.createService(any(EMFFormsViewContext.class))).thenReturn(EcoreFactory.eINSTANCE.createEClass());
+		serviceManager.addEMFFormsScopedServiceProvider(factory);
+		final Optional<?> service = serviceManager.createGlobalLazyService(EClass.class,
+			mock(EMFFormsViewContext.class));
+		assertTrue(service.isPresent());
+	}
+
+	@Test
+	public void testCreateGlobalLazyService_notExisting() {
+		final Optional<?> service = serviceManager.createGlobalLazyService(EClass.class,
+			mock(EMFFormsViewContext.class));
+		assertFalse(service.isPresent());
+	}
+
+}
diff --git a/tests/org.eclipse.emfforms.core.services.tests/src/org/eclipse/emfforms/internal/core/services/scoped/SettingToControlMapper_ITest.java b/tests/org.eclipse.emfforms.core.services.tests/src/org/eclipse/emfforms/internal/core/services/scoped/SettingToControlMapper_ITest.java
index 12bbda3..848a5af 100644
--- a/tests/org.eclipse.emfforms.core.services.tests/src/org/eclipse/emfforms/internal/core/services/scoped/SettingToControlMapper_ITest.java
+++ b/tests/org.eclipse.emfforms.core.services.tests/src/org/eclipse/emfforms/internal/core/services/scoped/SettingToControlMapper_ITest.java
@@ -13,6 +13,10 @@
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
+import static org.mockito.Matchers.any;
+import static org.mockito.Matchers.same;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
 
 import java.text.MessageFormat;
 import java.util.ArrayList;
@@ -24,7 +28,9 @@
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 
+import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EcoreFactory;
 import org.eclipse.emf.ecore.EcorePackage;
 import org.eclipse.emf.ecore.util.EcoreUtil;
 import org.eclipse.emf.ecp.common.spi.UniqueSetting;
@@ -37,6 +43,8 @@
 import org.eclipse.emfforms.spi.core.services.mappingprovider.EMFFormsMappingProviderManager;
 import org.junit.Before;
 import org.junit.Test;
+import org.mockito.invocation.InvocationOnMock;
+import org.mockito.stubbing.Answer;
 
 public class SettingToControlMapper_ITest {
 
@@ -47,6 +55,7 @@
 	private EObject domainObject;
 	private VControl control;
 	private FakeViewContext context;
+	private EMFFormsMappingProviderManager mappingManager;
 
 	@Before
 	public void setup() {
@@ -56,17 +65,25 @@
 		view.getChildren().add(control);
 		domainObject = EcoreUtil.create(EcorePackage.eINSTANCE.getEClass());
 		context = new FakeViewContext(domainObject, view);
-		mapper = new SettingToControlMapperImpl(
-			new EMFFormsMappingProviderManager() {
+
+		mappingManager = mock(EMFFormsMappingProviderManager.class);
+		when(mappingManager.getAllSettingsFor(any(VDomainModelReference.class), any(EObject.class)))
+			.then(new Answer<Set<UniqueSetting>>() {
+
 				@Override
-				public Set<UniqueSetting> getAllSettingsFor(VDomainModelReference domainModelReference,
-					EObject domainObject) {
+				public Set<UniqueSetting> answer(InvocationOnMock invocation) throws Throwable {
 					final Set<UniqueSetting> settings = new LinkedHashSet<UniqueSetting>();
+					final Object[] arguments = invocation.getArguments();
 					settings.add(
-						UniqueSetting.createSetting(domainObject, EcorePackage.eINSTANCE.getEClass_EAttributes()));
+						UniqueSetting.createSetting((EObject) arguments[1],
+							EcorePackage.eINSTANCE.getEClass_EAttributes()));
+					settings.add(
+						UniqueSetting.createSetting((EObject) arguments[1],
+							EcorePackage.eINSTANCE.getEClass_EReferences()));
 					return settings;
 				}
-			}, context);
+			});
+		mapper = new SettingToControlMapperImpl(mappingManager, context);
 	}
 
 	@Test
@@ -138,6 +155,55 @@
 	}
 
 	@Test
+	public void childContextDisposed() {
+		// Add parent control to later verify that it is not illegally removed during child context disposal
+		mapper.vControlAdded(control);
+
+		// Setup and add child context with one control and one setting
+		final VView childView = VViewFactory.eINSTANCE.createView();
+		final VControl childControl = VViewFactory.eINSTANCE.createControl();
+		childControl.setDomainModelReference(EcorePackage.eINSTANCE.getEClass_EAttributes());
+		childView.getChildren().add(childControl);
+		final EClass childDomainObject = EcoreFactory.eINSTANCE.createEClass();
+		childDomainObject.setName("child"); //$NON-NLS-1$
+		final FakeViewContext childContext = new FakeViewContext(childDomainObject, childView);
+		context.addChildContext(control, childContext);
+
+		final UniqueSetting childSettingAttributes = UniqueSetting.createSetting(childDomainObject,
+			EcorePackage.eINSTANCE.getEClass_EAttributes());
+		final UniqueSetting childSettingReferences = UniqueSetting.createSetting(childDomainObject,
+			EcorePackage.eINSTANCE.getEClass_EReferences());
+		assertEquals(2, mapper.getControlsFor(childSettingAttributes).size());
+		assertEquals(2, mapper.getControlsFor(childSettingReferences).size());
+
+		// Verification that add control and add child context work is done by other test cases.
+
+		mapper.childContextDisposed(childContext);
+
+		// Verify that the mapping for the child setting is empty
+		final Set<UniqueSetting> settingsForControl = mapper.getSettingsForControl(childControl);
+		assertEquals(0, settingsForControl.size());
+
+		// Verify that after disposing the child context, the mapping from setting to parent control is also removed
+		assertEquals(0, mapper.getControlsFor(childSettingAttributes).size());
+		assertEquals(0, mapper.getControlsFor(childSettingReferences).size());
+
+		final UniqueSetting parentSetting = UniqueSetting.createSetting(domainObject,
+			EcorePackage.eINSTANCE.getEClass_EAttributes());
+
+		// Verify that disposing a child context does not clear the mapping of the parent's control
+		final Set<UniqueSetting> settingsForParentControl = mapper.getSettingsForControl(control);
+		assertEquals(2, settingsForParentControl.size());
+		assertTrue(settingsForParentControl.contains(parentSetting));
+
+		// Verify that disposing a child context does not clear the mapping of the parent's setting
+		final Set<VElement> controlsForParentSetting = mapper.getControlsFor(parentSetting);
+		assertEquals(1, controlsForParentSetting.size());
+		assertTrue(controlsForParentSetting.contains(control));
+
+	}
+
+	@Test
 	public void getControlsForGrandChildContextAdd() {
 		final VView childView = VViewFactory.eINSTANCE.createView();
 		final VControl childControl = VViewFactory.eINSTANCE.createControl();
@@ -195,4 +261,40 @@
 		// half a millisecond should be more then enough time
 		assertTrue(MessageFormat.format("Duration was {0}.", durationYs), durationYs < 500); //$NON-NLS-1$
 	}
+
+	@Test
+	public void childContextDisposed_533827_InfiniteLoop() {
+		// Add parent control to later verify that it is not illegally removed during child context disposal
+		mapper.vControlAdded(control);
+
+		// Setup and add child context with one control and one setting
+		final VView childView = VViewFactory.eINSTANCE.createView();
+		final VControl childControl = VViewFactory.eINSTANCE.createControl();
+		childControl.setDomainModelReference(EcorePackage.eINSTANCE.getEClass_EAttributes());
+		childView.getChildren().add(childControl);
+		final EClass childDomainObject = EcoreFactory.eINSTANCE.createEClass();
+		childDomainObject.setName("child"); //$NON-NLS-1$
+		final Set<UniqueSetting> uniqueSettings = Collections.emptySet();
+		when(mappingManager.getAllSettingsFor(same(childControl.getDomainModelReference()), any(EObject.class)))
+			.thenReturn(uniqueSettings);
+		final FakeViewContext childContext = new FakeViewContext(childDomainObject, childView);
+		context.addChildContext(control, childContext);
+
+		// Verification that add control and add child context work is done by other test cases.
+		// mapper.vControlRemoved(childControl);
+		mapper.childContextDisposed(childContext);
+
+		final UniqueSetting parentSetting = UniqueSetting.createSetting(domainObject,
+			EcorePackage.eINSTANCE.getEClass_EAttributes());
+
+		// Verify that disposing a child context does not clear the mapping of the parent's control
+		final Set<UniqueSetting> settingsForParentControl = mapper.getSettingsForControl(control);
+		assertEquals(2, settingsForParentControl.size());
+		assertTrue(settingsForParentControl.contains(parentSetting));
+
+		// Verify that disposing a child context does not clear the mapping of the parent's setting
+		final Set<VElement> controlsForParentSetting = mapper.getControlsFor(parentSetting);
+		assertEquals(1, controlsForParentSetting.size());
+		assertTrue(controlsForParentSetting.contains(control));
+	}
 }
diff --git a/tests/org.eclipse.emfforms.datatemplate.tooling.tests/.checkstyle b/tests/org.eclipse.emfforms.datatemplate.tooling.tests/.checkstyle
new file mode 100644
index 0000000..24d357f
--- /dev/null
+++ b/tests/org.eclipse.emfforms.datatemplate.tooling.tests/.checkstyle
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<fileset-config file-format-version="1.2.0" simple-config="false" sync-formatter="false">
+  <local-check-config name="ESMCheckstyleTest" location="/org.eclipse.emf.ecp.releng/checkstyle/esmCheckstyleTest.xml" type="project" description="">
+    <additional-data name="protect-config-file" value="false"/>
+  </local-check-config>
+  <fileset name="Java Files" enabled="true" check-config-name="ESMCheckstyleTest" local="true">
+    <file-match-pattern match-pattern=".java" include-pattern="true"/>
+  </fileset>
+</fileset-config>
diff --git a/tests/org.eclipse.emfforms.datatemplate.tooling.tests/.classpath b/tests/org.eclipse.emfforms.datatemplate.tooling.tests/.classpath
new file mode 100644
index 0000000..ad32c83
--- /dev/null
+++ b/tests/org.eclipse.emfforms.datatemplate.tooling.tests/.classpath
@@ -0,0 +1,7 @@
+<?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.6"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/tests/org.eclipse.emfforms.datatemplate.tooling.tests/.project b/tests/org.eclipse.emfforms.datatemplate.tooling.tests/.project
new file mode 100644
index 0000000..751bc40
--- /dev/null
+++ b/tests/org.eclipse.emfforms.datatemplate.tooling.tests/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.emfforms.datatemplate.tooling.tests</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>net.sf.eclipsecs.core.CheckstyleBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>net.sf.eclipsecs.core.CheckstyleNature</nature>
+	</natures>
+</projectDescription>
diff --git a/tests/org.eclipse.emfforms.datatemplate.tooling.tests/.settings/org.eclipse.core.resources.prefs b/tests/org.eclipse.emfforms.datatemplate.tooling.tests/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..f548abb
--- /dev/null
+++ b/tests/org.eclipse.emfforms.datatemplate.tooling.tests/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,6 @@
+eclipse.preferences.version=1
+
+encoding//model/etypes.ecore=UTF-8
+
+
+encoding/<project>=UTF-8
diff --git a/tests/org.eclipse.emfforms.datatemplate.tooling.tests/.settings/org.eclipse.core.runtime.prefs b/tests/org.eclipse.emfforms.datatemplate.tooling.tests/.settings/org.eclipse.core.runtime.prefs
new file mode 100644
index 0000000..5a0ad22
--- /dev/null
+++ b/tests/org.eclipse.emfforms.datatemplate.tooling.tests/.settings/org.eclipse.core.runtime.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+line.separator=\n
diff --git a/tests/org.eclipse.emfforms.datatemplate.tooling.tests/.settings/org.eclipse.jdt.core.prefs b/tests/org.eclipse.emfforms.datatemplate.tooling.tests/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..26d14e4
--- /dev/null
+++ b/tests/org.eclipse.emfforms.datatemplate.tooling.tests/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,418 @@
+eclipse.preferences.version=1

+org.eclipse.jdt.core.builder.cleanOutputFolder=clean

+org.eclipse.jdt.core.builder.duplicateResourceTask=warning

+org.eclipse.jdt.core.builder.invalidClasspath=abort

+org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore

+org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=

+org.eclipse.jdt.core.circularClasspath=error

+org.eclipse.jdt.core.classpath.exclusionPatterns=enabled

+org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled

+org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error

+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.annotation.inheritNullAnnotations=disabled

+org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore

+org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull

+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault

+org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable

+org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled

+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled

+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6

+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve

+org.eclipse.jdt.core.compiler.compliance=1.6

+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.doc.comment.support=enabled

+org.eclipse.jdt.core.compiler.maxProblemPerUnit=100

+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=enabled

+org.eclipse.jdt.core.compiler.problem.discouragedReference=warning

+org.eclipse.jdt.core.compiler.problem.emptyStatement=warning

+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error

+org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore

+org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning

+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=disabled

+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.invalidJavadoc=warning

+org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled

+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled

+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=disabled

+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=public

+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore

+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning

+org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore

+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning

+org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled

+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=warning

+org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore

+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled

+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public

+org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag

+org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore

+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled

+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled

+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=public

+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=warning

+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.nonnullParameterAnnotationDropped=warning

+org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error

+org.eclipse.jdt.core.compiler.problem.nullReference=warning

+org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error

+org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning

+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning

+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore

+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning

+org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore

+org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore

+org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning

+org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning

+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning

+org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore

+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning

+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.syntacticNullAnalysisForFields=disabled

+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.unclosedCloseable=warning

+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore

+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning

+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=warning

+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.unusedTypeParameter=ignore

+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning

+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning

+org.eclipse.jdt.core.compiler.source=1.6

+org.eclipse.jdt.core.compiler.taskCaseSensitive=enabled

+org.eclipse.jdt.core.compiler.taskPriorities=NORMAL,HIGH,HIGH,LOW,LOW,LOW,LOW,LOW,NORMAL

+org.eclipse.jdt.core.compiler.taskTags=TODO,FIXME,XXX,PERF,MEM,POLISH,@generated NOT,@ADDED,APITODO

+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false

+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_binary_expression=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_method_declaration=0

+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=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_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=false

+org.eclipse.jdt.core.formatter.comment.format_block_comments=true

+org.eclipse.jdt.core.formatter.comment.format_header=true

+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=do not 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=1

+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=1

+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=do not 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_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_binary_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_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_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_unary_operator=do not 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_binary_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_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_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_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=false

+org.eclipse.jdt.core.formatter.join_wrapped_lines=false

+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=120

+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_binary_operator=true

+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true

+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true

+org.eclipse.jdt.core.incompatibleJDKLevel=ignore

+org.eclipse.jdt.core.incompleteClasspath=error

diff --git a/tests/org.eclipse.emfforms.datatemplate.tooling.tests/.settings/org.eclipse.jdt.launching.prefs b/tests/org.eclipse.emfforms.datatemplate.tooling.tests/.settings/org.eclipse.jdt.launching.prefs
new file mode 100644
index 0000000..3bb2352
--- /dev/null
+++ b/tests/org.eclipse.emfforms.datatemplate.tooling.tests/.settings/org.eclipse.jdt.launching.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.launching.PREF_STRICTLY_COMPATIBLE_JRE_NOT_AVAILABLE=ignore
diff --git a/tests/org.eclipse.emfforms.datatemplate.tooling.tests/.settings/org.eclipse.jdt.ui.prefs b/tests/org.eclipse.emfforms.datatemplate.tooling.tests/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 0000000..8553926
--- /dev/null
+++ b/tests/org.eclipse.emfforms.datatemplate.tooling.tests/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,127 @@
+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_functional_interfaces=false

+cleanup.convert_to_enhanced_for_loop=false

+cleanup.correct_indentation=false

+cleanup.format_source_code=true

+cleanup.format_source_code_changes_only=false

+cleanup.insert_inferred_type_arguments=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=true

+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=true

+cleanup.remove_redundant_type_arguments=true

+cleanup.remove_trailing_whitespaces=true

+cleanup.remove_trailing_whitespaces_all=true

+cleanup.remove_trailing_whitespaces_ignore_empty=false

+cleanup.remove_unnecessary_casts=false

+cleanup.remove_unnecessary_nls_tags=false

+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=true

+cleanup.remove_unused_private_types=true

+cleanup.sort_members=false

+cleanup.sort_members_all=false

+cleanup.use_anonymous_class_creation=false

+cleanup.use_blocks=true

+cleanup.use_blocks_only_for_return_and_throw=false

+cleanup.use_lambda=true

+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.use_type_arguments=false

+cleanup_profile=_esmCleanUp

+cleanup_settings_version=2

+eclipse.preferences.version=1

+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true

+formatter_profile=_esmFormatter

+formatter_settings_version=12

+org.eclipse.jdt.ui.exception.name=ex

+org.eclipse.jdt.ui.gettersetter.use.is=true

+org.eclipse.jdt.ui.javadoc=true

+org.eclipse.jdt.ui.keywordthis=false

+org.eclipse.jdt.ui.overrideannotation=true

+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 * Copyright (c) 2011-${year} EclipseSource Muenchen GmbH and others.\r\n * \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 * ${user} - initial API and implementation\r\n ******************************************************************************/</template><template autoinsert\="true" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * @author ${user}\r\n *\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment"/><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 * {@inheritDoc}\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">\t\t\t// TODO Auto-generated catch block\r\n\t\t\t// Do NOT catch all Exceptions ("catch (Exception e)")\r\n\t\t\t// Log AND handle Exceptions if possible \r\n            //\r\n            // You can just uncomment one of the lines below to log an exception\:\r\n\t\t\t// logException will show the logged excpetion to the user\r\n\t\t\t// ModelUtil.logException(${exception_var});\r\n\t\t\t// ModelUtil.logException("YOUR MESSAGE HERE", ${exception_var});\r\n\t\t\t// logWarning will only add the message to the error log\r\n\t\t\t// ModelUtil.logWarning("YOUR MESSAGE HERE", ${exception_var});\r\n\t\t\t// ModelUtil.logWarning("YOUR MESSAGE HERE");\r\n\t\t\t//\t\t\t\r\n\t\t\t// If handling is not possible declare and rethrow Exception</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_functional_interfaces=false

+sp_cleanup.convert_to_enhanced_for_loop=false

+sp_cleanup.correct_indentation=false

+sp_cleanup.format_source_code=true

+sp_cleanup.format_source_code_changes_only=false

+sp_cleanup.insert_inferred_type_arguments=false

+sp_cleanup.make_local_variable_final=true

+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=true

+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=true

+sp_cleanup.remove_redundant_type_arguments=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=false

+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=true

+sp_cleanup.remove_unused_private_types=true

+sp_cleanup.sort_members=false

+sp_cleanup.sort_members_all=false

+sp_cleanup.use_anonymous_class_creation=false

+sp_cleanup.use_blocks=true

+sp_cleanup.use_blocks_only_for_return_and_throw=false

+sp_cleanup.use_lambda=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

+sp_cleanup.use_type_arguments=false

diff --git a/tests/org.eclipse.emfforms.datatemplate.tooling.tests/.settings/org.eclipse.ltk.core.refactoring.prefs b/tests/org.eclipse.emfforms.datatemplate.tooling.tests/.settings/org.eclipse.ltk.core.refactoring.prefs
new file mode 100644
index 0000000..864e30f
--- /dev/null
+++ b/tests/org.eclipse.emfforms.datatemplate.tooling.tests/.settings/org.eclipse.ltk.core.refactoring.prefs
@@ -0,0 +1,3 @@
+#Thu Feb 04 09:44:24 CET 2010
+eclipse.preferences.version=1
+org.eclipse.ltk.core.refactoring.enable.project.refactoring.history=false
diff --git a/tests/org.eclipse.emfforms.datatemplate.tooling.tests/.settings/org.eclipse.pde.api.tools.prefs b/tests/org.eclipse.emfforms.datatemplate.tooling.tests/.settings/org.eclipse.pde.api.tools.prefs
new file mode 100644
index 0000000..e4e3c00
--- /dev/null
+++ b/tests/org.eclipse.emfforms.datatemplate.tooling.tests/.settings/org.eclipse.pde.api.tools.prefs
@@ -0,0 +1,97 @@
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_TYPE=Error
+API_USE_SCAN_FIELD_SEVERITY=Error
+API_USE_SCAN_METHOD_SEVERITY=Error
+API_USE_SCAN_TYPE_SEVERITY=Error
+CLASS_ELEMENT_TYPE_ADDED_METHOD=Error
+CLASS_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CLASS_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+CLASS_ELEMENT_TYPE_REMOVED_CONSTRUCTOR=Error
+CLASS_ELEMENT_TYPE_REMOVED_FIELD=Error
+CLASS_ELEMENT_TYPE_REMOVED_METHOD=Error
+CLASS_ELEMENT_TYPE_REMOVED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+ENUM_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ENUM_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ENUM_ELEMENT_TYPE_REMOVED_ENUM_CONSTANT=Error
+ENUM_ELEMENT_TYPE_REMOVED_FIELD=Error
+ENUM_ELEMENT_TYPE_REMOVED_METHOD=Error
+ENUM_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+FIELD_ELEMENT_TYPE_ADDED_VALUE=Error
+FIELD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+FIELD_ELEMENT_TYPE_CHANGED_FINAL_TO_NON_FINAL_STATIC_CONSTANT=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_TYPE=Error
+FIELD_ELEMENT_TYPE_CHANGED_VALUE=Error
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENT=Error
+FIELD_ELEMENT_TYPE_REMOVED_VALUE=Error
+ILLEGAL_EXTEND=Warning
+ILLEGAL_IMPLEMENT=Warning
+ILLEGAL_INSTANTIATE=Warning
+ILLEGAL_OVERRIDE=Warning
+ILLEGAL_REFERENCE=Warning
+INTERFACE_ELEMENT_TYPE_ADDED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_SUPER_INTERFACE_WITH_METHODS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+INVALID_JAVADOC_TAG=Warning
+INVALID_REFERENCE_IN_SYSTEM_LIBRARIES=Error
+LEAK_EXTEND=Warning
+LEAK_FIELD_DECL=Warning
+LEAK_IMPLEMENT=Warning
+LEAK_METHOD_PARAM=Warning
+LEAK_METHOD_RETURN_TYPE=Warning
+METHOD_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+METHOD_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+METHOD_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+MISSING_EE_DESCRIPTIONS=Error
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+UNUSED_PROBLEM_FILTERS=Ignore
+automatically_removed_unused_problem_filters=Disabled
+eclipse.preferences.version=1
+incompatible_api_component_version=Error
+incompatible_api_component_version_include_major_without_breaking_change=Disabled
+incompatible_api_component_version_include_minor_without_api_change=Disabled
+invalid_since_tag_version=Error
+malformed_since_tag=Error
+missing_since_tag=Error
+report_api_breakage_when_major_version_incremented=Disabled
+report_resolution_errors_api_component=Warning
diff --git a/tests/org.eclipse.emfforms.datatemplate.tooling.tests/.settings/org.eclipse.pde.core.prefs b/tests/org.eclipse.emfforms.datatemplate.tooling.tests/.settings/org.eclipse.pde.core.prefs
new file mode 100644
index 0000000..f29e940
--- /dev/null
+++ b/tests/org.eclipse.emfforms.datatemplate.tooling.tests/.settings/org.eclipse.pde.core.prefs
@@ -0,0 +1,3 @@
+eclipse.preferences.version=1
+pluginProject.extensions=false
+resolve.requirebundle=false
diff --git a/tests/org.eclipse.emfforms.datatemplate.tooling.tests/.settings/org.eclipse.pde.prefs b/tests/org.eclipse.emfforms.datatemplate.tooling.tests/.settings/org.eclipse.pde.prefs
new file mode 100644
index 0000000..0bbee3c
--- /dev/null
+++ b/tests/org.eclipse.emfforms.datatemplate.tooling.tests/.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=1
+compilers.p.missing-version-import-package=1
+compilers.p.missing-version-require-bundle=1
+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.emfforms.datatemplate.tooling.tests/META-INF/MANIFEST.MF b/tests/org.eclipse.emfforms.datatemplate.tooling.tests/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..4593517
--- /dev/null
+++ b/tests/org.eclipse.emfforms.datatemplate.tooling.tests/META-INF/MANIFEST.MF
@@ -0,0 +1,15 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: DataTemplate Tests
+Bundle-SymbolicName: org.eclipse.emfforms.datatemplate.tooling.tests
+Bundle-Version: 1.17.0.qualifier
+Fragment-Host: org.eclipse.emfforms.datatemplate.tooling;bundle-version="[1.17.0,1.18.0)"
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Require-Bundle: org.junit;bundle-version="[4.12.0,5.0.0)",
+ org.eclipse.emf.ecp.makeithappen.model;bundle-version="[1.17.0,1.18.0)",
+ org.eclipse.emf.ecp.view.test.common.swt;bundle-version="[1.17.0,1.18.0)",
+ org.mockito.mockito-core-hamcrest-modified;bundle-version="[1.9.5,2.0.0)"
+Bundle-Vendor: Eclipse Modeling Project
+Export-Package: org.eclipse.emfforms.internal.datatemplate.tooling.editor;version="1.17.0";x-internal:=true,
+ org.eclipse.emfforms.internal.datatemplate.tooling.wizard;version="1.17.0";x-internal:=true
+Import-Package: org.objenesis;version="1.0.0"
diff --git a/tests/org.eclipse.emfforms.datatemplate.tooling.tests/build.properties b/tests/org.eclipse.emfforms.datatemplate.tooling.tests/build.properties
new file mode 100644
index 0000000..34d2e4d
--- /dev/null
+++ b/tests/org.eclipse.emfforms.datatemplate.tooling.tests/build.properties
@@ -0,0 +1,4 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+               .
diff --git a/tests/org.eclipse.emfforms.datatemplate.tooling.tests/pom.xml b/tests/org.eclipse.emfforms.datatemplate.tooling.tests/pom.xml
new file mode 100644
index 0000000..645692d
--- /dev/null
+++ b/tests/org.eclipse.emfforms.datatemplate.tooling.tests/pom.xml
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
+	xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+	<modelVersion>4.0.0</modelVersion>
+	<parent>
+		<groupId>org.eclipse.emf.ecp</groupId>
+		<artifactId>ecp-tests-parent</artifactId>
+		<version>1.17.0-SNAPSHOT</version>
+		<relativePath>../../releng/org.eclipse.emf.ecp.releng.tests/</relativePath>
+	</parent>
+	<groupId>org.eclipse.emf.ecp</groupId>
+	<artifactId>org.eclipse.emfforms.datatemplate.tooling.tests</artifactId>
+	<version>1.17.0-SNAPSHOT</version>
+	<packaging>eclipse-test-plugin</packaging>
+
+	<build>
+		<sourceDirectory>src</sourceDirectory>
+		<plugins>
+			<plugin>
+				<groupId>org.eclipse.tycho</groupId>
+				<artifactId>tycho-surefire-plugin</artifactId>
+				<version>${tycho-version}</version>
+				<configuration>
+					<includes>
+						<include>**/*_PTest.java</include>
+						<include>**/*_ITest.java</include>
+						<!-- Execute SWT-Related tests with tycho surefire -->
+						<include>**/TemplateInstanceRenderer_Test.java</include>
+					</includes>
+					<testFailureIgnore>true</testFailureIgnore>
+					<useUIHarness>false</useUIHarness>
+					<useUIThread>false</useUIThread>
+				</configuration>
+			</plugin>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-surefire-plugin</artifactId>
+				<version>${mav-surefire-version}</version>
+				<executions>
+					<execution>
+						<id>test</id>
+						<phase>test</phase>
+						<configuration>
+							<testClassesDirectory>${project.build.outputDirectory}</testClassesDirectory>
+							<excludes>
+								<!-- Executed with tycho surefire -->
+								<exclude>**/TemplateInstanceRenderer_Test.java</exclude>
+							</excludes>
+							<testFailureIgnore>true</testFailureIgnore>
+				        </configuration>
+						<goals>
+							<goal>test</goal>
+						</goals>
+					</execution>
+				</executions>
+			</plugin>
+		</plugins>
+	</build>
+</project>
diff --git a/tests/org.eclipse.emfforms.datatemplate.tooling.tests/src/org/eclipse/emfforms/internal/datatemplate/tooling/editor/DataTemplateEClassSelectionStrategyProvider_Test.java b/tests/org.eclipse.emfforms.datatemplate.tooling.tests/src/org/eclipse/emfforms/internal/datatemplate/tooling/editor/DataTemplateEClassSelectionStrategyProvider_Test.java
new file mode 100644
index 0000000..7a584c2
--- /dev/null
+++ b/tests/org.eclipse.emfforms.datatemplate.tooling.tests/src/org/eclipse/emfforms/internal/datatemplate/tooling/editor/DataTemplateEClassSelectionStrategyProvider_Test.java
@@ -0,0 +1,80 @@
+/*******************************************************************************
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * Eugen Neufeld - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.emfforms.internal.datatemplate.tooling.editor;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+
+import java.util.Collection;
+import java.util.LinkedHashSet;
+import java.util.Set;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EClassifier;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EPackage.Registry;
+import org.eclipse.emf.ecore.EcorePackage;
+import org.eclipse.emf.ecp.makeithappen.model.task.TaskPackage;
+import org.eclipse.emf.ecp.ui.view.swt.reference.EClassSelectionStrategy;
+import org.eclipse.emfforms.datatemplate.DataTemplatePackage;
+import org.junit.Before;
+import org.junit.Test;
+
+public class DataTemplateEClassSelectionStrategyProvider_Test {
+
+	private DataTemplateEClassSelectionStrategyProvider provider;
+
+	@Before
+	public void setUp() throws Exception {
+		provider = new DataTemplateEClassSelectionStrategyProvider();
+		final Registry registry = EPackage.Registry.INSTANCE;
+		registry.put(TaskPackage.eNS_URI, TaskPackage.eINSTANCE);
+	}
+
+	@Test
+	public void testBid() {
+		assertNull(provider.bid(null));
+		assertNull(provider.bid(EcorePackage.eINSTANCE.getEAnnotation_References()));
+		assertEquals(10, provider.bid(DataTemplatePackage.eINSTANCE.getTemplate_Instance()), 0);
+	}
+
+	@Test
+	public void testCreate() {
+		final EClassSelectionStrategy strategy = provider.create();
+		assertNotNull(strategy);
+		final Collection<EClass> collectEClasses = strategy.collectEClasses(null,
+			DataTemplatePackage.eINSTANCE.getTemplate_Instance(), null);
+		final Collection<EClass> allFromRegistry = collectAllFromRegistry();
+		assertEquals(allFromRegistry.size(), collectEClasses.size());
+		for (final EClass eClass : allFromRegistry) {
+			assertTrue(collectEClasses.contains(eClass));
+		}
+	}
+
+	private Collection<EClass> collectAllFromRegistry() {
+		final Registry registry = EPackage.Registry.INSTANCE;
+		final Set<EClass> result = new LinkedHashSet<EClass>();
+		for (final String uri : registry.keySet()) {
+			final EPackage ePackage = registry.getEPackage(uri);
+			for (final EClassifier eClassifier : ePackage.getEClassifiers()) {
+				if (eClassifier instanceof EClass && !((EClass) eClassifier).isAbstract()
+					&& !((EClass) eClassifier).isInterface()) {
+					result.add((EClass) eClassifier);
+				}
+			}
+		}
+		return result;
+	}
+
+}
diff --git a/tests/org.eclipse.emfforms.datatemplate.tooling.tests/src/org/eclipse/emfforms/internal/datatemplate/tooling/editor/TemplateInstanceRendererService_Test.java b/tests/org.eclipse.emfforms.datatemplate.tooling.tests/src/org/eclipse/emfforms/internal/datatemplate/tooling/editor/TemplateInstanceRendererService_Test.java
new file mode 100644
index 0000000..1b19f5c
--- /dev/null
+++ b/tests/org.eclipse.emfforms.datatemplate.tooling.tests/src/org/eclipse/emfforms/internal/datatemplate/tooling/editor/TemplateInstanceRendererService_Test.java
@@ -0,0 +1,113 @@
+/*******************************************************************************
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * Eugen Neufeld - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.emfforms.internal.datatemplate.tooling.editor;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertSame;
+import static org.mockito.Matchers.any;
+import static org.mockito.Mockito.inOrder;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.when;
+
+import org.eclipse.core.databinding.property.value.IValueProperty;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EcorePackage;
+import org.eclipse.emf.ecp.view.spi.context.ViewModelContext;
+import org.eclipse.emf.ecp.view.spi.model.VControl;
+import org.eclipse.emf.ecp.view.spi.model.VDomainModelReference;
+import org.eclipse.emf.ecp.view.spi.model.VViewFactory;
+import org.eclipse.emfforms.datatemplate.DataTemplatePackage;
+import org.eclipse.emfforms.spi.common.report.AbstractReport;
+import org.eclipse.emfforms.spi.common.report.ReportService;
+import org.eclipse.emfforms.spi.core.services.databinding.DatabindingFailedException;
+import org.eclipse.emfforms.spi.core.services.databinding.EMFFormsDatabinding;
+import org.eclipse.emfforms.spi.swt.core.di.EMFFormsDIRendererService;
+import org.junit.Before;
+import org.junit.Test;
+
+public class TemplateInstanceRendererService_Test {
+
+	private TemplateInstanceRendererService service;
+
+	@Before
+	public void setUp() throws Exception {
+		service = new TemplateInstanceRendererService();
+	}
+
+	@Test
+	public void testIsApplicableForView() {
+		assertEquals(EMFFormsDIRendererService.NOT_APPLICABLE,
+			service.isApplicable(VViewFactory.eINSTANCE.createView(), null), 0);
+	}
+
+	@Test
+	public void testIsApplicableForEmptyControl() {
+		assertEquals(EMFFormsDIRendererService.NOT_APPLICABLE,
+			service.isApplicable(VViewFactory.eINSTANCE.createControl(), null), 0);
+	}
+
+	@Test
+	public void testIsApplicableDatabindingException() throws DatabindingFailedException {
+		final VControl control = VViewFactory.eINSTANCE.createControl();
+		final VDomainModelReference dmr = VViewFactory.eINSTANCE.createFeaturePathDomainModelReference();
+		control.setDomainModelReference(dmr);
+		final EMFFormsDatabinding databinding = mock(EMFFormsDatabinding.class);
+		final ReportService reportService = mock(ReportService.class);
+		service.setEMFFormsDatabinding(databinding);
+		service.setReportService(reportService);
+		final ViewModelContext vmc = mock(ViewModelContext.class);
+		final EObject domainModel = mock(EObject.class);
+		when(vmc.getDomainModel()).thenReturn(domainModel);
+		when(databinding.getValueProperty(dmr, domainModel)).thenThrow(new DatabindingFailedException("Test Error")); //$NON-NLS-1$
+		assertEquals(EMFFormsDIRendererService.NOT_APPLICABLE, service.isApplicable(control, vmc), 0);
+		inOrder(reportService).verify(reportService, times(1)).report(any(AbstractReport.class));
+	}
+
+	@Test
+	public void testIsApplicableWrongFeature() throws DatabindingFailedException {
+		final VControl control = VViewFactory.eINSTANCE.createControl();
+		final VDomainModelReference dmr = VViewFactory.eINSTANCE.createFeaturePathDomainModelReference();
+		control.setDomainModelReference(dmr);
+		final EMFFormsDatabinding databinding = mock(EMFFormsDatabinding.class);
+		service.setEMFFormsDatabinding(databinding);
+		final ViewModelContext vmc = mock(ViewModelContext.class);
+		final EObject domainModel = mock(EObject.class);
+		when(vmc.getDomainModel()).thenReturn(domainModel);
+		final IValueProperty property = mock(IValueProperty.class);
+		when(property.getValueType()).thenReturn(EcorePackage.eINSTANCE.getENamedElement_Name());
+		when(databinding.getValueProperty(dmr, domainModel)).thenReturn(property);
+		assertEquals(EMFFormsDIRendererService.NOT_APPLICABLE, service.isApplicable(control, vmc), 0);
+	}
+
+	@Test
+	public void testIsApplicableCorrectFeature() throws DatabindingFailedException {
+		final VControl control = VViewFactory.eINSTANCE.createControl();
+		final VDomainModelReference dmr = VViewFactory.eINSTANCE.createFeaturePathDomainModelReference();
+		control.setDomainModelReference(dmr);
+		final EMFFormsDatabinding databinding = mock(EMFFormsDatabinding.class);
+		service.setEMFFormsDatabinding(databinding);
+		final ViewModelContext vmc = mock(ViewModelContext.class);
+		final EObject domainModel = mock(EObject.class);
+		when(vmc.getDomainModel()).thenReturn(domainModel);
+		final IValueProperty property = mock(IValueProperty.class);
+		when(property.getValueType()).thenReturn(DataTemplatePackage.eINSTANCE.getTemplate_Instance());
+		when(databinding.getValueProperty(dmr, domainModel)).thenReturn(property);
+		assertEquals(10, service.isApplicable(control, vmc), 0);
+	}
+
+	@Test
+	public void testGetRendererClass() {
+		assertSame(TemplateInstanceRenderer.class, service.getRendererClass());
+	}
+
+}
diff --git a/tests/org.eclipse.emfforms.datatemplate.tooling.tests/src/org/eclipse/emfforms/internal/datatemplate/tooling/editor/TemplateInstanceRenderer_Test.java b/tests/org.eclipse.emfforms.datatemplate.tooling.tests/src/org/eclipse/emfforms/internal/datatemplate/tooling/editor/TemplateInstanceRenderer_Test.java
new file mode 100644
index 0000000..18252e8
--- /dev/null
+++ b/tests/org.eclipse.emfforms.datatemplate.tooling.tests/src/org/eclipse/emfforms/internal/datatemplate/tooling/editor/TemplateInstanceRenderer_Test.java
@@ -0,0 +1,46 @@
+/*******************************************************************************
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * Eugen Neufeld - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.emfforms.internal.datatemplate.tooling.editor;
+
+import static org.junit.Assert.assertEquals;
+import static org.mockito.Mockito.mock;
+
+import org.eclipse.emf.ecp.view.spi.context.ViewModelContext;
+import org.eclipse.emf.ecp.view.spi.model.VControl;
+import org.eclipse.emf.ecp.view.test.common.swt.spi.DatabindingClassRunner;
+import org.eclipse.emfforms.spi.common.report.ReportService;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Shell;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+@RunWith(DatabindingClassRunner.class)
+public class TemplateInstanceRenderer_Test {
+
+	private TemplateInstanceRenderer renderer;
+
+	@Before
+	public void setUp() throws Exception {
+		renderer = new TemplateInstanceRenderer(mock(VControl.class), mock(ViewModelContext.class),
+			mock(ReportService.class), null, null, null, null, null, null);
+	}
+
+	@Test
+	public void testCreateAddReferenceButton() {
+		final Shell shell = new Shell(Display.getDefault());
+		assertEquals(0, shell.getChildren().length);
+		renderer.createAddReferenceButton(shell, null);
+		assertEquals(0, shell.getChildren().length);
+	}
+
+}
diff --git a/tests/org.eclipse.emfforms.datatemplate.tooling.tests/src/org/eclipse/emfforms/internal/datatemplate/tooling/wizard/WizardNewDataTemplateCreationPage_Test.java b/tests/org.eclipse.emfforms.datatemplate.tooling.tests/src/org/eclipse/emfforms/internal/datatemplate/tooling/wizard/WizardNewDataTemplateCreationPage_Test.java
new file mode 100644
index 0000000..97229e2
--- /dev/null
+++ b/tests/org.eclipse.emfforms.datatemplate.tooling.tests/src/org/eclipse/emfforms/internal/datatemplate/tooling/wizard/WizardNewDataTemplateCreationPage_Test.java
@@ -0,0 +1,66 @@
+/*******************************************************************************
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * Eugen Neufeld - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.emfforms.internal.datatemplate.tooling.wizard;
+
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.junit.Assert.assertTrue;
+
+import java.io.IOException;
+import java.io.InputStream;
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl;
+import org.eclipse.emfforms.datatemplate.DataTemplatePackage;
+import org.eclipse.emfforms.datatemplate.TemplateCollection;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+public class WizardNewDataTemplateCreationPage_Test {
+
+	private WizardNewDataTemplateCreationPage page;
+
+	@BeforeClass
+	public static void prepareClass() {
+		Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap().put("*", new XMIResourceFactoryImpl()); //$NON-NLS-1$
+	}
+
+	@Before
+	public void setUp() throws Exception {
+		page = new WizardNewDataTemplateCreationPage("test", StructuredSelection.EMPTY); //$NON-NLS-1$
+	}
+
+	@After
+	public void tearDown() throws Exception {
+		page.dispose();
+	}
+
+	@Test
+	public void testGetInitialContents() throws IOException {
+		final InputStream is = page.getInitialContents();
+		final ResourceSet rs = new ResourceSetImpl();
+		final Resource r = rs.createResource(URI.createURI("VIRTUAL")); //$NON-NLS-1$
+		r.load(is, null);
+		final EObject eObject = r.getContents().get(0);
+		assertThat(eObject.eClass(), is(DataTemplatePackage.eINSTANCE.getTemplateCollection()));
+		final TemplateCollection collection = (TemplateCollection) eObject;
+		assertTrue(collection.getTemplates().isEmpty());
+	}
+
+}
diff --git a/tests/org.eclipse.emfforms.editor.ecore.test/EcoreEditorPerformance_PTest.launch b/tests/org.eclipse.emfforms.editor.ecore.test/EcoreEditorPerformance_PTest.launch
new file mode 100644
index 0000000..4eacf92
--- /dev/null
+++ b/tests/org.eclipse.emfforms.editor.ecore.test/EcoreEditorPerformance_PTest.launch
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.pde.ui.JunitLaunchConfig">
+<booleanAttribute key="append.args" value="true"/>
+<booleanAttribute key="askclear" value="false"/>
+<booleanAttribute key="automaticAdd" value="true"/>
+<booleanAttribute key="automaticValidate" value="false"/>
+<stringAttribute key="bootstrap" value=""/>
+<stringAttribute key="checked" value="[NONE]"/>
+<booleanAttribute key="clearConfig" value="true"/>
+<booleanAttribute key="clearws" value="true"/>
+<booleanAttribute key="clearwslog" value="false"/>
+<stringAttribute key="configLocation" value="${workspace_loc}/.metadata/.plugins/org.eclipse.pde.core/pde-junit"/>
+<booleanAttribute key="default" value="false"/>
+<stringAttribute key="deselected_workspace_plugins" value="org.eclipse.emf.ecp.common.test,org.eclipse.emf.ecp.core.test,org.eclipse.emf.ecp.diffmerge.test,org.eclipse.emf.ecp.ecore.editor.test,org.eclipse.emf.ecp.edit.swt.test,org.eclipse.emf.ecp.ide.editor.view.test,org.eclipse.emf.ecp.ide.util.test,org.eclipse.emf.ecp.ide.view.service.test,org.eclipse.emf.ecp.integrationtest,org.eclipse.emf.ecp.quickfix.test,org.eclipse.emf.ecp.test.model,org.eclipse.emf.ecp.test.model.edit,org.eclipse.emf.ecp.ui.validation.test,org.eclipse.emf.ecp.ui.view.editor.controls.test,org.eclipse.emf.ecp.ui.view.linewrapper.tests,org.eclipse.emf.ecp.ui.view.swt.test,org.eclipse.emf.ecp.ui.view.test,org.eclipse.emf.ecp.validation.diagnostician.test,org.eclipse.emf.ecp.validation.test,org.eclipse.emf.ecp.view.categorization.swt.test,org.eclipse.emf.ecp.view.compoundcontrol.swt.test,org.eclipse.emf.ecp.view.context.tests,org.eclipse.emf.ecp.view.control.multireference.tests,org.eclipse.emf.ecp.view.core.swt.tests,org.eclipse.emf.ecp.view.custom.ui.swt.test,org.eclipse.emf.ecp.view.dynamictree.model.test,org.eclipse.emf.ecp.view.edapt.test,org.eclipse.emf.ecp.view.edapt.util.test,org.eclipse.emf.ecp.view.group.ui.swt.test,org.eclipse.emf.ecp.view.horizontal.ui.swt.test,org.eclipse.emf.ecp.view.indexdmr.model.test,org.eclipse.emf.ecp.view.keyattributedmr.model.test,org.eclipse.emf.ecp.view.mappingdmr.model.test,org.eclipse.emf.ecp.view.model.common.test,org.eclipse.emf.ecp.view.model.edit.test,org.eclipse.emf.ecp.view.model.editor.testplugin,org.eclipse.emf.ecp.view.model.integrationtest,org.eclipse.emf.ecp.view.model.preview.common.test,org.eclipse.emf.ecp.view.model.provider.xmi.test,org.eclipse.emf.ecp.view.model.test,org.eclipse.emf.ecp.view.rule.test,org.eclipse.emf.ecp.view.rule.ui.swt.test,org.eclipse.emf.ecp.view.stack.ui.swt.test,org.eclipse.emf.ecp.view.table.model.test,org.eclipse.emf.ecp.view.table.test.common,org.eclipse.emf.ecp.view.table.ui.nebula.grid,org.eclipse.emf.ecp.view.table.ui.nebula.grid.test,org.eclipse.emf.ecp.view.table.ui.swt.test,org.eclipse.emf.ecp.view.table.validation.test,org.eclipse.emf.ecp.view.template.model.test,org.eclipse.emf.ecp.view.template.service.test,org.eclipse.emf.ecp.view.test.common,org.eclipse.emf.ecp.view.test.common.swt,org.eclipse.emf.ecp.view.treemasterdetail.ui.swt.test,org.eclipse.emf.ecp.view.treemasterdetail.validation.test,org.eclipse.emf.ecp.view.ui.editor.test,org.eclipse.emf.ecp.view.unset.test,org.eclipse.emf.ecp.view.validation.bean,org.eclipse.emf.ecp.view.validation.bean.default,org.eclipse.emf.ecp.view.validation.bean.test,org.eclipse.emf.ecp.view.validation.test,org.eclipse.emf.ecp.view.vertical.ui.swt.test,org.eclipse.emf.ecp.view.viewproxy.tests,org.eclipse.emf.rap.edit.ui.minimal,org.eclipse.emfforms.common.tests,org.eclipse.emfforms.common.validation.tests,org.eclipse.emfforms.core.bazaar.tests,org.eclipse.emfforms.core.services.databinding.featurepath.tests,org.eclipse.emfforms.core.services.databinding.index.tests,org.eclipse.emfforms.core.services.databinding.integrationtest,org.eclipse.emfforms.core.services.databinding.keyattribute.tests,org.eclipse.emfforms.core.services.databinding.mapping.tests,org.eclipse.emfforms.core.services.databinding.testmodel,org.eclipse.emfforms.core.services.datatemplate.test,org.eclipse.emfforms.core.services.domainexpander.default.tests,org.eclipse.emfforms.core.services.domainexpander.index.tests,org.eclipse.emfforms.core.services.domainexpander.keyattribute.tests,org.eclipse.emfforms.core.services.domainexpander.mapping.tests,org.eclipse.emfforms.core.services.emf.tests,org.eclipse.emfforms.core.services.legacy.tests,org.eclipse.emfforms.core.services.mappingprovider.table.test,org.eclipse.emfforms.core.services.structuralchange.keyattribute.tests,org.eclipse.emfforms.core.services.tests,org.eclipse.emfforms.datatemplate.tooling.tests,org.eclipse.emfforms.localization.tests,org.eclipse.emfforms.rulerepository.tooling.test,org.eclipse.emfforms.swt.common.test,org.eclipse.emfforms.swt.control.multiattribute.tests,org.eclipse.emfforms.swt.control.text.autocomplete.tests,org.eclipse.emfforms.swt.controlgrid.test,org.eclipse.emfforms.swt.core.di.extension.tests,org.eclipse.emfforms.swt.core.di.tests,org.eclipse.emfforms.swt.core.tests,org.eclipse.emfforms.swt.treemasterdetail.test,org.eclipse.emfforms.view.model.localization.tests"/>
+<booleanAttribute key="includeOptional" value="true"/>
+<stringAttribute key="location" value="${workspace_loc}/../junit-workspace"/>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
+<listEntry value="/org.eclipse.emfforms.editor.ecore.test/src/org/eclipse/emfforms/spi/editor/EcoreEditorPerformance_PTest.java"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
+<listEntry value="1"/>
+</listAttribute>
+<stringAttribute key="org.eclipse.jdt.junit.CONTAINER" value=""/>
+<booleanAttribute key="org.eclipse.jdt.junit.KEEPRUNNING_ATTR" value="false"/>
+<stringAttribute key="org.eclipse.jdt.junit.TESTNAME" value=""/>
+<stringAttribute key="org.eclipse.jdt.junit.TEST_KIND" value="org.eclipse.jdt.junit.loader.junit4"/>
+<booleanAttribute key="org.eclipse.jdt.launching.ATTR_USE_START_ON_FIRST_THREAD" value="true"/>
+<stringAttribute key="org.eclipse.jdt.launching.JRE_CONTAINER" value="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.eclipse.emfforms.spi.editor.EcoreEditorPerformance_PTest"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-os ${target.os} -ws ${target.ws} -arch ${target.arch} -nl ${target.nl} -consoleLog"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.emfforms.editor.ecore.test"/>
+<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.pde.ui.workbenchClasspathProvider"/>
+<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-ea"/>
+<stringAttribute key="pde.version" value="3.3"/>
+<stringAttribute key="product" value="org.eclipse.platform.ide"/>
+<booleanAttribute key="run_in_ui_thread" value="true"/>
+<stringAttribute key="selected_target_plugins" value="com.google.gson@default:default,com.google.guava@default:default,com.ibm.icu@default:default,com.jcraft.jsch@default:default,com.sun.el@default:default,javax.annotation@default:default,javax.el@default:default,javax.inject@default:default,javax.servlet.jsp@default:default,javax.servlet@default:default,javax.validation@default:default,lpg.runtime.java@default:default,org.antlr.runtime@default:default,org.apache.ant@default:default,org.apache.batik.css*1.7.0.v201011041433@default:default,org.apache.batik.css*1.8.0.v20170214-1941@default:default,org.apache.batik.dom@default:default,org.apache.batik.ext.awt@default:default,org.apache.batik.svggen@default:default,org.apache.batik.util*1.7.0.v201011041433@default:default,org.apache.batik.util*1.8.0.v20170214-1941@default:default,org.apache.batik.util.gui*1.7.0.v200903091627@default:default,org.apache.batik.util.gui*1.8.0.v20170214-1941@default:default,org.apache.batik.xml@default:default,org.apache.commons.codec@default:default,org.apache.commons.httpclient@default:default,org.apache.commons.jxpath@default:default,org.apache.commons.lang@default:default,org.apache.commons.logging@default:default,org.apache.felix.gogo.command@default:default,org.apache.felix.gogo.runtime@default:default,org.apache.felix.gogo.shell@default:default,org.apache.felix.scr@default:default,org.apache.jasper.glassfish@default:default,org.apache.log4j@default:default,org.apache.lucene.analyzers-common@default:default,org.apache.lucene.analyzers-smartcn@default:default,org.apache.lucene.core@default:default,org.apache.lucene.misc@default:default,org.apache.mina.core@default:default,org.apache.sshd.core@default:default,org.apiguardian@default:default,org.eclipse.ant.core@default:default,org.eclipse.ant.launching@default:default,org.eclipse.ant.ui@default:default,org.eclipse.compare.core@default:default,org.eclipse.compare@default:default,org.eclipse.core.commands@default:default,org.eclipse.core.contenttype@default:default,org.eclipse.core.databinding*1.5.0.v20150422-0725@default:default,org.eclipse.core.databinding*1.6.100.v20170515-1119@default:default,org.eclipse.core.databinding.beans*1.3.0.v20150422-0725@default:default,org.eclipse.core.databinding.beans*1.4.0.v20170210-0856@default:default,org.eclipse.core.databinding.observable*1.5.0.v20150422-0725@default:default,org.eclipse.core.databinding.observable*1.6.100.v20170515-1119@default:default,org.eclipse.core.databinding.property*1.5.0.v20150422-0725@default:default,org.eclipse.core.databinding.property*1.6.100.v20170515-1119@default:default,org.eclipse.core.expressions@default:default,org.eclipse.core.externaltools@default:default,org.eclipse.core.filebuffers@default:default,org.eclipse.core.filesystem.macosx@default:false,org.eclipse.core.filesystem@default:default,org.eclipse.core.jobs@default:default,org.eclipse.core.net@default:default,org.eclipse.core.resources@default:default,org.eclipse.core.runtime@default:true,org.eclipse.core.variables@default:default,org.eclipse.debug.core@default:default,org.eclipse.debug.ui@default:default,org.eclipse.draw2d.doc.isv@default:default,org.eclipse.draw2d@default:default,org.eclipse.e4.core.commands@default:default,org.eclipse.e4.core.contexts@default:default,org.eclipse.e4.core.di.annotations@default:default,org.eclipse.e4.core.di.extensions.supplier@default:default,org.eclipse.e4.core.di.extensions@default:default,org.eclipse.e4.core.di@default:default,org.eclipse.e4.core.services@default:default,org.eclipse.e4.emf.xpath@default:default,org.eclipse.e4.ui.bindings@default:default,org.eclipse.e4.ui.css.core@default:default,org.eclipse.e4.ui.css.swt.theme@default:default,org.eclipse.e4.ui.css.swt@default:default,org.eclipse.e4.ui.di@default:default,org.eclipse.e4.ui.dialogs@default:default,org.eclipse.e4.ui.model.workbench@default:default,org.eclipse.e4.ui.services@default:default,org.eclipse.e4.ui.widgets@default:default,org.eclipse.e4.ui.workbench.addons.swt@default:default,org.eclipse.e4.ui.workbench.renderers.swt.cocoa@default:false,org.eclipse.e4.ui.workbench.renderers.swt@default:default,org.eclipse.e4.ui.workbench.swt@default:default,org.eclipse.e4.ui.workbench3@default:default,org.eclipse.e4.ui.workbench@default:default,org.eclipse.emf.ant@default:default,org.eclipse.emf.cheatsheets@default:default,org.eclipse.emf.codegen.ecore.ui@default:default,org.eclipse.emf.codegen.ecore@default:default,org.eclipse.emf.codegen.ui@default:default,org.eclipse.emf.codegen@default:default,org.eclipse.emf.common.ui@default:default,org.eclipse.emf.common@default:default,org.eclipse.emf.converter@default:default,org.eclipse.emf.databinding.edit@default:default,org.eclipse.emf.databinding@default:default,org.eclipse.emf.doc@default:default,org.eclipse.emf.ecore.change.edit@default:default,org.eclipse.emf.ecore.change@default:default,org.eclipse.emf.ecore.edit@default:default,org.eclipse.emf.ecore.editor@default:default,org.eclipse.emf.ecore.xmi@default:default,org.eclipse.emf.ecore@default:default,org.eclipse.emf.edapt.common@default:default,org.eclipse.emf.edapt.declaration@default:default,org.eclipse.emf.edapt.history@default:default,org.eclipse.emf.edapt.migration@default:default,org.eclipse.emf.edit.ui@default:default,org.eclipse.emf.edit@default:default,org.eclipse.emf.emfstore.client.model.edit@default:default,org.eclipse.emf.emfstore.client.transaction@default:default,org.eclipse.emf.emfstore.client.ui.rcp@default:false,org.eclipse.emf.emfstore.client.ui.transaction@default:default,org.eclipse.emf.emfstore.client.ui@default:default,org.eclipse.emf.emfstore.client@default:default,org.eclipse.emf.emfstore.common.model.edit@default:default,org.eclipse.emf.emfstore.common.model@default:default,org.eclipse.emf.emfstore.common@default:default,org.eclipse.emf.emfstore.example.installer@default:default,org.eclipse.emf.emfstore.examplemodel.edit@default:default,org.eclipse.emf.emfstore.examplemodel@default:default,org.eclipse.emf.emfstore.migration@default:default,org.eclipse.emf.emfstore.server.model.edit@default:default,org.eclipse.emf.emfstore.server.model@default:default,org.eclipse.emf.emfstore.server@default:default,org.eclipse.emf.example.installer@default:default,org.eclipse.emf.exporter@default:default,org.eclipse.emf.importer.ecore@default:default,org.eclipse.emf.importer.java@default:default,org.eclipse.emf.importer.rose@default:default,org.eclipse.emf.importer@default:default,org.eclipse.emf.mapping.ecore.editor@default:default,org.eclipse.emf.mapping.ecore2ecore.editor@default:default,org.eclipse.emf.mapping.ecore2ecore@default:default,org.eclipse.emf.mapping.ecore2xml.ui@default:default,org.eclipse.emf.mapping.ecore2xml@default:default,org.eclipse.emf.mapping.ecore@default:default,org.eclipse.emf.mapping.ui@default:default,org.eclipse.emf.mapping@default:default,org.eclipse.emf.transaction.doc@default:default,org.eclipse.emf.transaction.examples@default:default,org.eclipse.emf.transaction.ui@default:default,org.eclipse.emf.transaction@default:default,org.eclipse.emf.validation.doc@default:default,org.eclipse.emf.validation.examples@default:default,org.eclipse.emf.validation.ui.ide@default:default,org.eclipse.emf.validation.ui@default:default,org.eclipse.emf.validation@default:default,org.eclipse.emf.workspace.doc@default:default,org.eclipse.emf.workspace.ui@default:default,org.eclipse.emf.workspace@default:default,org.eclipse.emf@default:default,org.eclipse.equinox.app@default:default,org.eclipse.equinox.bidi@default:default,org.eclipse.equinox.cm@default:default,org.eclipse.equinox.common@2:true,org.eclipse.equinox.concurrent@default:default,org.eclipse.equinox.console.jaas.fragment@default:false,org.eclipse.equinox.console.ssh@default:default,org.eclipse.equinox.console@default:default,org.eclipse.equinox.coordinator@default:default,org.eclipse.equinox.device@default:default,org.eclipse.equinox.ds@1:true,org.eclipse.equinox.event@default:default,org.eclipse.equinox.frameworkadmin.equinox@default:default,org.eclipse.equinox.frameworkadmin@default:default,org.eclipse.equinox.http.jetty@default:default,org.eclipse.equinox.http.registry@default:default,org.eclipse.equinox.http.servlet@default:default,org.eclipse.equinox.http.servletbridge@default:default,org.eclipse.equinox.io@default:default,org.eclipse.equinox.ip@default:default,org.eclipse.equinox.jsp.jasper.registry@default:default,org.eclipse.equinox.jsp.jasper@default:default,org.eclipse.equinox.launcher.cocoa.macosx.x86_64@default:false,org.eclipse.equinox.launcher@default:default,org.eclipse.equinox.metatype@default:default,org.eclipse.equinox.p2.artifact.repository@default:default,org.eclipse.equinox.p2.console@default:default,org.eclipse.equinox.p2.core@default:default,org.eclipse.equinox.p2.director.app@default:default,org.eclipse.equinox.p2.director@default:default,org.eclipse.equinox.p2.directorywatcher@default:default,org.eclipse.equinox.p2.engine@default:default,org.eclipse.equinox.p2.extensionlocation@default:default,org.eclipse.equinox.p2.garbagecollector@default:default,org.eclipse.equinox.p2.jarprocessor@default:default,org.eclipse.equinox.p2.metadata.repository@default:default,org.eclipse.equinox.p2.metadata@default:default,org.eclipse.equinox.p2.operations@default:default,org.eclipse.equinox.p2.publisher.eclipse@default:default,org.eclipse.equinox.p2.publisher@default:default,org.eclipse.equinox.p2.reconciler.dropins@default:default,org.eclipse.equinox.p2.repository.tools@default:default,org.eclipse.equinox.p2.repository@default:default,org.eclipse.equinox.p2.touchpoint.eclipse@default:default,org.eclipse.equinox.p2.touchpoint.natives@default:default,org.eclipse.equinox.p2.ui.importexport@default:default,org.eclipse.equinox.p2.ui.sdk.scheduler@default:default,org.eclipse.equinox.p2.ui.sdk@default:default,org.eclipse.equinox.p2.ui@default:default,org.eclipse.equinox.p2.updatechecker@default:default,org.eclipse.equinox.p2.updatesite@default:default,org.eclipse.equinox.preferences@default:default,org.eclipse.equinox.region@default:false,org.eclipse.equinox.registry@default:default,org.eclipse.equinox.security.macosx@default:false,org.eclipse.equinox.security.ui@default:default,org.eclipse.equinox.security@default:default,org.eclipse.equinox.servletbridge@default:default,org.eclipse.equinox.simpleconfigurator.manipulator@default:default,org.eclipse.equinox.simpleconfigurator@1:true,org.eclipse.equinox.supplement@default:default,org.eclipse.equinox.transforms.hook@default:false,org.eclipse.equinox.transforms.xslt@default:default,org.eclipse.equinox.useradmin@default:default,org.eclipse.equinox.util@default:default,org.eclipse.equinox.weaving.caching.j9@default:default,org.eclipse.equinox.weaving.caching@default:default,org.eclipse.equinox.weaving.hook@default:false,org.eclipse.equinox.wireadmin@default:default,org.eclipse.gef.doc.isv@default:default,org.eclipse.gef.examples.ui.pde@default:default,org.eclipse.gef@default:default,org.eclipse.graphiti.export.batik@default:default,org.eclipse.graphiti.mm@default:default,org.eclipse.graphiti.pattern@default:default,org.eclipse.graphiti.ui@default:default,org.eclipse.graphiti@default:default,org.eclipse.help.base@default:default,org.eclipse.help.ui@default:default,org.eclipse.help.webapp@default:default,org.eclipse.help@default:default,org.eclipse.jdt.annotation*1.1.100.v20160418-1457@default:default,org.eclipse.jdt.annotation*2.1.100.v20170511-1408@default:default,org.eclipse.jdt.apt.core@default:default,org.eclipse.jdt.apt.pluggable.core@default:default,org.eclipse.jdt.apt.ui@default:default,org.eclipse.jdt.compiler.apt@default:false,org.eclipse.jdt.compiler.tool@default:false,org.eclipse.jdt.core.manipulation@default:default,org.eclipse.jdt.core@default:default,org.eclipse.jdt.debug.ui@default:default,org.eclipse.jdt.debug@default:default,org.eclipse.jdt.doc.user@default:default,org.eclipse.jdt.junit.core@default:default,org.eclipse.jdt.junit.runtime@default:default,org.eclipse.jdt.junit4.runtime@default:default,org.eclipse.jdt.junit5.runtime@default:default,org.eclipse.jdt.junit@default:default,org.eclipse.jdt.launching.macosx@default:default,org.eclipse.jdt.launching.ui.macosx@default:default,org.eclipse.jdt.launching@default:default,org.eclipse.jdt.ui@default:default,org.eclipse.jdt@default:default,org.eclipse.jetty.continuation@default:default,org.eclipse.jetty.http@default:default,org.eclipse.jetty.io@default:default,org.eclipse.jetty.security@default:default,org.eclipse.jetty.server@default:default,org.eclipse.jetty.servlet@default:default,org.eclipse.jetty.util@default:default,org.eclipse.jface.databinding@default:default,org.eclipse.jface.text@default:default,org.eclipse.jface@default:default,org.eclipse.jsch.core@default:default,org.eclipse.jsch.ui@default:default,org.eclipse.ltk.core.refactoring@default:default,org.eclipse.ltk.ui.refactoring@default:default,org.eclipse.net4j.db.doc@default:default,org.eclipse.net4j.db.h2@default:default,org.eclipse.net4j.db.jdbc@default:default,org.eclipse.net4j.db@default:default,org.eclipse.net4j.debug@default:default,org.eclipse.net4j.doc@default:default,org.eclipse.net4j.examples.installer@default:default,org.eclipse.net4j.http.common@default:default,org.eclipse.net4j.http.server@default:default,org.eclipse.net4j.http@default:default,org.eclipse.net4j.jvm@default:default,org.eclipse.net4j.sdk@default:default,org.eclipse.net4j.tcp@default:default,org.eclipse.net4j.ui.shared@default:default,org.eclipse.net4j.ui@default:default,org.eclipse.net4j.util.doc@default:default,org.eclipse.net4j.util.ui@default:default,org.eclipse.net4j.util@default:default,org.eclipse.net4j@default:default,org.eclipse.ocl.common@default:default,org.eclipse.ocl.ecore@default:default,org.eclipse.ocl@default:default,org.eclipse.orbit.mongodb@default:default,org.eclipse.osgi.compatibility.state@default:false,org.eclipse.osgi.services@default:default,org.eclipse.osgi.util@default:default,org.eclipse.osgi@-1:true,org.eclipse.pde.api.tools.annotations@default:default,org.eclipse.pde.api.tools.ui@default:default,org.eclipse.pde.api.tools@default:default,org.eclipse.pde.build@default:default,org.eclipse.pde.core@default:default,org.eclipse.pde.doc.user@default:default,org.eclipse.pde.ds.annotations@default:default,org.eclipse.pde.ds.core@default:default,org.eclipse.pde.ds.lib@default:default,org.eclipse.pde.ds.ui@default:default,org.eclipse.pde.ds1_2.lib@default:default,org.eclipse.pde.genericeditor.extension@default:default,org.eclipse.pde.junit.runtime@default:default,org.eclipse.pde.launching@default:default,org.eclipse.pde.runtime@default:default,org.eclipse.pde.ua.core@default:default,org.eclipse.pde.ua.ui@default:default,org.eclipse.pde.ui.templates@default:default,org.eclipse.pde.ui@default:default,org.eclipse.pde@default:default,org.eclipse.platform.doc.user@default:default,org.eclipse.platform@default:default,org.eclipse.rcp@default:default,org.eclipse.search@default:default,org.eclipse.swt.cocoa.macosx.x86_64@default:false,org.eclipse.swt@default:default,org.eclipse.swtbot.ant.junit@default:false,org.eclipse.swtbot.e4.finder@default:default,org.eclipse.swtbot.eclipse.core@default:default,org.eclipse.swtbot.eclipse.finder@default:default,org.eclipse.swtbot.eclipse.gef.finder@default:default,org.eclipse.swtbot.eclipse.junit.headless@default:default,org.eclipse.swtbot.forms.finder@default:default,org.eclipse.swtbot.go@default:default,org.eclipse.swtbot.junit4_x@default:default,org.eclipse.swtbot.swt.finder@default:default,org.eclipse.team.core@default:default,org.eclipse.team.genericeditor.diff.extension@default:default,org.eclipse.team.ui@default:default,org.eclipse.text@default:default,org.eclipse.tools.layout.spy@default:default,org.eclipse.ui.browser@default:default,org.eclipse.ui.cheatsheets@default:default,org.eclipse.ui.cocoa@default:false,org.eclipse.ui.console@default:default,org.eclipse.ui.editors@default:default,org.eclipse.ui.externaltools@default:default,org.eclipse.ui.forms@default:default,org.eclipse.ui.genericeditor@default:default,org.eclipse.ui.ide.application@default:default,org.eclipse.ui.ide@default:default,org.eclipse.ui.intro.quicklinks@default:default,org.eclipse.ui.intro.universal@default:default,org.eclipse.ui.intro@default:default,org.eclipse.ui.monitoring@default:default,org.eclipse.ui.navigator.resources@default:default,org.eclipse.ui.navigator@default:default,org.eclipse.ui.net@default:default,org.eclipse.ui.themes@default:default,org.eclipse.ui.trace@default:default,org.eclipse.ui.views.log@default:default,org.eclipse.ui.views.properties.tabbed@default:default,org.eclipse.ui.views@default:default,org.eclipse.ui.workbench.texteditor@default:default,org.eclipse.ui.workbench@default:default,org.eclipse.ui@default:default,org.eclipse.update.configurator@3:true,org.h2@default:default,org.hamcrest.core@default:default,org.hamcrest.library@default:default,org.junit.jupiter.api@default:default,org.junit.jupiter.engine@default:default,org.junit.jupiter.migrationsupport@default:default,org.junit.jupiter.params@default:default,org.junit.platform.commons@default:default,org.junit.platform.engine@default:default,org.junit.platform.launcher@default:default,org.junit.platform.runner@default:default,org.junit.platform.suite.api@default:default,org.junit.vintage.engine@default:default,org.junit@default:default,org.mockito.mockito-core-hamcrest-modified@default:default,org.objectweb.asm.tree@default:default,org.objectweb.asm@default:default,org.objenesis@default:default,org.opentest4j@default:default,org.sat4j.core@default:default,org.sat4j.pb@default:default,org.slf4j.api@default:default,org.tukaani.xz@default:default,org.w3c.css.sac@default:default,org.w3c.dom.events@default:default,org.w3c.dom.smil*1.0.0.v200806040011@default:default,org.w3c.dom.smil*1.0.1.v200903091627@default:default,org.w3c.dom.svg@default:default"/>
+<stringAttribute key="selected_workspace_plugins" value="org.eclipse.emf.ecp.application.e3@default:default,org.eclipse.emf.ecp.application.e4@default:default,org.eclipse.emf.ecp.common.ui@default:default,org.eclipse.emf.ecp.common@default:default,org.eclipse.emf.ecp.core.emffilter@default:default,org.eclipse.emf.ecp.core@default:default,org.eclipse.emf.ecp.diffmerge.context@default:default,org.eclipse.emf.ecp.diffmerge.model.edit@default:default,org.eclipse.emf.ecp.diffmerge.model@default:default,org.eclipse.emf.ecp.diffmerge.renderer.swt@default:default,org.eclipse.emf.ecp.diffmerge.swt@default:default,org.eclipse.emf.ecp.doc@default:default,org.eclipse.emf.ecp.ecore.editor.ui@default:default,org.eclipse.emf.ecp.ecore.editor@default:default,org.eclipse.emf.ecp.edit.ecore.swt@default:default,org.eclipse.emf.ecp.edit.swt@default:default,org.eclipse.emf.ecp.edit@default:default,org.eclipse.emf.ecp.editor.e3@default:default,org.eclipse.emf.ecp.emfstore.core@default:default,org.eclipse.emf.ecp.examplemodel.ui@default:default,org.eclipse.emf.ecp.explorereditorbridge@default:default,org.eclipse.emf.ecp.ide.editor.view.templatebridge@default:default,org.eclipse.emf.ecp.ide.editor.view@default:default,org.eclipse.emf.ecp.ide.editor.viewmodel@default:default,org.eclipse.emf.ecp.ide.migration@default:default,org.eclipse.emf.ecp.ide.util@default:default,org.eclipse.emf.ecp.ide.view.service@default:default,org.eclipse.emf.ecp.makeithappen.application.sample.e3@default:default,org.eclipse.emf.ecp.makeithappen.application.sample.e4@default:default,org.eclipse.emf.ecp.makeithappen.model.edit@default:default,org.eclipse.emf.ecp.makeithappen.model.viewmodel@default:default,org.eclipse.emf.ecp.makeithappen.model@default:default,org.eclipse.emf.ecp.makeithappen.view.email.renderer@default:default,org.eclipse.emf.ecp.makeithappen.view.group.renderer@default:default,org.eclipse.emf.ecp.makeithappen.wizards@default:default,org.eclipse.emf.ecp.products@default:default,org.eclipse.emf.ecp.quickfix.ui.e4@default:default,org.eclipse.emf.ecp.quickfix@default:default,org.eclipse.emf.ecp.test.common@default:default,org.eclipse.emf.ecp.ui.e3@default:default,org.eclipse.emf.ecp.ui.e4@default:default,org.eclipse.emf.ecp.ui.rcp@default:default,org.eclipse.emf.ecp.ui.transaction@default:default,org.eclipse.emf.ecp.ui.validation.e4@default:default,org.eclipse.emf.ecp.ui.validation@default:default,org.eclipse.emf.ecp.ui.view.editor.controls@default:default,org.eclipse.emf.ecp.ui.view.linewrapper@default:default,org.eclipse.emf.ecp.ui.view.swt.di@default:default,org.eclipse.emf.ecp.ui.view.swt@default:default,org.eclipse.emf.ecp.ui.view@default:default,org.eclipse.emf.ecp.ui@default:default,org.eclipse.emf.ecp.validation.connector@default:default,org.eclipse.emf.ecp.validation.diagnostician@default:default,org.eclipse.emf.ecp.validation@default:default,org.eclipse.emf.ecp.validationvieweditorbridge@default:default,org.eclipse.emf.ecp.view.categorization.model.edit@default:default,org.eclipse.emf.ecp.view.categorization.model@default:default,org.eclipse.emf.ecp.view.categorization.swt@default:default,org.eclipse.emf.ecp.view.compoundcontrol.model.edit@default:default,org.eclipse.emf.ecp.view.compoundcontrol.model@default:default,org.eclipse.emf.ecp.view.compoundcontrol.swt@default:default,org.eclipse.emf.ecp.view.compoundcontrol.tooling@default:default,org.eclipse.emf.ecp.view.context.locale@default:default,org.eclipse.emf.ecp.view.context@default:default,org.eclipse.emf.ecp.view.control.multireference@default:default,org.eclipse.emf.ecp.view.core.swt@default:default,org.eclipse.emf.ecp.view.custom.model.edit@default:default,org.eclipse.emf.ecp.view.custom.model@default:default,org.eclipse.emf.ecp.view.custom.ui.swt.di@default:default,org.eclipse.emf.ecp.view.custom.ui.swt@default:default,org.eclipse.emf.ecp.view.dynamictree.model.edit@default:default,org.eclipse.emf.ecp.view.dynamictree.model@default:default,org.eclipse.emf.ecp.view.dynamictree.ui.swt@default:default,org.eclipse.emf.ecp.view.dynamictree.ui@default:default,org.eclipse.emf.ecp.view.edapt@default:default,org.eclipse.emf.ecp.view.group.model.edit@default:default,org.eclipse.emf.ecp.view.group.model@default:default,org.eclipse.emf.ecp.view.group.swt.collapsable@default:default,org.eclipse.emf.ecp.view.group.swt.collapsible.pgroup@default:default,org.eclipse.emf.ecp.view.group.swt.embedded@default:default,org.eclipse.emf.ecp.view.group.ui.swt@default:default,org.eclipse.emf.ecp.view.groupedgrid.model.edit@default:default,org.eclipse.emf.ecp.view.groupedgrid.model@default:default,org.eclipse.emf.ecp.view.groupedgrid.ui.swt@default:default,org.eclipse.emf.ecp.view.horizontal.model.edit@default:default,org.eclipse.emf.ecp.view.horizontal.model@default:default,org.eclipse.emf.ecp.view.horizontal.ui.swt@default:default,org.eclipse.emf.ecp.view.indexdmr.model.edit@default:default,org.eclipse.emf.ecp.view.indexdmr.model@default:default,org.eclipse.emf.ecp.view.indexdmr.tooling@default:default,org.eclipse.emf.ecp.view.keyattributedmr.model.edit@default:default,org.eclipse.emf.ecp.view.keyattributedmr.model@default:default,org.eclipse.emf.ecp.view.keyattributedmr.tooling@default:default,org.eclipse.emf.ecp.view.label.model.edit@default:default,org.eclipse.emf.ecp.view.label.model@default:default,org.eclipse.emf.ecp.view.label.ui.swt@default:default,org.eclipse.emf.ecp.view.mappingdmr.model.edit@default:default,org.eclipse.emf.ecp.view.mappingdmr.model@default:default,org.eclipse.emf.ecp.view.mappingdmr.tooling@default:default,org.eclipse.emf.ecp.view.migrator@default:default,org.eclipse.emf.ecp.view.model.common.di@default:default,org.eclipse.emf.ecp.view.model.common@default:default,org.eclipse.emf.ecp.view.model.edapt@default:default,org.eclipse.emf.ecp.view.model.edit@default:default,org.eclipse.emf.ecp.view.model.editor@default:default,org.eclipse.emf.ecp.view.model.preview.common@default:default,org.eclipse.emf.ecp.view.model.preview.e3@default:default,org.eclipse.emf.ecp.view.model.project.installer@default:default,org.eclipse.emf.ecp.view.model.provider.generator@default:default,org.eclipse.emf.ecp.view.model.provider.xmi@default:default,org.eclipse.emf.ecp.view.model@default:default,org.eclipse.emf.ecp.view.rule.model.edit@default:default,org.eclipse.emf.ecp.view.rule.model@default:default,org.eclipse.emf.ecp.view.rule@default:default,org.eclipse.emf.ecp.view.section.model.edit@default:default,org.eclipse.emf.ecp.view.section.model@default:default,org.eclipse.emf.ecp.view.section.ui.swt@default:default,org.eclipse.emf.ecp.view.stack.model.edit@default:default,org.eclipse.emf.ecp.view.stack.model@default:default,org.eclipse.emf.ecp.view.stack.ui.swt@default:default,org.eclipse.emf.ecp.view.stack.viewmodel@default:default,org.eclipse.emf.ecp.view.swt.layout@default:default,org.eclipse.emf.ecp.view.table.celleditor.rcp@default:default,org.eclipse.emf.ecp.view.table.columnservice@default:default,org.eclipse.emf.ecp.view.table.edapt@default:default,org.eclipse.emf.ecp.view.table.model.edit@default:default,org.eclipse.emf.ecp.view.table.model@default:default,org.eclipse.emf.ecp.view.table.ui.rcp@default:default,org.eclipse.emf.ecp.view.table.ui.swt.persistedstate@default:default,org.eclipse.emf.ecp.view.table.ui.swt@default:default,org.eclipse.emf.ecp.view.table.validation@default:default,org.eclipse.emf.ecp.view.template.annotation.model.edit@default:default,org.eclipse.emf.ecp.view.template.annotation.model@default:default,org.eclipse.emf.ecp.view.template.model.edit@default:default,org.eclipse.emf.ecp.view.template.model@default:default,org.eclipse.emf.ecp.view.template.service@default:default,org.eclipse.emf.ecp.view.template.tooling@default:default,org.eclipse.emf.ecp.view.treemasterdetail.model.edit@default:default,org.eclipse.emf.ecp.view.treemasterdetail.model@default:default,org.eclipse.emf.ecp.view.treemasterdetail.ui.swt@default:default,org.eclipse.emf.ecp.view.treemasterdetail.validation@default:default,org.eclipse.emf.ecp.view.unset@default:default,org.eclipse.emf.ecp.view.util.swt@default:default,org.eclipse.emf.ecp.view.validation@default:default,org.eclipse.emf.ecp.view.vertical.model.edit@default:default,org.eclipse.emf.ecp.view.vertical.model@default:default,org.eclipse.emf.ecp.view.vertical.ui.swt@default:default,org.eclipse.emf.ecp.view.viewproxy.model.edit@default:default,org.eclipse.emf.ecp.view.viewproxy.model@default:default,org.eclipse.emf.ecp.workspace.core@default:default,org.eclipse.emfforms.common.prevalidation@default:default,org.eclipse.emfforms.common.validation@default:default,org.eclipse.emfforms.common@default:default,org.eclipse.emfforms.core.bazaar@default:default,org.eclipse.emfforms.core.services.databinding.featurepath@default:default,org.eclipse.emfforms.core.services.databinding.index@default:default,org.eclipse.emfforms.core.services.databinding.keyattribute@default:default,org.eclipse.emfforms.core.services.databinding.mapping@default:default,org.eclipse.emfforms.core.services.datatemplate@default:default,org.eclipse.emfforms.core.services.domainexpander.default@default:default,org.eclipse.emfforms.core.services.domainexpander.index@default:default,org.eclipse.emfforms.core.services.domainexpander.keyattribute@default:default,org.eclipse.emfforms.core.services.domainexpander.mapping@default:default,org.eclipse.emfforms.core.services.domainexpander.table@default:default,org.eclipse.emfforms.core.services.editsupport@default:default,org.eclipse.emfforms.core.services.emf@default:default,org.eclipse.emfforms.core.services.emfspecificservice@default:default,org.eclipse.emfforms.core.services.legacy@default:default,org.eclipse.emfforms.core.services.locale.default@default:default,org.eclipse.emfforms.core.services.mappingprovider.default@default:default,org.eclipse.emfforms.core.services.mappingprovider.table@default:default,org.eclipse.emfforms.core.services.structuralchange.default@default:default,org.eclipse.emfforms.core.services.structuralchange.index@default:default,org.eclipse.emfforms.core.services.structuralchange.keyattribute@default:default,org.eclipse.emfforms.core.services.structuralchange.mapping@default:default,org.eclipse.emfforms.core.services.structuralchange.table@default:default,org.eclipse.emfforms.core.services.structuralchange@default:default,org.eclipse.emfforms.core.services@default:default,org.eclipse.emfforms.datatemplate.model.edit@default:default,org.eclipse.emfforms.datatemplate.model@default:default,org.eclipse.emfforms.datatemplate.tooling@default:default,org.eclipse.emfforms.editor.ecore.test@default:false,org.eclipse.emfforms.editor.ecore@default:default,org.eclipse.emfforms.editor.genmodel.util@default:default,org.eclipse.emfforms.editor.genmodel@default:default,org.eclipse.emfforms.editor.viewmodel@default:default,org.eclipse.emfforms.editor@default:default,org.eclipse.emfforms.localization@default:default,org.eclipse.emfforms.rulerepository.model.edit@default:default,org.eclipse.emfforms.rulerepository.model@default:default,org.eclipse.emfforms.rulerepository.tooling@default:default,org.eclipse.emfforms.setup.base@default:default,org.eclipse.emfforms.swt.control.multiattribute@default:default,org.eclipse.emfforms.swt.control.text.autocomplete@default:default,org.eclipse.emfforms.swt.control.text.richtext@default:default,org.eclipse.emfforms.swt.controlgrid@default:default,org.eclipse.emfforms.swt.core.di.extension@default:default,org.eclipse.emfforms.swt.core.di@default:default,org.eclipse.emfforms.swt.core.plugin@default:default,org.eclipse.emfforms.swt.core@default:default,org.eclipse.emfforms.swt.table@default:default,org.eclipse.emfforms.swt.treemasterdetail.decorator.validation.default@default:default,org.eclipse.emfforms.swt.treemasterdetail@default:default,org.eclipse.emfforms.view.annotation.model.edit@default:default,org.eclipse.emfforms.view.annotation.model@default:default,org.eclipse.emfforms.view.controlgrid.model.edit@default:default,org.eclipse.emfforms.view.controlgrid.model@default:default,org.eclipse.emfforms.view.model.localization@default:default"/>
+<booleanAttribute key="show_selected_only" value="false"/>
+<booleanAttribute key="tracing" value="false"/>
+<booleanAttribute key="useCustomFeatures" value="false"/>
+<booleanAttribute key="useDefaultConfig" value="true"/>
+<booleanAttribute key="useDefaultConfigArea" value="false"/>
+<booleanAttribute key="useProduct" value="true"/>
+</launchConfiguration>
diff --git a/tests/org.eclipse.emfforms.editor.ecore.test/META-INF/MANIFEST.MF b/tests/org.eclipse.emfforms.editor.ecore.test/META-INF/MANIFEST.MF
index 0e361f6..7695265 100644
--- a/tests/org.eclipse.emfforms.editor.ecore.test/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.emfforms.editor.ecore.test/META-INF/MANIFEST.MF
@@ -2,52 +2,56 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: EMFForms Ecore Editor Test
 Bundle-SymbolicName: org.eclipse.emfforms.editor.ecore.test;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Fragment-Host: org.eclipse.emfforms.editor;bundle-version="[1.16.0,1.17.0)"
+Fragment-Host: org.eclipse.emfforms.editor;bundle-version="[1.17.0,1.18.0]"
 Export-Package: org.eclipse.emfforms.spi.editor;version="0.0.0"
 Require-Bundle: org.mockito.mockito-core-hamcrest-modified;bundle-version="[1.9.5,2.0.0)",
-  org.junit;bundle-version="[4.11.0,5.0.0)",
-  org.eclipse.emfforms.editor.ecore;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.core.runtime;bundle-version="[3.1.0,4.0.0)",
-  org.eclipse.emf.ecp.edit.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.template.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.ui.view.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.jface.databinding;bundle-version="[1.6.0,2.0.0)",
-  org.eclipse.emf.ecore.xmi;bundle-version="[2.10.0,3.0.0)",
-  org.eclipse.core.databinding.property;bundle-version="[1.4.0,2.0.0)",
-  org.eclipse.emf.ecp.view.core.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.ui.ide;bundle-version="[3.10.0,4.0.0)",
-  org.eclipse.jface;bundle-version="[3.10.0,4.0.0)",
-  org.eclipse.ui.workbench;bundle-version="[3.106.0,4.0.0)",
-  org.eclipse.emf.edit.ui;bundle-version="[2.10.0,3.0.0)",
-  org.eclipse.emf.edit;bundle-version="[2.10.0,3.0.0)",
-  org.eclipse.emfforms.core.services;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services.editsupport;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.databinding;bundle-version="[1.3.0,2.0.0)",
-  org.eclipse.emfforms.swt.treemasterdetail;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.databinding.edit;bundle-version="[1.2.0,2.0.0)",
-  org.eclipse.emfforms.localization;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.control.multireference;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.util.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.core.resources;bundle-version="[3.9.0,4.0.0)",
-  org.eclipse.emf.ecp.view.group.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.swt.treemasterdetail.decorator.validation.default;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.edit.ui;bundle-version="[2.10.0,3.0.0)",
-  org.eclipse.emf.ecore.edit;bundle-version="[2.9.0,3.0.0)",
-  org.eclipse.emf.ecore;bundle-version="[2.10.0,3.0.0)",
-  org.eclipse.core.resources;bundle-version="[3.9.0,4.0.0)",
-  org.eclipse.emf.ecp.view.validation;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.common.ui;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.ui.view.swt.di;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.swt.core.di.extension;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.swt.core.plugin;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.setup.base;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.model.provider.generator;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.model.provider.xmi;bundle-version="[1.16.0,1.17.0)"
+ org.junit;bundle-version="[4.11.0,5.0.0)",
+ org.eclipse.emfforms.editor.ecore;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.core.runtime;bundle-version="[3.1.0,4.0.0)",
+ org.eclipse.emf.ecp.edit.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.template.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.ui.view.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.jface.databinding;bundle-version="[1.6.0,2.0.0)",
+ org.eclipse.emf.ecore.xmi;bundle-version="[2.10.0,3.0.0)",
+ org.eclipse.core.databinding.property;bundle-version="[1.4.0,2.0.0)",
+ org.eclipse.emf.ecp.view.core.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.ui.ide;bundle-version="[3.10.0,4.0.0)",
+ org.eclipse.jface;bundle-version="[3.10.0,4.0.0)",
+ org.eclipse.ui.workbench;bundle-version="[3.106.0,4.0.0)",
+ org.eclipse.emf.edit.ui;bundle-version="[2.10.0,3.0.0)",
+ org.eclipse.emf.edit;bundle-version="[2.10.0,3.0.0)",
+ org.eclipse.emfforms.core.services;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services.editsupport;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.databinding;bundle-version="[1.3.0,2.0.0)",
+ org.eclipse.emfforms.swt.treemasterdetail;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.databinding.edit;bundle-version="[1.2.0,2.0.0)",
+ org.eclipse.emfforms.localization;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.control.multireference;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.util.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.core.resources;bundle-version="[3.9.0,4.0.0)",
+ org.eclipse.emf.ecp.view.group.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.swt.treemasterdetail.decorator.validation.default;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.edit.ui;bundle-version="[2.10.0,3.0.0)",
+ org.eclipse.emf.ecore.edit;bundle-version="[2.9.0,3.0.0)",
+ org.eclipse.emf.ecore;bundle-version="[2.10.0,3.0.0)",
+ org.eclipse.core.resources;bundle-version="[3.9.0,4.0.0)",
+ org.eclipse.emf.ecp.view.validation;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.common.ui;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.ui.view.swt.di;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.swt.core.di.extension;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.swt.core.plugin;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.setup.base;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.model.provider.generator;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.model.provider.xmi;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.validation;bundle-version="[1.17.0,1.18.0)",
+ org.eclipse.emf.ecp.view.table.validation;bundle-version="[1.17.0,1.18.0)",
+ org.eclipse.emfforms.common.validation;bundle-version="[1.17.0,1.18.0)"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Import-Package: javax.inject;version="1.0.0",
  org.eclipse.emfforms.bazaar;version="1.16.0",
- org.eclipse.emfforms.internal.editor.ecore.controls;version="[1.16.0,1.17.0)",
- org.eclipse.emfforms.spi.swt.core.di;version="[1.16.0,1.17.0)";resolution:=optional,
+ org.eclipse.emfforms.internal.editor.ecore.controls;version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.spi.swt.core.di;version="[1.17.0,1.18.0]";resolution:=optional,
  org.osgi.service.component.annotations;version="[1.2.0,2.0.0)";resolution:=optional
+Automatic-Module-Name: org.eclipse.emfforms.editor.ecore.test
diff --git a/tests/org.eclipse.emfforms.editor.ecore.test/build.properties b/tests/org.eclipse.emfforms.editor.ecore.test/build.properties
index 96202b6..fef3e1d 100644
--- a/tests/org.eclipse.emfforms.editor.ecore.test/build.properties
+++ b/tests/org.eclipse.emfforms.editor.ecore.test/build.properties
@@ -1,5 +1,8 @@
 source.. = src/
 output.. = bin/
 bin.includes = META-INF/,\
-               .
+               .,\
+               fragment.xml,\
+               viewmodels/,\
+               data/
 jre.compilation.profile = JavaSE-1.6
diff --git a/tests/org.eclipse.emfforms.editor.ecore.test/data/template.ecore b/tests/org.eclipse.emfforms.editor.ecore.test/data/template.ecore
new file mode 100644
index 0000000..8f3ea99
--- /dev/null
+++ b/tests/org.eclipse.emfforms.editor.ecore.test/data/template.ecore
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
+    name="template" nsURI="http://www.eclipse.org/ecp/2018/test" nsPrefix="test"/>
diff --git a/tests/org.eclipse.emfforms.editor.ecore.test/fragment.xml b/tests/org.eclipse.emfforms.editor.ecore.test/fragment.xml
new file mode 100644
index 0000000..365f516
--- /dev/null
+++ b/tests/org.eclipse.emfforms.editor.ecore.test/fragment.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<fragment>
+   <extension
+         point="org.eclipse.emf.ecp.view.validation.validationProvider">
+      <validationProvider
+            class="org.eclipse.emfforms.spi.editor.EcoreEditorPerformance_PTest$Validation">
+      </validationProvider>
+   </extension>
+
+   <extension
+         name=""
+         point="org.eclipse.emf.ecp.view.model.provider.xmi.file">
+      <file
+            filePath="viewmodels/EPackageForPerfTest.view">
+         <filter
+               key="perftest"
+               value="true">
+         </filter>
+         <filter
+               key="detail"
+               value="true">
+         </filter>
+      </file>
+   </extension>
+   <extension
+         name="Performance Test Editor - Do not use"
+         point="org.eclipse.ui.editors">
+      <editor
+            name="Performance Test Editor - do not use"
+            default="false"
+            extensions="ecore"
+            contributorClass="org.eclipse.emfforms.spi.editor.EMFUndoRedoActionBarContributor"
+            class="org.eclipse.emfforms.spi.editor.EcoreEditorPerformance_PTest$Editor"
+            id="org.eclipse.emfforms.editor.ecore.test.Editor">
+      </editor>
+   </extension>
+</fragment>
diff --git a/tests/org.eclipse.emfforms.editor.ecore.test/pom.xml b/tests/org.eclipse.emfforms.editor.ecore.test/pom.xml
index a21be9c..7f540fb 100644
--- a/tests/org.eclipse.emfforms.editor.ecore.test/pom.xml
+++ b/tests/org.eclipse.emfforms.editor.ecore.test/pom.xml
@@ -6,12 +6,12 @@
 	<parent>
 		<groupId>org.eclipse.emf.ecp</groupId>
 		<artifactId>ecp-tests-parent</artifactId>
-		<version>1.16.0-SNAPSHOT</version>
+		<version>1.17.0-SNAPSHOT</version>
 		<relativePath>../../releng/org.eclipse.emf.ecp.releng.tests/</relativePath>
 	</parent>
 	<groupId>org.eclipse.emf.ecp</groupId>
 	<artifactId>org.eclipse.emfforms.editor.ecore.test</artifactId>
-	<version>1.16.0-SNAPSHOT</version>
+	<version>1.17.0-SNAPSHOT</version>
 	<packaging>eclipse-test-plugin</packaging>
 
 	<build>
@@ -28,6 +28,24 @@
 		          	<failIfNoTests>false</failIfNoTests>
 				</configuration>
 			</plugin>
+			<plugin>
+				<groupId>org.eclipse.tycho</groupId>
+				<artifactId>target-platform-configuration</artifactId>
+				<version>${tycho-version}</version>
+				<configuration>
+					<!-- To test realistic performance of the editor we need as much
+					     functionality as the default EMF Forms run-time provides. -->
+					<dependency-resolution>
+						<extraRequirements>
+							<requirement>
+								<type>eclipse-feature</type>
+								<id>org.eclipse.emf.ecp.emfforms.runtime.feature</id>
+								<versionRange>0.0.0</versionRange>
+							</requirement>
+						</extraRequirements>
+					</dependency-resolution>
+				</configuration>
+			</plugin>
 		</plugins>
 	</build>
 </project>
diff --git a/tests/org.eclipse.emfforms.editor.ecore.test/src/org/eclipse/emfforms/spi/editor/EcoreEditorPerformance_PTest.java b/tests/org.eclipse.emfforms.editor.ecore.test/src/org/eclipse/emfforms/spi/editor/EcoreEditorPerformance_PTest.java
new file mode 100644
index 0000000..421c1e2
--- /dev/null
+++ b/tests/org.eclipse.emfforms.editor.ecore.test/src/org/eclipse/emfforms/spi/editor/EcoreEditorPerformance_PTest.java
@@ -0,0 +1,709 @@
+/*******************************************************************************
+ * Copyright (c) 2018 Christian W. Damus 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:
+ * Christian W. Damus - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.emfforms.spi.editor;
+
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.junit.Assert.fail;
+
+import java.io.IOException;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+import java.util.Random;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.IWorkspaceRunnable;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.SubMonitor;
+import org.eclipse.emf.common.command.Command;
+import org.eclipse.emf.common.util.BasicDiagnostic;
+import org.eclipse.emf.common.util.Diagnostic;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EClassifier;
+import org.eclipse.emf.ecore.EEnum;
+import org.eclipse.emf.ecore.EEnumLiteral;
+import org.eclipse.emf.ecore.ENamedElement;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EcoreFactory;
+import org.eclipse.emf.ecore.EcorePackage;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.emf.ecp.view.spi.common.callback.ViewModelPropertiesUpdateCallback;
+import org.eclipse.emf.ecp.view.spi.model.VViewModelProperties;
+import org.eclipse.emf.ecp.view.spi.validation.ValidationProvider;
+import org.eclipse.emf.edit.command.AddCommand;
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.emfforms.internal.editor.ecore.EcoreEditor;
+import org.eclipse.emfforms.spi.swt.treemasterdetail.TreeMasterDetailComposite;
+import org.eclipse.emfforms.spi.swt.treemasterdetail.util.CreateElementCallback;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IViewPart;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.PartInitException;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.ide.IDE;
+import org.junit.After;
+import org.junit.BeforeClass;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.TestWatcher;
+import org.junit.runner.Description;
+import org.osgi.framework.Bundle;
+import org.osgi.framework.FrameworkUtil;
+
+/**
+ * Performance tests for the <em>EMF Forms GenericEditor</em>, using the Ecore editor
+ * as test subject.
+ *
+ * @author Christian W. Damus
+ */
+@SuppressWarnings({ "nls", "restriction" })
+public class EcoreEditorPerformance_PTest {
+
+	private static final char[] NAME_CHARS = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_"
+		.toCharArray();
+	private static final char[] NAME_CHARS_NO_DIGITS = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_"
+		.toCharArray();
+
+	private static final String SMALL_FILE_NAME = "SmallScale.ecore";
+	private static final String LARGE_FILE_NAME = "LargeScale.ecore";
+
+	private static final int SMALL_SCALE = 50;
+	private static final int LARGE_SCALE = 3000;
+
+	private static final int ITERATIONS = 10;
+
+	// Something about the Linux environment seems to add to the cost (window manager?)
+	// even in a virtual machine on a Mac host. So, considering that the large model has
+	// 60 times the number of elements as the small model, a worst-case factor of 30
+	// could be considered generous for an expected linear scaling of performance (even
+	// though experiments on a local Mac are shown to be much better than this)
+	private static final double WORST_CASE_MULTIPLIER = Platform.WS_GTK.equals(Platform.getWS())
+		? 30.0
+		: 10.0;
+
+	private static Random random = new Random(System.currentTimeMillis());
+
+	@Rule
+	public final ProjectRule project = new ProjectRule();
+
+	/**
+	 * Initializes me.
+	 */
+	public EcoreEditorPerformance_PTest() {
+		super();
+	}
+
+	/**
+	 * Regression test for <a href="http://eclip.se/533568">bug 533568</a> in which the
+	 * {@link GenericEditor} leaks an instance of the {@link TreeMasterDetailComposite} and
+	 * its attendant "limbo" shell after the editor is closed, until workbench shutdown.
+	 */
+	@Test
+	@TestResource
+	public void treeMasterDetailCompositeDoesNotLeak() {
+		final int expectedShellCount = Display.getDefault().getShells().length;
+
+		final GenericEditor editor = open();
+		close(editor);
+
+		final int actualShellCount = Display.getDefault().getShells().length;
+		assertThat("Limbo shell remains", actualShellCount, is(expectedShellCount));
+	}
+
+	@Test
+	@TestResource(value = { "template.ecore", "template.ecore" }, //
+		generator = { EcoreGen.class, EcoreGen.class })
+	public void addElement() {
+		test(new Experiment() {
+
+			@Override
+			public void test(String filePath) {
+				final GenericEditor editor = open(filePath);
+
+				final EClassifier newEClassifier = addEClassifier(editor);
+				reveal(editor, newEClassifier);
+
+				close(editor);
+			}
+		});
+	}
+
+	@Test
+	@TestResource(value = { "template.ecore", "template.ecore" }, //
+		generator = { EcoreGen.class, EcoreGen.class })
+	public void validation() {
+		Validation.active = true;
+
+		test(new Experiment() {
+
+			@Override
+			public void test(String filePath) {
+				final GenericEditor editor = open(filePath);
+
+				final EClassifier lastEClassifier = getLastEClassifier(editor);
+				reveal(editor, lastEClassifier);
+
+				close(editor);
+			}
+		});
+	}
+
+	//
+	// Test framework
+	//
+
+	/**
+	 * Import the test models indicated by the annotations on the {@code test} into the {@code project}.
+	 */
+	void importTestModels(Description test, IProject project, IProgressMonitor monitor)
+		throws CoreException, IOException {
+
+		final String[] paths = getTestResources(test);
+		final TestResource.Generator[] generators = getGenerators(test);
+
+		final SubMonitor sub = SubMonitor.convert(monitor, paths.length);
+		final ResourceSet rset = new ResourceSetImpl();
+
+		for (int i = 0; i < paths.length; i++) {
+			final String path = paths[i];
+			final TestResource.Generator generator = generators.length > i ? generators[i] : null;
+
+			final URI uri = URI.createURI(
+				"platform:/fragment/org.eclipse.emfforms.editor.ecore.test/data/" + path);
+
+			final Resource resource = rset.getResource(uri, true);
+			resource
+				.setURI(URI.createPlatformResourceURI(String.format("%s/%s", project.getName(), path), true));
+			if (generator != null) {
+				generator.generate(resource, i, sub.newChild(1));
+			}
+			resource.save(null);
+
+			if (generator == null) {
+				// Didn't have a generator to advance the progress
+				sub.worked(1);
+			}
+		}
+
+		for (final Resource next : rset.getResources()) {
+			next.unload();
+		}
+		rset.getResources().clear();
+		rset.eAdapters().clear();
+	}
+
+	/**
+	 * Get the test resources indicated by the annotation on the given {@code test}.
+	 *
+	 * @param test a test
+	 * @return its test resources
+	 */
+	static String[] getTestResources(Description test) {
+		final TestResource testResource = test.getAnnotation(TestResource.class);
+		return testResource.value();
+	}
+
+	/**
+	 * Get the test data generators indicated by the annotation on the given {@code test}.
+	 *
+	 * @param test a test
+	 * @return its test generators, or an empty array if none
+	 */
+	static TestResource.Generator[] getGenerators(Description test) {
+		final TestResource testResource = test.getAnnotation(TestResource.class);
+		final Class<? extends TestResource.Generator>[] generatorClasses = testResource.generator();
+		final TestResource.Generator[] result = new TestResource.Generator[generatorClasses.length];
+
+		// BEGIN COMPLEX CODE
+		for (int i = 0; i < generatorClasses.length; i++) {
+			try {
+				result[i] = generatorClasses[i].newInstance();
+			} catch (final Exception e) {
+				e.printStackTrace();
+				fail("Failed to create test resource generator: " + e.getMessage());
+			}
+		}
+		// END COMPLEX CODE
+
+		return result;
+	}
+
+	@BeforeClass
+	public static void closeIntroView() {
+		final IViewPart introView = getActivePage().findView("org.eclipse.ui.internal.introview");
+		if (introView != null) {
+			introView.getSite().getPage().hideView(introView);
+		}
+	}
+
+	@After
+	public void closeAllEditors() {
+		getActivePage().closeAllEditors(false);
+	}
+
+	@After
+	public void ensureNoValidation() {
+		Validation.active = false;
+	}
+
+	/**
+	 * Run an {@code experiment} on both the small- and the large-scale test model, measuring
+	 * the performance of each, and compare the performance to verify that it's not worse
+	 * than the expected worst case multiplier.
+	 *
+	 * @param experiment the experiment to run at each scale of model
+	 */
+	final void test(Experiment experiment) {
+		class RunnableExperiment implements Runnable {
+			private final String filePath;
+			private final Experiment experiment;
+
+			RunnableExperiment(String filePath, Experiment experiment) {
+				super();
+
+				this.filePath = filePath;
+				this.experiment = experiment;
+			}
+
+			@Override
+			public void run() {
+				experiment.test(filePath);
+			}
+		}
+
+		final Measure smallScale = time(ITERATIONS, new RunnableExperiment(SMALL_FILE_NAME, experiment));
+		System.out.println("Small scale: " + smallScale);
+		final Measure largeScale = time(ITERATIONS, new RunnableExperiment(LARGE_FILE_NAME, experiment));
+		System.out.println("Large scale: " + largeScale);
+
+		if (largeScale.average > WORST_CASE_MULTIPLIER * smallScale.average) {
+			fail(String.format("Performance does not scale: %s ≫ %s", largeScale, smallScale));
+		}
+	}
+
+	/**
+	 * Run an {@code experiment} several times to compute the average elapsed time
+	 * with standard deviation.
+	 */
+	Measure time(int iterations, Runnable experiment) {
+		final int count = Math.max(7, iterations); // We toss high and low so need at least five
+		final int n = count - 2;
+
+		final double[] samples = new double[count];
+
+		for (int i = 0; i < count; i++) {
+			final long start = System.nanoTime();
+			experiment.run();
+			final long end = System.nanoTime();
+			samples[i] = (end - start) / 1000000d;
+		}
+
+		Arrays.sort(samples);
+
+		final int last = count - 1;
+		double sum = 0.0;
+		for (int i = 1; i < last; i++) {
+			sum = sum + samples[i];
+		}
+
+		final double average = sum / n;
+		double sumdev = 0.0;
+		for (int i = 1; i < last; i++) {
+			final double dev = samples[i] - average;
+			sumdev = sumdev + dev * dev;
+		}
+		final double stddev = Math.sqrt(sumdev / (n - 1));
+
+		return new Measure(average, stddev);
+	}
+
+	GenericEditor open() {
+		return open(project.getFiles().get(0));
+	}
+
+	GenericEditor open(String fileName) {
+		return open(project.getProject().getFile(fileName));
+	}
+
+	GenericEditor open(IFile file) {
+		try {
+			final IEditorPart result = IDE.openEditor(getActivePage(), file,
+				"org.eclipse.emfforms.editor.ecore.test.Editor");
+			return (GenericEditor) result;
+		} catch (final PartInitException e) {
+			e.printStackTrace();
+			fail("Failed to open editor: " + e.getMessage());
+			return null; // Unreachable
+		} finally {
+			flushUIEvents();
+		}
+	}
+
+	void close(IEditorPart editor) {
+		editor.getSite().getPage().closeEditor(editor, false);
+
+		flushUIEvents();
+	}
+
+	static IWorkbenchPage getActivePage() {
+		final IWorkbench bench = PlatformUI.getWorkbench();
+		IWorkbenchWindow window = bench.getActiveWorkbenchWindow();
+		if (window == null) {
+			window = bench.getWorkbenchWindows()[0];
+		}
+		return window.getActivePage();
+	}
+
+	/**
+	 * Add an {@link EClassifier} in an {@code editor}.
+	 *
+	 * @return the newly added classifier
+	 */
+	EClassifier addEClassifier(GenericEditor editor) {
+		final EditingDomain domain = editor.getEditingDomain();
+		final EPackage ePackage = (EPackage) EcoreUtil.getObjectByType(
+			domain.getResourceSet().getResources().get(0).getContents(),
+			EcorePackage.Literals.EPACKAGE);
+		final EClassifier result = EcoreFactory.eINSTANCE.createEClass();
+		result.setName("NewClass");
+		final Command command = AddCommand.create(domain, ePackage, EcorePackage.Literals.EPACKAGE__ECLASSIFIERS,
+			result);
+		domain.getCommandStack().execute(command);
+
+		flushUIEvents();
+
+		return result;
+	}
+
+	/**
+	 * Get the last {@link EClassifier} in an {@code editor}.
+	 *
+	 * @return the last classifier
+	 */
+	EClassifier getLastEClassifier(GenericEditor editor) {
+		final EditingDomain domain = editor.getEditingDomain();
+		final EPackage ePackage = (EPackage) EcoreUtil.getObjectByType(
+			domain.getResourceSet().getResources().get(0).getContents(),
+			EcorePackage.Literals.EPACKAGE);
+
+		final List<EClassifier> classifiers = ePackage.getEClassifiers();
+		return classifiers.get(classifiers.size() - 1);
+	}
+
+	/**
+	 * Reveal an {@code object} in the {@code editor}.
+	 */
+	void reveal(GenericEditor editor, EObject object) {
+		editor.reveal(object);
+		flushUIEvents();
+	}
+
+	/**
+	 * Generate EClassifiers in an Ecore model.
+	 */
+	static void generateEClassifiers(Resource resource, String name, int size, boolean forValidation,
+		IProgressMonitor monitor)
+		throws CoreException, IOException {
+
+		final SubMonitor sub = SubMonitor.convert(monitor, size);
+
+		final EPackage ePackage = (EPackage) EcoreUtil.getObjectByType(resource.getContents(),
+			EcorePackage.Literals.EPACKAGE);
+		resource.setURI(resource.getURI().trimSegments(1).appendSegment(name));
+		generateClassifiers(ePackage, size, forValidation, sub.newChild(size));
+	}
+
+	static void generateClassifiers(EPackage ePackage, int count, boolean forValidation, IProgressMonitor monitor) {
+		monitor.beginTask("Generating station content...", count);
+
+		final List<EClassifier> classifiers = ePackage.getEClassifiers();
+		for (int i = 0; i < count; i++) {
+			EClassifier classifier;
+			if (random.nextDouble() >= 0.8) {
+				// Relatively smaller proportion of data types
+				classifier = random.nextBoolean() ? EcoreFactory.eINSTANCE.createEEnum()
+					: EcoreFactory.eINSTANCE.createEDataType();
+
+				if (classifier instanceof EEnum) {
+					// It must have at least one literal
+					final EEnumLiteral literal = EcoreFactory.eINSTANCE.createEEnumLiteral();
+					literal.setName("literal");
+					((EEnum) classifier).getELiterals().add(literal);
+				} else {
+					// It must have an instance class
+					classifier.setInstanceClass(Void.class);
+				}
+			} else {
+				final EClass eClass = EcoreFactory.eINSTANCE.createEClass();
+				eClass.setAbstract(random.nextBoolean());
+				classifier = eClass;
+			}
+
+			// Only allow digits in tests with validation, so that otherwise we won't
+			// waste effort on presenting validation errors for EClassifiers whose names
+			// start with numeric digits (which makes for invalid Java names)
+			classifier.setName(randomName(forValidation));
+			classifiers.add(classifier);
+		}
+	}
+
+	static String randomName(boolean withDigits) {
+		// We have a constraint that checks for even number of characters in strings in abstract classes
+		final int length = random.nextBoolean() ? 9 : 10;
+		final char[] result = new char[length];
+
+		final char[] charExtent = withDigits ? NAME_CHARS : NAME_CHARS_NO_DIGITS;
+
+		for (int i = 0; i < length; i++) {
+			result[i] = charExtent[random.nextInt(charExtent.length)];
+		}
+
+		return new String(result);
+	}
+
+	static void flushUIEvents() {
+		final Display display = Display.getCurrent();
+		while (display.readAndDispatch()) {
+			// Nothing to do
+		}
+	}
+
+	//
+	// Nested types
+	//
+
+	/**
+	 * Annotates a test with the resources that it needs to import into the test project.
+	 */
+	@Target(ElementType.METHOD)
+	@Retention(RetentionPolicy.RUNTIME)
+	@interface TestResource {
+		/**
+		 * Paths within the {@code data/} folder of resources to import into the test project.
+		 */
+		String[] value() default { "test.ecore" };
+
+		/**
+		 * Optional generators to run on each test resource. If specified, there must be
+		 * exactly one value per resource in the {@link #value()}.
+		 *
+		 * @return resource generators
+		 */
+		Class<? extends Generator>[] generator() default {};
+
+		interface Generator {
+			void generate(Resource resource, int index, IProgressMonitor monitor) throws IOException, CoreException;
+		}
+	}
+
+	public final class ProjectRule extends TestWatcher {
+		private IProject project;
+
+		private List<IFile> files;
+
+		/**
+		 * @return the project
+		 */
+		public IProject getProject() {
+			return project;
+		}
+
+		/**
+		 * @return the files
+		 */
+		public List<IFile> getFiles() {
+			return files;
+		}
+
+		@Override
+		protected void starting(final Description description) {
+			project = ResourcesPlugin.getWorkspace().getRoot().getProject(description.getMethodName());
+
+			try {
+				if (project.exists()) {
+					flushUIEvents();
+					project.delete(true, null);
+				}
+				flushUIEvents();
+				project.create(null);
+				project.open(null);
+
+				project.getWorkspace().run(new IWorkspaceRunnable() {
+
+					@Override
+					public void run(IProgressMonitor monitor) throws CoreException {
+						try {
+							importTestModels(description, project, monitor);
+						} catch (final IOException e) {
+							final Bundle bundle = FrameworkUtil.getBundle(getClass());
+							String message = e.getMessage();
+							if (message == null || message.isEmpty()) {
+								message = "Unknown I/O exception.";
+							}
+							throw new CoreException(
+								new Status(IStatus.ERROR, bundle.getSymbolicName(), message, e));
+						}
+					}
+				}, new NullProgressMonitor());
+
+				flushUIEvents();
+
+				// Generators can change the file names
+				files = new ArrayList<IFile>(getTestResources(description).length);
+				for (final IResource next : project.members()) {
+					if (next.getType() == IResource.FILE) {
+						files.add((IFile) next);
+					}
+				}
+			} catch (final CoreException e) {
+				e.printStackTrace();
+				fail("Failed to create test project: " + e.getStatus().getMessage());
+			}
+		}
+
+		@Override
+		protected void finished(Description description) {
+			flushUIEvents();
+			try {
+				project.delete(true, null);
+			} catch (final CoreException e) {
+				e.printStackTrace();
+			}
+			flushUIEvents();
+		}
+	}
+
+	/**
+	 * Protocol for a measured (timed) experiment.
+	 *
+	 * @author Christian W. Damus
+	 */
+	interface Experiment {
+		void test(String filePath);
+	}
+
+	static final class Measure {
+		// BEGIN COMPLEX CODE
+		final double average;
+		final double stddev;
+		// END COMPLEX CODE
+
+		Measure(double average, double stddev) {
+			super();
+
+			this.average = average;
+			this.stddev = stddev;
+		}
+
+		@Override
+		public String toString() {
+			return String.format("%.1f ms (σ = %.2f ms)", average, stddev);
+		}
+	}
+
+	/**
+	 * Subclass of the <em>Ecore Editor</em> that injects view-model properties to select our
+	 * custom {@link EPackage} view.
+	 */
+	public static final class Editor extends EcoreEditor {
+		@Override
+		protected TreeMasterDetailComposite createTreeMasterDetail(Composite composite, Object editorInput,
+			CreateElementCallback createElementCallback) {
+
+			final TreeMasterDetailComposite result = super.createTreeMasterDetail(composite, editorInput,
+				createElementCallback);
+			result.addViewModelPropertiesUpdateCallback(new ViewModelPropertiesUpdateCallback() {
+
+				@Override
+				public void updateViewModelProperties(VViewModelProperties properties) {
+					// Pick our special views
+					properties.addNonInheritableProperty("perftest", true);
+				}
+			});
+			return result;
+		}
+
+	}
+
+	/**
+	 * A dummy validation provider that complains about an {@link EClass} that is
+	 * a {@link EClass#isAbstract() abstract} and has a {@link ENamedElement#getName() name}
+	 * that has an odd number of characters.
+	 */
+	public static final class Validation implements ValidationProvider {
+		private static boolean active;
+
+		@Override
+		public List<Diagnostic> validate(EObject eObject) {
+			if (!active || !(eObject instanceof EClass)) {
+				return Collections.emptyList();
+			}
+
+			Diagnostic result;
+
+			final EClass eClass = (EClass) eObject;
+			if (!eClass.isAbstract() || !hasOddLength(eClass.getName())) {
+				result = Diagnostic.OK_INSTANCE;
+			} else {
+				result = new BasicDiagnostic(Diagnostic.ERROR, "test", 1,
+					"Name has odd length.", new Object[] { eClass, EcorePackage.Literals.ENAMED_ELEMENT__NAME });
+			}
+
+			return Collections.singletonList(result);
+		}
+
+		private boolean hasOddLength(String string) {
+			return string != null && string.length() % 2 != 0;
+		}
+	}
+
+	/**
+	 * Generates from the template resource two Ecore models: a small-scale model and a large-scale model.
+	 */
+	static final class EcoreGen implements TestResource.Generator {
+
+		@Override
+		public void generate(Resource resource, int index, IProgressMonitor monitor) throws IOException, CoreException {
+			// Is it a validation test?
+			final boolean forValidation = resource.getURI().segmentsList().contains("validation");
+			if (index == 0) {
+				generateEClassifiers(resource, SMALL_FILE_NAME, SMALL_SCALE, forValidation, monitor);
+			} else {
+				generateEClassifiers(resource, LARGE_FILE_NAME, LARGE_SCALE, forValidation, monitor);
+			}
+		}
+
+	}
+}
diff --git a/tests/org.eclipse.emfforms.editor.ecore.test/viewmodels/EPackageForPerfTest.view b/tests/org.eclipse.emfforms.editor.ecore.test/viewmodels/EPackageForPerfTest.view
new file mode 100644
index 0000000..1e0f4f4
--- /dev/null
+++ b/tests/org.eclipse.emfforms.editor.ecore.test/viewmodels/EPackageForPerfTest.view
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="ASCII"?>
+<view:View xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:view="http://org/eclipse/emf/ecp/view/model/1170" xmlns:table="http://org/eclipse/emf/ecp/view/table/model/150">
+  <ecorePaths>/org.eclipse.emf.ecore/model/Ecore.ecore</ecorePaths>
+  <rootEClass href="http://www.eclipse.org/emf/2002/Ecore#//EPackage"/>
+  <children xsi:type="view:Control" name="Control name">
+    <domainModelReference xsi:type="view:FeaturePathDomainModelReference">
+      <domainModelEFeature xsi:type="ecore:EAttribute" href="http://www.eclipse.org/emf/2002/Ecore#//ENamedElement/name"/>
+    </domainModelReference>
+  </children>
+  <children xsi:type="view:Control" name="Control nsURI">
+    <domainModelReference xsi:type="view:FeaturePathDomainModelReference">
+      <domainModelEFeature xsi:type="ecore:EAttribute" href="http://www.eclipse.org/emf/2002/Ecore#//EPackage/nsURI"/>
+    </domainModelReference>
+  </children>
+  <children xsi:type="view:Control" name="Control nsPrefix">
+    <domainModelReference xsi:type="view:FeaturePathDomainModelReference">
+      <domainModelEFeature xsi:type="ecore:EAttribute" href="http://www.eclipse.org/emf/2002/Ecore#//EPackage/nsPrefix"/>
+    </domainModelReference>
+  </children>
+  <children xsi:type="table:TableControl" name="Table eClassifiers" detailEditing="WithPanel">
+    <domainModelReference xsi:type="table:TableDomainModelReference">
+      <domainModelReference xsi:type="view:FeaturePathDomainModelReference">
+        <domainModelEFeature xsi:type="ecore:EReference" href="http://www.eclipse.org/emf/2002/Ecore#//EPackage/eClassifiers"/>
+      </domainModelReference>
+    </domainModelReference>
+  </children>
+</view:View>
diff --git a/tests/org.eclipse.emfforms.localization.tests/META-INF/MANIFEST.MF b/tests/org.eclipse.emfforms.localization.tests/META-INF/MANIFEST.MF
index 9a6d09d..a8203ab 100644
--- a/tests/org.eclipse.emfforms.localization.tests/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.emfforms.localization.tests/META-INF/MANIFEST.MF
@@ -2,11 +2,12 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: EMF Forms Localization Tests
 Bundle-SymbolicName: org.eclipse.emfforms.localization.tests
-Bundle-Version: 1.16.0.qualifier
-Fragment-Host: org.eclipse.emfforms.localization;bundle-version="[1.16.0,1.17.0)"
-Export-Package: org.eclipse.emfforms.internal.localization.tests;version="1.16.0";x-internal:=true,
-  org.eclipse.emfforms.spi.localization;version="1.16.0"
+Bundle-Version: 1.17.0.qualifier
+Fragment-Host: org.eclipse.emfforms.localization;bundle-version="[1.17.0,1.18.0]"
+Export-Package: org.eclipse.emfforms.internal.localization.tests;version="1.17.0";x-internal:=true,
+ org.eclipse.emfforms.spi.localization;version="1.17.0"
 Require-Bundle: org.junit;bundle-version="4.11.0",
   org.mockito.mockito-core-hamcrest-modified;bundle-version="1.9.5",
   org.eclipse.equinox.ds;bundle-version="[1.4.0,2.0.0)"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Automatic-Module-Name: org.eclipse.emfforms.localization.tests
diff --git a/tests/org.eclipse.emfforms.localization.tests/pom.xml b/tests/org.eclipse.emfforms.localization.tests/pom.xml
index 84e9c9d..9eeacfa 100644
--- a/tests/org.eclipse.emfforms.localization.tests/pom.xml
+++ b/tests/org.eclipse.emfforms.localization.tests/pom.xml
@@ -6,12 +6,12 @@
 	<parent>
 		<groupId>org.eclipse.emf.ecp</groupId>
 		<artifactId>ecp-tests-parent</artifactId>
-		<version>1.16.0-SNAPSHOT</version>
+		<version>1.17.0-SNAPSHOT</version>
 		<relativePath>../../releng/org.eclipse.emf.ecp.releng.tests/</relativePath>
 	</parent>
 	<groupId>org.eclipse.emf.ecp</groupId>
 	<artifactId>org.eclipse.emfforms.localization.tests</artifactId>
-	<version>1.16.0-SNAPSHOT</version>
+	<version>1.17.0-SNAPSHOT</version>
 	<packaging>eclipse-test-plugin</packaging>
 
 	<build>
diff --git a/tests/org.eclipse.emfforms.rulerepository.tooling.test/META-INF/MANIFEST.MF b/tests/org.eclipse.emfforms.rulerepository.tooling.test/META-INF/MANIFEST.MF
index 1814265..747c0a4 100644
--- a/tests/org.eclipse.emfforms.rulerepository.tooling.test/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.emfforms.rulerepository.tooling.test/META-INF/MANIFEST.MF
@@ -2,12 +2,14 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Rule Repository Tooling Test
 Bundle-SymbolicName: org.eclipse.emfforms.rulerepository.tooling.test
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Fragment-Host: org.eclipse.emfforms.rulerepository.tooling;bundle-version="[1.16.0,1.17.0)"
+Fragment-Host: org.eclipse.emfforms.rulerepository.tooling;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Require-Bundle: org.junit;bundle-version="[4.12.0,5.0.0)",
  org.mockito.mockito-core-hamcrest-modified;bundle-version="[1.9.5,2.0.0)",
  org.objenesis;bundle-version="[1.0.0,2.0.0)"
-Export-Package: org.eclipse.emfforms.internal.rulerepository.tooling.merge;version="1.16.0";x-internal:=true,
- org.eclipse.emfforms.rulerepository.tooling.test;version="1.16.0";x-internal:=true
+Export-Package: org.eclipse.emfforms.internal.rulerepository.tooling.merge;version="1.17.0";x-internal:=true,
+ org.eclipse.emfforms.internal.rulerepository.tooling.wizard;version="1.17.0";x-internal:=true,
+ org.eclipse.emfforms.rulerepository.tooling.test;version="1.17.0";x-internal:=true
+Automatic-Module-Name: org.eclipse.emfforms.rulerepository.tooling.test
diff --git a/tests/org.eclipse.emfforms.rulerepository.tooling.test/pom.xml b/tests/org.eclipse.emfforms.rulerepository.tooling.test/pom.xml
index 29d1514..8a5828f 100644
--- a/tests/org.eclipse.emfforms.rulerepository.tooling.test/pom.xml
+++ b/tests/org.eclipse.emfforms.rulerepository.tooling.test/pom.xml
@@ -6,13 +6,13 @@
 	<parent>
 		<groupId>org.eclipse.emf.ecp</groupId>
 		<artifactId>ecp-tests-parent</artifactId>
-		<version>1.16.0-SNAPSHOT</version>
+		<version>1.17.0-SNAPSHOT</version>
 		<relativePath>../../releng/org.eclipse.emf.ecp.releng.tests/</relativePath>
 	</parent>
 
 	<artifactId>org.eclipse.emfforms.rulerepository.tooling.test</artifactId>
 	<packaging>eclipse-test-plugin</packaging>
-	<version>1.16.0-SNAPSHOT</version>
+	<version>1.17.0-SNAPSHOT</version>
 	<groupId>org.eclipse.emf.ecp</groupId>
 
 	<build>
diff --git a/tests/org.eclipse.emfforms.rulerepository.tooling.test/src/org/eclipse/emfforms/internal/rulerepository/tooling/wizard/EMFFormsNewRuleRepositoryWizardPage_Test.java b/tests/org.eclipse.emfforms.rulerepository.tooling.test/src/org/eclipse/emfforms/internal/rulerepository/tooling/wizard/EMFFormsNewRuleRepositoryWizardPage_Test.java
new file mode 100644
index 0000000..47d7d45
--- /dev/null
+++ b/tests/org.eclipse.emfforms.rulerepository.tooling.test/src/org/eclipse/emfforms/internal/rulerepository/tooling/wizard/EMFFormsNewRuleRepositoryWizardPage_Test.java
@@ -0,0 +1,70 @@
+/*******************************************************************************
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * jonas - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.emfforms.internal.rulerepository.tooling.wizard;
+
+import static org.junit.Assert.assertEquals;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import org.eclipse.core.resources.IResource;
+import org.junit.Test;
+
+/**
+ * @author Jonas Helming
+ *
+ */
+public class EMFFormsNewRuleRepositoryWizardPage_Test {
+
+	/**
+	 * Test method for
+	 * {@link org.eclipse.emfforms.internal.rulerepository.tooling.wizard.EMFFormsNewRuleRepositoryWizardPage#getContainerErrorMessage(org.eclipse.core.resources.IResource)}.
+	 */
+	@Test
+	public void testGetContainerErrorMessageContainerNull() {
+		final String errorMessage = EMFFormsNewRuleRepositoryWizardPage.getContainerErrorMessage(null);
+		assertEquals(Messages.EMFFormsRuleRepositoryWizardPage_errorContainerNotExists, errorMessage);
+	}
+
+	@Test
+	public void testGetContainerErrorMessageNoType() {
+		final IResource mockResource = mock(IResource.class);
+		final String errorMessage = EMFFormsNewRuleRepositoryWizardPage.getContainerErrorMessage(mockResource);
+		assertEquals(Messages.EMFFormsRuleRepositoryWizardPage_errorContainerNotExists, errorMessage);
+	}
+
+	@Test
+	public void testGetContainerErrorMessageWrongType() {
+		final IResource mockResource = mock(IResource.class);
+		when(mockResource.getType()).thenReturn(IResource.FILE);
+		final String errorMessage = EMFFormsNewRuleRepositoryWizardPage.getContainerErrorMessage(mockResource);
+		assertEquals(Messages.EMFFormsRuleRepositoryWizardPage_errorContainerNotExists, errorMessage);
+	}
+
+	@Test
+	public void testGetContainerErrorMessageFolderNotWritable() {
+		final IResource mockResource = mock(IResource.class);
+		when(mockResource.getType()).thenReturn(IResource.FOLDER);
+		when(mockResource.isAccessible()).thenReturn(false);
+		final String errorMessage = EMFFormsNewRuleRepositoryWizardPage.getContainerErrorMessage(mockResource);
+		assertEquals(Messages.EMFFormsRuleRepositoryWizardPage_errorProjectReadOnly, errorMessage);
+	}
+
+	@Test
+	public void testGetContainerErrorMessageProjectWritable() {
+		final IResource mockResource = mock(IResource.class);
+		when(mockResource.getType()).thenReturn(IResource.PROJECT);
+		when(mockResource.isAccessible()).thenReturn(true);
+		final String errorMessage = EMFFormsNewRuleRepositoryWizardPage.getContainerErrorMessage(mockResource);
+		assertEquals(null, errorMessage);
+	}
+
+}
diff --git a/tests/org.eclipse.emfforms.rulerepository.tooling.test/src/org/eclipse/emfforms/rulerepository/tooling/test/AllTests.java b/tests/org.eclipse.emfforms.rulerepository.tooling.test/src/org/eclipse/emfforms/rulerepository/tooling/test/AllTests.java
index 1dd24c5..ebbcd93 100644
--- a/tests/org.eclipse.emfforms.rulerepository.tooling.test/src/org/eclipse/emfforms/rulerepository/tooling/test/AllTests.java
+++ b/tests/org.eclipse.emfforms.rulerepository.tooling.test/src/org/eclipse/emfforms/rulerepository/tooling/test/AllTests.java
@@ -12,6 +12,7 @@
 package org.eclipse.emfforms.rulerepository.tooling.test;
 
 import org.eclipse.emfforms.internal.rulerepository.tooling.merge.MergeWithViewHandler_Test;
+import org.eclipse.emfforms.internal.rulerepository.tooling.wizard.EMFFormsNewRuleRepositoryWizardPage_Test;
 import org.junit.runner.RunWith;
 import org.junit.runners.Suite;
 import org.junit.runners.Suite.SuiteClasses;
@@ -23,7 +24,7 @@
  *
  */
 @RunWith(Suite.class)
-@SuiteClasses({ MergeWithViewHandler_Test.class })
+@SuiteClasses({ MergeWithViewHandler_Test.class, EMFFormsNewRuleRepositoryWizardPage_Test.class })
 public class AllTests {
 
 }
diff --git a/tests/org.eclipse.emfforms.swt.common.test/.classpath b/tests/org.eclipse.emfforms.swt.common.test/.classpath
index eca7bdb..ad32c83 100644
--- a/tests/org.eclipse.emfforms.swt.common.test/.classpath
+++ b/tests/org.eclipse.emfforms.swt.common.test/.classpath
@@ -1,6 +1,6 @@
 <?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.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
 	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
 	<classpathentry kind="src" path="src"/>
 	<classpathentry kind="output" path="bin"/>
diff --git a/tests/org.eclipse.emfforms.swt.common.test/META-INF/MANIFEST.MF b/tests/org.eclipse.emfforms.swt.common.test/META-INF/MANIFEST.MF
index 14f2c2a..908049f 100644
--- a/tests/org.eclipse.emfforms.swt.common.test/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.emfforms.swt.common.test/META-INF/MANIFEST.MF
@@ -2,18 +2,19 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: EMFForms SWT Common Test Helper
 Bundle-SymbolicName: org.eclipse.emfforms.swt.common.test
-Bundle-Version: 1.16.0.qualifier
-Export-Package: org.eclipse.emfforms.swt.common.test;version="1.16.0"
+Bundle-Version: 1.17.0.qualifier
+Export-Package: org.eclipse.emfforms.swt.common.test;version="1.17.0"
 Require-Bundle: org.junit;bundle-version="[4.0.0,5.0.0)",
-  org.mockito.mockito-core-hamcrest-modified;bundle-version="[1.9.5,2.0.0)",
-  org.eclipse.emfforms.core.services;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.core.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.template.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.edit;bundle-version="[2.11.0,3.0.0)",
-  org.eclipse.emf.ecp.view.context;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.swt.core;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.ui.view;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.model.common;bundle-version="[1.16.0,1.17.0)"
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+ org.mockito.mockito-core-hamcrest-modified;bundle-version="[1.9.5,2.0.0)",
+ org.eclipse.emfforms.core.services;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.core.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.template.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.edit;bundle-version="[2.11.0,3.0.0)",
+ org.eclipse.emf.ecp.view.context;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.swt.core;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.ui.view;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.model.common;bundle-version="[1.17.0,1.18.0]"
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Import-Package: org.eclipse.swt;version="0.0.0",
  org.eclipse.swt.widgets;version="0.0.0"
+Automatic-Module-Name: org.eclipse.emfforms.swt.common.test
diff --git a/tests/org.eclipse.emfforms.swt.common.test/pom.xml b/tests/org.eclipse.emfforms.swt.common.test/pom.xml
index 8506193..46e27cd 100644
--- a/tests/org.eclipse.emfforms.swt.common.test/pom.xml
+++ b/tests/org.eclipse.emfforms.swt.common.test/pom.xml
@@ -6,13 +6,13 @@
 	<parent>
 		<groupId>org.eclipse.emf.ecp</groupId>
 		<artifactId>ecp-tests-parent</artifactId>
-		<version>1.16.0-SNAPSHOT</version>
+		<version>1.17.0-SNAPSHOT</version>
 		<relativePath>../../releng/org.eclipse.emf.ecp.releng.tests/</relativePath>
 	</parent>
 
 	<artifactId>org.eclipse.emfforms.swt.common.test</artifactId>
 	<packaging>eclipse-test-plugin</packaging>
-	<version>1.16.0-SNAPSHOT</version>
+	<version>1.17.0-SNAPSHOT</version>
 
 	<build>
 		<sourceDirectory>src</sourceDirectory>
diff --git a/tests/org.eclipse.emfforms.swt.control.multiattribute.tests/.checkstyle b/tests/org.eclipse.emfforms.swt.control.multiattribute.tests/.checkstyle
new file mode 100644
index 0000000..24d357f
--- /dev/null
+++ b/tests/org.eclipse.emfforms.swt.control.multiattribute.tests/.checkstyle
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<fileset-config file-format-version="1.2.0" simple-config="false" sync-formatter="false">
+  <local-check-config name="ESMCheckstyleTest" location="/org.eclipse.emf.ecp.releng/checkstyle/esmCheckstyleTest.xml" type="project" description="">
+    <additional-data name="protect-config-file" value="false"/>
+  </local-check-config>
+  <fileset name="Java Files" enabled="true" check-config-name="ESMCheckstyleTest" local="true">
+    <file-match-pattern match-pattern=".java" include-pattern="true"/>
+  </fileset>
+</fileset-config>
diff --git a/tests/org.eclipse.emfforms.swt.control.multiattribute.tests/.classpath b/tests/org.eclipse.emfforms.swt.control.multiattribute.tests/.classpath
new file mode 100644
index 0000000..ad32c83
--- /dev/null
+++ b/tests/org.eclipse.emfforms.swt.control.multiattribute.tests/.classpath
@@ -0,0 +1,7 @@
+<?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.6"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/tests/org.eclipse.emfforms.swt.control.multiattribute.tests/.project b/tests/org.eclipse.emfforms.swt.control.multiattribute.tests/.project
new file mode 100644
index 0000000..38f4ed3
--- /dev/null
+++ b/tests/org.eclipse.emfforms.swt.control.multiattribute.tests/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.emfforms.swt.control.multiattribute.tests</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>net.sf.eclipsecs.core.CheckstyleBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>net.sf.eclipsecs.core.CheckstyleNature</nature>
+	</natures>
+</projectDescription>
diff --git a/tests/org.eclipse.emfforms.swt.control.multiattribute.tests/.settings/org.eclipse.core.resources.prefs b/tests/org.eclipse.emfforms.swt.control.multiattribute.tests/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..f548abb
--- /dev/null
+++ b/tests/org.eclipse.emfforms.swt.control.multiattribute.tests/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,6 @@
+eclipse.preferences.version=1
+
+encoding//model/etypes.ecore=UTF-8
+
+
+encoding/<project>=UTF-8
diff --git a/tests/org.eclipse.emfforms.swt.control.multiattribute.tests/.settings/org.eclipse.core.runtime.prefs b/tests/org.eclipse.emfforms.swt.control.multiattribute.tests/.settings/org.eclipse.core.runtime.prefs
new file mode 100644
index 0000000..5a0ad22
--- /dev/null
+++ b/tests/org.eclipse.emfforms.swt.control.multiattribute.tests/.settings/org.eclipse.core.runtime.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+line.separator=\n
diff --git a/tests/org.eclipse.emfforms.swt.control.multiattribute.tests/.settings/org.eclipse.jdt.core.prefs b/tests/org.eclipse.emfforms.swt.control.multiattribute.tests/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..c948297
--- /dev/null
+++ b/tests/org.eclipse.emfforms.swt.control.multiattribute.tests/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,418 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.builder.cleanOutputFolder=clean
+org.eclipse.jdt.core.builder.duplicateResourceTask=warning
+org.eclipse.jdt.core.builder.invalidClasspath=abort
+org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
+org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=
+org.eclipse.jdt.core.circularClasspath=error
+org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
+org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
+org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error
+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.annotation.inheritNullAnnotations=disabled
+org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
+org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
+org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
+org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.6
+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.doc.comment.support=enabled
+org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
+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=enabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
+org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=disabled
+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.invalidJavadoc=warning
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=disabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=public
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
+org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=warning
+org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
+org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=public
+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=warning
+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.nonnullParameterAnnotationDropped=warning
+org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
+org.eclipse.jdt.core.compiler.problem.nullReference=warning
+org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
+org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
+org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
+org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
+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.syntacticNullAnalysisForFields=disabled
+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.unclosedCloseable=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=warning
+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.unusedTypeParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.source=1.6
+org.eclipse.jdt.core.compiler.taskCaseSensitive=enabled
+org.eclipse.jdt.core.compiler.taskPriorities=NORMAL,HIGH,HIGH,LOW,LOW,LOW,LOW,LOW,NORMAL
+org.eclipse.jdt.core.compiler.taskTags=TODO,FIXME,XXX,PERF,MEM,POLISH,@generated NOT,@ADDED,APITODO
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+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_binary_expression=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_method_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=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_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=false
+org.eclipse.jdt.core.formatter.comment.format_block_comments=true
+org.eclipse.jdt.core.formatter.comment.format_header=true
+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=do not 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=1
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=1
+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=do not 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_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_binary_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_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_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_unary_operator=do not 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_binary_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_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_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_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=false
+org.eclipse.jdt.core.formatter.join_wrapped_lines=false
+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=120
+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_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
+org.eclipse.jdt.core.incompatibleJDKLevel=ignore
+org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/tests/org.eclipse.emfforms.swt.control.multiattribute.tests/.settings/org.eclipse.jdt.launching.prefs b/tests/org.eclipse.emfforms.swt.control.multiattribute.tests/.settings/org.eclipse.jdt.launching.prefs
new file mode 100644
index 0000000..3bb2352
--- /dev/null
+++ b/tests/org.eclipse.emfforms.swt.control.multiattribute.tests/.settings/org.eclipse.jdt.launching.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.launching.PREF_STRICTLY_COMPATIBLE_JRE_NOT_AVAILABLE=ignore
diff --git a/tests/org.eclipse.emfforms.swt.control.multiattribute.tests/.settings/org.eclipse.jdt.ui.prefs b/tests/org.eclipse.emfforms.swt.control.multiattribute.tests/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 0000000..8bc4bb4
--- /dev/null
+++ b/tests/org.eclipse.emfforms.swt.control.multiattribute.tests/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,127 @@
+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_functional_interfaces=false
+cleanup.convert_to_enhanced_for_loop=false
+cleanup.correct_indentation=false
+cleanup.format_source_code=true
+cleanup.format_source_code_changes_only=false
+cleanup.insert_inferred_type_arguments=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=true
+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=true
+cleanup.remove_redundant_type_arguments=true
+cleanup.remove_trailing_whitespaces=true
+cleanup.remove_trailing_whitespaces_all=true
+cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_casts=false
+cleanup.remove_unnecessary_nls_tags=false
+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=true
+cleanup.remove_unused_private_types=true
+cleanup.sort_members=false
+cleanup.sort_members_all=false
+cleanup.use_anonymous_class_creation=false
+cleanup.use_blocks=true
+cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_lambda=true
+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.use_type_arguments=false
+cleanup_profile=_esmCleanUp
+cleanup_settings_version=2
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+formatter_profile=_esmFormatter
+formatter_settings_version=12
+org.eclipse.jdt.ui.exception.name=ex
+org.eclipse.jdt.ui.gettersetter.use.is=true
+org.eclipse.jdt.ui.javadoc=true
+org.eclipse.jdt.ui.keywordthis=false
+org.eclipse.jdt.ui.overrideannotation=true
+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 * Copyright (c) 2011-${year} EclipseSource Muenchen GmbH and others.\r\n * \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 * ${user} - initial API and implementation\r\n ******************************************************************************/</template><template autoinsert\="true" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * @author ${user}\r\n *\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment"/><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 * {@inheritDoc}\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">\t\t\t// TODO Auto-generated catch block\r\n\t\t\t// Do NOT catch all Exceptions ("catch (Exception e)")\r\n\t\t\t// Log AND handle Exceptions if possible \r\n            //\r\n            // You can just uncomment one of the lines below to log an exception\:\r\n\t\t\t// logException will show the logged excpetion to the user\r\n\t\t\t// ModelUtil.logException(${exception_var});\r\n\t\t\t// ModelUtil.logException("YOUR MESSAGE HERE", ${exception_var});\r\n\t\t\t// logWarning will only add the message to the error log\r\n\t\t\t// ModelUtil.logWarning("YOUR MESSAGE HERE", ${exception_var});\r\n\t\t\t// ModelUtil.logWarning("YOUR MESSAGE HERE");\r\n\t\t\t//\t\t\t\r\n\t\t\t// If handling is not possible declare and rethrow Exception</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_functional_interfaces=false
+sp_cleanup.convert_to_enhanced_for_loop=false
+sp_cleanup.correct_indentation=false
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.insert_inferred_type_arguments=false
+sp_cleanup.make_local_variable_final=true
+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=true
+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=true
+sp_cleanup.remove_redundant_type_arguments=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=false
+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=true
+sp_cleanup.remove_unused_private_types=true
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.use_anonymous_class_creation=false
+sp_cleanup.use_blocks=true
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_lambda=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
+sp_cleanup.use_type_arguments=false
diff --git a/tests/org.eclipse.emfforms.swt.control.multiattribute.tests/.settings/org.eclipse.ltk.core.refactoring.prefs b/tests/org.eclipse.emfforms.swt.control.multiattribute.tests/.settings/org.eclipse.ltk.core.refactoring.prefs
new file mode 100644
index 0000000..864e30f
--- /dev/null
+++ b/tests/org.eclipse.emfforms.swt.control.multiattribute.tests/.settings/org.eclipse.ltk.core.refactoring.prefs
@@ -0,0 +1,3 @@
+#Thu Feb 04 09:44:24 CET 2010
+eclipse.preferences.version=1
+org.eclipse.ltk.core.refactoring.enable.project.refactoring.history=false
diff --git a/tests/org.eclipse.emfforms.swt.control.multiattribute.tests/.settings/org.eclipse.pde.api.tools.prefs b/tests/org.eclipse.emfforms.swt.control.multiattribute.tests/.settings/org.eclipse.pde.api.tools.prefs
new file mode 100644
index 0000000..e4e3c00
--- /dev/null
+++ b/tests/org.eclipse.emfforms.swt.control.multiattribute.tests/.settings/org.eclipse.pde.api.tools.prefs
@@ -0,0 +1,97 @@
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_TYPE=Error
+API_USE_SCAN_FIELD_SEVERITY=Error
+API_USE_SCAN_METHOD_SEVERITY=Error
+API_USE_SCAN_TYPE_SEVERITY=Error
+CLASS_ELEMENT_TYPE_ADDED_METHOD=Error
+CLASS_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CLASS_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+CLASS_ELEMENT_TYPE_REMOVED_CONSTRUCTOR=Error
+CLASS_ELEMENT_TYPE_REMOVED_FIELD=Error
+CLASS_ELEMENT_TYPE_REMOVED_METHOD=Error
+CLASS_ELEMENT_TYPE_REMOVED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+ENUM_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ENUM_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ENUM_ELEMENT_TYPE_REMOVED_ENUM_CONSTANT=Error
+ENUM_ELEMENT_TYPE_REMOVED_FIELD=Error
+ENUM_ELEMENT_TYPE_REMOVED_METHOD=Error
+ENUM_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+FIELD_ELEMENT_TYPE_ADDED_VALUE=Error
+FIELD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+FIELD_ELEMENT_TYPE_CHANGED_FINAL_TO_NON_FINAL_STATIC_CONSTANT=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_TYPE=Error
+FIELD_ELEMENT_TYPE_CHANGED_VALUE=Error
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENT=Error
+FIELD_ELEMENT_TYPE_REMOVED_VALUE=Error
+ILLEGAL_EXTEND=Warning
+ILLEGAL_IMPLEMENT=Warning
+ILLEGAL_INSTANTIATE=Warning
+ILLEGAL_OVERRIDE=Warning
+ILLEGAL_REFERENCE=Warning
+INTERFACE_ELEMENT_TYPE_ADDED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_SUPER_INTERFACE_WITH_METHODS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+INVALID_JAVADOC_TAG=Warning
+INVALID_REFERENCE_IN_SYSTEM_LIBRARIES=Error
+LEAK_EXTEND=Warning
+LEAK_FIELD_DECL=Warning
+LEAK_IMPLEMENT=Warning
+LEAK_METHOD_PARAM=Warning
+LEAK_METHOD_RETURN_TYPE=Warning
+METHOD_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+METHOD_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+METHOD_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+MISSING_EE_DESCRIPTIONS=Error
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+UNUSED_PROBLEM_FILTERS=Ignore
+automatically_removed_unused_problem_filters=Disabled
+eclipse.preferences.version=1
+incompatible_api_component_version=Error
+incompatible_api_component_version_include_major_without_breaking_change=Disabled
+incompatible_api_component_version_include_minor_without_api_change=Disabled
+invalid_since_tag_version=Error
+malformed_since_tag=Error
+missing_since_tag=Error
+report_api_breakage_when_major_version_incremented=Disabled
+report_resolution_errors_api_component=Warning
diff --git a/tests/org.eclipse.emfforms.swt.control.multiattribute.tests/.settings/org.eclipse.pde.core.prefs b/tests/org.eclipse.emfforms.swt.control.multiattribute.tests/.settings/org.eclipse.pde.core.prefs
new file mode 100644
index 0000000..f29e940
--- /dev/null
+++ b/tests/org.eclipse.emfforms.swt.control.multiattribute.tests/.settings/org.eclipse.pde.core.prefs
@@ -0,0 +1,3 @@
+eclipse.preferences.version=1
+pluginProject.extensions=false
+resolve.requirebundle=false
diff --git a/tests/org.eclipse.emfforms.swt.control.multiattribute.tests/.settings/org.eclipse.pde.prefs b/tests/org.eclipse.emfforms.swt.control.multiattribute.tests/.settings/org.eclipse.pde.prefs
new file mode 100644
index 0000000..0bbee3c
--- /dev/null
+++ b/tests/org.eclipse.emfforms.swt.control.multiattribute.tests/.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=1
+compilers.p.missing-version-import-package=1
+compilers.p.missing-version-require-bundle=1
+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.emfforms.swt.control.multiattribute.tests/META-INF/MANIFEST.MF b/tests/org.eclipse.emfforms.swt.control.multiattribute.tests/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..a612d46
--- /dev/null
+++ b/tests/org.eclipse.emfforms.swt.control.multiattribute.tests/META-INF/MANIFEST.MF
@@ -0,0 +1,16 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Tests for EMFForms SWT Renderer for Multi EAttributes
+Bundle-SymbolicName: org.eclipse.emfforms.swt.control.multiattribute.tests
+Bundle-Version: 1.17.0.qualifier
+Bundle-Vendor: Eclipse Modeling Project
+Fragment-Host: org.eclipse.emfforms.swt.control.multiattribute;bundle-version="[1.16.0,2.0.0)"
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Export-Package: org.eclipse.emfforms.spi.view.control.multiattribute;version="1.17.0"
+Require-Bundle: org.junit;bundle-version="[4.0.0,5.0.0)",
+ org.eclipse.emf.ecp.test.common;bundle-version="[1.17.0,1.18.0]",
+ org.mockito.mockito-core-hamcrest-modified;bundle-version="[1.9.5,2.0.0)",
+ org.eclipse.emf.emfstore.examplemodel;bundle-version="[1.9.0,2.0.0)",
+ org.eclipse.emf.ecp.view.test.common.swt;bundle-version="[1.17.0,1.18.0]",
+ org.hamcrest.library;bundle-version="1.3.0"
+Automatic-Module-Name: org.eclipse.emfforms.swt.control.multiattribute.tests
diff --git a/tests/org.eclipse.emfforms.swt.control.multiattribute.tests/MultiAttributeSWTRenderer_ITest.launch b/tests/org.eclipse.emfforms.swt.control.multiattribute.tests/MultiAttributeSWTRenderer_ITest.launch
new file mode 100644
index 0000000..0741163
--- /dev/null
+++ b/tests/org.eclipse.emfforms.swt.control.multiattribute.tests/MultiAttributeSWTRenderer_ITest.launch
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.pde.ui.JunitLaunchConfig">
+<booleanAttribute key="append.args" value="true"/>
+<stringAttribute key="application" value="org.eclipse.pde.junit.runtime.coretestapplication"/>
+<booleanAttribute key="askclear" value="false"/>
+<booleanAttribute key="automaticAdd" value="false"/>
+<booleanAttribute key="automaticValidate" value="true"/>
+<stringAttribute key="bootstrap" value=""/>
+<stringAttribute key="checked" value="[NONE]"/>
+<booleanAttribute key="clearConfig" value="true"/>
+<booleanAttribute key="clearws" value="true"/>
+<booleanAttribute key="clearwslog" value="false"/>
+<stringAttribute key="configLocation" value="${workspace_loc}/.metadata/.plugins/org.eclipse.pde.core/pde-junit"/>
+<booleanAttribute key="default" value="false"/>
+<booleanAttribute key="includeOptional" value="false"/>
+<stringAttribute key="location" value="${workspace_loc}/../junit-workspace"/>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
+<listEntry value="/org.eclipse.emfforms.swt.control.multiattribute.tests/src/org/eclipse/emfforms/spi/view/control/multiattribute/MultiAttributeSWTRenderer_ITest.java"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
+<listEntry value="1"/>
+</listAttribute>
+<stringAttribute key="org.eclipse.jdt.junit.CONTAINER" value=""/>
+<booleanAttribute key="org.eclipse.jdt.junit.KEEPRUNNING_ATTR" value="false"/>
+<stringAttribute key="org.eclipse.jdt.junit.TESTNAME" value=""/>
+<stringAttribute key="org.eclipse.jdt.junit.TEST_KIND" value="org.eclipse.jdt.junit.loader.junit4"/>
+<stringAttribute key="org.eclipse.jdt.launching.JRE_CONTAINER" value="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.eclipse.emfforms.spi.view.control.multiattribute.MultiAttributeSWTRenderer_ITest"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-os ${target.os} -ws ${target.ws} -arch ${target.arch} -nl ${target.nl} -consoleLog"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.emfforms.swt.control.multiattribute.tests"/>
+<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.pde.ui.workbenchClasspathProvider"/>
+<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-ea"/>
+<stringAttribute key="pde.version" value="3.3"/>
+<stringAttribute key="product" value="org.eclipse.platform.ide"/>
+<booleanAttribute key="run_in_ui_thread" value="true"/>
+<stringAttribute key="selected_target_plugins" value="com.ibm.icu@default:default,javax.annotation@default:default,javax.inject@default:default,org.apache.batik.css*1.8.0.v20170214-1941@default:default,org.apache.batik.util*1.8.0.v20170214-1941@default:default,org.apache.commons.codec@default:default,org.apache.commons.jxpath@default:default,org.apache.commons.logging@default:default,org.apache.felix.scr@default:default,org.eclipse.ant.core@default:default,org.eclipse.compare.core@default:default,org.eclipse.core.commands@default:default,org.eclipse.core.contenttype@default:default,org.eclipse.core.databinding*1.6.100.v20170515-1119@default:default,org.eclipse.core.databinding.observable*1.6.100.v20170515-1119@default:default,org.eclipse.core.databinding.property*1.6.100.v20170515-1119@default:default,org.eclipse.core.expressions@default:default,org.eclipse.core.filesystem.linux.x86_64@default:false,org.eclipse.core.filesystem@default:default,org.eclipse.core.jobs@default:default,org.eclipse.core.resources@default:default,org.eclipse.core.runtime@default:true,org.eclipse.core.variables@default:default,org.eclipse.e4.core.commands@default:default,org.eclipse.e4.core.contexts@default:default,org.eclipse.e4.core.di.annotations@default:default,org.eclipse.e4.core.di.extensions.supplier@default:default,org.eclipse.e4.core.di.extensions@default:default,org.eclipse.e4.core.di@default:default,org.eclipse.e4.core.services@default:default,org.eclipse.e4.emf.xpath@default:default,org.eclipse.e4.ui.bindings@default:default,org.eclipse.e4.ui.css.core@default:default,org.eclipse.e4.ui.css.swt.theme@default:default,org.eclipse.e4.ui.css.swt@default:default,org.eclipse.e4.ui.di@default:default,org.eclipse.e4.ui.model.workbench@default:default,org.eclipse.e4.ui.services@default:default,org.eclipse.e4.ui.swt.gtk@default:false,org.eclipse.e4.ui.widgets@default:default,org.eclipse.e4.ui.workbench.addons.swt@default:default,org.eclipse.e4.ui.workbench.renderers.swt@default:default,org.eclipse.e4.ui.workbench.swt@default:default,org.eclipse.e4.ui.workbench3@default:default,org.eclipse.e4.ui.workbench@default:default,org.eclipse.emf.common.ui@default:default,org.eclipse.emf.common@default:default,org.eclipse.emf.databinding.edit@default:default,org.eclipse.emf.databinding@default:default,org.eclipse.emf.ecore.change@default:default,org.eclipse.emf.ecore.xmi@default:default,org.eclipse.emf.ecore@default:default,org.eclipse.emf.edit.ui@default:default,org.eclipse.emf.edit@default:default,org.eclipse.emf.emfstore.client@default:default,org.eclipse.emf.emfstore.common.model@default:default,org.eclipse.emf.emfstore.common@default:default,org.eclipse.emf.emfstore.examplemodel.edit@default:default,org.eclipse.emf.emfstore.examplemodel@default:default,org.eclipse.emf.emfstore.migration@default:default,org.eclipse.emf.emfstore.server.model@default:default,org.eclipse.emf.emfstore.server@default:default,org.eclipse.equinox.app@default:default,org.eclipse.equinox.common@2:true,org.eclipse.equinox.ds@1:true,org.eclipse.equinox.preferences@default:default,org.eclipse.equinox.region@default:false,org.eclipse.equinox.registry@default:default,org.eclipse.equinox.transforms.hook@default:false,org.eclipse.equinox.weaving.hook@default:false,org.eclipse.help@default:default,org.eclipse.jface.databinding@default:default,org.eclipse.jface@default:default,org.eclipse.net4j.util@default:default,org.eclipse.osgi.compatibility.state@default:false,org.eclipse.osgi.services@default:default,org.eclipse.osgi.util@default:default,org.eclipse.osgi@-1:true,org.eclipse.swt.gtk.linux.x86_64@default:false,org.eclipse.swt@default:default,org.eclipse.team.core@default:default,org.eclipse.ui.forms@default:default,org.eclipse.ui.trace@default:default,org.eclipse.ui.views@default:default,org.eclipse.ui.workbench@default:default,org.eclipse.ui@default:default,org.hamcrest.core@default:default,org.hamcrest.library@default:default,org.junit@default:default,org.mockito.mockito-core-hamcrest-modified@default:default,org.objenesis@default:default,org.w3c.css.sac@default:default"/>
+<stringAttribute key="selected_workspace_plugins" value="org.eclipse.emf.ecp.common.ui@default:default,org.eclipse.emf.ecp.common@default:default,org.eclipse.emf.ecp.core@default:default,org.eclipse.emf.ecp.edit.swt@default:default,org.eclipse.emf.ecp.edit@default:default,org.eclipse.emf.ecp.editor.e3@default:default,org.eclipse.emf.ecp.emfstore.core@default:default,org.eclipse.emf.ecp.explorereditorbridge@default:default,org.eclipse.emf.ecp.test.common@default:default,org.eclipse.emf.ecp.ui.view.swt@default:default,org.eclipse.emf.ecp.ui.view.test@default:default,org.eclipse.emf.ecp.ui.view@default:default,org.eclipse.emf.ecp.ui@default:default,org.eclipse.emf.ecp.view.categorization.model@default:default,org.eclipse.emf.ecp.view.context@default:default,org.eclipse.emf.ecp.view.core.swt@default:default,org.eclipse.emf.ecp.view.group.model@default:default,org.eclipse.emf.ecp.view.group.ui.swt@default:default,org.eclipse.emf.ecp.view.horizontal.model@default:default,org.eclipse.emf.ecp.view.horizontal.ui.swt@default:default,org.eclipse.emf.ecp.view.indexdmr.model@default:default,org.eclipse.emf.ecp.view.label.model@default:default,org.eclipse.emf.ecp.view.mappingdmr.model@default:default,org.eclipse.emf.ecp.view.migrator@default:default,org.eclipse.emf.ecp.view.model.common@default:default,org.eclipse.emf.ecp.view.model.provider.generator@default:default,org.eclipse.emf.ecp.view.model.provider.xmi@default:default,org.eclipse.emf.ecp.view.model@default:default,org.eclipse.emf.ecp.view.rule.model@default:default,org.eclipse.emf.ecp.view.swt.layout@default:default,org.eclipse.emf.ecp.view.table.model@default:default,org.eclipse.emf.ecp.view.table.ui.swt@default:default,org.eclipse.emf.ecp.view.table.validation@default:default,org.eclipse.emf.ecp.view.template.model@default:default,org.eclipse.emf.ecp.view.template.service@default:default,org.eclipse.emf.ecp.view.test.common.swt@default:default,org.eclipse.emf.ecp.view.test.common@default:default,org.eclipse.emf.ecp.view.treemasterdetail.model@default:default,org.eclipse.emf.ecp.view.util.swt@default:default,org.eclipse.emf.ecp.view.validation@default:default,org.eclipse.emf.ecp.view.vertical.model@default:default,org.eclipse.emf.ecp.view.vertical.ui.swt@default:default,org.eclipse.emfforms.common.prevalidation@default:default,org.eclipse.emfforms.common.validation@default:default,org.eclipse.emfforms.common@default:default,org.eclipse.emfforms.core.bazaar@default:default,org.eclipse.emfforms.core.services.databinding.featurepath@default:default,org.eclipse.emfforms.core.services.databinding.index@default:default,org.eclipse.emfforms.core.services.databinding.mapping@default:default,org.eclipse.emfforms.core.services.domainexpander.default@default:default,org.eclipse.emfforms.core.services.domainexpander.index@default:default,org.eclipse.emfforms.core.services.domainexpander.mapping@default:default,org.eclipse.emfforms.core.services.domainexpander.table@default:default,org.eclipse.emfforms.core.services.editsupport@default:default,org.eclipse.emfforms.core.services.emf@default:default,org.eclipse.emfforms.core.services.emfspecificservice@default:default,org.eclipse.emfforms.core.services.legacy@default:default,org.eclipse.emfforms.core.services.locale.default@default:default,org.eclipse.emfforms.core.services.mappingprovider.default@default:default,org.eclipse.emfforms.core.services.mappingprovider.table@default:default,org.eclipse.emfforms.core.services.structuralchange.default@default:default,org.eclipse.emfforms.core.services.structuralchange.index@default:default,org.eclipse.emfforms.core.services.structuralchange.mapping@default:default,org.eclipse.emfforms.core.services.structuralchange.table@default:default,org.eclipse.emfforms.core.services.structuralchange@default:default,org.eclipse.emfforms.core.services@default:default,org.eclipse.emfforms.localization@default:default,org.eclipse.emfforms.swt.control.multiattribute.tests@default:false,org.eclipse.emfforms.swt.control.multiattribute@default:default,org.eclipse.emfforms.swt.core.di.extension@default:default,org.eclipse.emfforms.swt.core.di@default:default,org.eclipse.emfforms.swt.core.plugin@default:default,org.eclipse.emfforms.swt.core@default:default,org.eclipse.emfforms.swt.table@default:default,org.eclipse.emfforms.swt.treemasterdetail@default:default,org.eclipse.emfforms.view.model.localization@default:default"/>
+<booleanAttribute key="show_selected_only" value="false"/>
+<booleanAttribute key="tracing" value="false"/>
+<booleanAttribute key="useCustomFeatures" value="false"/>
+<booleanAttribute key="useDefaultConfig" value="true"/>
+<booleanAttribute key="useDefaultConfigArea" value="false"/>
+<booleanAttribute key="useProduct" value="false"/>
+</launchConfiguration>
diff --git a/tests/org.eclipse.emfforms.swt.control.multiattribute.tests/build.properties b/tests/org.eclipse.emfforms.swt.control.multiattribute.tests/build.properties
new file mode 100644
index 0000000..34d2e4d
--- /dev/null
+++ b/tests/org.eclipse.emfforms.swt.control.multiattribute.tests/build.properties
@@ -0,0 +1,4 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+               .
diff --git a/tests/org.eclipse.emfforms.swt.control.multiattribute.tests/pom.xml b/tests/org.eclipse.emfforms.swt.control.multiattribute.tests/pom.xml
new file mode 100644
index 0000000..84996f7
--- /dev/null
+++ b/tests/org.eclipse.emfforms.swt.control.multiattribute.tests/pom.xml
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
+	xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+	<modelVersion>4.0.0</modelVersion>
+	<parent>
+		<groupId>org.eclipse.emf.ecp</groupId>
+		<artifactId>ecp-tests-parent</artifactId>
+		<version>1.17.0-SNAPSHOT</version>
+		<relativePath>../../releng/org.eclipse.emf.ecp.releng.tests/</relativePath>
+	</parent>
+	<groupId>org.eclipse.emf.ecp</groupId>
+	<artifactId>org.eclipse.emfforms.swt.control.multiattribute.tests</artifactId>
+	<version>1.17.0-SNAPSHOT</version>
+	<packaging>eclipse-test-plugin</packaging>
+	
+	<build>
+		<sourceDirectory>src</sourceDirectory>
+		<plugins>
+			<plugin>
+				<groupId>org.eclipse.tycho</groupId>
+				<artifactId>tycho-surefire-plugin</artifactId>
+				<version>${tycho-version}</version>
+				<configuration>
+		          	<useUIHarness>true</useUIHarness>
+		          	<useUIThread>true</useUIThread>
+				</configuration>
+			</plugin>
+			<plugin>
+				<groupId>org.eclipse.tycho</groupId>
+				<artifactId>target-platform-configuration</artifactId>
+				<configuration>
+					<dependency-resolution>
+						<extraRequirements>
+							<requirement>
+								<type>eclipse-feature</type>
+								<id>org.eclipse.emf.ecp.target.feature</id>
+								<versionRange>0.0.0</versionRange>
+							</requirement>
+							<requirement>
+								<type>eclipse-feature</type>
+								<id>org.eclipse.emf.ecp.emfforms.runtime.feature</id>
+								<versionRange>0.0.0</versionRange>
+							</requirement>
+							<requirement>
+								<type>p2-installable-unit</type>
+								<id>org.eclipse.equinox.ds</id>
+								<versionRange>0.0.0</versionRange>
+							</requirement>
+						</extraRequirements>
+					</dependency-resolution>
+				</configuration>
+			</plugin>
+		</plugins>
+	</build>
+
+</project>
diff --git a/tests/org.eclipse.emfforms.swt.control.multiattribute.tests/src/org/eclipse/emfforms/spi/view/control/multiattribute/MultiAttributeSWTRenderer_ITest.java b/tests/org.eclipse.emfforms.swt.control.multiattribute.tests/src/org/eclipse/emfforms/spi/view/control/multiattribute/MultiAttributeSWTRenderer_ITest.java
new file mode 100644
index 0000000..82e7615
--- /dev/null
+++ b/tests/org.eclipse.emfforms.swt.control.multiattribute.tests/src/org/eclipse/emfforms/spi/view/control/multiattribute/MultiAttributeSWTRenderer_ITest.java
@@ -0,0 +1,428 @@
+/*******************************************************************************
+ * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH 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:
+ * Johannes Faltermeier - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.emfforms.spi.view.control.multiattribute;
+
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.equalTo;
+import static org.hamcrest.Matchers.notNullValue;
+import static org.hamcrest.Matchers.nullValue;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+import java.io.Serializable;
+import java.util.HashSet;
+import java.util.Set;
+
+import org.eclipse.core.databinding.observable.Observables;
+import org.eclipse.core.databinding.observable.list.IObservableList;
+import org.eclipse.core.databinding.observable.value.IObservableValue;
+import org.eclipse.emf.common.command.BasicCommandStack;
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.databinding.EMFObservables;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.emf.ecp.test.common.DefaultRealm;
+import org.eclipse.emf.ecp.view.model.common.AbstractGridCell.Alignment;
+import org.eclipse.emf.ecp.view.spi.context.ViewModelContext;
+import org.eclipse.emf.ecp.view.spi.model.VControl;
+import org.eclipse.emf.ecp.view.spi.model.VDomainModelReference;
+import org.eclipse.emf.ecp.view.spi.model.VElement;
+import org.eclipse.emf.ecp.view.spi.renderer.NoPropertyDescriptorFoundExeption;
+import org.eclipse.emf.ecp.view.spi.renderer.NoRendererFoundException;
+import org.eclipse.emf.ecp.view.spi.util.swt.ImageRegistryService;
+import org.eclipse.emf.ecp.view.template.model.VTStyleProperty;
+import org.eclipse.emf.ecp.view.template.model.VTViewTemplateProvider;
+import org.eclipse.emf.ecp.view.template.style.tableStyleProperty.model.RenderMode;
+import org.eclipse.emf.ecp.view.template.style.tableStyleProperty.model.VTTableStyleProperty;
+import org.eclipse.emf.ecp.view.template.style.tableStyleProperty.model.VTTableStylePropertyFactory;
+import org.eclipse.emf.ecp.view.test.common.swt.spi.SWTTestUtil;
+import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain;
+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
+import org.eclipse.emf.edit.provider.ReflectiveItemProviderAdapterFactory;
+import org.eclipse.emf.emfstore.bowling.BowlingFactory;
+import org.eclipse.emf.emfstore.bowling.BowlingPackage;
+import org.eclipse.emf.emfstore.bowling.Game;
+import org.eclipse.emfforms.spi.common.report.ReportService;
+import org.eclipse.emfforms.spi.core.services.databinding.DatabindingFailedException;
+import org.eclipse.emfforms.spi.core.services.databinding.EMFFormsDatabinding;
+import org.eclipse.emfforms.spi.core.services.label.EMFFormsLabelProvider;
+import org.eclipse.emfforms.spi.core.services.label.NoLabelFoundException;
+import org.eclipse.emfforms.spi.swt.core.layout.SWTGridCell;
+import org.eclipse.emfforms.spi.swt.core.layout.SWTGridDescription;
+import org.eclipse.jface.layout.GridDataFactory;
+import org.eclipse.jface.layout.GridLayoutFactory;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.swt.graphics.Rectangle;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.Table;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.Matchers;
+import org.mockito.Mockito;
+
+public class MultiAttributeSWTRenderer_ITest {
+
+	private DefaultRealm realm;
+	private Shell shell;
+
+	private VControl vElement;
+	private ViewModelContext viewContext;
+	private ReportService reportService;
+	private EMFFormsDatabinding emfFormsDatabinding;
+	private EMFFormsLabelProvider emfFormsLabelProvider;
+	private VTViewTemplateProvider vtViewTemplateProvider;
+	private ImageRegistryService imageRegistryService;
+
+	@Before
+	public void before() throws NoLabelFoundException {
+		realm = new DefaultRealm();
+		shell = new Shell();
+		GridLayoutFactory.fillDefaults().applyTo(shell);
+
+		vElement = Mockito.mock(VControl.class);
+		viewContext = Mockito.mock(ViewModelContext.class);
+		reportService = Mockito.mock(ReportService.class);
+		emfFormsDatabinding = Mockito.mock(EMFFormsDatabinding.class);
+		emfFormsLabelProvider = Mockito.mock(EMFFormsLabelProvider.class);
+		vtViewTemplateProvider = Mockito.mock(VTViewTemplateProvider.class);
+
+		imageRegistryService = Mockito.mock(ImageRegistryService.class);
+
+		final IObservableValue<Serializable> displayName = Observables.constantObservableValue(
+			"Display Name", //$NON-NLS-1$
+			String.class);
+		Mockito.doReturn(displayName).when(emfFormsLabelProvider)
+			.getDisplayName(Matchers.any(VDomainModelReference.class), Matchers.any(EObject.class));
+
+		final IObservableValue<Serializable> description = Observables.constantObservableValue(
+			"Description", //$NON-NLS-1$
+			String.class);
+		Mockito.doReturn(description).when(emfFormsLabelProvider)
+			.getDescription(Matchers.any(VDomainModelReference.class), Matchers.any(EObject.class));
+	}
+
+	public void setupCompact() {
+		final Set<VTStyleProperty> properties = new HashSet<VTStyleProperty>();
+		final VTTableStyleProperty tableStyleProperty = VTTableStylePropertyFactory.eINSTANCE
+			.createTableStyleProperty();
+		tableStyleProperty.setRenderMode(RenderMode.COMPACT_VERTICALLY);
+		properties.add(tableStyleProperty);
+		Mockito.when(vtViewTemplateProvider.getStyleProperties(Matchers.any(VElement.class),
+			Matchers.any(ViewModelContext.class))).thenReturn(properties);
+	}
+
+	@After
+	public void after() {
+		shell.dispose();
+		realm.dispose();
+	}
+
+	private MultiAttributeSWTRenderer createRenderer() {
+		final MultiAttributeSWTRenderer renderer = new MultiAttributeSWTRenderer(
+			vElement,
+			viewContext,
+			reportService,
+			emfFormsDatabinding,
+			emfFormsLabelProvider,
+			vtViewTemplateProvider,
+			imageRegistryService);
+		renderer.init();
+		return renderer;
+	}
+
+	private void createEditingDomain(final Game game) {
+		final EObject rootObject = EcoreUtil.getRootContainer(game);
+		final ResourceSet rs = new ResourceSetImpl();
+		final ComposedAdapterFactory adapterFactory = new ComposedAdapterFactory(new AdapterFactory[] {
+			new ReflectiveItemProviderAdapterFactory(),
+			new ComposedAdapterFactory(ComposedAdapterFactory.Descriptor.Registry.INSTANCE) });
+		final AdapterFactoryEditingDomain domain = new AdapterFactoryEditingDomain(
+			adapterFactory,
+			new BasicCommandStack(), rs);
+		rs.eAdapters().add(new AdapterFactoryEditingDomain.EditingDomainProvider(domain));
+		final Resource resource = rs.createResource(URI.createURI("VIRTAUAL_URI")); //$NON-NLS-1$
+		if (resource != null) {
+			resource.getContents().add(rootObject);
+		}
+	}
+
+	private static int getVisibleRows(Table table) {
+		final Rectangle clientArea = table.getClientArea();
+		final int itemHeight = table.getItemHeight();
+		final int headerHeight = table.getHeaderHeight();
+		return (clientArea.height - headerHeight + itemHeight - 1) / itemHeight;
+	}
+
+	@Test
+	public void selectionAfterMove_Up()
+		throws DatabindingFailedException, NoRendererFoundException, NoPropertyDescriptorFoundExeption {
+		/* setup domain */
+		final Game game = BowlingFactory.eINSTANCE.createGame();
+		game.getFrames().add(1);
+		game.getFrames().add(1);
+		game.getFrames().add(1);
+		game.getFrames().add(2);
+		game.getFrames().add(2);
+
+		createEditingDomain(game);
+
+		/* setup classes */
+		@SuppressWarnings("rawtypes")
+		final IObservableList observeList = EMFObservables.observeList(
+			realm,
+			game,
+			BowlingPackage.eINSTANCE.getGame_Frames());
+		Mockito.doReturn(observeList).when(emfFormsDatabinding)
+			.getObservableList(Matchers.any(VDomainModelReference.class), Matchers.any(EObject.class));
+
+		final MultiAttributeSWTRenderer renderer = createRenderer();
+
+		/* setup rendering */
+		final SWTGridDescription gridDescription = renderer.getGridDescription(null);
+		final SWTGridCell lastGridCell = gridDescription.getGrid().get(gridDescription.getGrid().size() - 1);
+
+		/* render */
+		final Control control = renderer.render(lastGridCell, shell);
+		final Table table = SWTTestUtil.findControl(control, 0, Table.class);
+		final Button upButton = SWTTestUtil.findControl(control, 0, Button.class);
+
+		/* act */
+		table.setSelection(2);
+		SWTTestUtil.waitForUIThread();
+
+		SWTTestUtil.clickButton(upButton);
+		SWTTestUtil.waitForUIThread();
+
+		/* assert */
+		assertEquals(1, table.getSelectionIndex());
+	}
+
+	@Test
+	public void selectionAfterMove_Down()
+		throws DatabindingFailedException, NoRendererFoundException, NoPropertyDescriptorFoundExeption {
+		/* setup domain */
+		final Game game = BowlingFactory.eINSTANCE.createGame();
+		game.getFrames().add(1);
+		game.getFrames().add(1);
+		game.getFrames().add(1);
+		game.getFrames().add(2);
+		game.getFrames().add(2);
+
+		createEditingDomain(game);
+
+		/* setup classes */
+		@SuppressWarnings("rawtypes")
+		final IObservableList observeList = EMFObservables.observeList(
+			realm,
+			game,
+			BowlingPackage.eINSTANCE.getGame_Frames());
+		Mockito.doReturn(observeList).when(emfFormsDatabinding)
+			.getObservableList(Matchers.any(VDomainModelReference.class), Matchers.any(EObject.class));
+
+		final MultiAttributeSWTRenderer renderer = createRenderer();
+
+		/* setup rendering */
+		final SWTGridDescription gridDescription = renderer.getGridDescription(null);
+		final SWTGridCell lastGridCell = gridDescription.getGrid().get(gridDescription.getGrid().size() - 1);
+
+		/* render */
+		final Control control = renderer.render(lastGridCell, shell);
+		final Table table = SWTTestUtil.findControl(control, 0, Table.class);
+		final Button downButton = SWTTestUtil.findControl(control, 1, Button.class);
+
+		/* act */
+		table.setSelection(1);
+		SWTTestUtil.waitForUIThread();
+
+		SWTTestUtil.clickButton(downButton);
+		SWTTestUtil.waitForUIThread();
+
+		/* assert */
+		assertEquals(2, table.getSelectionIndex());
+	}
+
+	@Test
+	public void elementVisibleAfterMove()
+		throws DatabindingFailedException, NoRendererFoundException, NoPropertyDescriptorFoundExeption {
+		/* setup domain */
+		final Game game = BowlingFactory.eINSTANCE.createGame();
+		for (int i = 0; i < 100; i++) {
+			game.getFrames().add(i);
+		}
+		createEditingDomain(game);
+
+		/* setup classes */
+		@SuppressWarnings("rawtypes")
+		final IObservableList observeList = EMFObservables.observeList(
+			realm,
+			game,
+			BowlingPackage.eINSTANCE.getGame_Frames());
+		Mockito.doReturn(observeList).when(emfFormsDatabinding)
+			.getObservableList(Matchers.any(VDomainModelReference.class), Matchers.any(EObject.class));
+
+		final MultiAttributeSWTRenderer renderer = createRenderer();
+
+		/* setup rendering */
+		final SWTGridDescription gridDescription = renderer.getGridDescription(null);
+		final SWTGridCell lastGridCell = gridDescription.getGrid().get(gridDescription.getGrid().size() - 1);
+
+		/* render */
+		final Control control = renderer.render(lastGridCell, shell);
+		GridDataFactory.fillDefaults().grab(true, false).applyTo(control);
+
+		shell.layout(true, true);
+		SWTTestUtil.waitForUIThread();
+
+		final Table table = SWTTestUtil.findControl(control, 0, Table.class);
+		final Button downButton = SWTTestUtil.findControl(control, 1, Button.class);
+
+		/* act */
+		table.setSelection(0);
+		SWTTestUtil.waitForUIThread();
+
+		for (int i = 0; i < 25; i++) {
+			SWTTestUtil.clickButton(downButton);
+			SWTTestUtil.waitForUIThread();
+		}
+
+		/* assert */
+		assertEquals(25, table.getSelectionIndex());
+		final int visibleRows = getVisibleRows(table);
+		final int topRowIndex = table.getTopIndex();
+
+		/* selection index should be between top element index and top element index plus visible item count */
+		assertTrue(topRowIndex <= table.getSelectionIndex());
+		assertTrue(topRowIndex + visibleRows >= table.getSelectionIndex());
+	}
+
+	@Test
+	public void labelsAreDisplayedForInput()
+		throws DatabindingFailedException, NoRendererFoundException, NoPropertyDescriptorFoundExeption {
+		/* setup domain */
+		final Game game = BowlingFactory.eINSTANCE.createGame();
+		for (int i = 0; i < 100; i++) {
+			game.getFrames().add(i);
+		}
+		createEditingDomain(game);
+
+		/* setup classes */
+		@SuppressWarnings("rawtypes")
+		final IObservableList observeList = EMFObservables.observeList(
+			realm,
+			game,
+			BowlingPackage.eINSTANCE.getGame_Frames());
+		Mockito.doReturn(observeList).when(emfFormsDatabinding)
+			.getObservableList(Matchers.any(VDomainModelReference.class), Matchers.any(EObject.class));
+
+		final MultiAttributeSWTRenderer renderer = createRenderer();
+
+		/* setup rendering */
+		final SWTGridDescription gridDescription = renderer.getGridDescription(null);
+		final SWTGridCell lastGridCell = gridDescription.getGrid().get(gridDescription.getGrid().size() - 1);
+
+		/* render/act */
+		final Control control = renderer.render(lastGridCell, shell);
+		GridDataFactory.fillDefaults().grab(true, false).applyTo(control);
+
+		shell.layout(true, true);
+		SWTTestUtil.waitForUIThread();
+
+		final Table table = SWTTestUtil.findControl(control, 0, Table.class);
+
+		/* assert */
+		assertEquals(100, table.getItems().length);
+		for (int i = 0; i < 100; i++) {
+			final String text = table.getItems()[i].getText();
+			assertEquals(String.valueOf(i), text);
+		}
+
+	}
+
+	@Test
+	public void buttonsUpDown_enableOnSelection()
+		throws DatabindingFailedException, NoRendererFoundException, NoPropertyDescriptorFoundExeption {
+		/* setup domain */
+		final Game game = BowlingFactory.eINSTANCE.createGame();
+		game.getFrames().add(1);
+		game.getFrames().add(1);
+		game.getFrames().add(1);
+		game.getFrames().add(2);
+		game.getFrames().add(2);
+
+		createEditingDomain(game);
+
+		/* setup classes */
+		@SuppressWarnings("rawtypes")
+		final IObservableList observeList = EMFObservables.observeList(
+			realm,
+			game,
+			BowlingPackage.eINSTANCE.getGame_Frames());
+		Mockito.doReturn(observeList).when(emfFormsDatabinding)
+			.getObservableList(Matchers.any(VDomainModelReference.class), Matchers.any(EObject.class));
+
+		final MultiAttributeSWTRenderer renderer = createRenderer();
+
+		/* setup rendering */
+		final SWTGridDescription gridDescription = renderer.getGridDescription(null);
+		final SWTGridCell lastGridCell = gridDescription.getGrid().get(gridDescription.getGrid().size() - 1);
+
+		/* render */
+		final Control control = renderer.render(lastGridCell, shell);
+		final Button upButton = SWTTestUtil.findControl(control, 0, Button.class);
+
+		/* by default, up is disabled (no selection) */
+		assertFalse(upButton.getEnabled());
+
+		/* select an element in list */
+		renderer.getTableViewer().setSelection(new StructuredSelection(observeList.get(0)), true);
+		SWTTestUtil.waitForUIThread();
+
+		/* assert */
+		assertTrue(upButton.getEnabled());
+
+		/* act */
+		renderer.getTableViewer().setSelection(StructuredSelection.EMPTY);
+		SWTTestUtil.waitForUIThread();
+
+		/* assert */
+		assertFalse(upButton.getEnabled());
+	}
+
+	@Test
+	public void compactRendererDescription() {
+		setupCompact();
+		final MultiAttributeSWTRenderer renderer = createRenderer();
+		final SWTGridDescription gridDescription = renderer.getGridDescription(null);
+
+		assertThat(gridDescription.getColumns(), is(equalTo(2)));
+
+		final SWTGridCell validationCell = gridDescription.getGrid().get(0);
+		assertThat(validationCell.getPreferredSize(), notNullValue());
+		assertThat(validationCell.isHorizontalGrab(), is(false));
+		assertThat(validationCell.getVerticalAlignment(), is(Alignment.BEGINNING));
+
+		final SWTGridCell mainCell = gridDescription.getGrid().get(1);
+		assertThat(mainCell.getPreferredSize(), nullValue());
+		assertThat(mainCell.isHorizontalGrab(), is(true));
+		assertThat(mainCell.isVerticalGrab(), is(true));
+	}
+
+}
diff --git a/tests/org.eclipse.emfforms.swt.control.text.autocomplete.tests/META-INF/MANIFEST.MF b/tests/org.eclipse.emfforms.swt.control.text.autocomplete.tests/META-INF/MANIFEST.MF
index c8ab8d0..eaf67b5 100644
--- a/tests/org.eclipse.emfforms.swt.control.text.autocomplete.tests/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.emfforms.swt.control.text.autocomplete.tests/META-INF/MANIFEST.MF
@@ -2,13 +2,14 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: EMFForms SWT Text Control with Autocomplete Tests
 Bundle-SymbolicName: org.eclipse.emfforms.swt.control.text.autocomplete.tests
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Fragment-Host: org.eclipse.emfforms.swt.control.text.autocomplete;bundle-version="[1.16.0,1.17.0)"
-Export-Package: org.eclipse.emfforms.internal.swt.control.text.autocomplete.renderer;version="1.16.0";x-internal:=true,
-  org.eclipse.emfforms.swt.control.text.autocomplete.tests;version="1.16.0";x-internal:=true
+Fragment-Host: org.eclipse.emfforms.swt.control.text.autocomplete;bundle-version="[1.17.0,1.18.0]"
+Export-Package: org.eclipse.emfforms.internal.swt.control.text.autocomplete.renderer;version="1.17.0";x-internal:=true,
+ org.eclipse.emfforms.swt.control.text.autocomplete.tests;version="1.17.0";x-internal:=true
 Require-Bundle: org.junit;bundle-version="[4.0.0,5.0.0)",
-  org.eclipse.emfforms.core.services.databinding.testmodel;bundle-version="[1.16.0,1.17.0)",
-  org.mockito.mockito-core-hamcrest-modified;bundle-version="[1.9.5,2.0.0)",
-  org.eclipse.emf.ecp.test.common;bundle-version="[1.16.0,1.17.0)"
+ org.eclipse.emfforms.core.services.databinding.testmodel;bundle-version="[1.17.0,1.18.0]",
+ org.mockito.mockito-core-hamcrest-modified;bundle-version="[1.9.5,2.0.0)",
+ org.eclipse.emf.ecp.test.common;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Automatic-Module-Name: org.eclipse.emfforms.swt.control.text.autocomplete.tests
diff --git a/tests/org.eclipse.emfforms.swt.control.text.autocomplete.tests/pom.xml b/tests/org.eclipse.emfforms.swt.control.text.autocomplete.tests/pom.xml
index ff3911c..4923e28 100644
--- a/tests/org.eclipse.emfforms.swt.control.text.autocomplete.tests/pom.xml
+++ b/tests/org.eclipse.emfforms.swt.control.text.autocomplete.tests/pom.xml
@@ -6,12 +6,12 @@
 	<parent>
 		<groupId>org.eclipse.emf.ecp</groupId>
 		<artifactId>ecp-tests-parent</artifactId>
-		<version>1.16.0-SNAPSHOT</version>
+		<version>1.17.0-SNAPSHOT</version>
 		<relativePath>../../releng/org.eclipse.emf.ecp.releng.tests/</relativePath>
 	</parent>
 	<groupId>org.eclipse.emf.ecp</groupId>
 	<artifactId>org.eclipse.emfforms.swt.control.text.autocomplete.tests</artifactId>
-	<version>1.16.0-SNAPSHOT</version>
+	<version>1.17.0-SNAPSHOT</version>
 	<packaging>eclipse-test-plugin</packaging>
 	
 	<build>
@@ -27,7 +27,7 @@
 						<include>**/*_ITest.java</include>
 						<!-- Execute SWT-Related tests with tycho surefire -->
 						<include>**/AutocompleteTextControlSWTRenderer_Test.java</include>
-						<include>**/AutocompleteTextControlSWTRendererService_Test</include>
+						<include>**/AutocompleteTextControlSWTRendererService_Test.java</include>
 					</includes>
 					<testFailureIgnore>true</testFailureIgnore>
 					<useUIHarness>false</useUIHarness>
diff --git a/tests/org.eclipse.emfforms.swt.controlgrid.test/META-INF/MANIFEST.MF b/tests/org.eclipse.emfforms.swt.controlgrid.test/META-INF/MANIFEST.MF
index a5c5034..1707994 100644
--- a/tests/org.eclipse.emfforms.swt.controlgrid.test/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.emfforms.swt.controlgrid.test/META-INF/MANIFEST.MF
@@ -2,11 +2,12 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Control Grid SWT Renderer Tests
 Bundle-SymbolicName: org.eclipse.emfforms.swt.controlgrid.test
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Fragment-Host: org.eclipse.emfforms.swt.controlgrid;bundle-version="[1.16.0,1.17.0)"
-Export-Package: org.eclipse.emfforms.spi.swt.controlgrid.renderer;version="1.16.0"
+Fragment-Host: org.eclipse.emfforms.swt.controlgrid;bundle-version="[1.17.0,1.18.0]"
+Export-Package: org.eclipse.emfforms.spi.swt.controlgrid.renderer;version="1.17.0"
 Require-Bundle: org.junit;bundle-version="[4.0.0,5.0.0)",
-  org.mockito.mockito-core-hamcrest-modified;bundle-version="[1.9.5,2.0.0)",
-  org.eclipse.emf.ecp.test.common;bundle-version="[1.16.0,1.17.0)"
+ org.mockito.mockito-core-hamcrest-modified;bundle-version="[1.9.5,2.0.0)",
+ org.eclipse.emf.ecp.test.common;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Automatic-Module-Name: org.eclipse.emfforms.swt.controlgrid.test
diff --git a/tests/org.eclipse.emfforms.swt.controlgrid.test/pom.xml b/tests/org.eclipse.emfforms.swt.controlgrid.test/pom.xml
index 12a8de4..05b0c32 100644
--- a/tests/org.eclipse.emfforms.swt.controlgrid.test/pom.xml
+++ b/tests/org.eclipse.emfforms.swt.controlgrid.test/pom.xml
@@ -6,12 +6,12 @@
 	<parent>
 		<groupId>org.eclipse.emf.ecp</groupId>
 		<artifactId>ecp-tests-parent</artifactId>
-		<version>1.16.0-SNAPSHOT</version>
+		<version>1.17.0-SNAPSHOT</version>
 		<relativePath>../../releng/org.eclipse.emf.ecp.releng.tests/</relativePath>
 	</parent>
 	<groupId>org.eclipse.emf.ecp</groupId>
 	<artifactId>org.eclipse.emfforms.swt.controlgrid.test</artifactId>
-	<version>1.16.0-SNAPSHOT</version>
+	<version>1.17.0-SNAPSHOT</version>
 	<packaging>eclipse-test-plugin</packaging>
 	
 	<build>
diff --git a/tests/org.eclipse.emfforms.swt.core.di.extension.tests/META-INF/MANIFEST.MF b/tests/org.eclipse.emfforms.swt.core.di.extension.tests/META-INF/MANIFEST.MF
index 84287e1..bc22438 100644
--- a/tests/org.eclipse.emfforms.swt.core.di.extension.tests/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.emfforms.swt.core.di.extension.tests/META-INF/MANIFEST.MF
@@ -2,21 +2,22 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: SWT Core DI Extension Tests
 Bundle-SymbolicName: org.eclipse.emfforms.swt.core.di.extension.tests;singleton:=true
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Fragment-Host: org.eclipse.emfforms.swt.core.di.extension;bundle-version="[1.16.0,1.17.0)"
-Export-Package: org.eclipse.emfforms.internal.swt.core.di.extension;version="1.16.0";x-internal:=true,
-  org.eclipse.emfforms.internal.swt.core.di.extension.tests;version="1.16.0";x-internal:=true
-Require-Bundle: org.eclipse.emfforms.core.services;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.swt.core;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.swt.core.di.tests;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.model.common;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.context;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.template.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.test.common;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.e4.core.contexts;bundle-version="[1.3.100,2.0.0)",
-  org.mockito.mockito-core-hamcrest-modified;bundle-version="[1.9.5,2.0.0)",
-  org.junit;bundle-version="[4.11.0,5.0.0)"
+Fragment-Host: org.eclipse.emfforms.swt.core.di.extension;bundle-version="[1.17.0,1.18.0]"
+Export-Package: org.eclipse.emfforms.internal.swt.core.di.extension;version="1.17.0";x-internal:=true,
+ org.eclipse.emfforms.internal.swt.core.di.extension.tests;version="1.17.0";x-internal:=true
+Require-Bundle: org.eclipse.emfforms.core.services;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.swt.core;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.swt.core.di.tests;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.model.common;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.context;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.template.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.test.common;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.e4.core.contexts;bundle-version="[1.3.100,2.0.0)",
+ org.mockito.mockito-core-hamcrest-modified;bundle-version="[1.9.5,2.0.0)",
+ org.junit;bundle-version="[4.11.0,5.0.0)"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Import-Package: org.osgi.framework;version="[1.3.0,2.0.0)"
+Automatic-Module-Name: org.eclipse.emfforms.swt.core.di.extension.tests
diff --git a/tests/org.eclipse.emfforms.swt.core.di.extension.tests/pom.xml b/tests/org.eclipse.emfforms.swt.core.di.extension.tests/pom.xml
index f475818..6b77f91 100644
--- a/tests/org.eclipse.emfforms.swt.core.di.extension.tests/pom.xml
+++ b/tests/org.eclipse.emfforms.swt.core.di.extension.tests/pom.xml
@@ -6,12 +6,12 @@
 	<parent>
 		<groupId>org.eclipse.emf.ecp</groupId>
 		<artifactId>ecp-tests-parent</artifactId>
-		<version>1.16.0-SNAPSHOT</version>
+		<version>1.17.0-SNAPSHOT</version>
 		<relativePath>../../releng/org.eclipse.emf.ecp.releng.tests/</relativePath>
 	</parent>
 	<groupId>org.eclipse.emf.ecp</groupId>
 	<artifactId>org.eclipse.emfforms.swt.core.di.extension.tests</artifactId>
-	<version>1.16.0-SNAPSHOT</version>
+	<version>1.17.0-SNAPSHOT</version>
 	<packaging>eclipse-test-plugin</packaging>
 
 	<build>
diff --git a/tests/org.eclipse.emfforms.swt.core.di.tests/META-INF/MANIFEST.MF b/tests/org.eclipse.emfforms.swt.core.di.tests/META-INF/MANIFEST.MF
index 40c88f1..05506bb 100644
--- a/tests/org.eclipse.emfforms.swt.core.di.tests/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.emfforms.swt.core.di.tests/META-INF/MANIFEST.MF
@@ -2,29 +2,30 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: EMFForms SWT Core DI Tests
 Bundle-SymbolicName: org.eclipse.emfforms.swt.core.di.tests
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
-Export-Package: org.eclipse.emfforms.internal.swt.core.di.tests;version="1.16.0";x-friends:="org.eclipse.emfforms.swt.core.di.extension.tests",
-  org.eclipse.emfforms.spi.swt.core.di;version="1.16.0"
-Require-Bundle: org.eclipse.emfforms.swt.core.di;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.core.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services;bundle-version="[1.16.0,1.17.0)",
-  org.junit;bundle-version="[4.11.0,5.0.0)",
-  org.mockito.mockito-core-hamcrest-modified;bundle-version="[1.9.5,2.0.0)",
-  org.eclipse.emf.ecp.test.common;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.core.databinding;bundle-version="[1.4.0,2.0.0)",
-  org.eclipse.emf.ecp.ui.view;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.template.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.ui.view.swt;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.edit;bundle-version="[2.10.0,3.0.0)",
-  org.eclipse.emf.databinding;bundle-version="[1.3.0,2.0.0)",
-  org.eclipse.emfforms.swt.core;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.e4.core.contexts;bundle-version="[1.3.100,2.0.0)"
+Export-Package: org.eclipse.emfforms.internal.swt.core.di.tests;version="1.17.0";x-friends:="org.eclipse.emfforms.swt.core.di.extension.tests",
+ org.eclipse.emfforms.spi.swt.core.di;version="1.17.0"
+Require-Bundle: org.eclipse.emfforms.swt.core.di;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.core.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services;bundle-version="[1.17.0,1.18.0]",
+ org.junit;bundle-version="[4.11.0,5.0.0)",
+ org.mockito.mockito-core-hamcrest-modified;bundle-version="[1.9.5,2.0.0)",
+ org.eclipse.emf.ecp.test.common;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.core.databinding;bundle-version="[1.4.0,2.0.0)",
+ org.eclipse.emf.ecp.ui.view;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.template.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.ui.view.swt;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.edit;bundle-version="[2.10.0,3.0.0)",
+ org.eclipse.emf.databinding;bundle-version="[1.3.0,2.0.0)",
+ org.eclipse.emfforms.swt.core;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.e4.core.contexts;bundle-version="[1.3.100,2.0.0)"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Import-Package: javax.inject;version="1.0.0",
- org.eclipse.emf.ecp.edit.spi.swt.util;version="[1.16.0,1.17.0)",
+ org.eclipse.emf.ecp.edit.spi.swt.util;version="[1.17.0,1.18.0]",
  org.eclipse.swt;version="0.0.0",
  org.eclipse.swt.widgets;version="0.0.0",
  org.osgi.framework;version="1.8.0"
 Service-Component: OSGI-INF/testControlSWTRendererServiceDI.xml
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emfforms.swt.core.di.tests
diff --git a/tests/org.eclipse.emfforms.swt.core.di.tests/pom.xml b/tests/org.eclipse.emfforms.swt.core.di.tests/pom.xml
index de87a7b..7294343 100644
--- a/tests/org.eclipse.emfforms.swt.core.di.tests/pom.xml
+++ b/tests/org.eclipse.emfforms.swt.core.di.tests/pom.xml
@@ -6,12 +6,12 @@
 	<parent>
 		<groupId>org.eclipse.emf.ecp</groupId>
 		<artifactId>ecp-tests-parent</artifactId>
-		<version>1.16.0-SNAPSHOT</version>
+		<version>1.17.0-SNAPSHOT</version>
 		<relativePath>../../releng/org.eclipse.emf.ecp.releng.tests/</relativePath>
 	</parent>
 	<groupId>org.eclipse.emf.ecp</groupId>
 	<artifactId>org.eclipse.emfforms.swt.core.di.tests</artifactId>
-	<version>1.16.0-SNAPSHOT</version>
+	<version>1.17.0-SNAPSHOT</version>
 	<packaging>eclipse-test-plugin</packaging>
 
 	<build>
diff --git a/tests/org.eclipse.emfforms.swt.core.tests/META-INF/MANIFEST.MF b/tests/org.eclipse.emfforms.swt.core.tests/META-INF/MANIFEST.MF
index 914c9a4..a436564 100644
--- a/tests/org.eclipse.emfforms.swt.core.tests/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.emfforms.swt.core.tests/META-INF/MANIFEST.MF
@@ -2,11 +2,12 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: EMFForms SWT Core Tests
 Bundle-SymbolicName: org.eclipse.emfforms.swt.core.tests
-Bundle-Version: 1.16.0.qualifier
-Fragment-Host: org.eclipse.emfforms.swt.core;bundle-version="[1.16.0,1.17.0)"
-Export-Package: org.eclipse.emfforms.internal.swt.core;version="1.16.0";x-internal:=true,
-  org.eclipse.emfforms.swt.core.tests;version="1.16.0";x-internal:=true
+Bundle-Version: 1.17.0.qualifier
+Fragment-Host: org.eclipse.emfforms.swt.core;bundle-version="[1.17.0,1.18.0]"
+Export-Package: org.eclipse.emfforms.internal.swt.core;version="1.17.0";x-internal:=true,
+ org.eclipse.emfforms.swt.core.tests;version="1.17.0";x-internal:=true
 Require-Bundle: org.junit;bundle-version="[4.11.0,5.0.0)",
   org.mockito.mockito-core-hamcrest-modified;bundle-version="[1.9.5,2.0.0)"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Import-Package: org.osgi.framework;version="[1.6.0,2.0.0)"
+Automatic-Module-Name: org.eclipse.emfforms.swt.core.tests
diff --git a/tests/org.eclipse.emfforms.swt.core.tests/pom.xml b/tests/org.eclipse.emfforms.swt.core.tests/pom.xml
index 57d0c04..d6d9543 100644
--- a/tests/org.eclipse.emfforms.swt.core.tests/pom.xml
+++ b/tests/org.eclipse.emfforms.swt.core.tests/pom.xml
@@ -6,12 +6,12 @@
 	<parent>
 		<groupId>org.eclipse.emf.ecp</groupId>
 		<artifactId>ecp-tests-parent</artifactId>
-		<version>1.16.0-SNAPSHOT</version>
+		<version>1.17.0-SNAPSHOT</version>
 		<relativePath>../../releng/org.eclipse.emf.ecp.releng.tests/</relativePath>
 	</parent>
 	<groupId>org.eclipse.emf.ecp</groupId>
 	<artifactId>org.eclipse.emfforms.swt.core.tests</artifactId>
-	<version>1.16.0-SNAPSHOT</version>
+	<version>1.17.0-SNAPSHOT</version>
 	<packaging>eclipse-test-plugin</packaging>
 
 	<build>
diff --git a/tests/org.eclipse.emfforms.swt.treemasterdetail.test/META-INF/MANIFEST.MF b/tests/org.eclipse.emfforms.swt.treemasterdetail.test/META-INF/MANIFEST.MF
index 588d393..2673f47 100644
--- a/tests/org.eclipse.emfforms.swt.treemasterdetail.test/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.emfforms.swt.treemasterdetail.test/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: TreeMasterDetail Tests
 Bundle-SymbolicName: org.eclipse.emfforms.swt.treemasterdetail.test
-Bundle-Version: 1.16.0.qualifier
+Bundle-Version: 1.17.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Require-Bundle: org.junit;bundle-version="[4.12.0,5.0.0)",
@@ -19,5 +19,6 @@
  org.apache.log4j;bundle-version="[1.0.0,2.0.0)",
  org.eclipse.emf.ecp.ui.view.swt;bundle-version="[1.14.0,2.0.0)",
  org.mockito.mockito-core-hamcrest-modified;bundle-version="[1.9.5,2.0.0)"
-Export-Package: org.eclipse.emfforms.swt.treemasterdetail.test;version="1.16.0"
+Export-Package: org.eclipse.emfforms.swt.treemasterdetail.test;version="1.17.0"
 Import-Package: org.osgi.framework;version="0.0.0"
+Automatic-Module-Name: org.eclipse.emfforms.swt.treemasterdetail.test
diff --git a/tests/org.eclipse.emfforms.swt.treemasterdetail.test/pom.xml b/tests/org.eclipse.emfforms.swt.treemasterdetail.test/pom.xml
index 6865abc..dd2edb1 100644
--- a/tests/org.eclipse.emfforms.swt.treemasterdetail.test/pom.xml
+++ b/tests/org.eclipse.emfforms.swt.treemasterdetail.test/pom.xml
@@ -6,12 +6,12 @@
 	<parent>
 		<groupId>org.eclipse.emf.ecp</groupId>
 		<artifactId>ecp-tests-parent</artifactId>
-		<version>1.16.0-SNAPSHOT</version>
+		<version>1.17.0-SNAPSHOT</version>
 		<relativePath>../../releng/org.eclipse.emf.ecp.releng.tests/</relativePath>
 	</parent>
 	<groupId>org.eclipse.emf.ecp</groupId>
 	<artifactId>org.eclipse.emfforms.swt.treemasterdetail.test</artifactId>
-	<version>1.16.0-SNAPSHOT</version>
+	<version>1.17.0-SNAPSHOT</version>
 	<packaging>eclipse-test-plugin</packaging>
 
 	<build>
diff --git a/tests/org.eclipse.emfforms.view.model.localization.tests/META-INF/MANIFEST.MF b/tests/org.eclipse.emfforms.view.model.localization.tests/META-INF/MANIFEST.MF
index 5105016..5bf25c6 100644
--- a/tests/org.eclipse.emfforms.view.model.localization.tests/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.emfforms.view.model.localization.tests/META-INF/MANIFEST.MF
@@ -2,14 +2,15 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: EMFForms View Model Localization Tests
 Bundle-SymbolicName: org.eclipse.emfforms.view.model.localization.tests
-Bundle-Version: 1.16.0.qualifier
-Fragment-Host: org.eclipse.emfforms.view.model.localization;bundle-version="[1.16.0,1.17.0)"
+Bundle-Version: 1.17.0.qualifier
+Fragment-Host: org.eclipse.emfforms.view.model.localization;bundle-version="[1.17.0,1.18.0]"
 Bundle-Localization: OSGI-INF/l10n/bundle
-Export-Package: org.eclipse.emfforms.internal.view.model.localization;version="1.16.0";x-internal:=true,
-  org.eclipse.emfforms.view.model.localization.tests;version="1.16.0"
+Export-Package: org.eclipse.emfforms.internal.view.model.localization;version="1.17.0";x-internal:=true,
+ org.eclipse.emfforms.view.model.localization.tests;version="1.17.0"
 Require-Bundle: org.junit;bundle-version="[4.11.0,5.0.0)",
-  org.mockito.mockito-core-hamcrest-modified;bundle-version="[1.9.5,2.0.0)",
-  org.eclipse.emf.ecp.view.vertical.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.equinox.ds;bundle-version="[1.4.0,2.0.0)"
+ org.mockito.mockito-core-hamcrest-modified;bundle-version="[1.9.5,2.0.0)",
+ org.eclipse.emf.ecp.view.vertical.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.equinox.ds;bundle-version="[1.4.0,2.0.0)"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
-Import-Package: org.eclipse.emfforms.spi.localization;version="[1.16.0,1.17.0)"
+Import-Package: org.eclipse.emfforms.spi.localization;version="[1.17.0,1.18.0]"
+Automatic-Module-Name: org.eclipse.emfforms.view.model.localization.tests
diff --git a/tests/org.eclipse.emfforms.view.model.localization.tests/pom.xml b/tests/org.eclipse.emfforms.view.model.localization.tests/pom.xml
index aefa00a..a1573af 100644
--- a/tests/org.eclipse.emfforms.view.model.localization.tests/pom.xml
+++ b/tests/org.eclipse.emfforms.view.model.localization.tests/pom.xml
@@ -6,12 +6,12 @@
 	<parent>
 		<groupId>org.eclipse.emf.ecp</groupId>
 		<artifactId>ecp-tests-parent</artifactId>
-		<version>1.16.0-SNAPSHOT</version>
+		<version>1.17.0-SNAPSHOT</version>
 		<relativePath>../../releng/org.eclipse.emf.ecp.releng.tests/</relativePath>
 	</parent>
 	<groupId>org.eclipse.emf.ecp</groupId>
 	<artifactId>org.eclipse.emfforms.view.model.localization.tests</artifactId>
-	<version>1.16.0-SNAPSHOT</version>
+	<version>1.17.0-SNAPSHOT</version>
 	<packaging>eclipse-test-plugin</packaging>
 
 	<build>
diff --git a/tests/org.eclipse.emfforms.view.model.localization.tests/src/org/eclipse/emfforms/internal/view/model/localization/LocalizationViewModelService_Test.java b/tests/org.eclipse.emfforms.view.model.localization.tests/src/org/eclipse/emfforms/internal/view/model/localization/LocalizationViewModelService_Test.java
index a531bc7..c9e0dc4 100644
--- a/tests/org.eclipse.emfforms.view.model.localization.tests/src/org/eclipse/emfforms/internal/view/model/localization/LocalizationViewModelService_Test.java
+++ b/tests/org.eclipse.emfforms.view.model.localization.tests/src/org/eclipse/emfforms/internal/view/model/localization/LocalizationViewModelService_Test.java
@@ -18,6 +18,7 @@
 
 import org.eclipse.emf.common.notify.impl.AdapterImpl;
 import org.eclipse.emf.ecore.EcoreFactory;
+import org.eclipse.emf.ecp.view.internal.context.ArrayOnceViewModelServiceProvider;
 import org.eclipse.emf.ecp.view.internal.context.ViewModelContextImpl;
 import org.eclipse.emf.ecp.view.spi.context.ViewModelContext;
 import org.eclipse.emf.ecp.view.spi.model.LocalizationAdapter;
@@ -134,7 +135,8 @@
 		view.eAdapters().add(adapter);
 
 		final ViewModelContext viewModelContext = spy(new ViewModelContextImpl(view,
-			EcoreFactory.eINSTANCE.createEObject(), localizationViewModelService));
+			EcoreFactory.eINSTANCE.createEObject(),
+			new ArrayOnceViewModelServiceProvider(localizationViewModelService)));
 
 		localizationViewModelService.instantiate(viewModelContext);
 		control.setName(controlName2);
@@ -159,7 +161,8 @@
 		view.eAdapters().add(adapter);
 
 		final ViewModelContext viewModelContext = spy(new ViewModelContextImpl(view,
-			EcoreFactory.eINSTANCE.createEObject(), localizationViewModelService));
+			EcoreFactory.eINSTANCE.createEObject(),
+			new ArrayOnceViewModelServiceProvider(localizationViewModelService)));
 
 		localizationViewModelService.instantiate(viewModelContext);
 
@@ -192,7 +195,8 @@
 		view.eAdapters().add(adapter);
 
 		final ViewModelContext viewModelContext = spy(new ViewModelContextImpl(view,
-			EcoreFactory.eINSTANCE.createEObject(), localizationViewModelService));
+			EcoreFactory.eINSTANCE.createEObject(),
+			new ArrayOnceViewModelServiceProvider(localizationViewModelService)));
 
 		localizationViewModelService.instantiate(viewModelContext);
 		final VControl control2 = VViewFactory.eINSTANCE.createControl();
@@ -223,7 +227,8 @@
 		view.eAdapters().add(adapter);
 
 		final ViewModelContext viewModelContext = spy(new ViewModelContextImpl(view,
-			EcoreFactory.eINSTANCE.createEObject(), localizationViewModelService));
+			EcoreFactory.eINSTANCE.createEObject(),
+			new ArrayOnceViewModelServiceProvider(localizationViewModelService)));
 
 		localizationViewModelService.instantiate(viewModelContext);
 		final VVerticalLayout layout = VVerticalFactory.eINSTANCE.createVerticalLayout();
@@ -262,7 +267,8 @@
 		when(adapter.localize(getLocalizableString(layoutName))).thenReturn(layoutLabel);
 		view.eAdapters().add(adapter);
 		final ViewModelContext viewModelContext = spy(new ViewModelContextImpl(view,
-			EcoreFactory.eINSTANCE.createEObject(), localizationViewModelService));
+			EcoreFactory.eINSTANCE.createEObject(),
+			new ArrayOnceViewModelServiceProvider(localizationViewModelService)));
 
 		localizationViewModelService.instantiate(viewModelContext);
 
diff --git a/tests/spreadsheet/org.eclipse.emfforms.spreadsheet.core.renderer.categorization.tests/META-INF/MANIFEST.MF b/tests/spreadsheet/org.eclipse.emfforms.spreadsheet.core.renderer.categorization.tests/META-INF/MANIFEST.MF
index 8e3a324..bbbe70f 100644
--- a/tests/spreadsheet/org.eclipse.emfforms.spreadsheet.core.renderer.categorization.tests/META-INF/MANIFEST.MF
+++ b/tests/spreadsheet/org.eclipse.emfforms.spreadsheet.core.renderer.categorization.tests/META-INF/MANIFEST.MF
@@ -10,3 +10,4 @@
 Require-Bundle: org.junit;bundle-version="[4.11.0,5.0.0)",
   org.mockito.mockito-core-hamcrest-modified;bundle-version="[1.9.5,2.0.0)"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Automatic-Module-Name: org.eclipse.emfforms.spreadsheet.core.renderer.categorization.tests
diff --git a/tests/spreadsheet/org.eclipse.emfforms.spreadsheet.core.renderer.table.tests/META-INF/MANIFEST.MF b/tests/spreadsheet/org.eclipse.emfforms.spreadsheet.core.renderer.table.tests/META-INF/MANIFEST.MF
index 36f0623..2ca0948 100644
--- a/tests/spreadsheet/org.eclipse.emfforms.spreadsheet.core.renderer.table.tests/META-INF/MANIFEST.MF
+++ b/tests/spreadsheet/org.eclipse.emfforms.spreadsheet.core.renderer.table.tests/META-INF/MANIFEST.MF
@@ -7,13 +7,14 @@
 Fragment-Host: org.eclipse.emfforms.spreadsheet.core.renderer.table;bundle-version="[1.0.0,1.1.0)"
 Export-Package: org.eclipse.emfforms.internal.spreadsheet.core.renderer.table;version="1.0.0"
 Require-Bundle: org.junit;bundle-version="[4.11.0,5.0.0)",
-  org.eclipse.emf.ecp.makeithappen.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.test.common;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.spreadsheet.core.error.model;bundle-version="[1.0.0,1.1.0)",
-  org.eclipse.emfforms.core.services.databinding.index;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services.databinding.featurepath;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.template.service;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services.domainexpander.default;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services.domainexpander.table;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.core.services.domainexpander.index;bundle-version="[1.16.0,1.17.0)"
+ org.eclipse.emf.ecp.makeithappen.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.test.common;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.spreadsheet.core.error.model;bundle-version="[1.0.0,1.1.0)",
+ org.eclipse.emfforms.core.services.databinding.index;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services.databinding.featurepath;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.template.service;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services.domainexpander.default;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services.domainexpander.table;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.core.services.domainexpander.index;bundle-version="[1.17.0,1.18.0]"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Automatic-Module-Name: org.eclipse.emfforms.spreadsheet.core.renderer.table.tests
diff --git a/tests/spreadsheet/org.eclipse.emfforms.spreadsheet.core.tests/META-INF/MANIFEST.MF b/tests/spreadsheet/org.eclipse.emfforms.spreadsheet.core.tests/META-INF/MANIFEST.MF
index 60d1788..a3f140b 100644
--- a/tests/spreadsheet/org.eclipse.emfforms.spreadsheet.core.tests/META-INF/MANIFEST.MF
+++ b/tests/spreadsheet/org.eclipse.emfforms.spreadsheet.core.tests/META-INF/MANIFEST.MF
@@ -8,10 +8,11 @@
   org.eclipse.emfforms.internal.spreadsheet.core.converter;version="1.0.0";x-internal:=true,
   org.eclipse.emfforms.spreadsheet.core.tests;version="1.0.0";x-internal:=true
 Require-Bundle: org.junit;bundle-version="[4.11.0,5.0.0)",
-  org.mockito.mockito-core-hamcrest-modified;bundle-version="[1.9.5,2.0.0)",
-  org.eclipse.emf.ecp.test.common;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.model.provider.generator;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.makeithappen.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.emfstore.examplemodel;bundle-version="[1.5.0,2.0.0)",
-  org.eclipse.emf.emfstore.examplemodel.edit;bundle-version="[1.5.0,2.0.0)"
+ org.mockito.mockito-core-hamcrest-modified;bundle-version="[1.9.5,2.0.0)",
+ org.eclipse.emf.ecp.test.common;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.model.provider.generator;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.makeithappen.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.emfstore.examplemodel;bundle-version="[1.5.0,2.0.0)",
+ org.eclipse.emf.emfstore.examplemodel.edit;bundle-version="[1.5.0,2.0.0)"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Automatic-Module-Name: org.eclipse.emfforms.spreadsheet.core.tests
diff --git a/tests/spreadsheet/org.eclipse.emfforms.spreadsheet.integrationtest/EMFFormsExcel Roundtrip.launch b/tests/spreadsheet/org.eclipse.emfforms.spreadsheet.integrationtest/EMFFormsExcel Roundtrip.launch
index aa9144e..396515f 100644
--- a/tests/spreadsheet/org.eclipse.emfforms.spreadsheet.integrationtest/EMFFormsExcel Roundtrip.launch
+++ b/tests/spreadsheet/org.eclipse.emfforms.spreadsheet.integrationtest/EMFFormsExcel Roundtrip.launch
@@ -1,43 +1,43 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>

-<launchConfiguration type="org.eclipse.pde.ui.JunitLaunchConfig">

-<booleanAttribute key="append.args" value="true"/>

-<stringAttribute key="application" value="org.eclipse.pde.junit.runtime.coretestapplication"/>

-<booleanAttribute key="askclear" value="false"/>

-<booleanAttribute key="automaticAdd" value="false"/>

-<booleanAttribute key="automaticValidate" value="false"/>

-<stringAttribute key="bootstrap" value=""/>

-<stringAttribute key="checked" value="[NONE]"/>

-<booleanAttribute key="clearConfig" value="true"/>

-<booleanAttribute key="clearws" value="true"/>

-<booleanAttribute key="clearwslog" value="false"/>

-<stringAttribute key="configLocation" value="${workspace_loc}/.metadata/.plugins/org.eclipse.pde.core/pde-junit"/>

-<booleanAttribute key="default" value="false"/>

-<booleanAttribute key="includeOptional" value="false"/>

-<stringAttribute key="location" value="${workspace_loc}/../junit-workspace"/>

-<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">

-<listEntry value="/org.eclipse.emfforms.spreadsheet.integrationtest/src/org/eclipse/emfforms/spreadsheet/integrationtest/AllIntegrationTests.java"/>

-</listAttribute>

-<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">

-<listEntry value="1"/>

-</listAttribute>

-<stringAttribute key="org.eclipse.jdt.junit.CONTAINER" value=""/>

-<booleanAttribute key="org.eclipse.jdt.junit.KEEPRUNNING_ATTR" value="false"/>

-<stringAttribute key="org.eclipse.jdt.junit.TESTNAME" value=""/>

-<stringAttribute key="org.eclipse.jdt.junit.TEST_KIND" value="org.eclipse.jdt.junit.loader.junit4"/>

-<stringAttribute key="org.eclipse.jdt.launching.JRE_CONTAINER" value="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>

-<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.eclipse.emfforms.spreadsheet.integrationtest.AllIntegrationTests"/>

-<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-os ${target.os} -ws ${target.ws} -arch ${target.arch} -nl ${target.nl} -consoleLog"/>

-<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.emfforms.spreadsheet.integrationtest"/>

-<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.pde.ui.workbenchClasspathProvider"/>

-<stringAttribute key="pde.version" value="3.3"/>

-<stringAttribute key="product" value="org.eclipse.platform.ide"/>

-<booleanAttribute key="run_in_ui_thread" value="true"/>

-<stringAttribute key="selected_target_plugins" value="com.ibm.icu@default:default,javax.servlet@default:default,javax.xml@default:default,lpg.runtime.java@default:default,org.apache.commons.codec@default:default,org.apache.poi@default:default,org.eclipse.core.contenttype@default:default,org.eclipse.core.databinding.observable@default:default,org.eclipse.core.databinding.property@default:default,org.eclipse.core.databinding@default:default,org.eclipse.core.expressions@default:default,org.eclipse.core.filesystem@default:default,org.eclipse.core.jobs@default:default,org.eclipse.core.resources@default:default,org.eclipse.core.runtime@default:true,org.eclipse.emf.common@default:default,org.eclipse.emf.databinding.edit@default:default,org.eclipse.emf.databinding@default:default,org.eclipse.emf.ecore.xmi@default:default,org.eclipse.emf.ecore@default:default,org.eclipse.emf.edapt.common@default:default,org.eclipse.emf.edapt.declaration@default:default,org.eclipse.emf.edapt.history@default:default,org.eclipse.emf.edapt.migration@default:default,org.eclipse.emf.edit@default:default,org.eclipse.emf.emfstore.examplemodel.edit@default:default,org.eclipse.emf.emfstore.examplemodel@default:default,org.eclipse.equinox.app@default:default,org.eclipse.equinox.common@2:true,org.eclipse.equinox.ds@1:true,org.eclipse.equinox.event@default:default,org.eclipse.equinox.http.registry@default:default,org.eclipse.equinox.preferences@default:default,org.eclipse.equinox.registry@default:default,org.eclipse.equinox.util@default:default,org.eclipse.ocl.common@default:default,org.eclipse.ocl.ecore@default:default,org.eclipse.ocl@default:default,org.eclipse.osgi.services@default:default,org.eclipse.osgi.util@default:default,org.eclipse.osgi@-1:true,org.eclipse.swt.win32.win32.x86_64@default:false,org.eclipse.swt@default:default,org.hamcrest.core@default:default,org.junit@default:default,org.slf4j.api@default:default"/>

-<stringAttribute key="selected_workspace_plugins" value="org.eclipse.emf.ecp.common@default:default,org.eclipse.emf.ecp.edit@default:default,org.eclipse.emf.ecp.makeithappen.model@default:default,org.eclipse.emf.ecp.test.common@default:default,org.eclipse.emf.ecp.ui.view@default:default,org.eclipse.emf.ecp.view.categorization.model@default:default,org.eclipse.emf.ecp.view.context@default:default,org.eclipse.emf.ecp.view.custom.model@default:default,org.eclipse.emf.ecp.view.edapt@default:default,org.eclipse.emf.ecp.view.group.model@default:default,org.eclipse.emf.ecp.view.horizontal.model@default:default,org.eclipse.emf.ecp.view.indexdmr.model@default:default,org.eclipse.emf.ecp.view.keyattributedmr.model@default:default,org.eclipse.emf.ecp.view.label.model@default:default,org.eclipse.emf.ecp.view.mappingdmr.model@default:default,org.eclipse.emf.ecp.view.migrator@default:default,org.eclipse.emf.ecp.view.model.common@default:default,org.eclipse.emf.ecp.view.model.edapt@default:default,org.eclipse.emf.ecp.view.model.provider.generator@default:default,org.eclipse.emf.ecp.view.model.provider.xmi@default:default,org.eclipse.emf.ecp.view.model@default:default,org.eclipse.emf.ecp.view.rule.model@default:default,org.eclipse.emf.ecp.view.table.edapt@default:default,org.eclipse.emf.ecp.view.table.model@default:default,org.eclipse.emf.ecp.view.template.model@default:default,org.eclipse.emf.ecp.view.template.service@default:default,org.eclipse.emf.ecp.view.treemasterdetail.model@default:default,org.eclipse.emf.ecp.view.vertical.model@default:default,org.eclipse.emfforms.common@default:default,org.eclipse.emfforms.core.services.databinding.featurepath@default:default,org.eclipse.emfforms.core.services.databinding.index@default:default,org.eclipse.emfforms.core.services.databinding.mapping@default:default,org.eclipse.emfforms.core.services.emf@default:default,org.eclipse.emfforms.core.services.emfspecificservice@default:default,org.eclipse.emfforms.core.services.locale.default@default:default,org.eclipse.emfforms.core.services@default:default,org.eclipse.emfforms.localization@default:default,org.eclipse.emfforms.spreadsheet.core.error.model@default:default,org.eclipse.emfforms.spreadsheet.core.renderer.categorization@default:default,org.eclipse.emfforms.spreadsheet.core.renderer.custom@default:default,org.eclipse.emfforms.spreadsheet.core.renderer.table@default:default,org.eclipse.emfforms.spreadsheet.core.renderer@default:default,org.eclipse.emfforms.spreadsheet.core@default:default,org.eclipse.emfforms.spreadsheet.integrationtest@default:default,org.eclipse.emfforms.view.annotation.model@default:default,org.eclipse.emfforms.view.model.localization@default:default"/>

-<booleanAttribute key="show_selected_only" value="false"/>

-<booleanAttribute key="tracing" value="false"/>

-<booleanAttribute key="useCustomFeatures" value="false"/>

-<booleanAttribute key="useDefaultConfig" value="true"/>

-<booleanAttribute key="useDefaultConfigArea" value="false"/>

-<booleanAttribute key="useProduct" value="false"/>

-</launchConfiguration>

+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.pde.ui.JunitLaunchConfig">
+<booleanAttribute key="append.args" value="true"/>
+<stringAttribute key="application" value="org.eclipse.pde.junit.runtime.coretestapplication"/>
+<booleanAttribute key="askclear" value="false"/>
+<booleanAttribute key="automaticAdd" value="false"/>
+<booleanAttribute key="automaticValidate" value="false"/>
+<stringAttribute key="bootstrap" value=""/>
+<stringAttribute key="checked" value="[NONE]"/>
+<booleanAttribute key="clearConfig" value="true"/>
+<booleanAttribute key="clearws" value="true"/>
+<booleanAttribute key="clearwslog" value="false"/>
+<stringAttribute key="configLocation" value="${workspace_loc}/.metadata/.plugins/org.eclipse.pde.core/pde-junit"/>
+<booleanAttribute key="default" value="false"/>
+<booleanAttribute key="includeOptional" value="false"/>
+<stringAttribute key="location" value="${workspace_loc}/../junit-workspace"/>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
+<listEntry value="/org.eclipse.emfforms.spreadsheet.integrationtest/src/org/eclipse/emfforms/spreadsheet/integrationtest/AllIntegrationTests.java"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
+<listEntry value="1"/>
+</listAttribute>
+<stringAttribute key="org.eclipse.jdt.junit.CONTAINER" value=""/>
+<booleanAttribute key="org.eclipse.jdt.junit.KEEPRUNNING_ATTR" value="false"/>
+<stringAttribute key="org.eclipse.jdt.junit.TESTNAME" value=""/>
+<stringAttribute key="org.eclipse.jdt.junit.TEST_KIND" value="org.eclipse.jdt.junit.loader.junit4"/>
+<stringAttribute key="org.eclipse.jdt.launching.JRE_CONTAINER" value="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.eclipse.emfforms.spreadsheet.integrationtest.AllIntegrationTests"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-os ${target.os} -ws ${target.ws} -arch ${target.arch} -nl ${target.nl} -consoleLog"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.emfforms.spreadsheet.integrationtest"/>
+<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.pde.ui.workbenchClasspathProvider"/>
+<stringAttribute key="pde.version" value="3.3"/>
+<stringAttribute key="product" value="org.eclipse.platform.ide"/>
+<booleanAttribute key="run_in_ui_thread" value="true"/>
+<stringAttribute key="selected_target_plugins" value="com.ibm.icu@default:default,javax.servlet@default:default,lpg.runtime.java@default:default,org.apache.commons.codec@default:default,org.apache.felix.scr@default:default,org.apache.poi@default:default,org.eclipse.core.contenttype@default:default,org.eclipse.core.databinding*1.5.0.v20150422-0725@default:default,org.eclipse.core.databinding*1.6.100.v20170515-1119@default:default,org.eclipse.core.databinding.observable*1.5.0.v20150422-0725@default:default,org.eclipse.core.databinding.observable*1.6.100.v20170515-1119@default:default,org.eclipse.core.databinding.property*1.5.0.v20150422-0725@default:default,org.eclipse.core.databinding.property*1.6.100.v20170515-1119@default:default,org.eclipse.core.expressions@default:default,org.eclipse.core.filesystem@default:default,org.eclipse.core.jobs@default:default,org.eclipse.core.resources@default:default,org.eclipse.core.runtime@default:true,org.eclipse.emf.common@default:default,org.eclipse.emf.databinding.edit@default:default,org.eclipse.emf.databinding@default:default,org.eclipse.emf.ecore.xmi@default:default,org.eclipse.emf.ecore@default:default,org.eclipse.emf.edapt.common@default:default,org.eclipse.emf.edapt.declaration@default:default,org.eclipse.emf.edapt.history@default:default,org.eclipse.emf.edapt.migration@default:default,org.eclipse.emf.edit@default:default,org.eclipse.emf.emfstore.examplemodel.edit@default:default,org.eclipse.emf.emfstore.examplemodel@default:default,org.eclipse.equinox.app@default:default,org.eclipse.equinox.common@2:true,org.eclipse.equinox.ds@1:true,org.eclipse.equinox.event@default:default,org.eclipse.equinox.http.registry@default:default,org.eclipse.equinox.preferences@default:default,org.eclipse.equinox.registry@default:default,org.eclipse.equinox.util@default:default,org.eclipse.ocl.common@default:default,org.eclipse.ocl.ecore@default:default,org.eclipse.ocl@default:default,org.eclipse.osgi.services@default:default,org.eclipse.osgi.util@default:default,org.eclipse.osgi@-1:true,org.eclipse.swt@default:default,org.hamcrest.core@default:default,org.junit@default:default,org.slf4j.api@default:default"/>
+<stringAttribute key="selected_workspace_plugins" value="org.eclipse.emf.ecp.common@default:default,org.eclipse.emf.ecp.edit@default:default,org.eclipse.emf.ecp.makeithappen.model@default:default,org.eclipse.emf.ecp.test.common@default:default,org.eclipse.emf.ecp.ui.view@default:default,org.eclipse.emf.ecp.view.categorization.model@default:default,org.eclipse.emf.ecp.view.context@default:default,org.eclipse.emf.ecp.view.custom.model@default:default,org.eclipse.emf.ecp.view.edapt@default:default,org.eclipse.emf.ecp.view.group.model@default:default,org.eclipse.emf.ecp.view.horizontal.model@default:default,org.eclipse.emf.ecp.view.indexdmr.model@default:default,org.eclipse.emf.ecp.view.keyattributedmr.model@default:default,org.eclipse.emf.ecp.view.label.model@default:default,org.eclipse.emf.ecp.view.mappingdmr.model@default:default,org.eclipse.emf.ecp.view.migrator@default:default,org.eclipse.emf.ecp.view.model.common@default:default,org.eclipse.emf.ecp.view.model.edapt@default:default,org.eclipse.emf.ecp.view.model.provider.generator@default:default,org.eclipse.emf.ecp.view.model.provider.xmi@default:default,org.eclipse.emf.ecp.view.model@default:default,org.eclipse.emf.ecp.view.rule.model@default:default,org.eclipse.emf.ecp.view.table.edapt@default:default,org.eclipse.emf.ecp.view.table.model@default:default,org.eclipse.emf.ecp.view.template.model@default:default,org.eclipse.emf.ecp.view.template.service@default:default,org.eclipse.emf.ecp.view.treemasterdetail.model@default:default,org.eclipse.emf.ecp.view.vertical.model@default:default,org.eclipse.emfforms.common@default:default,org.eclipse.emfforms.core.services.databinding.featurepath@default:default,org.eclipse.emfforms.core.services.databinding.index@default:default,org.eclipse.emfforms.core.services.databinding.mapping@default:default,org.eclipse.emfforms.core.services.domainexpander.default@default:default,org.eclipse.emfforms.core.services.domainexpander.table@default:default,org.eclipse.emfforms.core.services.emf@default:default,org.eclipse.emfforms.core.services.emfspecificservice@default:default,org.eclipse.emfforms.core.services.locale.default@default:default,org.eclipse.emfforms.core.services@default:default,org.eclipse.emfforms.localization@default:default,org.eclipse.emfforms.spreadsheet.core.error.model@default:default,org.eclipse.emfforms.spreadsheet.core.renderer.categorization@default:default,org.eclipse.emfforms.spreadsheet.core.renderer.custom@default:default,org.eclipse.emfforms.spreadsheet.core.renderer.table@default:default,org.eclipse.emfforms.spreadsheet.core.renderer@default:default,org.eclipse.emfforms.spreadsheet.core@default:default,org.eclipse.emfforms.spreadsheet.integrationtest@default:default,org.eclipse.emfforms.view.annotation.model@default:default,org.eclipse.emfforms.view.model.localization@default:default"/>
+<booleanAttribute key="show_selected_only" value="false"/>
+<booleanAttribute key="tracing" value="false"/>
+<booleanAttribute key="useCustomFeatures" value="false"/>
+<booleanAttribute key="useDefaultConfig" value="true"/>
+<booleanAttribute key="useDefaultConfigArea" value="false"/>
+<booleanAttribute key="useProduct" value="false"/>
+</launchConfiguration>
diff --git a/tests/spreadsheet/org.eclipse.emfforms.spreadsheet.integrationtest/META-INF/MANIFEST.MF b/tests/spreadsheet/org.eclipse.emfforms.spreadsheet.integrationtest/META-INF/MANIFEST.MF
index 094acb5..383d1bf 100644
--- a/tests/spreadsheet/org.eclipse.emfforms.spreadsheet.integrationtest/META-INF/MANIFEST.MF
+++ b/tests/spreadsheet/org.eclipse.emfforms.spreadsheet.integrationtest/META-INF/MANIFEST.MF
@@ -1,24 +1,26 @@
 Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
 Bundle-Name: EMFForms Spreadsheet Integrationtest
-Bundle-SymbolicName: org.eclipse.emfforms.spreadsheet.integrationtest
+Bundle-SymbolicName: org.eclipse.emfforms.spreadsheet.integrationtest;singleton:=true
 Bundle-Version: 1.0.0.qualifier
 Bundle-Vendor: Eclipse Modeling Project
 Export-Package: org.eclipse.emfforms.spreadsheet.integrationtest;version="1.0.0";x-internal:=true
 Require-Bundle: org.junit;bundle-version="[4.11.0,5.0.0)",
-  org.eclipse.emf.ecore;bundle-version="[2.11.0,3.0.0)",
-  org.eclipse.emf.ecore.xmi;bundle-version="[2.11.0,3.0.0)",
-  org.eclipse.emf.ecp.test.common;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.context;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.view.categorization.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.ecp.ui.view;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emfforms.spreadsheet.core;bundle-version="[1.0.0,1.1.0)",
-  org.eclipse.emf.ecp.makeithappen.model;bundle-version="[1.16.0,1.17.0)",
-  org.eclipse.emf.emfstore.examplemodel;bundle-version="[1.5.0,2.0.0)",
-  org.eclipse.emf.emfstore.examplemodel.edit;bundle-version="[1.5.0,2.0.0)",
-  org.eclipse.emfforms.spreadsheet.core.error.model;bundle-version="[1.0.0,1.1.0)"
+ org.eclipse.emf.ecore;bundle-version="[2.11.0,3.0.0)",
+ org.eclipse.emf.ecore.xmi;bundle-version="[2.11.0,3.0.0)",
+ org.eclipse.emf.ecp.test.common;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.context;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.view.categorization.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.ecp.ui.view;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emfforms.spreadsheet.core;bundle-version="[1.0.0,1.1.0)",
+ org.eclipse.emf.ecp.makeithappen.model;bundle-version="[1.17.0,1.18.0]",
+ org.eclipse.emf.emfstore.examplemodel;bundle-version="[1.5.0,2.0.0)",
+ org.eclipse.emf.emfstore.examplemodel.edit;bundle-version="[1.5.0,2.0.0)",
+ org.eclipse.emfforms.spreadsheet.core.error.model;bundle-version="[1.0.0,1.1.0)",
+ org.eclipse.emfforms.spreadsheet.core.renderer.categorization;bundle-version="[1.0.0,1.1.0)"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Import-Package: org.eclipse.core.runtime;version="3.5.0",
   org.osgi.framework;version="0.0.0"
 Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.emfforms.spreadsheet.integrationtest
diff --git a/tests/spreadsheet/org.eclipse.emfforms.spreadsheet.integrationtest/User.view b/tests/spreadsheet/org.eclipse.emfforms.spreadsheet.integrationtest/User.view
new file mode 100644
index 0000000..d7d8a4d
--- /dev/null
+++ b/tests/spreadsheet/org.eclipse.emfforms.spreadsheet.integrationtest/User.view
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="ASCII"?>
+<org.eclipse.emf.ecp.view.model:View xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:org.eclipse.emf.ecp.view.categorization.model="http://org/eclipse/emf/ecp/view/categorization/model" xmlns:org.eclipse.emf.ecp.view.model="http://org/eclipse/emf/ecp/view/model/170" xmlns:org.eclipse.emf.ecp.view.vertical.model="http://org/eclipse/emf/ecp/view/vertical/model" xmi:id="_VZu0wCCPEeiYcPB2sAaONg" name="User" ecorePath="/org.eclipse.emf.ecp.makeithappen.model/model/task.ecore">
+  <rootEClass href="http://eclipse/org/emf/ecp/makeithappen/model/task#//User"/>
+  <children xsi:type="org.eclipse.emf.ecp.view.categorization.model:CategorizationElement" xmi:id="_YFIEACCPEeiYcPB2sAaONg">
+    <categorizations xsi:type="org.eclipse.emf.ecp.view.categorization.model:Category" xmi:id="_aO8QMCCPEeiYcPB2sAaONg" name="Leaf1">
+      <composite xsi:type="org.eclipse.emf.ecp.view.vertical.model:VerticalLayout" xmi:id="_t5-QYCCPEeiYcPB2sAaONg">
+        <children xsi:type="org.eclipse.emf.ecp.view.model:Control" xmi:id="_VaH2UCCPEeiYcPB2sAaONg" name="Control firstName">
+          <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_VaH2USCPEeiYcPB2sAaONg">
+            <domainModelEFeature xsi:type="ecore:EAttribute" href="http://eclipse/org/emf/ecp/makeithappen/model/task#//User/firstName"/>
+          </domainModelReference>
+        </children>
+        <children xsi:type="org.eclipse.emf.ecp.view.model:Control" xmi:id="_VaH2UiCPEeiYcPB2sAaONg" name="Control lastName">
+          <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_VaH2UyCPEeiYcPB2sAaONg">
+            <domainModelEFeature xsi:type="ecore:EAttribute" href="http://eclipse/org/emf/ecp/makeithappen/model/task#//User/lastName"/>
+          </domainModelReference>
+        </children>
+        <children xsi:type="org.eclipse.emf.ecp.view.model:Control" xmi:id="_VaH2VCCPEeiYcPB2sAaONg" name="Control gender">
+          <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_VaH2VSCPEeiYcPB2sAaONg">
+            <domainModelEFeature xsi:type="ecore:EAttribute" href="http://eclipse/org/emf/ecp/makeithappen/model/task#//User/gender"/>
+          </domainModelReference>
+        </children>
+        <children xsi:type="org.eclipse.emf.ecp.view.model:Control" xmi:id="_VaH2ViCPEeiYcPB2sAaONg" name="Control active">
+          <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_VaH2VyCPEeiYcPB2sAaONg">
+            <domainModelEFeature xsi:type="ecore:EAttribute" href="http://eclipse/org/emf/ecp/makeithappen/model/task#//User/active"/>
+          </domainModelReference>
+        </children>
+        <children xsi:type="org.eclipse.emf.ecp.view.model:Control" xmi:id="_39HJQCCPEeiYcPB2sAaONg" name="Control email">
+          <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_39HJQSCPEeiYcPB2sAaONg">
+            <domainModelEFeature xsi:type="ecore:EAttribute" href="http://eclipse/org/emf/ecp/makeithappen/model/task#//User/email"/>
+          </domainModelReference>
+        </children>
+      </composite>
+    </categorizations>
+    <categorizations xsi:type="org.eclipse.emf.ecp.view.categorization.model:Categorization" xmi:id="_jsRtUCCPEeiYcPB2sAaONg" name="Composite">
+      <categorizations xsi:type="org.eclipse.emf.ecp.view.categorization.model:Category" xmi:id="_klwTACCPEeiYcPB2sAaONg" name="CompositeLeaf1">
+        <composite xsi:type="org.eclipse.emf.ecp.view.vertical.model:VerticalLayout" xmi:id="_ukP8cCCPEeiYcPB2sAaONg">
+          <children xsi:type="org.eclipse.emf.ecp.view.model:Control" xmi:id="_VaH2WCCPEeiYcPB2sAaONg" name="Control timeOfRegistration">
+            <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_VaH2WSCPEeiYcPB2sAaONg">
+              <domainModelEFeature xsi:type="ecore:EAttribute" href="http://eclipse/org/emf/ecp/makeithappen/model/task#//User/timeOfRegistration"/>
+            </domainModelReference>
+          </children>
+          <children xsi:type="org.eclipse.emf.ecp.view.model:Control" xmi:id="_VaH2YCCPEeiYcPB2sAaONg" name="Control dateOfBirth">
+            <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_VaH2YSCPEeiYcPB2sAaONg">
+              <domainModelEFeature xsi:type="ecore:EAttribute" href="http://eclipse/org/emf/ecp/makeithappen/model/task#//User/dateOfBirth"/>
+            </domainModelReference>
+          </children>
+        </composite>
+      </categorizations>
+      <categorizations xsi:type="org.eclipse.emf.ecp.view.categorization.model:Category" xmi:id="_k4nkoCCPEeiYcPB2sAaONg" name="CompositeLeaf2">
+        <composite xsi:type="org.eclipse.emf.ecp.view.vertical.model:VerticalLayout" xmi:id="_u2p7ECCPEeiYcPB2sAaONg">
+          <children xsi:type="org.eclipse.emf.ecp.view.model:Control" xmi:id="_VaH2WiCPEeiYcPB2sAaONg" name="Control weight">
+            <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_VaH2WyCPEeiYcPB2sAaONg">
+              <domainModelEFeature xsi:type="ecore:EAttribute" href="http://eclipse/org/emf/ecp/makeithappen/model/task#//User/weight"/>
+            </domainModelReference>
+          </children>
+          <children xsi:type="org.eclipse.emf.ecp.view.model:Control" xmi:id="_VaH2XCCPEeiYcPB2sAaONg" name="Control heigth">
+            <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_VaH2XSCPEeiYcPB2sAaONg">
+              <domainModelEFeature xsi:type="ecore:EAttribute" href="http://eclipse/org/emf/ecp/makeithappen/model/task#//User/heigth"/>
+            </domainModelReference>
+          </children>
+          <children xsi:type="org.eclipse.emf.ecp.view.model:Control" xmi:id="_VaH2XiCPEeiYcPB2sAaONg" name="Control nationality">
+            <domainModelReference xsi:type="org.eclipse.emf.ecp.view.model:FeaturePathDomainModelReference" xmi:id="_VaH2XyCPEeiYcPB2sAaONg">
+              <domainModelEFeature xsi:type="ecore:EAttribute" href="http://eclipse/org/emf/ecp/makeithappen/model/task#//User/nationality"/>
+            </domainModelReference>
+          </children>
+        </composite>
+      </categorizations>
+    </categorizations>
+  </children>
+</org.eclipse.emf.ecp.view.model:View>
diff --git a/tests/spreadsheet/org.eclipse.emfforms.spreadsheet.integrationtest/build.properties b/tests/spreadsheet/org.eclipse.emfforms.spreadsheet.integrationtest/build.properties
index 34d2e4d..9a1920f 100644
--- a/tests/spreadsheet/org.eclipse.emfforms.spreadsheet.integrationtest/build.properties
+++ b/tests/spreadsheet/org.eclipse.emfforms.spreadsheet.integrationtest/build.properties
@@ -1,4 +1,6 @@
 source.. = src/
 output.. = bin/
 bin.includes = META-INF/,\
-               .
+               User.view,\
+               .,\
+               plugin.xml
diff --git a/tests/spreadsheet/org.eclipse.emfforms.spreadsheet.integrationtest/plugin.xml b/tests/spreadsheet/org.eclipse.emfforms.spreadsheet.integrationtest/plugin.xml
new file mode 100644
index 0000000..ecbdcd7
--- /dev/null
+++ b/tests/spreadsheet/org.eclipse.emfforms.spreadsheet.integrationtest/plugin.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+
+<extension  point="org.eclipse.emf.ecp.view.model.provider.xmi.file">
+<file filePath="User.view"/>
+</extension>
+</plugin>