diff --git a/BenchmarkMetamodelsGenerator/tmp/lapin.ecore b/BenchmarkMetamodelsGenerator/tmp/lapin.ecore
new file mode 100644
index 0000000000000000000000000000000000000000..9d11c118f9e7f2e9c933e3677e88467b7d847fed
--- /dev/null
+++ b/BenchmarkMetamodelsGenerator/tmp/lapin.ecore
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/External Plug-in Libraries/.classpath b/External Plug-in Libraries/.classpath
new file mode 100644
index 0000000000000000000000000000000000000000..794c5e0a2ea635144191a956b6df0df0fd883e56
--- /dev/null
+++ b/External Plug-in Libraries/.classpath
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/External Plug-in Libraries/.project b/External Plug-in Libraries/.project
new file mode 100644
index 0000000000000000000000000000000000000000..630a80fd4564e03c1339b639956259eef8603dca
--- /dev/null
+++ b/External Plug-in Libraries/.project
@@ -0,0 +1,17 @@
+
+
+ External Plug-in Libraries
+
+
+
+
+
+ org.eclipse.jdt.core.javabuilder
+
+
+
+
+
+ org.eclipse.jdt.core.javanature
+
+
diff --git a/External Plug-in Libraries/.searchable b/External Plug-in Libraries/.searchable
new file mode 100644
index 0000000000000000000000000000000000000000..29e23570470c1df05244bf2e75941772458f7838
--- /dev/null
+++ b/External Plug-in Libraries/.searchable
@@ -0,0 +1,3 @@
+#
+#Mon Mar 03 19:11:35 CET 2014
+searchablePlugins=org.eclipse.emf.importer,org.eclipse.emf.importer.ecore,org.eclipse.pde.ui
diff --git a/SomeManipulations/.classpath b/SomeManipulations/.classpath
new file mode 100644
index 0000000000000000000000000000000000000000..3bc247511f0f2d8c7cda0c9514a4e1d2c7ab5e23
--- /dev/null
+++ b/SomeManipulations/.classpath
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/SomeManipulations/.project b/SomeManipulations/.project
new file mode 100644
index 0000000000000000000000000000000000000000..1ac52966fc1260c90d1d9ad127f346bcc81bfe38
--- /dev/null
+++ b/SomeManipulations/.project
@@ -0,0 +1,28 @@
+
+
+ SomeManipulations
+
+
+
+
+
+ org.eclipse.jdt.core.javabuilder
+
+
+
+
+ org.eclipse.pde.ManifestBuilder
+
+
+
+
+ org.eclipse.pde.SchemaBuilder
+
+
+
+
+
+ org.eclipse.jdt.core.javanature
+ org.eclipse.pde.PluginNature
+
+
diff --git a/SomeManipulations/META-INF/MANIFEST.MF b/SomeManipulations/META-INF/MANIFEST.MF
new file mode 100644
index 0000000000000000000000000000000000000000..063e89d82cff9fd2ff0d1f9d57af3329cdf76ed7
--- /dev/null
+++ b/SomeManipulations/META-INF/MANIFEST.MF
@@ -0,0 +1,16 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: SomeManipulations;singleton:=true
+Bundle-Version: 0.1.0.qualifier
+Bundle-ClassPath: .
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Bundle-RequiredExecutionEnvironment: JavaSE-1.7
+Require-Bundle: org.eclipse.core.runtime,
+ org.eclipse.emf.ecore,
+ org.eclipse.emf.ecore.xmi;bundle-version="2.9.1",
+ org.eclipse.emf.common,
+ FancyEMFCloning;bundle-version="0.1.0",
+ SomeMetamodel;bundle-version="1.0.0"
+Bundle-ActivationPolicy: lazy
diff --git a/SomeManipulations/bin/main/MainShowNoShare.class b/SomeManipulations/bin/main/MainShowNoShare.class
new file mode 100644
index 0000000000000000000000000000000000000000..f9aaa0443563960664c9ccaaa12fa508c071a545
Binary files /dev/null and b/SomeManipulations/bin/main/MainShowNoShare.class differ
diff --git a/SomeManipulations/bin/main/MainTestChangeResource.class b/SomeManipulations/bin/main/MainTestChangeResource.class
new file mode 100644
index 0000000000000000000000000000000000000000..ed41d47f8631cec239909c2da28cdb90225a5774
Binary files /dev/null and b/SomeManipulations/bin/main/MainTestChangeResource.class differ
diff --git a/SomeManipulations/bin/main/MainTestCloning.class b/SomeManipulations/bin/main/MainTestCloning.class
new file mode 100644
index 0000000000000000000000000000000000000000..e2b10fd8a6ba54c9ef7f6ab8f5df6c48ad752bef
Binary files /dev/null and b/SomeManipulations/bin/main/MainTestCloning.class differ
diff --git a/SomeManipulations/bin/main/MainTestCompositions.class b/SomeManipulations/bin/main/MainTestCompositions.class
new file mode 100644
index 0000000000000000000000000000000000000000..e5d8b8402cc116fb0415fcccce82275b2ec5a368
Binary files /dev/null and b/SomeManipulations/bin/main/MainTestCompositions.class differ
diff --git a/SomeManipulations/bin/main/MainTestLooseResource.class b/SomeManipulations/bin/main/MainTestLooseResource.class
new file mode 100644
index 0000000000000000000000000000000000000000..fc9a6f3baf6d11ea7b9de841eda4cccaed3545e9
Binary files /dev/null and b/SomeManipulations/bin/main/MainTestLooseResource.class differ
diff --git a/SomeManipulations/bin/main/MainTestMultipleCompositions.class b/SomeManipulations/bin/main/MainTestMultipleCompositions.class
new file mode 100644
index 0000000000000000000000000000000000000000..22643e2040c79b950363fe95185108fb5285ea42
Binary files /dev/null and b/SomeManipulations/bin/main/MainTestMultipleCompositions.class differ
diff --git a/SomeManipulations/bin/main/MainTestMultipleCompositionsOnlyLoose.class b/SomeManipulations/bin/main/MainTestMultipleCompositionsOnlyLoose.class
new file mode 100644
index 0000000000000000000000000000000000000000..8845912edd337bc339ece663c9db1329dce6c0a0
Binary files /dev/null and b/SomeManipulations/bin/main/MainTestMultipleCompositionsOnlyLoose.class differ
diff --git a/SomeManipulations/bin/main/MainTestNullResource.class b/SomeManipulations/bin/main/MainTestNullResource.class
new file mode 100644
index 0000000000000000000000000000000000000000..46366e012e0e80888407f7f0bcf3260f0b715150
Binary files /dev/null and b/SomeManipulations/bin/main/MainTestNullResource.class differ
diff --git a/SomeManipulations/bin/main/MainTestResources.class b/SomeManipulations/bin/main/MainTestResources.class
new file mode 100644
index 0000000000000000000000000000000000000000..2bf975c0e4597f5acff09bfcd4c41179796bd646
Binary files /dev/null and b/SomeManipulations/bin/main/MainTestResources.class differ
diff --git a/SomeManipulations/bin/main/MainTruc.class b/SomeManipulations/bin/main/MainTruc.class
new file mode 100644
index 0000000000000000000000000000000000000000..e68d21c346deae91f529e02bd81faf6fa56c0573
Binary files /dev/null and b/SomeManipulations/bin/main/MainTruc.class differ
diff --git a/SomeManipulations/bin/main/Truc.class b/SomeManipulations/bin/main/Truc.class
new file mode 100644
index 0000000000000000000000000000000000000000..5b76d2320c2fd74519c1409f5784779e46b53e53
Binary files /dev/null and b/SomeManipulations/bin/main/Truc.class differ
diff --git a/SomeManipulations/bin/main/Truc2.class b/SomeManipulations/bin/main/Truc2.class
new file mode 100644
index 0000000000000000000000000000000000000000..90f79985c9ddaba8eb20e9ec0472ed9e378af0bf
Binary files /dev/null and b/SomeManipulations/bin/main/Truc2.class differ
diff --git a/SomeManipulations/bin/util/HeapDump.class b/SomeManipulations/bin/util/HeapDump.class
new file mode 100644
index 0000000000000000000000000000000000000000..63983bfd438cc31e61e99ab628760c0cfa34c6b3
Binary files /dev/null and b/SomeManipulations/bin/util/HeapDump.class differ
diff --git a/SomeManipulations/build.properties b/SomeManipulations/build.properties
new file mode 100644
index 0000000000000000000000000000000000000000..aa060dce6f6c6daa0d781bb9e93ed70aa3e8cd3c
--- /dev/null
+++ b/SomeManipulations/build.properties
@@ -0,0 +1,9 @@
+#
+
+bin.includes = .,\
+ META-INF/,\
+ plugin.xml,\
+ plugin.properties
+jars.compile.order = .
+source.. = src/
+output.. = bin/
diff --git a/SomeManipulations/file/tmp/deepClone/submodel1.xmi b/SomeManipulations/file/tmp/deepClone/submodel1.xmi
new file mode 100644
index 0000000000000000000000000000000000000000..1bb69a76f8dd02c86fff4a15f2e23de190cf19b9
--- /dev/null
+++ b/SomeManipulations/file/tmp/deepClone/submodel1.xmi
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
diff --git a/SomeManipulations/file/tmp/deepClone/submodel2.xmi b/SomeManipulations/file/tmp/deepClone/submodel2.xmi
new file mode 100644
index 0000000000000000000000000000000000000000..2e3dc2cbf4ceb8ef0cc872c992f3e9f6f9ed6f88
--- /dev/null
+++ b/SomeManipulations/file/tmp/deepClone/submodel2.xmi
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/SomeManipulations/file/tmp/mutableClassesOnlyClone/submodel1.xmi b/SomeManipulations/file/tmp/mutableClassesOnlyClone/submodel1.xmi
new file mode 100644
index 0000000000000000000000000000000000000000..8aed717df56e9beb5a914e590f2d402b69d4de74
--- /dev/null
+++ b/SomeManipulations/file/tmp/mutableClassesOnlyClone/submodel1.xmi
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
diff --git a/SomeManipulations/file/tmp/mutableClassesOnlyClone/submodel2.xmi b/SomeManipulations/file/tmp/mutableClassesOnlyClone/submodel2.xmi
new file mode 100644
index 0000000000000000000000000000000000000000..2e3dc2cbf4ceb8ef0cc872c992f3e9f6f9ed6f88
--- /dev/null
+++ b/SomeManipulations/file/tmp/mutableClassesOnlyClone/submodel2.xmi
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/SomeManipulations/file/tmp/submodel1.xmi b/SomeManipulations/file/tmp/submodel1.xmi
new file mode 100644
index 0000000000000000000000000000000000000000..2c40cc710ad506b43ed22585236663786a9a8c07
--- /dev/null
+++ b/SomeManipulations/file/tmp/submodel1.xmi
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
diff --git a/SomeManipulations/file/tmp/submodel2.xmi b/SomeManipulations/file/tmp/submodel2.xmi
new file mode 100644
index 0000000000000000000000000000000000000000..2e3dc2cbf4ceb8ef0cc872c992f3e9f6f9ed6f88
--- /dev/null
+++ b/SomeManipulations/file/tmp/submodel2.xmi
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/SomeManipulations/models/deepClone/submodel1.xmi b/SomeManipulations/models/deepClone/submodel1.xmi
new file mode 100644
index 0000000000000000000000000000000000000000..52f15b8a3d0304c756118286c6af990741f3a895
--- /dev/null
+++ b/SomeManipulations/models/deepClone/submodel1.xmi
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
diff --git a/SomeManipulations/models/deepClone/submodel2.xmi b/SomeManipulations/models/deepClone/submodel2.xmi
new file mode 100644
index 0000000000000000000000000000000000000000..2e3dc2cbf4ceb8ef0cc872c992f3e9f6f9ed6f88
--- /dev/null
+++ b/SomeManipulations/models/deepClone/submodel2.xmi
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/SomeManipulations/models/lightDeepClone/submodel1.xmi b/SomeManipulations/models/lightDeepClone/submodel1.xmi
new file mode 100644
index 0000000000000000000000000000000000000000..52f15b8a3d0304c756118286c6af990741f3a895
--- /dev/null
+++ b/SomeManipulations/models/lightDeepClone/submodel1.xmi
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
diff --git a/SomeManipulations/models/lightDeepClone/submodel2.xmi b/SomeManipulations/models/lightDeepClone/submodel2.xmi
new file mode 100644
index 0000000000000000000000000000000000000000..2e3dc2cbf4ceb8ef0cc872c992f3e9f6f9ed6f88
--- /dev/null
+++ b/SomeManipulations/models/lightDeepClone/submodel2.xmi
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/SomeManipulations/models/lightMutableOnlyClone/submodel1.xmi b/SomeManipulations/models/lightMutableOnlyClone/submodel1.xmi
new file mode 100644
index 0000000000000000000000000000000000000000..52f15b8a3d0304c756118286c6af990741f3a895
--- /dev/null
+++ b/SomeManipulations/models/lightMutableOnlyClone/submodel1.xmi
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
diff --git a/SomeManipulations/models/lightMutableOnlyClone/submodel2.xmi b/SomeManipulations/models/lightMutableOnlyClone/submodel2.xmi
new file mode 100644
index 0000000000000000000000000000000000000000..2e3dc2cbf4ceb8ef0cc872c992f3e9f6f9ed6f88
--- /dev/null
+++ b/SomeManipulations/models/lightMutableOnlyClone/submodel2.xmi
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/SomeManipulations/models/mutableOnlyClone/submodel1.xmi b/SomeManipulations/models/mutableOnlyClone/submodel1.xmi
new file mode 100644
index 0000000000000000000000000000000000000000..52f15b8a3d0304c756118286c6af990741f3a895
--- /dev/null
+++ b/SomeManipulations/models/mutableOnlyClone/submodel1.xmi
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
diff --git a/SomeManipulations/models/mutableOnlyClone/submodel2.xmi b/SomeManipulations/models/mutableOnlyClone/submodel2.xmi
new file mode 100644
index 0000000000000000000000000000000000000000..2e3dc2cbf4ceb8ef0cc872c992f3e9f6f9ed6f88
--- /dev/null
+++ b/SomeManipulations/models/mutableOnlyClone/submodel2.xmi
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/SomeManipulations/models/submodel1.xmi b/SomeManipulations/models/submodel1.xmi
new file mode 100644
index 0000000000000000000000000000000000000000..52f15b8a3d0304c756118286c6af990741f3a895
--- /dev/null
+++ b/SomeManipulations/models/submodel1.xmi
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
diff --git a/SomeManipulations/models/submodel2.xmi b/SomeManipulations/models/submodel2.xmi
new file mode 100644
index 0000000000000000000000000000000000000000..2e3dc2cbf4ceb8ef0cc872c992f3e9f6f9ed6f88
--- /dev/null
+++ b/SomeManipulations/models/submodel2.xmi
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/SomeManipulations/plugin.properties b/SomeManipulations/plugin.properties
new file mode 100644
index 0000000000000000000000000000000000000000..d5c652b39a3d613db681d8f6a574d555d7cd3490
--- /dev/null
+++ b/SomeManipulations/plugin.properties
@@ -0,0 +1,4 @@
+#
+
+pluginName = SomeMetamodel Model
+providerName = www.example.org
diff --git a/SomeManipulations/plugin.xml b/SomeManipulations/plugin.xml
new file mode 100644
index 0000000000000000000000000000000000000000..b09da2819bc5aa9e9e75d5b1958c3d6ad6dde9d2
--- /dev/null
+++ b/SomeManipulations/plugin.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/SomeManipulations/src/main/MainShowNoShare.java b/SomeManipulations/src/main/MainShowNoShare.java
new file mode 100644
index 0000000000000000000000000000000000000000..663d1d6947f4dacd73fc2c5c790cc8c74dcffbf1
--- /dev/null
+++ b/SomeManipulations/src/main/MainShowNoShare.java
@@ -0,0 +1,66 @@
+package main;
+
+import java.io.IOException;
+import java.util.Collections;
+import java.util.Map;
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl;
+
+import somemetamodel.A;
+import somemetamodel.B;
+import somemetamodel.C;
+import somemetamodel.SomemetamodelFactory;
+
+
+public class MainShowNoShare {
+
+ public static void main(String[] args) {
+
+ // Creating some objects from our metamodel
+ SomemetamodelFactory factory = SomemetamodelFactory.eINSTANCE;
+ A a1 = factory.createA();
+ B b1 = factory.createB();
+ A a2 = factory.createA();
+ B b2 = factory.createB();
+ C cShared = factory.createC();
+
+ // Preparing serialization
+ Resource.Factory.Registry reg = Resource.Factory.Registry.INSTANCE;
+ Map m = reg.getExtensionToFactoryMap();
+ m.put("xmi", new XMIResourceFactoryImpl());
+
+ // Creating the resources (= models) set
+ ResourceSet resSet = new ResourceSetImpl();
+
+ // Creating a first model in the set
+ Resource model1 = resSet.createResource(URI.createURI("models/model1.xmi"));
+ model1.getContents().add(a1);
+ model1.getContents().add(b1);
+ model1.getContents().add(cShared);
+
+ // Creating a second model in the set
+ Resource model2 = resSet.createResource(URI.createURI("models/model2.xmi"));
+ model2.getContents().add(a2);
+ model2.getContents().add(b2);
+ model2.getContents().add(cShared); //TODO /!\ here C is removed from model1 and added to model2
+
+
+ // model2 = clone(model1)
+
+
+ // Saving the models into files
+ try {
+ model1.save(Collections.EMPTY_MAP);
+ model2.save(Collections.EMPTY_MAP);
+ } catch (IOException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+
+ }
+
+}
diff --git a/SomeManipulations/src/main/MainTestChangeResource.java b/SomeManipulations/src/main/MainTestChangeResource.java
new file mode 100644
index 0000000000000000000000000000000000000000..f6a6fb51dd0f826705e5d0ff2a6fa824cafaa12c
--- /dev/null
+++ b/SomeManipulations/src/main/MainTestChangeResource.java
@@ -0,0 +1,55 @@
+package main;
+
+import java.util.Map;
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl;
+
+import somemetamodel.A;
+import somemetamodel.B;
+import somemetamodel.C;
+import somemetamodel.SomemetamodelFactory;
+
+
+public class MainTestChangeResource {
+
+ public static void main(String[] args) {
+
+ // Creating some objects from our metamodel
+ SomemetamodelFactory factory = SomemetamodelFactory.eINSTANCE;
+ A a = factory.createA();
+ B b1 = factory.createB();
+ B b2 = factory.createB();
+ C c = factory.createC();
+
+ // Preparing serialization
+ Resource.Factory.Registry reg = Resource.Factory.Registry.INSTANCE;
+ Map m = reg.getExtensionToFactoryMap();
+ m.put("xmi", new XMIResourceFactoryImpl());
+
+ // Creating the resource sets (= models)
+ ResourceSet model1 = new ResourceSetImpl();
+ ResourceSet model2 = new ResourceSetImpl();
+
+ // Creating the first model
+ Resource submodel1 = model1.createResource(URI.createURI("models/submodel1.xmi"));
+ submodel1.getContents().add(a);
+ submodel1.getContents().add(b1);
+
+
+ // Creating the second model
+ Resource submodel2 = model2.createResource(URI.createURI("models/submodel2.xmi"));
+ submodel2.getContents().add(b2);
+ submodel2.getContents().add(c);
+
+ a.setB(b1);
+ a.setB(b2);
+ a.setC(c);
+
+
+ }
+
+}
diff --git a/SomeManipulations/src/main/MainTestCloning.java b/SomeManipulations/src/main/MainTestCloning.java
new file mode 100644
index 0000000000000000000000000000000000000000..d0cad2f6e0a393111ff5158ab9ccadd06d46e5b9
--- /dev/null
+++ b/SomeManipulations/src/main/MainTestCloning.java
@@ -0,0 +1,123 @@
+package main;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.Collections;
+import java.util.Map;
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.impl.EPackageRegistryImpl;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl;
+
+import someMMMutClassOnly.SomeMMMutClassOnlyTags;
+import somemetamodel.A;
+import somemetamodel.B;
+import somemetamodel.C;
+import somemetamodel.SomemetamodelFactory;
+import somemetamodelextension.SomemetamodelextensionFactory;
+import somemetamodelextension.X;
+import util.HeapDump;
+import fancyemfcloning.cloner.Cloner;
+import fancyemfcloning.cloner.impl.ClonerImpl;
+import fancyemfcloning.emfextension.LooseCopier;
+
+public class MainTestCloning {
+
+ public static void main(String[] args) {
+
+ // Preparing factories
+ SomemetamodelFactory factory = SomemetamodelFactory.eINSTANCE;
+ SomemetamodelextensionFactory factory2 = SomemetamodelextensionFactory.eINSTANCE;
+
+ // Creating some objects from our metamodel
+ A a = factory.createA();
+ B b = factory.createB();
+ C c = factory.createC();
+ X x = factory2.createX();
+ a.setC(c);
+ a.setX(x);
+
+ // Preparing serialization
+ Resource.Factory.Registry reg = Resource.Factory.Registry.INSTANCE;
+ Map m = reg.getExtensionToFactoryMap();
+ m.put("xmi", new XMIResourceFactoryImpl());
+
+ // Creating the model
+ ResourceSet model = new ResourceSetImpl();
+
+ model.setPackageRegistry(new EPackageRegistryImpl());
+
+ // Creating submodels
+ Resource submodel1 = model.createResource(URI.createURI("file://home/ebousse/Dev/modelCloning/emf/SomeManipulations/models/submodel1.xmi"));
+ submodel1.getContents().add(a);
+ submodel1.getContents().add(b);
+ Resource submodel2 = model.createResource(URI.createURI("file://home/ebousse/Dev/modelCloning/emf/SomeManipulations/models/submodel2.xmi"));
+ submodel2.getContents().add(c);
+ submodel2.getContents().add(x);
+
+ // Deep cloning the model
+ /*
+ Cloner dc = new ClonerImpl(new SomeMMDeepTags(), new LooseCopier());
+ ResourceSet deepClone = dc.clone(model, "deepClone");
+
+ Cloner lightdc = new ClonerImpl(new SomeMMDeepTags(), new SomeMMDeepLightCopier());
+ ResourceSet lightDeepClone = lightdc.clone(model, "lightDeepClone");
+ */
+ Cloner mc = new ClonerImpl(new SomeMMMutClassOnlyTags(), new LooseCopier());
+ @SuppressWarnings("unused")
+ ResourceSet mcClone = mc.clone(model, "mutableOnlyClone");
+ /*
+ Cloner lightmc = new ClonerImpl(new SomeMMMutClassOnlyTags(), new SomeMMMutClassOnlyLightCopier());
+ ResourceSet lightmcClone = lightmc.clone(model, "lightMutableOnlyClone");
+
+
+ try {
+ Thread.sleep(60000);
+ } catch (InterruptedException e1) {
+ // TODO Bloc catch généré automatiquement
+ e1.printStackTrace();
+ }*/
+ File outputDump = new File("/tmp/yay.bin");
+ if (outputDump.exists())
+ outputDump.delete();
+ HeapDump.dumpHeap(outputDump.getAbsolutePath(), true);
+
+
+ // MutClassesOnly cloning the model
+ //ResourceSet mutableClassesOnlyClone = new MutClassesOnlyCloner().clone(model, "mutableClassesOnlyClone");
+ /*
+ // WeakMutClassesOnly cloning the model
+ Set metamodel = new HashSet();
+ for (Object o : EPackage.Registry.INSTANCE.values()) {
+ EPackage p = (EPackage) o;
+ if (p.getNsURI() != "http://www.eclipse.org/emf/2002/Ecore")
+ metamodel.add(p.eResource());
+ }
+ //ResourceSet weakMutableClassesOnlyClone = new WeakMutClassesOnlyCloner(metamodel).clone(model, "mutableClassesOnlyClone");
+ */
+ // Saving the models into files
+ try {
+ //mutableClassesOnlyClone.getResources().get(0).save(Collections.EMPTY_MAP);
+ //mutableClassesOnlyClone.getResources().get(1).save(Collections.EMPTY_MAP);
+ submodel1.save(Collections.EMPTY_MAP);
+ submodel2.save(Collections.EMPTY_MAP);
+ /*deepClone.getResources().get(0).save(Collections.EMPTY_MAP);
+ deepClone.getResources().get(1).save(Collections.EMPTY_MAP);
+ lightDeepClone.getResources().get(0).save(Collections.EMPTY_MAP);
+ lightDeepClone.getResources().get(1).save(Collections.EMPTY_MAP);
+ mcClone.getResources().get(0).save(Collections.EMPTY_MAP);
+ mcClone.getResources().get(1).save(Collections.EMPTY_MAP);
+ lightmcClone.getResources().get(0).save(Collections.EMPTY_MAP);
+ lightmcClone.getResources().get(1).save(Collections.EMPTY_MAP);*/
+ } catch (IOException e) {
+ // TODO Auto-generated catch block
+ System.err.println("An error occured during the saving:");
+ e.printStackTrace();
+ }
+ }
+
+
+}
diff --git a/SomeManipulations/src/main/MainTestCompositions.java b/SomeManipulations/src/main/MainTestCompositions.java
new file mode 100644
index 0000000000000000000000000000000000000000..690f056b71e7c1ce5e33526a78140218f794b9ca
--- /dev/null
+++ b/SomeManipulations/src/main/MainTestCompositions.java
@@ -0,0 +1,22 @@
+package main;
+
+import somemetamodel.A;
+import somemetamodel.B;
+import somemetamodel.SomemetamodelFactory;
+
+public class MainTestCompositions {
+
+ public static void main(String[] args) {
+
+ // Creating some objects from our metamodel
+ SomemetamodelFactory factory = SomemetamodelFactory.eINSTANCE;
+ A a1 = factory.createA();
+ A a2 = factory.createA();
+ B b = factory.createB();
+ a1.setB(b);
+ a2.setB(b);
+ System.out.println(a1);
+
+ }
+
+}
diff --git a/SomeManipulations/src/main/MainTestLooseResource.java b/SomeManipulations/src/main/MainTestLooseResource.java
new file mode 100644
index 0000000000000000000000000000000000000000..6643b181626de16d126818c0cf87d62e9272cc32
--- /dev/null
+++ b/SomeManipulations/src/main/MainTestLooseResource.java
@@ -0,0 +1,65 @@
+package main;
+
+import java.io.IOException;
+import java.util.Collections;
+import java.util.Map;
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl;
+
+import someMMDeep.SomeMMDeepTags;
+import somemetamodel.A;
+import somemetamodel.E;
+import somemetamodel.SomemetamodelFactory;
+import fancyemfcloning.emfextension.LooseResource;
+
+public class MainTestLooseResource {
+
+ public static void main(String[] args) {
+
+ // Creating some objects from our metamodel
+ SomemetamodelFactory factory = SomemetamodelFactory.eINSTANCE;
+ A a = factory.createA();
+ E e = factory.createE();
+
+
+ // Preparing serialization
+ Resource.Factory.Registry reg = Resource.Factory.Registry.INSTANCE;
+ Map m = reg.getExtensionToFactoryMap();
+ m.put("xmi", new XMIResourceFactoryImpl());
+
+ // Creating the resource sets (= models)
+ ResourceSet model1 = new ResourceSetImpl();
+ ResourceSet model2 = new ResourceSetImpl();
+
+ // Creating the first submodel, with a
+ Resource submodel1 = model1.createResource(URI.createURI("models/submodel1.xmi"));
+ submodel1.getContents().add(a);
+ submodel1.getContents().add(e);
+
+ // Creating the second submodel, with e
+ Resource submodel2 = new LooseResource(new SomeMMDeepTags());
+ submodel2.setURI(URI.createURI("models/submodel2.xmi"));
+ model2.getResources().add(submodel2);
+ submodel2.getContents().add(a);
+
+ // Trying to put e in a
+ //a.setE(e);
+
+ // Saving the models into files
+ try {
+ submodel1.save(Collections.EMPTY_MAP);
+ submodel2.save(Collections.EMPTY_MAP);
+ } catch (IOException e2) {
+ // TODO Auto-generated catch block
+ e2.printStackTrace();
+ }
+
+
+
+ }
+
+}
diff --git a/SomeManipulations/src/main/MainTestMultipleCompositions.java b/SomeManipulations/src/main/MainTestMultipleCompositions.java
new file mode 100644
index 0000000000000000000000000000000000000000..0679934090d5b2831ff87624688be899518e9f66
--- /dev/null
+++ b/SomeManipulations/src/main/MainTestMultipleCompositions.java
@@ -0,0 +1,68 @@
+package main;
+
+import java.util.Map;
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl;
+
+import somemetamodel.A;
+import somemetamodel.B;
+import somemetamodel.SomemetamodelFactory;
+
+
+public class MainTestMultipleCompositions {
+
+ public static void main(String[] args) {
+
+ // Creating some objects from our metamodel
+ SomemetamodelFactory factory = SomemetamodelFactory.eINSTANCE;
+ A a11 = factory.createA();
+ A a12 = factory.createA();
+ A a21 = factory.createA();
+ A a22 = factory.createA();
+ B bShared = factory.createB();//new BReadonlyImpl();
+
+ // Preparing serialization
+ Resource.Factory.Registry reg = Resource.Factory.Registry.INSTANCE;
+ Map m = reg.getExtensionToFactoryMap();
+ m.put("xmi", new XMIResourceFactoryImpl());
+
+ // Creating the resource sets (= models)
+ ResourceSet model1 = new ResourceSetImpl();
+ ResourceSet model2 = new ResourceSetImpl();
+
+ // Creating the first model
+ Resource submodel1 = model1.createResource(URI.createURI("models/submodel1.xmi"));
+ submodel1.getContents().add(a11);
+ submodel1.getContents().add(a12);
+ submodel1.getContents().add(bShared);
+
+ // Creating the second model
+ //Resource submodel2 = new LooseResource();//
+ Resource submodel2 = model2.createResource(URI.createURI("models/submodel1.xmi"));
+ model2.getResources().add(submodel2);
+ submodel2.getContents().add(a21);
+ submodel2.getContents().add(a22);
+
+ // Putting bshared into a11
+ a11.setB(bShared);
+
+ // Then putting it into a21
+ a21.setB(bShared);
+
+ // Then putting it into a12
+ a12.setB(bShared);
+
+ // Then putting it into a22
+ a22.setB(bShared);
+
+ System.out.println(a11);
+
+
+
+ }
+
+}
diff --git a/SomeManipulations/src/main/MainTestMultipleCompositionsOnlyLoose.java b/SomeManipulations/src/main/MainTestMultipleCompositionsOnlyLoose.java
new file mode 100644
index 0000000000000000000000000000000000000000..5e017a61ea86c31b66dc0d578185f24d1b96357b
--- /dev/null
+++ b/SomeManipulations/src/main/MainTestMultipleCompositionsOnlyLoose.java
@@ -0,0 +1,77 @@
+package main;
+
+import java.util.Map;
+
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl;
+
+import someMMDeep.SomeMMDeepTags;
+import somemetamodel.A;
+import somemetamodel.B;
+import somemetamodel.C;
+import somemetamodel.SomemetamodelFactory;
+import fancyemfcloning.emfextension.LooseResource;
+
+
+public class MainTestMultipleCompositionsOnlyLoose {
+
+ public static void main(String[] args) {
+
+ // Creating some objects from our metamodel
+ SomemetamodelFactory factory = SomemetamodelFactory.eINSTANCE;
+ A a11 = factory.createA();
+ A a12 = factory.createA();
+ A a21 = factory.createA();
+ A a22 = factory.createA();
+ B bShared = factory.createB();//new BReadonlyImpl();
+ C cShared = factory.createC();//new BReadonlyImpl();
+
+ // Preparing serialization
+ Resource.Factory.Registry reg = Resource.Factory.Registry.INSTANCE;
+ Map m = reg.getExtensionToFactoryMap();
+ m.put("xmi", new XMIResourceFactoryImpl());
+
+ // Creating the resource sets (= models)
+ ResourceSet model1 = new ResourceSetImpl();
+ ResourceSet model2 = new ResourceSetImpl();
+
+ // Creating the first model
+ Resource submodel1 = new LooseResource(new SomeMMDeepTags());
+ model1.getResources().add(submodel1);
+ submodel1.getContents().add(a11);
+ submodel1.getContents().add(a12);
+ submodel1.getContents().add(bShared);
+ submodel1.getContents().add(cShared);
+
+ // Creating the second model
+ Resource submodel2 = new LooseResource(new SomeMMDeepTags());
+ model2.getResources().add(submodel2);
+ submodel2.getContents().add(a21);
+ submodel2.getContents().add(a22);
+ submodel2.getContents().add(cShared);
+
+ // Setting links to c
+ a11.setC(cShared);
+ a21.setC(cShared);
+
+ // Putting bshared into a11
+ a11.setB(bShared);
+
+ // Then putting it into a21
+ a21.setB(bShared);
+
+ // Then putting it into a12
+ a12.setB(bShared);
+
+ // Then putting it into a22
+ a22.setB(bShared);
+
+ System.out.println(a11);
+
+
+
+ }
+
+}
diff --git a/SomeManipulations/src/main/MainTestNullResource.java b/SomeManipulations/src/main/MainTestNullResource.java
new file mode 100644
index 0000000000000000000000000000000000000000..42596e0cb82239127cd7e57798eb378e64e87353
--- /dev/null
+++ b/SomeManipulations/src/main/MainTestNullResource.java
@@ -0,0 +1,43 @@
+package main;
+
+import java.util.Map;
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl;
+
+import somemetamodel.A;
+import somemetamodel.E;
+import somemetamodel.SomemetamodelFactory;
+
+
+public class MainTestNullResource {
+
+ public static void main(String[] args) {
+
+ // Creating some objects from our metamodel
+ SomemetamodelFactory factory = SomemetamodelFactory.eINSTANCE;
+ A a = factory.createA();
+ E e = factory.createE();
+
+ // Preparing serialization
+ Resource.Factory.Registry reg = Resource.Factory.Registry.INSTANCE;
+ Map m = reg.getExtensionToFactoryMap();
+ m.put("xmi", new XMIResourceFactoryImpl());
+
+ // Creating the resource set (= model)
+ ResourceSet model = new ResourceSetImpl();
+ Resource submodel1 = model.createResource(URI.createURI("models/submodel1.xmi"));
+ Resource submodel2 = model.createResource(URI.createURI("models/submodel2.xmi"));
+
+ a.getE().add(e);
+ submodel1.getContents().add(e);
+ submodel2.getContents().add(a);
+ submodel1.getContents().add(a);
+
+
+ }
+
+}
diff --git a/SomeManipulations/src/main/MainTestResources.java b/SomeManipulations/src/main/MainTestResources.java
new file mode 100644
index 0000000000000000000000000000000000000000..758570ced5e518327544cda5236eed588b19fcf2
--- /dev/null
+++ b/SomeManipulations/src/main/MainTestResources.java
@@ -0,0 +1,64 @@
+package main;
+
+import java.util.Map;
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl;
+
+import somemetamodel.A;
+import somemetamodel.B;
+import somemetamodel.C;
+import somemetamodel.E;
+import somemetamodel.SomemetamodelFactory;
+
+public class MainTestResources {
+
+ public static void main(String[] args) {
+
+ // Creating some objects from our metamodel
+ SomemetamodelFactory factory = SomemetamodelFactory.eINSTANCE;
+ A a = factory.createA();
+ B b = factory.createB();
+ C c = factory.createC();
+ E e = factory.createE();
+
+
+ // Preparing serialization
+ Resource.Factory.Registry reg = Resource.Factory.Registry.INSTANCE;
+ Map m = reg.getExtensionToFactoryMap();
+ m.put("xmi", new XMIResourceFactoryImpl());
+
+ // Creating the resource set (= model)
+ ResourceSet model = new ResourceSetImpl();
+
+ // Creating the first submodel, with a
+ Resource submodel1 = model.createResource(URI.createURI("models/submodel1.xmi"));
+ submodel1.getContents().add(a);
+
+ System.out.println(e.eResource());
+ a.getE().add(e);
+ System.out.println(e.eResource());
+
+ // Creating the second submodel, with b and c
+ Resource submodel2 = model.createResource(URI.createURI("models/submodel2.xmi"));
+ submodel2.getContents().add(c);
+
+ // Trying to put b in a
+ a.setB(b); // b will leave the resource submodel2
+
+ System.out.println(b.eResource());
+
+ // Trying to put c in a
+ a.setC(c); //
+
+ System.out.println(a);
+
+
+
+
+ }
+
+}
diff --git a/SomeManipulations/src/main/MainTruc.java b/SomeManipulations/src/main/MainTruc.java
new file mode 100644
index 0000000000000000000000000000000000000000..81dba7e4873ffc9c99a074c61b86f756e4e4c3db
--- /dev/null
+++ b/SomeManipulations/src/main/MainTruc.java
@@ -0,0 +1,12 @@
+package main;
+
+public class MainTruc {
+
+ public static void main(String[] args) {
+ Object o = new Truc2();
+
+ ((Truc)o).doStuff();
+
+ }
+
+}
diff --git a/SomeManipulations/src/main/Truc.java b/SomeManipulations/src/main/Truc.java
new file mode 100644
index 0000000000000000000000000000000000000000..ab380fd00fb069099c7e314e6de9294664113487
--- /dev/null
+++ b/SomeManipulations/src/main/Truc.java
@@ -0,0 +1,9 @@
+package main;
+
+public class Truc {
+
+ public void doStuff() {
+ System.out.println("Truc do stuff");
+ }
+
+}
diff --git a/SomeManipulations/src/main/Truc2.java b/SomeManipulations/src/main/Truc2.java
new file mode 100644
index 0000000000000000000000000000000000000000..d6d46bd07a00cf445df99e00463d07903da3befd
--- /dev/null
+++ b/SomeManipulations/src/main/Truc2.java
@@ -0,0 +1,9 @@
+package main;
+
+public class Truc2 extends Truc {
+
+ public void doStuff() {
+ System.out.println("Truc2 do stuff");
+ }
+
+}
diff --git a/SomeManipulations/src/util/HeapDump.java b/SomeManipulations/src/util/HeapDump.java
new file mode 100644
index 0000000000000000000000000000000000000000..418579ecf83d1e0dd3185c39155890e306c9759a
--- /dev/null
+++ b/SomeManipulations/src/util/HeapDump.java
@@ -0,0 +1,84 @@
+package util;
+
+import javax.management.MBeanServer;
+import java.lang.management.ManagementFactory;
+import java.lang.reflect.Method;
+
+
+//@SuppressWarnings("restriction")
+public class HeapDump {
+ // This is the name of the HotSpot Diagnostic MBean
+ private static final String HOTSPOT_BEAN_NAME =
+ "com.sun.management:type=HotSpotDiagnostic";
+
+ // field to store the hotspot diagnostic MBean
+ private static volatile Object hotspotMBean;
+
+ /**
+ * Call this method from your application whenever you
+ * want to dump the heap snapshot into a file.
+ *
+ * @param fileName name of the heap dump file
+ * @param live flag that tells whether to dump
+ * only the live objects
+ */
+ public static void dumpHeap(String fileName, boolean live) {
+ // initialize hotspot diagnostic MBean
+ initHotspotMBean();
+ try {
+ Class> clazz = Class.forName("com.sun.management.HotSpotDiagnosticMXBean");
+ Method m = clazz.getMethod("dumpHeap", String.class, boolean.class);
+ m.invoke( hotspotMBean , fileName, live);
+ } catch (RuntimeException re) {
+ throw re;
+ } catch (Exception exp) {
+ throw new RuntimeException(exp);
+ }
+ }
+
+ // initialize the hotspot diagnostic MBean field
+ private static void initHotspotMBean() {
+ if (hotspotMBean == null) {
+ synchronized (HeapDump.class) {
+ if (hotspotMBean == null) {
+ hotspotMBean = getHotspotMBean();
+ }
+ }
+ }
+ }
+
+ // get the hotspot diagnostic MBean from the
+ // platform MBean server
+ private static Object getHotspotMBean() {
+ try {
+ Class> clazz = Class.forName("com.sun.management.HotSpotDiagnosticMXBean");
+ MBeanServer server = ManagementFactory.getPlatformMBeanServer();
+ Object bean =
+ ManagementFactory.newPlatformMXBeanProxy(server,
+ HOTSPOT_BEAN_NAME, clazz);
+ return bean;
+ } catch (RuntimeException re) {
+ throw re;
+ } catch (Exception exp) {
+ throw new RuntimeException(exp);
+ }
+ }
+
+ public static void main(String[] args) {
+ // default heap dump file name
+ String fileName = "/tmp/heap.bin";
+ // by default dump only the live objects
+ boolean live = true;
+
+ // simple command line options
+ switch (args.length) {
+ case 2:
+ live = args[1].equals("true");
+ case 1:
+ fileName = args[0];
+ }
+
+ // dump the heap
+ dumpHeap(fileName, live);
+ }
+}
\ No newline at end of file
diff --git a/SomeMetamodel/.classpath b/SomeMetamodel/.classpath
new file mode 100644
index 0000000000000000000000000000000000000000..3bc247511f0f2d8c7cda0c9514a4e1d2c7ab5e23
--- /dev/null
+++ b/SomeMetamodel/.classpath
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/SomeMetamodel/.project b/SomeMetamodel/.project
new file mode 100644
index 0000000000000000000000000000000000000000..e93fbbaadc8ca9a2f7ebabbc73aa1ccb561d99f0
--- /dev/null
+++ b/SomeMetamodel/.project
@@ -0,0 +1,33 @@
+
+
+ SomeMetamodel
+
+
+
+
+
+ org.eclipse.jdt.core.javabuilder
+
+
+
+
+ org.eclipse.pde.ManifestBuilder
+
+
+
+
+ org.eclipse.pde.SchemaBuilder
+
+
+
+
+ org.eclipse.pde.ds.core.builder
+
+
+
+
+
+ org.eclipse.jdt.core.javanature
+ org.eclipse.pde.PluginNature
+
+
diff --git a/SomeMetamodel/.settings/org.eclipse.core.resources.prefs b/SomeMetamodel/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000000000000000000000000000000000000..b96e5eb5490127609820880724f8d1d44b8ce128
--- /dev/null
+++ b/SomeMetamodel/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding//model/SomeMetamodel.ecorediag=UTF-8
diff --git a/SomeMetamodel/.settings/org.eclipse.jdt.core.prefs b/SomeMetamodel/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000000000000000000000000000000000000..7341ab1683c4f1bd2f33bbd3d102ebf032569b57
--- /dev/null
+++ b/SomeMetamodel/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,11 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.7
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.7
diff --git a/SomeMetamodel/META-INF/MANIFEST.MF b/SomeMetamodel/META-INF/MANIFEST.MF
new file mode 100644
index 0000000000000000000000000000000000000000..68061bcd1ecfa4594f21f003f4d926d867fbfc32
--- /dev/null
+++ b/SomeMetamodel/META-INF/MANIFEST.MF
@@ -0,0 +1,24 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: SomeMetamodel;singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Bundle-ClassPath: .
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Bundle-RequiredExecutionEnvironment: JavaSE-1.7
+Export-Package: somemetamodel,
+ somemetamodel.impl,
+ somemetamodel.util,
+ somemetamodelextension,
+ somemetamodelextension.hidden,
+ somemetamodelextension.hidden.impl,
+ somemetamodelextension.hidden.util,
+ somemetamodelextension.impl,
+ somemetamodelextension.util
+Require-Bundle: org.eclipse.core.runtime,
+ org.eclipse.emf.ecore;visibility:=reexport,
+ fr.inria.diverse.cloning.cloner;bundle-version="0.1.0",
+ fr.inria.diverse.cloning.benchmark.common
+Bundle-ActivationPolicy: lazy
+Service-Component: component.xml
diff --git a/SomeMetamodel/bin/somemetamodel/A.class b/SomeMetamodel/bin/somemetamodel/A.class
new file mode 100644
index 0000000000000000000000000000000000000000..d8076ba5c4b6a8a057411d813473aedce8477565
Binary files /dev/null and b/SomeMetamodel/bin/somemetamodel/A.class differ
diff --git a/SomeMetamodel/bin/somemetamodel/B.class b/SomeMetamodel/bin/somemetamodel/B.class
new file mode 100644
index 0000000000000000000000000000000000000000..df70a2559d8e467b5db4ad2c62ac1b615790a88c
Binary files /dev/null and b/SomeMetamodel/bin/somemetamodel/B.class differ
diff --git a/SomeMetamodel/bin/somemetamodel/C.class b/SomeMetamodel/bin/somemetamodel/C.class
new file mode 100644
index 0000000000000000000000000000000000000000..e1e5223043ff2b7ff4d07ebfb9089455877b47be
Binary files /dev/null and b/SomeMetamodel/bin/somemetamodel/C.class differ
diff --git a/SomeMetamodel/bin/somemetamodel/D.class b/SomeMetamodel/bin/somemetamodel/D.class
new file mode 100644
index 0000000000000000000000000000000000000000..ba2ed8a49bddfad3c51316cedd2f07ebf53c66fd
Binary files /dev/null and b/SomeMetamodel/bin/somemetamodel/D.class differ
diff --git a/SomeMetamodel/bin/somemetamodel/E.class b/SomeMetamodel/bin/somemetamodel/E.class
new file mode 100644
index 0000000000000000000000000000000000000000..59c42d650e29f8c6067a9e65b7a0891f83e33dcc
Binary files /dev/null and b/SomeMetamodel/bin/somemetamodel/E.class differ
diff --git a/SomeMetamodel/bin/somemetamodel/SomemetamodelFactory.class b/SomeMetamodel/bin/somemetamodel/SomemetamodelFactory.class
new file mode 100644
index 0000000000000000000000000000000000000000..d8e27e3bc70e36a84dd4cc345526686f008a561b
Binary files /dev/null and b/SomeMetamodel/bin/somemetamodel/SomemetamodelFactory.class differ
diff --git a/SomeMetamodel/bin/somemetamodel/SomemetamodelPackage$Literals.class b/SomeMetamodel/bin/somemetamodel/SomemetamodelPackage$Literals.class
new file mode 100644
index 0000000000000000000000000000000000000000..98a7ed6dffcf3e0e4f7ea3363b5fd53b8a181c1d
Binary files /dev/null and b/SomeMetamodel/bin/somemetamodel/SomemetamodelPackage$Literals.class differ
diff --git a/SomeMetamodel/bin/somemetamodel/SomemetamodelPackage.class b/SomeMetamodel/bin/somemetamodel/SomemetamodelPackage.class
new file mode 100644
index 0000000000000000000000000000000000000000..87470cc14c8c2914dc5f9b90e453830704efa10a
Binary files /dev/null and b/SomeMetamodel/bin/somemetamodel/SomemetamodelPackage.class differ
diff --git a/SomeMetamodel/bin/somemetamodel/impl/AImpl.class b/SomeMetamodel/bin/somemetamodel/impl/AImpl.class
new file mode 100644
index 0000000000000000000000000000000000000000..76739ad0ab0023222f40cdfba40d81045a7dde87
Binary files /dev/null and b/SomeMetamodel/bin/somemetamodel/impl/AImpl.class differ
diff --git a/SomeMetamodel/bin/somemetamodel/impl/BImpl.class b/SomeMetamodel/bin/somemetamodel/impl/BImpl.class
new file mode 100644
index 0000000000000000000000000000000000000000..705f6fcfc2142d7a6431459ddf63e011c87a3ae6
Binary files /dev/null and b/SomeMetamodel/bin/somemetamodel/impl/BImpl.class differ
diff --git a/SomeMetamodel/bin/somemetamodel/impl/CImpl.class b/SomeMetamodel/bin/somemetamodel/impl/CImpl.class
new file mode 100644
index 0000000000000000000000000000000000000000..46b1059741bf30b4517db53bef3e440153e29d8e
Binary files /dev/null and b/SomeMetamodel/bin/somemetamodel/impl/CImpl.class differ
diff --git a/SomeMetamodel/bin/somemetamodel/impl/DImpl.class b/SomeMetamodel/bin/somemetamodel/impl/DImpl.class
new file mode 100644
index 0000000000000000000000000000000000000000..4ce6233d4c138166ca03de2b3a2a8e80e3225b3f
Binary files /dev/null and b/SomeMetamodel/bin/somemetamodel/impl/DImpl.class differ
diff --git a/SomeMetamodel/bin/somemetamodel/impl/EImpl.class b/SomeMetamodel/bin/somemetamodel/impl/EImpl.class
new file mode 100644
index 0000000000000000000000000000000000000000..edaabf21dfcfa8a54bf83265d942eaee986ae965
Binary files /dev/null and b/SomeMetamodel/bin/somemetamodel/impl/EImpl.class differ
diff --git a/SomeMetamodel/bin/somemetamodel/impl/SomemetamodelFactoryImpl.class b/SomeMetamodel/bin/somemetamodel/impl/SomemetamodelFactoryImpl.class
new file mode 100644
index 0000000000000000000000000000000000000000..beca39b81701b7b117c961f8129b7270b18d0612
Binary files /dev/null and b/SomeMetamodel/bin/somemetamodel/impl/SomemetamodelFactoryImpl.class differ
diff --git a/SomeMetamodel/bin/somemetamodel/impl/SomemetamodelPackageImpl.class b/SomeMetamodel/bin/somemetamodel/impl/SomemetamodelPackageImpl.class
new file mode 100644
index 0000000000000000000000000000000000000000..81d68692e4853feea37535e81f188ae0180e9c1d
Binary files /dev/null and b/SomeMetamodel/bin/somemetamodel/impl/SomemetamodelPackageImpl.class differ
diff --git a/SomeMetamodel/bin/somemetamodel/util/SomemetamodelAdapterFactory$1.class b/SomeMetamodel/bin/somemetamodel/util/SomemetamodelAdapterFactory$1.class
new file mode 100644
index 0000000000000000000000000000000000000000..b0bf3f90e81586799d43445973b6b3edc8cb0adc
Binary files /dev/null and b/SomeMetamodel/bin/somemetamodel/util/SomemetamodelAdapterFactory$1.class differ
diff --git a/SomeMetamodel/bin/somemetamodel/util/SomemetamodelAdapterFactory.class b/SomeMetamodel/bin/somemetamodel/util/SomemetamodelAdapterFactory.class
new file mode 100644
index 0000000000000000000000000000000000000000..b54b3b0c5d69389ab0bbcd09f621f3552a3b136b
Binary files /dev/null and b/SomeMetamodel/bin/somemetamodel/util/SomemetamodelAdapterFactory.class differ
diff --git a/SomeMetamodel/bin/somemetamodel/util/SomemetamodelSwitch.class b/SomeMetamodel/bin/somemetamodel/util/SomemetamodelSwitch.class
new file mode 100644
index 0000000000000000000000000000000000000000..682a6bc4cad28114b7ce1361b3cdd6466cd7071e
Binary files /dev/null and b/SomeMetamodel/bin/somemetamodel/util/SomemetamodelSwitch.class differ
diff --git a/SomeMetamodel/bin/somemetamodelextension/R.class b/SomeMetamodel/bin/somemetamodelextension/R.class
new file mode 100644
index 0000000000000000000000000000000000000000..249ec049e6cc7df389d57644fbc34b85ab0f3a00
Binary files /dev/null and b/SomeMetamodel/bin/somemetamodelextension/R.class differ
diff --git a/SomeMetamodel/bin/somemetamodelextension/SomemetamodelextensionFactory.class b/SomeMetamodel/bin/somemetamodelextension/SomemetamodelextensionFactory.class
new file mode 100644
index 0000000000000000000000000000000000000000..cbb9e4677513d32c2ab000a7b2edaea9290f241b
Binary files /dev/null and b/SomeMetamodel/bin/somemetamodelextension/SomemetamodelextensionFactory.class differ
diff --git a/SomeMetamodel/bin/somemetamodelextension/SomemetamodelextensionPackage$Literals.class b/SomeMetamodel/bin/somemetamodelextension/SomemetamodelextensionPackage$Literals.class
new file mode 100644
index 0000000000000000000000000000000000000000..7365e9cbf3a7107d09072bf6fbf037f8633ea16d
Binary files /dev/null and b/SomeMetamodel/bin/somemetamodelextension/SomemetamodelextensionPackage$Literals.class differ
diff --git a/SomeMetamodel/bin/somemetamodelextension/SomemetamodelextensionPackage.class b/SomeMetamodel/bin/somemetamodelextension/SomemetamodelextensionPackage.class
new file mode 100644
index 0000000000000000000000000000000000000000..051c6ec1ad1d4fefc0af1e7a37d34b46c44a9a94
Binary files /dev/null and b/SomeMetamodel/bin/somemetamodelextension/SomemetamodelextensionPackage.class differ
diff --git a/SomeMetamodel/bin/somemetamodelextension/X.class b/SomeMetamodel/bin/somemetamodelextension/X.class
new file mode 100644
index 0000000000000000000000000000000000000000..ca575370f60ffe5b7fc1b8b329f35e18be2d8693
Binary files /dev/null and b/SomeMetamodel/bin/somemetamodelextension/X.class differ
diff --git a/SomeMetamodel/bin/somemetamodelextension/hidden/HiddenFactory.class b/SomeMetamodel/bin/somemetamodelextension/hidden/HiddenFactory.class
new file mode 100644
index 0000000000000000000000000000000000000000..5e953025cbd8ee4d9e664a9fe1c6e7d886b1c9a8
Binary files /dev/null and b/SomeMetamodel/bin/somemetamodelextension/hidden/HiddenFactory.class differ
diff --git a/SomeMetamodel/bin/somemetamodelextension/hidden/HiddenPackage$Literals.class b/SomeMetamodel/bin/somemetamodelextension/hidden/HiddenPackage$Literals.class
new file mode 100644
index 0000000000000000000000000000000000000000..b3576b8695fea924602673991b67794344961c84
Binary files /dev/null and b/SomeMetamodel/bin/somemetamodelextension/hidden/HiddenPackage$Literals.class differ
diff --git a/SomeMetamodel/bin/somemetamodelextension/hidden/HiddenPackage.class b/SomeMetamodel/bin/somemetamodelextension/hidden/HiddenPackage.class
new file mode 100644
index 0000000000000000000000000000000000000000..0a23efef7297ec8834f1ba7367aacb4a1208c75d
Binary files /dev/null and b/SomeMetamodel/bin/somemetamodelextension/hidden/HiddenPackage.class differ
diff --git a/SomeMetamodel/bin/somemetamodelextension/hidden/Y.class b/SomeMetamodel/bin/somemetamodelextension/hidden/Y.class
new file mode 100644
index 0000000000000000000000000000000000000000..fdb8d86930dcf2455a3ec2413a5dad18f87d1586
Binary files /dev/null and b/SomeMetamodel/bin/somemetamodelextension/hidden/Y.class differ
diff --git a/SomeMetamodel/bin/somemetamodelextension/hidden/Z.class b/SomeMetamodel/bin/somemetamodelextension/hidden/Z.class
new file mode 100644
index 0000000000000000000000000000000000000000..7508e7b6a7fa7e2b08cac3c1c56f3322eed99609
Binary files /dev/null and b/SomeMetamodel/bin/somemetamodelextension/hidden/Z.class differ
diff --git a/SomeMetamodel/bin/somemetamodelextension/hidden/impl/HiddenFactoryImpl.class b/SomeMetamodel/bin/somemetamodelextension/hidden/impl/HiddenFactoryImpl.class
new file mode 100644
index 0000000000000000000000000000000000000000..528cf89eef458a740863216f859ff49ecbbead1d
Binary files /dev/null and b/SomeMetamodel/bin/somemetamodelextension/hidden/impl/HiddenFactoryImpl.class differ
diff --git a/SomeMetamodel/bin/somemetamodelextension/hidden/impl/HiddenPackageImpl.class b/SomeMetamodel/bin/somemetamodelextension/hidden/impl/HiddenPackageImpl.class
new file mode 100644
index 0000000000000000000000000000000000000000..a85b9ae79ca15553a3c899afc861094e5890600a
Binary files /dev/null and b/SomeMetamodel/bin/somemetamodelextension/hidden/impl/HiddenPackageImpl.class differ
diff --git a/SomeMetamodel/bin/somemetamodelextension/hidden/impl/YImpl.class b/SomeMetamodel/bin/somemetamodelextension/hidden/impl/YImpl.class
new file mode 100644
index 0000000000000000000000000000000000000000..3fe4aadcb8d70e47bfe347f74b49908cf1be8874
Binary files /dev/null and b/SomeMetamodel/bin/somemetamodelextension/hidden/impl/YImpl.class differ
diff --git a/SomeMetamodel/bin/somemetamodelextension/hidden/impl/ZImpl.class b/SomeMetamodel/bin/somemetamodelextension/hidden/impl/ZImpl.class
new file mode 100644
index 0000000000000000000000000000000000000000..53ca967df5252aed3049fdfbb92136161fc789fd
Binary files /dev/null and b/SomeMetamodel/bin/somemetamodelextension/hidden/impl/ZImpl.class differ
diff --git a/SomeMetamodel/bin/somemetamodelextension/hidden/util/HiddenAdapterFactory$1.class b/SomeMetamodel/bin/somemetamodelextension/hidden/util/HiddenAdapterFactory$1.class
new file mode 100644
index 0000000000000000000000000000000000000000..0a915a1f8e64a5c1c07e5b107454927bc354df43
Binary files /dev/null and b/SomeMetamodel/bin/somemetamodelextension/hidden/util/HiddenAdapterFactory$1.class differ
diff --git a/SomeMetamodel/bin/somemetamodelextension/hidden/util/HiddenAdapterFactory.class b/SomeMetamodel/bin/somemetamodelextension/hidden/util/HiddenAdapterFactory.class
new file mode 100644
index 0000000000000000000000000000000000000000..19d630fe0b9c3fa79af8dabdc2a80b31a737f0d0
Binary files /dev/null and b/SomeMetamodel/bin/somemetamodelextension/hidden/util/HiddenAdapterFactory.class differ
diff --git a/SomeMetamodel/bin/somemetamodelextension/hidden/util/HiddenSwitch.class b/SomeMetamodel/bin/somemetamodelextension/hidden/util/HiddenSwitch.class
new file mode 100644
index 0000000000000000000000000000000000000000..6db0f685caf2e0bbfd571d98cc5cfc8f0ced68df
Binary files /dev/null and b/SomeMetamodel/bin/somemetamodelextension/hidden/util/HiddenSwitch.class differ
diff --git a/SomeMetamodel/bin/somemetamodelextension/impl/RImpl.class b/SomeMetamodel/bin/somemetamodelextension/impl/RImpl.class
new file mode 100644
index 0000000000000000000000000000000000000000..2433a8f161d5b46e6536e41d9a26cc938ac11d38
Binary files /dev/null and b/SomeMetamodel/bin/somemetamodelextension/impl/RImpl.class differ
diff --git a/SomeMetamodel/bin/somemetamodelextension/impl/SomemetamodelextensionFactoryImpl.class b/SomeMetamodel/bin/somemetamodelextension/impl/SomemetamodelextensionFactoryImpl.class
new file mode 100644
index 0000000000000000000000000000000000000000..9fec172eacf90db62e9c4f198573ad7c0243377d
Binary files /dev/null and b/SomeMetamodel/bin/somemetamodelextension/impl/SomemetamodelextensionFactoryImpl.class differ
diff --git a/SomeMetamodel/bin/somemetamodelextension/impl/SomemetamodelextensionPackageImpl.class b/SomeMetamodel/bin/somemetamodelextension/impl/SomemetamodelextensionPackageImpl.class
new file mode 100644
index 0000000000000000000000000000000000000000..f448681bd2e705a6321b56f728fd35ce6f2abc0c
Binary files /dev/null and b/SomeMetamodel/bin/somemetamodelextension/impl/SomemetamodelextensionPackageImpl.class differ
diff --git a/SomeMetamodel/bin/somemetamodelextension/impl/XImpl.class b/SomeMetamodel/bin/somemetamodelextension/impl/XImpl.class
new file mode 100644
index 0000000000000000000000000000000000000000..6f25b233573605a664a44e15ca3264093800ea3d
Binary files /dev/null and b/SomeMetamodel/bin/somemetamodelextension/impl/XImpl.class differ
diff --git a/SomeMetamodel/bin/somemetamodelextension/util/SomemetamodelextensionAdapterFactory$1.class b/SomeMetamodel/bin/somemetamodelextension/util/SomemetamodelextensionAdapterFactory$1.class
new file mode 100644
index 0000000000000000000000000000000000000000..a1a1ad9e3467218c7ce05514b949d62d8771ca5f
Binary files /dev/null and b/SomeMetamodel/bin/somemetamodelextension/util/SomemetamodelextensionAdapterFactory$1.class differ
diff --git a/SomeMetamodel/bin/somemetamodelextension/util/SomemetamodelextensionAdapterFactory.class b/SomeMetamodel/bin/somemetamodelextension/util/SomemetamodelextensionAdapterFactory.class
new file mode 100644
index 0000000000000000000000000000000000000000..853f3032109175bff6f48c13dc83374444f84105
Binary files /dev/null and b/SomeMetamodel/bin/somemetamodelextension/util/SomemetamodelextensionAdapterFactory.class differ
diff --git a/SomeMetamodel/bin/somemetamodelextension/util/SomemetamodelextensionSwitch.class b/SomeMetamodel/bin/somemetamodelextension/util/SomemetamodelextensionSwitch.class
new file mode 100644
index 0000000000000000000000000000000000000000..d3085e7487e29c83a726b81024cd9c3a54202221
Binary files /dev/null and b/SomeMetamodel/bin/somemetamodelextension/util/SomemetamodelextensionSwitch.class differ
diff --git a/SomeMetamodel/bin/somemmdeep/BDeepPImpl.class b/SomeMetamodel/bin/somemmdeep/BDeepPImpl.class
new file mode 100644
index 0000000000000000000000000000000000000000..9aef463a734c4e97f54fc8a36dbb0e096fb852a9
Binary files /dev/null and b/SomeMetamodel/bin/somemmdeep/BDeepPImpl.class differ
diff --git a/SomeMetamodel/bin/somemmdeep/RDeepPImpl.class b/SomeMetamodel/bin/somemmdeep/RDeepPImpl.class
new file mode 100644
index 0000000000000000000000000000000000000000..5261be22236c3533717058c9b0dc4b8b7ea2fbf5
Binary files /dev/null and b/SomeMetamodel/bin/somemmdeep/RDeepPImpl.class differ
diff --git a/SomeMetamodel/bin/somemmdeep/SomeMMDeepCloningMaterial.class b/SomeMetamodel/bin/somemmdeep/SomeMMDeepCloningMaterial.class
new file mode 100644
index 0000000000000000000000000000000000000000..ce6a40299e2fdebb411abc36723071ba81443bcd
Binary files /dev/null and b/SomeMetamodel/bin/somemmdeep/SomeMMDeepCloningMaterial.class differ
diff --git a/SomeMetamodel/bin/somemmdeep/SomeMMDeepLightCopier.class b/SomeMetamodel/bin/somemmdeep/SomeMMDeepLightCopier.class
new file mode 100644
index 0000000000000000000000000000000000000000..be3bd52602f8119c49feb24973c21ae8d76d49b4
Binary files /dev/null and b/SomeMetamodel/bin/somemmdeep/SomeMMDeepLightCopier.class differ
diff --git a/SomeMetamodel/bin/somemmdeep/SomeMMDeepTags.class b/SomeMetamodel/bin/somemmdeep/SomeMMDeepTags.class
new file mode 100644
index 0000000000000000000000000000000000000000..f23b7ddefe90141e5354a6a2f10dbae489490bfe
Binary files /dev/null and b/SomeMetamodel/bin/somemmdeep/SomeMMDeepTags.class differ
diff --git a/SomeMetamodel/bin/somemmmutclassonly/AMutClassOnlyPImpl.class b/SomeMetamodel/bin/somemmmutclassonly/AMutClassOnlyPImpl.class
new file mode 100644
index 0000000000000000000000000000000000000000..aa672ed47774c0251e470956b333cbcceae13b72
Binary files /dev/null and b/SomeMetamodel/bin/somemmmutclassonly/AMutClassOnlyPImpl.class differ
diff --git a/SomeMetamodel/bin/somemmmutclassonly/BMutClassOnlyPImpl.class b/SomeMetamodel/bin/somemmmutclassonly/BMutClassOnlyPImpl.class
new file mode 100644
index 0000000000000000000000000000000000000000..974044c20e78083b27917508098021ff326fff0c
Binary files /dev/null and b/SomeMetamodel/bin/somemmmutclassonly/BMutClassOnlyPImpl.class differ
diff --git a/SomeMetamodel/bin/somemmmutclassonly/RMutClassOnlyPImpl.class b/SomeMetamodel/bin/somemmmutclassonly/RMutClassOnlyPImpl.class
new file mode 100644
index 0000000000000000000000000000000000000000..9434a2fdd93244d5a47d6a681684e12fcf141983
Binary files /dev/null and b/SomeMetamodel/bin/somemmmutclassonly/RMutClassOnlyPImpl.class differ
diff --git a/SomeMetamodel/bin/somemmmutclassonly/SomeMMMutClassOnlyCloningMaterial.class b/SomeMetamodel/bin/somemmmutclassonly/SomeMMMutClassOnlyCloningMaterial.class
new file mode 100644
index 0000000000000000000000000000000000000000..af92f9055c2f17e32484d8e7a658dcf67bae2f36
Binary files /dev/null and b/SomeMetamodel/bin/somemmmutclassonly/SomeMMMutClassOnlyCloningMaterial.class differ
diff --git a/SomeMetamodel/bin/somemmmutclassonly/SomeMMMutClassOnlyLightCopier.class b/SomeMetamodel/bin/somemmmutclassonly/SomeMMMutClassOnlyLightCopier.class
new file mode 100644
index 0000000000000000000000000000000000000000..20ea8b74b6da98be3fb4327f0b86a9b4724d82b0
Binary files /dev/null and b/SomeMetamodel/bin/somemmmutclassonly/SomeMMMutClassOnlyLightCopier.class differ
diff --git a/SomeMetamodel/bin/somemmmutclassonly/SomeMMMutClassOnlyTags.class b/SomeMetamodel/bin/somemmmutclassonly/SomeMMMutClassOnlyTags.class
new file mode 100644
index 0000000000000000000000000000000000000000..e1c4cc28d1e4a8b2ddd941a8fb87af848a24e3ed
Binary files /dev/null and b/SomeMetamodel/bin/somemmmutclassonly/SomeMMMutClassOnlyTags.class differ
diff --git a/SomeMetamodel/build.properties b/SomeMetamodel/build.properties
new file mode 100644
index 0000000000000000000000000000000000000000..a701a0fd203170d2570e94b0c56e80bbee2fe3d2
--- /dev/null
+++ b/SomeMetamodel/build.properties
@@ -0,0 +1,10 @@
+bin.includes = .,\
+ model/,\
+ META-INF/,\
+ plugin.xml,\
+ plugin.properties,\
+ component.xml
+output.. = bin/
+jars.compile.order = .
+source.. = src/
+jre.compilation.profile = J2SE-1.5
diff --git a/SomeMetamodel/model/SomeMetamodel.ecore b/SomeMetamodel/model/SomeMetamodel.ecore
new file mode 100644
index 0000000000000000000000000000000000000000..59c70928cd52cc385a95029e61f05f5fa1afb759
--- /dev/null
+++ b/SomeMetamodel/model/SomeMetamodel.ecore
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/SomeMetamodel/model/SomeMetamodel.ecorediag b/SomeMetamodel/model/SomeMetamodel.ecorediag
new file mode 100644
index 0000000000000000000000000000000000000000..f0c415e1094d1a3c8c00d50478ab88099f3cbf89
--- /dev/null
+++ b/SomeMetamodel/model/SomeMetamodel.ecorediag
@@ -0,0 +1,288 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/SomeMetamodel/model/SomeMetamodel.genmodel b/SomeMetamodel/model/SomeMetamodel.genmodel
new file mode 100644
index 0000000000000000000000000000000000000000..b20c7ff54b7b09fabf115aec945e4c1eb618a0c6
--- /dev/null
+++ b/SomeMetamodel/model/SomeMetamodel.genmodel
@@ -0,0 +1,49 @@
+
+
+ SomeMetamodel.ecore
+ SomeMetamodelExtension.ecore
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/SomeMetamodel/model/SomeMetamodelExtension.ecore b/SomeMetamodel/model/SomeMetamodelExtension.ecore
new file mode 100644
index 0000000000000000000000000000000000000000..718f86481a2fb9984f3eeb5e51115a20d1e9d15a
--- /dev/null
+++ b/SomeMetamodel/model/SomeMetamodelExtension.ecore
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/SomeMetamodel/plugin.properties b/SomeMetamodel/plugin.properties
new file mode 100644
index 0000000000000000000000000000000000000000..d5c652b39a3d613db681d8f6a574d555d7cd3490
--- /dev/null
+++ b/SomeMetamodel/plugin.properties
@@ -0,0 +1,4 @@
+#
+
+pluginName = SomeMetamodel Model
+providerName = www.example.org
diff --git a/SomeMetamodel/plugin.xml b/SomeMetamodel/plugin.xml
new file mode 100644
index 0000000000000000000000000000000000000000..365aea097d0b6091efdb06f071b3a85d6e0ffe4d
--- /dev/null
+++ b/SomeMetamodel/plugin.xml
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/SomeMetamodel/src/somemetamodel/A.java b/SomeMetamodel/src/somemetamodel/A.java
new file mode 100644
index 0000000000000000000000000000000000000000..de4dd4b0d137ea6495ceb32a2ff13debc30a563a
--- /dev/null
+++ b/SomeMetamodel/src/somemetamodel/A.java
@@ -0,0 +1,155 @@
+/**
+ */
+package somemetamodel;
+
+import fr.inria.diverse.cloning.cloner.emfextension.ShareableEObject;
+
+import org.eclipse.emf.common.util.EList;
+
+import somemetamodelextension.X;
+
+/**
+ *
+ * A representation of the model object 'A'.
+ *
+ *
+ *
+ * The following features are supported:
+ *
+ *
{@link somemetamodel.A#getB B}
+ *
{@link somemetamodel.A#getC C}
+ *
{@link somemetamodel.A#getD D}
+ *
{@link somemetamodel.A#getE E}
+ *
{@link somemetamodel.A#getX X}
+ *
+ *
+ *
+ * @see somemetamodel.SomemetamodelPackage#getA()
+ * @model
+ * @extends ShareableEObject
+ * @generated
+ */
+public interface A extends ShareableEObject {
+ /**
+ * Returns the value of the 'B' containment reference.
+ *
+ *
+ * If the meaning of the 'B' containment reference isn't clear,
+ * there really should be more of a description here...
+ *
+ *
+ * @return the value of the 'B' containment reference.
+ * @see #setB(B)
+ * @see somemetamodel.SomemetamodelPackage#getA_B()
+ * @model containment="true"
+ * @generated
+ */
+ B getB();
+
+ /**
+ * Sets the value of the '{@link somemetamodel.A#getB B}' containment reference.
+ *
+ *
+ * @param value the new value of the 'B' containment reference.
+ * @see #getB()
+ * @generated
+ */
+ void setB(B value);
+
+ /**
+ * Returns the value of the 'C' reference.
+ *
+ *
+ * If the meaning of the 'C' reference isn't clear,
+ * there really should be more of a description here...
+ *
+ *
+ * @return the value of the 'C' reference.
+ * @see #setC(C)
+ * @see somemetamodel.SomemetamodelPackage#getA_C()
+ * @model
+ * @generated
+ */
+ C getC();
+
+ /**
+ * Sets the value of the '{@link somemetamodel.A#getC C}' reference.
+ *
+ *
+ * @param value the new value of the 'C' reference.
+ * @see #getC()
+ * @generated
+ */
+ void setC(C value);
+
+ /**
+ * Returns the value of the 'D' reference.
+ * It is bidirectional and its opposite is '{@link somemetamodel.D#getA A}'.
+ *
+ *
+ * If the meaning of the 'D' reference isn't clear,
+ * there really should be more of a description here...
+ *
+ *
+ * @return the value of the 'D' reference.
+ * @see #setD(D)
+ * @see somemetamodel.SomemetamodelPackage#getA_D()
+ * @see somemetamodel.D#getA
+ * @model opposite="a"
+ * @generated
+ */
+ D getD();
+
+ /**
+ * Sets the value of the '{@link somemetamodel.A#getD D}' reference.
+ *
+ *
+ * @param value the new value of the 'D' reference.
+ * @see #getD()
+ * @generated
+ */
+ void setD(D value);
+
+ /**
+ * Returns the value of the 'E' containment reference list.
+ * The list contents are of type {@link somemetamodel.E}.
+ *
+ *
+ * If the meaning of the 'E' containment reference list isn't clear,
+ * there really should be more of a description here...
+ *
+ *
+ * @return the value of the 'E' containment reference list.
+ * @see somemetamodel.SomemetamodelPackage#getA_E()
+ * @model containment="true"
+ * @generated
+ */
+ EList getE();
+
+ /**
+ * Returns the value of the 'X' reference.
+ *
+ *
+ * If the meaning of the 'X' reference isn't clear,
+ * there really should be more of a description here...
+ *
+ *
+ * @return the value of the 'X' reference.
+ * @see #setX(X)
+ * @see somemetamodel.SomemetamodelPackage#getA_X()
+ * @model
+ * @generated
+ */
+ X getX();
+
+ /**
+ * Sets the value of the '{@link somemetamodel.A#getX X}' reference.
+ *
+ *
+ * @param value the new value of the 'X' reference.
+ * @see #getX()
+ * @generated
+ */
+ void setX(X value);
+
+} // A
diff --git a/SomeMetamodel/src/somemetamodel/B.java b/SomeMetamodel/src/somemetamodel/B.java
new file mode 100644
index 0000000000000000000000000000000000000000..d09a661ffa3c03ebcd7b111a95fddffd7e1986cd
--- /dev/null
+++ b/SomeMetamodel/src/somemetamodel/B.java
@@ -0,0 +1,78 @@
+/**
+ */
+package somemetamodel;
+
+import fr.inria.diverse.cloning.cloner.emfextension.ShareableEObject;
+
+/**
+ *
+ * A representation of the model object 'B'.
+ *
+ *
+ *
+ * The following features are supported:
+ *
+ *
{@link somemetamodel.B#getN1_m N1 m}
+ *
{@link somemetamodel.B#getN2 N2}
+ *
+ *
+ *
+ * @see somemetamodel.SomemetamodelPackage#getB()
+ * @model
+ * @extends ShareableEObject
+ * @generated
+ */
+public interface B extends ShareableEObject {
+ /**
+ * Returns the value of the 'N1 m' attribute.
+ *
+ *
+ * If the meaning of the 'N1 m' attribute isn't clear,
+ * there really should be more of a description here...
+ *
+ *
+ * @return the value of the 'N1 m' attribute.
+ * @see #setN1_m(int)
+ * @see somemetamodel.SomemetamodelPackage#getB_N1_m()
+ * @model
+ * @generated
+ */
+ int getN1_m();
+
+ /**
+ * Sets the value of the '{@link somemetamodel.B#getN1_m N1 m}' attribute.
+ *
+ *
+ * @param value the new value of the 'N1 m' attribute.
+ * @see #getN1_m()
+ * @generated
+ */
+ void setN1_m(int value);
+
+ /**
+ * Returns the value of the 'N2' attribute.
+ *
+ *
+ * If the meaning of the 'N2' attribute isn't clear,
+ * there really should be more of a description here...
+ *
+ *
+ * @return the value of the 'N2' attribute.
+ * @see #setN2(byte)
+ * @see somemetamodel.SomemetamodelPackage#getB_N2()
+ * @model
+ * @generated
+ */
+ byte getN2();
+
+ /**
+ * Sets the value of the '{@link somemetamodel.B#getN2 N2}' attribute.
+ *
+ *
+ * @param value the new value of the 'N2' attribute.
+ * @see #getN2()
+ * @generated
+ */
+ void setN2(byte value);
+
+} // B
diff --git a/SomeMetamodel/src/somemetamodel/C.java b/SomeMetamodel/src/somemetamodel/C.java
new file mode 100644
index 0000000000000000000000000000000000000000..8929e264100922b4148c62771eb7bcb69205e1bf
--- /dev/null
+++ b/SomeMetamodel/src/somemetamodel/C.java
@@ -0,0 +1,51 @@
+/**
+ */
+package somemetamodel;
+
+import fr.inria.diverse.cloning.cloner.emfextension.ShareableEObject;
+
+/**
+ *
+ * A representation of the model object 'C'.
+ *
+ *
+ *
+ * The following features are supported:
+ *
+ *
{@link somemetamodel.C#getYay_m Yay m}
+ *
+ *
+ *
+ * @see somemetamodel.SomemetamodelPackage#getC()
+ * @model
+ * @extends ShareableEObject
+ * @generated
+ */
+public interface C extends ShareableEObject {
+ /**
+ * Returns the value of the 'Yay m' attribute.
+ *
+ *
+ * If the meaning of the 'Yay m' attribute isn't clear,
+ * there really should be more of a description here...
+ *
+ *
+ * @return the value of the 'Yay m' attribute.
+ * @see #setYay_m(int)
+ * @see somemetamodel.SomemetamodelPackage#getC_Yay_m()
+ * @model
+ * @generated
+ */
+ int getYay_m();
+
+ /**
+ * Sets the value of the '{@link somemetamodel.C#getYay_m Yay m}' attribute.
+ *
+ *
+ * @param value the new value of the 'Yay m' attribute.
+ * @see #getYay_m()
+ * @generated
+ */
+ void setYay_m(int value);
+
+} // C
diff --git a/SomeMetamodel/src/somemetamodel/D.java b/SomeMetamodel/src/somemetamodel/D.java
new file mode 100644
index 0000000000000000000000000000000000000000..001c92a68107024e3a22ccb8a0a1cf35fb903095
--- /dev/null
+++ b/SomeMetamodel/src/somemetamodel/D.java
@@ -0,0 +1,53 @@
+/**
+ */
+package somemetamodel;
+
+import fr.inria.diverse.cloning.cloner.emfextension.ShareableEObject;
+
+/**
+ *
+ * A representation of the model object 'D'.
+ *
+ *
+ *
+ * The following features are supported:
+ *
+ *
{@link somemetamodel.D#getA A}
+ *
+ *
+ *
+ * @see somemetamodel.SomemetamodelPackage#getD()
+ * @model
+ * @extends ShareableEObject
+ * @generated
+ */
+public interface D extends ShareableEObject {
+ /**
+ * Returns the value of the 'A' reference.
+ * It is bidirectional and its opposite is '{@link somemetamodel.A#getD D}'.
+ *
+ *
+ * If the meaning of the 'A' reference isn't clear,
+ * there really should be more of a description here...
+ *
+ *
+ * @return the value of the 'A' reference.
+ * @see #setA(A)
+ * @see somemetamodel.SomemetamodelPackage#getD_A()
+ * @see somemetamodel.A#getD
+ * @model opposite="d"
+ * @generated
+ */
+ A getA();
+
+ /**
+ * Sets the value of the '{@link somemetamodel.D#getA A}' reference.
+ *
+ *
+ * @param value the new value of the 'A' reference.
+ * @see #getA()
+ * @generated
+ */
+ void setA(A value);
+
+} // D
diff --git a/SomeMetamodel/src/somemetamodel/E.java b/SomeMetamodel/src/somemetamodel/E.java
new file mode 100644
index 0000000000000000000000000000000000000000..b4c057ae0561bb75fe96b50fac1ed1b46520245e
--- /dev/null
+++ b/SomeMetamodel/src/somemetamodel/E.java
@@ -0,0 +1,19 @@
+/**
+ */
+package somemetamodel;
+
+import fr.inria.diverse.cloning.cloner.emfextension.ShareableEObject;
+
+/**
+ *
+ * A representation of the model object 'E'.
+ *
+ *
+ *
+ * @see somemetamodel.SomemetamodelPackage#getE()
+ * @model
+ * @extends ShareableEObject
+ * @generated
+ */
+public interface E extends ShareableEObject {
+} // E
diff --git a/SomeMetamodel/src/somemetamodel/SomemetamodelFactory.java b/SomeMetamodel/src/somemetamodel/SomemetamodelFactory.java
new file mode 100644
index 0000000000000000000000000000000000000000..835035a49da9ca3698ca9f2e5824f12a922badbe
--- /dev/null
+++ b/SomeMetamodel/src/somemetamodel/SomemetamodelFactory.java
@@ -0,0 +1,79 @@
+/**
+ */
+package somemetamodel;
+
+import org.eclipse.emf.ecore.EFactory;
+
+/**
+ *
+ * The Factory for the model.
+ * It provides a create method for each non-abstract class of the model.
+ *
+ * @see somemetamodel.SomemetamodelPackage
+ * @generated
+ */
+public interface SomemetamodelFactory extends EFactory {
+ /**
+ * The singleton instance of the factory.
+ *
+ *
+ * @generated
+ */
+ SomemetamodelFactory eINSTANCE = somemetamodel.impl.SomemetamodelFactoryImpl
+ .init();
+
+ /**
+ * Returns a new object of class 'A'.
+ *
+ *
+ * @return a new object of class 'A'.
+ * @generated
+ */
+ A createA();
+
+ /**
+ * Returns a new object of class 'B'.
+ *
+ *
+ * @return a new object of class 'B'.
+ * @generated
+ */
+ B createB();
+
+ /**
+ * Returns a new object of class 'C'.
+ *
+ *
+ * @return a new object of class 'C'.
+ * @generated
+ */
+ C createC();
+
+ /**
+ * Returns a new object of class 'D'.
+ *
+ *
+ * @return a new object of class 'D'.
+ * @generated
+ */
+ D createD();
+
+ /**
+ * Returns a new object of class 'E'.
+ *
+ *
+ * @return a new object of class 'E'.
+ * @generated
+ */
+ E createE();
+
+ /**
+ * Returns the package supported by this factory.
+ *
+ *
+ * @return the package supported by this factory.
+ * @generated
+ */
+ SomemetamodelPackage getSomemetamodelPackage();
+
+} //SomemetamodelFactory
diff --git a/SomeMetamodel/src/somemetamodel/SomemetamodelPackage.java b/SomeMetamodel/src/somemetamodel/SomemetamodelPackage.java
new file mode 100644
index 0000000000000000000000000000000000000000..52ee333bb27b6d962425e6ea34163277a5f42f5c
--- /dev/null
+++ b/SomeMetamodel/src/somemetamodel/SomemetamodelPackage.java
@@ -0,0 +1,577 @@
+/**
+ */
+package somemetamodel;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+
+/**
+ *
+ * The Package for the model.
+ * It contains accessors for the meta objects to represent
+ *
+ *
each class,
+ *
each feature of each class,
+ *
each operation of each class,
+ *
each enum,
+ *
and each data type
+ *
+ *
+ * @see somemetamodel.SomemetamodelFactory
+ * @model kind="package"
+ * @generated
+ */
+public interface SomemetamodelPackage extends EPackage {
+ /**
+ * The package name.
+ *
+ *
+ * @generated
+ */
+ String eNAME = "somemetamodel";
+
+ /**
+ * The package namespace URI.
+ *
+ *
+ * @generated
+ */
+ String eNS_URI = "http://somemetamodel";
+
+ /**
+ * The package namespace name.
+ *
+ *
+ * @generated
+ */
+ String eNS_PREFIX = "somemetamodel";
+
+ /**
+ * The singleton instance of the package.
+ *
+ *
+ * @generated
+ */
+ SomemetamodelPackage eINSTANCE = somemetamodel.impl.SomemetamodelPackageImpl
+ .init();
+
+ /**
+ * The meta object id for the '{@link somemetamodel.impl.AImpl A}' class.
+ *
+ *
+ * @see somemetamodel.impl.AImpl
+ * @see somemetamodel.impl.SomemetamodelPackageImpl#getA()
+ * @generated
+ */
+ int A = 0;
+
+ /**
+ * The feature id for the 'B' containment reference.
+ *
+ *
+ * @generated
+ * @ordered
+ */
+ int A__B = 0;
+
+ /**
+ * The feature id for the 'C' reference.
+ *
+ *
+ * @generated
+ * @ordered
+ */
+ int A__C = 1;
+
+ /**
+ * The feature id for the 'D' reference.
+ *
+ *
+ * @generated
+ * @ordered
+ */
+ int A__D = 2;
+
+ /**
+ * The feature id for the 'E' containment reference list.
+ *
+ *
+ * @generated
+ * @ordered
+ */
+ int A__E = 3;
+
+ /**
+ * The feature id for the 'X' reference.
+ *
+ *
+ * @generated
+ * @ordered
+ */
+ int A__X = 4;
+
+ /**
+ * The number of structural features of the 'A' class.
+ *
+ *
+ * @generated
+ * @ordered
+ */
+ int A_FEATURE_COUNT = 5;
+
+ /**
+ * The number of operations of the 'A' class.
+ *
+ *
+ * @generated
+ * @ordered
+ */
+ int A_OPERATION_COUNT = 0;
+
+ /**
+ * The meta object id for the '{@link somemetamodel.impl.BImpl B}' class.
+ *
+ *
+ * @see somemetamodel.impl.BImpl
+ * @see somemetamodel.impl.SomemetamodelPackageImpl#getB()
+ * @generated
+ */
+ int B = 1;
+
+ /**
+ * The feature id for the 'N1 m' attribute.
+ *
+ *
+ * @generated
+ * @ordered
+ */
+ int B__N1_M = 0;
+
+ /**
+ * The feature id for the 'N2' attribute.
+ *
+ *
+ * @generated
+ * @ordered
+ */
+ int B__N2 = 1;
+
+ /**
+ * The number of structural features of the 'B' class.
+ *
+ *
+ * @generated
+ * @ordered
+ */
+ int B_FEATURE_COUNT = 2;
+
+ /**
+ * The number of operations of the 'B' class.
+ *
+ *
+ * @generated
+ * @ordered
+ */
+ int B_OPERATION_COUNT = 0;
+
+ /**
+ * The meta object id for the '{@link somemetamodel.impl.CImpl C}' class.
+ *
+ *
+ * @see somemetamodel.impl.CImpl
+ * @see somemetamodel.impl.SomemetamodelPackageImpl#getC()
+ * @generated
+ */
+ int C = 2;
+
+ /**
+ * The feature id for the 'Yay m' attribute.
+ *
+ *
+ * @generated
+ * @ordered
+ */
+ int C__YAY_M = 0;
+
+ /**
+ * The number of structural features of the 'C' class.
+ *
+ *
+ * @generated
+ * @ordered
+ */
+ int C_FEATURE_COUNT = 1;
+
+ /**
+ * The number of operations of the 'C' class.
+ *
+ *
+ * @generated
+ * @ordered
+ */
+ int C_OPERATION_COUNT = 0;
+
+ /**
+ * The meta object id for the '{@link somemetamodel.impl.DImpl D}' class.
+ *
+ *
+ * @see somemetamodel.impl.DImpl
+ * @see somemetamodel.impl.SomemetamodelPackageImpl#getD()
+ * @generated
+ */
+ int D = 3;
+
+ /**
+ * The feature id for the 'A' reference.
+ *
+ *
+ * @generated
+ * @ordered
+ */
+ int D__A = 0;
+
+ /**
+ * The number of structural features of the 'D' class.
+ *
+ *
+ * @generated
+ * @ordered
+ */
+ int D_FEATURE_COUNT = 1;
+
+ /**
+ * The number of operations of the 'D' class.
+ *
+ *
+ * @generated
+ * @ordered
+ */
+ int D_OPERATION_COUNT = 0;
+
+ /**
+ * The meta object id for the '{@link somemetamodel.impl.EImpl E}' class.
+ *
+ *
+ * @see somemetamodel.impl.EImpl
+ * @see somemetamodel.impl.SomemetamodelPackageImpl#getE()
+ * @generated
+ */
+ int E = 4;
+
+ /**
+ * The number of structural features of the 'E' class.
+ *
+ *
+ * @generated
+ * @ordered
+ */
+ int E_FEATURE_COUNT = 0;
+
+ /**
+ * The number of operations of the 'E' class.
+ *
+ *
+ * @generated
+ * @ordered
+ */
+ int E_OPERATION_COUNT = 0;
+
+ /**
+ * Returns the meta object for class '{@link somemetamodel.A A}'.
+ *
+ *
+ * @return the meta object for class 'A'.
+ * @see somemetamodel.A
+ * @generated
+ */
+ EClass getA();
+
+ /**
+ * Returns the meta object for the containment reference '{@link somemetamodel.A#getB B}'.
+ *
+ *
+ * @return the meta object for the containment reference 'B'.
+ * @see somemetamodel.A#getB()
+ * @see #getA()
+ * @generated
+ */
+ EReference getA_B();
+
+ /**
+ * Returns the meta object for the reference '{@link somemetamodel.A#getC C}'.
+ *
+ *
+ * @return the meta object for the reference 'C'.
+ * @see somemetamodel.A#getC()
+ * @see #getA()
+ * @generated
+ */
+ EReference getA_C();
+
+ /**
+ * Returns the meta object for the reference '{@link somemetamodel.A#getD D}'.
+ *
+ *
+ * @return the meta object for the reference 'D'.
+ * @see somemetamodel.A#getD()
+ * @see #getA()
+ * @generated
+ */
+ EReference getA_D();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link somemetamodel.A#getE E}'.
+ *
+ *
+ * @return the meta object for the containment reference list 'E'.
+ * @see somemetamodel.A#getE()
+ * @see #getA()
+ * @generated
+ */
+ EReference getA_E();
+
+ /**
+ * Returns the meta object for the reference '{@link somemetamodel.A#getX X}'.
+ *
+ *
+ * @return the meta object for the reference 'X'.
+ * @see somemetamodel.A#getX()
+ * @see #getA()
+ * @generated
+ */
+ EReference getA_X();
+
+ /**
+ * Returns the meta object for class '{@link somemetamodel.B B}'.
+ *
+ *
+ * @return the meta object for class 'B'.
+ * @see somemetamodel.B
+ * @generated
+ */
+ EClass getB();
+
+ /**
+ * Returns the meta object for the attribute '{@link somemetamodel.B#getN1_m N1 m}'.
+ *
+ *
+ * @return the meta object for the attribute 'N1 m'.
+ * @see somemetamodel.B#getN1_m()
+ * @see #getB()
+ * @generated
+ */
+ EAttribute getB_N1_m();
+
+ /**
+ * Returns the meta object for the attribute '{@link somemetamodel.B#getN2 N2}'.
+ *
+ *
+ * @return the meta object for the attribute 'N2'.
+ * @see somemetamodel.B#getN2()
+ * @see #getB()
+ * @generated
+ */
+ EAttribute getB_N2();
+
+ /**
+ * Returns the meta object for class '{@link somemetamodel.C C}'.
+ *
+ *
+ * @return the meta object for class 'C'.
+ * @see somemetamodel.C
+ * @generated
+ */
+ EClass getC();
+
+ /**
+ * Returns the meta object for the attribute '{@link somemetamodel.C#getYay_m Yay m}'.
+ *
+ *
+ * @return the meta object for the attribute 'Yay m'.
+ * @see somemetamodel.C#getYay_m()
+ * @see #getC()
+ * @generated
+ */
+ EAttribute getC_Yay_m();
+
+ /**
+ * Returns the meta object for class '{@link somemetamodel.D D}'.
+ *
+ *
+ * @return the meta object for class 'D'.
+ * @see somemetamodel.D
+ * @generated
+ */
+ EClass getD();
+
+ /**
+ * Returns the meta object for the reference '{@link somemetamodel.D#getA A}'.
+ *
+ *
+ * @return the meta object for the reference 'A'.
+ * @see somemetamodel.D#getA()
+ * @see #getD()
+ * @generated
+ */
+ EReference getD_A();
+
+ /**
+ * Returns the meta object for class '{@link somemetamodel.E E}'.
+ *
+ *
+ * @return the meta object for class 'E'.
+ * @see somemetamodel.E
+ * @generated
+ */
+ EClass getE();
+
+ /**
+ * Returns the factory that creates the instances of the model.
+ *
+ *
+ * @return the factory that creates the instances of the model.
+ * @generated
+ */
+ SomemetamodelFactory getSomemetamodelFactory();
+
+ /**
+ *
+ * Defines literals for the meta objects that represent
+ *
+ *
each class,
+ *
each feature of each class,
+ *
each operation of each class,
+ *
each enum,
+ *
and each data type
+ *
+ *
+ * @generated
+ */
+ interface Literals {
+ /**
+ * The meta object literal for the '{@link somemetamodel.impl.AImpl A}' class.
+ *
+ *
+ * @see somemetamodel.impl.AImpl
+ * @see somemetamodel.impl.SomemetamodelPackageImpl#getA()
+ * @generated
+ */
+ EClass A = eINSTANCE.getA();
+
+ /**
+ * The meta object literal for the 'B' containment reference feature.
+ *
+ *
+ * @generated
+ */
+ EReference A__B = eINSTANCE.getA_B();
+
+ /**
+ * The meta object literal for the 'C' reference feature.
+ *
+ *
+ * @generated
+ */
+ EReference A__C = eINSTANCE.getA_C();
+
+ /**
+ * The meta object literal for the 'D' reference feature.
+ *
+ *
+ * @generated
+ */
+ EReference A__D = eINSTANCE.getA_D();
+
+ /**
+ * The meta object literal for the 'E' containment reference list feature.
+ *
+ *
+ * @generated
+ */
+ EReference A__E = eINSTANCE.getA_E();
+
+ /**
+ * The meta object literal for the 'X' reference feature.
+ *
+ *
+ * @generated
+ */
+ EReference A__X = eINSTANCE.getA_X();
+
+ /**
+ * The meta object literal for the '{@link somemetamodel.impl.BImpl B}' class.
+ *
+ *
+ * @see somemetamodel.impl.BImpl
+ * @see somemetamodel.impl.SomemetamodelPackageImpl#getB()
+ * @generated
+ */
+ EClass B = eINSTANCE.getB();
+
+ /**
+ * The meta object literal for the 'N1 m' attribute feature.
+ *
+ *
+ * @generated
+ */
+ EAttribute B__N1_M = eINSTANCE.getB_N1_m();
+
+ /**
+ * The meta object literal for the 'N2' attribute feature.
+ *
+ *
+ * @generated
+ */
+ EAttribute B__N2 = eINSTANCE.getB_N2();
+
+ /**
+ * The meta object literal for the '{@link somemetamodel.impl.CImpl C}' class.
+ *
+ *
+ * @see somemetamodel.impl.CImpl
+ * @see somemetamodel.impl.SomemetamodelPackageImpl#getC()
+ * @generated
+ */
+ EClass C = eINSTANCE.getC();
+
+ /**
+ * The meta object literal for the 'Yay m' attribute feature.
+ *
+ *
+ * @generated
+ */
+ EAttribute C__YAY_M = eINSTANCE.getC_Yay_m();
+
+ /**
+ * The meta object literal for the '{@link somemetamodel.impl.DImpl D}' class.
+ *
+ *
+ * @see somemetamodel.impl.DImpl
+ * @see somemetamodel.impl.SomemetamodelPackageImpl#getD()
+ * @generated
+ */
+ EClass D = eINSTANCE.getD();
+
+ /**
+ * The meta object literal for the 'A' reference feature.
+ *
+ *
+ * @generated
+ */
+ EReference D__A = eINSTANCE.getD_A();
+
+ /**
+ * The meta object literal for the '{@link somemetamodel.impl.EImpl E}' class.
+ *
+ *
+ * @see somemetamodel.impl.EImpl
+ * @see somemetamodel.impl.SomemetamodelPackageImpl#getE()
+ * @generated
+ */
+ EClass E = eINSTANCE.getE();
+
+ }
+
+} //SomemetamodelPackage
diff --git a/SomeMetamodel/src/somemetamodel/impl/AImpl.java b/SomeMetamodel/src/somemetamodel/impl/AImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..e68d1c3b57da8547c1a676b6b2b32df8cc518d5e
--- /dev/null
+++ b/SomeMetamodel/src/somemetamodel/impl/AImpl.java
@@ -0,0 +1,471 @@
+/**
+ */
+package somemetamodel.impl;
+
+import fr.inria.diverse.cloning.cloner.emfextension.impl.AbstractShareableEObject;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+import somemetamodel.A;
+import somemetamodel.B;
+import somemetamodel.C;
+import somemetamodel.D;
+import somemetamodel.E;
+import somemetamodel.SomemetamodelPackage;
+import somemetamodelextension.X;
+
+/**
+ *
+ * An implementation of the model object 'A'.
+ *
+ *
Note: the correct way to create the package is via the static
+ * factory method {@link #init init()}, which also performs
+ * initialization of the package, or returns the registered package,
+ * if one already exists.
+ *
+ *
+ * @see org.eclipse.emf.ecore.EPackage.Registry
+ * @see somemetamodel.SomemetamodelPackage#eNS_URI
+ * @see #init()
+ * @generated
+ */
+ private SomemetamodelPackageImpl() {
+ super(eNS_URI, SomemetamodelFactory.eINSTANCE);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ private static boolean isInited = false;
+
+ /**
+ * Creates, registers, and initializes the Package for this model, and for any others upon which it depends.
+ *
+ *
This method is used to initialize {@link SomemetamodelPackage#eINSTANCE} when that field is accessed.
+ * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
+ *
+ *
+ * @see #eNS_URI
+ * @see #createPackageContents()
+ * @see #initializePackageContents()
+ * @generated
+ */
+ public static SomemetamodelPackage init() {
+ if (isInited)
+ return (SomemetamodelPackage) EPackage.Registry.INSTANCE
+ .getEPackage(SomemetamodelPackage.eNS_URI);
+
+ // Obtain or create and register package
+ SomemetamodelPackageImpl theSomemetamodelPackage = (SomemetamodelPackageImpl) (EPackage.Registry.INSTANCE
+ .get(eNS_URI) instanceof SomemetamodelPackageImpl ? EPackage.Registry.INSTANCE
+ .get(eNS_URI) : new SomemetamodelPackageImpl());
+
+ isInited = true;
+
+ // Obtain or create and register interdependencies
+ SomemetamodelextensionPackageImpl theSomemetamodelextensionPackage = (SomemetamodelextensionPackageImpl) (EPackage.Registry.INSTANCE
+ .getEPackage(SomemetamodelextensionPackage.eNS_URI) instanceof SomemetamodelextensionPackageImpl ? EPackage.Registry.INSTANCE
+ .getEPackage(SomemetamodelextensionPackage.eNS_URI)
+ : SomemetamodelextensionPackage.eINSTANCE);
+ HiddenPackageImpl theHiddenPackage = (HiddenPackageImpl) (EPackage.Registry.INSTANCE
+ .getEPackage(HiddenPackage.eNS_URI) instanceof HiddenPackageImpl ? EPackage.Registry.INSTANCE
+ .getEPackage(HiddenPackage.eNS_URI) : HiddenPackage.eINSTANCE);
+
+ // Create package meta-data objects
+ theSomemetamodelPackage.createPackageContents();
+ theSomemetamodelextensionPackage.createPackageContents();
+ theHiddenPackage.createPackageContents();
+
+ // Initialize created meta-data
+ theSomemetamodelPackage.initializePackageContents();
+ theSomemetamodelextensionPackage.initializePackageContents();
+ theHiddenPackage.initializePackageContents();
+
+ // Mark meta-data to indicate it can't be changed
+ theSomemetamodelPackage.freeze();
+
+ // Update the registry and return the package
+ EPackage.Registry.INSTANCE.put(SomemetamodelPackage.eNS_URI,
+ theSomemetamodelPackage);
+ return theSomemetamodelPackage;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ public EClass getA() {
+ return aEClass;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ public EReference getA_B() {
+ return (EReference) aEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ public EReference getA_C() {
+ return (EReference) aEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ public EReference getA_D() {
+ return (EReference) aEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ public EReference getA_E() {
+ return (EReference) aEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ public EReference getA_X() {
+ return (EReference) aEClass.getEStructuralFeatures().get(4);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ public EClass getB() {
+ return bEClass;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ public EAttribute getB_N1_m() {
+ return (EAttribute) bEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ public EAttribute getB_N2() {
+ return (EAttribute) bEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ public EClass getC() {
+ return cEClass;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ public EAttribute getC_Yay_m() {
+ return (EAttribute) cEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ public EClass getD() {
+ return dEClass;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ public EReference getD_A() {
+ return (EReference) dEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ public EClass getE() {
+ return eEClass;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ public SomemetamodelFactory getSomemetamodelFactory() {
+ return (SomemetamodelFactory) getEFactoryInstance();
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ private boolean isCreated = false;
+
+ /**
+ * Creates the meta-model objects for the package. This method is
+ * guarded to have no affect on any invocation but its first.
+ *
+ *
+ * @generated
+ */
+ public void createPackageContents() {
+ if (isCreated)
+ return;
+ isCreated = true;
+
+ // Create classes and their features
+ aEClass = createEClass(A);
+ createEReference(aEClass, A__B);
+ createEReference(aEClass, A__C);
+ createEReference(aEClass, A__D);
+ createEReference(aEClass, A__E);
+ createEReference(aEClass, A__X);
+
+ bEClass = createEClass(B);
+ createEAttribute(bEClass, B__N1_M);
+ createEAttribute(bEClass, B__N2);
+
+ cEClass = createEClass(C);
+ createEAttribute(cEClass, C__YAY_M);
+
+ dEClass = createEClass(D);
+ createEReference(dEClass, D__A);
+
+ eEClass = createEClass(E);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ private boolean isInitialized = false;
+
+ /**
+ * Complete the initialization of the package and its meta-model. This
+ * method is guarded to have no affect on any invocation but its first.
+ *
+ *
+ * @generated
+ */
+ public void initializePackageContents() {
+ if (isInitialized)
+ return;
+ isInitialized = true;
+
+ // Initialize package
+ setName(eNAME);
+ setNsPrefix(eNS_PREFIX);
+ setNsURI(eNS_URI);
+
+ // Obtain other dependent packages
+ SomemetamodelextensionPackage theSomemetamodelextensionPackage = (SomemetamodelextensionPackage) EPackage.Registry.INSTANCE
+ .getEPackage(SomemetamodelextensionPackage.eNS_URI);
+
+ // Create type parameters
+
+ // Set bounds for type parameters
+
+ // Add supertypes to classes
+
+ // Initialize classes, features, and operations; add parameters
+ initEClass(aEClass, somemetamodel.A.class, "A", !IS_ABSTRACT,
+ !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getA_B(), this.getB(), null, "b", null, 0, 1,
+ somemetamodel.A.class, !IS_TRANSIENT, !IS_VOLATILE,
+ IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES,
+ !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getA_C(), this.getC(), null, "c", null, 0, 1,
+ somemetamodel.A.class, !IS_TRANSIENT, !IS_VOLATILE,
+ IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES,
+ !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getA_D(), this.getD(), this.getD_A(), "d", null, 0, 1,
+ somemetamodel.A.class, !IS_TRANSIENT, !IS_VOLATILE,
+ IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES,
+ !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getA_E(), this.getE(), null, "e", null, 0, -1,
+ somemetamodel.A.class, !IS_TRANSIENT, !IS_VOLATILE,
+ IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES,
+ !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getA_X(), theSomemetamodelextensionPackage.getX(), null,
+ "x", null, 0, 1, somemetamodel.A.class, !IS_TRANSIENT,
+ !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES,
+ !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(bEClass, somemetamodel.B.class, "B", !IS_ABSTRACT,
+ !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getB_N1_m(), ecorePackage.getEInt(), "n1_m", null, 0, 1,
+ somemetamodel.B.class, !IS_TRANSIENT, !IS_VOLATILE,
+ IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED,
+ IS_ORDERED);
+ initEAttribute(getB_N2(), ecorePackage.getEByte(), "n2", null, 0, 1,
+ somemetamodel.B.class, !IS_TRANSIENT, !IS_VOLATILE,
+ IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED,
+ IS_ORDERED);
+
+ initEClass(cEClass, somemetamodel.C.class, "C", !IS_ABSTRACT,
+ !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getC_Yay_m(), ecorePackage.getEInt(), "yay_m", null, 0,
+ 1, somemetamodel.C.class, !IS_TRANSIENT, !IS_VOLATILE,
+ IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED,
+ IS_ORDERED);
+
+ initEClass(dEClass, somemetamodel.D.class, "D", !IS_ABSTRACT,
+ !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getD_A(), this.getA(), this.getA_D(), "a", null, 0, 1,
+ somemetamodel.D.class, !IS_TRANSIENT, !IS_VOLATILE,
+ IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES,
+ !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(eEClass, somemetamodel.E.class, "E", !IS_ABSTRACT,
+ !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+ // Create resource
+ createResource(eNS_URI);
+ }
+
+} //SomemetamodelPackageImpl
diff --git a/SomeMetamodel/src/somemetamodel/util/SomemetamodelAdapterFactory.java b/SomeMetamodel/src/somemetamodel/util/SomemetamodelAdapterFactory.java
new file mode 100644
index 0000000000000000000000000000000000000000..964e3c09bdcd402c545abe1632212f5595788730
--- /dev/null
+++ b/SomeMetamodel/src/somemetamodel/util/SomemetamodelAdapterFactory.java
@@ -0,0 +1,195 @@
+/**
+ */
+package somemetamodel.util;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notifier;
+
+import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
+
+import org.eclipse.emf.ecore.EObject;
+
+import somemetamodel.*;
+
+/**
+ *
+ * The Adapter Factory for the model.
+ * It provides an adapter createXXX method for each class of the model.
+ *
+ * @see somemetamodel.SomemetamodelPackage
+ * @generated
+ */
+public class SomemetamodelAdapterFactory extends AdapterFactoryImpl {
+ /**
+ * The cached model package.
+ *
+ *
+ * @generated
+ */
+ protected static SomemetamodelPackage modelPackage;
+
+ /**
+ * Creates an instance of the adapter factory.
+ *
+ *
+ * @generated
+ */
+ public SomemetamodelAdapterFactory() {
+ if (modelPackage == null) {
+ modelPackage = SomemetamodelPackage.eINSTANCE;
+ }
+ }
+
+ /**
+ * Returns whether this factory is applicable for the type of the object.
+ *
+ * This implementation returns true if the object is either the model's package or is an instance object of the model.
+ *
+ * @return whether this factory is applicable for the type of the object.
+ * @generated
+ */
+ @Override
+ public boolean isFactoryForType(Object object) {
+ if (object == modelPackage) {
+ return true;
+ }
+ if (object instanceof EObject) {
+ return ((EObject) object).eClass().getEPackage() == modelPackage;
+ }
+ return false;
+ }
+
+ /**
+ * The switch that delegates to the createXXX methods.
+ *
+ *
+ * @generated
+ */
+ protected SomemetamodelSwitch modelSwitch = new SomemetamodelSwitch() {
+ @Override
+ public Adapter caseA(A object) {
+ return createAAdapter();
+ }
+
+ @Override
+ public Adapter caseB(B object) {
+ return createBAdapter();
+ }
+
+ @Override
+ public Adapter caseC(C object) {
+ return createCAdapter();
+ }
+
+ @Override
+ public Adapter caseD(D object) {
+ return createDAdapter();
+ }
+
+ @Override
+ public Adapter caseE(E object) {
+ return createEAdapter();
+ }
+
+ @Override
+ public Adapter defaultCase(EObject object) {
+ return createEObjectAdapter();
+ }
+ };
+
+ /**
+ * Creates an adapter for the target.
+ *
+ *
+ * @param target the object to adapt.
+ * @return the adapter for the target.
+ * @generated
+ */
+ @Override
+ public Adapter createAdapter(Notifier target) {
+ return modelSwitch.doSwitch((EObject) target);
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link somemetamodel.A A}'.
+ *
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ *
+ * @return the new adapter.
+ * @see somemetamodel.A
+ * @generated
+ */
+ public Adapter createAAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link somemetamodel.B B}'.
+ *
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ *
+ * @return the new adapter.
+ * @see somemetamodel.B
+ * @generated
+ */
+ public Adapter createBAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link somemetamodel.C C}'.
+ *
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ *
+ * @return the new adapter.
+ * @see somemetamodel.C
+ * @generated
+ */
+ public Adapter createCAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link somemetamodel.D D}'.
+ *
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ *
+ * @return the new adapter.
+ * @see somemetamodel.D
+ * @generated
+ */
+ public Adapter createDAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link somemetamodel.E E}'.
+ *
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ *
+ * @return the new adapter.
+ * @see somemetamodel.E
+ * @generated
+ */
+ public Adapter createEAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for the default case.
+ *
+ * This default implementation returns null.
+ *
+ * @return the new adapter.
+ * @generated
+ */
+ public Adapter createEObjectAdapter() {
+ return null;
+ }
+
+} //SomemetamodelAdapterFactory
diff --git a/SomeMetamodel/src/somemetamodel/util/SomemetamodelSwitch.java b/SomeMetamodel/src/somemetamodel/util/SomemetamodelSwitch.java
new file mode 100644
index 0000000000000000000000000000000000000000..04bda1ce07da50e98eb766760c15108090eb98e8
--- /dev/null
+++ b/SomeMetamodel/src/somemetamodel/util/SomemetamodelSwitch.java
@@ -0,0 +1,200 @@
+/**
+ */
+package somemetamodel.util;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.util.Switch;
+
+import somemetamodel.*;
+
+/**
+ *
+ * The Switch for the model's inheritance hierarchy.
+ * It supports the call {@link #doSwitch(EObject) doSwitch(object)}
+ * to invoke the caseXXX method for each class of the model,
+ * starting with the actual class of the object
+ * and proceeding up the inheritance hierarchy
+ * until a non-null result is returned,
+ * which is the result of the switch.
+ *
+ * @see somemetamodel.SomemetamodelPackage
+ * @generated
+ */
+public class SomemetamodelSwitch extends Switch {
+ /**
+ * The cached model package
+ *
+ *
+ * @generated
+ */
+ protected static SomemetamodelPackage modelPackage;
+
+ /**
+ * Creates an instance of the switch.
+ *
+ *
+ * @generated
+ */
+ public SomemetamodelSwitch() {
+ if (modelPackage == null) {
+ modelPackage = SomemetamodelPackage.eINSTANCE;
+ }
+ }
+
+ /**
+ * Checks whether this is a switch for the given package.
+ *
+ *
+ * @parameter ePackage the package in question.
+ * @return whether this is a switch for the given package.
+ * @generated
+ */
+ @Override
+ protected boolean isSwitchFor(EPackage ePackage) {
+ return ePackage == modelPackage;
+ }
+
+ /**
+ * Calls caseXXX for each class of the model until one returns a non null result; it yields that result.
+ *
+ *
+ * @return the first non-null result returned by a caseXXX call.
+ * @generated
+ */
+ @Override
+ protected T doSwitch(int classifierID, EObject theEObject) {
+ switch (classifierID) {
+ case SomemetamodelPackage.A: {
+ A a = (A) theEObject;
+ T result = caseA(a);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case SomemetamodelPackage.B: {
+ B b = (B) theEObject;
+ T result = caseB(b);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case SomemetamodelPackage.C: {
+ C c = (C) theEObject;
+ T result = caseC(c);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case SomemetamodelPackage.D: {
+ D d = (D) theEObject;
+ T result = caseD(d);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case SomemetamodelPackage.E: {
+ E e = (E) theEObject;
+ T result = caseE(e);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ default:
+ return defaultCase(theEObject);
+ }
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of 'A'.
+ *
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ *
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of 'A'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseA(A object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of 'B'.
+ *
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ *
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of 'B'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseB(B object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of 'C'.
+ *
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ *
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of 'C'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseC(C object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of 'D'.
+ *
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ *
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of 'D'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseD(D object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of 'E'.
+ *
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ *
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of 'E'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseE(E object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of 'EObject'.
+ *
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch, but this is the last case anyway.
+ *
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of 'EObject'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject)
+ * @generated
+ */
+ @Override
+ public T defaultCase(EObject object) {
+ return null;
+ }
+
+} //SomemetamodelSwitch
diff --git a/SomeMetamodel/src/somemetamodelextension/R.java b/SomeMetamodel/src/somemetamodelextension/R.java
new file mode 100644
index 0000000000000000000000000000000000000000..87e8b2dfe7606e023c901b6ace717ef5a148f594
--- /dev/null
+++ b/SomeMetamodel/src/somemetamodelextension/R.java
@@ -0,0 +1,78 @@
+/**
+ */
+package somemetamodelextension;
+
+import fr.inria.diverse.cloning.cloner.emfextension.ShareableEObject;
+
+/**
+ *
+ * A representation of the model object 'R'.
+ *
+ *
+ *
+ * The following features are supported:
+ *
+ *
{@link somemetamodelextension.R#getA_m Am}
+ *
{@link somemetamodelextension.R#getB B}
+ *
+ *
+ *
+ * @see somemetamodelextension.SomemetamodelextensionPackage#getR()
+ * @model
+ * @extends ShareableEObject
+ * @generated
+ */
+public interface R extends ShareableEObject {
+ /**
+ * Returns the value of the 'Am' attribute.
+ *
+ *
+ * If the meaning of the 'Am' attribute isn't clear,
+ * there really should be more of a description here...
+ *
+ *
+ * @return the value of the 'Am' attribute.
+ * @see #setA_m(int)
+ * @see somemetamodelextension.SomemetamodelextensionPackage#getR_A_m()
+ * @model
+ * @generated
+ */
+ int getA_m();
+
+ /**
+ * Sets the value of the '{@link somemetamodelextension.R#getA_m Am}' attribute.
+ *
+ *
+ * @param value the new value of the 'Am' attribute.
+ * @see #getA_m()
+ * @generated
+ */
+ void setA_m(int value);
+
+ /**
+ * Returns the value of the 'B' attribute.
+ *
+ *
+ * If the meaning of the 'B' attribute isn't clear,
+ * there really should be more of a description here...
+ *
+ *
+ * @return the value of the 'B' attribute.
+ * @see #setB(int)
+ * @see somemetamodelextension.SomemetamodelextensionPackage#getR_B()
+ * @model
+ * @generated
+ */
+ int getB();
+
+ /**
+ * Sets the value of the '{@link somemetamodelextension.R#getB B}' attribute.
+ *
+ *
+ * @param value the new value of the 'B' attribute.
+ * @see #getB()
+ * @generated
+ */
+ void setB(int value);
+
+} // R
diff --git a/SomeMetamodel/src/somemetamodelextension/SomemetamodelextensionFactory.java b/SomeMetamodel/src/somemetamodelextension/SomemetamodelextensionFactory.java
new file mode 100644
index 0000000000000000000000000000000000000000..f655d23704be5ccf640e751ca483a23c3266258e
--- /dev/null
+++ b/SomeMetamodel/src/somemetamodelextension/SomemetamodelextensionFactory.java
@@ -0,0 +1,52 @@
+/**
+ */
+package somemetamodelextension;
+
+import org.eclipse.emf.ecore.EFactory;
+
+/**
+ *
+ * The Factory for the model.
+ * It provides a create method for each non-abstract class of the model.
+ *
+ * @see somemetamodelextension.SomemetamodelextensionPackage
+ * @generated
+ */
+public interface SomemetamodelextensionFactory extends EFactory {
+ /**
+ * The singleton instance of the factory.
+ *
+ *
+ * @generated
+ */
+ SomemetamodelextensionFactory eINSTANCE = somemetamodelextension.impl.SomemetamodelextensionFactoryImpl
+ .init();
+
+ /**
+ * Returns a new object of class 'X'.
+ *
+ *
+ * @return a new object of class 'X'.
+ * @generated
+ */
+ X createX();
+
+ /**
+ * Returns a new object of class 'R'.
+ *
+ *
+ * @return a new object of class 'R'.
+ * @generated
+ */
+ R createR();
+
+ /**
+ * Returns the package supported by this factory.
+ *
+ *
+ * @return the package supported by this factory.
+ * @generated
+ */
+ SomemetamodelextensionPackage getSomemetamodelextensionPackage();
+
+} //SomemetamodelextensionFactory
diff --git a/SomeMetamodel/src/somemetamodelextension/SomemetamodelextensionPackage.java b/SomeMetamodel/src/somemetamodelextension/SomemetamodelextensionPackage.java
new file mode 100644
index 0000000000000000000000000000000000000000..15d7dc4436536a3abdecb46164d991674c959d9f
--- /dev/null
+++ b/SomeMetamodel/src/somemetamodelextension/SomemetamodelextensionPackage.java
@@ -0,0 +1,236 @@
+/**
+ */
+package somemetamodelextension;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+
+/**
+ *
+ * The Package for the model.
+ * It contains accessors for the meta objects to represent
+ *
+ *
each class,
+ *
each feature of each class,
+ *
each operation of each class,
+ *
each enum,
+ *
and each data type
+ *
+ *
+ * @see somemetamodelextension.SomemetamodelextensionFactory
+ * @model kind="package"
+ * @generated
+ */
+public interface SomemetamodelextensionPackage extends EPackage {
+ /**
+ * The package name.
+ *
+ *
+ * @generated
+ */
+ String eNAME = "somemetamodelextension";
+
+ /**
+ * The package namespace URI.
+ *
+ *
+ * @generated
+ */
+ String eNS_URI = "http://somemetamodelextension/1.0";
+
+ /**
+ * The package namespace name.
+ *
+ *
+ * @generated
+ */
+ String eNS_PREFIX = "somemetamodelextension";
+
+ /**
+ * The singleton instance of the package.
+ *
+ *
+ * @generated
+ */
+ SomemetamodelextensionPackage eINSTANCE = somemetamodelextension.impl.SomemetamodelextensionPackageImpl
+ .init();
+
+ /**
+ * The meta object id for the '{@link somemetamodelextension.impl.XImpl X}' class.
+ *
+ *
+ * @see somemetamodelextension.impl.XImpl
+ * @see somemetamodelextension.impl.SomemetamodelextensionPackageImpl#getX()
+ * @generated
+ */
+ int X = 0;
+
+ /**
+ * The number of structural features of the 'X' class.
+ *
+ *
+ * @generated
+ * @ordered
+ */
+ int X_FEATURE_COUNT = 0;
+
+ /**
+ * The number of operations of the 'X' class.
+ *
+ *
+ * @generated
+ * @ordered
+ */
+ int X_OPERATION_COUNT = 0;
+
+ /**
+ * The meta object id for the '{@link somemetamodelextension.impl.RImpl R}' class.
+ *
+ *
+ * @see somemetamodelextension.impl.RImpl
+ * @see somemetamodelextension.impl.SomemetamodelextensionPackageImpl#getR()
+ * @generated
+ */
+ int R = 1;
+
+ /**
+ * The feature id for the 'Am' attribute.
+ *
+ *
+ * @generated
+ * @ordered
+ */
+ int R__AM = 0;
+
+ /**
+ * The feature id for the 'B' attribute.
+ *
+ *
+ * @generated
+ * @ordered
+ */
+ int R__B = 1;
+
+ /**
+ * The number of structural features of the 'R' class.
+ *
+ *
+ * @generated
+ * @ordered
+ */
+ int R_FEATURE_COUNT = 2;
+
+ /**
+ * The number of operations of the 'R' class.
+ *
+ *
+ * @generated
+ * @ordered
+ */
+ int R_OPERATION_COUNT = 0;
+
+ /**
+ * Returns the meta object for class '{@link somemetamodelextension.X X}'.
+ *
+ *
+ * @return the meta object for class 'X'.
+ * @see somemetamodelextension.X
+ * @generated
+ */
+ EClass getX();
+
+ /**
+ * Returns the meta object for class '{@link somemetamodelextension.R R}'.
+ *
+ *
+ * @return the meta object for class 'R'.
+ * @see somemetamodelextension.R
+ * @generated
+ */
+ EClass getR();
+
+ /**
+ * Returns the meta object for the attribute '{@link somemetamodelextension.R#getA_m Am}'.
+ *
+ *
+ * @return the meta object for the attribute 'Am'.
+ * @see somemetamodelextension.R#getA_m()
+ * @see #getR()
+ * @generated
+ */
+ EAttribute getR_A_m();
+
+ /**
+ * Returns the meta object for the attribute '{@link somemetamodelextension.R#getB B}'.
+ *
+ *
+ * @return the meta object for the attribute 'B'.
+ * @see somemetamodelextension.R#getB()
+ * @see #getR()
+ * @generated
+ */
+ EAttribute getR_B();
+
+ /**
+ * Returns the factory that creates the instances of the model.
+ *
+ *
+ * @return the factory that creates the instances of the model.
+ * @generated
+ */
+ SomemetamodelextensionFactory getSomemetamodelextensionFactory();
+
+ /**
+ *
+ * Defines literals for the meta objects that represent
+ *
+ *
each class,
+ *
each feature of each class,
+ *
each operation of each class,
+ *
each enum,
+ *
and each data type
+ *
+ *
+ * @generated
+ */
+ interface Literals {
+ /**
+ * The meta object literal for the '{@link somemetamodelextension.impl.XImpl X}' class.
+ *
+ *
+ * @see somemetamodelextension.impl.XImpl
+ * @see somemetamodelextension.impl.SomemetamodelextensionPackageImpl#getX()
+ * @generated
+ */
+ EClass X = eINSTANCE.getX();
+
+ /**
+ * The meta object literal for the '{@link somemetamodelextension.impl.RImpl R}' class.
+ *
+ *
+ * @see somemetamodelextension.impl.RImpl
+ * @see somemetamodelextension.impl.SomemetamodelextensionPackageImpl#getR()
+ * @generated
+ */
+ EClass R = eINSTANCE.getR();
+
+ /**
+ * The meta object literal for the 'Am' attribute feature.
+ *
+ *
+ * @generated
+ */
+ EAttribute R__AM = eINSTANCE.getR_A_m();
+
+ /**
+ * The meta object literal for the 'B' attribute feature.
+ *
+ *
+ * @generated
+ */
+ EAttribute R__B = eINSTANCE.getR_B();
+
+ }
+
+} //SomemetamodelextensionPackage
diff --git a/SomeMetamodel/src/somemetamodelextension/X.java b/SomeMetamodel/src/somemetamodelextension/X.java
new file mode 100644
index 0000000000000000000000000000000000000000..4ebaa0f221b532858840debc9fe7b7870c7ad020
--- /dev/null
+++ b/SomeMetamodel/src/somemetamodelextension/X.java
@@ -0,0 +1,19 @@
+/**
+ */
+package somemetamodelextension;
+
+import fr.inria.diverse.cloning.cloner.emfextension.ShareableEObject;
+
+/**
+ *
+ * A representation of the model object 'X'.
+ *
+ *
+ *
+ * @see somemetamodelextension.SomemetamodelextensionPackage#getX()
+ * @model
+ * @extends ShareableEObject
+ * @generated
+ */
+public interface X extends ShareableEObject {
+} // X
diff --git a/SomeMetamodel/src/somemetamodelextension/hidden/HiddenFactory.java b/SomeMetamodel/src/somemetamodelextension/hidden/HiddenFactory.java
new file mode 100644
index 0000000000000000000000000000000000000000..869326e11e84898c0d909388b30949ff2be0a1c1
--- /dev/null
+++ b/SomeMetamodel/src/somemetamodelextension/hidden/HiddenFactory.java
@@ -0,0 +1,52 @@
+/**
+ */
+package somemetamodelextension.hidden;
+
+import org.eclipse.emf.ecore.EFactory;
+
+/**
+ *
+ * The Factory for the model.
+ * It provides a create method for each non-abstract class of the model.
+ *
+ * @see somemetamodelextension.hidden.HiddenPackage
+ * @generated
+ */
+public interface HiddenFactory extends EFactory {
+ /**
+ * The singleton instance of the factory.
+ *
+ *
+ * @generated
+ */
+ HiddenFactory eINSTANCE = somemetamodelextension.hidden.impl.HiddenFactoryImpl
+ .init();
+
+ /**
+ * Returns a new object of class 'Y'.
+ *
+ *
+ * @return a new object of class 'Y'.
+ * @generated
+ */
+ Y createY();
+
+ /**
+ * Returns a new object of class 'Z'.
+ *
+ *
+ * @return a new object of class 'Z'.
+ * @generated
+ */
+ Z createZ();
+
+ /**
+ * Returns the package supported by this factory.
+ *
+ *
+ * @return the package supported by this factory.
+ * @generated
+ */
+ HiddenPackage getHiddenPackage();
+
+} //HiddenFactory
diff --git a/SomeMetamodel/src/somemetamodelextension/hidden/HiddenPackage.java b/SomeMetamodel/src/somemetamodelextension/hidden/HiddenPackage.java
new file mode 100644
index 0000000000000000000000000000000000000000..acbb9260bfaa5b046a9b29c32c117c27178d200c
--- /dev/null
+++ b/SomeMetamodel/src/somemetamodelextension/hidden/HiddenPackage.java
@@ -0,0 +1,265 @@
+/**
+ */
+package somemetamodelextension.hidden;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+
+/**
+ *
+ * The Package for the model.
+ * It contains accessors for the meta objects to represent
+ *
+ *
each class,
+ *
each feature of each class,
+ *
each operation of each class,
+ *
each enum,
+ *
and each data type
+ *
+ *
+ * @see somemetamodelextension.hidden.HiddenFactory
+ * @model kind="package"
+ * @generated
+ */
+public interface HiddenPackage extends EPackage {
+ /**
+ * The package name.
+ *
+ *
+ * @generated
+ */
+ String eNAME = "hidden";
+
+ /**
+ * The package namespace URI.
+ *
+ *
+ * @generated
+ */
+ String eNS_URI = "http://somemetamodelextension/1.0/hidden";
+
+ /**
+ * The package namespace name.
+ *
+ *
+ * @generated
+ */
+ String eNS_PREFIX = "hidden";
+
+ /**
+ * The singleton instance of the package.
+ *
+ *
+ * @generated
+ */
+ HiddenPackage eINSTANCE = somemetamodelextension.hidden.impl.HiddenPackageImpl
+ .init();
+
+ /**
+ * The meta object id for the '{@link somemetamodelextension.hidden.impl.YImpl Y}' class.
+ *
+ *
+ * @see somemetamodelextension.hidden.impl.YImpl
+ * @see somemetamodelextension.hidden.impl.HiddenPackageImpl#getY()
+ * @generated
+ */
+ int Y = 0;
+
+ /**
+ * The feature id for the 'Z' reference.
+ *
+ *
+ * @generated
+ * @ordered
+ */
+ int Y__Z = 0;
+
+ /**
+ * The number of structural features of the 'Y' class.
+ *
+ *
+ * @generated
+ * @ordered
+ */
+ int Y_FEATURE_COUNT = 1;
+
+ /**
+ * The number of operations of the 'Y' class.
+ *
+ *
+ * @generated
+ * @ordered
+ */
+ int Y_OPERATION_COUNT = 0;
+
+ /**
+ * The meta object id for the '{@link somemetamodelextension.hidden.impl.ZImpl Z}' class.
+ *
+ *
+ * @see somemetamodelextension.hidden.impl.ZImpl
+ * @see somemetamodelextension.hidden.impl.HiddenPackageImpl#getZ()
+ * @generated
+ */
+ int Z = 1;
+
+ /**
+ * The feature id for the 'Y' reference.
+ *
+ *
+ * @generated
+ * @ordered
+ */
+ int Z__Y = 0;
+
+ /**
+ * The feature id for the 'Im' attribute.
+ *
+ *
+ * @generated
+ * @ordered
+ */
+ int Z__IM = 1;
+
+ /**
+ * The number of structural features of the 'Z' class.
+ *
+ *
+ * @generated
+ * @ordered
+ */
+ int Z_FEATURE_COUNT = 2;
+
+ /**
+ * The number of operations of the 'Z' class.
+ *
+ *
+ * @generated
+ * @ordered
+ */
+ int Z_OPERATION_COUNT = 0;
+
+ /**
+ * Returns the meta object for class '{@link somemetamodelextension.hidden.Y Y}'.
+ *
+ *
+ * @return the meta object for class 'Y'.
+ * @see somemetamodelextension.hidden.Y
+ * @generated
+ */
+ EClass getY();
+
+ /**
+ * Returns the meta object for the reference '{@link somemetamodelextension.hidden.Y#getZ Z}'.
+ *
+ *
+ * @return the meta object for the reference 'Z'.
+ * @see somemetamodelextension.hidden.Y#getZ()
+ * @see #getY()
+ * @generated
+ */
+ EReference getY_Z();
+
+ /**
+ * Returns the meta object for class '{@link somemetamodelextension.hidden.Z Z}'.
+ *
+ *
+ * @return the meta object for class 'Z'.
+ * @see somemetamodelextension.hidden.Z
+ * @generated
+ */
+ EClass getZ();
+
+ /**
+ * Returns the meta object for the reference '{@link somemetamodelextension.hidden.Z#getY Y}'.
+ *
+ *
+ * @return the meta object for the reference 'Y'.
+ * @see somemetamodelextension.hidden.Z#getY()
+ * @see #getZ()
+ * @generated
+ */
+ EReference getZ_Y();
+
+ /**
+ * Returns the meta object for the attribute '{@link somemetamodelextension.hidden.Z#getI_m Im}'.
+ *
+ *
+ * @return the meta object for the attribute 'Im'.
+ * @see somemetamodelextension.hidden.Z#getI_m()
+ * @see #getZ()
+ * @generated
+ */
+ EAttribute getZ_I_m();
+
+ /**
+ * Returns the factory that creates the instances of the model.
+ *
+ *
+ * @return the factory that creates the instances of the model.
+ * @generated
+ */
+ HiddenFactory getHiddenFactory();
+
+ /**
+ *
+ * Defines literals for the meta objects that represent
+ *
+ *
each class,
+ *
each feature of each class,
+ *
each operation of each class,
+ *
each enum,
+ *
and each data type
+ *
+ *
+ * @generated
+ */
+ interface Literals {
+ /**
+ * The meta object literal for the '{@link somemetamodelextension.hidden.impl.YImpl Y}' class.
+ *
+ *
+ * @see somemetamodelextension.hidden.impl.YImpl
+ * @see somemetamodelextension.hidden.impl.HiddenPackageImpl#getY()
+ * @generated
+ */
+ EClass Y = eINSTANCE.getY();
+
+ /**
+ * The meta object literal for the 'Z' reference feature.
+ *
+ *
+ * @generated
+ */
+ EReference Y__Z = eINSTANCE.getY_Z();
+
+ /**
+ * The meta object literal for the '{@link somemetamodelextension.hidden.impl.ZImpl Z}' class.
+ *
+ *
+ * @see somemetamodelextension.hidden.impl.ZImpl
+ * @see somemetamodelextension.hidden.impl.HiddenPackageImpl#getZ()
+ * @generated
+ */
+ EClass Z = eINSTANCE.getZ();
+
+ /**
+ * The meta object literal for the 'Y' reference feature.
+ *
+ *
+ * @generated
+ */
+ EReference Z__Y = eINSTANCE.getZ_Y();
+
+ /**
+ * The meta object literal for the 'Im' attribute feature.
+ *
+ *
+ * @generated
+ */
+ EAttribute Z__IM = eINSTANCE.getZ_I_m();
+
+ }
+
+} //HiddenPackage
diff --git a/SomeMetamodel/src/somemetamodelextension/hidden/Y.java b/SomeMetamodel/src/somemetamodelextension/hidden/Y.java
new file mode 100644
index 0000000000000000000000000000000000000000..525a028481a58044aa8bd49db11e79f78f7b179d
--- /dev/null
+++ b/SomeMetamodel/src/somemetamodelextension/hidden/Y.java
@@ -0,0 +1,51 @@
+/**
+ */
+package somemetamodelextension.hidden;
+
+import fr.inria.diverse.cloning.cloner.emfextension.ShareableEObject;
+
+/**
+ *
+ * A representation of the model object 'Y'.
+ *
+ *
+ *
+ * The following features are supported:
+ *
+ *
{@link somemetamodelextension.hidden.Y#getZ Z}
+ *
+ *
+ *
+ * @see somemetamodelextension.hidden.HiddenPackage#getY()
+ * @model
+ * @extends ShareableEObject
+ * @generated
+ */
+public interface Y extends ShareableEObject {
+ /**
+ * Returns the value of the 'Z' reference.
+ *
+ *
+ * If the meaning of the 'Z' reference isn't clear,
+ * there really should be more of a description here...
+ *
+ *
+ * @return the value of the 'Z' reference.
+ * @see #setZ(Z)
+ * @see somemetamodelextension.hidden.HiddenPackage#getY_Z()
+ * @model
+ * @generated
+ */
+ Z getZ();
+
+ /**
+ * Sets the value of the '{@link somemetamodelextension.hidden.Y#getZ Z}' reference.
+ *
+ *
+ * @param value the new value of the 'Z' reference.
+ * @see #getZ()
+ * @generated
+ */
+ void setZ(Z value);
+
+} // Y
diff --git a/SomeMetamodel/src/somemetamodelextension/hidden/Z.java b/SomeMetamodel/src/somemetamodelextension/hidden/Z.java
new file mode 100644
index 0000000000000000000000000000000000000000..50a3c04bf4f3b3ae9d5759c07d449a6f4f699a70
--- /dev/null
+++ b/SomeMetamodel/src/somemetamodelextension/hidden/Z.java
@@ -0,0 +1,78 @@
+/**
+ */
+package somemetamodelextension.hidden;
+
+import fr.inria.diverse.cloning.cloner.emfextension.ShareableEObject;
+
+/**
+ *
+ * A representation of the model object 'Z'.
+ *
+ *
+ *
+ * The following features are supported:
+ *
+ *
{@link somemetamodelextension.hidden.Z#getY Y}
+ *
{@link somemetamodelextension.hidden.Z#getI_m Im}
+ *
+ *
+ *
+ * @see somemetamodelextension.hidden.HiddenPackage#getZ()
+ * @model
+ * @extends ShareableEObject
+ * @generated
+ */
+public interface Z extends ShareableEObject {
+ /**
+ * Returns the value of the 'Y' reference.
+ *
+ *
+ * If the meaning of the 'Y' reference isn't clear,
+ * there really should be more of a description here...
+ *
+ *
+ * @return the value of the 'Y' reference.
+ * @see #setY(Y)
+ * @see somemetamodelextension.hidden.HiddenPackage#getZ_Y()
+ * @model
+ * @generated
+ */
+ Y getY();
+
+ /**
+ * Sets the value of the '{@link somemetamodelextension.hidden.Z#getY Y}' reference.
+ *
+ *
+ * @param value the new value of the 'Y' reference.
+ * @see #getY()
+ * @generated
+ */
+ void setY(Y value);
+
+ /**
+ * Returns the value of the 'Im' attribute.
+ *
+ *
+ * If the meaning of the 'Im' attribute isn't clear,
+ * there really should be more of a description here...
+ *
+ *
+ * @return the value of the 'Im' attribute.
+ * @see #setI_m(String)
+ * @see somemetamodelextension.hidden.HiddenPackage#getZ_I_m()
+ * @model
+ * @generated
+ */
+ String getI_m();
+
+ /**
+ * Sets the value of the '{@link somemetamodelextension.hidden.Z#getI_m Im}' attribute.
+ *
+ *
+ * @param value the new value of the 'Im' attribute.
+ * @see #getI_m()
+ * @generated
+ */
+ void setI_m(String value);
+
+} // Z
diff --git a/SomeMetamodel/src/somemetamodelextension/hidden/impl/HiddenFactoryImpl.java b/SomeMetamodel/src/somemetamodelextension/hidden/impl/HiddenFactoryImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..41814cc9d7b8ff3571d8e88914d40918b7ad7ec2
--- /dev/null
+++ b/SomeMetamodel/src/somemetamodelextension/hidden/impl/HiddenFactoryImpl.java
@@ -0,0 +1,109 @@
+/**
+ */
+package somemetamodelextension.hidden.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+
+import somemetamodelextension.hidden.*;
+
+/**
+ *
+ * An implementation of the model Factory.
+ *
+ * @generated
+ */
+public class HiddenFactoryImpl extends EFactoryImpl implements HiddenFactory {
+ /**
+ * Creates the default factory implementation.
+ *
+ *
+ * @generated
+ */
+ public static HiddenFactory init() {
+ try {
+ HiddenFactory theHiddenFactory = (HiddenFactory) EPackage.Registry.INSTANCE
+ .getEFactory(HiddenPackage.eNS_URI);
+ if (theHiddenFactory != null) {
+ return theHiddenFactory;
+ }
+ } catch (Exception exception) {
+ EcorePlugin.INSTANCE.log(exception);
+ }
+ return new HiddenFactoryImpl();
+ }
+
+ /**
+ * Creates an instance of the factory.
+ *
+ *
+ * @generated
+ */
+ public HiddenFactoryImpl() {
+ super();
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ public EObject create(EClass eClass) {
+ switch (eClass.getClassifierID()) {
+ case HiddenPackage.Y:
+ return (EObject) createY();
+ case HiddenPackage.Z:
+ return (EObject) createZ();
+ default:
+ throw new IllegalArgumentException("The class '" + eClass.getName()
+ + "' is not a valid classifier");
+ }
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ public Y createY() {
+ YImpl y = new YImpl();
+ return y;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ public Z createZ() {
+ ZImpl z = new ZImpl();
+ return z;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ public HiddenPackage getHiddenPackage() {
+ return (HiddenPackage) getEPackage();
+ }
+
+ /**
+ *
+ *
+ * @deprecated
+ * @generated
+ */
+ @Deprecated
+ public static HiddenPackage getPackage() {
+ return HiddenPackage.eINSTANCE;
+ }
+
+} //HiddenFactoryImpl
diff --git a/SomeMetamodel/src/somemetamodelextension/hidden/impl/HiddenPackageImpl.java b/SomeMetamodel/src/somemetamodelextension/hidden/impl/HiddenPackageImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..780cd2468c1fffe74ac18cf53689e6a90bec1499
--- /dev/null
+++ b/SomeMetamodel/src/somemetamodelextension/hidden/impl/HiddenPackageImpl.java
@@ -0,0 +1,254 @@
+/**
+ */
+package somemetamodelextension.hidden.impl;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+
+import somemetamodel.SomemetamodelPackage;
+
+import somemetamodel.impl.SomemetamodelPackageImpl;
+
+import somemetamodelextension.SomemetamodelextensionPackage;
+
+import somemetamodelextension.hidden.HiddenFactory;
+import somemetamodelextension.hidden.HiddenPackage;
+
+import somemetamodelextension.impl.SomemetamodelextensionPackageImpl;
+
+/**
+ *
+ * An implementation of the model Package.
+ *
+ * @generated
+ */
+public class HiddenPackageImpl extends EPackageImpl implements HiddenPackage {
+ /**
+ *
+ *
+ * @generated
+ */
+ private EClass yEClass = null;
+
+ /**
+ *
+ *
+ * @generated
+ */
+ private EClass zEClass = null;
+
+ /**
+ * Creates an instance of the model Package, registered with
+ * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
+ * package URI value.
+ *
Note: the correct way to create the package is via the static
+ * factory method {@link #init init()}, which also performs
+ * initialization of the package, or returns the registered package,
+ * if one already exists.
+ *
+ *
+ * @see org.eclipse.emf.ecore.EPackage.Registry
+ * @see somemetamodelextension.hidden.HiddenPackage#eNS_URI
+ * @see #init()
+ * @generated
+ */
+ private HiddenPackageImpl() {
+ super(eNS_URI, HiddenFactory.eINSTANCE);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ private static boolean isInited = false;
+
+ /**
+ * Creates, registers, and initializes the Package for this model, and for any others upon which it depends.
+ *
+ *
This method is used to initialize {@link HiddenPackage#eINSTANCE} when that field is accessed.
+ * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
+ *
+ *
+ * @see #eNS_URI
+ * @see #createPackageContents()
+ * @see #initializePackageContents()
+ * @generated
+ */
+ public static HiddenPackage init() {
+ if (isInited)
+ return (HiddenPackage) EPackage.Registry.INSTANCE
+ .getEPackage(HiddenPackage.eNS_URI);
+
+ // Obtain or create and register package
+ HiddenPackageImpl theHiddenPackage = (HiddenPackageImpl) (EPackage.Registry.INSTANCE
+ .get(eNS_URI) instanceof HiddenPackageImpl ? EPackage.Registry.INSTANCE
+ .get(eNS_URI) : new HiddenPackageImpl());
+
+ isInited = true;
+
+ // Obtain or create and register interdependencies
+ SomemetamodelPackageImpl theSomemetamodelPackage = (SomemetamodelPackageImpl) (EPackage.Registry.INSTANCE
+ .getEPackage(SomemetamodelPackage.eNS_URI) instanceof SomemetamodelPackageImpl ? EPackage.Registry.INSTANCE
+ .getEPackage(SomemetamodelPackage.eNS_URI)
+ : SomemetamodelPackage.eINSTANCE);
+ SomemetamodelextensionPackageImpl theSomemetamodelextensionPackage = (SomemetamodelextensionPackageImpl) (EPackage.Registry.INSTANCE
+ .getEPackage(SomemetamodelextensionPackage.eNS_URI) instanceof SomemetamodelextensionPackageImpl ? EPackage.Registry.INSTANCE
+ .getEPackage(SomemetamodelextensionPackage.eNS_URI)
+ : SomemetamodelextensionPackage.eINSTANCE);
+
+ // Create package meta-data objects
+ theHiddenPackage.createPackageContents();
+ theSomemetamodelPackage.createPackageContents();
+ theSomemetamodelextensionPackage.createPackageContents();
+
+ // Initialize created meta-data
+ theHiddenPackage.initializePackageContents();
+ theSomemetamodelPackage.initializePackageContents();
+ theSomemetamodelextensionPackage.initializePackageContents();
+
+ // Mark meta-data to indicate it can't be changed
+ theHiddenPackage.freeze();
+
+ // Update the registry and return the package
+ EPackage.Registry.INSTANCE.put(HiddenPackage.eNS_URI, theHiddenPackage);
+ return theHiddenPackage;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ public EClass getY() {
+ return yEClass;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ public EReference getY_Z() {
+ return (EReference) yEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ public EClass getZ() {
+ return zEClass;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ public EReference getZ_Y() {
+ return (EReference) zEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ public EAttribute getZ_I_m() {
+ return (EAttribute) zEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ public HiddenFactory getHiddenFactory() {
+ return (HiddenFactory) getEFactoryInstance();
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ private boolean isCreated = false;
+
+ /**
+ * Creates the meta-model objects for the package. This method is
+ * guarded to have no affect on any invocation but its first.
+ *
+ *
+ * @generated
+ */
+ public void createPackageContents() {
+ if (isCreated)
+ return;
+ isCreated = true;
+
+ // Create classes and their features
+ yEClass = createEClass(Y);
+ createEReference(yEClass, Y__Z);
+
+ zEClass = createEClass(Z);
+ createEReference(zEClass, Z__Y);
+ createEAttribute(zEClass, Z__IM);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ private boolean isInitialized = false;
+
+ /**
+ * Complete the initialization of the package and its meta-model. This
+ * method is guarded to have no affect on any invocation but its first.
+ *
+ *
+ * @generated
+ */
+ public void initializePackageContents() {
+ if (isInitialized)
+ return;
+ isInitialized = true;
+
+ // Initialize package
+ setName(eNAME);
+ setNsPrefix(eNS_PREFIX);
+ setNsURI(eNS_URI);
+
+ // Create type parameters
+
+ // Set bounds for type parameters
+
+ // Add supertypes to classes
+
+ // Initialize classes, features, and operations; add parameters
+ initEClass(yEClass, somemetamodelextension.hidden.Y.class, "Y",
+ !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getY_Z(), this.getZ(), null, "z", null, 0, 1,
+ somemetamodelextension.hidden.Y.class, !IS_TRANSIENT,
+ !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES,
+ !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(zEClass, somemetamodelextension.hidden.Z.class, "Z",
+ !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getZ_Y(), this.getY(), null, "y", null, 0, 1,
+ somemetamodelextension.hidden.Z.class, !IS_TRANSIENT,
+ !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES,
+ !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getZ_I_m(), ecorePackage.getEString(), "i_m", null, 0,
+ 1, somemetamodelextension.hidden.Z.class, !IS_TRANSIENT,
+ !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+ !IS_DERIVED, IS_ORDERED);
+ }
+
+} //HiddenPackageImpl
diff --git a/SomeMetamodel/src/somemetamodelextension/hidden/impl/YImpl.java b/SomeMetamodel/src/somemetamodelextension/hidden/impl/YImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..129be3ffc9352434dadd5ca482d6991c3f917e1d
--- /dev/null
+++ b/SomeMetamodel/src/somemetamodelextension/hidden/impl/YImpl.java
@@ -0,0 +1,162 @@
+/**
+ */
+package somemetamodelextension.hidden.impl;
+
+import fr.inria.diverse.cloning.cloner.emfextension.impl.AbstractShareableEObject;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import somemetamodelextension.hidden.HiddenPackage;
+import somemetamodelextension.hidden.Y;
+import somemetamodelextension.hidden.Z;
+
+/**
+ *
+ * An implementation of the model object 'Y'.
+ *
+ *
Note: the correct way to create the package is via the static
+ * factory method {@link #init init()}, which also performs
+ * initialization of the package, or returns the registered package,
+ * if one already exists.
+ *
+ *
+ * @see org.eclipse.emf.ecore.EPackage.Registry
+ * @see somemetamodelextension.SomemetamodelextensionPackage#eNS_URI
+ * @see #init()
+ * @generated
+ */
+ private SomemetamodelextensionPackageImpl() {
+ super(eNS_URI, SomemetamodelextensionFactory.eINSTANCE);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ private static boolean isInited = false;
+
+ /**
+ * Creates, registers, and initializes the Package for this model, and for any others upon which it depends.
+ *
+ *
This method is used to initialize {@link SomemetamodelextensionPackage#eINSTANCE} when that field is accessed.
+ * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
+ *
+ *
+ * @see #eNS_URI
+ * @see #createPackageContents()
+ * @see #initializePackageContents()
+ * @generated
+ */
+ public static SomemetamodelextensionPackage init() {
+ if (isInited)
+ return (SomemetamodelextensionPackage) EPackage.Registry.INSTANCE
+ .getEPackage(SomemetamodelextensionPackage.eNS_URI);
+
+ // Obtain or create and register package
+ SomemetamodelextensionPackageImpl theSomemetamodelextensionPackage = (SomemetamodelextensionPackageImpl) (EPackage.Registry.INSTANCE
+ .get(eNS_URI) instanceof SomemetamodelextensionPackageImpl ? EPackage.Registry.INSTANCE
+ .get(eNS_URI) : new SomemetamodelextensionPackageImpl());
+
+ isInited = true;
+
+ // Obtain or create and register interdependencies
+ SomemetamodelPackageImpl theSomemetamodelPackage = (SomemetamodelPackageImpl) (EPackage.Registry.INSTANCE
+ .getEPackage(SomemetamodelPackage.eNS_URI) instanceof SomemetamodelPackageImpl ? EPackage.Registry.INSTANCE
+ .getEPackage(SomemetamodelPackage.eNS_URI)
+ : SomemetamodelPackage.eINSTANCE);
+ HiddenPackageImpl theHiddenPackage = (HiddenPackageImpl) (EPackage.Registry.INSTANCE
+ .getEPackage(HiddenPackage.eNS_URI) instanceof HiddenPackageImpl ? EPackage.Registry.INSTANCE
+ .getEPackage(HiddenPackage.eNS_URI) : HiddenPackage.eINSTANCE);
+
+ // Create package meta-data objects
+ theSomemetamodelextensionPackage.createPackageContents();
+ theSomemetamodelPackage.createPackageContents();
+ theHiddenPackage.createPackageContents();
+
+ // Initialize created meta-data
+ theSomemetamodelextensionPackage.initializePackageContents();
+ theSomemetamodelPackage.initializePackageContents();
+ theHiddenPackage.initializePackageContents();
+
+ // Mark meta-data to indicate it can't be changed
+ theSomemetamodelextensionPackage.freeze();
+
+ // Update the registry and return the package
+ EPackage.Registry.INSTANCE.put(SomemetamodelextensionPackage.eNS_URI,
+ theSomemetamodelextensionPackage);
+ return theSomemetamodelextensionPackage;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ public EClass getX() {
+ return xEClass;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ public EClass getR() {
+ return rEClass;
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ public EAttribute getR_A_m() {
+ return (EAttribute) rEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ public EAttribute getR_B() {
+ return (EAttribute) rEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ public SomemetamodelextensionFactory getSomemetamodelextensionFactory() {
+ return (SomemetamodelextensionFactory) getEFactoryInstance();
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ private boolean isCreated = false;
+
+ /**
+ * Creates the meta-model objects for the package. This method is
+ * guarded to have no affect on any invocation but its first.
+ *
+ *
+ * @generated
+ */
+ public void createPackageContents() {
+ if (isCreated)
+ return;
+ isCreated = true;
+
+ // Create classes and their features
+ xEClass = createEClass(X);
+
+ rEClass = createEClass(R);
+ createEAttribute(rEClass, R__AM);
+ createEAttribute(rEClass, R__B);
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ private boolean isInitialized = false;
+
+ /**
+ * Complete the initialization of the package and its meta-model. This
+ * method is guarded to have no affect on any invocation but its first.
+ *
+ *
+ * @generated
+ */
+ public void initializePackageContents() {
+ if (isInitialized)
+ return;
+ isInitialized = true;
+
+ // Initialize package
+ setName(eNAME);
+ setNsPrefix(eNS_PREFIX);
+ setNsURI(eNS_URI);
+
+ // Obtain other dependent packages
+ HiddenPackage theHiddenPackage = (HiddenPackage) EPackage.Registry.INSTANCE
+ .getEPackage(HiddenPackage.eNS_URI);
+
+ // Add subpackages
+ getESubpackages().add(theHiddenPackage);
+
+ // Create type parameters
+
+ // Set bounds for type parameters
+
+ // Add supertypes to classes
+
+ // Initialize classes, features, and operations; add parameters
+ initEClass(xEClass, somemetamodelextension.X.class, "X", !IS_ABSTRACT,
+ !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+ initEClass(rEClass, somemetamodelextension.R.class, "R", !IS_ABSTRACT,
+ !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getR_A_m(), ecorePackage.getEInt(), "a_m", null, 0, 1,
+ somemetamodelextension.R.class, !IS_TRANSIENT, !IS_VOLATILE,
+ IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED,
+ IS_ORDERED);
+ initEAttribute(getR_B(), ecorePackage.getEInt(), "b", null, 0, 1,
+ somemetamodelextension.R.class, !IS_TRANSIENT, !IS_VOLATILE,
+ IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED,
+ IS_ORDERED);
+
+ // Create resource
+ createResource(eNS_URI);
+ }
+
+} //SomemetamodelextensionPackageImpl
diff --git a/SomeMetamodel/src/somemetamodelextension/impl/XImpl.java b/SomeMetamodel/src/somemetamodelextension/impl/XImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..0234c2ebe3d8df07fdc5736605aba2399aba584b
--- /dev/null
+++ b/SomeMetamodel/src/somemetamodelextension/impl/XImpl.java
@@ -0,0 +1,41 @@
+/**
+ */
+package somemetamodelextension.impl;
+
+import fr.inria.diverse.cloning.cloner.emfextension.impl.AbstractShareableEObject;
+
+import org.eclipse.emf.ecore.EClass;
+
+import somemetamodelextension.SomemetamodelextensionPackage;
+import somemetamodelextension.X;
+
+/**
+ *
+ * An implementation of the model object 'X'.
+ *
+ *
+ *
+ *
+ * @generated
+ */
+public class XImpl extends AbstractShareableEObject implements X {
+ /**
+ *
+ *
+ * @generated
+ */
+ protected XImpl() {
+ super();
+ }
+
+ /**
+ *
+ *
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return SomemetamodelextensionPackage.Literals.X;
+ }
+
+} //XImpl
diff --git a/SomeMetamodel/src/somemetamodelextension/util/SomemetamodelextensionAdapterFactory.java b/SomeMetamodel/src/somemetamodelextension/util/SomemetamodelextensionAdapterFactory.java
new file mode 100644
index 0000000000000000000000000000000000000000..a1d343c9c0f9c89247ecb1a5e850bfe5b6a2377e
--- /dev/null
+++ b/SomeMetamodel/src/somemetamodelextension/util/SomemetamodelextensionAdapterFactory.java
@@ -0,0 +1,138 @@
+/**
+ */
+package somemetamodelextension.util;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notifier;
+
+import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
+
+import org.eclipse.emf.ecore.EObject;
+
+import somemetamodelextension.*;
+
+/**
+ *
+ * The Adapter Factory for the model.
+ * It provides an adapter createXXX method for each class of the model.
+ *
+ * @see somemetamodelextension.SomemetamodelextensionPackage
+ * @generated
+ */
+public class SomemetamodelextensionAdapterFactory extends AdapterFactoryImpl {
+ /**
+ * The cached model package.
+ *
+ *
+ * @generated
+ */
+ protected static SomemetamodelextensionPackage modelPackage;
+
+ /**
+ * Creates an instance of the adapter factory.
+ *
+ *
+ * @generated
+ */
+ public SomemetamodelextensionAdapterFactory() {
+ if (modelPackage == null) {
+ modelPackage = SomemetamodelextensionPackage.eINSTANCE;
+ }
+ }
+
+ /**
+ * Returns whether this factory is applicable for the type of the object.
+ *
+ * This implementation returns true if the object is either the model's package or is an instance object of the model.
+ *
+ * @return whether this factory is applicable for the type of the object.
+ * @generated
+ */
+ @Override
+ public boolean isFactoryForType(Object object) {
+ if (object == modelPackage) {
+ return true;
+ }
+ if (object instanceof EObject) {
+ return ((EObject) object).eClass().getEPackage() == modelPackage;
+ }
+ return false;
+ }
+
+ /**
+ * The switch that delegates to the createXXX methods.
+ *
+ *
+ * @generated
+ */
+ protected SomemetamodelextensionSwitch modelSwitch = new SomemetamodelextensionSwitch() {
+ @Override
+ public Adapter caseX(X object) {
+ return createXAdapter();
+ }
+
+ @Override
+ public Adapter caseR(R object) {
+ return createRAdapter();
+ }
+
+ @Override
+ public Adapter defaultCase(EObject object) {
+ return createEObjectAdapter();
+ }
+ };
+
+ /**
+ * Creates an adapter for the target.
+ *
+ *
+ * @param target the object to adapt.
+ * @return the adapter for the target.
+ * @generated
+ */
+ @Override
+ public Adapter createAdapter(Notifier target) {
+ return modelSwitch.doSwitch((EObject) target);
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link somemetamodelextension.X X}'.
+ *
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ *
+ * @return the new adapter.
+ * @see somemetamodelextension.X
+ * @generated
+ */
+ public Adapter createXAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link somemetamodelextension.R R}'.
+ *
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ *
+ * @return the new adapter.
+ * @see somemetamodelextension.R
+ * @generated
+ */
+ public Adapter createRAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for the default case.
+ *
+ * This default implementation returns null.
+ *
+ * @return the new adapter.
+ * @generated
+ */
+ public Adapter createEObjectAdapter() {
+ return null;
+ }
+
+} //SomemetamodelextensionAdapterFactory
diff --git a/SomeMetamodel/src/somemetamodelextension/util/SomemetamodelextensionSwitch.java b/SomeMetamodel/src/somemetamodelextension/util/SomemetamodelextensionSwitch.java
new file mode 100644
index 0000000000000000000000000000000000000000..e3265455650db3f5bd3d6b11df0899881a2ff8b3
--- /dev/null
+++ b/SomeMetamodel/src/somemetamodelextension/util/SomemetamodelextensionSwitch.java
@@ -0,0 +1,134 @@
+/**
+ */
+package somemetamodelextension.util;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.util.Switch;
+
+import somemetamodelextension.*;
+
+/**
+ *
+ * The Switch for the model's inheritance hierarchy.
+ * It supports the call {@link #doSwitch(EObject) doSwitch(object)}
+ * to invoke the caseXXX method for each class of the model,
+ * starting with the actual class of the object
+ * and proceeding up the inheritance hierarchy
+ * until a non-null result is returned,
+ * which is the result of the switch.
+ *
+ * @see somemetamodelextension.SomemetamodelextensionPackage
+ * @generated
+ */
+public class SomemetamodelextensionSwitch extends Switch {
+ /**
+ * The cached model package
+ *
+ *
+ * @generated
+ */
+ protected static SomemetamodelextensionPackage modelPackage;
+
+ /**
+ * Creates an instance of the switch.
+ *
+ *
+ * @generated
+ */
+ public SomemetamodelextensionSwitch() {
+ if (modelPackage == null) {
+ modelPackage = SomemetamodelextensionPackage.eINSTANCE;
+ }
+ }
+
+ /**
+ * Checks whether this is a switch for the given package.
+ *
+ *
+ * @parameter ePackage the package in question.
+ * @return whether this is a switch for the given package.
+ * @generated
+ */
+ @Override
+ protected boolean isSwitchFor(EPackage ePackage) {
+ return ePackage == modelPackage;
+ }
+
+ /**
+ * Calls caseXXX for each class of the model until one returns a non null result; it yields that result.
+ *
+ *
+ * @return the first non-null result returned by a caseXXX call.
+ * @generated
+ */
+ @Override
+ protected T doSwitch(int classifierID, EObject theEObject) {
+ switch (classifierID) {
+ case SomemetamodelextensionPackage.X: {
+ X x = (X) theEObject;
+ T result = caseX(x);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case SomemetamodelextensionPackage.R: {
+ R r = (R) theEObject;
+ T result = caseR(r);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ default:
+ return defaultCase(theEObject);
+ }
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of 'X'.
+ *
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ *
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of 'X'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseX(X object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of 'R'.
+ *
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ *
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of 'R'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseR(R object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of 'EObject'.
+ *
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch, but this is the last case anyway.
+ *
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of 'EObject'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject)
+ * @generated
+ */
+ @Override
+ public T defaultCase(EObject object) {
+ return null;
+ }
+
+} //SomemetamodelextensionSwitch
diff --git a/SomeMetamodel/src/somemmdeep/BDeepPImpl.java b/SomeMetamodel/src/somemmdeep/BDeepPImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..aadf8741d1d96192f65b2b967865bce242d0e603
--- /dev/null
+++ b/SomeMetamodel/src/somemmdeep/BDeepPImpl.java
@@ -0,0 +1,217 @@
+/**
+ */
+
+package somemmdeep;
+
+import fr.inria.diverse.cloning.cloner.emfextension.impl.AbstractShareableEObject;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import somemetamodel.B;
+import somemetamodel.SomemetamodelPackage;
+
+/**
+ *
+ * An implementation of the model object 'B'.
+ *
+ *