[512737] Add MiToSiSimple example
diff --git a/tests/org.eclipse.qvtd.umlx.tests/src/org/eclipse/qvtd/umlx/tests/UMLXSerializeTests.java b/tests/org.eclipse.qvtd.umlx.tests/src/org/eclipse/qvtd/umlx/tests/UMLXSerializeTests.java
index 649c70e..f33a74f 100644
--- a/tests/org.eclipse.qvtd.umlx.tests/src/org/eclipse/qvtd/umlx/tests/UMLXSerializeTests.java
+++ b/tests/org.eclipse.qvtd.umlx.tests/src/org/eclipse/qvtd/umlx/tests/UMLXSerializeTests.java
@@ -332,6 +332,10 @@
 		doRoundTripTest("/org.eclipse.qvtd.xtext.qvtrelation.tests/src/org/eclipse/qvtd/xtext/qvtrelation/tests/models/", "Keys", true);
 	}
 
+	public void testUMLXRoundtrip_MiToSiSimple_qvtr() throws Exception {
+		doRoundTripTest("/org.eclipse.qvtd.xtext.qvtrelation.tests/src/org/eclipse/qvtd/xtext/qvtrelation/tests/mitosi/", "MiToSiSimple", true);
+	}
+
 	public void testUMLXRoundtrip_PN2SC_qvtr() throws Exception {
 		doRoundTripTest("/org.eclipse.qvtd.xtext.qvtrelation.tests/src/org/eclipse/qvtd/xtext/qvtrelation/tests/pn2sc/", "PetriNet2StateChart", true);
 	}
diff --git a/tests/org.eclipse.qvtd.xtext.qvtrelation.tests/src/org/eclipse/qvtd/xtext/qvtrelation/tests/LoadTests.java b/tests/org.eclipse.qvtd.xtext.qvtrelation.tests/src/org/eclipse/qvtd/xtext/qvtrelation/tests/LoadTests.java
index c14eaba..f4db7d1 100644
--- a/tests/org.eclipse.qvtd.xtext.qvtrelation.tests/src/org/eclipse/qvtd/xtext/qvtrelation/tests/LoadTests.java
+++ b/tests/org.eclipse.qvtd.xtext.qvtrelation.tests/src/org/eclipse/qvtd/xtext/qvtrelation/tests/LoadTests.java
@@ -63,8 +63,7 @@
 		});
 	}
 
-	// FIXME
-	public void zztestLoad_ClassModelToClassModel_qvtr() throws IOException, InterruptedException {
+	public void testLoad_ClassModelToClassModel_qvtr() throws IOException, InterruptedException {
 		doLoad_ModelMorf("ClassModelToClassModel/ClassModelToClassModel", NO_MESSAGES);
 	}
 
@@ -93,16 +92,15 @@
 		});
 	}
 
+	public void testLoad_MiToSiSimple_qvtr() throws IOException, InterruptedException {
+		//		doLoad_ModelMorf("MiToSi/mitosi");
+		doLoad_Concrete("mitosi/MiToSiSimple.qvtr", NO_MESSAGES);
+	}
 
 	public void testLoad_Packages_qvtr() throws IOException, InterruptedException {
 		doLoad_Concrete("models/Packages.qvtr", NO_MESSAGES);
 	}
 
-	public void testLoad_MiToSi_qvtr() throws IOException, InterruptedException {
-		//		doLoad_ModelMorf("MiToSi/mitosi");
-		doLoad_Concrete("mitosi/MiToSi.qvtr", NO_MESSAGES);
-	}
-
 	public void testLoad_RelToCore_qvtr() throws IOException, InterruptedException {
 		//		ProjectMap.getAdapter(resourceSet);
 		URI inputURI = URI.createPlatformResourceURI("/org.eclipse.qvtd.examples.qvtrelation.reltocore/qvtrsrc/RelToCore.qvtr", true);
diff --git a/tests/org.eclipse.qvtd.xtext.qvtrelation.tests/src/org/eclipse/qvtd/xtext/qvtrelation/tests/QVTrCompilerTests.java b/tests/org.eclipse.qvtd.xtext.qvtrelation.tests/src/org/eclipse/qvtd/xtext/qvtrelation/tests/QVTrCompilerTests.java
index 20c5354..f70b77b 100644
--- a/tests/org.eclipse.qvtd.xtext.qvtrelation.tests/src/org/eclipse/qvtd/xtext/qvtrelation/tests/QVTrCompilerTests.java
+++ b/tests/org.eclipse.qvtd.xtext.qvtrelation.tests/src/org/eclipse/qvtd/xtext/qvtrelation/tests/QVTrCompilerTests.java
@@ -26,6 +26,7 @@
 import org.eclipse.ocl.pivot.internal.resource.StandaloneProjectMap;
 import org.eclipse.ocl.pivot.model.OCLstdlib;
 import org.eclipse.ocl.pivot.utilities.ClassUtil;
+import org.eclipse.ocl.pivot.utilities.ToStringVisitor;
 import org.eclipse.ocl.xtext.base.services.BaseLinkingService;
 import org.eclipse.qvtd.compiler.CompilerChain;
 import org.eclipse.qvtd.compiler.CompilerChain.Key;
@@ -491,6 +492,39 @@
 	}
 
 	@Test
+	public void testQVTrCompiler_MiToSiSimple_CG() throws Exception {
+		ToStringVisitor.SHOW_ALL_MULTIPLICITIES = true;
+		//		Splitter.GROUPS.setState(true);
+		//		Splitter.RESULT.setState(true);
+		//		Splitter.STAGES.setState(true);
+		//		AbstractTransformer.EXCEPTIONS.setState(true);
+		//		AbstractTransformer.INVOCATIONS.setState(true);
+		//   	QVTm2QVTp.PARTITIONING.setState(true);
+		MyQVT myQVT = new MyQVT("mitosi");
+		try {
+			Class<? extends Transformer> txClass = myQVT.buildTransformation("mitosi", "MiToSiSimple.qvtr", "java",
+				"http://www.eclipse.org/qvtd/xtext/qvtrelation/tests/mitosi/MiToSiSimple", false);
+			//
+			//			myQVT.assertRegionCount(BasicMappingRegionImpl.class, 0);
+			//			myQVT.assertRegionCount(EarlyMerger.EarlyMergedMappingRegion.class, 0);
+			//			myQVT.assertRegionCount(LateConsumerMerger.LateMergedMappingRegion.class, 0);
+			//			myQVT.assertRegionCount(MicroMappingRegionImpl.class, 8);
+			myQVT.createGeneratedExecutor(txClass);
+			myQVT.loadInput("uml", "transportuml.xml");
+			myQVT.executeTransformation();
+			myQVT.saveOutput("java", "transportjava_CG.xml", "transportjava.xml", null);
+			//
+			//	        myQVT.createGeneratedExecutor(txClass);
+			//	    	myQVT.loadInput("seqDgm", "SeqUM.xmi");
+			//	    	myQVT.executeTransformation();
+			//			myQVT.saveOutput("stm", "StmcUM_CG.xmi", "StmcUM_expected.xmi", null);
+		}
+		finally {
+			myQVT.dispose();
+		}
+	}
+
+	@Test
 	public void testQVTrCompiler_SeqToStm() throws Exception {
 		//		AbstractTransformer.EXCEPTIONS.setState(true);
 		//		AbstractTransformer.INVOCATIONS.setState(true);
diff --git a/tests/org.eclipse.qvtd.xtext.qvtrelation.tests/src/org/eclipse/qvtd/xtext/qvtrelation/tests/QVTrSerializeTests.java b/tests/org.eclipse.qvtd.xtext.qvtrelation.tests/src/org/eclipse/qvtd/xtext/qvtrelation/tests/QVTrSerializeTests.java
index eea9862..2d91814 100644
--- a/tests/org.eclipse.qvtd.xtext.qvtrelation.tests/src/org/eclipse/qvtd/xtext/qvtrelation/tests/QVTrSerializeTests.java
+++ b/tests/org.eclipse.qvtd.xtext.qvtrelation.tests/src/org/eclipse/qvtd/xtext/qvtrelation/tests/QVTrSerializeTests.java
@@ -149,6 +149,10 @@
 		});
 	}
 
+	public void testSerialize_MiToSiSimple() throws Exception {
+		doSerializeRoundTripFromCS("mitosi/MiToSiSimple", null);
+	}
+
 	public void testSerialize_PetriNet2StateChart() throws Exception {
 		doSerializeRoundTripFromCS("pn2sc/PetriNet2StateChart", null);
 	}
diff --git a/tests/org.eclipse.qvtd.xtext.qvtrelation.tests/src/org/eclipse/qvtd/xtext/qvtrelation/tests/mitosi/.gitignore b/tests/org.eclipse.qvtd.xtext.qvtrelation.tests/src/org/eclipse/qvtd/xtext/qvtrelation/tests/mitosi/.gitignore
new file mode 100644
index 0000000..242cce7
--- /dev/null
+++ b/tests/org.eclipse.qvtd.xtext.qvtrelation.tests/src/org/eclipse/qvtd/xtext/qvtrelation/tests/mitosi/.gitignore
@@ -0,0 +1 @@
+/*.umlx
diff --git a/tests/org.eclipse.qvtd.xtext.qvtrelation.tests/src/org/eclipse/qvtd/xtext/qvtrelation/tests/mitosi/MiToSiSimple.qvtr b/tests/org.eclipse.qvtd.xtext.qvtrelation.tests/src/org/eclipse/qvtd/xtext/qvtrelation/tests/mitosi/MiToSiSimple.qvtr
new file mode 100644
index 0000000..d5b95e3
--- /dev/null
+++ b/tests/org.eclipse.qvtd.xtext.qvtrelation.tests/src/org/eclipse/qvtd/xtext/qvtrelation/tests/mitosi/MiToSiSimple.qvtr
@@ -0,0 +1,142 @@
+/*******************************************************************************
+ * Copyright (c) 2007,2008 Tata Consultancy Services and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     TCS - initial implementation for ModelMorf
+ *     E.D.Willink - alignment with evolved specification
+ *******************************************************************************/
+import ecoreMM : 'http://www.eclipse.org/emf/2002/Ecore'; 
+import umlmmmi : 'umlMM.emof'::umlmmmi; 
+import javammsi : 'javaMM.emof'::javammsi; 
+
+/*
+ * This rewrite of ModelMorf's MiToSi example avoids complexities by doing one thing per relation.
+ */
+transformation MiToSiSimple(uml:{umlmmmi,ecoreMM}, java:javammsi)
+{
+--	key umlmmmi::Class {name};
+--	key javammsi::Class {name};
+--	key javammsi::Interface {name};
+
+	/**
+	 * Return true if this class or a transitive super-class is marked as DomainRoot. 
+	 */
+	 query isClass(c : umlmmmi::Class) : Boolean {
+		c->closure(supers)->exists(type = 'DomainRoot')		
+	}
+
+	/**
+	 * Create a Package for each Package.
+	 */
+	top relation PackageToPackage
+	{
+		n : String;
+		domain uml p1:Package {
+			name = n
+		};	
+		enforce domain java p2:Package {
+			name = n
+		};
+	}
+
+	/**
+	 * Create a Class for each isClass() class.
+	 */
+	top relation ClassToClass
+	{
+		n : String;
+		domain uml c1:Class {
+			containingPackage = p1:Package{},
+			name = n
+		}
+		{isClass(c1)};		
+		enforce domain java c2:Class {
+			containingPackage = p2:Package{},
+			name = n
+		};
+		when {
+			PackageToPackage(p1, p2);
+		}
+	}
+
+	/**
+	 * Create an Interface for each non-isClass() class.
+	 */
+	top relation ClassToInterface
+	{
+		n : String;
+		domain uml c1:Class {
+			containingPackage = p1:Package{},
+			name = n
+		}
+		{not isClass(c1)};		
+		enforce domain java c2:Interface {
+			containingPackage = p2:Package{},
+			name = n
+		};
+		when {
+			PackageToPackage(p1, p2);
+		}
+	}
+
+	/**
+	 * Define a Class::extends relationship for each class with a super-class
+	 */
+	top relation ClassExtends
+	{
+		c1sup: umlmmmi::Class;
+		c2sup: javammsi::Class;
+		domain uml c1:Class {
+			supers = s1:Set(Class){c1sup ++ _}
+		};
+		enforce domain java c2:Class {
+			extends = s2:Set(Class){c2sup ++ _}
+		};
+		when {
+			ClassToClass(c1, c2);
+			ClassToClass(c1sup, c2sup);
+		}
+	}
+
+	/**
+	 * Define a Class::implements relationship for each class with a super-interface
+	 */
+	top relation ClassImplements
+	{
+		c1sup: umlmmmi::Class;
+		c2sup: javammsi::Interface;
+		domain uml c1:Class {
+			supers = s1:Set(Class){c1sup ++ _}
+		};
+		enforce domain java c2:Class {
+			implements = s2:Set(Interface){c2sup ++ _}
+		};
+		when {
+			ClassToClass(c1, c2);
+			ClassToInterface(c1sup, c2sup);
+		}
+	}
+
+	/**
+	 * Define a Interface::extends relationship for each interface with a super-interface
+	 */
+	top relation InterfaceExtends
+	{
+		c1sup: umlmmmi::Class;
+		c2sup: javammsi::Interface;
+		domain uml c1:Class {
+			supers = s1:Set(Class){c1sup ++ _}
+		};
+		enforce domain java c2:Interface {
+			extends = s2:Set(Interface){c2sup ++ _}
+		};
+		when {
+			ClassToInterface(c1, c2);
+			ClassToInterface(c1sup, c2sup);
+		}
+	}
+}
diff --git a/tests/org.eclipse.qvtd.xtext.qvtrelation.tests/src/org/eclipse/qvtd/xtext/qvtrelation/tests/mitosi/javaMM.emof b/tests/org.eclipse.qvtd.xtext.qvtrelation.tests/src/org/eclipse/qvtd/xtext/qvtrelation/tests/mitosi/javaMM.emof
new file mode 100644
index 0000000..f895f2a
--- /dev/null
+++ b/tests/org.eclipse.qvtd.xtext.qvtrelation.tests/src/org/eclipse/qvtd/xtext/qvtrelation/tests/mitosi/javaMM.emof
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<emof:Package xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:emof="http://schema.omg.org/spec/MOF/2.0/emof.xml"
+    xmi:id="javammsi" name="javammsi" uri="http://www.eclipse.org/qvtd/xtext/qvtrelation/tests/mitosi/java">
+  <ownedType xmi:type="emof:Class" xmi:id="javammsi.Class" name="Class">
+    <ownedAttribute xmi:id="javammsi.Class.extends.1" name="containingPackage" type="javammsi.dummy"
+        opposite="javammsi.dummy.containsClass"/>
+    <ownedAttribute xmi:id="javammsi.Class.Extends" name="extends" lower="0" upper="*"
+        type="javammsi.Class" opposite="javammsi.Class.extendedBy"/>
+    <ownedAttribute xmi:id="javammsi.Class.extendedBy" name="extendedBy" lower="0"
+        upper="*" type="javammsi.Class" opposite="javammsi.Class.Extends"/>
+    <ownedAttribute xmi:id="javammsi.Class.implements" name="implements" lower="0"
+        upper="*" type="javammsi.Interface" opposite="javammsi.Interface.implementedBy"/>
+    <ownedAttribute xmi:id="javammsi.Class.name" name="name" isID="true">
+      <type xmi:type="emof:PrimitiveType" href="http://schema.omg.org/spec/MOF/2.0/emof.xml#String"/>
+    </ownedAttribute>
+  </ownedType>
+  <ownedType xmi:type="emof:Class" xmi:id="javammsi.Interface" name="Interface">
+    <ownedAttribute xmi:id="javammsi.Interface.containingPackage" name="containingPackage"
+        type="javammsi.dummy" opposite="javammsi.dummy.containsIterface"/>
+    <ownedAttribute xmi:id="javammsi.Interface.implementedBy" name="implementedBy"
+        lower="0" upper="*" type="javammsi.Class" opposite="javammsi.Class.implements"/>
+    <ownedAttribute xmi:id="javammsi.Interface.Extends" name="extends" lower="0" upper="*"
+        type="javammsi.Interface" opposite="javammsi.Interface.extendedBy"/>
+    <ownedAttribute xmi:id="javammsi.Interface.extendedBy" name="extendedBy" lower="0"
+        upper="*" type="javammsi.Interface" opposite="javammsi.Interface.Extends"/>
+    <ownedAttribute xmi:id="javammsi.Interface.name" name="name" isID="true">
+      <type xmi:type="emof:PrimitiveType" href="http://schema.omg.org/spec/MOF/2.0/emof.xml#String"/>
+    </ownedAttribute>
+  </ownedType>
+  <ownedType xmi:type="emof:Class" xmi:id="javammsi.dummy" name="Package">
+    <ownedAttribute xmi:id="javammsi.dummy.containsClass" name="containsClass" lower="0"
+        upper="*" type="javammsi.Class" isComposite="true" opposite="javammsi.Class.extends.1"/>
+    <ownedAttribute xmi:id="javammsi.dummy.containsIterface" name="containsInterface"
+        lower="0" upper="*" type="javammsi.Interface" isComposite="true" opposite="javammsi.Interface.containingPackage"/>
+    <ownedAttribute xmi:id="javammsi.Package.name" name="name" isID="true">
+      <type xmi:type="emof:PrimitiveType" href="http://schema.omg.org/spec/MOF/2.0/emof.xml#String"/>
+    </ownedAttribute>
+  </ownedType>
+  <xmi:Extension extender="http://www.eclipse.org/emf/2002/Ecore">
+    <nsPrefix>javammsi</nsPrefix>
+  </xmi:Extension>
+</emof:Package>
diff --git a/tests/org.eclipse.qvtd.xtext.qvtrelation.tests/src/org/eclipse/qvtd/xtext/qvtrelation/tests/mitosi/samples/transportjava.xml b/tests/org.eclipse.qvtd.xtext.qvtrelation.tests/src/org/eclipse/qvtd/xtext/qvtrelation/tests/mitosi/samples/transportjava.xml
new file mode 100644
index 0000000..fc9dfb2
--- /dev/null
+++ b/tests/org.eclipse.qvtd.xtext.qvtrelation.tests/src/org/eclipse/qvtd/xtext/qvtrelation/tests/mitosi/samples/transportjava.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<javammsi:Package xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:javammsi="http://www.eclipse.org/qvtd/xtext/qvtrelation/tests/mitosi/java"

+    xsi:schemaLocation="http://www.eclipse.org/qvtd/xtext/qvtrelation/tests/mitosi/java ../javaMM.emof#javammsi"

+    name="transport">

+  <containsClass extendedBy="#TwoWheeler #ThreeWheeler #FourWheeler" name="Vehicle"/>

+  <containsClass extends="#Vehicle" implements="#TwoStrokeEngine" name="TwoWheeler"/>

+  <containsClass extends="#Vehicle" implements="#TwoStrokeEngine" name="ThreeWheeler"/>

+  <containsClass extends="#Vehicle" implements="#FourStrokeEngine" name="FourWheeler"/>

+  <containsInterface extendedBy="#SteamEngine #ICEngine" name="Engine"/>

+  <containsInterface extends="#Engine" name="SteamEngine"/>

+  <containsInterface extends="#Engine" extendedBy="#TwoStrokeEngine #FourStrokeEngine" name="ICEngine"/>

+  <containsInterface implementedBy="#TwoWheeler #ThreeWheeler" extends="#ICEngine" name="TwoStrokeEngine"/>

+  <containsInterface implementedBy="#FourWheeler" extends="#ICEngine" name="FourStrokeEngine"/>

+</javammsi:Package>

diff --git a/tests/org.eclipse.qvtd.xtext.qvtrelation.tests/src/org/eclipse/qvtd/xtext/qvtrelation/tests/mitosi/samples/transportuml.xml b/tests/org.eclipse.qvtd.xtext.qvtrelation.tests/src/org/eclipse/qvtd/xtext/qvtrelation/tests/mitosi/samples/transportuml.xml
new file mode 100644
index 0000000..7e0e925
--- /dev/null
+++ b/tests/org.eclipse.qvtd.xtext.qvtrelation.tests/src/org/eclipse/qvtd/xtext/qvtrelation/tests/mitosi/samples/transportuml.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<umlmmmi:Package xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:umlmmmi="http://www.eclipse.org/qvtd/xtext/qvtrelation/tests/mitosi/uml" xsi:schemaLocation="http://www.eclipse.org/qvtd/xtext/qvtrelation/tests/mitosi/uml ../umlMM.emof#umlmmmi" xmi:id="_pqqNkELpEdu4D7MpmOwj_g" name="transport">
+  <containsClass xmi:id="_r-B-YELpEdu4D7MpmOwj_g" type="DomainRoot" subs="_sSS-MELpEdu4D7MpmOwj_g _skLYYELpEdu4D7MpmOwj_g _s1KasELpEdu4D7MpmOwj_g" name="Vehicle"/>
+  <containsClass xmi:id="_sSS-MELpEdu4D7MpmOwj_g" supers="_r-B-YELpEdu4D7MpmOwj_g _uSmCAELpEdu4D7MpmOwj_g" name="TwoWheeler"/>
+  <containsClass xmi:id="_skLYYELpEdu4D7MpmOwj_g" supers="_r-B-YELpEdu4D7MpmOwj_g _uSmCAELpEdu4D7MpmOwj_g" name="ThreeWheeler"/>
+  <containsClass xmi:id="_s1KasELpEdu4D7MpmOwj_g" supers="_r-B-YELpEdu4D7MpmOwj_g _ujSJYELpEdu4D7MpmOwj_g" name="FourWheeler"/>
+  <containsClass xmi:id="_tGJdAELpEdu4D7MpmOwj_g" subs="_tsmZAELpEdu4D7MpmOwj_g _uAHx8ELpEdu4D7MpmOwj_g" name="Engine"/>
+  <containsClass xmi:id="_tsmZAELpEdu4D7MpmOwj_g" supers="_tGJdAELpEdu4D7MpmOwj_g" name="SteamEngine"/>
+  <containsClass xmi:id="_uAHx8ELpEdu4D7MpmOwj_g" supers="_tGJdAELpEdu4D7MpmOwj_g" subs="_uSmCAELpEdu4D7MpmOwj_g _ujSJYELpEdu4D7MpmOwj_g" name="ICEngine"/>
+  <containsClass xmi:id="_uSmCAELpEdu4D7MpmOwj_g" supers="_uAHx8ELpEdu4D7MpmOwj_g" subs="_sSS-MELpEdu4D7MpmOwj_g _skLYYELpEdu4D7MpmOwj_g" name="TwoStrokeEngine"/>
+  <containsClass xmi:id="_ujSJYELpEdu4D7MpmOwj_g" supers="_uAHx8ELpEdu4D7MpmOwj_g" subs="_s1KasELpEdu4D7MpmOwj_g" name="FourStrokeEngine"/>
+</umlmmmi:Package>
diff --git a/tests/org.eclipse.qvtd.xtext.qvtrelation.tests/src/org/eclipse/qvtd/xtext/qvtrelation/tests/mitosi/umlMM.emof b/tests/org.eclipse.qvtd.xtext.qvtrelation.tests/src/org/eclipse/qvtd/xtext/qvtrelation/tests/mitosi/umlMM.emof
new file mode 100644
index 0000000..62bf75c
--- /dev/null
+++ b/tests/org.eclipse.qvtd.xtext.qvtrelation.tests/src/org/eclipse/qvtd/xtext/qvtrelation/tests/mitosi/umlMM.emof
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<emof:Package xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:emof="http://schema.omg.org/spec/MOF/2.0/emof.xml"
+    xmi:id="umlmmmi" name="umlmmmi" uri="http://www.eclipse.org/qvtd/xtext/qvtrelation/tests/mitosi/uml">
+  <ownedType xmi:type="emof:Class" xmi:id="umlmmmi.Class" name="Class">
+    <ownedAttribute xmi:id="umlmmmi.Class.supers.1" name="containingPackage" type="umlmmmi.dummy"
+        opposite="umlmmmi.dummy.containsClass"/>
+    <ownedAttribute xmi:id="umlmmmi.Class.type" name="type" default="">
+      <type xmi:type="emof:PrimitiveType" href="http://schema.omg.org/spec/MOF/2.0/emof.xml#String"/>
+    </ownedAttribute>
+    <ownedAttribute xmi:id="umlmmmi.Class.supers" name="supers" lower="0" upper="*"
+        type="umlmmmi.Class" opposite="umlmmmi.Class.subs"/>
+    <ownedAttribute xmi:id="umlmmmi.Class.subs" name="subs" lower="0" upper="*" type="umlmmmi.Class"
+        opposite="umlmmmi.Class.supers"/>
+    <ownedAttribute xmi:id="umlmmmi.Class.name" name="name" isID="true">
+      <type xmi:type="emof:PrimitiveType" href="http://schema.omg.org/spec/MOF/2.0/emof.xml#String"/>
+    </ownedAttribute>
+  </ownedType>
+  <ownedType xmi:type="emof:Class" xmi:id="umlmmmi.dummy" name="Package">
+    <ownedAttribute xmi:id="umlmmmi.dummy.containsClass" name="containsClass" lower="0"
+        upper="*" type="umlmmmi.Class" isComposite="true" opposite="umlmmmi.Class.supers.1"/>
+    <ownedAttribute xmi:id="umlmmmi.Package.name" name="name" isID="true">
+      <type xmi:type="emof:PrimitiveType" href="http://schema.omg.org/spec/MOF/2.0/emof.xml#String"/>
+    </ownedAttribute>
+  </ownedType>
+  <xmi:Extension extender="http://www.eclipse.org/emf/2002/Ecore">
+    <nsPrefix>umlmmmi</nsPrefix>
+  </xmi:Extension>
+</emof:Package>
diff --git a/tests/org.eclipse.qvtd.xtext.qvtrelation.tests/test-gen/.gitignore b/tests/org.eclipse.qvtd.xtext.qvtrelation.tests/test-gen/.gitignore
new file mode 100644
index 0000000..00d78e9
--- /dev/null
+++ b/tests/org.eclipse.qvtd.xtext.qvtrelation.tests/test-gen/.gitignore
@@ -0,0 +1,2 @@
+/_MiToSi/
+/_MiToSiSimple/