Merge branch '14x'

Change-Id: I08c8713616fadc848939480fb3e37c79e9343735
Signed-off-by: Johannes Faltermeier <jfaltermeier@eclipsesource.com>
diff --git a/builds/org.eclipse.emf.edapt.releng.p2/pom.xml b/builds/org.eclipse.emf.edapt.releng.p2/pom.xml
index db7dfd7..222d99f 100644
--- a/builds/org.eclipse.emf.edapt.releng.p2/pom.xml
+++ b/builds/org.eclipse.emf.edapt.releng.p2/pom.xml
@@ -3,7 +3,7 @@
   <parent>
     <groupId>edapt</groupId>
     <artifactId>root</artifactId>
-    <version>1.3.1-SNAPSHOT</version>
+    <version>1.4.0-SNAPSHOT</version>
      <relativePath>../org.eclipse.emf.edapt.releng</relativePath>  
   </parent>
   <groupId>org.eclipse.emf.edapt.releng.p2</groupId>
diff --git a/builds/org.eclipse.emf.edapt.releng.target/.project b/builds/org.eclipse.emf.edapt.releng.target/.project
index f5d4440..69f0c89 100644
--- a/builds/org.eclipse.emf.edapt.releng.target/.project
+++ b/builds/org.eclipse.emf.edapt.releng.target/.project
@@ -6,6 +6,11 @@
 	</projects>
 	<buildSpec>
 		<buildCommand>
+			<name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
 			<name>org.eclipse.jdt.core.javabuilder</name>
 			<arguments>
 			</arguments>
@@ -19,5 +24,6 @@
 	<natures>
 		<nature>org.eclipse.jdt.core.javanature</nature>
 		<nature>org.eclipse.m2e.core.maven2Nature</nature>
+		<nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
 	</natures>
 </projectDescription>
diff --git a/builds/org.eclipse.emf.edapt.releng.target/edapt.target b/builds/org.eclipse.emf.edapt.releng.target/edapt.target
index a7d26c6..f07e64f 100644
--- a/builds/org.eclipse.emf.edapt.releng.target/edapt.target
+++ b/builds/org.eclipse.emf.edapt.releng.target/edapt.target
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
 <?pde?>
-<!-- generated with https://github.com/mbarbero/fr.obeo.releng.targetplatform -->
-<target name="Edapt Target" sequenceNumber="1502350970">
+<!-- generated with https://github.com/eclipse-cbi/targetplatform-dsl -->
+<target name="Edapt Target" sequenceNumber="1564387580">
   <locations>
     <location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="false" type="InstallableUnit">
       <unit id="org.eclipse.emf.compare.ide.ui.source.feature.group" version="2.1.2.201310031412"/>
@@ -26,10 +26,10 @@
       <repository location="http://download.eclipse.org/eclipse/updates/4.3"/>
     </location>
     <location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="false" type="InstallableUnit">
-      <unit id="org.eclipse.ocl.master.feature.group" version="4.0.1.v20120919-0602"/>
-      <unit id="org.eclipse.ocl.all.sdk.feature.group" version="4.0.1.v20120919-0602"/>
-      <unit id="org.eclipse.ocl.examples.feature.group" version="3.2.1.v20120919-0602"/>
-      <repository location="http://download.eclipse.org/modeling/mdt/ocl/updates/releases/4.0.1"/>
+      <unit id="org.eclipse.ocl.master.feature.group" version="6.3.0.v20170613-1432"/>
+      <unit id="org.eclipse.ocl.all.sdk.feature.group" version="5.3.0.v20170607-1133"/>
+      <unit id="org.eclipse.ocl.examples.feature.group" version="6.3.0.v20170613-1432"/>
+      <repository location="http://download.eclipse.org/modeling/mdt/ocl/updates/releases/6.3.0"/>
     </location>
     <location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="false" type="InstallableUnit">
       <unit id="org.eclipse.emf.ecore.xcore.ui.feature.group" version="1.3.0.v20150602-0808"/>
@@ -93,6 +93,7 @@
     </location>
     <location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="false" type="InstallableUnit">
       <unit id="org.junit" version="4.11.0.v201303080030"/>
+      <unit id="org.objenesis" version="1.0.0.v201105211943"/>
       <repository location="http://download.eclipse.org/tools/orbit/downloads/drops/R20130827064939/repository/"/>
     </location>
     <location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="false" type="InstallableUnit">
diff --git a/builds/org.eclipse.emf.edapt.releng.target/edapt.tpd b/builds/org.eclipse.emf.edapt.releng.target/edapt.tpd
index 2c5877a..70d13ab 100644
--- a/builds/org.eclipse.emf.edapt.releng.target/edapt.tpd
+++ b/builds/org.eclipse.emf.edapt.releng.target/edapt.tpd
@@ -24,7 +24,7 @@
 org.eclipse.rcp.feature.group
 }
 
-location "http://download.eclipse.org/modeling/mdt/ocl/updates/releases/4.0.1" {
+location "http://download.eclipse.org/modeling/mdt/ocl/updates/releases/6.3.0" {
 org.eclipse.ocl.master.feature.group
 org.eclipse.ocl.all.sdk.feature.group
 org.eclipse.ocl.examples.feature.group
@@ -92,6 +92,7 @@
 
 location "http://download.eclipse.org/tools/orbit/downloads/drops/R20130827064939/repository/" {
 org.junit
+org.objenesis
 }
 
 location "http://build.eclipse.org/rt/rap/base-platforms/3.1/extra-dependencies/" {
diff --git a/builds/org.eclipse.emf.edapt.releng.target/edapt_oxygen.target b/builds/org.eclipse.emf.edapt.releng.target/edapt_2018-12.target
similarity index 80%
rename from builds/org.eclipse.emf.edapt.releng.target/edapt_oxygen.target
rename to builds/org.eclipse.emf.edapt.releng.target/edapt_2018-12.target
index 49ce883..948f945 100644
--- a/builds/org.eclipse.emf.edapt.releng.target/edapt_oxygen.target
+++ b/builds/org.eclipse.emf.edapt.releng.target/edapt_2018-12.target
@@ -1,33 +1,30 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<?pde?>
-<!-- generated with https://github.com/mbarbero/fr.obeo.releng.targetplatform -->
-<target name="Edapt Oxygen Target" sequenceNumber="1502350974">
+<?xml version="1.0" encoding="UTF-8" standalone="no"?><?pde?><!-- generated with https://github.com/eclipse-cbi/targetplatform-dsl --><target name="Edapt Oxygen Target" sequenceNumber="1547220322">
   <locations>
-    <location includeMode="slicer" includeAllPlatforms="false" includeSource="false" includeConfigurePhase="false" type="InstallableUnit">
+    <location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="slicer" includeSource="false" type="InstallableUnit">
       <unit id="org.eclipse.emf.compare.source.feature.group" version="2.1.2.201310031412"/>
       <unit id="org.eclipse.emf.compare.feature.group" version="2.1.2.201310031412"/>
       <unit id="org.eclipse.emf.compare.rcp.ui.source.feature.group" version="2.1.2.201310031412"/>
       <unit id="org.eclipse.emf.compare.rcp.ui.feature.group" version="2.1.2.201310031412"/>
       <repository location="http://download.eclipse.org/modeling/emf/compare/updates/releases/2.1"/>
     </location>
-    <location includeMode="slicer" includeAllPlatforms="false" includeSource="false" includeConfigurePhase="false" type="InstallableUnit">
-      <unit id="org.eclipse.rcp.source.feature.group" version="4.7.0.v20170612-1255"/>
-      <unit id="org.eclipse.pde.api.tools.ee.feature.feature.group" version="1.0.200.v20170515-0910"/>
-      <unit id="org.eclipse.releng.tools.feature.group" version="3.9.100.v20170516-0717"/>
-      <unit id="org.eclipse.equinox.sdk.feature.group" version="3.13.0.v20170531-1133"/>
-      <unit id="org.eclipse.sdk.ide" version="4.7.0.I20170612-0950"/>
-      <unit id="org.eclipse.platform.sdk" version="4.7.0.I20170612-0950"/>
-      <unit id="org.eclipse.test.feature.group" version="3.7.200.v20170511-1043"/>
-      <unit id="org.eclipse.sdk.tests.feature.group" version="4.7.0.v20170612-0950"/>
-      <unit id="org.eclipse.platform.ide" version="4.7.0.I20170612-0950"/>
-      <unit id="org.eclipse.rcp.feature.group" version="4.7.0.v20170612-1255"/>
-      <repository location="http://download.eclipse.org/eclipse/updates/4.7"/>
+    <location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="slicer" includeSource="false" type="InstallableUnit">
+      <unit id="org.eclipse.rcp.source.feature.group" version="4.10.0.v20181206-0815"/>
+      <unit id="org.eclipse.pde.api.tools.ee.feature.feature.group" version="1.0.400.v20180829-0709"/>
+      <unit id="org.eclipse.releng.tools.feature.group" version="3.10.200.v20181114-1053"/>
+      <unit id="org.eclipse.equinox.sdk.feature.group" version="3.16.0.v20181130-2106"/>
+      <unit id="org.eclipse.sdk.ide" version="4.10.0.I20181206-0815"/>
+      <unit id="org.eclipse.platform.sdk" version="4.10.0.I20181206-0815"/>
+      <unit id="org.eclipse.test.feature.group" version="3.7.500.v20181114-1814"/>
+      <unit id="org.eclipse.sdk.tests.feature.group" version="4.10.0.v20181206-1038"/>
+      <unit id="org.eclipse.platform.ide" version="4.10.0.I20181206-0815"/>
+      <unit id="org.eclipse.rcp.feature.group" version="4.10.0.v20181206-0815"/>
+      <repository location="http://download.eclipse.org/eclipse/updates/4.10"/>
     </location>
-    <location includeMode="slicer" includeAllPlatforms="false" includeSource="false" includeConfigurePhase="false" type="InstallableUnit">
+    <location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="slicer" includeSource="false" type="InstallableUnit">
       <unit id="org.eclipse.ocl.core.sdk.feature.group" version="4.0.1.v20120917-1739"/>
       <repository location="http://download.eclipse.org/modeling/mdt/ocl/updates/releases/4.0.1"/>
     </location>
-    <location includeMode="slicer" includeAllPlatforms="false" includeSource="false" includeConfigurePhase="false" type="InstallableUnit">
+    <location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="slicer" includeSource="false" type="InstallableUnit">
       <unit id="org.eclipse.emf.ecore.xcore.ui.feature.group" version="1.3.0.v20150602-0808"/>
       <unit id="org.eclipse.emf.databinding.feature.group" version="1.4.0.v20150601-0402"/>
       <unit id="org.eclipse.emf.codegen.ecore.feature.group" version="2.11.0.v20150601-0402"/>
@@ -78,7 +75,7 @@
       <unit id="org.eclipse.emf.sdk.feature.group" version="2.11.0.v20150601-0402"/>
       <repository location="http://download.eclipse.org/modeling/emf/emf/updates/releases/"/>
     </location>
-    <location includeMode="slicer" includeAllPlatforms="false" includeSource="false" includeConfigurePhase="false" type="InstallableUnit">
+    <location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="slicer" includeSource="false" type="InstallableUnit">
       <unit id="org.eclipse.acceleo.examples.feature.group" version="3.2.2.v20120807-0831"/>
       <unit id="org.eclipse.acceleo.runtime.feature.group" version="3.2.2.v20120807-0831"/>
       <unit id="org.eclipse.acceleo.ui.capabilities.feature.group" version="3.2.2.v20120807-0831"/>
@@ -87,13 +84,13 @@
       <unit id="org.eclipse.acceleo.sdk.feature.group" version="3.2.2.v20120807-0831"/>
       <repository location="http://download.eclipse.org/modeling/m2t/acceleo/updates/releases/3.2"/>
     </location>
-    <location includeMode="slicer" includeAllPlatforms="false" includeSource="false" includeConfigurePhase="false" type="InstallableUnit">
+    <location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="slicer" includeSource="false" type="InstallableUnit">
       <unit id="org.junit" version="4.11.0.v201303080030"/>
       <repository location="http://download.eclipse.org/tools/orbit/downloads/drops/R20130827064939/repository/"/>
     </location>
-    <location includeMode="slicer" includeAllPlatforms="false" includeSource="false" includeConfigurePhase="false" type="InstallableUnit">
+    <location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="slicer" includeSource="false" 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>
   </locations>
-</target>
+</target>
\ No newline at end of file
diff --git a/builds/org.eclipse.emf.edapt.releng.target/edapt_oxygen.tpd b/builds/org.eclipse.emf.edapt.releng.target/edapt_2018-12.tpd
similarity index 97%
rename from builds/org.eclipse.emf.edapt.releng.target/edapt_oxygen.tpd
rename to builds/org.eclipse.emf.edapt.releng.target/edapt_2018-12.tpd
index eb9620b..3ce5d2d 100644
--- a/builds/org.eclipse.emf.edapt.releng.target/edapt_oxygen.tpd
+++ b/builds/org.eclipse.emf.edapt.releng.target/edapt_2018-12.tpd
@@ -7,7 +7,7 @@
 org.eclipse.emf.compare.rcp.ui.feature.group
 }
 
-location "http://download.eclipse.org/eclipse/updates/4.7" {
+location "http://download.eclipse.org/eclipse/updates/4.10" {
 org.eclipse.rcp.source.feature.group
 org.eclipse.pde.api.tools.ee.feature.feature.group
 org.eclipse.releng.tools.feature.group
diff --git a/builds/org.eclipse.emf.edapt.releng.target/edapt_with_cdo.target b/builds/org.eclipse.emf.edapt.releng.target/edapt_with_cdo.target
index 4254e89..ec02d67 100644
--- a/builds/org.eclipse.emf.edapt.releng.target/edapt_with_cdo.target
+++ b/builds/org.eclipse.emf.edapt.releng.target/edapt_with_cdo.target
@@ -1,101 +1,106 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<?pde version="3.8"?><target name="Edapt build target" sequenceNumber="71">
-<locations>
-<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="slicer" includeSource="true" type="InstallableUnit">
-<unit id="org.eclipse.emf.compare.feature.group" version="2.1.0.201306250935"/>
-<unit id="org.eclipse.emf.compare.ide.ui.feature.group" version="2.1.0.201306250935"/>
-<unit id="org.eclipse.emf.compare.ide.ui.source.feature.group" version="2.1.0.201306250935"/>
-<unit id="org.eclipse.emf.compare.rcp.ui.feature.group" version="2.1.0.201306250935"/>
-<unit id="org.eclipse.emf.compare.rcp.ui.source.feature.group" version="2.1.0.201306250935"/>
-<unit id="org.eclipse.emf.compare.source.feature.group" version="2.1.0.201306250935"/>
-<repository location="http://download.eclipse.org/modeling/emf/compare/updates/releases/2.1"/>
-</location>
-<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="slicer" includeSource="true" type="InstallableUnit">
-<unit id="org.eclipse.equinox.sdk.feature.group" version="3.9.0.v20130604-2047"/>
-<unit id="org.eclipse.pde.api.tools.ee.feature.feature.group" version="1.0.0.v20130327-1631"/>
-<unit id="org.eclipse.platform.ide" version="4.3.0.I20130605-2000"/>
-<unit id="org.eclipse.platform.sdk" version="4.3.0.I20130605-2000"/>
-<unit id="org.eclipse.rcp.feature.group" version="4.3.0.v20130605-2000"/>
-<unit id="org.eclipse.rcp.source.feature.group" version="4.3.0.v20130605-2000"/>
-<unit id="org.eclipse.releng.tools.feature.group" version="3.5.0.v20130523-0845"/>
-<unit id="org.eclipse.sdk.ide" version="4.3.0.I20130605-2000"/>
-<unit id="org.eclipse.sdk.tests.feature.group" version="4.3.0.v20130606-0135"/>
-<unit id="org.eclipse.test.feature.group" version="3.6.0.v20130424-0442"/>
-<repository location="http://download.eclipse.org/eclipse/updates/4.3"/>
-</location>
-<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="slicer" includeSource="true" type="InstallableUnit">
-<unit id="org.eclipse.ocl.all.sdk.feature.group" version="4.0.1.v20120919-0602"/>
-<unit id="org.eclipse.ocl.examples.feature.group" version="3.2.1.v20120919-0602"/>
-<unit id="org.eclipse.ocl.master.feature.group" version="4.0.1.v20120919-0602"/>
-<repository location="http://download.eclipse.org/modeling/mdt/ocl/updates/releases/4.0.1"/>
-</location>
-<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="slicer" includeSource="true" type="InstallableUnit">
-<unit id="org.eclipse.emf.all.feature.group" version="2.9.1.v20130902-0605"/>
-<unit id="org.eclipse.emf.codegen.ecore.feature.group" version="2.9.1.v20130902-0605"/>
-<unit id="org.eclipse.emf.codegen.ecore.ui.feature.group" version="2.9.1.v20130902-0605"/>
-<unit id="org.eclipse.emf.codegen.feature.group" version="2.9.0.v20130902-0605"/>
-<unit id="org.eclipse.emf.codegen.ui.feature.group" version="2.7.0.v20130902-0605"/>
-<unit id="org.eclipse.emf.common.feature.group" version="2.9.1.v20130827-0309"/>
-<unit id="org.eclipse.emf.common.ui.feature.group" version="2.8.0.v20130902-0605"/>
-<unit id="org.eclipse.emf.converter.feature.group" version="2.9.0.v20130902-0605"/>
-<unit id="org.eclipse.emf.databinding.edit.feature.group" version="1.3.0.v20130902-0605"/>
-<unit id="org.eclipse.emf.databinding.feature.group" version="1.3.0.v20130902-0605"/>
-<unit id="org.eclipse.emf.doc.feature.group" version="2.8.0.v20130902-0605"/>
-<unit id="org.eclipse.emf.ecore.edit.feature.group" version="2.8.0.v20130902-0605"/>
-<unit id="org.eclipse.emf.ecore.editor.feature.group" version="2.9.0.v20130902-0605"/>
-<unit id="org.eclipse.emf.ecore.feature.group" version="2.9.1.v20130827-0309"/>
-<unit id="org.eclipse.emf.ecore.xcore.feature.group" version="1.1.1.v20130903-0948"/>
-<unit id="org.eclipse.emf.ecore.xcore.sdk.feature.group" version="1.1.1.v20130903-0948"/>
-<unit id="org.eclipse.emf.ecore.xcore.ui.feature.group" version="1.1.0.v20130903-0948"/>
-<unit id="org.eclipse.emf.edit.feature.group" version="2.9.0.v20130902-0605"/>
-<unit id="org.eclipse.emf.edit.ui.feature.group" version="2.9.0.v20130902-0605"/>
-<unit id="org.eclipse.emf.examples.feature.group" version="2.9.0.v20130902-0605"/>
-<unit id="org.eclipse.emf.feature.group" version="2.9.1.v20130902-0605"/>
-<unit id="org.eclipse.emf.gwt.common.feature.group" version="2.9.0.v20130902-0605"/>
-<unit id="org.eclipse.emf.gwt.ecore.edit.feature.group" version="2.8.0.v20130902-0605"/>
-<unit id="org.eclipse.emf.gwt.ecore.feature.group" version="2.9.0.v20130902-0605"/>
-<unit id="org.eclipse.emf.gwt.edit.feature.group" version="2.8.0.v20130902-0605"/>
-<unit id="org.eclipse.emf.gwt.edit.ui.feature.group" version="2.7.0.v20130902-0605"/>
-<unit id="org.eclipse.emf.gwt.feature.group" version="2.9.0.v20130902-0605"/>
-<unit id="org.eclipse.emf.gwt.sdk.feature.group" version="2.9.0.v20130902-0605"/>
-<unit id="org.eclipse.emf.mapping.ecore.editor.feature.group" version="2.8.0.v20130902-0605"/>
-<unit id="org.eclipse.emf.mapping.ecore.feature.group" version="2.7.0.v20130902-0605"/>
-<unit id="org.eclipse.emf.mapping.feature.group" version="2.7.0.v20130902-0605"/>
-<unit id="org.eclipse.emf.mapping.ui.feature.group" version="2.7.0.v20130902-0605"/>
-<unit id="org.eclipse.emf.oda.ecore.feature.group" version="1.2.0.v20130902-0605"/>
-<unit id="org.eclipse.emf.oda.ecore.ui.feature.group" version="1.1.0.v20130902-0605"/>
-<unit id="org.eclipse.emf.oda.feature.group" version="1.2.0.v20130902-0605"/>
-<unit id="org.eclipse.emf.oda.sdk.feature.group" version="1.2.0.v20130902-0605"/>
-<unit id="org.eclipse.emf.rap.common.ui.feature.group" version="2.8.0.v20130902-0605"/>
-<unit id="org.eclipse.emf.rap.edit.ui.feature.group" version="2.9.0.v20130902-0605"/>
-<unit id="org.eclipse.emf.rap.feature.group" version="2.9.0.v20130902-0605"/>
-<unit id="org.eclipse.emf.rap.sdk.feature.group" version="2.9.0.v20130902-0605"/>
-<unit id="org.eclipse.emf.sdk.feature.group" version="2.9.1.v20130902-0605"/>
-<unit id="org.eclipse.xsd.doc.feature.group" version="2.8.0.v20130902-0605"/>
-<unit id="org.eclipse.xsd.ecore.converter.feature.group" version="2.8.0.v20130902-0605"/>
-<unit id="org.eclipse.xsd.edit.feature.group" version="2.7.0.v20130902-0605"/>
-<unit id="org.eclipse.xsd.editor.feature.group" version="2.7.0.v20130902-0605"/>
-<unit id="org.eclipse.xsd.feature.group" version="2.9.1.v20130902-0605"/>
-<unit id="org.eclipse.xsd.mapping.editor.feature.group" version="2.8.0.v20130902-0605"/>
-<unit id="org.eclipse.xsd.mapping.feature.group" version="2.7.0.v20130902-0605"/>
-<unit id="org.eclipse.xsd.sdk.feature.group" version="2.9.1.v20130902-0605"/>
-<repository location="http://download.eclipse.org/modeling/emf/emf/updates/releases/"/>
-</location>
-<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="slicer" includeSource="true" type="InstallableUnit">
-<unit id="org.eclipse.acceleo.doc.feature.group" version="3.2.2.v20120807-0831"/>
-<unit id="org.eclipse.acceleo.examples.feature.group" version="3.2.2.v20120807-0831"/>
-<unit id="org.eclipse.acceleo.feature.group" version="3.2.2.v20120807-0831"/>
-<unit id="org.eclipse.acceleo.runtime.feature.group" version="3.2.2.v20120807-0831"/>
-<unit id="org.eclipse.acceleo.sdk.feature.group" version="3.2.2.v20120807-0831"/>
-<unit id="org.eclipse.acceleo.ui.capabilities.feature.group" version="3.2.2.v20120807-0831"/>
-<repository location="http://download.eclipse.org/acceleo/updates/releases/3.2"/>
-</location>
-<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="slicer" includeSource="true" type="InstallableUnit">
-<unit id="org.junit" version="4.11.0.v201303080030"/>
-<unit id="org.objenesis" version="0.0.0"/>
-<repository location="http://download.eclipse.org/tools/orbit/downloads/drops/R20130827064939/repository/"/>
-</location>
-<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="slicer" includeSource="true" type="InstallableUnit">
+<?pde?>
+<!-- generated with https://github.com/eclipse-cbi/targetplatform-dsl -->
+<target name="Edapt Target" sequenceNumber="1564387581">
+  <locations>
+    <location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="false" type="InstallableUnit">
+      <unit id="org.eclipse.emf.compare.ide.ui.source.feature.group" version="2.1.2.201310031412"/>
+      <unit id="org.eclipse.emf.compare.ide.ui.feature.group" version="2.1.2.201310031412"/>
+      <unit id="org.eclipse.emf.compare.source.feature.group" version="2.1.2.201310031412"/>
+      <unit id="org.eclipse.emf.compare.feature.group" version="2.1.2.201310031412"/>
+      <unit id="org.eclipse.emf.compare.rcp.ui.source.feature.group" version="2.1.2.201310031412"/>
+      <unit id="org.eclipse.emf.compare.rcp.ui.feature.group" version="2.1.2.201310031412"/>
+      <repository location="http://download.eclipse.org/modeling/emf/compare/updates/releases/2.1"/>
+    </location>
+    <location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="false" type="InstallableUnit">
+      <unit id="org.eclipse.rcp.source.feature.group" version="4.3.2.v20140221-1700"/>
+      <unit id="org.eclipse.pde.api.tools.ee.feature.feature.group" version="1.0.0.v20130327-1631"/>
+      <unit id="org.eclipse.releng.tools.feature.group" version="3.5.0.v20140203-1326"/>
+      <unit id="org.eclipse.equinox.sdk.feature.group" version="3.9.0.v20140221-1852"/>
+      <unit id="org.eclipse.sdk.ide" version="4.3.2.M20140221-1700"/>
+      <unit id="org.eclipse.platform.sdk" version="4.3.2.M20140221-1700"/>
+      <unit id="org.eclipse.test.feature.group" version="3.6.0.v20140203-1326"/>
+      <unit id="org.eclipse.sdk.tests.feature.group" version="4.3.0.v20140221-2329"/>
+      <unit id="org.eclipse.platform.ide" version="4.3.2.M20140221-1700"/>
+      <unit id="org.eclipse.rcp.feature.group" version="4.3.2.v20140221-1700"/>
+      <repository location="http://download.eclipse.org/eclipse/updates/4.3"/>
+    </location>
+    <location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="false" type="InstallableUnit">
+      <unit id="org.eclipse.ocl.master.feature.group" version="6.3.0.v20170613-1432"/>
+      <unit id="org.eclipse.ocl.all.sdk.feature.group" version="5.3.0.v20170607-1133"/>
+      <unit id="org.eclipse.ocl.examples.feature.group" version="6.3.0.v20170613-1432"/>
+      <repository location="http://download.eclipse.org/modeling/mdt/ocl/updates/releases/6.3.0"/>
+    </location>
+    <location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="false" type="InstallableUnit">
+      <unit id="org.eclipse.emf.ecore.xcore.ui.feature.group" version="1.3.0.v20150602-0808"/>
+      <unit id="org.eclipse.emf.databinding.feature.group" version="1.4.0.v20150601-0402"/>
+      <unit id="org.eclipse.emf.codegen.ecore.feature.group" version="2.11.0.v20150601-0402"/>
+      <unit id="org.eclipse.emf.edit.ui.feature.group" version="2.11.0.v20150601-0402"/>
+      <unit id="org.eclipse.emf.mapping.ecore.editor.feature.group" version="2.10.0.v20150601-0402"/>
+      <unit id="org.eclipse.emf.gwt.feature.group" version="2.9.0.v20150601-0402"/>
+      <unit id="org.eclipse.emf.mapping.ecore.feature.group" version="2.9.0.v20150601-0402"/>
+      <unit id="org.eclipse.emf.rap.edit.ui.feature.group" version="2.9.0.v20150601-0402"/>
+      <unit id="org.eclipse.emf.oda.ecore.feature.group" version="1.3.0.v20150601-0402"/>
+      <unit id="org.eclipse.emf.codegen.ecore.ui.feature.group" version="2.11.0.v20150601-0402"/>
+      <unit id="org.eclipse.xsd.sdk.feature.group" version="2.11.0.v20150601-0402"/>
+      <unit id="org.eclipse.emf.common.feature.group" version="2.11.0.v20150512-0501"/>
+      <unit id="org.eclipse.emf.ecore.edit.feature.group" version="2.9.0.v20150601-0402"/>
+      <unit id="org.eclipse.xsd.feature.group" version="2.11.0.v20150601-0402"/>
+      <unit id="org.eclipse.emf.ecore.xcore.feature.group" version="1.3.0.v20150602-0808"/>
+      <unit id="org.eclipse.emf.codegen.feature.group" version="2.11.0.v20150601-0402"/>
+      <unit id="org.eclipse.emf.edit.feature.group" version="2.11.0.v20150601-0402"/>
+      <unit id="org.eclipse.emf.ecore.xcore.sdk.feature.group" version="1.3.0.v20150602-0808"/>
+      <unit id="org.eclipse.xsd.edit.feature.group" version="2.9.0.v20150601-0402"/>
+      <unit id="org.eclipse.emf.all.feature.group" version="2.11.0.v20150601-0402"/>
+      <unit id="org.eclipse.emf.oda.ecore.ui.feature.group" version="1.3.0.v20150601-0402"/>
+      <unit id="org.eclipse.emf.rap.feature.group" version="2.11.0.v20150601-0402"/>
+      <unit id="org.eclipse.emf.ecore.editor.feature.group" version="2.11.0.v20150601-0402"/>
+      <unit id="org.eclipse.emf.codegen.ui.feature.group" version="2.8.0.v20150601-0402"/>
+      <unit id="org.eclipse.xsd.mapping.editor.feature.group" version="2.9.0.v20150601-0402"/>
+      <unit id="org.eclipse.emf.mapping.feature.group" version="2.9.0.v20150601-0402"/>
+      <unit id="org.eclipse.xsd.doc.feature.group" version="2.9.0.v20150601-0402"/>
+      <unit id="org.eclipse.emf.feature.group" version="2.11.0.v20150601-0402"/>
+      <unit id="org.eclipse.emf.doc.feature.group" version="2.10.0.v20150601-0402"/>
+      <unit id="org.eclipse.emf.examples.feature.group" version="2.11.0.v20150601-0402"/>
+      <unit id="org.eclipse.emf.oda.sdk.feature.group" version="1.4.0.v20150601-0402"/>
+      <unit id="org.eclipse.emf.gwt.common.feature.group" version="2.9.0.v20150601-0402"/>
+      <unit id="org.eclipse.emf.rap.common.ui.feature.group" version="2.9.0.v20150601-0402"/>
+      <unit id="org.eclipse.xsd.editor.feature.group" version="2.9.0.v20150601-0402"/>
+      <unit id="org.eclipse.emf.oda.feature.group" version="1.3.0.v20150601-0402"/>
+      <unit id="org.eclipse.emf.gwt.edit.ui.feature.group" version="2.7.0.v20150601-0402"/>
+      <unit id="org.eclipse.emf.common.ui.feature.group" version="2.10.0.v20150601-0402"/>
+      <unit id="org.eclipse.emf.rap.sdk.feature.group" version="2.11.0.v20150601-0402"/>
+      <unit id="org.eclipse.emf.ecore.feature.group" version="2.11.0.v20150512-0501"/>
+      <unit id="org.eclipse.emf.mapping.ui.feature.group" version="2.9.0.v20150601-0402"/>
+      <unit id="org.eclipse.xsd.mapping.feature.group" version="2.9.0.v20150601-0402"/>
+      <unit id="org.eclipse.emf.converter.feature.group" version="2.11.0.v20150601-0402"/>
+      <unit id="org.eclipse.xsd.ecore.converter.feature.group" version="2.9.0.v20150601-0402"/>
+      <unit id="org.eclipse.emf.databinding.edit.feature.group" version="1.4.0.v20150601-0402"/>
+      <unit id="org.eclipse.emf.gwt.ecore.feature.group" version="2.9.0.v20150601-0402"/>
+      <unit id="org.eclipse.emf.gwt.edit.feature.group" version="2.8.0.v20150601-0402"/>
+      <unit id="org.eclipse.emf.gwt.ecore.edit.feature.group" version="2.8.0.v20150601-0402"/>
+      <unit id="org.eclipse.emf.sdk.feature.group" version="2.11.0.v20150601-0402"/>
+      <repository location="http://download.eclipse.org/modeling/emf/emf/updates/releases/"/>
+    </location>
+    <location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="false" type="InstallableUnit">
+      <unit id="org.eclipse.acceleo.examples.feature.group" version="3.2.2.v20120807-0831"/>
+      <unit id="org.eclipse.acceleo.runtime.feature.group" version="3.2.2.v20120807-0831"/>
+      <unit id="org.eclipse.acceleo.ui.capabilities.feature.group" version="3.2.2.v20120807-0831"/>
+      <unit id="org.eclipse.acceleo.doc.feature.group" version="3.2.2.v20120807-0831"/>
+      <unit id="org.eclipse.acceleo.feature.group" version="3.2.2.v20120807-0831"/>
+      <unit id="org.eclipse.acceleo.sdk.feature.group" version="3.2.2.v20120807-0831"/>
+      <repository location="http://download.eclipse.org/modeling/m2t/acceleo/updates/releases/3.2"/>
+    </location>
+    <location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="false" type="InstallableUnit">
+      <unit id="org.junit" version="4.11.0.v201303080030"/>
+      <unit id="org.objenesis" version="1.0.0.v201105211943"/>
+      <repository location="http://download.eclipse.org/tools/orbit/downloads/drops/R20130827064939/repository/"/>
+    </location>
+    <location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="false" 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="false" includeMode="slicer" includeSource="true" type="InstallableUnit">
 <unit id="org.eclipse.emf.cdo.compare.feature.group" version="4.2.0.v20130612-0849"/>
 <unit id="org.eclipse.emf.cdo.defs.feature.group" version="4.2.1.v20130913-0613"/>
 <unit id="org.eclipse.emf.cdo.doc.feature.group" version="4.2.0.v20130612-0849"/>
@@ -151,9 +156,5 @@
 <unit id="org.gastro.feature.group" version="4.2.0.v20130503-1908"/>
 <repository location="http://download.eclipse.org/modeling/emf/cdo/updates/releases/4.2"/>
 </location>
-<location includeAllPlatforms="false" includeConfigurePhase="false" 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>
-</locations>
+  </locations>
 </target>
diff --git a/builds/org.eclipse.emf.edapt.releng.target/pom.xml b/builds/org.eclipse.emf.edapt.releng.target/pom.xml
index 5e904eb..a55a906 100644
--- a/builds/org.eclipse.emf.edapt.releng.target/pom.xml
+++ b/builds/org.eclipse.emf.edapt.releng.target/pom.xml
@@ -5,7 +5,7 @@
   <parent>
     <groupId>edapt</groupId>
     <artifactId>root</artifactId>
-    <version>1.3.1-SNAPSHOT</version>
+    <version>1.4.0-SNAPSHOT</version>
      <relativePath>../org.eclipse.emf.edapt.releng</relativePath>  
   </parent>
   <packaging>eclipse-target-definition</packaging>
diff --git a/builds/org.eclipse.emf.edapt.releng/pom.xml b/builds/org.eclipse.emf.edapt.releng/pom.xml
index fbcada1..962e287 100644
--- a/builds/org.eclipse.emf.edapt.releng/pom.xml
+++ b/builds/org.eclipse.emf.edapt.releng/pom.xml
@@ -5,16 +5,16 @@
 	<modelVersion>4.0.0</modelVersion>
 	<groupId>edapt</groupId>
 	<artifactId>root</artifactId>
-	<version>1.3.1-SNAPSHOT</version>
+	<version>1.4.0-SNAPSHOT</version>
 	<packaging>pom</packaging>
 
 	<properties>
-		<tycho-version>1.0.0</tycho-version>
+		<tycho-version>1.4.0</tycho-version>
 		<eclipse-jarsigner-version>1.1.4</eclipse-jarsigner-version>
 		<maven-surefire-version>2.18.1</maven-surefire-version>
 		<junit-version>4.12</junit-version>
 		<javadoc-version>2.10.3</javadoc-version>
-		<javadoc-title>Edapt 1.3.1 API</javadoc-title>
+		<javadoc-title>Edapt 1.4.0 API</javadoc-title>
 	</properties>
 
 	<profiles>
diff --git a/features/org.eclipse.emf.edapt.recorder.feature/feature.xml b/features/org.eclipse.emf.edapt.recorder.feature/feature.xml
index 2dc003a..ce0ddb3 100644
--- a/features/org.eclipse.emf.edapt.recorder.feature/feature.xml
+++ b/features/org.eclipse.emf.edapt.recorder.feature/feature.xml
@@ -2,7 +2,7 @@
 <feature
       id="org.eclipse.emf.edapt.recorder.feature"
       label="Edapt Recorder Feature"
-      version="1.3.1.qualifier"
+      version="1.4.0.qualifier"
       provider-name="Eclipse Modeling Project">
 
    <description url="http://www.eclipse.org/edapt">
diff --git a/features/org.eclipse.emf.edapt.recorder.feature/pom.xml b/features/org.eclipse.emf.edapt.recorder.feature/pom.xml
index 8a25b60..a2ce1c0 100644
--- a/features/org.eclipse.emf.edapt.recorder.feature/pom.xml
+++ b/features/org.eclipse.emf.edapt.recorder.feature/pom.xml
@@ -6,7 +6,7 @@
 	<parent>
 		<groupId>edapt</groupId>
 		<artifactId>features</artifactId>
-		<version>1.3.1-SNAPSHOT</version>
+		<version>1.4.0-SNAPSHOT</version>
 	</parent>
 	<groupId>edapt</groupId>
 	<artifactId>org.eclipse.emf.edapt.recorder.feature</artifactId>
diff --git a/features/org.eclipse.emf.edapt.runtime.cdo.feature/feature.xml b/features/org.eclipse.emf.edapt.runtime.cdo.feature/feature.xml
index 09905e0..57c48ca 100644
--- a/features/org.eclipse.emf.edapt.runtime.cdo.feature/feature.xml
+++ b/features/org.eclipse.emf.edapt.runtime.cdo.feature/feature.xml
@@ -2,7 +2,7 @@
 <feature
       id="org.eclipse.emf.edapt.runtime.cdo.feature"
       label="Edapt CDO Feature"
-      version="1.3.1.qualifier"
+      version="1.4.0.qualifier"
       provider-name="Eclipse Modeling Project">
 
    <description url="http://www.eclipse.org/edapt">
diff --git a/features/org.eclipse.emf.edapt.runtime.cdo.feature/pom.xml b/features/org.eclipse.emf.edapt.runtime.cdo.feature/pom.xml
index e42ea98..a31bb61 100644
--- a/features/org.eclipse.emf.edapt.runtime.cdo.feature/pom.xml
+++ b/features/org.eclipse.emf.edapt.runtime.cdo.feature/pom.xml
@@ -4,7 +4,7 @@
 	<parent>
 		<groupId>edapt</groupId>
 		<artifactId>features</artifactId>
-		<version>1.3.1-SNAPSHOT</version>
+		<version>1.4.0-SNAPSHOT</version>
 	</parent>
 	<groupId>edapt</groupId>
 	<artifactId>org.eclipse.emf.edapt.runtime.cdo.feature</artifactId>
diff --git a/features/org.eclipse.emf.edapt.runtime.feature/feature.xml b/features/org.eclipse.emf.edapt.runtime.feature/feature.xml
index 15d8647..9095e42 100644
--- a/features/org.eclipse.emf.edapt.runtime.feature/feature.xml
+++ b/features/org.eclipse.emf.edapt.runtime.feature/feature.xml
@@ -2,7 +2,7 @@
 <feature

       id="org.eclipse.emf.edapt.runtime.feature"

       label="Edapt Runtime Feature"

-      version="1.3.1.qualifier"

+      version="1.4.0.qualifier"

       provider-name="Eclipse Modeling Project">

 

    <description url="http://www.eclipse.org/edapt">

diff --git a/features/org.eclipse.emf.edapt.runtime.feature/pom.xml b/features/org.eclipse.emf.edapt.runtime.feature/pom.xml
index d5624fc..c3e766d 100644
--- a/features/org.eclipse.emf.edapt.runtime.feature/pom.xml
+++ b/features/org.eclipse.emf.edapt.runtime.feature/pom.xml
@@ -6,7 +6,7 @@
 	<parent>
 		<groupId>edapt</groupId>
 		<artifactId>features</artifactId>
-		<version>1.3.1-SNAPSHOT</version>
+		<version>1.4.0-SNAPSHOT</version>
 	</parent>
 	<groupId>edapt</groupId>
 	<artifactId>org.eclipse.emf.edapt.runtime.feature</artifactId>
diff --git a/features/pom.xml b/features/pom.xml
index 76e9fb6..911a648 100644
--- a/features/pom.xml
+++ b/features/pom.xml
@@ -9,7 +9,7 @@
 	<parent>
 		<groupId>edapt</groupId>
 		<artifactId>root</artifactId>
-		<version>1.3.1-SNAPSHOT</version>
+		<version>1.4.0-SNAPSHOT</version>
 		<relativePath>../builds/org.eclipse.emf.edapt.releng</relativePath>  
 	</parent>
 
diff --git a/plugins/org.eclipse.emf.edapt.common.ui/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.edapt.common.ui/META-INF/MANIFEST.MF
index 7631940..afe3139 100644
--- a/plugins/org.eclipse.emf.edapt.common.ui/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.emf.edapt.common.ui/META-INF/MANIFEST.MF
@@ -2,15 +2,15 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.emf.edapt.common.ui
-Bundle-Version: 1.3.1.qualifier
+Bundle-Version: 1.4.0.qualifier
 Bundle-Activator: org.eclipse.emf.edapt.common.ui.CommonUIActivator
 Require-Bundle: org.eclipse.ui;bundle-version="[3.7.0,4.0.0)",
  org.eclipse.core.runtime;bundle-version="[3.7.0,4.0.0)",
  org.eclipse.emf.ecore.editor;bundle-version="2.7.0";visibility:=reexport,
- org.eclipse.emf.edapt.common;bundle-version="[1.3.1,2.0.0)";visibility:=reexport
+ org.eclipse.emf.edapt.common;bundle-version="[1.4.0,2.0.0)";visibility:=reexport
 Bundle-ActivationPolicy: lazy
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
-Export-Package: org.eclipse.emf.edapt.common.ui;version="1.3.1";x-friends:="org.eclipse.emf.edapt.history.editor,org.eclipse.emf.edapt.migration.ui"
+Export-Package: org.eclipse.emf.edapt.common.ui;version="1.4.0";x-friends:="org.eclipse.emf.edapt.history.editor,org.eclipse.emf.edapt.migration.ui"
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
 Automatic-Module-Name: org.eclipse.emf.edapt.common.ui
diff --git a/plugins/org.eclipse.emf.edapt.common.ui/pom.xml b/plugins/org.eclipse.emf.edapt.common.ui/pom.xml
index 866be31..e2d1827 100644
--- a/plugins/org.eclipse.emf.edapt.common.ui/pom.xml
+++ b/plugins/org.eclipse.emf.edapt.common.ui/pom.xml
@@ -5,7 +5,7 @@
   <parent>
     <groupId>edapt</groupId>
     <artifactId>plugins</artifactId>
-    <version>1.3.1-SNAPSHOT</version>
+    <version>1.4.0-SNAPSHOT</version>
   </parent>
   <groupId>edapt</groupId>
   <artifactId>org.eclipse.emf.edapt.common.ui</artifactId>
diff --git a/plugins/org.eclipse.emf.edapt.common/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.edapt.common/META-INF/MANIFEST.MF
index b0d4360..4d6b83d 100644
--- a/plugins/org.eclipse.emf.edapt.common/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.emf.edapt.common/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.emf.edapt.common
-Bundle-Version: 1.3.1.qualifier
+Bundle-Version: 1.4.0.qualifier
 Bundle-Activator: org.eclipse.emf.edapt.internal.common.CommonActivator
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.7.0,4.0.0)";visibility:=reexport,
  org.eclipse.core.resources;bundle-version="[3.7.0,4.0.0)";visibility:=reexport,
@@ -10,8 +10,8 @@
  org.eclipse.emf.ecore;bundle-version="[2.7.0,3.0.0)",
  org.eclipse.emf.ecore.xmi;bundle-version="[2.7.0,3.0.0)";visibility:=reexport
 Bundle-ActivationPolicy: lazy
-Export-Package: org.eclipse.emf.edapt.common;version="1.3.1",
- org.eclipse.emf.edapt.internal.common;version="1.3.1";
+Export-Package: org.eclipse.emf.edapt.common;version="1.4.0",
+ org.eclipse.emf.edapt.internal.common;version="1.4.0";
   x-friends:="org.eclipse.emf.edapt.common.ui,
    org.eclipse.emf.edapt.declaration,
    org.eclipse.emf.edapt.history,
diff --git a/plugins/org.eclipse.emf.edapt.common/pom.xml b/plugins/org.eclipse.emf.edapt.common/pom.xml
index abb19dd..8a87ade 100644
--- a/plugins/org.eclipse.emf.edapt.common/pom.xml
+++ b/plugins/org.eclipse.emf.edapt.common/pom.xml
@@ -6,7 +6,7 @@
 	<parent>
 		<groupId>edapt</groupId>
 		<artifactId>plugins</artifactId>
-		<version>1.3.1-SNAPSHOT</version>
+		<version>1.4.0-SNAPSHOT</version>
 	</parent>
 	<groupId>edapt</groupId>
 	<artifactId>org.eclipse.emf.edapt.common</artifactId>
diff --git a/plugins/org.eclipse.emf.edapt.common/src/org/eclipse/emf/edapt/internal/common/URIUtils.java b/plugins/org.eclipse.emf.edapt.common/src/org/eclipse/emf/edapt/internal/common/URIUtils.java
index 9a2472c..0924764 100644
--- a/plugins/org.eclipse.emf.edapt.common/src/org/eclipse/emf/edapt/internal/common/URIUtils.java
+++ b/plugins/org.eclipse.emf.edapt.common/src/org/eclipse/emf/edapt/internal/common/URIUtils.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2007, 2010 BMW Car IT, Technische Universitaet Muenchen, and others.
+ * Copyright (c) 2007, 2019 BMW Car IT, Technische Universitaet Muenchen, 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
@@ -9,6 +9,7 @@
  * BMW Car IT - Initial API and implementation
  * Technische Universitaet Muenchen - Major refactoring and extension
  * Johannes Faltermeier - Extension
+ * Christian W. Damus - bug 544147
  *******************************************************************************/
 package org.eclipse.emf.edapt.internal.common;
 
@@ -16,9 +17,12 @@
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
+import java.math.BigInteger;
 import java.net.MalformedURLException;
 import java.net.URISyntaxException;
 import java.net.URL;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 
 import org.eclipse.core.resources.IFile;
 import org.eclipse.core.resources.IFolder;
@@ -44,6 +48,9 @@
  */
 public final class URIUtils {
 
+	// Pattern matching a version number embedded in an URI segment
+	private static final Pattern VERSION_NUMBER_PATTERN = Pattern.compile("(?<=\\bv?|[-_])\\d+\\b"); //$NON-NLS-1$
+
 	/**
 	 * Constructor
 	 */
@@ -223,4 +230,32 @@
 	public static URI getRelativePath(URI uri, URI relativeTo) {
 		return uri.deresolve(relativeTo, true, true, true);
 	}
+
+	/**
+	 * Increment the first part of a version number in a URI segment, as might
+	 * be in a package namespace URI, if it appears to contain a version number.
+	 *
+	 * @param segment an URI segment
+	 * @return the incremented {@code segment}, or just the {@code segment} as is
+	 *         if it does not appear to be or to contain a discrete a version number
+	 */
+	public static String incrementVersionSegment(String segment) {
+		String result = segment;
+
+		final Matcher m = VERSION_NUMBER_PATTERN.matcher(segment);
+		if (m.find()) {
+			final StringBuffer newSegment = new StringBuffer();
+
+			// Who knows how many digits there may be? Handle them all
+			final BigInteger version = new BigInteger(m.group());
+			final BigInteger newVersion = version.add(BigInteger.ONE);
+
+			m.appendReplacement(newSegment, newVersion.toString());
+			m.appendTail(newSegment);
+			result = newSegment.toString();
+		}
+
+		return result;
+	}
+
 }
diff --git a/plugins/org.eclipse.emf.edapt.declaration.edit/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.edapt.declaration.edit/META-INF/MANIFEST.MF
index 3ebc68a..9fd6b8d 100644
--- a/plugins/org.eclipse.emf.edapt.declaration.edit/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.emf.edapt.declaration.edit/META-INF/MANIFEST.MF
@@ -2,18 +2,18 @@
 Bundle-ManifestVersion: 2

 Bundle-Name: %pluginName

 Bundle-SymbolicName: org.eclipse.emf.edapt.declaration.edit;singleton:=true

-Bundle-Version: 1.3.1.qualifier

+Bundle-Version: 1.4.0.qualifier

 Bundle-ClassPath: .

 Bundle-Activator: org.eclipse.emf.edapt.declaration.provider.DeclarationEditPlugin$Implementation

 Bundle-Vendor: %providerName

 Bundle-Localization: plugin

 Bundle-RequiredExecutionEnvironment: JavaSE-1.6

-Export-Package: org.eclipse.emf.edapt.declaration.provider;version="1.3.1";

+Export-Package: org.eclipse.emf.edapt.declaration.provider;version="1.4.0";

   x-friends:="org.eclipse.emf.edapt.declaration.editor,

    org.eclipse.emf.edapt.history.edit,

    org.eclipse.emf.edapt.history.editor"

 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.7.0,4.0.0)",

- org.eclipse.emf.edapt.declaration;bundle-version="[1.3.1,2.0.0)";visibility:=reexport,

+ org.eclipse.emf.edapt.declaration;bundle-version="[1.4.0,2.0.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

diff --git a/plugins/org.eclipse.emf.edapt.declaration.edit/pom.xml b/plugins/org.eclipse.emf.edapt.declaration.edit/pom.xml
index 9b3cda5..3ce83a9 100644
--- a/plugins/org.eclipse.emf.edapt.declaration.edit/pom.xml
+++ b/plugins/org.eclipse.emf.edapt.declaration.edit/pom.xml
@@ -5,7 +5,7 @@
   <parent>
     <groupId>edapt</groupId>
     <artifactId>plugins</artifactId>
-    <version>1.3.1-SNAPSHOT</version>
+    <version>1.4.0-SNAPSHOT</version>
   </parent>
   <groupId>edapt</groupId>
   <artifactId>org.eclipse.emf.edapt.declaration.edit</artifactId>
diff --git a/plugins/org.eclipse.emf.edapt.declaration.editor/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.edapt.declaration.editor/META-INF/MANIFEST.MF
index 72e2a49..502d806 100644
--- a/plugins/org.eclipse.emf.edapt.declaration.editor/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.emf.edapt.declaration.editor/META-INF/MANIFEST.MF
@@ -2,13 +2,13 @@
 Bundle-ManifestVersion: 2

 Bundle-Name: %pluginName

 Bundle-SymbolicName: org.eclipse.emf.edapt.declaration.editor;singleton:=true

-Bundle-Version: 1.3.1.qualifier

+Bundle-Version: 1.4.0.qualifier

 Bundle-ClassPath: .

 Bundle-Activator: org.eclipse.emf.edapt.declaration.presentation.DeclarationEditorPlugin$Implementation

 Bundle-Vendor: %providerName

 Bundle-Localization: plugin

 Bundle-RequiredExecutionEnvironment: JavaSE-1.6

-Export-Package: org.eclipse.emf.edapt.declaration.presentation;version="1.3.1";x-internal:=true;

+Export-Package: org.eclipse.emf.edapt.declaration.presentation;version="1.4.0";x-internal:=true;

   uses:="org.eclipse.jface.wizard,

    org.eclipse.core.runtime,

    org.eclipse.emf.edit.ui.provider,

@@ -37,10 +37,10 @@
    org.eclipse.emf.common.ui"

 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)";visibility:=reexport,

- org.eclipse.emf.edapt.declaration.edit;bundle-version="[1.3.1,2.0.0)";visibility:=reexport,

+ org.eclipse.emf.edapt.declaration.edit;bundle-version="[1.4.0,2.0.0)";visibility:=reexport,

  org.eclipse.emf.edit.ui;bundle-version="[2.7.0,3.0.0)";visibility:=reexport,

  org.eclipse.ui.ide;bundle-version="[3.7.0,4.0.0)";visibility:=reexport,

  org.eclipse.emf.ecore.xmi;bundle-version="[2.7.0,3.0.0)",

- org.eclipse.emf.edapt.common.ui;bundle-version="[1.3.1,2.0.0)"

+ org.eclipse.emf.edapt.common.ui;bundle-version="[1.4.0,2.0.0)"

 Bundle-ActivationPolicy: lazy

 Automatic-Module-Name: org.eclipse.emf.edapt.declaration.editor

diff --git a/plugins/org.eclipse.emf.edapt.declaration.editor/pom.xml b/plugins/org.eclipse.emf.edapt.declaration.editor/pom.xml
index 3a60661..3049e04 100644
--- a/plugins/org.eclipse.emf.edapt.declaration.editor/pom.xml
+++ b/plugins/org.eclipse.emf.edapt.declaration.editor/pom.xml
@@ -5,7 +5,7 @@
   <parent>
     <groupId>edapt</groupId>
     <artifactId>plugins</artifactId>
-    <version>1.3.1-SNAPSHOT</version>
+    <version>1.4.0-SNAPSHOT</version>
   </parent>
   <groupId>edapt</groupId>
   <artifactId>org.eclipse.emf.edapt.declaration.editor</artifactId>
diff --git a/plugins/org.eclipse.emf.edapt.declaration/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.edapt.declaration/META-INF/MANIFEST.MF
index f6aff29..0fbb21e 100644
--- a/plugins/org.eclipse.emf.edapt.declaration/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.emf.edapt.declaration/META-INF/MANIFEST.MF
@@ -2,31 +2,31 @@
 Bundle-ManifestVersion: 2

 Bundle-Name: %pluginName

 Bundle-SymbolicName: org.eclipse.emf.edapt.declaration;singleton:=true

-Bundle-Version: 1.3.1.qualifier

+Bundle-Version: 1.4.0.qualifier

 Bundle-ClassPath: .

 Bundle-Vendor: %providerName

 Bundle-Localization: plugin

 Bundle-RequiredExecutionEnvironment: JavaSE-1.6

-Export-Package: org.eclipse.emf.edapt.declaration;version="1.3.1",

- org.eclipse.emf.edapt.declaration.common;version="1.3.1";x-internal:=true,

- org.eclipse.emf.edapt.declaration.creation;version="1.3.1";x-internal:=true,

- org.eclipse.emf.edapt.declaration.delegation;version="1.3.1";x-internal:=true,

- org.eclipse.emf.edapt.declaration.generalization;version="1.3.1";x-internal:=true,

- org.eclipse.emf.edapt.declaration.impl;version="1.3.1";x-internal:=true,

- org.eclipse.emf.edapt.declaration.inheritance;version="1.3.1";x-internal:=true,

- org.eclipse.emf.edapt.declaration.merge;version="1.3.1";x-internal:=true,

- org.eclipse.emf.edapt.declaration.replacement;version="1.3.1";x-internal:=true,

- org.eclipse.emf.edapt.declaration.simple;version="1.3.1";x-internal:=true,

- org.eclipse.emf.edapt.declaration.util;version="1.3.1";x-friends:="org.eclipse.emf.edapt.declaration.edit",

- org.eclipse.emf.edapt.internal.declaration;version="1.3.1";

+Export-Package: org.eclipse.emf.edapt.declaration;version="1.4.0",

+ org.eclipse.emf.edapt.declaration.common;version="1.4.0";x-internal:=true,

+ org.eclipse.emf.edapt.declaration.creation;version="1.4.0";x-internal:=true,

+ org.eclipse.emf.edapt.declaration.delegation;version="1.4.0";x-internal:=true,

+ org.eclipse.emf.edapt.declaration.generalization;version="1.4.0";x-internal:=true,

+ org.eclipse.emf.edapt.declaration.impl;version="1.4.0";x-internal:=true,

+ org.eclipse.emf.edapt.declaration.inheritance;version="1.4.0";x-internal:=true,

+ org.eclipse.emf.edapt.declaration.merge;version="1.4.0";x-internal:=true,

+ org.eclipse.emf.edapt.declaration.replacement;version="1.4.0";x-internal:=true,

+ org.eclipse.emf.edapt.declaration.simple;version="1.4.0";x-internal:=true,

+ org.eclipse.emf.edapt.declaration.util;version="1.4.0";x-friends:="org.eclipse.emf.edapt.declaration.edit",

+ org.eclipse.emf.edapt.internal.declaration;version="1.4.0";

   x-friends:="org.eclipse.emf.edapt.history,

    org.eclipse.emf.edapt.history.cdo,

    org.eclipse.emf.edapt.history.edit,

    org.eclipse.emf.edapt.migration.ui"

 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.edapt.common;bundle-version="[1.3.1,2.0.0)",

- org.eclipse.emf.edapt.migration;bundle-version="[1.3.1,2.0.0)"

+ org.eclipse.emf.edapt.common;bundle-version="[1.4.0,2.0.0)",

+ org.eclipse.emf.edapt.migration;bundle-version="[1.4.0,2.0.0)"

 Bundle-ActivationPolicy: lazy

 Bundle-Activator: org.eclipse.emf.edapt.declaration.DeclarationPlugin$Implementation

 Automatic-Module-Name: org.eclipse.emf.edapt.declaration

diff --git a/plugins/org.eclipse.emf.edapt.declaration/pom.xml b/plugins/org.eclipse.emf.edapt.declaration/pom.xml
index daa4027..47bae1c 100644
--- a/plugins/org.eclipse.emf.edapt.declaration/pom.xml
+++ b/plugins/org.eclipse.emf.edapt.declaration/pom.xml
@@ -5,7 +5,7 @@
   <parent>
     <groupId>edapt</groupId>
     <artifactId>plugins</artifactId>
-    <version>1.3.1-SNAPSHOT</version>
+    <version>1.4.0-SNAPSHOT</version>
   </parent>
   <groupId>edapt</groupId>
   <artifactId>org.eclipse.emf.edapt.declaration</artifactId>
diff --git a/plugins/org.eclipse.emf.edapt.history.cdo/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.edapt.history.cdo/META-INF/MANIFEST.MF
index 50d7ec7..c65a6c3 100644
--- a/plugins/org.eclipse.emf.edapt.history.cdo/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.emf.edapt.history.cdo/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %Bundle-Name
 Bundle-SymbolicName: org.eclipse.emf.edapt.history.cdo;singleton:=true
-Bundle-Version: 1.3.1.qualifier
+Bundle-Version: 1.4.0.qualifier
 Bundle-Vendor: %Bundle-Vendor
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Require-Bundle: org.eclipse.emf.ecore;bundle-version="[2.7.0,3.0.0)",
@@ -10,5 +10,5 @@
  org.eclipse.emf.cdo;bundle-version="[4.2.1,5.0.0)",
  org.eclipse.emf.cdo.net4j;bundle-version="[4.1.101,5.0.0)",
  org.eclipse.net4j.tcp;bundle-version="[4.1.100,5.0.0)"
-Export-Package: org.eclipse.emf.edapt.cdo.migration;version="1.3.1";x-internal:=true,
- org.eclipse.emf.edapt.cdo.migration.execution;version="1.3.1";x-internal:=true
+Export-Package: org.eclipse.emf.edapt.cdo.migration;version="1.4.0";x-internal:=true,
+ org.eclipse.emf.edapt.cdo.migration.execution;version="1.4.0";x-internal:=true
diff --git a/plugins/org.eclipse.emf.edapt.history.cdo/pom.xml b/plugins/org.eclipse.emf.edapt.history.cdo/pom.xml
index 2e2ba62..8eab0c2 100644
--- a/plugins/org.eclipse.emf.edapt.history.cdo/pom.xml
+++ b/plugins/org.eclipse.emf.edapt.history.cdo/pom.xml
@@ -4,7 +4,7 @@
 	<parent>
 		<groupId>edapt</groupId>
 		<artifactId>plugins</artifactId>
-		<version>1.3.1-SNAPSHOT</version>
+		<version>1.4.0-SNAPSHOT</version>
 	</parent>
 	<groupId>edapt</groupId>
 	<artifactId>org.eclipse.emf.edapt.history.cdo</artifactId>
diff --git a/plugins/org.eclipse.emf.edapt.history.edit/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.edapt.history.edit/META-INF/MANIFEST.MF
index 3a13c39..cc6879f 100644
--- a/plugins/org.eclipse.emf.edapt.history.edit/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.emf.edapt.history.edit/META-INF/MANIFEST.MF
@@ -2,22 +2,22 @@
 Bundle-ManifestVersion: 2

 Bundle-Name: %pluginName

 Bundle-SymbolicName: org.eclipse.emf.edapt.history.edit;singleton:=true

-Bundle-Version: 1.3.1.qualifier

+Bundle-Version: 1.4.0.qualifier

 Bundle-ClassPath: .

 Bundle-Activator: org.eclipse.emf.edapt.spi.history.provider.HistoryEditPlugin$Implementation

 Bundle-Vendor: %providerName

 Bundle-Localization: plugin

 Bundle-RequiredExecutionEnvironment: JavaSE-1.6

-Export-Package: org.eclipse.emf.edapt.history.instantiation;version="1.3.1";x-friends:="org.eclipse.emf.edapt.history.editor",

- org.eclipse.emf.edapt.history.provider.util;version="1.3.1";x-internal:=true,

- org.eclipse.emf.edapt.history.reconstruction;version="1.3.1";x-friends:="org.eclipse.emf.edapt.history.editor,org.eclipse.emf.edapt.migration.test",

- org.eclipse.emf.edapt.history.recorder;version="1.3.1";x-friends:="org.eclipse.emf.edapt.history.editor",

- org.eclipse.emf.edapt.spi.history.provider;version="1.3.1"

+Export-Package: org.eclipse.emf.edapt.history.instantiation;version="1.4.0";x-friends:="org.eclipse.emf.edapt.history.editor",

+ org.eclipse.emf.edapt.history.provider.util;version="1.4.0";x-internal:=true,

+ org.eclipse.emf.edapt.history.reconstruction;version="1.4.0";x-friends:="org.eclipse.emf.edapt.history.editor,org.eclipse.emf.edapt.migration.test",

+ org.eclipse.emf.edapt.history.recorder;version="1.4.0";x-friends:="org.eclipse.emf.edapt.history.editor",

+ org.eclipse.emf.edapt.spi.history.provider;version="1.4.0"

 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.7.0,4.0.0)",

- org.eclipse.emf.edapt.history;bundle-version="[1.3.1,2.0.0)";visibility:=reexport,

+ org.eclipse.emf.edapt.history;bundle-version="[1.4.0,2.0.0)";visibility:=reexport,

  org.eclipse.emf.edit;bundle-version="[2.7.0,3.0.0)";visibility:=reexport,

- org.eclipse.emf.edapt.declaration;bundle-version="[1.3.1,2.0.0)";visibility:=reexport,

- org.eclipse.emf.edapt.declaration.edit;bundle-version="[1.3.1,2.0.0)";visibility:=reexport,

+ org.eclipse.emf.edapt.declaration;bundle-version="[1.4.0,2.0.0)";visibility:=reexport,

+ org.eclipse.emf.edapt.declaration.edit;bundle-version="[1.4.0,2.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.compare;bundle-version="[3.0.0,4.0.0)",

diff --git a/plugins/org.eclipse.emf.edapt.history.edit/pom.xml b/plugins/org.eclipse.emf.edapt.history.edit/pom.xml
index bbc4023..4378c03 100644
--- a/plugins/org.eclipse.emf.edapt.history.edit/pom.xml
+++ b/plugins/org.eclipse.emf.edapt.history.edit/pom.xml
@@ -5,7 +5,7 @@
   <parent>
     <groupId>edapt</groupId>
     <artifactId>plugins</artifactId>
-    <version>1.3.1-SNAPSHOT</version>
+    <version>1.4.0-SNAPSHOT</version>
   </parent>
   <groupId>edapt</groupId>
   <artifactId>org.eclipse.emf.edapt.history.edit</artifactId>
diff --git a/plugins/org.eclipse.emf.edapt.history.editor/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.edapt.history.editor/META-INF/MANIFEST.MF
index ccf069b..2e7286d 100644
--- a/plugins/org.eclipse.emf.edapt.history.editor/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.emf.edapt.history.editor/META-INF/MANIFEST.MF
@@ -2,21 +2,22 @@
 Bundle-ManifestVersion: 2

 Bundle-Name: %pluginName

 Bundle-SymbolicName: org.eclipse.emf.edapt.history.editor;singleton:=true

-Bundle-Version: 1.3.1.qualifier

+Bundle-Version: 1.4.0.qualifier

 Bundle-ClassPath: .

 Bundle-Activator: org.eclipse.emf.edapt.history.presentation.HistoryEditorPlugin$Implementation

 Bundle-Vendor: %providerName

 Bundle-Localization: plugin

 Bundle-RequiredExecutionEnvironment: JavaSE-1.6

-Export-Package: org.eclipse.emf.edapt.history.instantiation.ui;version="1.3.1";x-internal:=true,

- org.eclipse.emf.edapt.history.presentation;version="1.3.1";x-internal:=true,

- org.eclipse.emf.edapt.history.presentation.action;version="1.3.1";x-internal:=true,

- org.eclipse.emf.edapt.history.reconstruction.ui;version="1.3.1";x-internal:=true,

- org.eclipse.emf.edapt.history.recorder.ui;version="1.3.1";x-internal:=true

+Export-Package: org.eclipse.emf.edapt.history.instantiation.ui;version="1.4.0";x-internal:=true,

+ org.eclipse.emf.edapt.history.preferences.ui;x-internal:=true,

+ org.eclipse.emf.edapt.history.presentation;version="1.4.0";x-internal:=true,

+ org.eclipse.emf.edapt.history.presentation.action;version="1.4.0";x-internal:=true,

+ org.eclipse.emf.edapt.history.reconstruction.ui;version="1.4.0";x-internal:=true,

+ org.eclipse.emf.edapt.history.recorder.ui;version="1.4.0";x-internal:=true

 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.7.0,4.0.0)",

- org.eclipse.emf.edapt.history.edit;bundle-version="[1.3.1,2.0.0)";visibility:=reexport,

+ org.eclipse.emf.edapt.history.edit;bundle-version="[1.4.0,2.0.0)";visibility:=reexport,

  org.eclipse.emf.edit.ui;bundle-version="[2.7.0,3.0.0)";visibility:=reexport,

- org.eclipse.emf.edapt.common.ui;bundle-version="[1.3.1,2.0.0)",

+ org.eclipse.emf.edapt.common.ui;bundle-version="[1.4.0,2.0.0)",

  org.eclipse.core.expressions;bundle-version="[3.4.0,4.0.0)",

  org.eclipse.jdt.ui;bundle-version="[3.7.0,4.0.0)",

  org.eclipse.jdt.core;bundle-version="[3.7.0,4.0.0)",

diff --git a/plugins/org.eclipse.emf.edapt.history.editor/plugin.xml b/plugins/org.eclipse.emf.edapt.history.editor/plugin.xml
index 27edf96..891d224 100644
--- a/plugins/org.eclipse.emf.edapt.history.editor/plugin.xml
+++ b/plugins/org.eclipse.emf.edapt.history.editor/plugin.xml
@@ -2,7 +2,7 @@
 <?eclipse version="3.0"?>
 
 <!--
-    Copyright (c) 2007, 2010 BMW Car IT, Technische Universitaet Muenchen, and others.
+    Copyright (c) 2007, 2019 BMW Car IT, Technische Universitaet Muenchen, and others.
     All rights reserved. This program and the accompanying materials
     are made available under the terms of the Eclipse Public License v1.0
     which accompanies this distribution, and is available at
@@ -11,6 +11,7 @@
     Contributors:
         BMW Car IT - Initial API and implementation
         Technische Universitaet Muenchen - Major refactoring and extension
+        Christian W. Damus - bug 544155
  -->
 
 <plugin>
@@ -622,4 +623,20 @@
            name="Edapt">
      </category>
   </extension>
+  <extension
+        point="org.eclipse.ui.keywords">
+     <keyword
+            label="edapt history migration"
+            id="org.eclipse.emf.edapt.history"/>
+  </extension>
+  <extension
+        point="org.eclipse.ui.preferencePages">
+     <page
+           class="org.eclipse.emf.edapt.history.preferences.ui.HistoryPreferencePage"
+           id="org.eclipse.emf.edapt.preferences.history"
+           name="Edapt">
+        <keywordReference
+              id="org.eclipse.emf.edapt.history"/>
+     </page>
+  </extension>
 </plugin>
diff --git a/plugins/org.eclipse.emf.edapt.history.editor/pom.xml b/plugins/org.eclipse.emf.edapt.history.editor/pom.xml
index 3e38941..99de267 100644
--- a/plugins/org.eclipse.emf.edapt.history.editor/pom.xml
+++ b/plugins/org.eclipse.emf.edapt.history.editor/pom.xml
@@ -5,7 +5,7 @@
   <parent>
     <groupId>edapt</groupId>
     <artifactId>plugins</artifactId>
-    <version>1.3.1-SNAPSHOT</version>
+    <version>1.4.0-SNAPSHOT</version>
   </parent>
   <groupId>edapt</groupId>
   <artifactId>org.eclipse.emf.edapt.history.editor</artifactId>
diff --git a/plugins/org.eclipse.emf.edapt.history.editor/src/org/eclipse/emf/edapt/history/instantiation/ui/ReleaseWizardPage.java b/plugins/org.eclipse.emf.edapt.history.editor/src/org/eclipse/emf/edapt/history/instantiation/ui/ReleaseWizardPage.java
index 53005fd..4d5c407 100644
--- a/plugins/org.eclipse.emf.edapt.history.editor/src/org/eclipse/emf/edapt/history/instantiation/ui/ReleaseWizardPage.java
+++ b/plugins/org.eclipse.emf.edapt.history.editor/src/org/eclipse/emf/edapt/history/instantiation/ui/ReleaseWizardPage.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2007-2015 BMW Car IT, TUM, EclipseSource Muenchen GmbH, and others.
+ * Copyright (c) 2007-2019 BMW Car IT, TUM, EclipseSource Muenchen GmbH, 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
@@ -8,6 +8,7 @@
  *
  * Contributors:
  * Johannes Faltermeier - initial API and implementation
+ * Christian W. Damus - bug 544147
  ******************************************************************************/
 package org.eclipse.emf.edapt.history.instantiation.ui;
 
@@ -17,6 +18,7 @@
 import java.util.Set;
 
 import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.edapt.internal.common.URIUtils;
 import org.eclipse.jface.layout.GridDataFactory;
 import org.eclipse.jface.layout.GridLayoutFactory;
 import org.eclipse.jface.resource.ImageDescriptor;
@@ -28,6 +30,7 @@
 import org.eclipse.swt.events.SelectionAdapter;
 import org.eclipse.swt.events.SelectionEvent;
 import org.eclipse.swt.graphics.Point;
+import org.eclipse.swt.layout.FillLayout;
 import org.eclipse.swt.layout.GridData;
 import org.eclipse.swt.widgets.Button;
 import org.eclipse.swt.widgets.Composite;
@@ -141,6 +144,15 @@
 		final Point point = composite.computeSize(SWT.DEFAULT, SWT.DEFAULT);
 		scrolledComposite.setMinSize(point);
 
+		if (packages.size() > 1) {
+			// Create convenience buttons to select/deselect all packages
+			final Composite buttonsComposite = new Composite(mainComposite, SWT.NONE);
+			GridDataFactory.swtDefaults().align(SWT.END, SWT.BEGINNING).applyTo(buttonsComposite);
+			buttonsComposite.setLayout(new FillLayout(SWT.HORIZONTAL));
+			createSelectAllButton(buttonsComposite, "Select &All", true); //$NON-NLS-1$
+			createSelectAllButton(buttonsComposite, "&Deselect All", false); //$NON-NLS-1$
+		}
+
 		setControl(mainComposite);
 
 		checkIfPageComplete();
@@ -186,9 +198,49 @@
 		});
 	}
 
+	private Button createSelectAllButton(Composite parent, final String label, final boolean select) {
+		final Button result = new Button(parent, SWT.PUSH);
+		result.setText(label);
+		result.addSelectionListener(new SelectionAdapter() {
+			@Override
+			public void widgetSelected(SelectionEvent e) {
+				selectAll(select);
+			}
+		});
+		return result;
+	}
+
+	private void selectAll(boolean select) {
+		for (final Map.Entry<EPackage, Button> next : packageToUpdateButton.entrySet()) {
+			final EPackage ePackage = next.getKey();
+			final Button checkbox = next.getValue();
+
+			if (checkbox.getSelection() != select) {
+				checkbox.setSelection(select);
+				setTextEnablement(checkbox, ePackage);
+			}
+		}
+
+		checkIfPageComplete();
+	}
+
 	private void setTextEnablement(final Button updateButton, final EPackage ePackage) {
-		packageToSourceText.get(ePackage).setEnabled(updateButton.getSelection());
-		packageToTargetText.get(ePackage).setEnabled(updateButton.getSelection());
+		final boolean selected = updateButton.getSelection();
+		final Text sourceText = packageToSourceText.get(ePackage);
+		final Text targetText = packageToTargetText.get(ePackage);
+
+		sourceText.setEnabled(selected);
+		targetText.setEnabled(selected);
+
+		// Can we pre-populate the target text?
+		final String target = targetText.getText().trim();
+		if (selected && target.isEmpty()) {
+			final String source = sourceText.getText().trim();
+			final String newTarget = URIUtils.incrementVersionSegment(source);
+			if (!source.equals(newTarget)) {
+				targetText.setText(newTarget);
+			}
+		}
 	}
 
 	private void checkIfPageComplete() {
diff --git a/plugins/org.eclipse.emf.edapt.history.editor/src/org/eclipse/emf/edapt/history/preferences/ui/HistoryPreferencePage.java b/plugins/org.eclipse.emf.edapt.history.editor/src/org/eclipse/emf/edapt/history/preferences/ui/HistoryPreferencePage.java
new file mode 100644
index 0000000..2919a01
--- /dev/null
+++ b/plugins/org.eclipse.emf.edapt.history.editor/src/org/eclipse/emf/edapt/history/preferences/ui/HistoryPreferencePage.java
@@ -0,0 +1,71 @@
+/*******************************************************************************
+ * Copyright (c) 2019 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.edapt.history.preferences.ui;
+
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.layout.GridLayoutFactory;
+import org.eclipse.jface.preference.PreferencePage;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+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.ui.IWorkbench;
+import org.eclipse.ui.IWorkbenchPreferencePage;
+
+/**
+ * Top-level preference page for the Edapt history management.
+ */
+public class HistoryPreferencePage extends PreferencePage implements IWorkbenchPreferencePage {
+
+	/**
+	 * Initializes me.
+	 */
+	public HistoryPreferencePage() {
+		super();
+	}
+
+	@Override
+	public void init(IWorkbench workbench) {
+		// Nothing to initialize
+	}
+
+	@Override
+	protected Control createContents(Composite parent) {
+		final Composite result = new Composite(parent, SWT.NONE);
+		GridLayoutFactory.swtDefaults().numColumns(2).applyTo(result);
+
+		createClearDialogsPreference(result);
+
+		return result;
+	}
+
+	private void createClearDialogsPreference(Composite parent) {
+		new Label(parent, SWT.NONE).setText("Forget all decisions remembered by dialogs:"); //$NON-NLS-1$
+		final Button clearDialogs = new Button(parent, SWT.PUSH);
+		clearDialogs.setText("Clear Dialogs"); //$NON-NLS-1$
+		clearDialogs.addSelectionListener(new SelectionAdapter() {
+			@Override
+			public void widgetSelected(SelectionEvent e) {
+				final boolean delete = MessageDialog.openConfirm(getShell(), "Clear Dialogs", //$NON-NLS-1$
+					"Are you sure you want to forget all responses to dialogs via the \"Remember my decision\" option?"); //$NON-NLS-1$
+
+				if (delete) {
+					ResourcePreferences.deleteAll();
+				}
+			}
+		});
+	}
+
+}
diff --git a/plugins/org.eclipse.emf.edapt.history.editor/src/org/eclipse/emf/edapt/history/preferences/ui/PromptKind.java b/plugins/org.eclipse.emf.edapt.history.editor/src/org/eclipse/emf/edapt/history/preferences/ui/PromptKind.java
new file mode 100644
index 0000000..849b24d
--- /dev/null
+++ b/plugins/org.eclipse.emf.edapt.history.editor/src/org/eclipse/emf/edapt/history/preferences/ui/PromptKind.java
@@ -0,0 +1,68 @@
+/*******************************************************************************
+ * Copyright (c) 2019 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.edapt.history.preferences.ui;
+
+import org.eclipse.jface.dialogs.MessageDialogWithToggle;
+import org.eclipse.jface.preference.IPreferenceStore;
+
+/**
+ * An enumeration of preference values for a prompting preference.
+ */
+public enum PromptKind {
+	PROMPT(MessageDialogWithToggle.PROMPT), NEVER(MessageDialogWithToggle.NEVER), ALWAYS(
+		MessageDialogWithToggle.ALWAYS);
+
+	private final String value;
+
+	private PromptKind(String value) {
+		this.value = value;
+	}
+
+	/**
+	 * Get the value of a preference {@code key} from the given {@code store}.
+	 *
+	 * @param store the preference store
+	 * @param key the preference to get
+	 * @return the preference value
+	 */
+	public static PromptKind get(IPreferenceStore store, String key) {
+		store.setDefault(key, PROMPT.value);
+
+		return getByValue(store.getString(key));
+	}
+
+	/**
+	 * Get a prompt kind by string value.
+	 *
+	 * @param value the value
+	 * @return the corresponding prompt kind, or {@link #PROMPT} if the {@code value}
+	 *         is invalid
+	 */
+	public static PromptKind getByValue(String value) {
+		PromptKind result = PROMPT;
+
+		for (final PromptKind next : values()) {
+			if (next.value.equals(value)) {
+				result = next;
+				break;
+			}
+		}
+
+		return result;
+	}
+
+	@Override
+	public String toString() {
+		return value;
+	}
+
+}
diff --git a/plugins/org.eclipse.emf.edapt.history.editor/src/org/eclipse/emf/edapt/history/preferences/ui/ResourcePreferences.java b/plugins/org.eclipse.emf.edapt.history.editor/src/org/eclipse/emf/edapt/history/preferences/ui/ResourcePreferences.java
new file mode 100644
index 0000000..93690c9
--- /dev/null
+++ b/plugins/org.eclipse.emf.edapt.history.editor/src/org/eclipse/emf/edapt/history/preferences/ui/ResourcePreferences.java
@@ -0,0 +1,223 @@
+/*******************************************************************************
+ * Copyright (c) 2019 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.edapt.history.preferences.ui;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.net.URLEncoder;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.core.resources.ISaveContext;
+import org.eclipse.core.resources.ISaveParticipant;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IStatus;
+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.edapt.history.presentation.HistoryEditorPlugin;
+import org.eclipse.emf.edapt.history.util.HistoryUtils;
+import org.eclipse.emf.edapt.internal.common.FileUtils;
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.jface.preference.IPersistentPreferenceStore;
+import org.eclipse.jface.preference.IPreferenceStore;
+import org.eclipse.jface.preference.PreferenceStore;
+
+/**
+ * Manager of preferences for resources by URI.
+ */
+public final class ResourcePreferences {
+
+	/** Location in the metadata area of the directory containing preference stores. */
+	private static final IPath STORE_LOCATION;
+
+	private static final Map<URI, IPersistentPreferenceStore> preferenceStores = new HashMap<URI, IPersistentPreferenceStore>();
+
+	static {
+		final IPath stateLocation = HistoryEditorPlugin.getPlugin().getStateLocation();
+		STORE_LOCATION = stateLocation.append("resources"); //$NON-NLS-1$
+	}
+
+	/**
+	 * Not instantiable by clients.
+	 */
+	private ResourcePreferences() {
+		super();
+	}
+
+	/**
+	 * Get the preference store for the principal resource of an editing domain.
+	 * That principal resource is the history resource, if any, otherwise the resource
+	 * that is being edited in that domain.
+	 *
+	 * @param editingDomain an editing domain
+	 * @return the preference store for its principal resource
+	 */
+	public synchronized static IPreferenceStore getPreferences(EditingDomain editingDomain) {
+		final ResourceSet rset = editingDomain.getResourceSet();
+		// Prefer the history resource, if any, else the resource being edited
+		final Resource resource = getHistoryOrMainResource(rset);
+		return getPreferences(rset.getURIConverter().normalize(resource.getURI()));
+	}
+
+	private static Resource getHistoryOrMainResource(ResourceSet rset) {
+		Resource result = HistoryUtils.getHistoryResource(rset);
+
+		if (result == null) {
+			result = rset.getResources().get(0);
+		}
+
+		return result;
+	}
+
+	/**
+	 * Get the preference store for the resource identified by the given URI.
+	 *
+	 * @param uri the reosurce URI
+	 * @return the preference store for that resource
+	 */
+	public synchronized static IPreferenceStore getPreferences(URI uri) {
+		IPreferenceStore result = preferenceStores.get(uri);
+
+		if (result == null) {
+			result = createPreferenceStore(uri);
+		}
+
+		return result;
+	}
+
+	private static IPreferenceStore createPreferenceStore(URI uri) {
+		final IPath storeLocation;
+
+		try {
+			storeLocation = STORE_LOCATION.append(URLEncoder.encode(uri.toString(), "UTF-8") + ".prefs"); //$NON-NLS-1$//$NON-NLS-2$
+		} catch (final UnsupportedEncodingException e) {
+			throw new Error("UTF-8 encoding not supported"); //$NON-NLS-1$
+		}
+
+		final File storeFile = storeLocation.toFile();
+
+		final PreferenceStore result = new PreferenceStore(storeFile.getAbsolutePath());
+
+		if (storeFile.exists()) {
+			try {
+				result.load();
+			} catch (final IOException e) {
+				HistoryEditorPlugin.INSTANCE.log(e);
+			}
+		}
+
+		try {
+			register(result, uri);
+		} catch (final CoreException e) {
+			HistoryEditorPlugin.getPlugin().getLog().log(e.getStatus());
+		}
+
+		return result;
+	}
+
+	private static void register(IPersistentPreferenceStore store, URI uri) throws CoreException {
+		if (preferenceStores.isEmpty()) {
+			// Registering the first store.
+			installWorkspaceSaveParticipant();
+		}
+
+		preferenceStores.put(uri, store);
+	}
+
+	private static void installWorkspaceSaveParticipant() throws CoreException {
+		ResourcesPlugin.getWorkspace().addSaveParticipant(
+			HistoryEditorPlugin.getPlugin().getSymbolicName(),
+			new ISaveParticipant() {
+
+				@Override
+				public void saving(ISaveContext context) throws CoreException {
+					savePreferenceStores();
+				}
+
+				@Override
+				public void prepareToSave(ISaveContext context) throws CoreException {
+					// Not interesting
+				}
+
+				@Override
+				public void doneSaving(ISaveContext context) {
+					// Not interesting
+				}
+
+				@Override
+				public void rollback(ISaveContext context) {
+					// Not interesting
+				}
+			});
+	}
+
+	private static void savePreferenceStores() throws CoreException {
+		Map<URI, IPersistentPreferenceStore> toSave;
+
+		synchronized (ResourcePreferences.class) {
+			toSave = new HashMap<URI, IPersistentPreferenceStore>(preferenceStores);
+		}
+
+		for (final Iterator<Map.Entry<URI, IPersistentPreferenceStore>> iter = toSave.entrySet().iterator(); iter
+			.hasNext();) {
+
+			if (!iter.next().getValue().needsSaving()) {
+				iter.remove();
+			}
+		}
+
+		if (!toSave.isEmpty()) {
+			final List<URI> failed = new ArrayList<URI>(toSave.size());
+			final File storeDirectory = STORE_LOCATION.toFile();
+			if (storeDirectory.exists() && !storeDirectory.isDirectory()) {
+				throw new CoreException(new Status(IStatus.ERROR, HistoryEditorPlugin.getPlugin().getSymbolicName(),
+					String.format("Cannot create preference store. Path exists but is not a directory: %s", //$NON-NLS-1$
+						STORE_LOCATION)));
+			} else if (!storeDirectory.exists()) {
+				storeDirectory.mkdirs();
+			}
+
+			for (final Map.Entry<URI, IPersistentPreferenceStore> next : toSave.entrySet()) {
+				try {
+					next.getValue().save();
+				} catch (final IOException e) {
+					HistoryEditorPlugin.INSTANCE.log(e);
+					failed.add(next.getKey());
+				}
+			}
+
+			if (!failed.isEmpty()) {
+				throw new CoreException(new Status(IStatus.ERROR, HistoryEditorPlugin.getPlugin().getSymbolicName(),
+					String.format("Failed to save resource preferences: %s.", failed))); //$NON-NLS-1$
+			}
+		}
+	}
+
+	/**
+	 * Unset all resource preferences and delete them from the workspace metadata area.
+	 */
+	static void deleteAll() {
+		synchronized (ResourcePreferences.class) {
+			preferenceStores.clear();
+		}
+
+		FileUtils.deleteContents(STORE_LOCATION.toFile());
+	}
+}
diff --git a/plugins/org.eclipse.emf.edapt.history.editor/src/org/eclipse/emf/edapt/history/recorder/ui/EcoreEditorDetector.java b/plugins/org.eclipse.emf.edapt.history.editor/src/org/eclipse/emf/edapt/history/recorder/ui/EcoreEditorDetector.java
index f7660a5..2d9303e 100644
--- a/plugins/org.eclipse.emf.edapt.history.editor/src/org/eclipse/emf/edapt/history/recorder/ui/EcoreEditorDetector.java
+++ b/plugins/org.eclipse.emf.edapt.history.editor/src/org/eclipse/emf/edapt/history/recorder/ui/EcoreEditorDetector.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2007, 2018 BMW Car IT, Technische Universitaet Muenchen, and others.
+ * Copyright (c) 2007, 2019 BMW Car IT, Technische Universitaet Muenchen, 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
@@ -8,7 +8,7 @@
  * Contributors:
  * BMW Car IT - Initial API and implementation
  * Technische Universitaet Muenchen - Major refactoring and extension
- * Christian W. Damus - bug 529599
+ * Christian W. Damus - bugs 529599, 544155
  *******************************************************************************/
 package org.eclipse.emf.edapt.history.recorder.ui;
 
@@ -21,21 +21,30 @@
 import org.eclipse.emf.common.command.CommandStack;
 import org.eclipse.emf.common.notify.AdapterFactory;
 import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EPackage;
 import org.eclipse.emf.ecore.presentation.EcoreEditor;
 import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.util.EcoreUtil;
 import org.eclipse.emf.edapt.common.ui.EcoreUIUtils;
 import org.eclipse.emf.edapt.common.ui.PartAdapter;
+import org.eclipse.emf.edapt.history.preferences.ui.PromptKind;
+import org.eclipse.emf.edapt.history.preferences.ui.ResourcePreferences;
 import org.eclipse.emf.edapt.history.presentation.HistoryEditorPlugin;
 import org.eclipse.emf.edapt.history.recorder.AddResourceCommand;
 import org.eclipse.emf.edapt.history.recorder.EditingDomainListener;
 import org.eclipse.emf.edapt.history.recorder.IResourceLoadListener;
 import org.eclipse.emf.edapt.internal.common.LoggingUtils;
+import org.eclipse.emf.edapt.internal.common.ResourceUtils;
 import org.eclipse.emf.edapt.spi.history.HistoryPackage;
+import org.eclipse.emf.edit.domain.EditingDomain;
 import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
 import org.eclipse.emf.edit.provider.ReflectiveItemProviderAdapterFactory;
-import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.dialogs.IDialogConstants;
+import org.eclipse.jface.dialogs.MessageDialogWithToggle;
 import org.eclipse.jface.dialogs.ProgressMonitorDialog;
 import org.eclipse.jface.operation.IRunnableWithProgress;
+import org.eclipse.jface.preference.IPreferenceStore;
+import org.eclipse.osgi.util.NLS;
 import org.eclipse.swt.widgets.Display;
 import org.eclipse.ui.IEditorPart;
 import org.eclipse.ui.IEditorReference;
@@ -157,12 +166,13 @@
 	}
 
 	/** Ask the user whether a resource should be added to the history. */
-	private void addHistory(final EditingDomainListener listener,
-		Resource resource) {
-		final boolean addHistory = MessageDialog.openQuestion(Display.getDefault()
-			.getActiveShell(), "Resource loaded", //$NON-NLS-1$
-			"A resource has been loaded. " //$NON-NLS-1$
-				+ "Do you want to add it to the history?"); //$NON-NLS-1$
+	private void addHistory(final EditingDomainListener listener, Resource resource) {
+		final List<EPackage> rootPackages = ResourceUtils.getRootElements(resource, EPackage.class);
+		if (rootPackages.isEmpty()) {
+			return; // Nothing to worry about
+		}
+
+		final boolean addHistory = shouldAddHistory(listener, resource, rootPackages);
 		if (addHistory) {
 			final CommandStack commandStack = listener.getEditingDomain()
 				.getCommandStack();
@@ -171,6 +181,77 @@
 	}
 
 	/**
+	 * Query whether we should add the given packages for a {@code resource} to the history, prompting the user
+	 * if necessary.
+	 *
+	 * @param listener the editing-domain listener in the context of a history
+	 * @param resource a resource that was loaded in the editing domain and contains Ecore packages
+	 * @param rootPackages the Ecore packages contained by the {@code resource}
+	 * @return whether to add the packages to the history
+	 */
+	private boolean shouldAddHistory(final EditingDomainListener listener, Resource resource,
+		final List<EPackage> rootPackages) {
+
+		final EditingDomain domain = listener.getEditingDomain();
+		final IPreferenceStore store = ResourcePreferences.getPreferences(domain);
+		final String resourceKey = "ignore." //$NON-NLS-1$
+			+ domain.getResourceSet().getURIConverter().normalize(resource.getURI()).toString();
+		store.setDefault(resourceKey, MessageDialogWithToggle.PROMPT);
+
+		final boolean result;
+		final PromptKind ignore = PromptKind.get(store, resourceKey);
+		switch (ignore) {
+		case ALWAYS:
+			// Don't need to prompt: user previously answered yes
+			result = true;
+			break;
+		case NEVER:
+			// Don't need to prompt: user previously answered no
+			result = false;
+			break;
+		default: // case PROMPT:
+			// Need to prompt: haven't remembered a previous answer
+			String title;
+			String message;
+			if (rootPackages.size() == 1) {
+				title = "Add EPackage to History"; //$NON-NLS-1$
+				message = NLS.bind("An Ecore resource has been loaded. " + //$NON-NLS-1$
+					"Add the EPackage ''{0}'' to the history?", //$NON-NLS-1$
+					getNSURI(rootPackages.get(0)));
+			} else {
+				title = "Add EPackages to History"; //$NON-NLS-1$
+				final StringBuilder nsURIs = new StringBuilder();
+				final String newline = System.getProperty("line.separator"); //$NON-NLS-1$
+				for (final EPackage next : rootPackages) {
+					nsURIs.append(newline);
+					nsURIs.append("  "); //$NON-NLS-1$
+					nsURIs.append(getNSURI(next));
+				}
+				message = NLS.bind("An Ecore resource has been loaded. " + //$NON-NLS-1$
+					"Add these EPackages to the history?{0}", //$NON-NLS-1$
+					nsURIs);
+			}
+
+			final MessageDialogWithToggle dialog = MessageDialogWithToggle.openYesNoQuestion(
+				Display.getDefault().getActiveShell(), title, message,
+				"Remember my decision", false, store, resourceKey); //$NON-NLS-1$
+
+			result = dialog.getReturnCode() == IDialogConstants.YES_ID;
+			break;
+		}
+		return result;
+	}
+
+	private String getNSURI(EPackage ePackage) {
+		String result = ePackage.getNsURI();
+		if (result == null || result.isEmpty()) {
+			// During development, maybe it doesn't have an NS URI, yet
+			result = String.valueOf(EcoreUtil.getURI(ePackage));
+		}
+		return result;
+	}
+
+	/**
 	 * Hack the adapter factory of an Ecore editor so that it uses the adapter
 	 * factory registry instead of the reflective adapter factory.
 	 */
diff --git a/plugins/org.eclipse.emf.edapt.history/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.edapt.history/META-INF/MANIFEST.MF
index 32aa9eb..343f7d5 100644
--- a/plugins/org.eclipse.emf.edapt.history/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.emf.edapt.history/META-INF/MANIFEST.MF
@@ -2,38 +2,38 @@
 Bundle-ManifestVersion: 2

 Bundle-Name: %pluginName

 Bundle-SymbolicName: org.eclipse.emf.edapt.history;singleton:=true

-Bundle-Version: 1.3.1.qualifier

+Bundle-Version: 1.4.0.qualifier

 Bundle-ClassPath: .

 Bundle-Vendor: %providerName

 Bundle-Localization: plugin

 Bundle-RequiredExecutionEnvironment: JavaSE-1.6

-Export-Package: org.eclipse.emf.edapt.history.reconstruction;version="1.3.1";

+Export-Package: org.eclipse.emf.edapt.history.reconstruction;version="1.4.0";

   x-friends:="org.eclipse.emf.edapt.history.cdo,

    org.eclipse.emf.edapt.history.edit,

    org.eclipse.emf.edapt.history.editor",

- org.eclipse.emf.edapt.history.recorder;version="1.3.1";x-friends:="org.eclipse.emf.edapt.history.edit",

- org.eclipse.emf.edapt.history.util;version="1.3.1";

+ org.eclipse.emf.edapt.history.recorder;version="1.4.0";x-friends:="org.eclipse.emf.edapt.history.edit",

+ org.eclipse.emf.edapt.history.util;version="1.4.0";

   x-friends:="org.eclipse.emf.edapt.history.cdo,

    org.eclipse.emf.edapt.history.edit,

    org.eclipse.emf.edapt.history.editor,

    org.eclipse.emf.edapt.migration.test,

    org.eclipse.emf.edapt.migration.ui",

- org.eclipse.emf.edapt.internal.migration.execution;version="1.3.1",

- org.eclipse.emf.edapt.internal.migration.execution.internal;version="1.3.1";

+ org.eclipse.emf.edapt.internal.migration.execution;version="1.4.0",

+ org.eclipse.emf.edapt.internal.migration.execution.internal;version="1.4.0";

   x-friends:="org.eclipse.emf.edapt.history.cdo,

    org.eclipse.emf.edapt.history.edit,

    org.eclipse.emf.edapt.history.editor,

    org.eclipse.emf.edapt.migration.ui",

- org.eclipse.emf.edapt.migration.execution;version="1.3.1",

- org.eclipse.emf.edapt.spi.history;version="1.3.1",

- org.eclipse.emf.edapt.spi.history.impl;version="1.3.1",

- org.eclipse.emf.edapt.spi.history.util;version="1.3.1"

+ org.eclipse.emf.edapt.migration.execution;version="1.4.0",

+ org.eclipse.emf.edapt.spi.history;version="1.4.0",

+ org.eclipse.emf.edapt.spi.history.impl;version="1.4.0",

+ org.eclipse.emf.edapt.spi.history.util;version="1.4.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.edapt.common;bundle-version="[1.3.1,2.0.0)";visibility:=reexport,

+ org.eclipse.emf.edapt.common;bundle-version="[1.4.0,2.0.0)";visibility:=reexport,

  org.eclipse.emf.ecore.xmi;bundle-version="[2.7.0,3.0.0)";visibility:=reexport,

- org.eclipse.emf.edapt.declaration;bundle-version="[1.3.1,2.0.0)";visibility:=reexport,

- org.eclipse.emf.edapt.migration;bundle-version="[1.3.1,2.0.0)";visibility:=reexport

+ org.eclipse.emf.edapt.declaration;bundle-version="[1.4.0,2.0.0)";visibility:=reexport,

+ org.eclipse.emf.edapt.migration;bundle-version="[1.4.0,2.0.0)";visibility:=reexport

 Bundle-ActivationPolicy: lazy

 Bundle-Activator: org.eclipse.emf.edapt.spi.history.HistoryPlugin$Implementation

 Automatic-Module-Name: org.eclipse.emf.edapt.history

diff --git a/plugins/org.eclipse.emf.edapt.history/pom.xml b/plugins/org.eclipse.emf.edapt.history/pom.xml
index 4c23348..bbb80a8 100644
--- a/plugins/org.eclipse.emf.edapt.history/pom.xml
+++ b/plugins/org.eclipse.emf.edapt.history/pom.xml
@@ -5,10 +5,10 @@
   <parent>
     <groupId>edapt</groupId>
     <artifactId>plugins</artifactId>
-    <version>1.3.1-SNAPSHOT</version>
+    <version>1.4.0-SNAPSHOT</version>
   </parent>
   <groupId>edapt</groupId>
   <artifactId>org.eclipse.emf.edapt.history</artifactId>
   <packaging>eclipse-plugin</packaging>
-  <version>1.3.1-SNAPSHOT</version>
+  <version>1.4.0-SNAPSHOT</version>
 </project>
diff --git a/plugins/org.eclipse.emf.edapt.migration.test/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.edapt.migration.test/META-INF/MANIFEST.MF
index 30e1a77..bc1f4f6 100644
--- a/plugins/org.eclipse.emf.edapt.migration.test/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.emf.edapt.migration.test/META-INF/MANIFEST.MF
@@ -2,22 +2,22 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.emf.edapt.migration.test;singleton:=true
-Bundle-Version: 1.3.1.qualifier
+Bundle-Version: 1.4.0.qualifier
 Bundle-Activator: org.eclipse.emf.edapt.migration.test.TestPlugin$Implementation
 Require-Bundle: org.eclipse.ui;bundle-version="[3.7.0,4.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)",
- org.eclipse.emf.edapt.common;bundle-version="[1.3.1,2.0.0)";visibility:=reexport,
+ org.eclipse.emf.edapt.common;bundle-version="[1.4.0,2.0.0)";visibility:=reexport,
  org.eclipse.emf.ecore.xmi;bundle-version="[2.7.0,3.0.0)";visibility:=reexport,
- org.eclipse.emf.edapt.history;bundle-version="[1.3.1,2.0.0)";visibility:=reexport,
- org.eclipse.emf.edapt.history.edit;bundle-version="[1.3.1,2.0.0)",
- org.eclipse.emf.edapt.migration;bundle-version="[1.3.1,2.0.0)";visibility:=reexport,
+ org.eclipse.emf.edapt.history;bundle-version="[1.4.0,2.0.0)";visibility:=reexport,
+ org.eclipse.emf.edapt.history.edit;bundle-version="[1.4.0,2.0.0)",
+ org.eclipse.emf.edapt.migration;bundle-version="[1.4.0,2.0.0)";visibility:=reexport,
  org.junit;bundle-version="[4.0.0,5.0.0)"
 Bundle-ActivationPolicy: lazy
 Bundle-Localization: plugin
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
-Export-Package: org.eclipse.emf.edapt.migration.test;version="1.3.1";x-internal:=true,
- org.eclipse.emf.edapt.migration.test.impl;version="1.3.1";x-internal:=true,
- org.eclipse.emf.edapt.migration.test.util;version="1.3.1";x-internal:=true
+Export-Package: org.eclipse.emf.edapt.migration.test;version="1.4.0";x-internal:=true,
+ org.eclipse.emf.edapt.migration.test.impl;version="1.4.0";x-internal:=true,
+ org.eclipse.emf.edapt.migration.test.util;version="1.4.0";x-internal:=true
 Bundle-Vendor: %providerName
 Automatic-Module-Name: org.eclipse.emf.edapt.migration.test
diff --git a/plugins/org.eclipse.emf.edapt.migration.test/pom.xml b/plugins/org.eclipse.emf.edapt.migration.test/pom.xml
index 2f5f3b8..2c2295f 100644
--- a/plugins/org.eclipse.emf.edapt.migration.test/pom.xml
+++ b/plugins/org.eclipse.emf.edapt.migration.test/pom.xml
@@ -5,7 +5,7 @@
   <parent>
     <groupId>edapt</groupId>
     <artifactId>plugins</artifactId>
-    <version>1.3.1-SNAPSHOT</version>
+    <version>1.4.0-SNAPSHOT</version>
   </parent>
   <groupId>edapt</groupId>
   <artifactId>org.eclipse.emf.edapt.migration.test</artifactId>
diff --git a/plugins/org.eclipse.emf.edapt.migration.ui/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.edapt.migration.ui/META-INF/MANIFEST.MF
index d76203f..d770b03 100644
--- a/plugins/org.eclipse.emf.edapt.migration.ui/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.emf.edapt.migration.ui/META-INF/MANIFEST.MF
@@ -2,21 +2,21 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.emf.edapt.migration.ui;singleton:=true
-Bundle-Version: 1.3.1.qualifier
+Bundle-Version: 1.4.0.qualifier
 Bundle-Activator: org.eclipse.emf.edapt.migration.ui.MigrationUIActivator
 Require-Bundle: org.eclipse.ui;bundle-version="[3.7.0,4.0.0)",
  org.eclipse.core.runtime;bundle-version="[3.7.0,4.0.0)",
- org.eclipse.emf.edapt.common;bundle-version="[1.3.1,2.0.0)",
- org.eclipse.emf.edapt.common.ui;bundle-version="[1.3.1,2.0.0)",
+ org.eclipse.emf.edapt.common;bundle-version="[1.4.0,2.0.0)",
+ org.eclipse.emf.edapt.common.ui;bundle-version="[1.4.0,2.0.0)",
  org.eclipse.core.expressions;bundle-version="[3.4.0,4.0.0)",
- org.eclipse.emf.edapt.history;bundle-version="[1.3.1,2.0.0)",
+ org.eclipse.emf.edapt.history;bundle-version="[1.4.0,2.0.0)",
  org.eclipse.debug.core;bundle-version="[3.7.0,4.0.0)",
  org.eclipse.jdt.launching;bundle-version="[3.6.0,4.0.0)",
  org.eclipse.debug.ui;bundle-version="[3.7.0,4.0.0)",
  org.eclipse.jdt.debug.ui;bundle-version="[3.6.0,4.0.0)"
 Bundle-ActivationPolicy: lazy
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
-Export-Package: org.eclipse.emf.edapt.migration.ui;version="1.3.1";x-internal:=true
+Export-Package: org.eclipse.emf.edapt.migration.ui;version="1.4.0";x-internal:=true
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
 Automatic-Module-Name: org.eclipse.emf.edapt.migration.ui
diff --git a/plugins/org.eclipse.emf.edapt.migration.ui/pom.xml b/plugins/org.eclipse.emf.edapt.migration.ui/pom.xml
index 4ef72c2..0841e7a 100644
--- a/plugins/org.eclipse.emf.edapt.migration.ui/pom.xml
+++ b/plugins/org.eclipse.emf.edapt.migration.ui/pom.xml
@@ -5,7 +5,7 @@
   <parent>
     <groupId>edapt</groupId>
     <artifactId>plugins</artifactId>
-    <version>1.3.1-SNAPSHOT</version>
+    <version>1.4.0-SNAPSHOT</version>
   </parent>
   <groupId>edapt</groupId>
   <artifactId>org.eclipse.emf.edapt.migration.ui</artifactId>
diff --git a/plugins/org.eclipse.emf.edapt.migration/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.edapt.migration/META-INF/MANIFEST.MF
index f27cdaf..67ecdad 100644
--- a/plugins/org.eclipse.emf.edapt.migration/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.emf.edapt.migration/META-INF/MANIFEST.MF
@@ -2,27 +2,27 @@
 Bundle-ManifestVersion: 2

 Bundle-Name: %pluginName

 Bundle-SymbolicName: org.eclipse.emf.edapt.migration;singleton:=true

-Bundle-Version: 1.3.1.qualifier

+Bundle-Version: 1.4.0.qualifier

 Bundle-ClassPath: .

 Bundle-Vendor: %providerName

 Bundle-Localization: plugin

 Bundle-RequiredExecutionEnvironment: JavaSE-1.6

-Export-Package: org.eclipse.emf.edapt.internal.migration;version="1.3.1",

- org.eclipse.emf.edapt.internal.migration.impl;version="1.3.1";x-internal:=true,

- org.eclipse.emf.edapt.internal.migration.internal;version="1.3.1";

+Export-Package: org.eclipse.emf.edapt.internal.migration;version="1.4.0",

+ org.eclipse.emf.edapt.internal.migration.impl;version="1.4.0";x-internal:=true,

+ org.eclipse.emf.edapt.internal.migration.internal;version="1.4.0";

   x-friends:="org.eclipse.emf.edapt.history,

    org.eclipse.emf.edapt.history.cdo,

    org.eclipse.emf.edapt.migration.test,

    org.eclipse.emf.edapt.migration.ui",

- org.eclipse.emf.edapt.migration;version="1.3.1",

- org.eclipse.emf.edapt.spi.migration;version="1.3.1",

- org.eclipse.emf.edapt.spi.migration.impl;version="1.3.1",

- org.eclipse.emf.edapt.spi.migration.util;version="1.3.1"

+ org.eclipse.emf.edapt.migration;version="1.4.0",

+ org.eclipse.emf.edapt.spi.migration;version="1.4.0",

+ org.eclipse.emf.edapt.spi.migration.impl;version="1.4.0",

+ org.eclipse.emf.edapt.spi.migration.util;version="1.4.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.ocl.ecore;bundle-version="[3.1.0,4.0.0)";visibility:=reexport,

  org.eclipse.emf.ecore.xmi;bundle-version="[2.7.0,3.0.0)",

- org.eclipse.emf.edapt.common;bundle-version="[1.3.1,2.0.0)"

+ org.eclipse.emf.edapt.common;bundle-version="[1.4.0,2.0.0)"

 Bundle-ActivationPolicy: lazy

 Bundle-Activator: org.eclipse.emf.edapt.spi.migration.MigrationPlugin$Implementation

 Automatic-Module-Name: org.eclipse.emf.edapt.migration

diff --git a/plugins/org.eclipse.emf.edapt.migration/pom.xml b/plugins/org.eclipse.emf.edapt.migration/pom.xml
index 1c5e05d..a60415d 100644
--- a/plugins/org.eclipse.emf.edapt.migration/pom.xml
+++ b/plugins/org.eclipse.emf.edapt.migration/pom.xml
@@ -5,7 +5,7 @@
   <parent>
     <groupId>edapt</groupId>
     <artifactId>plugins</artifactId>
-    <version>1.3.1-SNAPSHOT</version>
+    <version>1.4.0-SNAPSHOT</version>
   </parent>
   <groupId>edapt</groupId>
   <artifactId>org.eclipse.emf.edapt.migration</artifactId>
diff --git a/plugins/pom.xml b/plugins/pom.xml
index a32da40..ae7e691 100644
--- a/plugins/pom.xml
+++ b/plugins/pom.xml
@@ -9,7 +9,7 @@
 	<parent>
 		<groupId>edapt</groupId>
 		<artifactId>root</artifactId>
-		<version>1.3.1-SNAPSHOT</version>
+		<version>1.4.0-SNAPSHOT</version>
 		<relativePath>../builds/org.eclipse.emf.edapt.releng</relativePath>  
 	</parent>
 
diff --git a/tests/org.eclipse.emf.edapt.common.tests/META-INF/MANIFEST.MF b/tests/org.eclipse.emf.edapt.common.tests/META-INF/MANIFEST.MF
index 32ab18b..fcb1eff 100644
--- a/tests/org.eclipse.emf.edapt.common.tests/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.emf.edapt.common.tests/META-INF/MANIFEST.MF
@@ -2,10 +2,10 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Edapt.Common Tests
 Bundle-SymbolicName: org.eclipse.emf.edapt.common.tests
-Bundle-Version: 1.3.1.qualifier
-Fragment-Host: org.eclipse.emf.edapt.common;bundle-version="[1.3.1,2.0.0)"
+Bundle-Version: 1.4.0.qualifier
+Fragment-Host: org.eclipse.emf.edapt.common;bundle-version="[1.4.0,2.0.0)"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Bundle-Vendor: Eclipse Modeling Project
 Require-Bundle: org.junit;bundle-version="[4.0.0,5.0.0)"
-Export-Package: org.eclipse.emf.edapt.internal.common;version="1.3.1";x-internal:=true
+Export-Package: org.eclipse.emf.edapt.internal.common;version="1.4.0";x-internal:=true
 Automatic-Module-Name: org.eclipse.emf.edapt.common.tests
diff --git a/tests/org.eclipse.emf.edapt.common.tests/pom.xml b/tests/org.eclipse.emf.edapt.common.tests/pom.xml
index ca61d9e..3c9e101 100644
--- a/tests/org.eclipse.emf.edapt.common.tests/pom.xml
+++ b/tests/org.eclipse.emf.edapt.common.tests/pom.xml
@@ -6,7 +6,7 @@
 	<parent>
 		<groupId>edapt</groupId>
 		<artifactId>root</artifactId>
-		<version>1.3.1-SNAPSHOT</version>
+		<version>1.4.0-SNAPSHOT</version>
 		<relativePath>../../builds/org.eclipse.emf.edapt.releng</relativePath>  
 	</parent>
 	<groupId>edapt</groupId>
diff --git a/tests/org.eclipse.emf.edapt.common.tests/src/org/eclipse/emf/edapt/internal/common/URIUtilsTest.java b/tests/org.eclipse.emf.edapt.common.tests/src/org/eclipse/emf/edapt/internal/common/URIUtilsTest.java
index bae32a2..7d90c34 100644
--- a/tests/org.eclipse.emf.edapt.common.tests/src/org/eclipse/emf/edapt/internal/common/URIUtilsTest.java
+++ b/tests/org.eclipse.emf.edapt.common.tests/src/org/eclipse/emf/edapt/internal/common/URIUtilsTest.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2007-2015 BMW Car IT, TUM, EclipseSource Muenchen GmbH, and others.
+ * Copyright (c) 2007-2019 BMW Car IT, TUM, EclipseSource Muenchen GmbH, 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
@@ -8,40 +8,103 @@
  *
  * Contributors:
  * Johannes Faltermeier - initial API and implementation
+ * Christian W. Damus - bug 544147
  ******************************************************************************/
 package org.eclipse.emf.edapt.internal.common;
 
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.MatcherAssert.assertThat;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
 
 import java.io.File;
 import java.io.FileNotFoundException;
+import java.util.Arrays;
 import java.util.Scanner;
 
 import org.eclipse.emf.common.util.URI;
 import org.eclipse.emf.ecore.resource.impl.ExtensibleURIConverterImpl;
 import org.junit.Test;
+import org.junit.experimental.runners.Enclosed;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+import org.junit.runners.Parameterized.Parameters;
 
+@RunWith(Enclosed.class)
 public class URIUtilsTest {
 
-	@Test
-	public void testGetJavaFileWithPlatformPluginURI() throws FileNotFoundException {
-		Scanner scanner = null;
-		try {
-			final URI uri = URI.createPlatformPluginURI("org.eclipse.emf.edapt.common.tests/resources/resource", false); //$NON-NLS-1$
-			assertTrue(new ExtensibleURIConverterImpl().exists(uri, null));
-			final File javaFile = URIUtils.getJavaFile(uri);
-			assertNotNull(javaFile);
-			scanner = new Scanner(javaFile);
-			scanner.useDelimiter("\\Z"); //$NON-NLS-1$
-			final String content = scanner.next();
-			assertEquals("foo", content); //$NON-NLS-1$
-		} finally {
-			if (scanner != null) {
-				scanner.close();
+	/**
+	 * Core tests.
+	 */
+	public static class Core {
+
+		@Test
+		public void testGetJavaFileWithPlatformPluginURI() throws FileNotFoundException {
+			Scanner scanner = null;
+			try {
+				final URI uri = URI.createPlatformPluginURI("org.eclipse.emf.edapt.common.tests/resources/resource", //$NON-NLS-1$
+					false);
+				assertTrue(new ExtensibleURIConverterImpl().exists(uri, null));
+				final File javaFile = URIUtils.getJavaFile(uri);
+				assertNotNull(javaFile);
+				scanner = new Scanner(javaFile);
+				scanner.useDelimiter("\\Z"); //$NON-NLS-1$
+				final String content = scanner.next();
+				assertEquals("foo", content); //$NON-NLS-1$
+			} finally {
+				if (scanner != null) {
+					scanner.close();
+				}
 			}
 		}
 
 	}
+
+	/**
+	 * Test cases for the {@link URIUtils#incrementVersionSegment(String)} API.
+	 */
+	@RunWith(Parameterized.class)
+	public static class IncrementVersionSegment {
+		private final String input;
+		private final String expected;
+
+		/**
+		 * Initializes me with the {@code input} segment and the {@code expected} result.
+		 *
+		 * @param input the segment to increment
+		 * @param expected the expected result
+		 */
+		public IncrementVersionSegment(String input, String expected) {
+			super();
+
+			this.input = input;
+			this.expected = expected;
+		}
+
+		@Test
+		public void increment() {
+			assertThat(URIUtils.incrementVersionSegment(input), is(expected));
+		}
+
+		@Parameters(name = "{0}")
+		@SuppressWarnings("nls")
+		public static Iterable<Object[]> parameters() {
+			return Arrays.asList(new Object[][] {
+				{ "1", "2" },
+				{ "v1", "v2" },
+				{ "1.0.0", "2.0.0" },
+				{ "v1.0.0", "v2.0.0" },
+				{ "beta_1", "beta_2" },
+				{ "beta-1.0.0", "beta-2.0.0" },
+				{ "dev1", "dev1" }, // Not like "v1"
+				{ "dev1_1.0.0", "dev1_2.0.0" },
+				{ "jar.1.0.0", "jar.2.0.0" },
+				{ "v123456789012345678901234567890", "v123456789012345678901234567891" },
+				{ "SNAPSHOT", "SNAPSHOT" },
+			});
+		}
+
+	}
+
 }
diff --git a/tests/org.eclipse.emf.edapt.rcptt/general/Multiple ecores.test b/tests/org.eclipse.emf.edapt.rcptt/general/Multiple ecores.test
index da4c95a..4dc565f 100644
--- a/tests/org.eclipse.emf.edapt.rcptt/general/Multiple ecores.test
+++ b/tests/org.eclipse.emf.edapt.rcptt/general/Multiple ecores.test
@@ -6,8 +6,8 @@
 Element-Version: 3.0
 External-Reference: 
 Id: _ExiWUMoSEeeVv4pPxMNi2w
-Runtime-Version: 2.2.0.201706152316
-Save-Time: 11/15/17 3:43 PM
+Runtime-Version: 2.3.0.201806262310
+Save-Time: 2/6/19 9:54 AM
 Testcase-Type: ecl
 
 ------=_.content-0a7243a0-75d3-3d5f-9791-539de0e5b7ac
@@ -28,7 +28,7 @@
     | select "platform:\\/resource\\/org.eclipse.emf.ecp.makeithappen.model\\/model\\/My.ecore/" | double-click
 with [get-view Properties | get-tree] {
     select "Ns URI" | activate-cell-edit -column 1
-    get-editbox | set-text a
+    get-editbox | set-text "http://test/a"
     apply-cell-edit
     select Name | activate-cell-edit -column 1
     get-editbox | set-text a
@@ -50,7 +50,11 @@
         get-button OK | click
     }
     get-button OK | click
-    get-window "Resource loaded" | get-button Yes | click
+    with [get-window "Add EPackage to History"] {
+        get-label "An Ecore resource.*" | get-property caption | contains "'http://test/a'" | verify-true
+        get-button "Remember my decision" | click
+        get-button Yes | click
+    }
 }
 get-view "Operation Browser - task.ecore" | click
 get-view "Operation Browser - task.ecore" | get-button Release | click
@@ -61,7 +65,8 @@
         | equals "http://eclipse/org/emf/ecp/makeithappen/model/task" | verify-true
     get-editbox -after [get-label "http://eclipse/org/emf/ecp/makeithappen/model/task"] | get-property text 
         | equals task | verify-true
-    get-label a | get-property caption | equals a | verify-true
-    get-editbox -after [get-label a] | get-property text | equals a | verify-true
+    get-label "http://test/a" | get-property caption | equals "http://test/a" | verify-true
+    get-editbox -after [get-label "http://test/a"] | get-property text | equals "a" | verify-true
 }
+
 ------=_.content-0a7243a0-75d3-3d5f-9791-539de0e5b7ac--
diff --git a/tests/org.eclipse.emf.edapt.rcptt/pom.xml b/tests/org.eclipse.emf.edapt.rcptt/pom.xml
index d22a239..be5af12 100644
--- a/tests/org.eclipse.emf.edapt.rcptt/pom.xml
+++ b/tests/org.eclipse.emf.edapt.rcptt/pom.xml
@@ -4,12 +4,12 @@
 	<modelVersion>4.0.0</modelVersion>
 	<groupId>org.eclipse.emf.edapt</groupId>
 	<artifactId>org.eclipse.emf.edapt.rcptt</artifactId>
-	<version>1.3.1-SNAPSHOT</version>
+	<version>1.4.0-SNAPSHOT</version>
 	<packaging>rcpttTest</packaging>
 
 	<properties>
-		<rcptt-maven-version>2.3.0</rcptt-maven-version>
-		<rcptt-runner-version>2.3.0</rcptt-runner-version>
+		<rcptt-maven-version>2.4.0-SNAPSHOT</rcptt-maven-version>
+		<rcptt-runner-version>2.4.0-SNAPSHOT</rcptt-runner-version>
 		<toolchains-version>1.1</toolchains-version>
 	</properties>
 
diff --git a/tests/org.eclipse.emf.edapt.tests/META-INF/MANIFEST.MF b/tests/org.eclipse.emf.edapt.tests/META-INF/MANIFEST.MF
index e067e15..9bfaf49 100644
--- a/tests/org.eclipse.emf.edapt.tests/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.emf.edapt.tests/META-INF/MANIFEST.MF
@@ -2,21 +2,21 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.emf.edapt.tests;singleton:=true
-Bundle-Version: 1.3.1.qualifier
+Bundle-Version: 1.4.0.qualifier
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Require-Bundle: org.eclipse.emf.ecore.xmi;bundle-version="[2.9.1,3.0.0)",
  org.eclipse.emf.edit;bundle-version="[2.9.0,3.0.0)",
- org.eclipse.emf.edapt.common;bundle-version="[1.3.1,2.0.0)",
- org.eclipse.emf.edapt.migration.test;bundle-version="[1.3.1,2.0.0)",
- org.eclipse.emf.edapt.history.editor;bundle-version="[1.3.1,2.0.0)",
- org.eclipse.emf.edapt.migration;bundle-version="[1.3.1,2.0.0)",
- org.eclipse.emf.edapt.declaration.editor;bundle-version="[1.3.1,2.0.0)",
+ org.eclipse.emf.edapt.common;bundle-version="[1.3.0,2.0.0)",
+ org.eclipse.emf.edapt.migration.test;bundle-version="[1.3.0,2.0.0)",
+ org.eclipse.emf.edapt.history.editor;bundle-version="[1.3.0,2.0.0)",
+ org.eclipse.emf.edapt.migration;bundle-version="[1.3.0,2.0.0)",
+ org.eclipse.emf.edapt.declaration.editor;bundle-version="[1.3.0,2.0.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.objenesis;bundle-version="[1.0.0,2.0.0)"
-Export-Package: org.eclipse.emf.edapt.tests.declaration;version="1.3.1";x-internal:=true,
- org.eclipse.emf.edapt.tests.history;version="1.3.1";x-internal:=true,
- org.eclipse.emf.edapt.tests.migration;version="1.3.1";x-internal:=true,
- org.eclipse.emf.edapt.tests.migration.custom;version="1.3.1";x-internal:=true,
- org.eclipse.emf.edapt.tests.util;version="1.3.1";x-internal:=true
+Export-Package: org.eclipse.emf.edapt.tests.declaration;version="1.4.0";x-internal:=true,
+ org.eclipse.emf.edapt.tests.history;version="1.4.0";x-internal:=true,
+ org.eclipse.emf.edapt.tests.migration;version="1.4.0";x-internal:=true,
+ org.eclipse.emf.edapt.tests.migration.custom;version="1.4.0";x-internal:=true,
+ org.eclipse.emf.edapt.tests.util;version="1.4.0";x-internal:=true
 Bundle-Vendor: %providerName
diff --git a/tests/org.eclipse.emf.edapt.tests/pom.xml b/tests/org.eclipse.emf.edapt.tests/pom.xml
index 8686f84..25c1880 100644
--- a/tests/org.eclipse.emf.edapt.tests/pom.xml
+++ b/tests/org.eclipse.emf.edapt.tests/pom.xml
@@ -6,7 +6,7 @@
 	<parent>
 		<groupId>edapt</groupId>
 		<artifactId>root</artifactId>
-		<version>1.3.1-SNAPSHOT</version>
+		<version>1.4.0-SNAPSHOT</version>
 		<relativePath>../../builds/org.eclipse.emf.edapt.releng</relativePath>  
 	</parent>
 	<groupId>edapt</groupId>