From 06a7e2c3af464dfcf986a7f23f074c3a3ced2fc5 Mon Sep 17 00:00:00 2001 From: Erwan Bousse Date: Wed, 5 Mar 2014 10:36:23 +0100 Subject: [PATCH] Versionning everything --- BenchmarkMetamodelsGenerator/tmp/lapin.ecore | 30 + External Plug-in Libraries/.classpath | 6 + External Plug-in Libraries/.project | 17 + External Plug-in Libraries/.searchable | 3 + SomeManipulations/.classpath | 7 + SomeManipulations/.project | 28 + SomeManipulations/META-INF/MANIFEST.MF | 16 + .../bin/main/MainShowNoShare.class | Bin 0 -> 1382 bytes .../bin/main/MainTestChangeResource.class | Bin 0 -> 1325 bytes .../bin/main/MainTestCloning.class | Bin 0 -> 2361 bytes .../bin/main/MainTestCompositions.class | Bin 0 -> 1185 bytes .../bin/main/MainTestLooseResource.class | Bin 0 -> 1529 bytes .../main/MainTestMultipleCompositions.class | Bin 0 -> 1365 bytes ...ainTestMultipleCompositionsOnlyLoose.class | Bin 0 -> 2253 bytes .../bin/main/MainTestNullResource.class | Bin 0 -> 1107 bytes .../bin/main/MainTestResources.class | Bin 0 -> 1366 bytes SomeManipulations/bin/main/MainTruc.class | Bin 0 -> 491 bytes SomeManipulations/bin/main/Truc.class | Bin 0 -> 476 bytes SomeManipulations/bin/main/Truc2.class | Bin 0 -> 473 bytes SomeManipulations/bin/util/HeapDump.class | Bin 0 -> 2535 bytes SomeManipulations/build.properties | 9 + .../file/tmp/deepClone/submodel1.xmi | 8 + .../file/tmp/deepClone/submodel2.xmi | 5 + .../tmp/mutableClassesOnlyClone/submodel1.xmi | 8 + .../tmp/mutableClassesOnlyClone/submodel2.xmi | 5 + SomeManipulations/file/tmp/submodel1.xmi | 8 + SomeManipulations/file/tmp/submodel2.xmi | 5 + .../models/deepClone/submodel1.xmi | 8 + .../models/deepClone/submodel2.xmi | 5 + .../models/lightDeepClone/submodel1.xmi | 8 + .../models/lightDeepClone/submodel2.xmi | 5 + .../lightMutableOnlyClone/submodel1.xmi | 8 + .../lightMutableOnlyClone/submodel2.xmi | 5 + .../models/mutableOnlyClone/submodel1.xmi | 8 + .../models/mutableOnlyClone/submodel2.xmi | 5 + SomeManipulations/models/submodel1.xmi | 8 + SomeManipulations/models/submodel2.xmi | 5 + SomeManipulations/plugin.properties | 4 + SomeManipulations/plugin.xml | 16 + .../src/main/MainShowNoShare.java | 66 + .../src/main/MainTestChangeResource.java | 55 + .../src/main/MainTestCloning.java | 123 ++ .../src/main/MainTestCompositions.java | 22 + .../src/main/MainTestLooseResource.java | 65 + .../main/MainTestMultipleCompositions.java | 68 + ...MainTestMultipleCompositionsOnlyLoose.java | 77 + .../src/main/MainTestNullResource.java | 43 + .../src/main/MainTestResources.java | 64 + SomeManipulations/src/main/MainTruc.java | 12 + SomeManipulations/src/main/Truc.java | 9 + SomeManipulations/src/main/Truc2.java | 9 + SomeManipulations/src/util/HeapDump.java | 84 + SomeMetamodel/.classpath | 7 + SomeMetamodel/.project | 33 + .../org.eclipse.core.resources.prefs | 2 + .../.settings/org.eclipse.jdt.core.prefs | 11 + SomeMetamodel/META-INF/MANIFEST.MF | 24 + SomeMetamodel/bin/somemetamodel/A.class | Bin 0 -> 618 bytes SomeMetamodel/bin/somemetamodel/B.class | Bin 0 -> 260 bytes SomeMetamodel/bin/somemetamodel/C.class | Bin 0 -> 217 bytes SomeMetamodel/bin/somemetamodel/D.class | Bin 0 -> 241 bytes SomeMetamodel/bin/somemetamodel/E.class | Bin 0 -> 166 bytes .../somemetamodel/SomemetamodelFactory.class | Bin 0 -> 748 bytes .../SomemetamodelPackage$Literals.class | Bin 0 -> 1430 bytes .../somemetamodel/SomemetamodelPackage.class | Bin 0 -> 1848 bytes .../bin/somemetamodel/impl/AImpl.class | Bin 0 -> 7217 bytes .../bin/somemetamodel/impl/BImpl.class | Bin 0 -> 3142 bytes .../bin/somemetamodel/impl/CImpl.class | Bin 0 -> 2561 bytes .../bin/somemetamodel/impl/DImpl.class | Bin 0 -> 3916 bytes .../bin/somemetamodel/impl/EImpl.class | Bin 0 -> 651 bytes .../impl/SomemetamodelFactoryImpl.class | Bin 0 -> 3259 bytes .../impl/SomemetamodelPackageImpl.class | Bin 0 -> 6855 bytes .../util/SomemetamodelAdapterFactory$1.class | Bin 0 -> 2585 bytes .../util/SomemetamodelAdapterFactory.class | Bin 0 -> 2204 bytes .../util/SomemetamodelSwitch.class | Bin 0 -> 3069 bytes .../bin/somemetamodelextension/R.class | Bin 0 -> 252 bytes .../SomemetamodelextensionFactory.class | Bin 0 -> 754 bytes ...memetamodelextensionPackage$Literals.class | Bin 0 -> 829 bytes .../SomemetamodelextensionPackage.class | Bin 0 -> 1334 bytes .../bin/somemetamodelextension/X.class | Bin 0 -> 175 bytes .../hidden/HiddenFactory.class | Bin 0 -> 691 bytes .../hidden/HiddenPackage$Literals.class | Bin 0 -> 921 bytes .../hidden/HiddenPackage.class | Bin 0 -> 1318 bytes .../bin/somemetamodelextension/hidden/Y.class | Bin 0 -> 289 bytes .../bin/somemetamodelextension/hidden/Z.class | Bin 0 -> 370 bytes .../hidden/impl/HiddenFactoryImpl.class | Bin 0 -> 2814 bytes .../hidden/impl/HiddenPackageImpl.class | Bin 0 -> 5143 bytes .../hidden/impl/YImpl.class | Bin 0 -> 2619 bytes .../hidden/impl/ZImpl.class | Bin 0 -> 3631 bytes .../hidden/util/HiddenAdapterFactory$1.class | Bin 0 -> 1861 bytes .../hidden/util/HiddenAdapterFactory.class | Bin 0 -> 2053 bytes .../hidden/util/HiddenSwitch.class | Bin 0 -> 2290 bytes .../somemetamodelextension/impl/RImpl.class | Bin 0 -> 3044 bytes .../SomemetamodelextensionFactoryImpl.class | Bin 0 -> 2885 bytes .../SomemetamodelextensionPackageImpl.class | Bin 0 -> 4910 bytes .../somemetamodelextension/impl/XImpl.class | Bin 0 -> 714 bytes ...memetamodelextensionAdapterFactory$1.class | Bin 0 -> 1898 bytes ...SomemetamodelextensionAdapterFactory.class | Bin 0 -> 2150 bytes .../util/SomemetamodelextensionSwitch.class | Bin 0 -> 2295 bytes SomeMetamodel/bin/somemmdeep/BDeepPImpl.class | Bin 0 -> 3264 bytes SomeMetamodel/bin/somemmdeep/RDeepPImpl.class | Bin 0 -> 3226 bytes .../SomeMMDeepCloningMaterial.class | Bin 0 -> 1058 bytes .../somemmdeep/SomeMMDeepLightCopier.class | Bin 0 -> 821 bytes .../bin/somemmdeep/SomeMMDeepTags.class | Bin 0 -> 3121 bytes .../AMutClassOnlyPImpl.class | Bin 0 -> 7049 bytes .../BMutClassOnlyPImpl.class | Bin 0 -> 3312 bytes .../RMutClassOnlyPImpl.class | Bin 0 -> 3274 bytes .../SomeMMMutClassOnlyCloningMaterial.class | Bin 0 -> 1186 bytes .../SomeMMMutClassOnlyLightCopier.class | Bin 0 -> 1018 bytes .../SomeMMMutClassOnlyTags.class | Bin 0 -> 3216 bytes SomeMetamodel/build.properties | 10 + SomeMetamodel/model/SomeMetamodel.ecore | 23 + SomeMetamodel/model/SomeMetamodel.ecorediag | 288 +++ SomeMetamodel/model/SomeMetamodel.genmodel | 49 + .../model/SomeMetamodelExtension.ecore | 19 + SomeMetamodel/plugin.properties | 4 + SomeMetamodel/plugin.xml | 33 + SomeMetamodel/src/somemetamodel/A.java | 155 ++ SomeMetamodel/src/somemetamodel/B.java | 78 + SomeMetamodel/src/somemetamodel/C.java | 51 + SomeMetamodel/src/somemetamodel/D.java | 53 + SomeMetamodel/src/somemetamodel/E.java | 19 + .../somemetamodel/SomemetamodelFactory.java | 79 + .../somemetamodel/SomemetamodelPackage.java | 577 ++++++ .../src/somemetamodel/impl/AImpl.java | 471 +++++ .../src/somemetamodel/impl/BImpl.java | 221 +++ .../src/somemetamodel/impl/CImpl.java | 166 ++ .../src/somemetamodel/impl/DImpl.java | 224 +++ .../src/somemetamodel/impl/EImpl.java | 41 + .../impl/SomemetamodelFactoryImpl.java | 146 ++ .../impl/SomemetamodelPackageImpl.java | 409 ++++ .../util/SomemetamodelAdapterFactory.java | 195 ++ .../util/SomemetamodelSwitch.java | 200 ++ .../src/somemetamodelextension/R.java | 78 + .../SomemetamodelextensionFactory.java | 52 + .../SomemetamodelextensionPackage.java | 236 +++ .../src/somemetamodelextension/X.java | 19 + .../hidden/HiddenFactory.java | 52 + .../hidden/HiddenPackage.java | 265 +++ .../src/somemetamodelextension/hidden/Y.java | 51 + .../src/somemetamodelextension/hidden/Z.java | 78 + .../hidden/impl/HiddenFactoryImpl.java | 109 ++ .../hidden/impl/HiddenPackageImpl.java | 254 +++ .../hidden/impl/YImpl.java | 162 ++ .../hidden/impl/ZImpl.java | 232 +++ .../hidden/util/HiddenAdapterFactory.java | 138 ++ .../hidden/util/HiddenSwitch.java | 134 ++ .../somemetamodelextension/impl/RImpl.java | 221 +++ .../SomemetamodelextensionFactoryImpl.java | 110 ++ .../SomemetamodelextensionPackageImpl.java | 250 +++ .../somemetamodelextension/impl/XImpl.java | 41 + .../SomemetamodelextensionAdapterFactory.java | 138 ++ .../util/SomemetamodelextensionSwitch.java | 134 ++ SomeMetamodel/src/somemmdeep/BDeepPImpl.java | 217 +++ SomeMetamodel/src/somemmdeep/RDeepPImpl.java | 217 +++ .../somemmdeep/SomeMMDeepCloningMaterial.java | 28 + .../src/somemmdeep/SomeMMDeepLightCopier.java | 18 + .../src/somemmdeep/SomeMMDeepTags.java | 106 ++ .../AMutClassOnlyPImpl.java | 473 +++++ .../BMutClassOnlyPImpl.java | 217 +++ .../RMutClassOnlyPImpl.java | 217 +++ .../SomeMMMutClassOnlyCloningMaterial.java | 29 + .../SomeMMMutClassOnlyLightCopier.java | 21 + .../SomeMMMutClassOnlyTags.java | 106 ++ TreeMetamodel/.classpath | 6 + TreeMetamodel/.project | 28 + .../org.eclipse.core.resources.prefs | 4 + TreeMetamodel/META-INF/MANIFEST.MF | 19 + TreeMetamodel/bin/treemetamodel/A.class | Bin 0 -> 385 bytes TreeMetamodel/bin/treemetamodel/B.class | Bin 0 -> 343 bytes TreeMetamodel/bin/treemetamodel/C.class | Bin 0 -> 345 bytes TreeMetamodel/bin/treemetamodel/D.class | Bin 0 -> 134 bytes TreeMetamodel/bin/treemetamodel/E.class | Bin 0 -> 404 bytes .../treemetamodel/TreemetamodelFactory.class | Bin 0 -> 740 bytes .../TreemetamodelPackage$Literals.class | Bin 0 -> 1473 bytes .../treemetamodel/TreemetamodelPackage.class | Bin 0 -> 1867 bytes .../bin/treemetamodel/impl/AImpl.class | Bin 0 -> 5370 bytes .../bin/treemetamodel/impl/BImpl.class | Bin 0 -> 4334 bytes .../bin/treemetamodel/impl/CImpl.class | Bin 0 -> 3734 bytes .../bin/treemetamodel/impl/DImpl.class | Bin 0 -> 703 bytes .../bin/treemetamodel/impl/EImpl.class | Bin 0 -> 5221 bytes .../impl/TreemetamodelFactoryImpl.class | Bin 0 -> 3247 bytes .../impl/TreemetamodelPackageImpl.class | Bin 0 -> 6317 bytes .../util/TreemetamodelAdapterFactory$1.class | Bin 0 -> 2585 bytes .../util/TreemetamodelAdapterFactory.class | Bin 0 -> 2208 bytes .../util/TreemetamodelSwitch.class | Bin 0 -> 3049 bytes .../TreemetamodelextensionFactory.class | Bin 0 -> 697 bytes ...eemetamodelextensionPackage$Literals.class | Bin 0 -> 578 bytes .../TreemetamodelextensionPackage.class | Bin 0 -> 1093 bytes .../bin/treemetamodelextension/X.class | Bin 0 -> 143 bytes .../TreemetamodelextensionFactoryImpl.class | Bin 0 -> 2638 bytes .../TreemetamodelextensionPackageImpl.class | Bin 0 -> 3116 bytes .../treemetamodelextension/impl/XImpl.class | Bin 0 -> 766 bytes ...eemetamodelextensionAdapterFactory$1.class | Bin 0 -> 1579 bytes ...TreemetamodelextensionAdapterFactory.class | Bin 0 -> 2079 bytes .../util/TreemetamodelextensionSwitch.class | Bin 0 -> 1940 bytes TreeMetamodel/build.properties | 10 + TreeMetamodel/model/TreeMetamodel.ecore | 33 + TreeMetamodel/model/TreeMetamodel.ecorediag | 234 +++ TreeMetamodel/model/TreeMetamodel.genmodel | 33 + .../model/TreeMetamodelExtension.ecore | 6 + .../model/TreeMetamodelExtension.ecorediag | 21 + TreeMetamodel/plugin.properties | 4 + TreeMetamodel/plugin.xml | 25 + .../.classpath | 7 + .../.project | 28 + .../.settings/org.eclipse.jdt.core.prefs | 7 + .../META-INF/MANIFEST.MF | 10 + .../benchmark/base/BenchmarkMaterial.class | Bin 0 -> 603 bytes .../benchmark/base/MetamodelMetrics.class | Bin 0 -> 1938 bytes .../benchmark/base/ModelCreator.class | Bin 0 -> 622 bytes .../build.properties | 4 + .../benchmark/base/BenchmarkMaterial.java | 20 + .../benchmark/base/MetamodelMetrics.java | 59 + .../benchmark/base/ModelCreator.java | 19 + .../.classpath | 20 + .../.project | 28 + .../org.eclipse.core.resources.prefs | 10 + .../.settings/org.eclipse.jdt.core.prefs | 8 + .../.settings/org.eclipse.m2e.core.prefs | 4 + .../META-INF/MANIFEST.MF | 23 + .../BenchmarkMaterialGenerator.class | Bin 0 -> 4190 bytes .../benchmark/generator/Constants.class | Bin 0 -> 397 bytes .../generator/EMFCodeGenerator.class | Bin 0 -> 5230 bytes ...rGenerator$NotEnoughObjectsException.class | Bin 0 -> 1113 bytes .../generator/ModelCreatorGenerator.class | Bin 0 -> 9621 bytes .../OsgiBundleGenerator$ZipHelper.class | Bin 0 -> 2801 bytes .../generator/OsgiBundleGenerator.class | Bin 0 -> 4066 bytes .../generator/main/Application.class | Bin 0 -> 5439 bytes .../build.properties | 8 + .../build.xml | 10 + .../ivy.xml | 36 + .../lib/commons-io-1.4.jar | Bin 0 -> 109043 bytes .../lib/jopt-simple-4.6-javadoc.jar | Bin 0 -> 170859 bytes .../lib/jopt-simple-4.6-sources.jar | Bin 0 -> 74419 bytes .../lib/jopt-simple-4.6.jar | Bin 0 -> 62477 bytes .../lib/slf4j-api-1.6.6.jar | Bin 0 -> 26176 bytes .../lib/zt-zip-1.7-javadoc.jar | Bin 0 -> 117730 bytes .../lib/zt-zip-1.7-sources.jar | Bin 0 -> 27415 bytes .../lib/zt-zip-1.7.jar | Bin 0 -> 55305 bytes .../plugin.xml | 15 + .../generator/BenchmarkMaterialGenerator.java | 167 ++ .../benchmark/generator/EMFCodeGenerator.java | 126 ++ .../generator/ModelCreatorGenerator.java | 400 ++++ .../generator/OsgiBundleGenerator.java | 117 ++ .../benchmark/generator/main/Application.java | 192 ++ .../BenchmarkMaterialGenerator.class | Bin 0 -> 7516 bytes ...CodeGenerator$EMFGenerationException.class | Bin 0 -> 765 bytes .../generator/EMFCodeGenerator.class | Bin 0 -> 6921 bytes ...rGenerator$NotEnoughObjectsException.class | Bin 0 -> 1113 bytes .../generator/ModelCreatorGenerator.class | Bin 0 -> 11316 bytes .../generator/OsgiBundleGenerator.class | Bin 0 -> 4471 bytes .../generator/main/Application.class | Bin 0 -> 9604 bytes .../testdata/shareAttributes.ecore | 183 ++ .../testdata/shareAttributes.ecorediag | 893 +++++++++ .../testdata/simple1.ecore | 10 + .../testdata/simple1.ecorediag | 57 + .../testdata/simple2.ecore | 12 + .../testdata/simple2.ecorediag | 81 + .../testdata/welldesigned.ecore | 90 + .../testdata/welldesigned.ecorediag | 591 ++++++ .../testdata/welldesigned2roots.ecore | 88 + .../testdata/welldesigned2roots.ecorediag | 565 ++++++ .../withstrings/shareAttributes.ecore | 183 ++ .../withstrings/shareAttributes.ecorediag | 893 +++++++++ .../.classpath | 8 + .../.project | 28 + .../.settings/org.eclipse.jdt.core.prefs | 7 + .../META-INF/MANIFEST.MF | 16 + .../diagramgenerator/DiagramGenerator.class | Bin 0 -> 3746 bytes .../generator/MetamodelGenerator.class | Bin 0 -> 1448 bytes .../generator/PropertiesSprinkler.class | Bin 0 -> 6206 bytes .../generator/StructureGenerator.class | Bin 0 -> 3911 bytes .../main/Application.class | Bin 0 -> 7475 bytes .../build.properties | 6 + .../build.xml | 10 + .../ivy.xml | 34 + .../lib/jopt-simple-4.6-javadoc.jar | Bin 0 -> 170859 bytes .../lib/jopt-simple-4.6-sources.jar | Bin 0 -> 74419 bytes .../lib/jopt-simple-4.6.jar | Bin 0 -> 62477 bytes .../plugin.xml | 15 + .../.metadata/.log | 486 +++++ .../.root/.indexes/properties.version | 1 + .../org.eclipse.core.resources.prefs | 2 + .../diagramgenerator/DiagramGenerator.java | 84 + .../generator/MetamodelGenerator.java | 25 + .../generator/PropertiesSprinkler.java | 140 ++ .../generator/StructureGenerator.java | 82 + .../main/Application.java | 154 ++ .../.classpath | 17 + .../.project | 28 + .../.settings/org.eclipse.jdt.core.prefs | 8 + .../.settings/org.eclipse.m2e.core.prefs | 4 + .../META-INF/MANIFEST.MF | 18 + .../build.properties | 7 + .../build.xml | 10 + .../ivy.xml | 34 + .../lib/jopt-simple-4.6-javadoc.jar | Bin 0 -> 170859 bytes .../lib/jopt-simple-4.6-sources.jar | Bin 0 -> 74419 bytes .../lib/jopt-simple-4.6.jar | Bin 0 -> 62477 bytes .../plugin.xml | 15 + .../runtime-data/.metadata/.log | 10 + .../.root/.indexes/properties.version | 1 + .../org.eclipse.core.resources.prefs | 2 + .../src/benchmark/Benchmark.java | 92 + .../src/benchmark/BenchmarkResults.java | 47 + .../src/data/CSVFile.java | 47 + .../src/main/Application.java | 273 +++ .../src/main/BundleLoader.java | 31 + .../src/memoryanalysis/HeapDump.java | 66 + .../src/memoryanalysis/MemoryAnalyzer.java | 75 + .../target/classes/benchmark/Benchmark.class | Bin 0 -> 4175 bytes .../classes/benchmark/BenchmarkResults.class | Bin 0 -> 1985 bytes .../target/classes/data/CSVFile.class | Bin 0 -> 2481 bytes .../target/classes/main/Application.class | Bin 0 -> 6946 bytes .../target/classes/main/BundleLoader.class | Bin 0 -> 1665 bytes .../classes/memoryanalysis/HeapDump.class | Bin 0 -> 2248 bytes .../memoryanalysis/MemoryAnalyzer.class | Bin 0 -> 2538 bytes fr.inria.diverse.cloning.cloner/.classpath | 7 + fr.inria.diverse.cloning.cloner/.project | 28 + .../META-INF/MANIFEST.MF | 15 + .../inria/diverse/cloning/cloner/Cloner.class | Bin 0 -> 369 bytes .../cloning/cloner/common/ClassTag.class | Bin 0 -> 1215 bytes .../cloner/common/CloningMaterial.class | Bin 0 -> 323 bytes .../cloning/cloner/common/MetamodelTags.class | Bin 0 -> 561 bytes .../emfextension/ShareableEObject.class | Bin 0 -> 195 bytes ...ractShareableEObject$ReadonlyContext.class | Bin 0 -> 1398 bytes .../impl/AbstractShareableEObject.class | Bin 0 -> 6279 bytes .../emfextension/impl/LooseCopier.class | Bin 0 -> 3441 bytes .../LooseResource$LooseContentsEList.class | Bin 0 -> 3188 bytes .../emfextension/impl/LooseResource.class | Bin 0 -> 4649 bytes .../cloning/cloner/impl/ClonerImpl.class | Bin 0 -> 5445 bytes .../cloning/cloner/util/Copy$TreeCopier.class | Bin 0 -> 4012 bytes .../diverse/cloning/cloner/util/Copy.class | Bin 0 -> 4346 bytes .../EcoreHelper$NoSingleRootException.class | Bin 0 -> 1853 bytes .../cloning/cloner/util/EcoreHelper.class | Bin 0 -> 5300 bytes .../diverse/cloning/cloner/util/Log.class | Bin 0 -> 2955 bytes .../build.properties | 4 + .../inria/diverse/cloning/cloner/Cloner.java | 29 + .../cloning/cloner/common/ClassTag.java | 16 + .../cloner/common/CloningMaterial.java | 10 + .../cloning/cloner/common/MetamodelTags.java | 46 + .../cloner/emfextension/ShareableEObject.java | 29 + .../impl/AbstractShareableEObject.java | 303 +++ .../cloner/emfextension/impl/LooseCopier.java | 121 ++ .../emfextension/impl/LooseResource.java | 172 ++ .../cloning/cloner/impl/ClonerImpl.java | 132 ++ .../diverse/cloning/cloner/util/Copy.java | 220 +++ .../cloning/cloner/util/EcoreHelper.java | 120 ++ .../diverse/cloning/cloner/util/Log.java | 85 + .../trashbin/DeepCloner.java | 49 + .../trashbin/MutClassesOnlyCloner.java | 82 + .../trashbin/WeakMutClassesOnlyCloner.java | 17 + .../.classpath | 8 + .../.project | 28 + .../.settings/org.eclipse.jdt.core.prefs | 11 + .../META-INF/MANIFEST.MF | 27 + .../CloningMaterialClassGenerator.class | Bin 0 -> 3855 bytes .../generators/Constants.class | Bin 0 -> 597 bytes .../generators/EMFImpl2PImpl.class | Bin 0 -> 20610 bytes .../generators/LightCopierGenerator.class | Bin 0 -> 4408 bytes .../generators/PImplGenerator.class | Bin 0 -> 5686 bytes .../generators/TagsGenerator.class | Bin 0 -> 6848 bytes .../materialgenerator/main/Application.class | Bin 0 -> 6143 bytes .../metrics/CloningMetrics.class | Bin 0 -> 3288 bytes .../materialgenerator/tagger/Tagger.class | Bin 0 -> 566 bytes .../AbstractTagger$PropertiesMutability.class | Bin 0 -> 1580 bytes .../tagger/impl/AbstractTagger.class | Bin 0 -> 4543 bytes .../tagger/impl/DeepTagger.class | Bin 0 -> 3750 bytes ...nlyTagger$StronglyConnectedComponent.class | Bin 0 -> 1134 bytes .../tagger/impl/MutClassesOnlyTagger.class | Bin 0 -> 7076 bytes .../impl/WeakMutClassesOnlyTagger.class | Bin 0 -> 4231 bytes .../util/CodeGeneration.class | Bin 0 -> 2776 bytes .../build.properties | 5 + .../javamodel/javamodel.xmi | 228 +++ .../plugin.xml | 19 + .../runtime-data/.metadata/.log | 46 + .../.location | Bin 0 -> 227 bytes .../.markers.snap | Bin 0 -> 16 bytes .../.syncinfo.snap | Bin 0 -> 16 bytes .../.projects/SomeMetamodel/.location | Bin 0 -> 106 bytes .../.projects/SomeMetamodel/.markers.snap | Bin 0 -> 691 bytes .../.projects/SomeMetamodel/.syncinfo.snap | Bin 0 -> 16 bytes .../.root/.indexes/properties.index | Bin 0 -> 104 bytes .../.root/.indexes/properties.version | 1 + .../.root/.markers.snap | Bin 0 -> 32 bytes .../.safetable/org.eclipse.core.resources | Bin 0 -> 348 bytes .../.plugins/org.eclipse.core.resources/.snap | Bin 0 -> 12393 bytes .../org.eclipse.acceleo.common.prefs | 2 + .../org.eclipse.core.resources.prefs | 2 + .../.settings/org.eclipse.jdt.core.prefs | 7 + .../.settings/org.eclipse.jdt.launching.prefs | 2 + .../.settings/org.eclipse.jdt.ui.prefs | 12 + .../.settings/org.eclipse.pde.core.prefs | 3 + .../.project | 33 + .../org.eclipse.jdt.core/1974333096.index | Bin 0 -> 19997 bytes .../org.eclipse.jdt.core/2369791033.index | Bin 0 -> 25 bytes .../org.eclipse.jdt.core/241682911.index | Bin 0 -> 2149 bytes .../org.eclipse.jdt.core/3765020915.index | Bin 0 -> 11858 bytes .../externalLibsTimeStamps | Bin 0 -> 2453 bytes .../org.eclipse.jdt.core/javaLikeNames.txt | 1 + .../org.eclipse.jdt.core/savedIndexNames.txt | 4 + .../variablesAndContainers.dat | Bin 0 -> 33232 bytes .../org.eclipse.jdt.launching/.install.xml | 4 + .../libraryInfos.xml | 47 + .../QualifiedTypeNameHistory.xml | 2 + .../.cache/clean-cache.properties | 2 + .../.extensions/.contributions.1 | Bin 0 -> 18926 bytes .../.extensions/.contributors.1 | Bin 0 -> 32514 bytes .../.extensions/.extraData.1 | Bin 0 -> 460986 bytes .../.extensions/.mainData.1 | Bin 0 -> 1941311 bytes .../.extensions/.manager/.fileTable.7 | 10 + .../.extensions/.manager/.fileTable.8 | 10 + .../.extensions/.manager/.fileTableLock | 0 .../.extensions/.namespaces.1 | Bin 0 -> 29722 bytes .../.extensions/.orphans.1 | Bin 0 -> 4 bytes .../org.eclipse.pde.core/.extensions/.table.1 | Bin 0 -> 98550 bytes .../.local_targets/1394010976306.target | 15 + .../31810913137.workspace/.lazy | Bin 0 -> 1396 bytes .../31810913137.workspace/.pluginInfo | 6 + .../31810913137.workspace/.state | Bin 0 -> 597 bytes .../517150724739.target/.lazy | Bin 0 -> 1678519 bytes .../517150724739.target/.pluginInfo | 1692 +++++++++++++++++ .../517150724739.target/.state | Bin 0 -> 142783 bytes .../task-tags.properties | 3 + .../CloningMaterialClassGenerator.java | 96 + .../generators/Constants.java | 10 + .../generators/EMFImpl2PImpl.java | 709 +++++++ .../generators/LightCopierGenerator.java | 102 + .../generators/PImplGenerator.java | 210 ++ .../generators/TagsGenerator.java | 153 ++ .../materialgenerator/main/Application.java | 116 ++ .../metrics/CloningMetrics.java | 95 + .../materialgenerator/tagger/Tagger.java | 27 + .../tagger/impl/AbstractTagger.java | 124 ++ .../tagger/impl/DeepTagger.java | 76 + .../tagger/impl/MutClassesOnlyTagger.java | 334 ++++ .../tagger/impl/WeakMutClassesOnlyTagger.java | 141 ++ .../util/CodeGeneration.java | 73 + notes-gains-weird~ | 13 + process-data.R | 190 ++ process-data.R~ | 190 ++ 442 files changed, 22572 insertions(+) create mode 100644 BenchmarkMetamodelsGenerator/tmp/lapin.ecore create mode 100644 External Plug-in Libraries/.classpath create mode 100644 External Plug-in Libraries/.project create mode 100644 External Plug-in Libraries/.searchable create mode 100644 SomeManipulations/.classpath create mode 100644 SomeManipulations/.project create mode 100644 SomeManipulations/META-INF/MANIFEST.MF create mode 100644 SomeManipulations/bin/main/MainShowNoShare.class create mode 100644 SomeManipulations/bin/main/MainTestChangeResource.class create mode 100644 SomeManipulations/bin/main/MainTestCloning.class create mode 100644 SomeManipulations/bin/main/MainTestCompositions.class create mode 100644 SomeManipulations/bin/main/MainTestLooseResource.class create mode 100644 SomeManipulations/bin/main/MainTestMultipleCompositions.class create mode 100644 SomeManipulations/bin/main/MainTestMultipleCompositionsOnlyLoose.class create mode 100644 SomeManipulations/bin/main/MainTestNullResource.class create mode 100644 SomeManipulations/bin/main/MainTestResources.class create mode 100644 SomeManipulations/bin/main/MainTruc.class create mode 100644 SomeManipulations/bin/main/Truc.class create mode 100644 SomeManipulations/bin/main/Truc2.class create mode 100644 SomeManipulations/bin/util/HeapDump.class create mode 100644 SomeManipulations/build.properties create mode 100644 SomeManipulations/file/tmp/deepClone/submodel1.xmi create mode 100644 SomeManipulations/file/tmp/deepClone/submodel2.xmi create mode 100644 SomeManipulations/file/tmp/mutableClassesOnlyClone/submodel1.xmi create mode 100644 SomeManipulations/file/tmp/mutableClassesOnlyClone/submodel2.xmi create mode 100644 SomeManipulations/file/tmp/submodel1.xmi create mode 100644 SomeManipulations/file/tmp/submodel2.xmi create mode 100644 SomeManipulations/models/deepClone/submodel1.xmi create mode 100644 SomeManipulations/models/deepClone/submodel2.xmi create mode 100644 SomeManipulations/models/lightDeepClone/submodel1.xmi create mode 100644 SomeManipulations/models/lightDeepClone/submodel2.xmi create mode 100644 SomeManipulations/models/lightMutableOnlyClone/submodel1.xmi create mode 100644 SomeManipulations/models/lightMutableOnlyClone/submodel2.xmi create mode 100644 SomeManipulations/models/mutableOnlyClone/submodel1.xmi create mode 100644 SomeManipulations/models/mutableOnlyClone/submodel2.xmi create mode 100644 SomeManipulations/models/submodel1.xmi create mode 100644 SomeManipulations/models/submodel2.xmi create mode 100644 SomeManipulations/plugin.properties create mode 100644 SomeManipulations/plugin.xml create mode 100644 SomeManipulations/src/main/MainShowNoShare.java create mode 100644 SomeManipulations/src/main/MainTestChangeResource.java create mode 100644 SomeManipulations/src/main/MainTestCloning.java create mode 100644 SomeManipulations/src/main/MainTestCompositions.java create mode 100644 SomeManipulations/src/main/MainTestLooseResource.java create mode 100644 SomeManipulations/src/main/MainTestMultipleCompositions.java create mode 100644 SomeManipulations/src/main/MainTestMultipleCompositionsOnlyLoose.java create mode 100644 SomeManipulations/src/main/MainTestNullResource.java create mode 100644 SomeManipulations/src/main/MainTestResources.java create mode 100644 SomeManipulations/src/main/MainTruc.java create mode 100644 SomeManipulations/src/main/Truc.java create mode 100644 SomeManipulations/src/main/Truc2.java create mode 100644 SomeManipulations/src/util/HeapDump.java create mode 100644 SomeMetamodel/.classpath create mode 100644 SomeMetamodel/.project create mode 100644 SomeMetamodel/.settings/org.eclipse.core.resources.prefs create mode 100644 SomeMetamodel/.settings/org.eclipse.jdt.core.prefs create mode 100644 SomeMetamodel/META-INF/MANIFEST.MF create mode 100644 SomeMetamodel/bin/somemetamodel/A.class create mode 100644 SomeMetamodel/bin/somemetamodel/B.class create mode 100644 SomeMetamodel/bin/somemetamodel/C.class create mode 100644 SomeMetamodel/bin/somemetamodel/D.class create mode 100644 SomeMetamodel/bin/somemetamodel/E.class create mode 100644 SomeMetamodel/bin/somemetamodel/SomemetamodelFactory.class create mode 100644 SomeMetamodel/bin/somemetamodel/SomemetamodelPackage$Literals.class create mode 100644 SomeMetamodel/bin/somemetamodel/SomemetamodelPackage.class create mode 100644 SomeMetamodel/bin/somemetamodel/impl/AImpl.class create mode 100644 SomeMetamodel/bin/somemetamodel/impl/BImpl.class create mode 100644 SomeMetamodel/bin/somemetamodel/impl/CImpl.class create mode 100644 SomeMetamodel/bin/somemetamodel/impl/DImpl.class create mode 100644 SomeMetamodel/bin/somemetamodel/impl/EImpl.class create mode 100644 SomeMetamodel/bin/somemetamodel/impl/SomemetamodelFactoryImpl.class create mode 100644 SomeMetamodel/bin/somemetamodel/impl/SomemetamodelPackageImpl.class create mode 100644 SomeMetamodel/bin/somemetamodel/util/SomemetamodelAdapterFactory$1.class create mode 100644 SomeMetamodel/bin/somemetamodel/util/SomemetamodelAdapterFactory.class create mode 100644 SomeMetamodel/bin/somemetamodel/util/SomemetamodelSwitch.class create mode 100644 SomeMetamodel/bin/somemetamodelextension/R.class create mode 100644 SomeMetamodel/bin/somemetamodelextension/SomemetamodelextensionFactory.class create mode 100644 SomeMetamodel/bin/somemetamodelextension/SomemetamodelextensionPackage$Literals.class create mode 100644 SomeMetamodel/bin/somemetamodelextension/SomemetamodelextensionPackage.class create mode 100644 SomeMetamodel/bin/somemetamodelextension/X.class create mode 100644 SomeMetamodel/bin/somemetamodelextension/hidden/HiddenFactory.class create mode 100644 SomeMetamodel/bin/somemetamodelextension/hidden/HiddenPackage$Literals.class create mode 100644 SomeMetamodel/bin/somemetamodelextension/hidden/HiddenPackage.class create mode 100644 SomeMetamodel/bin/somemetamodelextension/hidden/Y.class create mode 100644 SomeMetamodel/bin/somemetamodelextension/hidden/Z.class create mode 100644 SomeMetamodel/bin/somemetamodelextension/hidden/impl/HiddenFactoryImpl.class create mode 100644 SomeMetamodel/bin/somemetamodelextension/hidden/impl/HiddenPackageImpl.class create mode 100644 SomeMetamodel/bin/somemetamodelextension/hidden/impl/YImpl.class create mode 100644 SomeMetamodel/bin/somemetamodelextension/hidden/impl/ZImpl.class create mode 100644 SomeMetamodel/bin/somemetamodelextension/hidden/util/HiddenAdapterFactory$1.class create mode 100644 SomeMetamodel/bin/somemetamodelextension/hidden/util/HiddenAdapterFactory.class create mode 100644 SomeMetamodel/bin/somemetamodelextension/hidden/util/HiddenSwitch.class create mode 100644 SomeMetamodel/bin/somemetamodelextension/impl/RImpl.class create mode 100644 SomeMetamodel/bin/somemetamodelextension/impl/SomemetamodelextensionFactoryImpl.class create mode 100644 SomeMetamodel/bin/somemetamodelextension/impl/SomemetamodelextensionPackageImpl.class create mode 100644 SomeMetamodel/bin/somemetamodelextension/impl/XImpl.class create mode 100644 SomeMetamodel/bin/somemetamodelextension/util/SomemetamodelextensionAdapterFactory$1.class create mode 100644 SomeMetamodel/bin/somemetamodelextension/util/SomemetamodelextensionAdapterFactory.class create mode 100644 SomeMetamodel/bin/somemetamodelextension/util/SomemetamodelextensionSwitch.class create mode 100644 SomeMetamodel/bin/somemmdeep/BDeepPImpl.class create mode 100644 SomeMetamodel/bin/somemmdeep/RDeepPImpl.class create mode 100644 SomeMetamodel/bin/somemmdeep/SomeMMDeepCloningMaterial.class create mode 100644 SomeMetamodel/bin/somemmdeep/SomeMMDeepLightCopier.class create mode 100644 SomeMetamodel/bin/somemmdeep/SomeMMDeepTags.class create mode 100644 SomeMetamodel/bin/somemmmutclassonly/AMutClassOnlyPImpl.class create mode 100644 SomeMetamodel/bin/somemmmutclassonly/BMutClassOnlyPImpl.class create mode 100644 SomeMetamodel/bin/somemmmutclassonly/RMutClassOnlyPImpl.class create mode 100644 SomeMetamodel/bin/somemmmutclassonly/SomeMMMutClassOnlyCloningMaterial.class create mode 100644 SomeMetamodel/bin/somemmmutclassonly/SomeMMMutClassOnlyLightCopier.class create mode 100644 SomeMetamodel/bin/somemmmutclassonly/SomeMMMutClassOnlyTags.class create mode 100644 SomeMetamodel/build.properties create mode 100644 SomeMetamodel/model/SomeMetamodel.ecore create mode 100644 SomeMetamodel/model/SomeMetamodel.ecorediag create mode 100644 SomeMetamodel/model/SomeMetamodel.genmodel create mode 100644 SomeMetamodel/model/SomeMetamodelExtension.ecore create mode 100644 SomeMetamodel/plugin.properties create mode 100644 SomeMetamodel/plugin.xml create mode 100644 SomeMetamodel/src/somemetamodel/A.java create mode 100644 SomeMetamodel/src/somemetamodel/B.java create mode 100644 SomeMetamodel/src/somemetamodel/C.java create mode 100644 SomeMetamodel/src/somemetamodel/D.java create mode 100644 SomeMetamodel/src/somemetamodel/E.java create mode 100644 SomeMetamodel/src/somemetamodel/SomemetamodelFactory.java create mode 100644 SomeMetamodel/src/somemetamodel/SomemetamodelPackage.java create mode 100644 SomeMetamodel/src/somemetamodel/impl/AImpl.java create mode 100644 SomeMetamodel/src/somemetamodel/impl/BImpl.java create mode 100644 SomeMetamodel/src/somemetamodel/impl/CImpl.java create mode 100644 SomeMetamodel/src/somemetamodel/impl/DImpl.java create mode 100644 SomeMetamodel/src/somemetamodel/impl/EImpl.java create mode 100644 SomeMetamodel/src/somemetamodel/impl/SomemetamodelFactoryImpl.java create mode 100644 SomeMetamodel/src/somemetamodel/impl/SomemetamodelPackageImpl.java create mode 100644 SomeMetamodel/src/somemetamodel/util/SomemetamodelAdapterFactory.java create mode 100644 SomeMetamodel/src/somemetamodel/util/SomemetamodelSwitch.java create mode 100644 SomeMetamodel/src/somemetamodelextension/R.java create mode 100644 SomeMetamodel/src/somemetamodelextension/SomemetamodelextensionFactory.java create mode 100644 SomeMetamodel/src/somemetamodelextension/SomemetamodelextensionPackage.java create mode 100644 SomeMetamodel/src/somemetamodelextension/X.java create mode 100644 SomeMetamodel/src/somemetamodelextension/hidden/HiddenFactory.java create mode 100644 SomeMetamodel/src/somemetamodelextension/hidden/HiddenPackage.java create mode 100644 SomeMetamodel/src/somemetamodelextension/hidden/Y.java create mode 100644 SomeMetamodel/src/somemetamodelextension/hidden/Z.java create mode 100644 SomeMetamodel/src/somemetamodelextension/hidden/impl/HiddenFactoryImpl.java create mode 100644 SomeMetamodel/src/somemetamodelextension/hidden/impl/HiddenPackageImpl.java create mode 100644 SomeMetamodel/src/somemetamodelextension/hidden/impl/YImpl.java create mode 100644 SomeMetamodel/src/somemetamodelextension/hidden/impl/ZImpl.java create mode 100644 SomeMetamodel/src/somemetamodelextension/hidden/util/HiddenAdapterFactory.java create mode 100644 SomeMetamodel/src/somemetamodelextension/hidden/util/HiddenSwitch.java create mode 100644 SomeMetamodel/src/somemetamodelextension/impl/RImpl.java create mode 100644 SomeMetamodel/src/somemetamodelextension/impl/SomemetamodelextensionFactoryImpl.java create mode 100644 SomeMetamodel/src/somemetamodelextension/impl/SomemetamodelextensionPackageImpl.java create mode 100644 SomeMetamodel/src/somemetamodelextension/impl/XImpl.java create mode 100644 SomeMetamodel/src/somemetamodelextension/util/SomemetamodelextensionAdapterFactory.java create mode 100644 SomeMetamodel/src/somemetamodelextension/util/SomemetamodelextensionSwitch.java create mode 100644 SomeMetamodel/src/somemmdeep/BDeepPImpl.java create mode 100644 SomeMetamodel/src/somemmdeep/RDeepPImpl.java create mode 100644 SomeMetamodel/src/somemmdeep/SomeMMDeepCloningMaterial.java create mode 100644 SomeMetamodel/src/somemmdeep/SomeMMDeepLightCopier.java create mode 100644 SomeMetamodel/src/somemmdeep/SomeMMDeepTags.java create mode 100644 SomeMetamodel/src/somemmmutclassonly/AMutClassOnlyPImpl.java create mode 100644 SomeMetamodel/src/somemmmutclassonly/BMutClassOnlyPImpl.java create mode 100644 SomeMetamodel/src/somemmmutclassonly/RMutClassOnlyPImpl.java create mode 100644 SomeMetamodel/src/somemmmutclassonly/SomeMMMutClassOnlyCloningMaterial.java create mode 100644 SomeMetamodel/src/somemmmutclassonly/SomeMMMutClassOnlyLightCopier.java create mode 100644 SomeMetamodel/src/somemmmutclassonly/SomeMMMutClassOnlyTags.java create mode 100644 TreeMetamodel/.classpath create mode 100644 TreeMetamodel/.project create mode 100644 TreeMetamodel/.settings/org.eclipse.core.resources.prefs create mode 100644 TreeMetamodel/META-INF/MANIFEST.MF create mode 100644 TreeMetamodel/bin/treemetamodel/A.class create mode 100644 TreeMetamodel/bin/treemetamodel/B.class create mode 100644 TreeMetamodel/bin/treemetamodel/C.class create mode 100644 TreeMetamodel/bin/treemetamodel/D.class create mode 100644 TreeMetamodel/bin/treemetamodel/E.class create mode 100644 TreeMetamodel/bin/treemetamodel/TreemetamodelFactory.class create mode 100644 TreeMetamodel/bin/treemetamodel/TreemetamodelPackage$Literals.class create mode 100644 TreeMetamodel/bin/treemetamodel/TreemetamodelPackage.class create mode 100644 TreeMetamodel/bin/treemetamodel/impl/AImpl.class create mode 100644 TreeMetamodel/bin/treemetamodel/impl/BImpl.class create mode 100644 TreeMetamodel/bin/treemetamodel/impl/CImpl.class create mode 100644 TreeMetamodel/bin/treemetamodel/impl/DImpl.class create mode 100644 TreeMetamodel/bin/treemetamodel/impl/EImpl.class create mode 100644 TreeMetamodel/bin/treemetamodel/impl/TreemetamodelFactoryImpl.class create mode 100644 TreeMetamodel/bin/treemetamodel/impl/TreemetamodelPackageImpl.class create mode 100644 TreeMetamodel/bin/treemetamodel/util/TreemetamodelAdapterFactory$1.class create mode 100644 TreeMetamodel/bin/treemetamodel/util/TreemetamodelAdapterFactory.class create mode 100644 TreeMetamodel/bin/treemetamodel/util/TreemetamodelSwitch.class create mode 100644 TreeMetamodel/bin/treemetamodelextension/TreemetamodelextensionFactory.class create mode 100644 TreeMetamodel/bin/treemetamodelextension/TreemetamodelextensionPackage$Literals.class create mode 100644 TreeMetamodel/bin/treemetamodelextension/TreemetamodelextensionPackage.class create mode 100644 TreeMetamodel/bin/treemetamodelextension/X.class create mode 100644 TreeMetamodel/bin/treemetamodelextension/impl/TreemetamodelextensionFactoryImpl.class create mode 100644 TreeMetamodel/bin/treemetamodelextension/impl/TreemetamodelextensionPackageImpl.class create mode 100644 TreeMetamodel/bin/treemetamodelextension/impl/XImpl.class create mode 100644 TreeMetamodel/bin/treemetamodelextension/util/TreemetamodelextensionAdapterFactory$1.class create mode 100644 TreeMetamodel/bin/treemetamodelextension/util/TreemetamodelextensionAdapterFactory.class create mode 100644 TreeMetamodel/bin/treemetamodelextension/util/TreemetamodelextensionSwitch.class create mode 100644 TreeMetamodel/build.properties create mode 100644 TreeMetamodel/model/TreeMetamodel.ecore create mode 100644 TreeMetamodel/model/TreeMetamodel.ecorediag create mode 100644 TreeMetamodel/model/TreeMetamodel.genmodel create mode 100644 TreeMetamodel/model/TreeMetamodelExtension.ecore create mode 100644 TreeMetamodel/model/TreeMetamodelExtension.ecorediag create mode 100644 TreeMetamodel/plugin.properties create mode 100644 TreeMetamodel/plugin.xml create mode 100644 fr.inria.diverse.cloning.benchmark.common/.classpath create mode 100644 fr.inria.diverse.cloning.benchmark.common/.project create mode 100644 fr.inria.diverse.cloning.benchmark.common/.settings/org.eclipse.jdt.core.prefs create mode 100644 fr.inria.diverse.cloning.benchmark.common/META-INF/MANIFEST.MF create mode 100644 fr.inria.diverse.cloning.benchmark.common/bin/fancyemfcloning/benchmark/base/BenchmarkMaterial.class create mode 100644 fr.inria.diverse.cloning.benchmark.common/bin/fancyemfcloning/benchmark/base/MetamodelMetrics.class create mode 100644 fr.inria.diverse.cloning.benchmark.common/bin/fancyemfcloning/benchmark/base/ModelCreator.class create mode 100644 fr.inria.diverse.cloning.benchmark.common/build.properties create mode 100644 fr.inria.diverse.cloning.benchmark.common/src/fancyemfcloning/benchmark/base/BenchmarkMaterial.java create mode 100644 fr.inria.diverse.cloning.benchmark.common/src/fancyemfcloning/benchmark/base/MetamodelMetrics.java create mode 100644 fr.inria.diverse.cloning.benchmark.common/src/fancyemfcloning/benchmark/base/ModelCreator.java create mode 100644 fr.inria.diverse.cloning.benchmark.materialgenerator/.classpath create mode 100644 fr.inria.diverse.cloning.benchmark.materialgenerator/.project create mode 100644 fr.inria.diverse.cloning.benchmark.materialgenerator/.settings/org.eclipse.core.resources.prefs create mode 100644 fr.inria.diverse.cloning.benchmark.materialgenerator/.settings/org.eclipse.jdt.core.prefs create mode 100644 fr.inria.diverse.cloning.benchmark.materialgenerator/.settings/org.eclipse.m2e.core.prefs create mode 100644 fr.inria.diverse.cloning.benchmark.materialgenerator/META-INF/MANIFEST.MF create mode 100644 fr.inria.diverse.cloning.benchmark.materialgenerator/bin/fancyemfcloning/benchmark/generator/BenchmarkMaterialGenerator.class create mode 100644 fr.inria.diverse.cloning.benchmark.materialgenerator/bin/fancyemfcloning/benchmark/generator/Constants.class create mode 100644 fr.inria.diverse.cloning.benchmark.materialgenerator/bin/fancyemfcloning/benchmark/generator/EMFCodeGenerator.class create mode 100644 fr.inria.diverse.cloning.benchmark.materialgenerator/bin/fancyemfcloning/benchmark/generator/ModelCreatorGenerator$NotEnoughObjectsException.class create mode 100644 fr.inria.diverse.cloning.benchmark.materialgenerator/bin/fancyemfcloning/benchmark/generator/ModelCreatorGenerator.class create mode 100644 fr.inria.diverse.cloning.benchmark.materialgenerator/bin/fancyemfcloning/benchmark/generator/OsgiBundleGenerator$ZipHelper.class create mode 100644 fr.inria.diverse.cloning.benchmark.materialgenerator/bin/fancyemfcloning/benchmark/generator/OsgiBundleGenerator.class create mode 100644 fr.inria.diverse.cloning.benchmark.materialgenerator/bin/fancyemfcloning/benchmark/generator/main/Application.class create mode 100644 fr.inria.diverse.cloning.benchmark.materialgenerator/build.properties create mode 100644 fr.inria.diverse.cloning.benchmark.materialgenerator/build.xml create mode 100644 fr.inria.diverse.cloning.benchmark.materialgenerator/ivy.xml create mode 100644 fr.inria.diverse.cloning.benchmark.materialgenerator/lib/commons-io-1.4.jar create mode 100644 fr.inria.diverse.cloning.benchmark.materialgenerator/lib/jopt-simple-4.6-javadoc.jar create mode 100644 fr.inria.diverse.cloning.benchmark.materialgenerator/lib/jopt-simple-4.6-sources.jar create mode 100644 fr.inria.diverse.cloning.benchmark.materialgenerator/lib/jopt-simple-4.6.jar create mode 100644 fr.inria.diverse.cloning.benchmark.materialgenerator/lib/slf4j-api-1.6.6.jar create mode 100644 fr.inria.diverse.cloning.benchmark.materialgenerator/lib/zt-zip-1.7-javadoc.jar create mode 100644 fr.inria.diverse.cloning.benchmark.materialgenerator/lib/zt-zip-1.7-sources.jar create mode 100644 fr.inria.diverse.cloning.benchmark.materialgenerator/lib/zt-zip-1.7.jar create mode 100644 fr.inria.diverse.cloning.benchmark.materialgenerator/plugin.xml create mode 100644 fr.inria.diverse.cloning.benchmark.materialgenerator/src/fancyemfcloning/benchmark/generator/BenchmarkMaterialGenerator.java create mode 100644 fr.inria.diverse.cloning.benchmark.materialgenerator/src/fancyemfcloning/benchmark/generator/EMFCodeGenerator.java create mode 100644 fr.inria.diverse.cloning.benchmark.materialgenerator/src/fancyemfcloning/benchmark/generator/ModelCreatorGenerator.java create mode 100644 fr.inria.diverse.cloning.benchmark.materialgenerator/src/fancyemfcloning/benchmark/generator/OsgiBundleGenerator.java create mode 100644 fr.inria.diverse.cloning.benchmark.materialgenerator/src/fancyemfcloning/benchmark/generator/main/Application.java create mode 100644 fr.inria.diverse.cloning.benchmark.materialgenerator/target/classes/fancyemfcloning/benchmark/generator/BenchmarkMaterialGenerator.class create mode 100644 fr.inria.diverse.cloning.benchmark.materialgenerator/target/classes/fancyemfcloning/benchmark/generator/EMFCodeGenerator$EMFGenerationException.class create mode 100644 fr.inria.diverse.cloning.benchmark.materialgenerator/target/classes/fancyemfcloning/benchmark/generator/EMFCodeGenerator.class create mode 100644 fr.inria.diverse.cloning.benchmark.materialgenerator/target/classes/fancyemfcloning/benchmark/generator/ModelCreatorGenerator$NotEnoughObjectsException.class create mode 100644 fr.inria.diverse.cloning.benchmark.materialgenerator/target/classes/fancyemfcloning/benchmark/generator/ModelCreatorGenerator.class create mode 100644 fr.inria.diverse.cloning.benchmark.materialgenerator/target/classes/fancyemfcloning/benchmark/generator/OsgiBundleGenerator.class create mode 100644 fr.inria.diverse.cloning.benchmark.materialgenerator/target/classes/fancyemfcloning/benchmark/generator/main/Application.class create mode 100644 fr.inria.diverse.cloning.benchmark.materialgenerator/testdata/shareAttributes.ecore create mode 100644 fr.inria.diverse.cloning.benchmark.materialgenerator/testdata/shareAttributes.ecorediag create mode 100644 fr.inria.diverse.cloning.benchmark.materialgenerator/testdata/simple1.ecore create mode 100644 fr.inria.diverse.cloning.benchmark.materialgenerator/testdata/simple1.ecorediag create mode 100644 fr.inria.diverse.cloning.benchmark.materialgenerator/testdata/simple2.ecore create mode 100644 fr.inria.diverse.cloning.benchmark.materialgenerator/testdata/simple2.ecorediag create mode 100644 fr.inria.diverse.cloning.benchmark.materialgenerator/testdata/welldesigned.ecore create mode 100644 fr.inria.diverse.cloning.benchmark.materialgenerator/testdata/welldesigned.ecorediag create mode 100644 fr.inria.diverse.cloning.benchmark.materialgenerator/testdata/welldesigned2roots.ecore create mode 100644 fr.inria.diverse.cloning.benchmark.materialgenerator/testdata/welldesigned2roots.ecorediag create mode 100644 fr.inria.diverse.cloning.benchmark.materialgenerator/testdata/withstrings/shareAttributes.ecore create mode 100644 fr.inria.diverse.cloning.benchmark.materialgenerator/testdata/withstrings/shareAttributes.ecorediag create mode 100644 fr.inria.diverse.cloning.benchmark.metamodelsgenerator/.classpath create mode 100644 fr.inria.diverse.cloning.benchmark.metamodelsgenerator/.project create mode 100644 fr.inria.diverse.cloning.benchmark.metamodelsgenerator/.settings/org.eclipse.jdt.core.prefs create mode 100644 fr.inria.diverse.cloning.benchmark.metamodelsgenerator/META-INF/MANIFEST.MF create mode 100644 fr.inria.diverse.cloning.benchmark.metamodelsgenerator/bin/benchmarkmetamodelsgenerator/diagramgenerator/DiagramGenerator.class create mode 100644 fr.inria.diverse.cloning.benchmark.metamodelsgenerator/bin/benchmarkmetamodelsgenerator/generator/MetamodelGenerator.class create mode 100644 fr.inria.diverse.cloning.benchmark.metamodelsgenerator/bin/benchmarkmetamodelsgenerator/generator/PropertiesSprinkler.class create mode 100644 fr.inria.diverse.cloning.benchmark.metamodelsgenerator/bin/benchmarkmetamodelsgenerator/generator/StructureGenerator.class create mode 100644 fr.inria.diverse.cloning.benchmark.metamodelsgenerator/bin/benchmarkmetamodelsgenerator/main/Application.class create mode 100644 fr.inria.diverse.cloning.benchmark.metamodelsgenerator/build.properties create mode 100644 fr.inria.diverse.cloning.benchmark.metamodelsgenerator/build.xml create mode 100644 fr.inria.diverse.cloning.benchmark.metamodelsgenerator/ivy.xml create mode 100644 fr.inria.diverse.cloning.benchmark.metamodelsgenerator/lib/jopt-simple-4.6-javadoc.jar create mode 100644 fr.inria.diverse.cloning.benchmark.metamodelsgenerator/lib/jopt-simple-4.6-sources.jar create mode 100644 fr.inria.diverse.cloning.benchmark.metamodelsgenerator/lib/jopt-simple-4.6.jar create mode 100644 fr.inria.diverse.cloning.benchmark.metamodelsgenerator/plugin.xml create mode 100644 fr.inria.diverse.cloning.benchmark.metamodelsgenerator/runtime-BenchmarkMetamodelsGenerator/.metadata/.log create mode 100644 fr.inria.diverse.cloning.benchmark.metamodelsgenerator/runtime-BenchmarkMetamodelsGenerator/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.version create mode 100644 fr.inria.diverse.cloning.benchmark.metamodelsgenerator/runtime-BenchmarkMetamodelsGenerator/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.core.resources.prefs create mode 100644 fr.inria.diverse.cloning.benchmark.metamodelsgenerator/src/benchmarkmetamodelsgenerator/diagramgenerator/DiagramGenerator.java create mode 100644 fr.inria.diverse.cloning.benchmark.metamodelsgenerator/src/benchmarkmetamodelsgenerator/generator/MetamodelGenerator.java create mode 100644 fr.inria.diverse.cloning.benchmark.metamodelsgenerator/src/benchmarkmetamodelsgenerator/generator/PropertiesSprinkler.java create mode 100644 fr.inria.diverse.cloning.benchmark.metamodelsgenerator/src/benchmarkmetamodelsgenerator/generator/StructureGenerator.java create mode 100644 fr.inria.diverse.cloning.benchmark.metamodelsgenerator/src/benchmarkmetamodelsgenerator/main/Application.java create mode 100644 fr.inria.diverse.cloning.benchmark.tool/.classpath create mode 100644 fr.inria.diverse.cloning.benchmark.tool/.project create mode 100644 fr.inria.diverse.cloning.benchmark.tool/.settings/org.eclipse.jdt.core.prefs create mode 100644 fr.inria.diverse.cloning.benchmark.tool/.settings/org.eclipse.m2e.core.prefs create mode 100644 fr.inria.diverse.cloning.benchmark.tool/META-INF/MANIFEST.MF create mode 100644 fr.inria.diverse.cloning.benchmark.tool/build.properties create mode 100644 fr.inria.diverse.cloning.benchmark.tool/build.xml create mode 100644 fr.inria.diverse.cloning.benchmark.tool/ivy.xml create mode 100644 fr.inria.diverse.cloning.benchmark.tool/lib/jopt-simple-4.6-javadoc.jar create mode 100644 fr.inria.diverse.cloning.benchmark.tool/lib/jopt-simple-4.6-sources.jar create mode 100644 fr.inria.diverse.cloning.benchmark.tool/lib/jopt-simple-4.6.jar create mode 100644 fr.inria.diverse.cloning.benchmark.tool/plugin.xml create mode 100644 fr.inria.diverse.cloning.benchmark.tool/runtime-data/.metadata/.log create mode 100644 fr.inria.diverse.cloning.benchmark.tool/runtime-data/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.version create mode 100644 fr.inria.diverse.cloning.benchmark.tool/runtime-data/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.core.resources.prefs create mode 100644 fr.inria.diverse.cloning.benchmark.tool/src/benchmark/Benchmark.java create mode 100644 fr.inria.diverse.cloning.benchmark.tool/src/benchmark/BenchmarkResults.java create mode 100644 fr.inria.diverse.cloning.benchmark.tool/src/data/CSVFile.java create mode 100644 fr.inria.diverse.cloning.benchmark.tool/src/main/Application.java create mode 100644 fr.inria.diverse.cloning.benchmark.tool/src/main/BundleLoader.java create mode 100644 fr.inria.diverse.cloning.benchmark.tool/src/memoryanalysis/HeapDump.java create mode 100644 fr.inria.diverse.cloning.benchmark.tool/src/memoryanalysis/MemoryAnalyzer.java create mode 100644 fr.inria.diverse.cloning.benchmark.tool/target/classes/benchmark/Benchmark.class create mode 100644 fr.inria.diverse.cloning.benchmark.tool/target/classes/benchmark/BenchmarkResults.class create mode 100644 fr.inria.diverse.cloning.benchmark.tool/target/classes/data/CSVFile.class create mode 100644 fr.inria.diverse.cloning.benchmark.tool/target/classes/main/Application.class create mode 100644 fr.inria.diverse.cloning.benchmark.tool/target/classes/main/BundleLoader.class create mode 100644 fr.inria.diverse.cloning.benchmark.tool/target/classes/memoryanalysis/HeapDump.class create mode 100644 fr.inria.diverse.cloning.benchmark.tool/target/classes/memoryanalysis/MemoryAnalyzer.class create mode 100644 fr.inria.diverse.cloning.cloner/.classpath create mode 100644 fr.inria.diverse.cloning.cloner/.project create mode 100644 fr.inria.diverse.cloning.cloner/META-INF/MANIFEST.MF create mode 100644 fr.inria.diverse.cloning.cloner/bin/fr/inria/diverse/cloning/cloner/Cloner.class create mode 100644 fr.inria.diverse.cloning.cloner/bin/fr/inria/diverse/cloning/cloner/common/ClassTag.class create mode 100644 fr.inria.diverse.cloning.cloner/bin/fr/inria/diverse/cloning/cloner/common/CloningMaterial.class create mode 100644 fr.inria.diverse.cloning.cloner/bin/fr/inria/diverse/cloning/cloner/common/MetamodelTags.class create mode 100644 fr.inria.diverse.cloning.cloner/bin/fr/inria/diverse/cloning/cloner/emfextension/ShareableEObject.class create mode 100644 fr.inria.diverse.cloning.cloner/bin/fr/inria/diverse/cloning/cloner/emfextension/impl/AbstractShareableEObject$ReadonlyContext.class create mode 100644 fr.inria.diverse.cloning.cloner/bin/fr/inria/diverse/cloning/cloner/emfextension/impl/AbstractShareableEObject.class create mode 100644 fr.inria.diverse.cloning.cloner/bin/fr/inria/diverse/cloning/cloner/emfextension/impl/LooseCopier.class create mode 100644 fr.inria.diverse.cloning.cloner/bin/fr/inria/diverse/cloning/cloner/emfextension/impl/LooseResource$LooseContentsEList.class create mode 100644 fr.inria.diverse.cloning.cloner/bin/fr/inria/diverse/cloning/cloner/emfextension/impl/LooseResource.class create mode 100644 fr.inria.diverse.cloning.cloner/bin/fr/inria/diverse/cloning/cloner/impl/ClonerImpl.class create mode 100644 fr.inria.diverse.cloning.cloner/bin/fr/inria/diverse/cloning/cloner/util/Copy$TreeCopier.class create mode 100644 fr.inria.diverse.cloning.cloner/bin/fr/inria/diverse/cloning/cloner/util/Copy.class create mode 100644 fr.inria.diverse.cloning.cloner/bin/fr/inria/diverse/cloning/cloner/util/EcoreHelper$NoSingleRootException.class create mode 100644 fr.inria.diverse.cloning.cloner/bin/fr/inria/diverse/cloning/cloner/util/EcoreHelper.class create mode 100644 fr.inria.diverse.cloning.cloner/bin/fr/inria/diverse/cloning/cloner/util/Log.class create mode 100644 fr.inria.diverse.cloning.cloner/build.properties create mode 100644 fr.inria.diverse.cloning.cloner/src/fr/inria/diverse/cloning/cloner/Cloner.java create mode 100644 fr.inria.diverse.cloning.cloner/src/fr/inria/diverse/cloning/cloner/common/ClassTag.java create mode 100644 fr.inria.diverse.cloning.cloner/src/fr/inria/diverse/cloning/cloner/common/CloningMaterial.java create mode 100644 fr.inria.diverse.cloning.cloner/src/fr/inria/diverse/cloning/cloner/common/MetamodelTags.java create mode 100644 fr.inria.diverse.cloning.cloner/src/fr/inria/diverse/cloning/cloner/emfextension/ShareableEObject.java create mode 100644 fr.inria.diverse.cloning.cloner/src/fr/inria/diverse/cloning/cloner/emfextension/impl/AbstractShareableEObject.java create mode 100644 fr.inria.diverse.cloning.cloner/src/fr/inria/diverse/cloning/cloner/emfextension/impl/LooseCopier.java create mode 100644 fr.inria.diverse.cloning.cloner/src/fr/inria/diverse/cloning/cloner/emfextension/impl/LooseResource.java create mode 100644 fr.inria.diverse.cloning.cloner/src/fr/inria/diverse/cloning/cloner/impl/ClonerImpl.java create mode 100644 fr.inria.diverse.cloning.cloner/src/fr/inria/diverse/cloning/cloner/util/Copy.java create mode 100644 fr.inria.diverse.cloning.cloner/src/fr/inria/diverse/cloning/cloner/util/EcoreHelper.java create mode 100644 fr.inria.diverse.cloning.cloner/src/fr/inria/diverse/cloning/cloner/util/Log.java create mode 100644 fr.inria.diverse.cloning.cloner/trashbin/DeepCloner.java create mode 100644 fr.inria.diverse.cloning.cloner/trashbin/MutClassesOnlyCloner.java create mode 100644 fr.inria.diverse.cloning.cloner/trashbin/WeakMutClassesOnlyCloner.java create mode 100644 fr.inria.diverse.cloning.materialgenerator/.classpath create mode 100644 fr.inria.diverse.cloning.materialgenerator/.project create mode 100644 fr.inria.diverse.cloning.materialgenerator/.settings/org.eclipse.jdt.core.prefs create mode 100644 fr.inria.diverse.cloning.materialgenerator/META-INF/MANIFEST.MF create mode 100644 fr.inria.diverse.cloning.materialgenerator/bin/fr/inria/diverse/cloning/materialgenerator/generators/CloningMaterialClassGenerator.class create mode 100644 fr.inria.diverse.cloning.materialgenerator/bin/fr/inria/diverse/cloning/materialgenerator/generators/Constants.class create mode 100644 fr.inria.diverse.cloning.materialgenerator/bin/fr/inria/diverse/cloning/materialgenerator/generators/EMFImpl2PImpl.class create mode 100644 fr.inria.diverse.cloning.materialgenerator/bin/fr/inria/diverse/cloning/materialgenerator/generators/LightCopierGenerator.class create mode 100644 fr.inria.diverse.cloning.materialgenerator/bin/fr/inria/diverse/cloning/materialgenerator/generators/PImplGenerator.class create mode 100644 fr.inria.diverse.cloning.materialgenerator/bin/fr/inria/diverse/cloning/materialgenerator/generators/TagsGenerator.class create mode 100644 fr.inria.diverse.cloning.materialgenerator/bin/fr/inria/diverse/cloning/materialgenerator/main/Application.class create mode 100644 fr.inria.diverse.cloning.materialgenerator/bin/fr/inria/diverse/cloning/materialgenerator/metrics/CloningMetrics.class create mode 100644 fr.inria.diverse.cloning.materialgenerator/bin/fr/inria/diverse/cloning/materialgenerator/tagger/Tagger.class create mode 100644 fr.inria.diverse.cloning.materialgenerator/bin/fr/inria/diverse/cloning/materialgenerator/tagger/impl/AbstractTagger$PropertiesMutability.class create mode 100644 fr.inria.diverse.cloning.materialgenerator/bin/fr/inria/diverse/cloning/materialgenerator/tagger/impl/AbstractTagger.class create mode 100644 fr.inria.diverse.cloning.materialgenerator/bin/fr/inria/diverse/cloning/materialgenerator/tagger/impl/DeepTagger.class create mode 100644 fr.inria.diverse.cloning.materialgenerator/bin/fr/inria/diverse/cloning/materialgenerator/tagger/impl/MutClassesOnlyTagger$StronglyConnectedComponent.class create mode 100644 fr.inria.diverse.cloning.materialgenerator/bin/fr/inria/diverse/cloning/materialgenerator/tagger/impl/MutClassesOnlyTagger.class create mode 100644 fr.inria.diverse.cloning.materialgenerator/bin/fr/inria/diverse/cloning/materialgenerator/tagger/impl/WeakMutClassesOnlyTagger.class create mode 100644 fr.inria.diverse.cloning.materialgenerator/bin/fr/inria/diverse/cloning/materialgenerator/util/CodeGeneration.class create mode 100644 fr.inria.diverse.cloning.materialgenerator/build.properties create mode 100644 fr.inria.diverse.cloning.materialgenerator/javamodel/javamodel.xmi create mode 100644 fr.inria.diverse.cloning.materialgenerator/plugin.xml create mode 100644 fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.log create mode 100644 fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.core.resources/.projects/.org.eclipse.jdt.core.external.folders/.location create mode 100644 fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.core.resources/.projects/.org.eclipse.jdt.core.external.folders/.markers.snap create mode 100644 fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.core.resources/.projects/.org.eclipse.jdt.core.external.folders/.syncinfo.snap create mode 100644 fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.core.resources/.projects/SomeMetamodel/.location create mode 100644 fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.core.resources/.projects/SomeMetamodel/.markers.snap create mode 100644 fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.core.resources/.projects/SomeMetamodel/.syncinfo.snap create mode 100644 fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.index create mode 100644 fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.version create mode 100644 fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.core.resources/.root/.markers.snap create mode 100644 fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.core.resources/.safetable/org.eclipse.core.resources create mode 100644 fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.core.resources/.snap create mode 100644 fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.acceleo.common.prefs create mode 100644 fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.core.resources.prefs create mode 100644 fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jdt.core.prefs create mode 100644 fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jdt.launching.prefs create mode 100644 fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jdt.ui.prefs create mode 100644 fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.pde.core.prefs create mode 100644 fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.jdt.core/.org.eclipse.jdt.core.external.folders/.project create mode 100644 fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.jdt.core/1974333096.index create mode 100644 fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.jdt.core/2369791033.index create mode 100644 fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.jdt.core/241682911.index create mode 100644 fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.jdt.core/3765020915.index create mode 100644 fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.jdt.core/externalLibsTimeStamps create mode 100644 fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.jdt.core/javaLikeNames.txt create mode 100644 fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.jdt.core/savedIndexNames.txt create mode 100644 fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.jdt.core/variablesAndContainers.dat create mode 100644 fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.jdt.launching/.install.xml create mode 100644 fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.jdt.launching/libraryInfos.xml create mode 100644 fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.jdt.ui/QualifiedTypeNameHistory.xml create mode 100644 fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.pde.core/.cache/clean-cache.properties create mode 100644 fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.pde.core/.extensions/.contributions.1 create mode 100644 fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.pde.core/.extensions/.contributors.1 create mode 100644 fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.pde.core/.extensions/.extraData.1 create mode 100644 fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.pde.core/.extensions/.mainData.1 create mode 100644 fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.pde.core/.extensions/.manager/.fileTable.7 create mode 100644 fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.pde.core/.extensions/.manager/.fileTable.8 create mode 100644 fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.pde.core/.extensions/.manager/.fileTableLock create mode 100644 fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.pde.core/.extensions/.namespaces.1 create mode 100644 fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.pde.core/.extensions/.orphans.1 create mode 100644 fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.pde.core/.extensions/.table.1 create mode 100644 fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.pde.core/.local_targets/1394010976306.target create mode 100644 fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.pde.core/31810913137.workspace/.lazy create mode 100644 fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.pde.core/31810913137.workspace/.pluginInfo create mode 100644 fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.pde.core/31810913137.workspace/.state create mode 100644 fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.pde.core/517150724739.target/.lazy create mode 100644 fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.pde.core/517150724739.target/.pluginInfo create mode 100644 fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.pde.core/517150724739.target/.state create mode 100644 fr.inria.diverse.cloning.materialgenerator/runtime-data/.metadata/.plugins/org.eclipse.wst.sse.core/task-tags.properties create mode 100644 fr.inria.diverse.cloning.materialgenerator/src/fr/inria/diverse/cloning/materialgenerator/generators/CloningMaterialClassGenerator.java create mode 100644 fr.inria.diverse.cloning.materialgenerator/src/fr/inria/diverse/cloning/materialgenerator/generators/Constants.java create mode 100644 fr.inria.diverse.cloning.materialgenerator/src/fr/inria/diverse/cloning/materialgenerator/generators/EMFImpl2PImpl.java create mode 100644 fr.inria.diverse.cloning.materialgenerator/src/fr/inria/diverse/cloning/materialgenerator/generators/LightCopierGenerator.java create mode 100644 fr.inria.diverse.cloning.materialgenerator/src/fr/inria/diverse/cloning/materialgenerator/generators/PImplGenerator.java create mode 100644 fr.inria.diverse.cloning.materialgenerator/src/fr/inria/diverse/cloning/materialgenerator/generators/TagsGenerator.java create mode 100644 fr.inria.diverse.cloning.materialgenerator/src/fr/inria/diverse/cloning/materialgenerator/main/Application.java create mode 100644 fr.inria.diverse.cloning.materialgenerator/src/fr/inria/diverse/cloning/materialgenerator/metrics/CloningMetrics.java create mode 100644 fr.inria.diverse.cloning.materialgenerator/src/fr/inria/diverse/cloning/materialgenerator/tagger/Tagger.java create mode 100644 fr.inria.diverse.cloning.materialgenerator/src/fr/inria/diverse/cloning/materialgenerator/tagger/impl/AbstractTagger.java create mode 100644 fr.inria.diverse.cloning.materialgenerator/src/fr/inria/diverse/cloning/materialgenerator/tagger/impl/DeepTagger.java create mode 100644 fr.inria.diverse.cloning.materialgenerator/src/fr/inria/diverse/cloning/materialgenerator/tagger/impl/MutClassesOnlyTagger.java create mode 100644 fr.inria.diverse.cloning.materialgenerator/src/fr/inria/diverse/cloning/materialgenerator/tagger/impl/WeakMutClassesOnlyTagger.java create mode 100644 fr.inria.diverse.cloning.materialgenerator/src/fr/inria/diverse/cloning/materialgenerator/util/CodeGeneration.java create mode 100644 notes-gains-weird~ create mode 100644 process-data.R create mode 100644 process-data.R~ diff --git a/BenchmarkMetamodelsGenerator/tmp/lapin.ecore b/BenchmarkMetamodelsGenerator/tmp/lapin.ecore new file mode 100644 index 0000000..9d11c11 --- /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 0000000..794c5e0 --- /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 0000000..630a80f --- /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 0000000..29e2357 --- /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 0000000..3bc2475 --- /dev/null +++ b/SomeManipulations/.classpath @@ -0,0 +1,7 @@ + + + + + + + diff --git a/SomeManipulations/.project b/SomeManipulations/.project new file mode 100644 index 0000000..1ac5296 --- /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 0000000..063e89d --- /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 GIT binary patch literal 1382 zcmeHHO>fgc5PfUXCNU{#Lt4shIW_b^4sdEwC8+4h6eOcch||VdHCye6S+8659~J&U zC6M5d8$Sv$Zh{KPNI~L)#KGg;**9-AGf(s7>xWMO9^!5j5kubyWrxqnq!V{`=+cSs zvWW)6>WMfNLoMv_@WtpvW`SY(v9c=cG29s3KVoR?yD?$g4Bcz&Gw+>m;U8s;Zlz zm$*#mqj?|Z&PJH1f?*@6lm0Hry7JTe;7whc7B(2ue<1Dp0sbF7$#SvLGsLMYeI^f7 zHPikt%j!X;1>6H|CE9C1M5iSzlWo%N5qTN?)?!}kre7?eT$yOL(1*>E`GZfa) dqgxxd(VsJH|HQCf!?1b95K$b%9kLNNzX6(ew?hB` literal 0 HcmV?d00001 diff --git a/SomeManipulations/bin/main/MainTestChangeResource.class b/SomeManipulations/bin/main/MainTestChangeResource.class new file mode 100644 index 0000000000000000000000000000000000000000..ed41d47f8631cec239909c2da28cdb90225a5774 GIT binary patch literal 1325 zcmeHHO=}cE5Pdyvvb&SjO;)oiL1+(>)q{J8CnJI`$!Yw+4FU1gJ6j|jrn|?Uo+JJwgtLp*d6bkZ(&75 zx1M`9$!2d16>>^4btc!D3ffs|dHLDf!ewP4@5{KIY-*D`A5NbOXUI@chWRsTN#;}r znX5w1-UUzJL+Rg%8~>CppPumFX!ftdIOvN+eks zlnwHASy6bcCK;1FI^SQ9|0-;BF18pgT z0VI&%kQ>j!Ga$xE+A58a>_~7x96a{!&U`x_fAe|2|NQ(F0Pexf5)>FTLm^eWOQw(3 zbpoxV8kL~PVB=Vvh;|^Y;`TODGz+l?t7VeNqm z##|wfFm^l=mQOx9gQxMB7964zAte|5>v8zjp|aDGu2!H`0FH$6#~2>@Gq&WY@!yH; z5q-`WurGY44H0OE_&ueML0>BsCxi@jBK`8Piu=E9m$Nz zRiO-5YOn@Z8Emz@b3N=iLyEeW=w;oL3ZKQ{08Kxk3WJ8HeGweasWYD}y4TV&*!I$- zd5>f_nWy#EtF&#(u+0kZa!7AF=d;##xzBQvb7A{ss^`vQ86syw|GVY%r~Bu+g+aBa zW8>q#OxmD%;rwwoX&<-+bkLxq3P6FL)?l4%iAMKnmeIZX1Yx15Pc45lPrO>ffgbpWKInn$e}$^gaj2mEgw>@->6y2A>E#odw9*aD>0P*Rds|RJK^4rOOG9!(Wsno) z<@7u_`V~t5K5qECvR#!0>rSNE;QO1&bCg+Q%6Qg-WH_0SJXX0Lv(oCwtBxkg$e>J+ zAIeDKv>N41@_eye3&LJ3#Fn6m8*MD%rodW1y{z;wIBgELV<&V{ZRmAbjL7Xpr2^g5 zW-8yGE1z%H!=d&9_tGmnZ=1U+ItAAI@2he(u`a~@zv!&$d;hO1CXftm=`z~Yu@t?k zC;m9r5f8v`nSTjDjlY(#%(lU+E#4J8C!f)L*G)d6{dI=vu#Fh7e}!%P0)E9_ui`9^M^dHC)-kI)`i)&w;H?MXNVa$$TQ3X z&xGfb55eKjI4ld&7=)%vsed@`P?&U#`Y=`2NHhBFO?yPduQ%)8hr~^J%Wm>2`bRB4 zfCLg8a^s^AvuRL43J@-E;jnMl-ZyV%?5Fws<^4whTew?CB+$#0wu60!11iFPX@brT z?Yb;?g$~-;qK=xt>ajXi1EcKG;Kk^e(jc(>NLw8q3ta2pKNP6#x-r$!6lh;@pLy?m z11ln0d+FWCOwKbZ5{>z~k`E>v5L2ClcTgc}0gesblTVer}>?Nq*MC)(2UG8>UU zsQMP@Bra9vaCQ!}&02V)3xRvdZ~eT(Uad$1>;2dBayGCog!u!%&cDt7K46b7<^zFv z=t`f`o~|yq_p5QVS-Au~@Z8}s21NX|gk{D$ueNzt@H_s1#;Z>J4y{j9PMfjf04rE! iY+bT&6CGYPaSLlRg$F+aq z5*&I!;zJ=`vciPap)hG6p&jyKJMW+0^Y7<;{r2G#0NjNeRR|b#6CrhPKw^Z>4>ILt zs<3a8)Hvy-(QZepS!9gEDpVM(9f(8GQ$kOBJL3b4J%iN;QcM4k!G+GPT?UoDnUHRs zLGxJmskO$|;3BKEpIb9l^EU}PK0zK+B&kFmiEDc7{H-%8bNoIJ>(Qp9Jgh(Z>`a1# z!4t%kYvd_ro~Od``8#j%haE06O3;ghl2ZSn-Ja0#43oWB87=knw>unC0e{wFTg2Yj z8P}WC_o9#%W21GJwWy4>=lCUDf;3+?&qEO%k07%Ot}s9danqV~94 zZvAp<1zcXBGntL?%uMp89N}RkrtZwboMJPl$Si~!Tx!4yTxPJ|iH@0L=q;V=t(;k! zk<|DsOU7tN`H^DKicBoj?&63o7At;VItI6+^3=9Pw3TZ!Xm?&M3todZ3%>jTbuCBC zIo5~=&arkP&;A{(F$jkRHEqirMBP%i|D7C?a1-d7r{4#FfJQ5@O0r6`d$h{v9e#w` y%U1Xv8lMZDCdpifzQ7vE#$tR0S~RP}Rk*hB(EY{3`VtQtg@=Ib7;KOX;QDtJDff>6 literal 0 HcmV?d00001 diff --git a/SomeManipulations/bin/main/MainTestNullResource.class b/SomeManipulations/bin/main/MainTestNullResource.class new file mode 100644 index 0000000000000000000000000000000000000000..46366e012e0e80888407f7f0bcf3260f0b715150 GIT binary patch literal 1107 zcmdT@yKWOf6g^{{*xnc%3=UW{LluVt7f=y|giul~0pTbTq8hKS!bI~}W@jViYiNNV zKmrL0cl;0?;;v&9kTz0ikSONN>)bPU?&I5!PhSAs!?1;hz|bn~#!ngcsfc@}F)yg_ zWyq+7roj4aUh$JjqEOE2C%ZX}#rnUz6lyR4&Rl zWhD``ni>{)e6hE7E<{Vv#^o+na7AD+O3zX_i9x%=?JC8+R6E)$?UcfP<$^#z^_emU zOP7|1&G=du0=Lq0OKO|TrMeW@7`>`{tBnnT?|)G;^#T1qQz4K{7M-`Ns~8XKn(}Uy zAlwFbA2%`3;MEFN8C$%&&!>Xt1VV$vi%EDFjdDp=;Twf~O V`9on)qcB(~G}uny24e#^e*)}QSKYx15Pe?KCfNp30uAM6P7NHILpf1Y399t8e27$)5aQr$M#a_IUcBB){YTJ0 zfCLg8a^puKX49a8Sfp@89Cp?pZ=U7%#`E>t$Ik$EaJz{}pl_76!zUaLsR%EqaHUVF zXrdvoexgp*FjMw;_-t}QX%JX_sI3lr0#^oij|3X~Zc0tG1-h5mk@wEGuqL9{&%K*u zvv-CHIVG7olj}?c?X0x?`PuuzWo02B$he(sX_Gr2F18D2$WTy*`7>!r=2Qlmt3uAs zgQp*<^zY}5e^%l^rNQ|#X}8#{xg4HSXKh(&Ye^pusU&-{~=lB^8M2KlzE zD7;paj7c6Xch=+OVEfC#MoYnBv~ab96E8TCLxLw^qS`9xGl1PpKYS3gT&#rgcl3Kur8!UMwhxXMdD9 zn-+^83o|<(@4cD%`hNQWaDgKe2BA8WDssDQ`bid;C=#5Be3tH1Mq~HRpM*h5C|{~b zrB{SPt34nTuj64TP=IBlgfgM-sVKb7W`3CTr9TY`8(tj9=|Cn*$IE0feN<1n`;Tac z33Y=ktg*Eh4eYBNS*W4T84dQB%wX@l!?~aHP^X`0ykcv`Q_DrmsPL;p~r8XZGv+;}gI+jw}=y?3hdC4bm*MP-1A#_!IXcuBP7IXeL6MMp~?_|hOx=zNzK@ql#GAaxWUn+5%#Uqgp_$U$#Ek6l)G~}r?_3vd#Kgc;l&0iY! z8LV*<=xj2v(L~F_`kw)U=eZWKi#9gMJjrO5j-Ssb6YoBiN(VX>JnmPq$xt^tbjL|| zZh#K9v1?(6q5V&Xi#_a<`=fzGinzT6IA5HoQce42Stm%cG!!?|tYsUAGlRo1Xd?PW zpg<@328tF{9%V+keEN>+OD;PUjSOn2QFIp%DA%cCSX(w<wr(*>Vw5^a{45wiV&Dhx zqY&p5r3=fQ?_S^Yp8fsv`32wt#|}yiJQgbP2Wd9$IjAtWMa{5sr4nVX8Oq($Aw%Ux zPb5bfu7@gC80vvabWq{`NR&5C(Ya|SOc(7ir`Gtr^Rrc)OU zG#zX(G#)FmQl_Kufu*I;Ruiu&I&fF3? zcChDQm!b8~h=+X~ko}XTL}&_5{`ZW*M(X& literal 0 HcmV?d00001 diff --git a/SomeManipulations/bin/util/HeapDump.class b/SomeManipulations/bin/util/HeapDump.class new file mode 100644 index 0000000000000000000000000000000000000000..63983bfd438cc31e61e99ab628760c0cfa34c6b3 GIT binary patch literal 2535 zcmZ`)ZBr9x6g`^+Hi=8cC}1%lYPDpEiM3XR5L8~2N)o7{QLrst!UC(wZrp4T{2~1d z&h%5YGn#3qGE+ZvrZfFJ{m^MUJNzDfU|8>g?9%5%pcq!5rPm2{i6qaT#XgNkZ@ALhoV}q0K-mN zsDn5qK|R=W;y}CE2cpX`hHzTOFrl>hoGEG5s)7-mksxncc1|m^kMoDXiFpvZQK=yM zWPH>y#>RL;xPVa^A9I}TO4F8AA_@gDs3dcFWr?Fbb|9%h8CP%-2??Ps-O1|CwzVPQ z<{^+C9*FjWwDrvrHI-~+NQKDdB?Vy|2@~FBg~GhTo_BX+BA8qHBB-mB@DLf+^d<6QP$^ni+aT|ERHaR zDWSd_gyXHUylq=gh2~PRf{a@dj<=JvqN%t|qog-R94Hw(#44>y=qi@9XV3UtW^oUt zon2C}KARCykH`P<(Z{dvQqO%Jr&fLb+TVFVcsQGfqZJ=#wTkN| zj>D3IFK~|W_tWpPjEl5OqoNmy%4 z^?gaW^h|1+Qb>6SYc55PrEx$H;e#@*HUSU2{_m?q@&oJcZVZ$)gDbLs)T`lU$ygx> zYN99Ulq<;9MXS;1sPxd>Y1S{$1tDo?yR|IEyq{zK!!P+$n-0Buu+^@ic>30uFJb&Ov33 z(-@%l9cG*0+dMw!HO=4eVu4Q?MvImk{#jabv>btdPey85#?26k + + + + + + + diff --git a/SomeManipulations/file/tmp/deepClone/submodel2.xmi b/SomeManipulations/file/tmp/deepClone/submodel2.xmi new file mode 100644 index 0000000..2e3dc2c --- /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 0000000..8aed717 --- /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 0000000..2e3dc2c --- /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 0000000..2c40cc7 --- /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 0000000..2e3dc2c --- /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 0000000..52f15b8 --- /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 0000000..2e3dc2c --- /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 0000000..52f15b8 --- /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 0000000..2e3dc2c --- /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 0000000..52f15b8 --- /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 0000000..2e3dc2c --- /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 0000000..52f15b8 --- /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 0000000..2e3dc2c --- /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 0000000..52f15b8 --- /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 0000000..2e3dc2c --- /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 0000000..d5c652b --- /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 0000000..b09da28 --- /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 0000000..663d1d6 --- /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 0000000..f6a6fb5 --- /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 0000000..d0cad2f --- /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 0000000..690f056 --- /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 0000000..6643b18 --- /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 0000000..0679934 --- /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 0000000..5e017a6 --- /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 0000000..42596e0 --- /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 0000000..758570c --- /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 0000000..81dba7e --- /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 0000000..ab380fd --- /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 0000000..d6d46bd --- /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 0000000..418579e --- /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 0000000..3bc2475 --- /dev/null +++ b/SomeMetamodel/.classpath @@ -0,0 +1,7 @@ + + + + + + + diff --git a/SomeMetamodel/.project b/SomeMetamodel/.project new file mode 100644 index 0000000..e93fbba --- /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 0000000..b96e5eb --- /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 0000000..7341ab1 --- /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 0000000..68061bc --- /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 GIT binary patch literal 618 zcma))%T59@6oyX`8NmxEc!#A4Z0y2~32MS+T#>jSF>K3l7)v@+(<#JfbKwK{P{uO_ zZ@|LEB0PV)=xu0y*El*|>h`;GbxE~sH`LXLrw&y<>C@<2xs zg`8TcxZjhBrOWbt8OFj+4Kld?4|B7W)o!}IwUMgxT*Sbs>ORHqCLEk3*2YFhz2V0P?Jr4z^+pyzw7xtVMq2zQQ4xE;uLi8cg V88{;D7*5>zDV)(6gLCIpKLMRjqQ(FK literal 0 HcmV?d00001 diff --git a/SomeMetamodel/bin/somemetamodel/B.class b/SomeMetamodel/bin/somemetamodel/B.class new file mode 100644 index 0000000000000000000000000000000000000000..df70a2559d8e467b5db4ad2c62ac1b615790a88c GIT binary patch literal 260 zcmXv}%WlFj5FFEhTWEp)MRKXta^@0=N?hQ8)N5tJh8p=HIRW+CIPd{{RMmA5huzuH zj8-$(zw-sa46hPBfk_h_Icl{FJF=>j$ONVbebUNmzgO$+fvQ$wATY0^GCmrucIHH} zAywJn4Vw~DROD*;JPyjU`C?mWwv#g{-o89q9> zWR_%RSzab_xCzHt(WkK_Feu+rL=MGno<29qIJm?k9|BJpb~wUwhc6hjgWK}%VfqjF CJvt2l literal 0 HcmV?d00001 diff --git a/SomeMetamodel/bin/somemetamodel/C.class b/SomeMetamodel/bin/somemetamodel/C.class new file mode 100644 index 0000000000000000000000000000000000000000..e1e5223043ff2b7ff4d07ebfb9089455877b47be GIT binary patch literal 217 zcmX|*y9&ZU5Jm6$T8)Z+M$)*2wN+3^Wf2gpWQ~)!vJcoq(OC4ij%sLuSpcz zSrwMrBrnL6bZ^Mk%2|=0r6+mRwEk5v3@d8(@^LT>-8jhtsQ;iBXUUEs%H7o$v{9NE e2I->p2%p12n10ai1Urr)TFVilKp4g?$K(rH`!*5) literal 0 HcmV?d00001 diff --git a/SomeMetamodel/bin/somemetamodel/D.class b/SomeMetamodel/bin/somemetamodel/D.class new file mode 100644 index 0000000000000000000000000000000000000000..ba2ed8a49bddfad3c51316cedd2f07ebf53c66fd GIT binary patch literal 241 zcmZXP!4APd5QhJulp-WN1Q&a76bA`T5(kOy0f0B-6ta<%iK?sgqE(yc&Wczz`Irp&mz|r`RO%8-;Z!a$4 ijnYhLuBMfrHzL%1HT*j@ZylnA%D#=rCxlLwqx%MUu|DJg literal 0 HcmV?d00001 diff --git a/SomeMetamodel/bin/somemetamodel/E.class b/SomeMetamodel/bin/somemetamodel/E.class new file mode 100644 index 0000000000000000000000000000000000000000..59c42d650e29f8c6067a9e65b7a0891f83e33dcc GIT binary patch literal 166 zcmXAjI}XAy7=xVx4Y0sT_y=ajvNH4pY3o8z9#UE=&c?t2I20lkgYCuo?9cc025`hi zqfpol(bID@K6Z3cX)G1?cQYArCS2vx+}VyArNXICVnebEv|cx`>G(ykR9&^-k)hLYnNs?aTSG8L+@pXltkLTv_~3<=Th_WHH1)?_GmR>!(wh~JXl z*!1og)+*HjLsX;GlGsE>L7L%mQN^?;;c2&tNFj?YQjmHK7nSONQb>SdI|T)ChD^sC zi|))G3b)UPmSD(r9GzPO?wZmLE*0Gs+!Hl&T#8YnHwAn>jIYmmEsWRZd?So+%y}yE za{MOo1w(iXt$pD7GdJitD{2z_M-s`NGjny(GG!5p3t~aHujGi(P*C4!t=fA%1`+~>K(Z^I!3TVdzu`90_}Ok2zPx(PG6oZiF+g|aUTah9^%Ny5{`X5 M!72IBRQsOizX(XfhX4Qo literal 0 HcmV?d00001 diff --git a/SomeMetamodel/bin/somemetamodel/SomemetamodelPackage$Literals.class b/SomeMetamodel/bin/somemetamodel/SomemetamodelPackage$Literals.class new file mode 100644 index 0000000000000000000000000000000000000000..98a7ed6dffcf3e0e4f7ea3363b5fd53b8a181c1d GIT binary patch literal 1430 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 D_3d&2 literal 0 HcmV?d00001 diff --git a/SomeMetamodel/bin/somemetamodel/impl/BImpl.class b/SomeMetamodel/bin/somemetamodel/impl/BImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..705f6fcfc2142d7a6431459ddf63e011c87a3ae6 GIT binary patch literal 3142 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 literal 0 HcmV?d00001 diff --git a/SomeMetamodel/bin/somemetamodel/impl/DImpl.class b/SomeMetamodel/bin/somemetamodel/impl/DImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..4ce6233d4c138166ca03de2b3a2a8e80e3225b3f GIT binary patch literal 3916 zcmbW3?{gE!8OOhCoh<)2NMaj38=I>1>$-u}9j~ z-tIo1=Xt*S?0xm$-`xUm2yZ9QB(SIAm1S90?Xp*trL0q4E@e;T_?>_uFuCAo9oKj4 zY|&Yjenn;rCC_!-Mcqn2E6WS=a#gw&$8&?lbnKAs}pl$EG$9kBZ#U%5mk)N;xn6bIOW9 z$COvFOLI19`8ymms!L8qVDAJ*Nb>52RZQ$b5B;Uj{r`V|db=pA;{u%| z*=%8)#s&77NT8)1k7IuV1N?mt+#v8Ko$y1z2ipr{5L_hvi3WIOIQsl4Bcc8p;>f$uRCTT^wPr6#_Q<5a9&EIxD` z=XsD^d5Li}%9TZ)?57{vRTc-GqEK}L2OG8sO2hVAV{tJmI__PKaUY&*M+#FWrZFS1 zQ|4S}^^j8e241KO!1i3_;M<<$0^U0TssUqf}`4Ju!BDL!sKlv8`e zuwudo&p|V<0&Pz{nO9HNOswLPK-;Xh;uqveM_s6G`aR&F+M4Ge=ep9@`jV9d-V}IZ z^VPK76zx zX)9#UvJC%xcC-x5$C=dcg9L9-?UFD?UE52NzIkh-sCC zJJ_WfrqGIaSecu6A&%+v9dxAYL#H`pr8Da|JDs_MBqyB{_y~K0Sab&YHDYNM4CYqJ zGsx>C1qf7Vxk}Gh==myoa0&a^CUKd0UPA`2<0-b!;-`%J6^!Ezdh{j>&s%s2Z{roV zHh!ifGZ1)Ci%dR@OdD4Qkx?qx0ps6DCNS3VH9EWLK5JMQgpV0IgHy)(KIS)QwEoxG z7>*Gg4kn(u9-;f!t#seW241S?wx0?CevU4@L&?2MuYO6d-o*&s!*h6FQ(J+_8ub|F zwPJ~ZAL2(^&tsZD7OFVbwMV_nvaE*OZ*U96oea76*0IrPi3r<|>ufu9v_2r)ugLc6 z2urfYlB}^LYb?nKi-D#tRU}xVLzH(y6stD~;r=K}-&M3w74~(06|P&oefu^b>qOmJ z*`JW;Q@-(kMjd?47w{VqGOI>rX&$9|3yVA*ssLGV*sDjW#UK<5eu#F3kCenyAzEJ) z&B`!|>nPo@dNUhv>mm)Hz9iJ|(T7`vy3I8HAtJa`4JuWGN?{qV5lRV81xX!HULYZf z%O?tWASCJ8L?Qx=4OF*Md_{^s@reAH#o;eJ+<(;+LCG7aQ4E9>cWtX{gI82&yA;|U z3~l#svaOGN+_)CIX7z61@-;pT&T62RzY*Z?H2jZ<;lY~W!HD5FVqGnQwqEBJO+36; P*sAMl7Z31T&8`0f<^p4F literal 0 HcmV?d00001 diff --git a/SomeMetamodel/bin/somemetamodel/impl/EImpl.class b/SomeMetamodel/bin/somemetamodel/impl/EImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..edaabf21dfcfa8a54bf83265d942eaee986ae965 GIT binary patch literal 651 zcmah`T`vPc6g^X`t7|Fhn+hW0Bk4YPBodKI$OcKp`*eHN)b6az4)L?_BJtn{_)+3^ zRp<*3J7@0fxo6I~^ZxPr24DwEE(!v(S(;EnRwikS;y@+0aZo?z)rBK)a%BRgjgmo2 z-IK{Eh~iW$-OiCrK*<$7SkjqF^;h#jGqXlUws9>D$!1LTvu1}P>!K)7?!T=rP~1~m z*?ob5jm=8|=a6l97{IU(7em|;Dov+%Nt4V)S506dOd}azN_NF{@6fT=DifFw`!D#3 zvn$|J!%C~7!&qj_UEbIXQ_~J8iq$PA<0!mO4F&a_v0Fj~Q!XY2w)<5Zzejd1qZ`?# zwNP0yGR}NVV@5!5wxz%I1-wRjXCgXM-CSNi_F6~YOZIxKHJRK8WiA#4R{!@PF!b#L zE8vmxH^^^YfYTi&SEc;r*&XBH)(gC+{I}1m$24G(sa1^d&i^7|6lJa)jA6VdP-E;0 kIM0}PWGpZjDCTGDzj~csZvnG8YYy{_9`h<#K($!<1UjFc(f|Me literal 0 HcmV?d00001 diff --git a/SomeMetamodel/bin/somemetamodel/impl/SomemetamodelFactoryImpl.class b/SomeMetamodel/bin/somemetamodel/impl/SomemetamodelFactoryImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..beca39b81701b7b117c961f8129b7270b18d0612 GIT binary patch literal 3259 zcma);Yj+bx7{~upN;gRt(9%-wgi`4Zh+G6EAf{=6+6&m$Vim+~I!zZgo3Pm+7Znw} z;0-U|!dI0S^kC0X-slTIl*j)}woTe3#hf#1U; zv65a3EYN7XwlA>1yJz_M;&I9+scIO_*kHh{t5E8qmA-CeWapU7*ahFaZDJ!f34{hm z$0rh_$&^6PaBW+vmc~PPQJ{6s_wy%Xu@y=-Q;*FiTG1xZoRR*L3j~gJ4_~uxS~16R zGqG{sv)xR*?v8=u;$gI7n}MwY-L-YgJH?Fc#!|}Z7xh@#wOydMjxp5>;t_7L)5I?9 z7Fg%xG6HRtx?Y&RCewbrXEFkTsENJk5NJB3qVzf!boWde=oHvowk~xmE%Uyea|JdH z+pZifW~Ze$VNE+ypk+9hwwy`Jv(-HKv)!MQwX>n~|0O|KmiKI{aP+b&Oq31dK67Bi z%Ii%dScfRH$Dgwc0tZ)Zvu5Ix)s*(6<L4C1?E)~ui>PCQBo|yfK(lz1Vb%w%EW0fa)D%jEy;c@ z`G$!E_&$(K){;zW$pI57oL!crUe&t~Xvy;?2Jz;yB#&LSWGZf8n72haqXr#EW-KS+ zWr|tp`pZ!@Fe=bqmMfjB{-W*7NH2toJcJW-GMZMQh;~IVf-#lAr=Ssi`hA_rGrA`Ea-D@YH0a~zi#U)j`ofGN~k6=cf z0$~YkuXO~p5W{h;Hlx49ur*`44nqr(k*m!}mKd&Pr0X!W5E(2CwQLzEF$$W&IMlR7 z3z2cVHX~JH+|msCtR_PX@%*>| z2WuD8WmtrImL~%;@5wapExKsiSkd+Etemt9HZS6Y%M`TKrOn%LOGV0-*RUGh$2TUv z#diW>SuUJw-qA}s3q;0qMK3MS+NuofTH(El4~0YOqzRaVt}8vA;<8}iC+7LuPT>hz zD(yVsycpTm^UEfJFbsq^3v>1m4IBZTj}d8k;VD`g@C@sRdjH0T-ua=&*wXt1I~F0P z7O-btOKxT{-$&X@T-8Aiut!x6a`&*(?nMj#ZAB;AD6tb=*iVTq++`!0IP2!Djr;eY zm!m#5er8P=*k=&VN*btjluxDB`rZW`_>F@GyF; zx*AQh@q?4J5SqFh)sJ%)vB0E$8l+5$EMkV?m>uq$=d98(V_Z32L5~FV5T!DhBS)xG zSIx7@yI#$^Ox~3`JO^3LV?nIux#Z=md9&nY>hNyB(>#{VYF>f7Vl^*M-i;zG73dU-PMwwo|WTf)wD;NrsCg#?{)tJ9`UKZV4CqGer^i?2RWn{iU0rr literal 0 HcmV?d00001 diff --git a/SomeMetamodel/bin/somemetamodel/impl/SomemetamodelPackageImpl.class b/SomeMetamodel/bin/somemetamodel/impl/SomemetamodelPackageImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..81d68692e4853feea37535e81f188ae0180e9c1d GIT binary patch literal 6855 zcmbtZ33wFM9sm8aNoJA^h?|I|jR+V*vJe&!Q3$9Z2@(wv6Xf#1O)^O~B%83i0fHCa zD0sIhR;#VHUbO|pXtcFhdswBdZMC(Bwzam}+uqe$?eERZ?#?DN!S8FnZ|A*v|Kt7d z|9g|?-+%IH0LRNj4LO3DiN0R5*Gxuw``XQ(aJ09-C*0y*S{Z5E80j<{2+)u#n9&#S z44Z8|(f))PHhVib?~9u@VSN^IzF=B5cQ3{QEmB|G6GDtKBO0SIvuU8W)r_x-wDy>SU}Ilfq-S*`9#!woV*X-_jgF5BO1hHC{zc(%mih%K z#bgb~jBS=>k+x)Ce9*wLm_o_ThNhNPHBGhkg0jXecG+%n$f^qwz%&CN!Eu5UDjK^Z zn

SahVFqvSzb0nn)_c zE&{jFGj^@?vxyVUY0~NdMheg*0=$a&l0|X@aR<(PnNknPkoR(3F_m!18qb*vOr99GS6SG2v|jA>~0m(oVD>(z1# zJxj?|Sgqmgk##XGkh4QLi&E*fW>ln)O~XVLtTV74K~|bJt2#M?)b_>bx@4jd%dxHy zXQ_wad;=R4?j)5TcJ=bWKVRYVA!swuuJH3a;-iftMO z1*K#0HENOiM4*9EjbX6^eki78;F~%!_z(XYU}ImWq}w-Mtj2bjVzDc>=JC( za4Cz*$jwF}tIBm5gSVo=BSltcwh)t<>(0Salm}>~~6c zG?%k-!0DieZC$BOtCDoLf!lDqpqR|+9Y8}Yk&MvsJSKR!%(0-G$sGnhi8}>`T}4u7 zpsC6)J`S)WQAzMA19#&d2E9YtS&L)x%9KFj>dY8DFreghBS zL0UawCYvI?)bl8JC34OwHt&ZGd|u%eDcr=$xY-fis(5_Cz!%lJZmpl)+@N6}4{BL^ zg==&?%JW~1B6!Te5FV#zRrO3+sQoYsx~idVFxP@3=KA&PKZKEo4GdtjlH(}@JCM}z zWeV1+7QSNOAf6G7w*+%p{{>&+(n!9CIZN7TN7Rh_qPUo3%AKRsXf+!eTx+&1sJZ>; ztAAz-rRcK;uC#6Nbptmj8+?;CXj7nX8Mw*@y>rQ<`jPf4mpXqgx zWMtJ~zsWPupQu=jIkuc^36=bYdH-?&L5`38kMZvMZh@C}NL5K4=`8@L|V zDck+iz`vADbX5tL4kk?2IR{Fm;lRV+R*a3ikMMFe?+s$y#r7)4O0 zOCAa8NFbVl1j9!PxDe5#XcTh2F5?KRSI9>gGC_`{neFn}Y$o~!;;J?;@v2!qfx`Z4 zQH4|FJOdQASWC;I>OOf)RwHpjO5M0;D=#o08)7jtZh1$way@mI!BiR`z+WD8Z?E%qY7U-(?7@W0`~4_<3bO8T)E$JJkxQKwY?(#*43;~%_WS+F z-;dJ|VtJ#&In%*8%fYeVEu5BvIBP{{2y15!;hb4RIG6MDIKP1N2{>vT806QkyRn9Ol1#~J9yNt`c6oc0+&EjHtHjw?8}U<=OU zsqq57w_}ip{%yn@#3qhgcuc&K^Bp|s?ZTxjx7+b?T!GuUdMC^9J%rqcop_MYhdAzK zf+}ZEp=^uEJ8D_H9Zi&JBW=C|A@rb^fe<5BDYTN(Wg7b4Lz%|NQVRJbrknR54PHH(kUTmDp`O zIsBM6k6+1-=SQUZIA0c^Q%>Yp zg@wGpFT&-r7&~Q&%MQC7JE-bO?R6S}pLuM9u#W{<=^zhNtT`!z%n1eW8^Y(T=R<6@ zLwF?9s}ACfMx{hqaBpybAV75wtO?N_Pw@Ao1ivJK+~8iW=klkZPg~Hh68bd>ej^1{ zunhD$LZ9dFQ1Cn62rm-&eF?rKfgBI!Kb$#?R~Q(d^h->i{txgj>VLNEZ@y$NuL)>PO+$MQU*H| z8j^hK^<1&&Bq7|AA!C;Vm{lx=#bTt0=m{CWCLJ#_8K=>8O^lZ_880gtFD)pRRhT4a zGiKKEOtTJ^9IK=iCrTR@a$F+qj2)9-J3G)Ko&2iUj&r07-4aDiy0J+%Vu0_1(!)6F z#f=ifEz*bGe7{5bc_rS2MR dCI){x8*+q6$Ny6mO9@Aw$oUy_lN^;_@ISbjkdOcX literal 0 HcmV?d00001 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 GIT binary patch literal 2585 zcmb7GYg5xe6g>-tLRsF3PXwi43rcv1A|Toq4=o_p;fr4kVSzAd!lbDV|4L^RXZ+v~ z@JBh`O^ZUhDYl(tlg*xU?%n%He*OOO6Tln_Q8Y13mz<&~3QsRO`@+)7o@r@?i&Lq6 z{lpXQs&06Wdm5jKBEm3!6{_&b^o%2hR`19x#ivOpe--4i&=O&nP22QV80Hd|?x7|O%RDIwO%x9_!zmUWTeBU{JUG>=+p!eGAZ|o) zonfl69pt!)TMS)>D|An!s(cK|#Q#cD2%NoRVR#I^0q;}i&ZQO3r5kc?gyY@?L(_i^ z4Qi&(H8Tp$OhcOE91kvNWCha8VCXl6q-v*(&Qg=VfH%~?)`{x1n~ zp_)0;?AR9vdfDl9=$DMzFww_ABu(Ip*<1p(smMiO6vDV?cqBu~H&dIW$mH ztno@#juNrKF@(Dcgv@&-BF{03I76)9lwCutnzF%-)M@Qgl7^wZU>@4KS9WRnPN3>* z-wu^Nzg!bPbuU|?EbGqMhUJt@`*2fuN6tP2->_}rW-Pr_5+#gK44df%#d>;V+or2d zI-+Q!`F6TmKok9e*u>;FI(-NKLU&E*mUI3SYP-myhweFHRhDHMB}?1H zSH#Y6?K53hI9h$onvWl>tf}H@HE!b$J!di)be8r6n1+K)`B0|&J`)8=%`_Hd+6iS! z_)L`cYNp8`({3o!l+Q%Tsb-o9GQAIFdh9b%DXE#B2AMvDGA&Xrq^PKus!Zb)6&btM ziODl82YHy!L(d5_j};Z>MLkSEQYuWk9!8^lt7O9^+j8|VLs(N`*6U$L@k)hx9g0B& cn|@|*VcQ?yV28#CeNzB$>5v^$)(HLn0I6R~^#A|> literal 0 HcmV?d00001 diff --git a/SomeMetamodel/bin/somemetamodel/util/SomemetamodelAdapterFactory.class b/SomeMetamodel/bin/somemetamodel/util/SomemetamodelAdapterFactory.class new file mode 100644 index 0000000000000000000000000000000000000000..b54b3b0c5d69389ab0bbcd09f621f3552a3b136b GIT binary patch literal 2204 zcma)6T~8B16g|_HE-kCY4?qPJk&m_@t0D+4qF9QORMeD^=-aZ4WwG6Dwu^?uU*Ip$ zKfn_YieFI^gHI;@DE01ksBF7v`_S3BbI-l!-Z^)E{`&F_z&I8qgc!yuR*9Fmqm`^R zUQ{+6qp0K$n&#HDvcv5KO?NDNOG1QU!m>VBP)(Sm3UXV4>|o1x!NC#c~vdJ(1G@x`V5^4wA;%aF(! zCSTett#W%=TP;#IkLN61E3Rm^;qHYo;;b7LD*3;it|QHGB=3+W?rCKasokguxh+`s z@>ZELb|iBf+A~clYGy&Xzq-M7M@>DJFvQSXe`8#?Y_4RhUTqjeQbr1Cx-gz8Y8B$x zmrOO>vp{(sY8yr|CgCDO&mqx0KN$)xkwOdH$<}1ue|Ye}qK;Z#4Q?wN>Y|3|HrE_3 z8b#_&HqiBt+>$$a2DjD5y8MnJq#DO0rX*Zr81iePQKHp(k}-|z46SR{{v?t-59!VR z{WO*)VTNI_9u`QEuFKJE>a08S|3=iRXE-W4S8H7=;5GvD(Lf9E?HX7ZGWCY}dPBBm zI9Vki)K@dd^VX)V^992lpFZE<2_K>OF;@=sR4$q(w>^>Z3eM9khw0G{!5e7$int?A z)|h9F(@HX=Q_>Du3_54D_NG7KX!yC z;y{l=A_l`;6Udi=$lFaIUj-sFO(3@ek@HO;-v=VIO(6FIkRdF1cX0=IX^m5N+i9iW EAE9;(8UO$Q literal 0 HcmV?d00001 diff --git a/SomeMetamodel/bin/somemetamodel/util/SomemetamodelSwitch.class b/SomeMetamodel/bin/somemetamodel/util/SomemetamodelSwitch.class new file mode 100644 index 0000000000000000000000000000000000000000..682a6bc4cad28114b7ce1361b3cdd6466cd7071e GIT binary patch literal 3069 zcma)8-%}e^6#i~DkS1B=he}(kwxzTt6dEn9B47}b0I?xZlY*tKxP%3^4TQ-Lo%YQc z$MMC{myR!e@ulNvA4(nTj1P`4PG|g&eDKG2?3z$b97QraB&H%9dQ$ zmHz6sRS}3BBJY(Pen5XK%-y{P)X4wDn9S!V;sol-Rhhd5W3NsnY*p+E%$CXmXCfK* z8l)PzjIIhCF`M~6)y|*Z8znn}z@*_y{_Csxl*lMFlQ|}{*JW_ zWP1)=kRK=zpUjUt6CL*`pFJDZC18&-oMsbgylL1Ha&%LYbDZOx?;uxq_$&C^JM=R` zPoO_T@Cly#5&Axremu{2AAf-e-%*5kyn8T=7pT$gjd&6LTpexE9OLS^t@(!=L_qoa z@e)o@l7Uy@;~x+{&!`X4;eVt(;?fS;socj@n10)>9)=t6GG3wmzkp%d8UZzkAVFTm zNp3quKp#`Uc)ld14zBl4e9t#vzhyw+44*ik>wKzwz8d}w1KFXGrx+afANM~)XlVE; zB2s=#)37pKa5G(0rb}+7F=ZNeGsTtZU580UeM~}jR(6>@Ac;ZDvJ`V1gY&qIGzZRm zn8E@rSzN&)miV`Vt4whoYq*9@EVIrlDB}ava0B;n6QAN1KF5dnk{(}U9rsbd18m@1 znD~x6et@O2{~5X%bHADWeMU*C>gM~@can;bRQI{n< zjpz;CJ?fUoR3o2;?ml(zBS+nXrcTy6uDVw;k+rsCj*_!Cr+n|5piN4^0&Wo;zzS;);8&C8_4|LvpP4pXW&>woDU-dxe pHP}SI*#`Y5PxPDzI{#^DqTgzR{<|mooGZGI$4t(lwfa2z=wFC8cF+I- literal 0 HcmV?d00001 diff --git a/SomeMetamodel/bin/somemetamodelextension/R.class b/SomeMetamodel/bin/somemetamodelextension/R.class new file mode 100644 index 0000000000000000000000000000000000000000..249ec049e6cc7df389d57644fbc34b85ab0f3a00 GIT binary patch literal 252 zcmYLE%MJlS5UgQYZ;n2Ji#a$ukdQb@NL*!hHAd!<%r5b54nDv~iC!cQ-PP4y-Kl=Q z?hgQCbYqkR`kA+6DOc9-$FYQASK^F*75X3@7d>yybvbMV;>l*d5qL=8QAJC7A z&d5HhkOOnhoHO6KpP%2aZvbZ~8Hfp-kCjIrh0;@x*YQT~;?f$7$RLjm_NgNXT$U@#rI~`jW(Ee5 z0=cH+Q)}W4DCo+8O9F+avZULSfurR}X;=Ztkop3L^P~2;0THmh5ZGqmu}$IZSw2YX zS=yY*zYB~k*?YR9CV@qDM^|(*J5DtDQ@t*{AUrX?t9WsNMI8MB>apDI literal 0 HcmV?d00001 diff --git a/SomeMetamodel/bin/somemetamodelextension/SomemetamodelextensionPackage$Literals.class b/SomeMetamodel/bin/somemetamodelextension/SomemetamodelextensionPackage$Literals.class new file mode 100644 index 0000000000000000000000000000000000000000..7365e9cbf3a7107d09072bf6fbf037f8633ea16d GIT binary patch literal 829 zcmbVKJ#Q015Pg$4cFtKyFrVflB#r?aNDc`^6F_pTAVoS1vZE-eto1Qi7w!Yytr33< zsG#5nP*77+@+%Ot8zLG^kt=rI?##TIc{g8wef|RAKJHa8LwH9sAEmha4IL?Gu)REFb$E#?hOCeNJ8p z&T{s*yRj~cO$q7~=K8~7=NX|fEx2P$9*ri3C7~q2TZH*X!kI?q31PO?-jnyP^zLC1 zXDV1CJUGcn3N@T1c)Zga>~?zHZNkIgBt)AF(#Uy*3%DqqjoFA4E3Njl`HsZ!K&UIs zp=`6SC|o_x?pxQgLgmP{qOgjFXduM>VP}{Sn$yYuif37x3iI%6ftw1qEKAw3Y*}Yp zp$d<%7(^-eCdr8NT|J7KPz$n9$9p=D?ETMUb&yT+ke^02qVeBl*|6(DP&;YLxf_=Y z8Q^$@%CZQUm5nT+ZUqojx6?W+{W>eHiIprYK#4siw*#^ETmOL5pKy-w5tkgiY~eKr yuUok0;0+5~?qrP(H%lr7m7!rNwA$GW%|vO6{U>@PCD z7$5ur{wU*_rs#@oA84|3&Np+ubDinWU*CTK*ut)c5r*v~3Pd0z528217ayev6E6z& zdf)8>-g?j5Lc!!Orvq=m~OdtXg3&U zj@{aU=@<>GW}odbN0~F~gX6l!KEoKvJz_imvXvE$XU6&8MfN4NH}vFdhSAlvBXUuu z+2yf}6%BV7UJaYOG>whNfWnW_xZ=~=|!naa*4jIa75w|IWB4wkKR6p$-mcHWt7g9&CM(ZRM x3hdHaBFbkx=$@#5tA}_5B_H?XIyq5zqbE1

QR4qEa(q~#tTbU0(A%+^$09!Crv6VPei=pC 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 literal 0 HcmV?d00001 diff --git a/SomeMetamodel/bin/somemmmutclassonly/BMutClassOnlyPImpl.class b/SomeMetamodel/bin/somemmmutclassonly/BMutClassOnlyPImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..974044c20e78083b27917508098021ff326fff0c GIT binary patch literal 3312 zcmai$>317f8OEP$Nf}9=EOpz&;3QSHMwX40q>D+M6k^9|7377=afs6r#`2Xji8SMm zMs5skp$#;YZtQJJ3w+`nAP15hDi?Ctz5<8+&*5-*-kGti*eR8c=H9t?-uM3Ab@ZqI z{^oZ89>Na|bSUhryER>_)f#@eYSrtmQ(ejrk2U-extrkKWTCcDH4s-gRq^t+I(eI7`Qx*7-?Peo>4N2HYqqLKCuT3|vTtC6 z!sg&;?OQc>PFM583L8YBo>RD|xMpuiVdMD0^JC{nPmG>Ce!4iNpbA_Yah;AA`tb>c`}Mf% z+ZDS^de?bUKhv;1i7N$X4CEF1?`}tsG^6dZl6`3m;Gl%$kitOrLof>tt#Pbslwm^! zenO~+O+11}$s0l~Ddg8HDZ8~Av(^#prF=WVkfes;=x0OQ4YxWM&NebQ)*!2vbos&w=Sk7FgY&oVMW zNz5Wgo2tkrNvbJaFkxdqh3KfD`G~2POk~k3gbb!5u}{tN{MP=0iO29Mp`pzhv@}US z2HVm=R_%$7V$0H}9fnOro;A@xuPhbn0i9IcjO={L#APt8lfKJ5VTh!|wL2kP4gB|I z6JL=EO;XFG=U!eC1uvO+4$m9-DotL62&IM_m5TP#xPq6Z1jmy2I;AsNX|hK$vi=Pd zui`a=Sqlr=VU_paEos`UYgbIDD|kaRys6N0XWZ|2E{SjPh<;{xc1xcSy&O2aooo}09eG^;r>Ut-4w%{JFba8ir&vtO!oLk1d zx!C*In(KQX-8TazALq4;j{{He`UnpwU=vQEhbvn{F&?{vcT|9##9-3n0c0ZO0~{6i z;_Q%X1XjMDADEdVP)XQ*FYDmN2U(623|ld5`ZC z;bXZTF{_E(H4e8ia5fi@ZI_*89BASpu{9Qu?W8Ngl1iXL*Ui&O7tqZL-NkV)E(M2X zLd7k+_hB$_dxBPflCusRrViTpAM6zi*t{dChdGKxX&&AEYaCTrYgWC@taQsP7JH;& zl-ea&sayDT*U2WHSPj#r0P8tkpQr6F1d75CrCO*dj0c&Zq=!W+-(&8EVi@=?rm;K7zZP`Jm>ORf!mYo{{yC)m~Z0ZO_`r- zqS}OeGuP9;Yv>mQ{3QWzQva>CFy>ldxd=@1 zOmGqj9>vxj;k+E-9FA}ft-;wXnSTw5`1RQJRwl08lkSU>mF=OuO}gKb>i7J+|Hn3> z!!4r2ZA1nV-AT1kQk`#ui0LO(D2ZEO7QJu{Nj94oZ`{U}vocx6*NS~zSDSd{OrNkd z@%ov*u5Yf~hourMZs~2}+h_Wk_}*&zJ;<&E{F#;e7dE}WlJ#%wK!0Z%{(~X@CywD? r{73ZfHts^i-Hn6zKHegtc#`eZB;(thb}&oc;V9j7H-3QkHl+Rsd{eVx literal 0 HcmV?d00001 diff --git a/SomeMetamodel/bin/somemmmutclassonly/RMutClassOnlyPImpl.class b/SomeMetamodel/bin/somemmmutclassonly/RMutClassOnlyPImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..9434a2fdd93244d5a47d6a681684e12fcf141983 GIT binary patch literal 3274 zcmbW3?Q=yN!E)uaq2d)sgqP~l17$|m9}Y3;-u7eoK~$88!K^$+Y;9DmA#3y z>#kOA1bv|e8cKme%M65pflr-jn}H-lWgx@bSK4WL`*RqE=j^U!)sA5XWxRX$?!D*! z&Uwx`o4@?~cYgrz5Pld(hr)rHQ`OaKweFQFX07Jfl}2vnRNb49rzt*7=c~(=IHC$q zmff6XyOx<-uvWBN)45W`u`PSiziT(At7U!J({{~r?3~4Ixv}}0=b9z2xMaH8oUiD~ zsrie#0tlPAZ{7S1TByu!8# z$F6y%?ai8%x{lCKC`8N)RfW`e+uF`!mTh^DD(uN@eZau1LUe*`DMWCmfo|MIW0`^3 zB#rJeunj30^%;mGq0n8hY<;?3o!9OeaaEzG;FQeDtjUn^Ih>4oOIA(cU~umL3cPq3 z#A4cXO}b&|qGx(m$=63Aof#-N?qW`tD%LU;p#&T|uFg&RD@K#J7yIJ4PvQ6$kt|9A zY*Jy`EL}1e_5On8Y1gdO4D81N2ASgQ{qHAIy+!SfNz556iqcsNAETN4z-)>k8#FM4 z&noQHryb8KTP1qr*faXMy5)-M+&33TPGRWwzWKQ|*}hkjG=*V2ATm9uFr3)}GH=r# z+pL6%IGX1#fI4j8VLYM`51<+fxy?pOPPNM9wgtP9YbO|$bm_G9^SZvVqv`pyRZDZ}f|PgKv=`DP)20vUd7b9* z!znzDd>l_G+<6=O2A;%IjLWhdS+Plx2`~amkJF33_fdL3PLK5CnykH<{M_6?+sdHy zMX)_is^Q|3|0zGfw6izE7 z%i8qnuFjv}Zdccw$_h(S%_$_LF3vQT`54tjL8Q$#lOdmE!wgIV^CC}zKKso?uonzu zFd(C{f#WiYV9CIjaDfZyyuVQDe%+nWC{sh9wHa&KLQOAWK&J9FpF;{`PTo9cz=lI( zoNlrffXsD1g%WF&gF&}xNN{hEsn3yxsAKV>*ca`Q)u7?sgkD> zc!?oOXV@N(re*qT242Cd$gbF zaJ{8)`2T5-jQ(1KWS?b~@-K!c|M8Q+kI!x-A?eb^aR&^}^P}O4ZP@%w+vZqn zGwUVXe1$0TMLr;#k7xVEttPTpu`7EE!{@Wn$ZmPFibG92B)&#`vb_u?pc&ROL$*kc zCG^2!xR>}zy5t|44h*;aK7bKFyfLKlIgUDTgf{5ozp!6CVB-y;4)ZP^rFeAjZ^6&) zMz?BhZlzjovG_v^le8{kC2!)jmPvaTikwbWvqlh1}7$SY~II-B`LbxCEmB=^}!sR%Y-x}P$?9iVu z)5MpXDBV~e>l@krp;aty6!u4Cyo!DJ3B~*=6YOUs`8giJFWQ71Y4MJ(?5ZKxp&Sv_uM;^U%$Wq0Pqx+fegd5IP`_@`xE7QJdVS_`(XDd z zs9YyJ6(+JMm#~ToL$+xRieRXfP=v`)?#e*Co%ll$_4&}F)@t3*<=%kPfGA!hbLw1@ z?bVS`Z?1;$qG_eGvoy)JHgK~90|f&O1}oJp^(;*6pllNRj&7&Ku+~%DedqA;!lyw7 zHIPA@OL@_bP~4|Ed5dvZ-AK?g>dMi%>V#t{B8Jx~waO;;P-ZZD;Usd!k<>S||JT=ls2@J=(V(*QT|ow>o;LldGWyzS&(SZM zAf2vJbVN~xcC$6bdh6gDs-F_<2CeI)0m9}8T_p4-MfEuvHxfCP=2W?T1j3GVMW+l;tCk9eTsW>AQ8QFM-Blp?v%SHwaH3}I zoVbB`hUK^n5!oKKQ4M$M4#MYi*%Yma7YVD{8FaKv+|7iFvWukF2aY@gWJ1Z^Ju1VD;zv~hGAkZg%5Gqq*I3h6PM`BO&=heCoiLmCq=*fj#8$`K52YK@jVKkP)YuQ6|tTp>|NjZOr2VDY~4+DRNd0 X!EqB+DyT-WEYjstiJUq)DKvfnVIvJl literal 0 HcmV?d00001 diff --git a/SomeMetamodel/bin/somemmmutclassonly/SomeMMMutClassOnlyTags.class b/SomeMetamodel/bin/somemmmutclassonly/SomeMMMutClassOnlyTags.class new file mode 100644 index 0000000000000000000000000000000000000000..e1c4cc28d1e4a8b2ddd941a8fb87af848a24e3ed GIT binary patch literal 3216 zcmbVOTXR!Y6#h;d8d^5jmI6{PLV;d@P;9vcC~4Z#O4633)V84EG~I0vk?(6BFcud_cw-~Fg@Fy zLH(7e##%3GxF~x~ZrbvSB~uxLm6$Td$7RabW19gzeo>#40<~DDp;GqtMF#_Y!7dGZ zoSdGF?_b7gHwZk1jVvbf8_}?}p>gr#RJ}I|Y{nMqAunb11WUQLAv9lSf8%H+p2l`B zwrTMF$ASpdV~2+2ef@*6Xip&073c^tyO#e^*j;G!qJb^9Kw(wyCLgO;QH7f{99XET zi;`L1UDz$K$1U%$Du_>DpUSN!*dHDUbq#ifMhYn^#(u%QmJ=kR7;ORv6r*||5E<+Z zgys^eaY*2>OJL3YIOfGs4cq13i8wtZNi&h6sbq^^z`n=UiaDczLL zp6B5(%4!*z0W&=3s;w>=AP-Kb?|<5t$x6Wvm$m26lfZ3 z5ji1EnTktW`cZ+iIOm)kkys#>T$CHIEYldvS`POGftcc|StBu4vKqR;n7feC*ocD0 z1*AK}XskDuR0WU8k!brfX9{5 zP^V(1lhb)=b8QgOEhBB;51ke5_b>fg$G77>pqo}n?~3*ZXY3bGPe#rAYQ8+>cnO=4K;1;53}743hy6IMmjSu-xX4Ru#-RHw<~*XUk#vho;UR{SjC zRlJmz_Z^>={N|(8XqPnofU55}D1+d$!Uk7kImg0rzzVG7H(ttE%_qs4N$)aZUpL>u znpv#Za2Itq;k|>cw+Zc>MRNh#n}b>kP^*GSJXnBi;*nXj7a-eV-e!1?#}3X z^%NjC)~RAhyUhic+euzyUBHdtK@HQXCRW1~*K$Z9FH+lEa%KR4qTy*g;SXnU{~A;vySRt(#@RqA142i|0atBmjo8t@q!@i`-Xh23_M zYn?*oip-Lt5B)6j09UvSmDOu}lz7#RXi-%P!!0yjB3pRh=C1?@>OWmEyNi{8ozJM)41@w-2%f4pHiZl=cv% zJWLsnP&z-FY4_5$;3#j|WAr%A(J{2scJSGW6BIwdE9wM=3m{7L41yTvFB5EyEV_C8 zoy0YIT}LlIa)QXsDU2l8|We1?JcUU8fX<(tX@_8BK|hsae9Fnm2m`kYH;;i+TuPsSJX$Id>_4A kihF%N_k2n2d!@MV&*zSp + + + + + + + + + + + + + + + + + + + + diff --git a/SomeMetamodel/model/SomeMetamodel.ecorediag b/SomeMetamodel/model/SomeMetamodel.ecorediag new file mode 100644 index 0000000..f0c415e --- /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 0000000..b20c7ff --- /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 0000000..718f864 --- /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 0000000..d5c652b --- /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 0000000..365aea0 --- /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 0000000..de4dd4b --- /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 0000000..d09a661 --- /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 0000000..8929e26 --- /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 0000000..001c92a --- /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 0000000..b4c057a --- /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 0000000..835035a --- /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 0000000..52ee333 --- /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 0000000..e68d1c3 --- /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'. + * + *

+ * The following features are implemented: + *

    + *
  • {@link somemetamodel.impl.AImpl#getB B}
  • + *
  • {@link somemetamodel.impl.AImpl#getC C}
  • + *
  • {@link somemetamodel.impl.AImpl#getD D}
  • + *
  • {@link somemetamodel.impl.AImpl#getE E}
  • + *
  • {@link somemetamodel.impl.AImpl#getX X}
  • + *
+ *

+ * + * @generated + */ +public class AImpl extends AbstractShareableEObject implements A { + /** + * The cached value of the '{@link #getB() B}' containment reference. + * + * + * @see #getB() + * @generated + * @ordered + */ + protected B b; + + /** + * The cached value of the '{@link #getC() C}' reference. + * + * + * @see #getC() + * @generated + * @ordered + */ + protected C c; + + /** + * The cached value of the '{@link #getD() D}' reference. + * + * + * @see #getD() + * @generated + * @ordered + */ + protected D d; + + /** + * The cached value of the '{@link #getE() E}' containment reference list. + * + * + * @see #getE() + * @generated + * @ordered + */ + protected EList e; + + /** + * The cached value of the '{@link #getX() X}' reference. + * + * + * @see #getX() + * @generated + * @ordered + */ + protected X x; + + /** + * + * + * @generated + */ + protected AImpl() { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return SomemetamodelPackage.Literals.A; + } + + /** + * + * + * @generated + */ + public B getB() { + return b; + } + + /** + * + * + * @generated + */ + public NotificationChain basicSetB(B newB, NotificationChain msgs) { + B oldB = b; + b = newB; + if (eNotificationRequired()) { + ENotificationImpl notification = new ENotificationImpl(this, + Notification.SET, SomemetamodelPackage.A__B, oldB, newB); + if (msgs == null) + msgs = notification; + else + msgs.add(notification); + } + return msgs; + } + + /** + * + * + * @generated + */ + public void setB(B newB) { + if (newB != b) { + NotificationChain msgs = null; + if (b != null) + msgs = ((InternalEObject) b).eInverseRemove(this, + EOPPOSITE_FEATURE_BASE - SomemetamodelPackage.A__B, + null, msgs); + if (newB != null) + msgs = ((InternalEObject) newB).eInverseAdd(this, + EOPPOSITE_FEATURE_BASE - SomemetamodelPackage.A__B, + null, msgs); + msgs = basicSetB(newB, msgs); + if (msgs != null) + msgs.dispatch(); + } else if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, + SomemetamodelPackage.A__B, newB, newB)); + } + + /** + * + * + * @generated + */ + public C getC() { + if (c != null && ((EObject) c).eIsProxy()) { + InternalEObject oldC = (InternalEObject) c; + c = (C) eResolveProxy(oldC); + if (c != oldC) { + if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.RESOLVE, + SomemetamodelPackage.A__C, oldC, c)); + } + } + return c; + } + + /** + * + * + * @generated + */ + public C basicGetC() { + return c; + } + + /** + * + * + * @generated + */ + public void setC(C newC) { + C oldC = c; + c = newC; + if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, + SomemetamodelPackage.A__C, oldC, c)); + } + + /** + * + * + * @generated + */ + public D getD() { + if (d != null && ((EObject) d).eIsProxy()) { + InternalEObject oldD = (InternalEObject) d; + d = (D) eResolveProxy(oldD); + if (d != oldD) { + if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.RESOLVE, + SomemetamodelPackage.A__D, oldD, d)); + } + } + return d; + } + + /** + * + * + * @generated + */ + public D basicGetD() { + return d; + } + + /** + * + * + * @generated + */ + public NotificationChain basicSetD(D newD, NotificationChain msgs) { + D oldD = d; + d = newD; + if (eNotificationRequired()) { + ENotificationImpl notification = new ENotificationImpl(this, + Notification.SET, SomemetamodelPackage.A__D, oldD, newD); + if (msgs == null) + msgs = notification; + else + msgs.add(notification); + } + return msgs; + } + + /** + * + * + * @generated + */ + public void setD(D newD) { + if (newD != d) { + NotificationChain msgs = null; + if (d != null) + msgs = ((InternalEObject) d).eInverseRemove(this, + SomemetamodelPackage.D__A, D.class, msgs); + if (newD != null) + msgs = ((InternalEObject) newD).eInverseAdd(this, + SomemetamodelPackage.D__A, D.class, msgs); + msgs = basicSetD(newD, msgs); + if (msgs != null) + msgs.dispatch(); + } else if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, + SomemetamodelPackage.A__D, newD, newD)); + } + + /** + * + * + * @generated + */ + public EList getE() { + if (e == null) { + e = new EObjectContainmentEList(E.class, this, + SomemetamodelPackage.A__E); + } + return e; + } + + /** + * + * + * @generated + */ + public X getX() { + if (x != null && ((EObject) x).eIsProxy()) { + InternalEObject oldX = (InternalEObject) x; + x = (X) eResolveProxy(oldX); + if (x != oldX) { + if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.RESOLVE, + SomemetamodelPackage.A__X, oldX, x)); + } + } + return x; + } + + /** + * + * + * @generated + */ + public X basicGetX() { + return x; + } + + /** + * + * + * @generated + */ + public void setX(X newX) { + X oldX = x; + x = newX; + if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, + SomemetamodelPackage.A__X, oldX, x)); + } + + /** + * + * + * @generated + */ + @Override + public NotificationChain eInverseAdd(InternalEObject otherEnd, + int featureID, NotificationChain msgs) { + switch (featureID) { + case SomemetamodelPackage.A__D: + if (d != null) + msgs = ((InternalEObject) d).eInverseRemove(this, + SomemetamodelPackage.D__A, D.class, msgs); + return basicSetD((D) otherEnd, msgs); + } + return super.eInverseAdd(otherEnd, featureID, msgs); + } + + /** + * + * + * @generated + */ + @Override + public NotificationChain eInverseRemove(InternalEObject otherEnd, + int featureID, NotificationChain msgs) { + switch (featureID) { + case SomemetamodelPackage.A__B: + return basicSetB(null, msgs); + case SomemetamodelPackage.A__D: + return basicSetD(null, msgs); + case SomemetamodelPackage.A__E: + return ((InternalEList) getE()).basicRemove(otherEnd, msgs); + } + return super.eInverseRemove(otherEnd, featureID, msgs); + } + + /** + * + * + * @generated + */ + @Override + public Object eGet(int featureID, boolean resolve, boolean coreType) { + switch (featureID) { + case SomemetamodelPackage.A__B: + return getB(); + case SomemetamodelPackage.A__C: + if (resolve) + return getC(); + return basicGetC(); + case SomemetamodelPackage.A__D: + if (resolve) + return getD(); + return basicGetD(); + case SomemetamodelPackage.A__E: + return getE(); + case SomemetamodelPackage.A__X: + if (resolve) + return getX(); + return basicGetX(); + } + return super.eGet(featureID, resolve, coreType); + } + + /** + * + * + * @generated + */ + @SuppressWarnings("unchecked") + @Override + public void eSet(int featureID, Object newValue) { + switch (featureID) { + case SomemetamodelPackage.A__B: + setB((B) newValue); + return; + case SomemetamodelPackage.A__C: + setC((C) newValue); + return; + case SomemetamodelPackage.A__D: + setD((D) newValue); + return; + case SomemetamodelPackage.A__E: + getE().clear(); + getE().addAll((Collection) newValue); + return; + case SomemetamodelPackage.A__X: + setX((X) newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * + * + * @generated + */ + @Override + public void eUnset(int featureID) { + switch (featureID) { + case SomemetamodelPackage.A__B: + setB((B) null); + return; + case SomemetamodelPackage.A__C: + setC((C) null); + return; + case SomemetamodelPackage.A__D: + setD((D) null); + return; + case SomemetamodelPackage.A__E: + getE().clear(); + return; + case SomemetamodelPackage.A__X: + setX((X) null); + return; + } + super.eUnset(featureID); + } + + /** + * + * + * @generated + */ + @Override + public boolean eIsSet(int featureID) { + switch (featureID) { + case SomemetamodelPackage.A__B: + return b != null; + case SomemetamodelPackage.A__C: + return c != null; + case SomemetamodelPackage.A__D: + return d != null; + case SomemetamodelPackage.A__E: + return e != null && !e.isEmpty(); + case SomemetamodelPackage.A__X: + return x != null; + } + return super.eIsSet(featureID); + } + +} //AImpl diff --git a/SomeMetamodel/src/somemetamodel/impl/BImpl.java b/SomeMetamodel/src/somemetamodel/impl/BImpl.java new file mode 100644 index 0000000..c37c982 --- /dev/null +++ b/SomeMetamodel/src/somemetamodel/impl/BImpl.java @@ -0,0 +1,221 @@ +/** + */ +package somemetamodel.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.impl.ENotificationImpl; + +import somemetamodel.B; +import somemetamodel.SomemetamodelPackage; + +/** + * + * An implementation of the model object 'B'. + * + *

+ * The following features are implemented: + *

    + *
  • {@link somemetamodel.impl.BImpl#getN1_m N1 m}
  • + *
  • {@link somemetamodel.impl.BImpl#getN2 N2}
  • + *
+ *

+ * + * @generated + */ +public class BImpl extends AbstractShareableEObject implements B { + /** + * The default value of the '{@link #getN1_m() N1 m}' attribute. + * + * + * @see #getN1_m() + * @generated + * @ordered + */ + protected static final int N1_M_EDEFAULT = 0; + + /** + * The cached value of the '{@link #getN1_m() N1 m}' attribute. + * + * + * @see #getN1_m() + * @generated + * @ordered + */ + protected int n1_m = N1_M_EDEFAULT; + + /** + * The default value of the '{@link #getN2() N2}' attribute. + * + * + * @see #getN2() + * @generated + * @ordered + */ + protected static final byte N2_EDEFAULT = 0x00; + + /** + * The cached value of the '{@link #getN2() N2}' attribute. + * + * + * @see #getN2() + * @generated + * @ordered + */ + protected byte n2 = N2_EDEFAULT; + + /** + * + * + * @generated + */ + protected BImpl() { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return SomemetamodelPackage.Literals.B; + } + + /** + * + * + * @generated + */ + public int getN1_m() { + return n1_m; + } + + /** + * + * + * @generated + */ + public void setN1_m(int newN1_m) { + int oldN1_m = n1_m; + n1_m = newN1_m; + if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, + SomemetamodelPackage.B__N1_M, oldN1_m, n1_m)); + } + + /** + * + * + * @generated + */ + public byte getN2() { + return n2; + } + + /** + * + * + * @generated + */ + public void setN2(byte newN2) { + byte oldN2 = n2; + n2 = newN2; + if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, + SomemetamodelPackage.B__N2, oldN2, n2)); + } + + /** + * + * + * @generated + */ + @Override + public Object eGet(int featureID, boolean resolve, boolean coreType) { + switch (featureID) { + case SomemetamodelPackage.B__N1_M: + return getN1_m(); + case SomemetamodelPackage.B__N2: + return getN2(); + } + return super.eGet(featureID, resolve, coreType); + } + + /** + * + * + * @generated + */ + @Override + public void eSet(int featureID, Object newValue) { + switch (featureID) { + case SomemetamodelPackage.B__N1_M: + setN1_m((Integer) newValue); + return; + case SomemetamodelPackage.B__N2: + setN2((Byte) newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * + * + * @generated + */ + @Override + public void eUnset(int featureID) { + switch (featureID) { + case SomemetamodelPackage.B__N1_M: + setN1_m(N1_M_EDEFAULT); + return; + case SomemetamodelPackage.B__N2: + setN2(N2_EDEFAULT); + return; + } + super.eUnset(featureID); + } + + /** + * + * + * @generated + */ + @Override + public boolean eIsSet(int featureID) { + switch (featureID) { + case SomemetamodelPackage.B__N1_M: + return n1_m != N1_M_EDEFAULT; + case SomemetamodelPackage.B__N2: + return n2 != N2_EDEFAULT; + } + return super.eIsSet(featureID); + } + + /** + * + * + * @generated + */ + @Override + public String toString() { + if (eIsProxy()) + return super.toString(); + + StringBuffer result = new StringBuffer(super.toString()); + result.append(" (n1_m: "); + result.append(n1_m); + result.append(", n2: "); + result.append(n2); + result.append(')'); + return result.toString(); + } + +} //BImpl diff --git a/SomeMetamodel/src/somemetamodel/impl/CImpl.java b/SomeMetamodel/src/somemetamodel/impl/CImpl.java new file mode 100644 index 0000000..bbb0dd1 --- /dev/null +++ b/SomeMetamodel/src/somemetamodel/impl/CImpl.java @@ -0,0 +1,166 @@ +/** + */ +package somemetamodel.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.impl.ENotificationImpl; + +import somemetamodel.C; +import somemetamodel.SomemetamodelPackage; + +/** + * + * An implementation of the model object 'C'. + * + *

+ * The following features are implemented: + *

    + *
  • {@link somemetamodel.impl.CImpl#getYay_m Yay m}
  • + *
+ *

+ * + * @generated + */ +public class CImpl extends AbstractShareableEObject implements C { + /** + * The default value of the '{@link #getYay_m() Yay m}' attribute. + * + * + * @see #getYay_m() + * @generated + * @ordered + */ + protected static final int YAY_M_EDEFAULT = 0; + + /** + * The cached value of the '{@link #getYay_m() Yay m}' attribute. + * + * + * @see #getYay_m() + * @generated + * @ordered + */ + protected int yay_m = YAY_M_EDEFAULT; + + /** + * + * + * @generated + */ + protected CImpl() { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return SomemetamodelPackage.Literals.C; + } + + /** + * + * + * @generated + */ + public int getYay_m() { + return yay_m; + } + + /** + * + * + * @generated + */ + public void setYay_m(int newYay_m) { + int oldYay_m = yay_m; + yay_m = newYay_m; + if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, + SomemetamodelPackage.C__YAY_M, oldYay_m, yay_m)); + } + + /** + * + * + * @generated + */ + @Override + public Object eGet(int featureID, boolean resolve, boolean coreType) { + switch (featureID) { + case SomemetamodelPackage.C__YAY_M: + return getYay_m(); + } + return super.eGet(featureID, resolve, coreType); + } + + /** + * + * + * @generated + */ + @Override + public void eSet(int featureID, Object newValue) { + switch (featureID) { + case SomemetamodelPackage.C__YAY_M: + setYay_m((Integer) newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * + * + * @generated + */ + @Override + public void eUnset(int featureID) { + switch (featureID) { + case SomemetamodelPackage.C__YAY_M: + setYay_m(YAY_M_EDEFAULT); + return; + } + super.eUnset(featureID); + } + + /** + * + * + * @generated + */ + @Override + public boolean eIsSet(int featureID) { + switch (featureID) { + case SomemetamodelPackage.C__YAY_M: + return yay_m != YAY_M_EDEFAULT; + } + return super.eIsSet(featureID); + } + + /** + * + * + * @generated + */ + @Override + public String toString() { + if (eIsProxy()) + return super.toString(); + + StringBuffer result = new StringBuffer(super.toString()); + result.append(" (yay_m: "); + result.append(yay_m); + result.append(')'); + return result.toString(); + } + +} //CImpl diff --git a/SomeMetamodel/src/somemetamodel/impl/DImpl.java b/SomeMetamodel/src/somemetamodel/impl/DImpl.java new file mode 100644 index 0000000..5de9806 --- /dev/null +++ b/SomeMetamodel/src/somemetamodel/impl/DImpl.java @@ -0,0 +1,224 @@ +/** + */ +package somemetamodel.impl; + +import fr.inria.diverse.cloning.cloner.emfextension.impl.AbstractShareableEObject; + +import org.eclipse.emf.common.notify.Notification; +import org.eclipse.emf.common.notify.NotificationChain; + +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.InternalEObject; + +import org.eclipse.emf.ecore.impl.ENotificationImpl; + +import somemetamodel.A; +import somemetamodel.D; +import somemetamodel.SomemetamodelPackage; + +/** + * + * An implementation of the model object 'D'. + * + *

+ * The following features are implemented: + *

    + *
  • {@link somemetamodel.impl.DImpl#getA A}
  • + *
+ *

+ * + * @generated + */ +public class DImpl extends AbstractShareableEObject implements D { + /** + * The cached value of the '{@link #getA() A}' reference. + * + * + * @see #getA() + * @generated + * @ordered + */ + protected A a; + + /** + * + * + * @generated + */ + protected DImpl() { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return SomemetamodelPackage.Literals.D; + } + + /** + * + * + * @generated + */ + public A getA() { + if (a != null && ((EObject) a).eIsProxy()) { + InternalEObject oldA = (InternalEObject) a; + a = (A) eResolveProxy(oldA); + if (a != oldA) { + if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.RESOLVE, + SomemetamodelPackage.D__A, oldA, a)); + } + } + return a; + } + + /** + * + * + * @generated + */ + public A basicGetA() { + return a; + } + + /** + * + * + * @generated + */ + public NotificationChain basicSetA(A newA, NotificationChain msgs) { + A oldA = a; + a = newA; + if (eNotificationRequired()) { + ENotificationImpl notification = new ENotificationImpl(this, + Notification.SET, SomemetamodelPackage.D__A, oldA, newA); + if (msgs == null) + msgs = notification; + else + msgs.add(notification); + } + return msgs; + } + + /** + * + * + * @generated + */ + public void setA(A newA) { + if (newA != a) { + NotificationChain msgs = null; + if (a != null) + msgs = ((InternalEObject) a).eInverseRemove(this, + SomemetamodelPackage.A__D, A.class, msgs); + if (newA != null) + msgs = ((InternalEObject) newA).eInverseAdd(this, + SomemetamodelPackage.A__D, A.class, msgs); + msgs = basicSetA(newA, msgs); + if (msgs != null) + msgs.dispatch(); + } else if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, + SomemetamodelPackage.D__A, newA, newA)); + } + + /** + * + * + * @generated + */ + @Override + public NotificationChain eInverseAdd(InternalEObject otherEnd, + int featureID, NotificationChain msgs) { + switch (featureID) { + case SomemetamodelPackage.D__A: + if (a != null) + msgs = ((InternalEObject) a).eInverseRemove(this, + SomemetamodelPackage.A__D, A.class, msgs); + return basicSetA((A) otherEnd, msgs); + } + return super.eInverseAdd(otherEnd, featureID, msgs); + } + + /** + * + * + * @generated + */ + @Override + public NotificationChain eInverseRemove(InternalEObject otherEnd, + int featureID, NotificationChain msgs) { + switch (featureID) { + case SomemetamodelPackage.D__A: + return basicSetA(null, msgs); + } + return super.eInverseRemove(otherEnd, featureID, msgs); + } + + /** + * + * + * @generated + */ + @Override + public Object eGet(int featureID, boolean resolve, boolean coreType) { + switch (featureID) { + case SomemetamodelPackage.D__A: + if (resolve) + return getA(); + return basicGetA(); + } + return super.eGet(featureID, resolve, coreType); + } + + /** + * + * + * @generated + */ + @Override + public void eSet(int featureID, Object newValue) { + switch (featureID) { + case SomemetamodelPackage.D__A: + setA((A) newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * + * + * @generated + */ + @Override + public void eUnset(int featureID) { + switch (featureID) { + case SomemetamodelPackage.D__A: + setA((A) null); + return; + } + super.eUnset(featureID); + } + + /** + * + * + * @generated + */ + @Override + public boolean eIsSet(int featureID) { + switch (featureID) { + case SomemetamodelPackage.D__A: + return a != null; + } + return super.eIsSet(featureID); + } + +} //DImpl diff --git a/SomeMetamodel/src/somemetamodel/impl/EImpl.java b/SomeMetamodel/src/somemetamodel/impl/EImpl.java new file mode 100644 index 0000000..cf94113 --- /dev/null +++ b/SomeMetamodel/src/somemetamodel/impl/EImpl.java @@ -0,0 +1,41 @@ +/** + */ +package somemetamodel.impl; + +import fr.inria.diverse.cloning.cloner.emfextension.impl.AbstractShareableEObject; + +import org.eclipse.emf.ecore.EClass; + +import somemetamodel.E; +import somemetamodel.SomemetamodelPackage; + +/** + * + * An implementation of the model object 'E'. + * + *

+ *

+ * + * @generated + */ +public class EImpl extends AbstractShareableEObject implements E { + /** + * + * + * @generated + */ + protected EImpl() { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return SomemetamodelPackage.Literals.E; + } + +} //EImpl diff --git a/SomeMetamodel/src/somemetamodel/impl/SomemetamodelFactoryImpl.java b/SomeMetamodel/src/somemetamodel/impl/SomemetamodelFactoryImpl.java new file mode 100644 index 0000000..0f3517f --- /dev/null +++ b/SomeMetamodel/src/somemetamodel/impl/SomemetamodelFactoryImpl.java @@ -0,0 +1,146 @@ +/** + */ +package somemetamodel.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 somemetamodel.*; + +/** + * + * An implementation of the model Factory. + * + * @generated + */ +public class SomemetamodelFactoryImpl extends EFactoryImpl implements + SomemetamodelFactory { + /** + * Creates the default factory implementation. + * + * + * @generated + */ + public static SomemetamodelFactory init() { + try { + SomemetamodelFactory theSomemetamodelFactory = (SomemetamodelFactory) EPackage.Registry.INSTANCE + .getEFactory(SomemetamodelPackage.eNS_URI); + if (theSomemetamodelFactory != null) { + return theSomemetamodelFactory; + } + } catch (Exception exception) { + EcorePlugin.INSTANCE.log(exception); + } + return new SomemetamodelFactoryImpl(); + } + + /** + * Creates an instance of the factory. + * + * + * @generated + */ + public SomemetamodelFactoryImpl() { + super(); + } + + /** + * + * + * @generated + */ + @Override + public EObject create(EClass eClass) { + switch (eClass.getClassifierID()) { + case SomemetamodelPackage.A: + return (EObject) createA(); + case SomemetamodelPackage.B: + return (EObject) createB(); + case SomemetamodelPackage.C: + return (EObject) createC(); + case SomemetamodelPackage.D: + return (EObject) createD(); + case SomemetamodelPackage.E: + return (EObject) createE(); + default: + throw new IllegalArgumentException("The class '" + eClass.getName() + + "' is not a valid classifier"); + } + } + + /** + * + * + * @generated + */ + public A createA() { + AImpl a = new AImpl(); + return a; + } + + /** + * + * + * @generated + */ + public B createB() { + BImpl b = new BImpl(); + return b; + } + + /** + * + * + * @generated + */ + public C createC() { + CImpl c = new CImpl(); + return c; + } + + /** + * + * + * @generated + */ + public D createD() { + DImpl d = new DImpl(); + return d; + } + + /** + * + * + * @generated + */ + public E createE() { + EImpl e = new EImpl(); + return e; + } + + /** + * + * + * @generated + */ + public SomemetamodelPackage getSomemetamodelPackage() { + return (SomemetamodelPackage) getEPackage(); + } + + /** + * + * + * @deprecated + * @generated + */ + @Deprecated + public static SomemetamodelPackage getPackage() { + return SomemetamodelPackage.eINSTANCE; + } + +} //SomemetamodelFactoryImpl diff --git a/SomeMetamodel/src/somemetamodel/impl/SomemetamodelPackageImpl.java b/SomeMetamodel/src/somemetamodel/impl/SomemetamodelPackageImpl.java new file mode 100644 index 0000000..bbba60c --- /dev/null +++ b/SomeMetamodel/src/somemetamodel/impl/SomemetamodelPackageImpl.java @@ -0,0 +1,409 @@ +/** + */ +package somemetamodel.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.SomemetamodelFactory; +import somemetamodel.SomemetamodelPackage; + +import somemetamodelextension.SomemetamodelextensionPackage; + +import somemetamodelextension.hidden.HiddenPackage; + +import somemetamodelextension.hidden.impl.HiddenPackageImpl; + +import somemetamodelextension.impl.SomemetamodelextensionPackageImpl; + +/** + * + * An implementation of the model Package. + * + * @generated + */ +public class SomemetamodelPackageImpl extends EPackageImpl implements + SomemetamodelPackage { + /** + * + * + * @generated + */ + private EClass aEClass = null; + + /** + * + * + * @generated + */ + private EClass bEClass = null; + + /** + * + * + * @generated + */ + private EClass cEClass = null; + + /** + * + * + * @generated + */ + private EClass dEClass = null; + + /** + * + * + * @generated + */ + private EClass eEClass = 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 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 0000000..964e3c0 --- /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 0000000..04bda1c --- /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 0000000..87e8b2d --- /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 0000000..f655d23 --- /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 0000000..15d7dc4 --- /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 0000000..4ebaa0f --- /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 0000000..869326e --- /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 0000000..acbb926 --- /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 0000000..525a028 --- /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 0000000..50a3c04 --- /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 0000000..41814cc --- /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 0000000..780cd24 --- /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 0000000..129be3f --- /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'. + * + *

+ * The following features are implemented: + *

    + *
  • {@link somemetamodelextension.hidden.impl.YImpl#getZ Z}
  • + *
+ *

+ * + * @generated + */ +public class YImpl extends AbstractShareableEObject implements Y { + /** + * The cached value of the '{@link #getZ() Z}' reference. + * + * + * @see #getZ() + * @generated + * @ordered + */ + protected Z z; + + /** + * + * + * @generated + */ + protected YImpl() { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return HiddenPackage.Literals.Y; + } + + /** + * + * + * @generated + */ + public Z getZ() { + if (z != null && ((EObject) z).eIsProxy()) { + InternalEObject oldZ = (InternalEObject) z; + z = (Z) eResolveProxy(oldZ); + if (z != oldZ) { + if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.RESOLVE, + HiddenPackage.Y__Z, oldZ, z)); + } + } + return z; + } + + /** + * + * + * @generated + */ + public Z basicGetZ() { + return z; + } + + /** + * + * + * @generated + */ + public void setZ(Z newZ) { + Z oldZ = z; + z = newZ; + if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, + HiddenPackage.Y__Z, oldZ, z)); + } + + /** + * + * + * @generated + */ + @Override + public Object eGet(int featureID, boolean resolve, boolean coreType) { + switch (featureID) { + case HiddenPackage.Y__Z: + if (resolve) + return getZ(); + return basicGetZ(); + } + return super.eGet(featureID, resolve, coreType); + } + + /** + * + * + * @generated + */ + @Override + public void eSet(int featureID, Object newValue) { + switch (featureID) { + case HiddenPackage.Y__Z: + setZ((Z) newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * + * + * @generated + */ + @Override + public void eUnset(int featureID) { + switch (featureID) { + case HiddenPackage.Y__Z: + setZ((Z) null); + return; + } + super.eUnset(featureID); + } + + /** + * + * + * @generated + */ + @Override + public boolean eIsSet(int featureID) { + switch (featureID) { + case HiddenPackage.Y__Z: + return z != null; + } + return super.eIsSet(featureID); + } + +} //YImpl diff --git a/SomeMetamodel/src/somemetamodelextension/hidden/impl/ZImpl.java b/SomeMetamodel/src/somemetamodelextension/hidden/impl/ZImpl.java new file mode 100644 index 0000000..397e734 --- /dev/null +++ b/SomeMetamodel/src/somemetamodelextension/hidden/impl/ZImpl.java @@ -0,0 +1,232 @@ +/** + */ +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 'Z'. + * + *

+ * The following features are implemented: + *

    + *
  • {@link somemetamodelextension.hidden.impl.ZImpl#getY Y}
  • + *
  • {@link somemetamodelextension.hidden.impl.ZImpl#getI_m Im}
  • + *
+ *

+ * + * @generated + */ +public class ZImpl extends AbstractShareableEObject implements Z { + /** + * The cached value of the '{@link #getY() Y}' reference. + * + * + * @see #getY() + * @generated + * @ordered + */ + protected Y y; + + /** + * The default value of the '{@link #getI_m() Im}' attribute. + * + * + * @see #getI_m() + * @generated + * @ordered + */ + protected static final String IM_EDEFAULT = null; + + /** + * The cached value of the '{@link #getI_m() Im}' attribute. + * + * + * @see #getI_m() + * @generated + * @ordered + */ + protected String i_m = IM_EDEFAULT; + + /** + * + * + * @generated + */ + protected ZImpl() { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return HiddenPackage.Literals.Z; + } + + /** + * + * + * @generated + */ + public Y getY() { + if (y != null && ((EObject) y).eIsProxy()) { + InternalEObject oldY = (InternalEObject) y; + y = (Y) eResolveProxy(oldY); + if (y != oldY) { + if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.RESOLVE, + HiddenPackage.Z__Y, oldY, y)); + } + } + return y; + } + + /** + * + * + * @generated + */ + public Y basicGetY() { + return y; + } + + /** + * + * + * @generated + */ + public void setY(Y newY) { + Y oldY = y; + y = newY; + if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, + HiddenPackage.Z__Y, oldY, y)); + } + + /** + * + * + * @generated + */ + public String getI_m() { + return i_m; + } + + /** + * + * + * @generated + */ + public void setI_m(String newI_m) { + String oldI_m = i_m; + i_m = newI_m; + if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, + HiddenPackage.Z__IM, oldI_m, i_m)); + } + + /** + * + * + * @generated + */ + @Override + public Object eGet(int featureID, boolean resolve, boolean coreType) { + switch (featureID) { + case HiddenPackage.Z__Y: + if (resolve) + return getY(); + return basicGetY(); + case HiddenPackage.Z__IM: + return getI_m(); + } + return super.eGet(featureID, resolve, coreType); + } + + /** + * + * + * @generated + */ + @Override + public void eSet(int featureID, Object newValue) { + switch (featureID) { + case HiddenPackage.Z__Y: + setY((Y) newValue); + return; + case HiddenPackage.Z__IM: + setI_m((String) newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * + * + * @generated + */ + @Override + public void eUnset(int featureID) { + switch (featureID) { + case HiddenPackage.Z__Y: + setY((Y) null); + return; + case HiddenPackage.Z__IM: + setI_m(IM_EDEFAULT); + return; + } + super.eUnset(featureID); + } + + /** + * + * + * @generated + */ + @Override + public boolean eIsSet(int featureID) { + switch (featureID) { + case HiddenPackage.Z__Y: + return y != null; + case HiddenPackage.Z__IM: + return IM_EDEFAULT == null ? i_m != null : !IM_EDEFAULT.equals(i_m); + } + return super.eIsSet(featureID); + } + + /** + * + * + * @generated + */ + @Override + public String toString() { + if (eIsProxy()) + return super.toString(); + + StringBuffer result = new StringBuffer(super.toString()); + result.append(" (i_m: "); + result.append(i_m); + result.append(')'); + return result.toString(); + } + +} //ZImpl diff --git a/SomeMetamodel/src/somemetamodelextension/hidden/util/HiddenAdapterFactory.java b/SomeMetamodel/src/somemetamodelextension/hidden/util/HiddenAdapterFactory.java new file mode 100644 index 0000000..fe18acc --- /dev/null +++ b/SomeMetamodel/src/somemetamodelextension/hidden/util/HiddenAdapterFactory.java @@ -0,0 +1,138 @@ +/** + */ +package somemetamodelextension.hidden.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.hidden.*; + +/** + * + * The Adapter Factory for the model. + * It provides an adapter createXXX method for each class of the model. + * + * @see somemetamodelextension.hidden.HiddenPackage + * @generated + */ +public class HiddenAdapterFactory extends AdapterFactoryImpl { + /** + * The cached model package. + * + * + * @generated + */ + protected static HiddenPackage modelPackage; + + /** + * Creates an instance of the adapter factory. + * + * + * @generated + */ + public HiddenAdapterFactory() { + if (modelPackage == null) { + modelPackage = HiddenPackage.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 HiddenSwitch modelSwitch = new HiddenSwitch() { + @Override + public Adapter caseY(Y object) { + return createYAdapter(); + } + + @Override + public Adapter caseZ(Z object) { + return createZAdapter(); + } + + @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.hidden.Y Y}'. + * + * 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.hidden.Y + * @generated + */ + public Adapter createYAdapter() { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link somemetamodelextension.hidden.Z Z}'. + * + * 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.hidden.Z + * @generated + */ + public Adapter createZAdapter() { + 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; + } + +} //HiddenAdapterFactory diff --git a/SomeMetamodel/src/somemetamodelextension/hidden/util/HiddenSwitch.java b/SomeMetamodel/src/somemetamodelextension/hidden/util/HiddenSwitch.java new file mode 100644 index 0000000..df66ba4 --- /dev/null +++ b/SomeMetamodel/src/somemetamodelextension/hidden/util/HiddenSwitch.java @@ -0,0 +1,134 @@ +/** + */ +package somemetamodelextension.hidden.util; + +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.EPackage; + +import org.eclipse.emf.ecore.util.Switch; + +import somemetamodelextension.hidden.*; + +/** + * + * 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.hidden.HiddenPackage + * @generated + */ +public class HiddenSwitch extends Switch { + /** + * The cached model package + * + * + * @generated + */ + protected static HiddenPackage modelPackage; + + /** + * Creates an instance of the switch. + * + * + * @generated + */ + public HiddenSwitch() { + if (modelPackage == null) { + modelPackage = HiddenPackage.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 HiddenPackage.Y: { + Y y = (Y) theEObject; + T result = caseY(y); + if (result == null) + result = defaultCase(theEObject); + return result; + } + case HiddenPackage.Z: { + Z z = (Z) theEObject; + T result = caseZ(z); + if (result == null) + result = defaultCase(theEObject); + return result; + } + default: + return defaultCase(theEObject); + } + } + + /** + * Returns the result of interpreting the object as an instance of 'Y'. + * + * 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 'Y'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseY(Y object) { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'Z'. + * + * 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 'Z'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseZ(Z 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; + } + +} //HiddenSwitch diff --git a/SomeMetamodel/src/somemetamodelextension/impl/RImpl.java b/SomeMetamodel/src/somemetamodelextension/impl/RImpl.java new file mode 100644 index 0000000..8649a74 --- /dev/null +++ b/SomeMetamodel/src/somemetamodelextension/impl/RImpl.java @@ -0,0 +1,221 @@ +/** + */ +package somemetamodelextension.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.impl.ENotificationImpl; + +import somemetamodelextension.R; +import somemetamodelextension.SomemetamodelextensionPackage; + +/** + * + * An implementation of the model object 'R'. + * + *

+ * The following features are implemented: + *

    + *
  • {@link somemetamodelextension.impl.RImpl#getA_m Am}
  • + *
  • {@link somemetamodelextension.impl.RImpl#getB B}
  • + *
+ *

+ * + * @generated + */ +public class RImpl extends AbstractShareableEObject implements R { + /** + * The default value of the '{@link #getA_m() Am}' attribute. + * + * + * @see #getA_m() + * @generated + * @ordered + */ + protected static final int AM_EDEFAULT = 0; + + /** + * The cached value of the '{@link #getA_m() Am}' attribute. + * + * + * @see #getA_m() + * @generated + * @ordered + */ + protected int a_m = AM_EDEFAULT; + + /** + * The default value of the '{@link #getB() B}' attribute. + * + * + * @see #getB() + * @generated + * @ordered + */ + protected static final int B_EDEFAULT = 0; + + /** + * The cached value of the '{@link #getB() B}' attribute. + * + * + * @see #getB() + * @generated + * @ordered + */ + protected int b = B_EDEFAULT; + + /** + * + * + * @generated + */ + protected RImpl() { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return SomemetamodelextensionPackage.Literals.R; + } + + /** + * + * + * @generated + */ + public int getA_m() { + return a_m; + } + + /** + * + * + * @generated + */ + public void setA_m(int newA_m) { + int oldA_m = a_m; + a_m = newA_m; + if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, + SomemetamodelextensionPackage.R__AM, oldA_m, a_m)); + } + + /** + * + * + * @generated + */ + public int getB() { + return b; + } + + /** + * + * + * @generated + */ + public void setB(int newB) { + int oldB = b; + b = newB; + if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, + SomemetamodelextensionPackage.R__B, oldB, b)); + } + + /** + * + * + * @generated + */ + @Override + public Object eGet(int featureID, boolean resolve, boolean coreType) { + switch (featureID) { + case SomemetamodelextensionPackage.R__AM: + return getA_m(); + case SomemetamodelextensionPackage.R__B: + return getB(); + } + return super.eGet(featureID, resolve, coreType); + } + + /** + * + * + * @generated + */ + @Override + public void eSet(int featureID, Object newValue) { + switch (featureID) { + case SomemetamodelextensionPackage.R__AM: + setA_m((Integer) newValue); + return; + case SomemetamodelextensionPackage.R__B: + setB((Integer) newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * + * + * @generated + */ + @Override + public void eUnset(int featureID) { + switch (featureID) { + case SomemetamodelextensionPackage.R__AM: + setA_m(AM_EDEFAULT); + return; + case SomemetamodelextensionPackage.R__B: + setB(B_EDEFAULT); + return; + } + super.eUnset(featureID); + } + + /** + * + * + * @generated + */ + @Override + public boolean eIsSet(int featureID) { + switch (featureID) { + case SomemetamodelextensionPackage.R__AM: + return a_m != AM_EDEFAULT; + case SomemetamodelextensionPackage.R__B: + return b != B_EDEFAULT; + } + return super.eIsSet(featureID); + } + + /** + * + * + * @generated + */ + @Override + public String toString() { + if (eIsProxy()) + return super.toString(); + + StringBuffer result = new StringBuffer(super.toString()); + result.append(" (a_m: "); + result.append(a_m); + result.append(", b: "); + result.append(b); + result.append(')'); + return result.toString(); + } + +} //RImpl diff --git a/SomeMetamodel/src/somemetamodelextension/impl/SomemetamodelextensionFactoryImpl.java b/SomeMetamodel/src/somemetamodelextension/impl/SomemetamodelextensionFactoryImpl.java new file mode 100644 index 0000000..e629230 --- /dev/null +++ b/SomeMetamodel/src/somemetamodelextension/impl/SomemetamodelextensionFactoryImpl.java @@ -0,0 +1,110 @@ +/** + */ +package somemetamodelextension.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.*; + +/** + * + * An implementation of the model Factory. + * + * @generated + */ +public class SomemetamodelextensionFactoryImpl extends EFactoryImpl implements + SomemetamodelextensionFactory { + /** + * Creates the default factory implementation. + * + * + * @generated + */ + public static SomemetamodelextensionFactory init() { + try { + SomemetamodelextensionFactory theSomemetamodelextensionFactory = (SomemetamodelextensionFactory) EPackage.Registry.INSTANCE + .getEFactory(SomemetamodelextensionPackage.eNS_URI); + if (theSomemetamodelextensionFactory != null) { + return theSomemetamodelextensionFactory; + } + } catch (Exception exception) { + EcorePlugin.INSTANCE.log(exception); + } + return new SomemetamodelextensionFactoryImpl(); + } + + /** + * Creates an instance of the factory. + * + * + * @generated + */ + public SomemetamodelextensionFactoryImpl() { + super(); + } + + /** + * + * + * @generated + */ + @Override + public EObject create(EClass eClass) { + switch (eClass.getClassifierID()) { + case SomemetamodelextensionPackage.X: + return (EObject) createX(); + case SomemetamodelextensionPackage.R: + return (EObject) createR(); + default: + throw new IllegalArgumentException("The class '" + eClass.getName() + + "' is not a valid classifier"); + } + } + + /** + * + * + * @generated + */ + public X createX() { + XImpl x = new XImpl(); + return x; + } + + /** + * + * + * @generated + */ + public R createR() { + RImpl r = new RImpl(); + return r; + } + + /** + * + * + * @generated + */ + public SomemetamodelextensionPackage getSomemetamodelextensionPackage() { + return (SomemetamodelextensionPackage) getEPackage(); + } + + /** + * + * + * @deprecated + * @generated + */ + @Deprecated + public static SomemetamodelextensionPackage getPackage() { + return SomemetamodelextensionPackage.eINSTANCE; + } + +} //SomemetamodelextensionFactoryImpl diff --git a/SomeMetamodel/src/somemetamodelextension/impl/SomemetamodelextensionPackageImpl.java b/SomeMetamodel/src/somemetamodelextension/impl/SomemetamodelextensionPackageImpl.java new file mode 100644 index 0000000..15c2ea0 --- /dev/null +++ b/SomeMetamodel/src/somemetamodelextension/impl/SomemetamodelextensionPackageImpl.java @@ -0,0 +1,250 @@ +/** + */ +package somemetamodelextension.impl; + +import org.eclipse.emf.ecore.EAttribute; +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EPackage; + +import org.eclipse.emf.ecore.impl.EPackageImpl; + +import somemetamodel.SomemetamodelPackage; + +import somemetamodel.impl.SomemetamodelPackageImpl; + +import somemetamodelextension.SomemetamodelextensionFactory; +import somemetamodelextension.SomemetamodelextensionPackage; + +import somemetamodelextension.hidden.HiddenPackage; + +import somemetamodelextension.hidden.impl.HiddenPackageImpl; + +/** + * + * An implementation of the model Package. + * + * @generated + */ +public class SomemetamodelextensionPackageImpl extends EPackageImpl implements + SomemetamodelextensionPackage { + /** + * + * + * @generated + */ + private EClass xEClass = null; + + /** + * + * + * @generated + */ + private EClass rEClass = 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.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 0000000..0234c2e --- /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 0000000..a1d343c --- /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 0000000..e326545 --- /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 0000000..aadf874 --- /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'. + * + *

+ * The following features are implemented: + *

    + *
  • + * { @link somemetamodel.impl.BDeepPImpl#getN1_m N1 m} + *
  • + *
  • + * { @link somemetamodel.impl.BDeepPImpl#getN2 N2} + *
  • + *
+ *

+ * @generated + */ +public class BDeepPImpl extends AbstractShareableEObject implements B { + protected B cloned; + /** + * The default value of the ' + * { @link #getN1_m() N1 m} + * ' attribute. + * + * + * @see #getN1_m() + * @generated + * @ordered + */ + protected static final int N1_M_EDEFAULT = 0; + /** + * The cached value of the ' + * { @link #getN1_m() N1 m} + * ' attribute. + * + * + * @see #getN1_m() + * @generated + * @ordered + */ + protected int n1_m = N1_M_EDEFAULT; + /** + * The default value of the ' + * { @link #getN2() N2} + * ' attribute. + * + * + * @see #getN2() + * @generated + * @ordered + */ + protected static final byte N2_EDEFAULT = 0x00; + + /** + * + * + * @generated + */ + protected BDeepPImpl(B clonedParam) { + super(); + cloned = clonedParam; + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return SomemetamodelPackage.Literals.B; + } + + /** + * + * + * @generated + */ + public int getN1_m() { + return n1_m; + } + + /** + * + * + * @generated + */ + public void setN1_m(int newN1_m) { + int oldN1_m = n1_m; + n1_m = newN1_m; + if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, + SomemetamodelPackage.B__N1_M, oldN1_m, n1_m)); + + } + + /** + * + * + * @generated + */ + public byte getN2() { + return cloned.getN2(); + } + + /** + * + * + * @generated + */ + public void setN2(byte newN2) { + System.out + .println("[Info] BDeepPImpl: n2 is readonly and cannot be set."); + } + + /** + * + * + * @generated + */ + @Override + public Object eGet(int featureID, boolean resolve, boolean coreType) { + switch (featureID) { + case SomemetamodelPackage.B__N1_M: + return getN1_m(); + case SomemetamodelPackage.B__N2: + return getN2(); + } + return super.eGet(featureID, resolve, coreType); + } + + /** + * + * + * @generated + */ + @Override + public void eSet(int featureID, Object newValue) { + switch (featureID) { + case SomemetamodelPackage.B__N1_M: + setN1_m((Integer) newValue); + return; + case SomemetamodelPackage.B__N2: + setN2((Byte) newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * + * + * @generated + */ + @Override + public void eUnset(int featureID) { + switch (featureID) { + case SomemetamodelPackage.B__N1_M: + setN1_m(N1_M_EDEFAULT); + return; + case SomemetamodelPackage.B__N2: + setN2(N2_EDEFAULT); + return; + } + super.eUnset(featureID); + } + + /** + * + * + * @generated + */ + @Override + public boolean eIsSet(int featureID) { + switch (featureID) { + case SomemetamodelPackage.B__N1_M: + return n1_m != N1_M_EDEFAULT; + case SomemetamodelPackage.B__N2: + return cloned.getN2() != N2_EDEFAULT; + } + return super.eIsSet(featureID); + } + + /** + * + * + * @generated + */ + @Override + public String toString() { + if (eIsProxy()) + return super.toString(); + + StringBuffer result = new StringBuffer(super.toString()); + result.append(" (n1_m: "); + result.append(n1_m); + result.append(", n2: "); + result.append(cloned.getN2()); + result.append(')'); + return result.toString(); + } + +} +//BImpl + diff --git a/SomeMetamodel/src/somemmdeep/RDeepPImpl.java b/SomeMetamodel/src/somemmdeep/RDeepPImpl.java new file mode 100644 index 0000000..de31f46 --- /dev/null +++ b/SomeMetamodel/src/somemmdeep/RDeepPImpl.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 somemetamodelextension.R; +import somemetamodelextension.SomemetamodelextensionPackage; + +/** + * + * An implementation of the model object 'R'. + * + *

+ * The following features are implemented: + *

    + *
  • + * { @link somemetamodelextension.impl.RDeepPImpl#getA_m Am} + *
  • + *
  • + * { @link somemetamodelextension.impl.RDeepPImpl#getB B} + *
  • + *
+ *

+ * @generated + */ +public class RDeepPImpl extends AbstractShareableEObject implements R { + protected R cloned; + /** + * The default value of the ' + * { @link #getA_m() Am} + * ' attribute. + * + * + * @see #getA_m() + * @generated + * @ordered + */ + protected static final int AM_EDEFAULT = 0; + /** + * The cached value of the ' + * { @link #getA_m() Am} + * ' attribute. + * + * + * @see #getA_m() + * @generated + * @ordered + */ + protected int a_m = AM_EDEFAULT; + /** + * The default value of the ' + * { @link #getB() B} + * ' attribute. + * + * + * @see #getB() + * @generated + * @ordered + */ + protected static final int B_EDEFAULT = 0; + + /** + * + * + * @generated + */ + protected RDeepPImpl(R clonedParam) { + super(); + cloned = clonedParam; + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return SomemetamodelextensionPackage.Literals.R; + } + + /** + * + * + * @generated + */ + public int getA_m() { + return a_m; + } + + /** + * + * + * @generated + */ + public void setA_m(int newA_m) { + int oldA_m = a_m; + a_m = newA_m; + if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, + SomemetamodelextensionPackage.R__AM, oldA_m, a_m)); + + } + + /** + * + * + * @generated + */ + public int getB() { + return cloned.getB(); + } + + /** + * + * + * @generated + */ + public void setB(int newB) { + System.out + .println("[Info] RDeepPImpl: b is readonly and cannot be set."); + } + + /** + * + * + * @generated + */ + @Override + public Object eGet(int featureID, boolean resolve, boolean coreType) { + switch (featureID) { + case SomemetamodelextensionPackage.R__AM: + return getA_m(); + case SomemetamodelextensionPackage.R__B: + return getB(); + } + return super.eGet(featureID, resolve, coreType); + } + + /** + * + * + * @generated + */ + @Override + public void eSet(int featureID, Object newValue) { + switch (featureID) { + case SomemetamodelextensionPackage.R__AM: + setA_m((Integer) newValue); + return; + case SomemetamodelextensionPackage.R__B: + setB((Integer) newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * + * + * @generated + */ + @Override + public void eUnset(int featureID) { + switch (featureID) { + case SomemetamodelextensionPackage.R__AM: + setA_m(AM_EDEFAULT); + return; + case SomemetamodelextensionPackage.R__B: + setB(B_EDEFAULT); + return; + } + super.eUnset(featureID); + } + + /** + * + * + * @generated + */ + @Override + public boolean eIsSet(int featureID) { + switch (featureID) { + case SomemetamodelextensionPackage.R__AM: + return a_m != AM_EDEFAULT; + case SomemetamodelextensionPackage.R__B: + return cloned.getB() != B_EDEFAULT; + } + return super.eIsSet(featureID); + } + + /** + * + * + * @generated + */ + @Override + public String toString() { + if (eIsProxy()) + return super.toString(); + + StringBuffer result = new StringBuffer(super.toString()); + result.append(" (a_m: "); + result.append(a_m); + result.append(", b: "); + result.append(cloned.getB()); + result.append(')'); + return result.toString(); + } + +} +//RImpl + diff --git a/SomeMetamodel/src/somemmdeep/SomeMMDeepCloningMaterial.java b/SomeMetamodel/src/somemmdeep/SomeMMDeepCloningMaterial.java new file mode 100644 index 0000000..072e1e2 --- /dev/null +++ b/SomeMetamodel/src/somemmdeep/SomeMMDeepCloningMaterial.java @@ -0,0 +1,28 @@ +package somemmdeep; + +import fr.inria.diverse.cloning.cloner.common.CloningMaterial; +import fr.inria.diverse.cloning.cloner.emfextension.impl.LooseCopier; +import fr.inria.diverse.cloning.cloner.common.MetamodelTags; + +public class SomeMMDeepCloningMaterial implements CloningMaterial { + private static SomeMMDeepCloningMaterial instance; + private SomeMMDeepTags tags; + + private SomeMMDeepCloningMaterial(SomeMMDeepTags tags) { + this.tags = tags; + }; + + public static SomeMMDeepCloningMaterial getInstance() { + if (instance == null) + instance = new SomeMMDeepCloningMaterial(new SomeMMDeepTags()); + return instance; + } + + public MetamodelTags getTags() { + return tags; + } + + public LooseCopier createLightCopier() { + return new SomeMMDeepLightCopier(); + } +} diff --git a/SomeMetamodel/src/somemmdeep/SomeMMDeepLightCopier.java b/SomeMetamodel/src/somemmdeep/SomeMMDeepLightCopier.java new file mode 100644 index 0000000..26816aa --- /dev/null +++ b/SomeMetamodel/src/somemmdeep/SomeMMDeepLightCopier.java @@ -0,0 +1,18 @@ +package somemmdeep; + +import org.eclipse.emf.ecore.EObject; +import fr.inria.diverse.cloning.cloner.emfextension.impl.LooseCopier; +import somemetamodelextension.R; +import somemetamodel.B; + +@SuppressWarnings("serial") +public class SomeMMDeepLightCopier extends LooseCopier { + protected EObject createCopy(EObject eObject) { + if (eObject instanceof R) + return new RDeepPImpl((R) eObject); + if (eObject instanceof B) + return new BDeepPImpl((B) eObject); + else + return super.createCopy(eObject); + } +} diff --git a/SomeMetamodel/src/somemmdeep/SomeMMDeepTags.java b/SomeMetamodel/src/somemmdeep/SomeMMDeepTags.java new file mode 100644 index 0000000..c5f3420 --- /dev/null +++ b/SomeMetamodel/src/somemmdeep/SomeMMDeepTags.java @@ -0,0 +1,106 @@ +package somemmdeep; + +import org.eclipse.emf.ecore.EClass; +import fr.inria.diverse.cloning.cloner.common.ClassTag; +import fr.inria.diverse.cloning.cloner.common.MetamodelTags; +import org.eclipse.emf.ecore.EStructuralFeature; +import somemetamodelextension.hidden.Y; +import somemetamodelextension.X; +import somemetamodelextension.R; +import somemetamodelextension.hidden.Z; +import somemetamodel.A; +import somemetamodel.E; +import somemetamodel.B; +import somemetamodel.C; +import somemetamodel.D; + +public class SomeMMDeepTags implements MetamodelTags { + public ClassTag getTagOf(EClass eClass) { + if (eClass.equals(somemetamodelextension.hidden.HiddenPackage.eINSTANCE + .getY())) + return ClassTag.NOT_SHAREABLE; + if (eClass + .equals(somemetamodelextension.SomemetamodelextensionPackage.eINSTANCE + .getX())) + return ClassTag.NOT_SHAREABLE; + if (eClass + .equals(somemetamodelextension.SomemetamodelextensionPackage.eINSTANCE + .getR())) + return ClassTag.PARTIALLY_SHAREABLE; + if (eClass.equals(somemetamodelextension.hidden.HiddenPackage.eINSTANCE + .getZ())) + return ClassTag.NOT_SHAREABLE; + if (eClass.equals(somemetamodel.SomemetamodelPackage.eINSTANCE.getA())) + return ClassTag.NOT_SHAREABLE; + if (eClass.equals(somemetamodel.SomemetamodelPackage.eINSTANCE.getE())) + return ClassTag.NOT_SHAREABLE; + if (eClass.equals(somemetamodel.SomemetamodelPackage.eINSTANCE.getB())) + return ClassTag.PARTIALLY_SHAREABLE; + if (eClass.equals(somemetamodel.SomemetamodelPackage.eINSTANCE.getC())) + return ClassTag.NOT_SHAREABLE; + if (eClass.equals(somemetamodel.SomemetamodelPackage.eINSTANCE.getD())) + return ClassTag.NOT_SHAREABLE; + else + return null; + } + + public boolean mayTagClassesShareable() { + return false; + } + + public boolean isPropertyShareable(EStructuralFeature prop) { + if (prop.equals(somemetamodelextension.hidden.HiddenPackage.eINSTANCE + .getY_Z())) + return false; + if (prop.equals(somemetamodelextension.SomemetamodelextensionPackage.eINSTANCE + .getR_A_m())) + return false; + if (prop.equals(somemetamodelextension.SomemetamodelextensionPackage.eINSTANCE + .getR_B())) + return true; + if (prop.equals(somemetamodelextension.hidden.HiddenPackage.eINSTANCE + .getZ_Y())) + return false; + if (prop.equals(somemetamodelextension.hidden.HiddenPackage.eINSTANCE + .getZ_I_m())) + return false; + if (prop.equals(somemetamodel.SomemetamodelPackage.eINSTANCE.getA_B())) + return false; + if (prop.equals(somemetamodel.SomemetamodelPackage.eINSTANCE.getA_C())) + return false; + if (prop.equals(somemetamodel.SomemetamodelPackage.eINSTANCE.getA_D())) + return false; + if (prop.equals(somemetamodel.SomemetamodelPackage.eINSTANCE.getA_E())) + return false; + if (prop.equals(somemetamodel.SomemetamodelPackage.eINSTANCE.getA_X())) + return false; + if (prop.equals(somemetamodel.SomemetamodelPackage.eINSTANCE + .getB_N1_m())) + return false; + if (prop.equals(somemetamodel.SomemetamodelPackage.eINSTANCE.getB_N2())) + return true; + if (prop.equals(somemetamodel.SomemetamodelPackage.eINSTANCE + .getC_Yay_m())) + return false; + if (prop.equals(somemetamodel.SomemetamodelPackage.eINSTANCE.getD_A())) + return false; + else + return false; + } + + public double getCompShareableClassesRatio() { + return 0.0; + } + + public double getPartShareableClassesRatio() { + return 0.2222222222222222; + } + + public double getShareablePropertiesInShareableClassesRatio() { + return 0.14285714285714285; + } + + public double getMeanShareablePropertiesInShareableClasses() { + return 1.0; + } +} diff --git a/SomeMetamodel/src/somemmmutclassonly/AMutClassOnlyPImpl.java b/SomeMetamodel/src/somemmmutclassonly/AMutClassOnlyPImpl.java new file mode 100644 index 0000000..091e16f --- /dev/null +++ b/SomeMetamodel/src/somemmmutclassonly/AMutClassOnlyPImpl.java @@ -0,0 +1,473 @@ +/** + */ + +package somemmmutclassonly; + +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'. + * + *

+ * The following features are implemented: + *

    + *
  • + * { @link somemetamodel.impl.AMutClassOnlyPImpl#getB B} + *
  • + *
  • + * { @link somemetamodel.impl.AMutClassOnlyPImpl#getC C} + *
  • + *
  • + * { @link somemetamodel.impl.AMutClassOnlyPImpl#getD D} + *
  • + *
  • + * { @link somemetamodel.impl.AMutClassOnlyPImpl#getE E} + *
  • + *
  • + * { @link somemetamodel.impl.AMutClassOnlyPImpl#getX X} + *
  • + *
+ *

+ * @generated + */ +public class AMutClassOnlyPImpl extends AbstractShareableEObject implements A { + protected A cloned; + /** + * The cached value of the ' + * { @link #getB() B} + * ' containment reference. + * + * + * @see #getB() + * @generated + * @ordered + */ + protected B b; + /** + * The cached value of the ' + * { @link #getC() C} + * ' reference. + * + * + * @see #getC() + * @generated + * @ordered + */ + protected C c; + /** + * The cached value of the ' + * { @link #getD() D} + * ' reference. + * + * + * @see #getD() + * @generated + * @ordered + */ + protected D d; + + /** + * + * + * @generated + */ + protected AMutClassOnlyPImpl(A clonedParam) { + super(); + cloned = clonedParam; + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return SomemetamodelPackage.Literals.A; + } + + /** + * + * + * @generated + */ + public B getB() { + return b; + } + + /** + * + * + * @generated + */ + public NotificationChain basicSetB(B newB, NotificationChain msgs) { + B oldB = b; + b = newB; + if (eNotificationRequired()) { + ENotificationImpl notification = new ENotificationImpl(this, + Notification.SET, SomemetamodelPackage.A__B, oldB, newB); + if (msgs == null) + msgs = notification; + else + msgs.add(notification); + + } + + return msgs; + } + + /** + * + * + * @generated + */ + public void setB(B newB) { + if (newB != b) { + NotificationChain msgs = null; + if (b != null) + msgs = ((InternalEObject) b).eInverseRemove(this, + EOPPOSITE_FEATURE_BASE - SomemetamodelPackage.A__B, + null, msgs); + + if (newB != null) + msgs = ((InternalEObject) newB).eInverseAdd(this, + EOPPOSITE_FEATURE_BASE - SomemetamodelPackage.A__B, + null, msgs); + + msgs = basicSetB(newB, msgs); + if (msgs != null) + msgs.dispatch(); + + } else if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, + SomemetamodelPackage.A__B, newB, newB)); + + } + + /** + * + * + * @generated + */ + public C getC() { + if (c != null && ((EObject) c).eIsProxy()) { + InternalEObject oldC = (InternalEObject) c; + c = (C) eResolveProxy(oldC); + if (c != oldC) { + if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.RESOLVE, + SomemetamodelPackage.A__C, oldC, c)); + + } + + } + + return c; + } + + /** + * + * + * @generated + */ + public C basicGetC() { + return c; + } + + /** + * + * + * @generated + */ + public void setC(C newC) { + C oldC = c; + c = newC; + if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, + SomemetamodelPackage.A__C, oldC, c)); + + } + + /** + * + * + * @generated + */ + public D getD() { + if (d != null && ((EObject) d).eIsProxy()) { + InternalEObject oldD = (InternalEObject) d; + d = (D) eResolveProxy(oldD); + if (d != oldD) { + if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.RESOLVE, + SomemetamodelPackage.A__D, oldD, d)); + + } + + } + + return d; + } + + /** + * + * + * @generated + */ + public D basicGetD() { + return d; + } + + /** + * + * + * @generated + */ + public NotificationChain basicSetD(D newD, NotificationChain msgs) { + D oldD = d; + d = newD; + if (eNotificationRequired()) { + ENotificationImpl notification = new ENotificationImpl(this, + Notification.SET, SomemetamodelPackage.A__D, oldD, newD); + if (msgs == null) + msgs = notification; + else + msgs.add(notification); + + } + + return msgs; + } + + /** + * + * + * @generated + */ + public void setD(D newD) { + if (newD != d) { + NotificationChain msgs = null; + if (d != null) + msgs = ((InternalEObject) d).eInverseRemove(this, + SomemetamodelPackage.D__A, D.class, msgs); + + if (newD != null) + msgs = ((InternalEObject) newD).eInverseAdd(this, + SomemetamodelPackage.D__A, D.class, msgs); + + msgs = basicSetD(newD, msgs); + if (msgs != null) + msgs.dispatch(); + + } else if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, + SomemetamodelPackage.A__D, newD, newD)); + + } + + /** + * + * + * @generated + */ + public EList getE() { + return cloned.getE(); + } + + /** + * + * + * @generated + */ + public X getX() { + return cloned.getX(); + } + + /** + * + * + * @generated + */ + public X basicGetX() { + return cloned.getX(); + } + + /** + * + * + * @generated + */ + public void setX(X newX) { + System.out + .println("[Info] AMutClassOnlyPImpl: x is readonly and cannot be set."); + } + + /** + * + * + * @generated + */ + @Override + public NotificationChain eInverseAdd(InternalEObject otherEnd, + int featureID, NotificationChain msgs) { + switch (featureID) { + case SomemetamodelPackage.A__D: + if (d != null) + msgs = ((InternalEObject) d).eInverseRemove(this, + SomemetamodelPackage.D__A, D.class, msgs); + + return basicSetD((D) otherEnd, msgs); + } + return super.eInverseAdd(otherEnd, featureID, msgs); + } + + /** + * + * + * @generated + */ + @Override + public NotificationChain eInverseRemove(InternalEObject otherEnd, + int featureID, NotificationChain msgs) { + switch (featureID) { + case SomemetamodelPackage.A__B: + return basicSetB(null, msgs); + case SomemetamodelPackage.A__D: + return basicSetD(null, msgs); + case SomemetamodelPackage.A__E: + return ((InternalEList) getE()).basicRemove(otherEnd, msgs); + } + return super.eInverseRemove(otherEnd, featureID, msgs); + } + + /** + * + * + * @generated + */ + @Override + public Object eGet(int featureID, boolean resolve, boolean coreType) { + switch (featureID) { + case SomemetamodelPackage.A__B: + return getB(); + case SomemetamodelPackage.A__C: + if (resolve) + return getC(); + + return basicGetC(); + case SomemetamodelPackage.A__D: + if (resolve) + return getD(); + + return basicGetD(); + case SomemetamodelPackage.A__E: + return getE(); + case SomemetamodelPackage.A__X: + if (resolve) + return getX(); + + return basicGetX(); + } + return super.eGet(featureID, resolve, coreType); + } + + /** + * + * + * @generated + */ + @SuppressWarnings("unchecked") + @Override + public void eSet(int featureID, Object newValue) { + switch (featureID) { + case SomemetamodelPackage.A__B: + setB((B) newValue); + return; + case SomemetamodelPackage.A__C: + setC((C) newValue); + return; + case SomemetamodelPackage.A__D: + setD((D) newValue); + return; + case SomemetamodelPackage.A__E: + getE().clear(); + getE().addAll((Collection) newValue); + return; + case SomemetamodelPackage.A__X: + setX((X) newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * + * + * @generated + */ + @Override + public void eUnset(int featureID) { + switch (featureID) { + case SomemetamodelPackage.A__B: + setB((B) null); + return; + case SomemetamodelPackage.A__C: + setC((C) null); + return; + case SomemetamodelPackage.A__D: + setD((D) null); + return; + case SomemetamodelPackage.A__E: + getE().clear(); + return; + case SomemetamodelPackage.A__X: + setX((X) null); + return; + } + super.eUnset(featureID); + } + + /** + * + * + * @generated + */ + @Override + public boolean eIsSet(int featureID) { + switch (featureID) { + case SomemetamodelPackage.A__B: + return b != null; + case SomemetamodelPackage.A__C: + return c != null; + case SomemetamodelPackage.A__D: + return d != null; + case SomemetamodelPackage.A__E: + return cloned.getE() != null && !cloned.getE().isEmpty(); + case SomemetamodelPackage.A__X: + return cloned.getX() != null; + } + return super.eIsSet(featureID); + } + +} +//AImpl + diff --git a/SomeMetamodel/src/somemmmutclassonly/BMutClassOnlyPImpl.java b/SomeMetamodel/src/somemmmutclassonly/BMutClassOnlyPImpl.java new file mode 100644 index 0000000..af03937 --- /dev/null +++ b/SomeMetamodel/src/somemmmutclassonly/BMutClassOnlyPImpl.java @@ -0,0 +1,217 @@ +/** + */ + +package somemmmutclassonly; + +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'. + * + *

+ * The following features are implemented: + *

    + *
  • + * { @link somemetamodel.impl.BMutClassOnlyPImpl#getN1_m N1 m} + *
  • + *
  • + * { @link somemetamodel.impl.BMutClassOnlyPImpl#getN2 N2} + *
  • + *
+ *

+ * @generated + */ +public class BMutClassOnlyPImpl extends AbstractShareableEObject implements B { + protected B cloned; + /** + * The default value of the ' + * { @link #getN1_m() N1 m} + * ' attribute. + * + * + * @see #getN1_m() + * @generated + * @ordered + */ + protected static final int N1_M_EDEFAULT = 0; + /** + * The cached value of the ' + * { @link #getN1_m() N1 m} + * ' attribute. + * + * + * @see #getN1_m() + * @generated + * @ordered + */ + protected int n1_m = N1_M_EDEFAULT; + /** + * The default value of the ' + * { @link #getN2() N2} + * ' attribute. + * + * + * @see #getN2() + * @generated + * @ordered + */ + protected static final byte N2_EDEFAULT = 0x00; + + /** + * + * + * @generated + */ + protected BMutClassOnlyPImpl(B clonedParam) { + super(); + cloned = clonedParam; + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return SomemetamodelPackage.Literals.B; + } + + /** + * + * + * @generated + */ + public int getN1_m() { + return n1_m; + } + + /** + * + * + * @generated + */ + public void setN1_m(int newN1_m) { + int oldN1_m = n1_m; + n1_m = newN1_m; + if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, + SomemetamodelPackage.B__N1_M, oldN1_m, n1_m)); + + } + + /** + * + * + * @generated + */ + public byte getN2() { + return cloned.getN2(); + } + + /** + * + * + * @generated + */ + public void setN2(byte newN2) { + System.out + .println("[Info] BMutClassOnlyPImpl: n2 is readonly and cannot be set."); + } + + /** + * + * + * @generated + */ + @Override + public Object eGet(int featureID, boolean resolve, boolean coreType) { + switch (featureID) { + case SomemetamodelPackage.B__N1_M: + return getN1_m(); + case SomemetamodelPackage.B__N2: + return getN2(); + } + return super.eGet(featureID, resolve, coreType); + } + + /** + * + * + * @generated + */ + @Override + public void eSet(int featureID, Object newValue) { + switch (featureID) { + case SomemetamodelPackage.B__N1_M: + setN1_m((Integer) newValue); + return; + case SomemetamodelPackage.B__N2: + setN2((Byte) newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * + * + * @generated + */ + @Override + public void eUnset(int featureID) { + switch (featureID) { + case SomemetamodelPackage.B__N1_M: + setN1_m(N1_M_EDEFAULT); + return; + case SomemetamodelPackage.B__N2: + setN2(N2_EDEFAULT); + return; + } + super.eUnset(featureID); + } + + /** + * + * + * @generated + */ + @Override + public boolean eIsSet(int featureID) { + switch (featureID) { + case SomemetamodelPackage.B__N1_M: + return n1_m != N1_M_EDEFAULT; + case SomemetamodelPackage.B__N2: + return cloned.getN2() != N2_EDEFAULT; + } + return super.eIsSet(featureID); + } + + /** + * + * + * @generated + */ + @Override + public String toString() { + if (eIsProxy()) + return super.toString(); + + StringBuffer result = new StringBuffer(super.toString()); + result.append(" (n1_m: "); + result.append(n1_m); + result.append(", n2: "); + result.append(cloned.getN2()); + result.append(')'); + return result.toString(); + } + +} +//BImpl + diff --git a/SomeMetamodel/src/somemmmutclassonly/RMutClassOnlyPImpl.java b/SomeMetamodel/src/somemmmutclassonly/RMutClassOnlyPImpl.java new file mode 100644 index 0000000..15898c0 --- /dev/null +++ b/SomeMetamodel/src/somemmmutclassonly/RMutClassOnlyPImpl.java @@ -0,0 +1,217 @@ +/** + */ + +package somemmmutclassonly; + +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 somemetamodelextension.R; +import somemetamodelextension.SomemetamodelextensionPackage; + +/** + * + * An implementation of the model object 'R'. + * + *

+ * The following features are implemented: + *

    + *
  • + * { @link somemetamodelextension.impl.RMutClassOnlyPImpl#getA_m Am} + *
  • + *
  • + * { @link somemetamodelextension.impl.RMutClassOnlyPImpl#getB B} + *
  • + *
+ *

+ * @generated + */ +public class RMutClassOnlyPImpl extends AbstractShareableEObject implements R { + protected R cloned; + /** + * The default value of the ' + * { @link #getA_m() Am} + * ' attribute. + * + * + * @see #getA_m() + * @generated + * @ordered + */ + protected static final int AM_EDEFAULT = 0; + /** + * The cached value of the ' + * { @link #getA_m() Am} + * ' attribute. + * + * + * @see #getA_m() + * @generated + * @ordered + */ + protected int a_m = AM_EDEFAULT; + /** + * The default value of the ' + * { @link #getB() B} + * ' attribute. + * + * + * @see #getB() + * @generated + * @ordered + */ + protected static final int B_EDEFAULT = 0; + + /** + * + * + * @generated + */ + protected RMutClassOnlyPImpl(R clonedParam) { + super(); + cloned = clonedParam; + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return SomemetamodelextensionPackage.Literals.R; + } + + /** + * + * + * @generated + */ + public int getA_m() { + return a_m; + } + + /** + * + * + * @generated + */ + public void setA_m(int newA_m) { + int oldA_m = a_m; + a_m = newA_m; + if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, + SomemetamodelextensionPackage.R__AM, oldA_m, a_m)); + + } + + /** + * + * + * @generated + */ + public int getB() { + return cloned.getB(); + } + + /** + * + * + * @generated + */ + public void setB(int newB) { + System.out + .println("[Info] RMutClassOnlyPImpl: b is readonly and cannot be set."); + } + + /** + * + * + * @generated + */ + @Override + public Object eGet(int featureID, boolean resolve, boolean coreType) { + switch (featureID) { + case SomemetamodelextensionPackage.R__AM: + return getA_m(); + case SomemetamodelextensionPackage.R__B: + return getB(); + } + return super.eGet(featureID, resolve, coreType); + } + + /** + * + * + * @generated + */ + @Override + public void eSet(int featureID, Object newValue) { + switch (featureID) { + case SomemetamodelextensionPackage.R__AM: + setA_m((Integer) newValue); + return; + case SomemetamodelextensionPackage.R__B: + setB((Integer) newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * + * + * @generated + */ + @Override + public void eUnset(int featureID) { + switch (featureID) { + case SomemetamodelextensionPackage.R__AM: + setA_m(AM_EDEFAULT); + return; + case SomemetamodelextensionPackage.R__B: + setB(B_EDEFAULT); + return; + } + super.eUnset(featureID); + } + + /** + * + * + * @generated + */ + @Override + public boolean eIsSet(int featureID) { + switch (featureID) { + case SomemetamodelextensionPackage.R__AM: + return a_m != AM_EDEFAULT; + case SomemetamodelextensionPackage.R__B: + return cloned.getB() != B_EDEFAULT; + } + return super.eIsSet(featureID); + } + + /** + * + * + * @generated + */ + @Override + public String toString() { + if (eIsProxy()) + return super.toString(); + + StringBuffer result = new StringBuffer(super.toString()); + result.append(" (a_m: "); + result.append(a_m); + result.append(", b: "); + result.append(cloned.getB()); + result.append(')'); + return result.toString(); + } + +} +//RImpl + diff --git a/SomeMetamodel/src/somemmmutclassonly/SomeMMMutClassOnlyCloningMaterial.java b/SomeMetamodel/src/somemmmutclassonly/SomeMMMutClassOnlyCloningMaterial.java new file mode 100644 index 0000000..051c0a9 --- /dev/null +++ b/SomeMetamodel/src/somemmmutclassonly/SomeMMMutClassOnlyCloningMaterial.java @@ -0,0 +1,29 @@ +package somemmmutclassonly; + +import fr.inria.diverse.cloning.cloner.common.CloningMaterial; +import fr.inria.diverse.cloning.cloner.emfextension.impl.LooseCopier; +import fr.inria.diverse.cloning.cloner.common.MetamodelTags; + +public class SomeMMMutClassOnlyCloningMaterial implements CloningMaterial { + private static SomeMMMutClassOnlyCloningMaterial instance; + private SomeMMMutClassOnlyTags tags; + + private SomeMMMutClassOnlyCloningMaterial(SomeMMMutClassOnlyTags tags) { + this.tags = tags; + }; + + public static SomeMMMutClassOnlyCloningMaterial getInstance() { + if (instance == null) + instance = new SomeMMMutClassOnlyCloningMaterial( + new SomeMMMutClassOnlyTags()); + return instance; + } + + public MetamodelTags getTags() { + return tags; + } + + public LooseCopier createLightCopier() { + return new SomeMMMutClassOnlyLightCopier(); + } +} diff --git a/SomeMetamodel/src/somemmmutclassonly/SomeMMMutClassOnlyLightCopier.java b/SomeMetamodel/src/somemmmutclassonly/SomeMMMutClassOnlyLightCopier.java new file mode 100644 index 0000000..7de9ce2 --- /dev/null +++ b/SomeMetamodel/src/somemmmutclassonly/SomeMMMutClassOnlyLightCopier.java @@ -0,0 +1,21 @@ +package somemmmutclassonly; + +import org.eclipse.emf.ecore.EObject; +import fr.inria.diverse.cloning.cloner.emfextension.impl.LooseCopier; +import somemetamodelextension.R; +import somemetamodel.A; +import somemetamodel.B; + +@SuppressWarnings("serial") +public class SomeMMMutClassOnlyLightCopier extends LooseCopier { + protected EObject createCopy(EObject eObject) { + if (eObject instanceof R) + return new RMutClassOnlyPImpl((R) eObject); + if (eObject instanceof A) + return new AMutClassOnlyPImpl((A) eObject); + if (eObject instanceof B) + return new BMutClassOnlyPImpl((B) eObject); + else + return super.createCopy(eObject); + } +} diff --git a/SomeMetamodel/src/somemmmutclassonly/SomeMMMutClassOnlyTags.java b/SomeMetamodel/src/somemmmutclassonly/SomeMMMutClassOnlyTags.java new file mode 100644 index 0000000..cb8b3c3 --- /dev/null +++ b/SomeMetamodel/src/somemmmutclassonly/SomeMMMutClassOnlyTags.java @@ -0,0 +1,106 @@ +package somemmmutclassonly; + +import org.eclipse.emf.ecore.EClass; +import fr.inria.diverse.cloning.cloner.common.ClassTag; +import fr.inria.diverse.cloning.cloner.common.MetamodelTags; +import org.eclipse.emf.ecore.EStructuralFeature; +import somemetamodelextension.hidden.Y; +import somemetamodelextension.X; +import somemetamodelextension.R; +import somemetamodelextension.hidden.Z; +import somemetamodel.A; +import somemetamodel.E; +import somemetamodel.B; +import somemetamodel.C; +import somemetamodel.D; + +public class SomeMMMutClassOnlyTags implements MetamodelTags { + public ClassTag getTagOf(EClass eClass) { + if (eClass.equals(somemetamodelextension.hidden.HiddenPackage.eINSTANCE + .getY())) + return ClassTag.NOT_SHAREABLE; + if (eClass + .equals(somemetamodelextension.SomemetamodelextensionPackage.eINSTANCE + .getX())) + return ClassTag.COMPLETELY_SHAREABLE; + if (eClass + .equals(somemetamodelextension.SomemetamodelextensionPackage.eINSTANCE + .getR())) + return ClassTag.PARTIALLY_SHAREABLE; + if (eClass.equals(somemetamodelextension.hidden.HiddenPackage.eINSTANCE + .getZ())) + return ClassTag.NOT_SHAREABLE; + if (eClass.equals(somemetamodel.SomemetamodelPackage.eINSTANCE.getA())) + return ClassTag.PARTIALLY_SHAREABLE; + if (eClass.equals(somemetamodel.SomemetamodelPackage.eINSTANCE.getE())) + return ClassTag.COMPLETELY_SHAREABLE; + if (eClass.equals(somemetamodel.SomemetamodelPackage.eINSTANCE.getB())) + return ClassTag.PARTIALLY_SHAREABLE; + if (eClass.equals(somemetamodel.SomemetamodelPackage.eINSTANCE.getC())) + return ClassTag.NOT_SHAREABLE; + if (eClass.equals(somemetamodel.SomemetamodelPackage.eINSTANCE.getD())) + return ClassTag.NOT_SHAREABLE; + else + return null; + } + + public boolean mayTagClassesShareable() { + return true; + } + + public boolean isPropertyShareable(EStructuralFeature prop) { + if (prop.equals(somemetamodelextension.hidden.HiddenPackage.eINSTANCE + .getY_Z())) + return false; + if (prop.equals(somemetamodelextension.SomemetamodelextensionPackage.eINSTANCE + .getR_A_m())) + return false; + if (prop.equals(somemetamodelextension.SomemetamodelextensionPackage.eINSTANCE + .getR_B())) + return true; + if (prop.equals(somemetamodelextension.hidden.HiddenPackage.eINSTANCE + .getZ_Y())) + return false; + if (prop.equals(somemetamodelextension.hidden.HiddenPackage.eINSTANCE + .getZ_I_m())) + return false; + if (prop.equals(somemetamodel.SomemetamodelPackage.eINSTANCE.getA_B())) + return false; + if (prop.equals(somemetamodel.SomemetamodelPackage.eINSTANCE.getA_C())) + return false; + if (prop.equals(somemetamodel.SomemetamodelPackage.eINSTANCE.getA_D())) + return false; + if (prop.equals(somemetamodel.SomemetamodelPackage.eINSTANCE.getA_E())) + return true; + if (prop.equals(somemetamodel.SomemetamodelPackage.eINSTANCE.getA_X())) + return true; + if (prop.equals(somemetamodel.SomemetamodelPackage.eINSTANCE + .getB_N1_m())) + return false; + if (prop.equals(somemetamodel.SomemetamodelPackage.eINSTANCE.getB_N2())) + return true; + if (prop.equals(somemetamodel.SomemetamodelPackage.eINSTANCE + .getC_Yay_m())) + return false; + if (prop.equals(somemetamodel.SomemetamodelPackage.eINSTANCE.getD_A())) + return false; + else + return false; + } + + public double getCompShareableClassesRatio() { + return 0.2222222222222222; + } + + public double getPartShareableClassesRatio() { + return 0.3333333333333333; + } + + public double getShareablePropertiesInShareableClassesRatio() { + return 0.14285714285714285; + } + + public double getMeanShareablePropertiesInShareableClasses() { + return 0.6666666666666666; + } +} diff --git a/TreeMetamodel/.classpath b/TreeMetamodel/.classpath new file mode 100644 index 0000000..67e2a52 --- /dev/null +++ b/TreeMetamodel/.classpath @@ -0,0 +1,6 @@ + + + + + + diff --git a/TreeMetamodel/.project b/TreeMetamodel/.project new file mode 100644 index 0000000..7f4e4f5 --- /dev/null +++ b/TreeMetamodel/.project @@ -0,0 +1,28 @@ + + + TreeMetamodel + + + + + + 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/TreeMetamodel/.settings/org.eclipse.core.resources.prefs b/TreeMetamodel/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 0000000..8e024c0 --- /dev/null +++ b/TreeMetamodel/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,4 @@ +eclipse.preferences.version=1 +encoding//model/TreeMetamodel.ecorediag=UTF-8 +encoding//model/TreeMetamodelExtension.ecore=UTF-8 +encoding//model/TreeMetamodelExtension.ecorediag=UTF-8 diff --git a/TreeMetamodel/META-INF/MANIFEST.MF b/TreeMetamodel/META-INF/MANIFEST.MF new file mode 100644 index 0000000..30e2f1a --- /dev/null +++ b/TreeMetamodel/META-INF/MANIFEST.MF @@ -0,0 +1,19 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: %pluginName +Bundle-SymbolicName: TreeMetamodel;singleton:=true +Bundle-Version: 1.0.0.qualifier +Bundle-ClassPath: . +Bundle-Vendor: %providerName +Bundle-Localization: plugin +Bundle-RequiredExecutionEnvironment: J2SE-1.5 +Export-Package: treemetamodel, + treemetamodel.impl, + treemetamodel.util, + treemetamodelextension, + treemetamodelextension.impl, + treemetamodelextension.util +Require-Bundle: org.eclipse.core.runtime, + org.eclipse.emf.ecore;visibility:=reexport +Bundle-ActivationPolicy: lazy +Import-Package: fancyemfcloning.common diff --git a/TreeMetamodel/bin/treemetamodel/A.class b/TreeMetamodel/bin/treemetamodel/A.class new file mode 100644 index 0000000000000000000000000000000000000000..8c5d04a1bde8036d3e9f18f2895e98ba3e3f5a23 GIT binary patch literal 385 zcma)2Jx{|h6g-!-q2;43l#vlBS@6JuRD{%4?No`O5<=Zfcto!37!pLPpMFL;|CodRNk@B9{-(JIX?gp1`H^ zxuneKw~{2;SFW8WxolemqMX89;5;Cd-DLB!9T{v6U_au2{N1By-lfLRLW= zxm@cquvvej^FoEnlfdnNG0?A5QNA4U4RgXLYoo^8eF770;M={R7fe1(mTiIWMrR_&zFZw!2|G6QI?|u z8VbuJeLJ(-IsW|~0KDNjLQS9_JdvfKtlN^2afF7zV5feRG%C;J$JdV15TPaT>U<_C zHF{r=B>Tm{kP*5$Gc+Q?+B zi@;&+jm~lvN>2i_dpwJ)t;zhIV>%mG`jl4Ma84_pp04IQ1?v2oTvDC8i12_@Cv9}9 Rzl%qvJ*G80vFcZ9@DJwySy%u7 literal 0 HcmV?d00001 diff --git a/TreeMetamodel/bin/treemetamodel/C.class b/TreeMetamodel/bin/treemetamodel/C.class new file mode 100644 index 0000000000000000000000000000000000000000..aa7c78d0f38e2f391bec2d81b863392a260fee4c GIT binary patch literal 345 zcma)2Jxc>Y5Pg%xoQYov+FA-p;}&*CED{n39Ha;cmg_k#8+LDHZ_giR;ScafiF2`# zXp>@K-n^MNGw<{3{R6-ah8bFfvlN*ear;W9*{ zxN!EhV#WSN@(@|ge_99~!|9Q5H5%uCJB#3bC{>-TQ}f(bX+r3&ttoY?BNJ}-nYqh< z&svs=4adp72sL}Bgmcl@eP-H_)t0;%{o}?Dg#J3zvEYSuazuA_-7Jt#32li3v8gR? aWH=Pm6VyUq@DYyDxO9S3sfmSKX7CO6U0M79 literal 0 HcmV?d00001 diff --git a/TreeMetamodel/bin/treemetamodel/D.class b/TreeMetamodel/bin/treemetamodel/D.class new file mode 100644 index 0000000000000000000000000000000000000000..d29865606f108206cbf5a9f77aebc08c4feeffde GIT binary patch literal 134 zcmX9%OA-Mw6zn&cV8aDm!CSb(u(fc47;S2%5>XKjXW;-2r95TPpGAM(pXUp}1~Z3B zuqc^~EIy_agEkIh!E*2qufbnB-5&?G#i16gQtp&(=&v^_<$Tx7_uC Vg1TA%Myw_n87B4#Q)gUZ`UU*OAhrMi literal 0 HcmV?d00001 diff --git a/TreeMetamodel/bin/treemetamodel/E.class b/TreeMetamodel/bin/treemetamodel/E.class new file mode 100644 index 0000000000000000000000000000000000000000..4a09ce8e11288dd01e87ca1f783246592b1d2884 GIT binary patch literal 404 zcma)2O-sW-6r8PTW9vuj*UcV<qy}GKQ}k| zcGmgqmSuwLgTPLbE*LZ&h>}J6xLK_P&RKlxlHNVljpjhBAiy`wnkIjfg4k$jTUXGX yt~l=?y9^a^DeTOz&yDuExEQ;PhKza`G2X*ILZJsZ?B*DgZXV&7IRYmg^YjO1{$`T^ literal 0 HcmV?d00001 diff --git a/TreeMetamodel/bin/treemetamodel/TreemetamodelFactory.class b/TreeMetamodel/bin/treemetamodel/TreemetamodelFactory.class new file mode 100644 index 0000000000000000000000000000000000000000..15a674e17a85a9ae9422afb9933a399347cb6ab5 GIT binary patch literal 740 zcma)4T}uK{5IwidRkJiJ%|7f)N(tJB9*e+F5X1t-_v<#v+O8|x8uYWGm*}A%(2t7d zE(<0Kws7ycbI;D1xij zuQ8wLlQ-4cducq$K0jwcO@jYeBGz`su0eHE6(Kt%7IgbkjR+3~_l?&IudFH}51ZPf zi1E!TTjz}G(>@S?N9v7_OW5K)>=S8h`!{Op(#SyJ4ofNA#h#D*IPfutLm!WD%sxEL HzUS#Lc>lus literal 0 HcmV?d00001 diff --git a/TreeMetamodel/bin/treemetamodel/TreemetamodelPackage$Literals.class b/TreeMetamodel/bin/treemetamodel/TreemetamodelPackage$Literals.class new file mode 100644 index 0000000000000000000000000000000000000000..e35b50ae4e9c15f67e0d79ec4dec2637938898a7 GIT binary patch literal 1473 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 literal 0 HcmV?d00001 diff --git a/TreeMetamodel/bin/treemetamodel/impl/EImpl.class b/TreeMetamodel/bin/treemetamodel/impl/EImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..8b885c984f8bff328a898c91c04d606e5c706a97 GIT binary patch literal 5221 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 literal 0 HcmV?d00001 diff --git a/TreeMetamodel/bin/treemetamodel/impl/TreemetamodelPackageImpl.class b/TreeMetamodel/bin/treemetamodel/impl/TreemetamodelPackageImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..7f9cc81bfb18ad272c6d659b00e543347e9d702e GIT binary patch literal 6317 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 literal 0 HcmV?d00001 diff --git a/TreeMetamodel/bin/treemetamodel/util/TreemetamodelAdapterFactory$1.class b/TreeMetamodel/bin/treemetamodel/util/TreemetamodelAdapterFactory$1.class new file mode 100644 index 0000000000000000000000000000000000000000..94bc7b49d6990a8531fbb0eae80d045f95ccfa4b GIT binary patch literal 2585 zcmb7GYg5xe6g>-tLRsV~J`t3HEhyn3iWJel5VX96Vf^5i5EclNCQO>@@UL`6amEk+ z0DqL@-B7Tmn_}BZHrebs=ia@K6w0cKoDLzFyg{vU{3Z)3UXxgT?#4wv^6r9{; zh-As5b})2sw4gPHW^{5yagCulAs2KNOk1p%i+jS|(f2ID&|7c}-P+Y%Q{Go5Bhm$i znFei$Pm>ERhF%hBhJ~O9=~S}dxQCiBEc2u!G*LXz45wIhY|VB&^WapgY)2}F0o;t@ z2E$}yJIHYhw;8S(uFyS^uJAD=6aOnsA#nDNh2b&u1iVjQIG0g4mubkkVUGJ%hGs4e z4QggCG_wlLY(tu391p8Bv!R;V3(cHDGuM#jBaX*anz>NT+=XUdp_y+;bB0r)|4o8? zsAirtJNCtaUbeg}UUkR9_J&!rvx=gC;1xU^>I3Mq!sU;)X! zKh{6$nx)%^TE(OoRr?E$B*y)w5iGEv{Yv~RjyXJ4D9VymBC;HP=vN?Qtdxjl4h_^4 zYrK+`qeQH74C0;wA@g2|C~%A*&Jf#n%B~@nP1)dv>$LVsNyE^-Z64aXS9WRnR-o!@ z-wx+}ez7Kg>Rz@)S=N=e4a+H+_TifFj+}i4zG~aT&02b?BuW^j7&g-jigkC(woO-^ zbVSic^X+ssk0$y9vGIv-bovhdh3=ZrCFlGn)OL|aH{El>$k`tB(#T|(DlCgMN|v_q zuZW%D`e(X6=V4FvbpQYW literal 0 HcmV?d00001 diff --git a/TreeMetamodel/bin/treemetamodel/util/TreemetamodelAdapterFactory.class b/TreeMetamodel/bin/treemetamodel/util/TreemetamodelAdapterFactory.class new file mode 100644 index 0000000000000000000000000000000000000000..79761d99caef50a5d1000b8852b0d5d7b0baf94c GIT binary patch literal 2208 zcma)6T~pIg5IwgojV;k43ittvNU<$QPz2E+3Z*DB6?Mumqi-QxOR#M^Y0&8}@E7>t zvok*N;J2fW4n8^Kk5V`3rII#4^N^eD-Lrdk@7eqN&(|LS#<3_Nz%XiCoEN#R70oqX zP&RF&pe*k;&8}%>n_CN-ZktwBLWp6)wDJnq3r4xZ6<&O-=w`8KmXwld8;`4sQ7jh} zFKm%a46>W!zNSCX@|&@*+E4);Ob{Camo$6RqFfJJ zgiUAnuT7Mt&QSdDv{5qb8HQjYxxx@iQwO66A||69vV@}yW8Mmz$$Hx~cqxhw9CPr; z8O9H;)eBdXD-kes%aCx$`8pw^4dDn*p;y9bh5;`fzlO``LzsHU7ngF&vrFj=Lo92Q z_|j%^m0Qc&YJs}hnKgB-u%cOp^Dm4cd)=r|$p?12fi%P6oK2dztCdBh4x=LEwqRPz z)iP!5N@O>*rITxgz5goTFI|(xn}MJJ9qMaz>o2 z5!V`}m1Ib}q#d#pX`j*Bm->t&sc-0bNFSXa(e(~JzYuwclkd^qR} zdAct$bOjBe8yC<^V{?{voUjxO{X_&9s9FBfHj~^PhVvK{sjEaXKpv@K%Jmv;p{?Pc zh`+??;cdjf-~z)J3^VL(2DgG+1FgYjw^yjTF{84KA_7<{RtD>P~VVuz^yq1>{>_WTpk=cOPT`3+`Fm#vNLt K)ZGqR>G=oah71b; literal 0 HcmV?d00001 diff --git a/TreeMetamodel/bin/treemetamodel/util/TreemetamodelSwitch.class b/TreeMetamodel/bin/treemetamodel/util/TreemetamodelSwitch.class new file mode 100644 index 0000000000000000000000000000000000000000..b9ae05d4706d42ef7fe37d915ca4adbdc08b1695 GIT binary patch literal 3049 zcma);-%}e^6vw|e38YCD`JvL*s%?SRghEqGRRjz|5=v|cZIiZ^s&okpY#Ru(+347} zI=(vEhrapXljCS-EOn;N_@KUZ#{b9%e|+!VBocOa;xN0pd(OF^bM~Bb&+^CLzx)bd z0(uw$fz!5S7~6)eZ&%liO0sU7m1JqZsQ8I#m$$+Q37o82n@OWwF?VZ5(%9bMx@sBD z9>+{TQ=H3s`L4cc2#n<0`EBTi)wDqOjJadlDS==-aa|ykW-w6%5z`RHp$G(eG<2am zf?o88(I+s}nX6#{-2xFKS16X|3hAssZ{FN73ia(Z!z$@(6$Utvua@=7b=@-Mb3+)i zx6GPA{6O%2$>9qOwqrisZKB5iCu62mnobeaQ?!}8C4ILMO3bV|sa>dA0>kmVcMY=5 zTqafo4jHZdpXg*y>-B20co*V1Kl|miJ4V@_PUP?CAM44AzO$KZh?wD`xw)g;b&L5t z)fvGz4P%(aXfNShlx04p;WS&N7>uz~Q%Gossy=N&8sO1J1 zr{AMXY0i+V>ezT#uvL_WYb%THtzh}Q6)c2OjCAaEWfm<~>sHxVFy;6=(l(HtIdE3K zpg?M-H04fo%BOs4Hah#AQHGOjq9DICYzaBKxsr37!wq;DuTcM=!x(i%x1As` zz!cD5;2c+7eBL|uJ@0^XmkxnpUMXHTdD*B{WUSt9jj9`%-gY?~t_vkT1n?d?tqU=&jwn|xnkpvk-)9xN+mvM!%`z_f+%C0if zAY*CT$-1Ugr^-lVT^(N~`f@zTmBW=QhbC7JL#|}&%_27P7Y>Ip6vnkb5m4)~ee3i4 z)|30zDQC?W=SQ&BMK@H}E>bGHHXvkKg6e!Y&05>ntbtYv15ACcty!f`zLbz(u@?Pi z2l{8e^d%oUKWZ)dN(cG_U;45So!__?{Z- Xumk-!U;0H)dVohu&Yac8?796f-m`KB literal 0 HcmV?d00001 diff --git a/TreeMetamodel/bin/treemetamodelextension/TreemetamodelextensionFactory.class b/TreeMetamodel/bin/treemetamodelextension/TreemetamodelextensionFactory.class new file mode 100644 index 0000000000000000000000000000000000000000..787f01cb834a17838a01700722377bb3b5a9ec25 GIT binary patch literal 697 zcmbVKTT4Pg5dK!pqh@JVc9V!+(wELd5kVISQ4queMSNXP)8W{;$ht=Ttmq|r=m+$p zqFFhQ8q~t<+;--h*_p5Jk52$6s8~n{oN7fBkd{GoPd+_s3MXC^+P%5vrgU_qUM!>p ziX-_XZC{42eLEbHqb;Nb_9Nxm>Rf&fD=1i46}VcE*9*q}@2$1?MIJ@0aZZCEa9*wbugok2*7LBC z5h%31kUG;~NUA4?J_(fCkt6-SRG!geqva@)ng#-u#i#@RfCHEG{1M$r=TW*0@aMYY zNY0+?MpNZb(=&x0&c}%ddTh3U=gxy*T4LHU9rK1I`OYH8mSxtCn44q0BmaidD~kzi b@SUDH%GjJ)%wmB0~2 zqr^$jopjN=xO3*raPOHjU*8{}0FJP&AxAh%B4(cx<%hTI@l(PU*!Z^$`BR*f-4g1lgbWp-p(uQmCwZQCIP@vg@kgg=#cvyd{K`qzM)Rh44lWb;PcvCGElJ&oaIk zAN&FSDC3l{x*FhNo18QAP3N04XJ*dNU*CTKc!Y|EHG#(}A{vvD2`3 z0X-qK+GgGA3*^YMJ5JTEaVk$5OK2;L!08GOB&-yd69Sw4LEWr6-L^TXHM_PWu-zXt zTV}iJSWWxbmVL>!2|V>$AXO^&1kyDwypAilrs1luk(c1PF+C#1)hP0jOD3S^%Q)tu z71?ufVe8UWVf6VFiO-oFUGId`$fdfMWO}gpocSzPk^vORTR}k4EIW!d+*{s*mC+6x zo}x(lu|W1%<@dmC=CuwD1zuU!b383;&>81X;0?x`Cvftg>(9Og?BLuV-g(9s{=>Wf z;1ox>h)c{UF#9gcdkUu)2l=-gTD1Q)JM=jhQuh)Q7lnva?t%Gm@C;84maL4Sh&yg$zufCdYN zO0dp}^vuS`GaVn9VYD&mR$(ew4d!mNGojaq)4(n()PhY+y=Ld^b)=@h6dx1y?jI2> ckMWi|?yaMsZnwXYQWH!HX5}13RpAQrF9ppc!~g&Q literal 0 HcmV?d00001 diff --git a/TreeMetamodel/bin/treemetamodelextension/impl/TreemetamodelextensionFactoryImpl.class b/TreeMetamodel/bin/treemetamodelextension/impl/TreemetamodelextensionFactoryImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..8f3e57efef086c6f9c5749b59df4544bc90397c6 GIT binary patch literal 2638 zcmbVOT~`xV6x}yKCJ6(!K@b%+0+kRd5wX@1DFqCg5)mOyp|!O`xP-yUBx^Ep;bR~A zXZl2WfTgU}`qYR1sIKmrOh^g|t-zYhy}9S?^R>^p`Rng@zXO;=QGrij+P0)DNLwou zH>DwWZE2SEq8Zl;p9dg8gn0%SL?^lws4bmNE^E10T3!yX$h=;*tv4#VaX}!E zT3XG_F3l$eM$^sXJ*Aom;A4TC+qPYripN{HJu!Z#lTP)hxQJeX&b+j1Ib*V-=^gF0 z7B@6AA78aC-OMLin)foD2;vehE9e)9Hg~jSRPwqRPdZgvcGpgjR|H}$B0H^+2+_!Z zifgzo&}J0#0=%hWpGt`RC&5Te`GTkKAIVoGLz0@dc&?l&WKE#B1G*YY7Dp1qSQ&O&NyFYsRdV zuN0(dA16`)32~_|S7rHJMK?C36~I?)iOjZ)B=^AtW$Io6^m+!1c2$tl%4tkrwmACDfWTi$lmb3>3Qp zLub;@l_td^Oi%L$@`m6!=B=m6+zPx<@dJMJX4*02AWPALh&5#eKYi#$aSR_~Q1#6t zS+Zn~eZCpXR6(5p8SRzbKK#qfSNK*X}M&PWd#K?=IjiTYqk4}y}};m)4@yMk02BT zxC?UkGkjbD!}|z@KYEL>5AV^j82b}lvAxB8^u-Qv^$2495I6Q*$sS%(Lqz+8T33h$ zT<6Vk17SqmlU@vC0Jr!L^bx(AG9!p`*Gs#jh;cQ>hrc{B3WgMd@@DYdndIAXrz3WV zPk-aW=h_MJ4ctLHCR|*#Dumk@=l23}o>k-dg)us^Gh=TtA@D1gyrt@YVaD_M-VqY( zN0?p@&m3Zwk{oddcoI(Y;{Z#Cc>V`9sv&ms4NRe*{d$d!TnmdPJoC$x39B8x z{&uc8Cq0+u=#b-5=m;66F`FLS39H7*Tv%6 z!?{?QXzs8|N4-IKaYV&I9A!A$5nI&n>sm_BB(*WiG&0HFa!?oT!*PLCiwXsP@%Dy_ zDg?#bF%_!7&u1+d)U?ax^80r*qptb{zzpX*!sT4Kmn!+!8$c&cD0s6hU5iX@8|6tO zZwZ*Ypbe8=5K+k;L%Y+> z?b$`1uzJIe21-$oTJe@>aE%`XVxt>1HDaWKiwvD59CDcej5~`K+G|?V%(Vp8XMsSDl%q`ix+6~@ri3`FE&DH`hsd{UO%4`@KcB*XcoY;ZM z?(-m3#k8dkR*zXUeQ)VGd+;cjWT@RfwuP=Mn5HpVW=d{F_7RV!D0@0kWmN5fOEH^C z)4f1B2mZ&gEKU&7ocC3H0G;80I4E)>n#o&wCPDMIwS0n3CkYjEAa%9Cnc{8H(h=RG zK0lHS^(7?UYM{u@P_c-6bOYtNHLRy8M4j{O$w?WG3*EGejL@wTy7>{4&l}4^o>TFm zko#@<#As9j4aG+HpxTrlOLTWl3CoXEEaL$~P;k6h)Lh4_Tjn5cp@$BE%y(vHW)ECM z^p911f=?N03ZRbie0IqcO}Xd>L7AjXX{8m-iBiEa+tHvQZq#;nayf|KB`8k4jb<|3 zv`gZIpT9V%(L%X;>AwO#c*JEyKX8KL0;km@t|WV<3yD^-Ta6mh-bY`@Xcd1I-k(wX zlwLdt(X-MP_uzmn5mFkV(qzmI1vEuMb?az&j>8f549yYmGqj3F+qRo}$_UUXlfz`b zOzys+tH0ZJtJ)!&(2nDz6F>*TGQgh{z(cZ?b=0n6|2inp3v_$1iHaxk>x>64!B$bb z{k?|ZZ(!5UaefnQ$Vc^vy$iPGOY}+I!uJ{~*KuhReX+;}`a3r;NbB3Q-lTQN_8EDB zVJ{{lPbd?w4N4aw2@DbxQ5wNRxPoCib9b4(Elj+}aS=H$U=l!XV6 Q@HwsG;CE6hzNifR13O|clmGw# literal 0 HcmV?d00001 diff --git a/TreeMetamodel/bin/treemetamodelextension/impl/XImpl.class b/TreeMetamodel/bin/treemetamodelextension/impl/XImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..44a62f42c2a05ea9358dbe8b8ebf2a89e86aec51 GIT binary patch literal 766 zcmbVKO;6iE5Pg%Fm>8Fjlonb(BM?fE8XsDzhm>9-Dj~UmL=4AfHcGmCB%-grOcRzmtc#XP^5}|HV=7^1ok}D4RtKm4)N$lxp z6nd8@vf8i+Zoa;> z5-RV6Y~B;fjb@Kvbz}+$Wh}U`F;7_XrON3z>T}vv{g4SYKM7RWQ>o7L$)ROF>x{7H z&*=15O`G8Ig;7Qaols>$+HExb>FSOPM7xTocxGdja5STQcj_IUtKeDp^E5w6W%U^nsxSTAONym2JIVjSREVuA9jW#h z>iPNU3danw8aa~!!=iyW5@|$n!$1;C4AH!vkZDLqydMtQ!aL$^TQDp)T#MVs+>^Q; zcE+?!hBtFZmD?tnaf|z+#Za57vQ;TGT(4&e%a*6UFvXy2TJB&#$#q;MyJu$TT_ue* z+)3g#!>f4{VBjv+8I~+ha3xyd3Jit(b%UV{y6qETDTeiFR<+20#g6Fmp{;7<1H)nd zf>vR+G%h5@E&hdnj$01p|; zmnL;0G;d%9s|@L;JM=7ZAoV^hT;~9nH6KH&DSHlALyvIQG~+M16-KAIdcm8?TW*gs zn5jFK?fTN`y%VbMb{LGejw8I9&3#|^*d#}ybXBozRv$d7#pz38f%;Qa+eL(4AYCkd zr{514U#S&AM)w6HbWBi3mf8kkbni_pQ^~YfAxo7?&9YGZhV(gZeWCh@BN1Q@1N_=( zPKc-3xQF{R&UC`)uj3hG+8AeQOl5jZ8uy9mNyxNCtLc~$#nL%)<2)?jp>e{jU~3ZQ f*;EW-C}E(t&QVw`U_83%14FL}0qxe)Wf5)g`p}P%fB}Z-CX`!_Qp6y}$HQaZn%*J(1MD{6dy;vX+$|ZSQl%j7PTwj4%wIojg}`gGR{&u|L_`sz!Sh5; zE)wgZNVINWoG9BP9>6#z1l(c>H9@!iL`b+zYRGakSryfAbMU_c^6GXCR&(p>qJ}62 zmrd?$0K=0=9o<^Nr!C#9+=$oLRqI&MfgiJ&6L6PduF2lCSoN}YMa*M?p?ycMdrcW=0##r#8CMB!=#Cu(L~5 z2!BQ|846!hEqO#6E6j0r7J0%doW8&7n#K)#cX$!kNycvaZ*alZGCg@LbcOMH)!)5j(tb?H3r5` z5I)8z!!gDfDn|FA`;ffLJbEcRFhixyQekt%V;&L2Z4SLXFOAU|9Kw$Wnty7glYK37Q4qr>vcHr{5oRO*I4n literal 0 HcmV?d00001 diff --git a/TreeMetamodel/bin/treemetamodelextension/util/TreemetamodelextensionSwitch.class b/TreeMetamodel/bin/treemetamodelextension/util/TreemetamodelextensionSwitch.class new file mode 100644 index 0000000000000000000000000000000000000000..61ff8bbcc87cee58d71b23a3f11b7eb5ac7a558c GIT binary patch literal 1940 zcmbVNU2hXd6g}5o$FaRMAwWU`ElD7)ov)=OhLEJGs*r$%36*T2h(2wcNwSIKjn?ZH z{tyop4-_PjctE@%RsBPK=*QU^Cney;60$TqGxy$e&pmf${Kr49-vGFV@6$*K=EFd# z0~NXl{+6n%N1tW z`UP{JlgY*adIT9&TCY@pTwhrg^p(AaT5la}s-Ws_)>*_r*{`|v2X5d+>-MGf$n?PgO$p;GTQfrknGcrbTOhAh?__ckbotQ3nbS z1-AmG29fG-hDbD}?=ANpBi-q!@`-|(;-Nug7-eMOj-cG{}TLCqn=nlb3 z)3_`+AJh1aEKkXVjj!>IAXRglYC|xakCS$z6R8NIU}F+fg4~wcc3bsug-C*Hu@Zi& zM7vgZn@w-qQ$gvLKuUsaxT{u8jNnoi-5BynFcMz_Z%&|^WEmaX4jL!5YS#t*9~znb zQ`#_&*uHL`;7Zr(wSTtaw}P5l^P+1s*7?qxLo*xE5iBoN7e1!F9HWZ9Vl=vYM`~kTsW_^N`^)&gEOOvukyU*)1 zgT}3$h5@*UFKPcjVUD(=gh@z-AYb7U!$t|1pafCAKRHYBTfFcaM_^WuW;iqb7US!a zGcR#v!5X&SAv-z!68UKUOwXRt&oCR&8r~waH5PcADeh2?5**ysZ0AgpW41+FXLL11 zrgTVRm~vgkx9rL&pX%@US7hm0Or6DcEygxSTO?y2l4t+MP#WWD6#pWKM3 + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/TreeMetamodel/model/TreeMetamodel.ecorediag b/TreeMetamodel/model/TreeMetamodel.ecorediag new file mode 100644 index 0000000..15344f3 --- /dev/null +++ b/TreeMetamodel/model/TreeMetamodel.ecorediag @@ -0,0 +1,234 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/TreeMetamodel/model/TreeMetamodel.genmodel b/TreeMetamodel/model/TreeMetamodel.genmodel new file mode 100644 index 0000000..1c67c7c --- /dev/null +++ b/TreeMetamodel/model/TreeMetamodel.genmodel @@ -0,0 +1,33 @@ + + + TreeMetamodel.ecore + TreeMetamodelExtension.ecore + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/TreeMetamodel/model/TreeMetamodelExtension.ecore b/TreeMetamodel/model/TreeMetamodelExtension.ecore new file mode 100644 index 0000000..ead530a --- /dev/null +++ b/TreeMetamodel/model/TreeMetamodelExtension.ecore @@ -0,0 +1,6 @@ + + + + diff --git a/TreeMetamodel/model/TreeMetamodelExtension.ecorediag b/TreeMetamodel/model/TreeMetamodelExtension.ecorediag new file mode 100644 index 0000000..c9cf609 --- /dev/null +++ b/TreeMetamodel/model/TreeMetamodelExtension.ecorediag @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/TreeMetamodel/plugin.properties b/TreeMetamodel/plugin.properties new file mode 100644 index 0000000..1357209 --- /dev/null +++ b/TreeMetamodel/plugin.properties @@ -0,0 +1,4 @@ +# + +pluginName = TreeMetamodel Model +providerName = www.example.org diff --git a/TreeMetamodel/plugin.xml b/TreeMetamodel/plugin.xml new file mode 100644 index 0000000..305d2ba --- /dev/null +++ b/TreeMetamodel/plugin.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + diff --git a/fr.inria.diverse.cloning.benchmark.common/.classpath b/fr.inria.diverse.cloning.benchmark.common/.classpath new file mode 100644 index 0000000..098194c --- /dev/null +++ b/fr.inria.diverse.cloning.benchmark.common/.classpath @@ -0,0 +1,7 @@ + + + + + + + diff --git a/fr.inria.diverse.cloning.benchmark.common/.project b/fr.inria.diverse.cloning.benchmark.common/.project new file mode 100644 index 0000000..13d11c8 --- /dev/null +++ b/fr.inria.diverse.cloning.benchmark.common/.project @@ -0,0 +1,28 @@ + + + fr.inria.diverse.cloning.benchmark.common + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.pde.ManifestBuilder + + + + + org.eclipse.pde.SchemaBuilder + + + + + + org.eclipse.pde.PluginNature + org.eclipse.jdt.core.javanature + + diff --git a/fr.inria.diverse.cloning.benchmark.common/.settings/org.eclipse.jdt.core.prefs b/fr.inria.diverse.cloning.benchmark.common/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..f42de36 --- /dev/null +++ b/fr.inria.diverse.cloning.benchmark.common/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,7 @@ +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.compliance=1.7 +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/fr.inria.diverse.cloning.benchmark.common/META-INF/MANIFEST.MF b/fr.inria.diverse.cloning.benchmark.common/META-INF/MANIFEST.MF new file mode 100644 index 0000000..8e4a78e --- /dev/null +++ b/fr.inria.diverse.cloning.benchmark.common/META-INF/MANIFEST.MF @@ -0,0 +1,10 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: BenchmarkBase2 +Bundle-SymbolicName: fr.inria.diverse.cloning.benchmark.common +Bundle-Version: 1.0.0.qualifier +Bundle-RequiredExecutionEnvironment: JavaSE-1.7 +Export-Package: fancyemfcloning.benchmark.base +Require-Bundle: org.eclipse.emf.ecore, + fr.inria.diverse.cloning.cloner;bundle-version="0.1.0" +Import-Package: fr.inria.diverse.cloning.cloner.common diff --git a/fr.inria.diverse.cloning.benchmark.common/bin/fancyemfcloning/benchmark/base/BenchmarkMaterial.class b/fr.inria.diverse.cloning.benchmark.common/bin/fancyemfcloning/benchmark/base/BenchmarkMaterial.class new file mode 100644 index 0000000000000000000000000000000000000000..59948856d294c23f0d41795b6ad156a90a936488 GIT binary patch literal 603 zcmah{%TB{E5L_49(DEqFflol~1tW1RLV^lT2^?}qa@=ijNo>h+D)DO^_y9f%u}+9U zq*71TShF+U8GnAge*nN0gaPyzT&{$cZ&<8kZnV-FPf^R4LfBWHiW2!<3uEEXDv<}U z&){?|HiGAZ_)qB?rDHJ3(8cIPVV0PekD@>Z;dB<&%*v^pN2+vl2E#;UTDZy*;k-k* zZU$=U#94aL{Dy|cq`qig=%vf%CiY$ni^3Vp;C9-bokctL`zt{{;jd4-FoWkU!dtB@ zSDG^7OSM5u;kB9i6D^mfD2(Pmd$juGI%=}BO44HYTikZ9(I!t7co{F6n953gP&oyC w*6H!W7c*eMV2{27K%Z*u!+>x=s0RmxhyU;h4#C%d1jqGx0%PLRcc>>O-(gv`_y7O^ literal 0 HcmV?d00001 diff --git a/fr.inria.diverse.cloning.benchmark.common/bin/fancyemfcloning/benchmark/base/MetamodelMetrics.class b/fr.inria.diverse.cloning.benchmark.common/bin/fancyemfcloning/benchmark/base/MetamodelMetrics.class new file mode 100644 index 0000000000000000000000000000000000000000..074a68719240a8deca7c99d190792bae869b6835 GIT binary patch literal 1938 zcmb7EU31e$6g}%Wu`vn>PJ}T|FkdCMVj>`g00!D5B=B+ORV=pr|C&uDIU|s;xS!w;=AUm z=k$8K%h-L_cf*GQxyoAftL_M-SEcMpvi8N{?CTiNH){?f7vVt*0J~S{Ba*Qq>&u)(vcMZrQLC9Ua+y zyVDO^^0CYQGvn8KfosD>viS&o9O%oyt|ydY&#RFfuSW8_8p-WyB(JNHoK7QOlyRJ* z=LEfdA%2#|n)MNrR%w7KYi0n`njN5Endt$FmN_~=$uh?Vn6=Ez0Oh}x+C_R^B{g6Y zX`CjMC)FwXPooGEWt_oJC}19Eafw#Fi1xu{T%kAGQROcb;tEmmN+LCy=7U0xjdol1jmd796A?FqcR+iR5copz~+by`vU$SGu2J z|B=7(5sTIkw}-el#4q_(dT@?OvGom%%y+c_ literal 0 HcmV?d00001 diff --git a/fr.inria.diverse.cloning.benchmark.common/bin/fancyemfcloning/benchmark/base/ModelCreator.class b/fr.inria.diverse.cloning.benchmark.common/bin/fancyemfcloning/benchmark/base/ModelCreator.class new file mode 100644 index 0000000000000000000000000000000000000000..8af60ea3d647e1963a303712aecff68faff98ccb GIT binary patch literal 622 zcmb7BO;6iE6r6RO1dKxhg_MsIw~(s%z!Ag+2`N(2N)6(^Hjl92*wxxpg5SgiiK<^RmU42!jXfY-_Fh(&Ak2l@An@7$JlGbQ}}eFv*c0cH%XdjCYwdEWXbJZ+xsZi zg+!D5TGDeXy3B1GzC!O#|IksYN&On%Nm45Kg?SPMHBxAun#`1E3XQ?x6>rWt9-x7> z5N)iiLZK6)iIzflY%=-sFptGv>Nw^6<~UDudZn$Y&Nb+lx290|Jbs7I6RIbbWx2E> zE`h?);BcJVStLnnzB3pjv(K$WR*L+=CK7$Co2itP=oC^;WS-l{sf*_iMpdNF>@Cco z%pFXf#D%GXY%DMBsM?o*z~l|CUGZalR-Zjr!n(@SDLi)<41XaQdOs1q5cROmy6z^M zoM@BVM3-2&V55f(N^y7iKvZE1+qL2ur#)h=;r<)7z@gP6bevLu!CEL)eCLm^i9SBo dS`q)w`S2CtGf4|$EeH0N3^i*Rg&oJ*{SUWac_aV; literal 0 HcmV?d00001 diff --git a/fr.inria.diverse.cloning.benchmark.common/build.properties b/fr.inria.diverse.cloning.benchmark.common/build.properties new file mode 100644 index 0000000..34d2e4d --- /dev/null +++ b/fr.inria.diverse.cloning.benchmark.common/build.properties @@ -0,0 +1,4 @@ +source.. = src/ +output.. = bin/ +bin.includes = META-INF/,\ + . diff --git a/fr.inria.diverse.cloning.benchmark.common/src/fancyemfcloning/benchmark/base/BenchmarkMaterial.java b/fr.inria.diverse.cloning.benchmark.common/src/fancyemfcloning/benchmark/base/BenchmarkMaterial.java new file mode 100644 index 0000000..60c09df --- /dev/null +++ b/fr.inria.diverse.cloning.benchmark.common/src/fancyemfcloning/benchmark/base/BenchmarkMaterial.java @@ -0,0 +1,20 @@ +package fancyemfcloning.benchmark.base; + +import java.util.List; + +import fr.inria.diverse.cloning.cloner.common.CloningMaterial; + +public interface BenchmarkMaterial { + + public List getMetamodelsName(); + + public List getCloningNames(); + + public ModelCreator getModelCreator(String metamodelName); + + public CloningMaterial getCloningMaterial(String metamodelName, String cloningName); + + public MetamodelMetrics getMetrics(String metamodelName); + + +} diff --git a/fr.inria.diverse.cloning.benchmark.common/src/fancyemfcloning/benchmark/base/MetamodelMetrics.java b/fr.inria.diverse.cloning.benchmark.common/src/fancyemfcloning/benchmark/base/MetamodelMetrics.java new file mode 100644 index 0000000..d78968f --- /dev/null +++ b/fr.inria.diverse.cloning.benchmark.common/src/fancyemfcloning/benchmark/base/MetamodelMetrics.java @@ -0,0 +1,59 @@ +package fancyemfcloning.benchmark.base; + +public class MetamodelMetrics { + + private int numberOfProperties; + private int numberOfReferences; + private int numberOfAttributes; + private int numberOfMutableProperties; + private int numberOfMutableReferences; + private int numberOfMutableAttributes; + private int numberOfClasses; + + public MetamodelMetrics(int numberOfProperties, int numberOfReferences, int numberOfAttributes, + int numberOfMutableProperties, int numberOfMutableReferences, int numberOfMutableAttributes, + int numberOfClasses) { + super(); + this.numberOfProperties = numberOfProperties; + this.numberOfReferences = numberOfReferences; + this.numberOfAttributes = numberOfAttributes; + this.numberOfMutableProperties = numberOfMutableProperties; + this.numberOfMutableReferences = numberOfMutableReferences; + this.numberOfMutableAttributes = numberOfMutableAttributes; + this.numberOfClasses = numberOfClasses; + } + + public int getNumberOfProperties() { + return numberOfProperties; + } + + public int getNumberOfReferences() { + return numberOfReferences; + } + + public int getNumberOfAttributes() { + return numberOfAttributes; + } + + public int getNumberOfMutableProperties() { + return numberOfMutableProperties; + } + + public int getNumberOfMutableReferences() { + return numberOfMutableReferences; + } + + public int getNumberOfMutableAttributes() { + return numberOfMutableAttributes; + } + + public int getNumberOfClasses() { + return numberOfClasses; + } + + public String toJavaConstruct() { + return "new " + this.getClass().getSimpleName() + "(" + numberOfProperties + "," + numberOfReferences + "," + + numberOfAttributes + "," + numberOfMutableProperties + "," + numberOfMutableReferences + "," + + numberOfMutableAttributes + "," + numberOfClasses + ")\n"; + } +} diff --git a/fr.inria.diverse.cloning.benchmark.common/src/fancyemfcloning/benchmark/base/ModelCreator.java b/fr.inria.diverse.cloning.benchmark.common/src/fancyemfcloning/benchmark/base/ModelCreator.java new file mode 100644 index 0000000..e700c41 --- /dev/null +++ b/fr.inria.diverse.cloning.benchmark.common/src/fancyemfcloning/benchmark/base/ModelCreator.java @@ -0,0 +1,19 @@ +package fancyemfcloning.benchmark.base; + +import org.eclipse.emf.ecore.resource.ResourceSet; + +public abstract class ModelCreator { + + int size = -1; + + public abstract ResourceSet createTreeModel(); + + public void setMemorySize(int size) { + this.size = size; + } + + public int getMemorySize() { + return size; + } + +} diff --git a/fr.inria.diverse.cloning.benchmark.materialgenerator/.classpath b/fr.inria.diverse.cloning.benchmark.materialgenerator/.classpath new file mode 100644 index 0000000..f8b4f28 --- /dev/null +++ b/fr.inria.diverse.cloning.benchmark.materialgenerator/.classpath @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/fr.inria.diverse.cloning.benchmark.materialgenerator/.project b/fr.inria.diverse.cloning.benchmark.materialgenerator/.project new file mode 100644 index 0000000..abb0bdb --- /dev/null +++ b/fr.inria.diverse.cloning.benchmark.materialgenerator/.project @@ -0,0 +1,28 @@ + + + fr.inria.diverse.cloning.benchmark.materialgenerator + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.pde.ManifestBuilder + + + + + org.eclipse.pde.SchemaBuilder + + + + + + org.eclipse.pde.PluginNature + org.eclipse.jdt.core.javanature + + diff --git a/fr.inria.diverse.cloning.benchmark.materialgenerator/.settings/org.eclipse.core.resources.prefs b/fr.inria.diverse.cloning.benchmark.materialgenerator/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 0000000..de6e538 --- /dev/null +++ b/fr.inria.diverse.cloning.benchmark.materialgenerator/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,10 @@ +eclipse.preferences.version=1 +encoding//testdata/shareAttributes.ecore=UTF-8 +encoding//testdata/shareAttributes.ecorediag=UTF-8 +encoding//testdata/simple1.ecore=UTF-8 +encoding//testdata/simple1.ecorediag=UTF-8 +encoding//testdata/simple2.ecore=UTF-8 +encoding//testdata/simple2.ecorediag=UTF-8 +encoding//testdata/welldesigned.ecore=UTF-8 +encoding//testdata/welldesigned.ecorediag=UTF-8 +encoding//testdata/welldesigned2roots.ecorediag=UTF-8 diff --git a/fr.inria.diverse.cloning.benchmark.materialgenerator/.settings/org.eclipse.jdt.core.prefs b/fr.inria.diverse.cloning.benchmark.materialgenerator/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..443e085 --- /dev/null +++ b/fr.inria.diverse.cloning.benchmark.materialgenerator/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,8 @@ +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.compliance=1.7 +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning +org.eclipse.jdt.core.compiler.source=1.7 diff --git a/fr.inria.diverse.cloning.benchmark.materialgenerator/.settings/org.eclipse.m2e.core.prefs b/fr.inria.diverse.cloning.benchmark.materialgenerator/.settings/org.eclipse.m2e.core.prefs new file mode 100644 index 0000000..f897a7f --- /dev/null +++ b/fr.inria.diverse.cloning.benchmark.materialgenerator/.settings/org.eclipse.m2e.core.prefs @@ -0,0 +1,4 @@ +activeProfiles= +eclipse.preferences.version=1 +resolveWorkspaceProjects=true +version=1 diff --git a/fr.inria.diverse.cloning.benchmark.materialgenerator/META-INF/MANIFEST.MF b/fr.inria.diverse.cloning.benchmark.materialgenerator/META-INF/MANIFEST.MF new file mode 100644 index 0000000..757a287 --- /dev/null +++ b/fr.inria.diverse.cloning.benchmark.materialgenerator/META-INF/MANIFEST.MF @@ -0,0 +1,23 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: BenchmarkGenerator +Bundle-SymbolicName: fr.inria.diverse.cloning.benchmark.materialgenerator;singleton:=true +Bundle-Version: 1.0.0.qualifier +Require-Bundle: org.eclipse.core.runtime, + org.eclipse.core.resources;bundle-version="3.8.101", + org.eclipse.emf.codegen.ecore;bundle-version="2.9.1", + org.eclipse.emf.ecore.xmi;bundle-version="2.9.1", + org.eclipse.jdt.core;bundle-version="3.9.1", + fr.inria.diverse.cloning.benchmark.common;bundle-version="0.1.0", + fr.inria.diverse.cloning.cloner;bundle-version="0.1.0", + fr.inria.diverse.cloning.materialgenerator;bundle-version="1.0.0", + org.eclipse.text;bundle-version="3.5.300", + fr.inria.diverse.cloning.benchmark.common, + org.eclipse.equinox.registry +Bundle-RequiredExecutionEnvironment: JavaSE-1.7 +Export-Package: fancyemfcloning.benchmark.generator +Bundle-ClassPath: ., + lib/zt-zip-1.7.jar, + lib/jopt-simple-4.6.jar, + lib/commons-io-1.4.jar, + lib/slf4j-api-1.6.6.jar diff --git a/fr.inria.diverse.cloning.benchmark.materialgenerator/bin/fancyemfcloning/benchmark/generator/BenchmarkMaterialGenerator.class b/fr.inria.diverse.cloning.benchmark.materialgenerator/bin/fancyemfcloning/benchmark/generator/BenchmarkMaterialGenerator.class new file mode 100644 index 0000000000000000000000000000000000000000..8bb69ddbc01cfcbcb541661231095f4b53578a6c GIT binary patch literal 4190 zcmbtXYit}>89jH$>lv@dk8I*C+oa7VCdoQ+>?BRocGq>2IC10Fc0x9Fa0`X;dTehp zJG*pEAxGy_Uh*M<-61Sx2C;FK6eRegP%fH73w7 zP?$6$P|&0!j7EXB;hb%bR`L^O>4Y(1nF7(_Le{Xx47%sH-`U{I8le2m=rjzzQbA{f)oMomZ-lj}$+BTd@iROD(nD=?+?s79uiJYbTYg}kp zE6`EH+fcq}Y3LwjKHWFjR&mQRB0bL<;w0~oX%;oC7tlv4&VXf<%SUZ%PQ`8PaaZC) zk6;5fN`eytoj&SdRkfhI#-#mb9i4bTH!Od8GFKwk+^~mLY!$d=X;(ck2P-*i(kw*~ zLsCZ=vjy<@8 z_>5xFv?m32)|*um$j6$NF7DK^4|g#IoPrlcU|q5QkXgDkY4fm72T)tQ+ zISCa*0z2M0$0v-k**n4#vIZoq0{7rSjHno9Aua8an;AMrP07LU;Ul*b~BMT9V0Kvk#4$N4<8ZO zR-Vl{*_lLg*>I0j7%t43r2#UU?2^XKFpyO-K|C&%fhy>j1gl@mQSl_@0EaqdHFEG)vev&rubZr=6#jOwkzfI&4Wva}_)dMPhOn<|bpI)DuAo zjtW+3=gK{CF-ev6r8!rybyRScKBrjM&cKXOdWa5})oD<4HRY4ma897Lnr)f5A7dS6 z$y{QyhL3Z%HmBJ6I75_7YNeg9%~|gGCz*cLGm~9uvOJ9^b$m+JmO5jUN6CkVrzrxH z=9E#foKzz4QL!wB{|sy8JiUKbV9d{j75OI9VMSNnjOb4IdE!g%QkFa?uqDWns=?YE z(eQZz(WBvuEb|pHB`+^vs{Nyk^@_OwnFN_oS1 zfO_X0l4)Gf@ii%sYEdeUWlNR$x{hzigELH^Wgexk;G&9eRjJa@(ZlDmX3=ps{*rsf zy3;cb_2)#%$TFGRZq`ECX00%f+Ptj~lAZ^pUZ^<5iZfV{T2FYML2!)lXmm?kk|@vY zCH3)hi7tJ?8{|fMW;!v;yM_E>%(aiyo7UvTJ(Oe6h>wBN8?Yd;blk*JCBcN;IAayR71mE@R7YBXh;zM$+kF2neft8DQDEtdAH) z_a39-3fGh=R7zP>9w$tY8l}B?qjFC^Yy!)R*EAr+7OzZvs{HEZo2LiD+ZUi+b%!H- z%3+`d&3x*f0pBhBYCF^8%T2Q4ysPK2=g7`tv!KVVjp&k5$q9V-r3Lb zeI9$oMcgTV$NoR@hVysaE&hvpLT%^^ZNa@EUY|q9abKu{{h{Y@AaoH2Lw~?P=+Aur z6^AH+hn3qgsC4q3!~tawjwnYkq&$j#Wd;u_k7HPQ5hKbK98+FLMtK7#ls7S^{1YdY zfAg9t1@Qs}kYa~#<2(G4t?%M{WI|E?h414sWwDX=KVVBCJAc6safR$`Qhtvg(Jsu$ zm+)h@8tM0W`~*Lxh~||!{ERa+oKY(HIa^JrC}(h$tq2)7i(jzS96By^zjYDM;Fs)c zVXQEIglp)HC7Xi;IP*q|cj{=e?F`I!!SV#F~GyoD#;!jp?Q qjy0>!aHmc~2o=}m%oi5<>+0PGTEw#muLuEpdPSZ-uM&6&H~t4pYfU)- literal 0 HcmV?d00001 diff --git a/fr.inria.diverse.cloning.benchmark.materialgenerator/bin/fancyemfcloning/benchmark/generator/Constants.class b/fr.inria.diverse.cloning.benchmark.materialgenerator/bin/fancyemfcloning/benchmark/generator/Constants.class new file mode 100644 index 0000000000000000000000000000000000000000..c0848ab77c6bb95c9be84184ecb5a5d8570feef3 GIT binary patch literal 397 zcmb73Mjiabdz zJJDG#be@@L5c+HJDy&%W@ibh^C?}lw-f-%Bqw#1y@!gqo?>e?KdzyRxWH^2xkVEKf zQvwkevd#=WLi0vxmERKTXXgQ-VJFYBg*rNI?4m{Jxk^i~*n~2ji7=Lg12>689Eenv z{%_gHS1Kb|?!Vd$2(8DYNF#Zt%INNvFuN)%;uOrqoP=W-X!2{at6_&HD*0IVcwittmOxAK##Ru%?A3|XU8pAYdHJ`;^kb$ literal 0 HcmV?d00001 diff --git a/fr.inria.diverse.cloning.benchmark.materialgenerator/bin/fancyemfcloning/benchmark/generator/EMFCodeGenerator.class b/fr.inria.diverse.cloning.benchmark.materialgenerator/bin/fancyemfcloning/benchmark/generator/EMFCodeGenerator.class new file mode 100644 index 0000000000000000000000000000000000000000..029a76b9cd866df1f3f4eaa82429dd47a728b882 GIT binary patch literal 5230 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 L56&z2#r1yyaX=e^ literal 0 HcmV?d00001 diff --git a/fr.inria.diverse.cloning.benchmark.materialgenerator/bin/fancyemfcloning/benchmark/generator/ModelCreatorGenerator$NotEnoughObjectsException.class b/fr.inria.diverse.cloning.benchmark.materialgenerator/bin/fancyemfcloning/benchmark/generator/ModelCreatorGenerator$NotEnoughObjectsException.class new file mode 100644 index 0000000000000000000000000000000000000000..89f862e1010de15e1f7c8e30d4618cfa7a1685bf GIT binary patch literal 1113 zcmcIjTTc@~6#k|y^ul7XrE(E;QINJkt0IYr(ZqrV!{q^KLgLGGJ1vXbnPzut#YUd(NEi%(;ALzyJ914Ztea;)pODG`Mt5MXTX>O1iRH zt_kTJx48eN+!RvyTr0o4tLnn5_`(=3ex1(mDZM3Cr+K_zI}wf!w%$3Stz9MKh%sbO z_*-7~I9++^U>FO8?{cpy{D6Rm+nWsRCBtY%$v|_dtK92|p}_g@dTnU(JwwtL4dGKs zf+4f>`^p3DQ?VNiF@4%5-|%Bsy7~#jV!j{Me^RJYWQDp)A&RROMv-BN<_py%7{)E6 zFk-Z87A%Y~q<35?_BySa@L%zo7uKR2YJ*cVWcLnZ`q&K^4tM^;OsUmWQ|Mh01iVQF zjOPpeZN+heVdBpzJ?pq$UHA#u3`<0sEkf38)uqkW$~MCzTHHX`mjky`n8htKo7)Vz z0b?yx4PwE<9V`+9yxkVE&ag5F+E;6@sEq^)#Img#wjt6^V2L48N|~EiER-vD~(!~pm6_?JCEiRuS_bCKUkjx-P@*&A}B=Lv> zH!w*jb~g-Dl+ZlsFbxYelPE$7u4AT`W}nc;x9}CSN12-!m@9rp_8jw>JPFcsMlX^$ l$MQ!4MqrYgK7glTLaTd0FJT1b5Oo*#=$j%R!+ktJ@+Z498cF~F literal 0 HcmV?d00001 diff --git a/fr.inria.diverse.cloning.benchmark.materialgenerator/bin/fancyemfcloning/benchmark/generator/ModelCreatorGenerator.class b/fr.inria.diverse.cloning.benchmark.materialgenerator/bin/fancyemfcloning/benchmark/generator/ModelCreatorGenerator.class new file mode 100644 index 0000000000000000000000000000000000000000..e653e0192923e6249de12e3adb5eb94078e8056d GIT binary patch literal 9621 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 literal 0 HcmV?d00001 diff --git a/fr.inria.diverse.cloning.benchmark.materialgenerator/bin/fancyemfcloning/benchmark/generator/OsgiBundleGenerator$ZipHelper.class b/fr.inria.diverse.cloning.benchmark.materialgenerator/bin/fancyemfcloning/benchmark/generator/OsgiBundleGenerator$ZipHelper.class new file mode 100644 index 0000000000000000000000000000000000000000..b596332d6ef89962fc8dd26138565398d59efd1d GIT binary patch literal 2801 zcmb_eZBr9h6n<{9$%eQpf*_Gnt))tMOQjZTu(g7svAncmv4Gkx$p#jeP26ly?2GM; zGj{yY=?AA%ozbbE_}nkSDII@6|4aXYBYo~}fIz67X*-kIy?f8O=jD0MIX8d2{Ovh_ zckrExfWYajZl@QG`E1(C*`_^{m^SS6?7Z$=Ps|v$;plG8NsJa|%>JUCv5a$Td##gZ z{=8x34M&9{P&=nD=m|@wfzjzXBkc-=Pnx#rejpHRi;oK^1G$V5MG!R_LI?}&9x`oX zq&PoqIG6Nk%Mhp=%B6K{Tz5?QUEWmOS+gK8F!Y}T?PE;0&HNeD5jfH|v=Q-`>oD`a z>Kz$(^z5y)k$26UT~JXcQ16{HbBWaGx#Yd)sYnQDl>|i5jYj$C(OB!pSbvsTU{yA>#ix8b zUa^*`mx%RhIF9#dMk2=O%6OgoKk%BAfF*HK1&gqvSA6#x-Us_6Y}_d77HfS|k@)S@ z7oU{Le5m0x`U&!k;rbx&ZHrf@qvDLfzOCr@7fo3QGLS(H=Ww2O7IdptPKe7-j5wK5y6=fv!qBWpt|}EQiu3O?;x^qRc7c=6ro}mDk-_ zftrGo_G_08vR)Chp#7lARX{i+S(4?0v2)DT)7OXfyf-^kOtM|KVOzx&fySzKJ8Qen zViZ%dZkq79hA*JA9N5Pr#x2*A3N)AVt85KVgW$!Qx95ft+IcL!ufs-m` z)<`J_pRy}vMAmmZr{Ov*_S8+sbZJLzo9a)cWcg%aYsi89qHwAZ>JUZo6jdZlUOOpS zOQ#dTyo1w4vKp8outCePxk=4{$wh1vfE6*Yi;A3gW4WS}HhhCk+f4p$2^?`r*}NVG zEWJ=LI2rE<9RHUSnnZIT_?HO|vJ->6p8y2`c~S6NhvLAQ+V?GZ+D^!X#~Z13n)p5fgkd@pw7$3|FH@=zXuw4H1)5cKuae)0ilp~z;s%6J$pcn7@iz&m zu`cS}ELuAgSY<6Ko2QO-SmvOa( zYfH#T!Sq9DB$WlXgt0veevc$WE67ULXOrqH?Nyl4I%A<=L%0Mprp7`g%un=&AFuwo zK~IvM0L(KRo2wj7Adi!9a0UfjfQw-)5d2#tZV`8J8~5-fe&qWx?yM8bY}cuJf*WP3 zo|LJQQis-LIXv)4lRc86?ILNu$HG{^O``UQ8vg1UPSN8cds0%`kI)NwId<2+#0eF* rNn>`E7;lisoo))KpOyUbkI*_*QbZd8MlGLT;cLF-g)Z<7zD4veoQ{~4 literal 0 HcmV?d00001 diff --git a/fr.inria.diverse.cloning.benchmark.materialgenerator/bin/fancyemfcloning/benchmark/generator/OsgiBundleGenerator.class b/fr.inria.diverse.cloning.benchmark.materialgenerator/bin/fancyemfcloning/benchmark/generator/OsgiBundleGenerator.class new file mode 100644 index 0000000000000000000000000000000000000000..13a7d753efe868109683dbb5dadaca700f57b6b6 GIT binary patch literal 4066 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 literal 0 HcmV?d00001 diff --git a/fr.inria.diverse.cloning.benchmark.materialgenerator/build.properties b/fr.inria.diverse.cloning.benchmark.materialgenerator/build.properties new file mode 100644 index 0000000..7fc5440 --- /dev/null +++ b/fr.inria.diverse.cloning.benchmark.materialgenerator/build.properties @@ -0,0 +1,8 @@ +source.. = src/ +output.. = target/classes +bin.includes = plugin.xml,\ + META-INF/,\ + .,\ + lib/jopt-simple-4.6.jar,\ + lib/commons-io-1.4.jar,\ + lib/slf4j-api-1.6.6.jar diff --git a/fr.inria.diverse.cloning.benchmark.materialgenerator/build.xml b/fr.inria.diverse.cloning.benchmark.materialgenerator/build.xml new file mode 100644 index 0000000..153a494 --- /dev/null +++ b/fr.inria.diverse.cloning.benchmark.materialgenerator/build.xml @@ -0,0 +1,10 @@ + + + + + + + + diff --git a/fr.inria.diverse.cloning.benchmark.materialgenerator/ivy.xml b/fr.inria.diverse.cloning.benchmark.materialgenerator/ivy.xml new file mode 100644 index 0000000..5cdd07d --- /dev/null +++ b/fr.inria.diverse.cloning.benchmark.materialgenerator/ivy.xml @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + diff --git a/fr.inria.diverse.cloning.benchmark.materialgenerator/lib/commons-io-1.4.jar b/fr.inria.diverse.cloning.benchmark.materialgenerator/lib/commons-io-1.4.jar new file mode 100644 index 0000000000000000000000000000000000000000..133dc6cb35f5ca2c5920fd0933a557c2def88680 GIT binary patch literal 109043 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 OKnU!J{D3_>*#80Lb|t_7 literal 0 HcmV?d00001 diff --git a/fr.inria.diverse.cloning.benchmark.materialgenerator/lib/jopt-simple-4.6-javadoc.jar b/fr.inria.diverse.cloning.benchmark.materialgenerator/lib/jopt-simple-4.6-javadoc.jar new file mode 100644 index 0000000000000000000000000000000000000000..d782e5a281e3eb67dffd3632fba5c8f0fbf24847 GIT binary patch literal 170859 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%0DQ)MpC%wsx(FVVv6TCt zgdddiEe}}+GV07-vVokeXIhrFW`PLm%r(ME7(!Z{oe>Z#EyG| zLyXmsyHjHWIA$HSFkjXNu^m|KI~$!T^iKULdE}WJQA-{?O8gWURx**kJ-6Si>nKX| zgk!WT;n5Xj6>_PG=H1A(%r^jf$v=v=a07(`xt?ze`;n|0~38}vDRehp*OcOzrPXe{I!!Um>JVXhWo*FfMZI{uBnO$`NJ8XknEE-zxL z5R_LC85+Tr7;n?O9AXiw4D$co6*=QaE|1je9HD zvmRAYuF`kpF`76S3zpQFrbX$tjXBdkFo_I-1#uAEQRE;ad5`hi50?Ox(*VJMPcq4E zi3H}J!m?&YjUg?U15`@1A=(U${DIebcwsOV0h9n{!XTX?$ABag@uva)N29PO68DOg zoF(6AgA^v(xsZLlL6I6M#9_taq!$LMDhYyxnhjVDEy|iRxoN5eq9$j~zk1C^yJeGw zdWD+8r5a^-Gco4xED>gxEx}uM4tbt3M6LiTfZq=AMtsfqATqY@h$BgQU^Xa2K0k#u z)n9N*L_jG1Y>*N%=(mwV+Nl6;#~aBA>s{g|ZYJ+@3+p=`qP9*SQ)kvY1j150N$i6D zvT2!pNxmTu&l1N(Bw9`$wa4CYNf;U=tg#CwT!7AN-A=#`Fn~iO2cWe#oLJ|iKLX1E zXrB^=vM5~)C>mGVm>&-#>=E*Ock+!0%PZ*8Q7<0JE0yd8p6S{Nw+h1DIr+1b0!_UR za280;MF&y%#R&)~h}!6!l9$fXohS#*aTOeJAiLcjR(rCX=opTFMAb6v#P1}^=^FXC zl#~=FaFFB3@EoCk_+`Wya9M~auu{wDlTL6xk*`qR9|2)@3VEH0q1+RFr0@;L%h$n@ zwAfqc*4{sAx8kGpmG?wkg+4!CFA&> zi~~WWt8)NMdFbtcZ)NmSYek7+DQP^+J;<#6nuTQGa(W~kEx>Jod?@UUn2LO579@n; zmJ(wMQCUx9H#%>V1vmtZoam{6kO`eJd(zB9#3lBx83Db5{1p(bM;e&8yNx_TmfaLjIT&0TckodVQdOre@t} zxsn8vYa6A@(3g9Haz#r8M@2C!9EnRWmAkgBs&&ND$IF$EJu^0As_YDL>N^;o{m)|& zX$89B__TuE(U&fBwkhNW3a@~!9O|0ObogRwKC2^Arcd9f%LI2?fhX@SBTg|oSJ$0s z0$nuj83dLe4Sxs0k-e#9OrYr{3PlA|awaFBcN$J$4*sf~QR zTy7+J0)^9)3i0LLI1*H4#fX-ii{a@bk;N9lb9IO7#~_!s(KG9B9faQMh)^!(ht$P3 zV2f*(Nb74JNY*4(cB zWI9&we{A9;wgspn^Kmb7)a&w$-prj+HlSXnY&a?MWHDp*vdauHzLR`%#RUGLC#`_N z94x=9IXIeyyBTSmJ1O){;0mcrBY%uPMCU*J@)IHBH8G}AQ>^ZjN%gz(Hd3W3G-u4G zQm!?B_Aa!tc8@u#R87{9=DQM(^DP;XgCSAM%a0%g*MKKON$(edgCsCI=f3CDN+UtW zJQX{CqbBu}PsuRcH&Zx~9vZ=;ZQ;jSw@Gd00!4mfv!tRyi>?5=+mJ311d!ij z-Mzy_Dx^70_=CAoikpD+6_CUp6U}Hwl#@newte;KH?v&&hIkU35n}=jC^bQeZ<=pb zER{;Gh#1*|FXKAHksaFKUtc@fV6W{m-6fn}lbTAM#gn**+g}p@mVrMWMW0Cx7q% zaRBON7v9|!kmjOL{h2v*&iw?#Ox!S!mHvPz}j-_0+M%!p^zNVc#sS=x^4UcHE0>3Wgu%0T5Sf>5!|0Kz9%eM$9&%UQa`&@DFX_6(GHnrtqqBZ`c#f ze0u)t#e&tEY1Xv~83shYoWkQmZ=bzy@3~Hp{fMarrn&nuP{S58=dQ`vtLFWQgx73m z?!ip!*{-%O;1~Xaa>;vXms@Dq*NbsCGDl7qRcZ>Cpcl42+)q?X>SqBMHn;H}2xREH z6`o^q6M-6n!o7}<1z=Zk!2Wb#Go-|Pl{sk_yRR)854q^_0*Y%HSrXx@T*8N0?oj9l zU~C8h7KgJ7+X(Gr%xj-3>+U69Gyq*KG(tM?fD$S3HtO`6(WKrgxe+Bz7IgcWfmQr* zKjrjLr0StcR5lx;h4%XXliosGRduSz#Y;*&eH{%H11~uy(O5)zU&mD8puPh2yiv}; z0ej_fQIR9W`3{Vo|zMp8pOo;o-h=Oc2@eFkl1)C4>uNFoTZ2LOyK~lf^UKo)T)bxXCPl^12WyWN04H0wZiPdY% zy>P7GNU%uRtZR%2XAM&-ieYuR_^cbVgwBftmn_AbgwkmW!*PIzANTMhx9Wj}?Q(#! z7|1=AwsCd6Rwd>AM*F*zj}G3MDfgnvYDI>6EjiBDAEE8f`}Be8B?%t8&BCsPYK!a| zXQHdrncHk|PEJpj_%S}gGt>@U5P))AKhj;`h#`|ZPdk~O&^D+ydfNoW#J!l@1&ZLV zbY)6i9Q4PG%TQIbgET4t=t5r^9RZ-e{T9zN@QKs(3+j9`IzZn&)b8irKbrc_-tj67 z+jH(6dWDv2@fj1_5w@7#NXL(7ZNd%<$^Ui+G|GwvOE&pwJbrkDE#{ZL`_D zR5YD9nT~qHLDQ(U@@!|yYN~0MP=`PTziNjA8B?SzxWSLlj$W? zzP0}C`=nPq({Z)+vwp!vLP}CZ?C2XsMtxt*{xrKczZ&@K+A8}tj8Sd9TN}#Yn$w4v zu%9Vcy9w-!ryPocZsbP9kq#>11B5p)jctI@mC&(5}gRTn4oL*3cM$Bk0glj&P8 z6Cm7lc(+JzMzKaRODt?^v2q!Xr@Xt5H#2op}wO7>3&(K9r7 zK%y?u2Z`YP0MDY<;O?XdR<;C!PGv5e(wRsL2d`M9SJY&BcQ|p1`G?tilKtI#hpv$2OxLsu*G0ShwAq}5Ajn_xPHddvtlk9VT}-O)96-pPdNax5@5 zZE;MdIJDMnuUB55jlijmJH0OQ*#yJsd5pQBUXCzuDM}$3qq6TVPEe3oM8gk{XB3V3 z-L)e0_1WT3Roz|vE~B@$Grg&=i0ieuj&|D6Ci}M2|IE$-V_ct}Vx6Fwwr!eZMp@qt z#9MK)I9Rs*`Z{M>jygQSz3dQd?YM!|o-B5Kf^!5iOE?;W`t4|-IrG;qGS~e zx*!rd>G7L|DrXT)+b6=lvg1h}m`E^+_-gRKIM2<%sSxNb=#Y zCIRSAdA5LaVC)MB#QP$sf?D=~qnz9i6~oNAxTEB`s_NL*ZvZ0tUjc}G6eSsuyJYX4 ziEpKPH+qA~GFbi42GuAqhVyX+0-{j5FGmNdNx6>6<2s;kU@q#mTy{iC=dgB>zayMCfYm)nzW4b?<0 z*+F%i^uau&PbsPChE-FvYgbmLYUY@~Z;FSt=IZ}0aG(5jJbNea|1+?Qi~FNsA|Yh^ z$z@^-r{g9c&R@E$cBme5*5eHt_W6JN+0gz#UG2jG0Q9;80AT*Vf@Wn?m;VV{(DnQe zH`}jV3GwV`MnTW#NkVJ?O?ET+8Ce&4e4*rN)0D-j1(_UtmS_Dlyt`oQ}&Y zKF*)l_htI5`=w%=ZE>sk&|Lz~Pm?uT0wImmKkl--N3D#GoNhkrMYxDi+IPx2$LBC< zjoIX>aU5dapJ~3iAHr)kOS2x0X|`~$O_pQx2RBY}3l9btXz4W|O1(8$X6_dIy_qd4 zeYIx|kdH;hj%~(jc*Z)Y>2lHW`Lve|Yt1^gzgVp`?jGy#1Ts-D;i8NFcXA03pAb=W~K^@byG12)cz$H!c^O?RCOe z@Qgn*gx@9Irh7%GC~)shVjW!UM7x>$PwZ?H1KORyhUazcL^g2BeDUQSppx$BJc2iY z6s`*^Rs=8|*t|9LNLlVAV4rzkFaYWk!MzwW4@;5pYe5Z3GBqo;f5FnYQ}eFPajWBB zG^MgSVMlPju}p4csvZkLa#NkRJ@D39qiK;@XA`!10qyltBkET*O!)#~^uIesH(|?# zY6->z?VQCF+7zpojrGqA*w*1b*IN#FgPz^wqft0pUsEjo?V2>J)fFo?s#OCciD7)} zR41Z(+Z47cFtJQb=?$jGSvsh^z!9m=A%w?#w z1$s`ynbELah`qLt6l@?8i$MTPPwXLUhyJ9t4)O}65e|pAZ505+v^>z^htVi3@q*|%qf}^6Q4_4C4i4eK${%ViGq$w$# zmo%j77-n*wDp{r7skR3NiJqnOAz8KgwY{ej*`{cly&A>!o&WBvSG|^OP7rOET{}`q z0gR2XTb_%}ziS0LF-V`4sv@kLyA4J1*!q6P72*mp-o~6=2iX9%)HFG=q%O;pT+2pv z=2??JSp~weNIB(K3ZPI5A)O{tzCEh_ikcoWfll21I2o>kGnUpCECe4cqU!?Y5k)%r z{jSgvGbdJOw-|VLOltx${@Y}p0C+I~!`o~M+&5@9XR+@`knX&&PnJ%Av?;-p8cNR) zg(*TE64s3+Cxxg}?EZ|{tZjOPjc4Gxrx^kWdI$MbzS+=)B?7J47-VY!O~tuOLy5p!L{uuRs8 z!F4C-ox#wICF+xzCyooVSobwNOL|xVs{gPD8iV?ALGnMS$&Ej#d67e_do^xX!SFY3 zPmQ$0brN(KclR>6R*-Y+fI!9zcj-WjOpeHixhZ@PyNPPhQX1*pRBO^6eO?Bin@M5@Mk?-4~Px8T~IBU>&Je@xMq!VO-B zwTOM=7=~ZThbbx)zmu&T!j00Ag71#|1dpNW>-E8`J~N)WQe^`YgB=gKFK6w*olvf& z6x%82lbJlg#C{+wM35sPtN?pB_=*S^3xp6@dMd(Ew_UL9 zo>$+qmwy)JOU*l970gOIJH`)40eyGBEJgtd@fWAj-cZEZ?&ddzrCS43QZQ)0@WWy8 zh;uiFPO+I1e=%Jp_?jZzdtjfvM$crdV4h6R{j|WIk;bZJST&?!LVxTe-nLp_tin=m zmez407nG{JK5nF+vvHTK*_M-KGh=}nOLHfJZ*>n40wELY=uANn2-dhJcQ{bIqSJP- zU`Lc~B@#pbE7S{zhy^m)NQ=qKBr$S5o4AS?qFvn2vRk=w~}+wUI|I{1W!4wje?a<)@v?#}JV zk*OX8A@~DW8j>+HN0p(SiJE#<$)M9xEkR2;<_pH|-fd&`MwytXMd}fBMf@DiMss|0 zMkfoA`LPT8s6BQ2omKf`i=xzzZB}#7CkuN9cgfRQFeC_GbgO&MG4+mA5=H9I0@IM?DJT>;_ zZZ-;h;X$0hA`EcyDBV1H7Gydc*v7VFI+{i3Sq_`G+lm&CrrE70I+1Gd>pole0z% z-uGvf{Zj=XrJ{UL7l+SOkw*jaqBl1X;!RvmC;Y#NXZdHxz}-0i@WL1eXUzT<8?!o+ z75T>kEMaiYp{AN?ev#QqUA{EwaY$k_x0Qec279E;08M@<8Gl>4lhiRx4#O5*&gEWF(!kog%I}}T>7t-(;32)o+$V=`tBO~!9amKW#^DL4!oT5@iOmgo#1-#J z1tF-_&LN-r;Q+fRhCr5@FtjA{C&R`!KbY8Ocame#E^#zj#yY#x+719 zK&GesCXvZ=E3f&q!BPXgpo{eiZ221REHx-8NIsYex&L$wR>aD-yd#(V`pnfP^O9L) zE68&IH%y+UllV=@r|AIA!fQ2F4`v$fC`2hP!h^)8o|Y2?Z3H6BhK5~D;Po2Lf{f%u zat8K`RcBXPIce^)zA_kEyuaUogOAT`ram4_HK=W4CeIMdHDunCSxomBZpjwfC4hXO z$^V8)O%7rHX1$oHs%H(;Y#lm(^!7C&zArOru>kJzRd!nsh6s_dy(3eBadyJ3!^zQ) zV^W860-h-t$#kWyT7+9i!~du%f?0QVm;sHbjHZN&0AJ^z?<#K^U=jMBw;T?rUQZ3XQ*$6D9iT+|`|%#oxEIMBMa|ELr{O zT`*5cr&fQhW`m&)DF*d&EYjvmaqT)3NA0 z(>9mMbllX#>V~P=7ma5bT6XCRiSP}O*aCMi%rL*1<{&*cC?4}H)puZVHdAan+vZno0Ruq8WRcQ<+5exw(Pwm0eojgeNddECfoU5P*KklA>mLV9(ED zk|mg~XL!(_acLxP3dAs$o@VLXSc6{nJ}-Nu+?oden3nHNq1;UATVa_!F?C}9SV?Ev zQJOn5xYx{Ed0~2!&A+P7MER<>H;;P$-SgpIzSzpt`#bme?pC(m&fMFVd-ilC^Ly&W zVTkR)t(*}l*IPg-5xShT`3jvi<>Ena2>;dN{<*)-{D!BE3whN(Vi~3dGVo81ufRG& zy#Oj}<-_?0{=XNnXE~W$zJJ}Dc02$8SpUzt_Ti@&`7OP)iEQ6{@2AHvqfTy z_a|a)9(;M8CGH7%$14#so2TBSS|oS^hC9 zu2Xy}U78;wnfRgB^Y!j38+b^VNh|D#94l#<{pfT&d7VF}$4@wmIK799$4i#v{vl19 zTtXxC%lk}!Lo7L*5&AI7yVn5hZY9-rq zM-fnm2FP~HvBiWQF2Xi>Y7tPe;8k-0!o)JDDb4v4iP&kYL)LDra^$x45tXE30=)3$ z{Y;(u0}g#kPHI)`?^`I#F6+n6_X3+5GydqzaKJL7&PgY?C}~?bK*`MX8a|WLg>d@g ze8d)hKo=d>Q=wngj5sx8iF!KAJH|t(Vlu~`FupILzY@QcLldx`3sy~<;7ybZpwOt z$K&^B58vk~TS+S1T{v)Bn6=k)wG79+)-5MDFv!lkg$XvV*J^=cGU#ApW9no)GCz{z zi2B90-GVm3okQ%%AyH%qKw`=6RnNsn7&zJxQLqllx>Ac%WHb4`1xw}YAnPk?be&II zRm8E6T(LFs4kiW%@H#aS2XH+&$f{Uv{(wp?m_r0LY4QB9bR!3-zgu5m3Fs4_am+7p z0~pi^+-mN~9Gg|x4HSg5f!&5`eV}hP04j0oN$~Xr!P1m6BULoOH{@1tTNJ=uO&o`@ z4IY!O#v6ufKxy0tkr5tQhxAso2cA_9>Ry6nQbNB_umPSGSLahAWJaT*LI7?fJdUkq zM>dRfxQO&H?en1Gm$8^Tkw14}gg`X>4UQ=gZ@s$4IaHC4q*OF*bmjHFv3HaD%iDNE z7x@FFla2)COyhqLtuawjp&LpnR+t>|NO}-XqFn_v*5F#`rfRhCdD9B{Y7A^mg?81h zS^p&8-l0k5PP^s}X%bB+74+SgY9dP=Tc%KgDJf^SG8dLGqBI4uK^L)g_xNtYUZqV% zvj?VR23cL%L?vv4?QkJPSsSN@C_w=+O@BWV{3ChBtO)r=QuM&0!fN$IKp^|1koPBlNpXLwvxONY$3pmSTpKk%1)N-}rFU(@mh=4MXQjSb zu3EbXIQ4M?7tPL8^iR$xGv9YciB2(?t4H^Z4eM%m@`Zrn-?Ka)XhUN(W&V!Lx>ko$ z>gK0SCPmrC4BMxit5O@KnJTOffE3gLC4iAi;VmVAsy6+>_#To5lNlUlLi{Pmft|r5 zJ0V^%CU$SUk#h9;a>fvo$f-fSdBCtceiO}GBBlb1Z~$t#k{wRD+RaPu+D*~bq<+az zkqiJ(jyQt57|9!AAEN$XaOw0R@;(BcYuSo_j0H_rmAFrBQ&awMZ&W0>M*xIh4pp%F zN&+O1TfyeM8?|(Iz(-~h8;D}=0>yIrN!V^zcM7#D5YOB8)Z25p*U30+1}Uc8OC_bJ zrDvs50WGT9H1xoKfn_$$8gTxav0+4zl!O`>i~&1{hTT0US=tt#Tgq5ewDu3+@c~ue zy|O(142Nh^C7uIOp(8FY2oFRurN;nR=mQeyi4|t?6xd=W8$c>et6_?CGF?tUf++V1 zWlWf>vk2sDzPHGxDX6JzT8l0~5<6ps5vT}l(iqW$EY0*Oq!4H90tFE*VK!>59vZ7D z&$cE_3*4nNm?bCFLdj2oS0$6FUhWK?WpONWm(wT-$*Lj5(+6^MU+p7bnjP?(8cm>r zaWbg;@n9dIkQx~`l-&nTlArdOCK<4$+FDR8DUq!v);3P-2Xreb{?SJ|OictT!WW}V z;Vc#iD^jipu&v-mNBJErpEjv`uI1O($uS-X+Pahwj#ETn7el*zWGy%y8v9EB7|R<5 z-C7i6N&+}*OD|NBKEag%uo2kmep7%nkYX6PBzc5Q-D1>J3}(jK&Jd1{e3~#G0w&zT z|1raRH#_p4F*z&+)IDJ$uzhQ=T9oCNb)z*w&#p)*Wp=xcoTKB?to^sAiyTs{iyVKb zO^(-zRt%Z16TQDQ9ngx2D;!~aA0UoYP}iNhGFRZc7En*@*}RYA z5YbKP7`Ql1uL5GXA{9Q#SBh$!8tM9FIdn)WVHIWs3XmqhW`8RK(jRN8l0LLT0>%a; z)+De~&GGx!d_bBR)6uxcKFY+x%h%4=i!{T<^fx0M4drF12wI=6A*~T#LqKwXhgESj z&&)TWD^0^QMOq@m)RA1oWQ9qlX+C(*g}(_1ORg5Nq{hL^KM5gHQCWk8lc|~~Mvx2; zahCDz9b+s5ALaAJtyP(zlFwwZdtsF6oJiZ!pfN_t3j?>JC4-h>*#=H45nef$XMluQ zH(QpWKpDu`-1td?r{Li4o4O1N7WmBS_Jir=AeA^@&QMcJ4v1H?H;{A|cGuN z+BIHrmlwnv>>{M2%}6OY^F=rez2r{oblWKYc88@$?nM;-VAoR!QD%%SHAZui;;ih1 zEogCG?B}n8yEyl$h#0f8QfH-T`t`4Ef~TX()_7}Do5Cj@_t{eZ?vo>1!Nxagt`elW ztDfA|osM)YS%SI0Q*1MZ*RsP&+x~JhW43@hI&^wEyU!s$hn)6PTe@EGftd9nCNZyhsA zgaOOFS%Fck7X@j`J}n$MyDh2dyNX=kN%U*h9<(5eB*bfa053RxV08tig`Qn$Hc4Hj zlR2V3WswwSJGXDelW3OuQuF1ZB&A3l1n8n97AC^Av2=R`hsXwJURS44VoujdNI-Lg zP0}=SBQy^CsWLsnZJUDmuFon=ZkM_$BR!%+*F{$Q7`@9&u!bs04QU7n9 z68#)hrUkJKi6#Xo5bK9C@u}~ZT(1)zAu>fz!#M8}w$#EV&NPR6b!kxe;d&p}%@QI% z20L~}yJ~8uCm?z*x-}__gvi2XdgxNym}~fi@9V6u>-x_Ab8s_8$=#BG zkJ}bebZz;08&2?I_#qn{f_b@lmiM|XetNv_4X=RDq;bal8`m%%&G&F#vAR=#F3E3~ zq|Y;ww`Ixu^5i3V^2vO;B>r5I|2X*Il*~gb#txr!W$mf0o5d%yzaMRd@i}^HE^g<~ zo8s?bg|zaIXa~g#?jj)QLUpFN;j_H24OOt1w_LPW_7(#f|Q z`xhM-VW7Z4gL++4?2^t$7yjiP=L^bDC2RFn`*v5S(p{b8E&9|8vs8)=pYID%*8KWP z*6#!1>&u*qHZ!iSYV9(!qlc$7p_If6Il70p4V$!V-6Iu%)DY68*~vT^@# z^OEX#axl=kPpPT)*<=|)dZvg??c;1O#WP`V6eZjC6)$O8Dhb2qOCIlM#levE*)@KN zazELqsKYtf^B4+O)Sw}RmM0u>LiJp);))|DPkzO?UISLNR60I0P`B#blUgYqi&6@J zx6?-(-vgnb!Ieux>j@e5k2RT9-C(?YlkaT8+hX{MM#Co-nFQ<&mxN%EM{#clpAv3O zis(&($0BR_vqeZsG|A`BklUJ9=0zI=OE?oY+(U45XnHEjjdC9&(67WdV2nv^Kq8CQ z-gwU+W}p3vNffH9O?IU>9b5f&Zc$UVrNpf?OARgjJ}~SzNKvoVKp7kx(Kq2PtIpyi zx8RB^?SxI;((Och&WsWo*{eIj<{Mq>q7)6x+qMMyW)vNfo1B|>5^M=^5cICwoB?Ow zi9gaXJD=ASMD1F2I_r|9JC&=2h~`jln>Cf{qQ{??m+}F*?@v#*ood!?e8a@wz24e& zO*aW0AIB$U+iz+r7-rnBH#-XfU@wD?0I*X4iUI}7R?$46J|NnWl$t_+HvF95f1kBh@&uMe zufK|iwSsfB^G#r^u+PZivf+F{f<*R0r8KZB+N><&kSkrO&o2!Nmn(&DprQ$3==wRX zuMKS~I@wDsCKU;G=q>;TA1+4Acv`(Rh1_;nR#tjxxQio?ern7yEGsOGcX1GyipEKx z(Me%()Dqn}F+9t0o@IT1!m-rTgx>zVI~;|%BA&JMGx2&UQmxoC!2e7;H68e*Vz&xG zUwPAGFW7!Vqu8SLnS+D|lKt4p>V$8M3B>PTrH_e-mvSz6rJR!8Eju4CR{p)K;-n`* zPFr^=$5e)*L!uA@ud4YuU4(Q84ti?p!%;S`{+4IeDJKV>Jc!Le29^?Auy5pnvP3U$;s=Cat?2DX=wAW=VC2x%%6KK4{(#(p); z7#9~*6PPz?Dv(=i0c&G>PSGe;VS`aRrYE%&CqLEs0_=a|ake~8XO6Dq4F zwO6m-YTY=Xo4<|4@iTidU5>C;URQ=a=^~1f>9SKaSB@b2XREf|>aMTu)~z!cXX?m% zA_lNTEo@(wLV5q3_Y=|y$XBXA8|r>gKfDRkZ9+&MxEv1}5ERX!V)PGEx7=K2R%agT z+|M^&Pvpb)__iiqS7h=!8JBbdJBxFMJ^!bi_jb%T8g82iOQvaZ1J$Tj148MM@66pj z26IZJ_}jfRbK6YZ19`GL!%eLt_D zoEw_n9~DYt%$O9ygrxe$y3yD9t^jgKlo^wEgHzt2=n+QY90W$z^d8}7I79r7B1Ig7 zg<&a7fizZU3HTKr4W9$8k-)UmV9v}~0nkALU1H&{#HLTpIEAnleBOnJ*#zoyQZRsRw5T3y_(XFBgG{EdqDM-a z7qX4bN=CiwSw+q$k4V%996LB^W?kG@5Pj&khK()CJd&HiI9gq2QbrJ@_Fe~spgqN) z5Wr0!-(Vsv5$$X{Vq6{;-{Xct(6Vo1r{O)1;#|THzfmwPhVW;flyEqah?sF#P|LBQ z({o5uuY{r-uQjvhm)q7l!5GB#P2B#075B8jrct!&m3 zr&g#l2oN6EAKTylmc?QH?+6kHg*Y9L5OIAh3Jb!&fUTN%k5eda63NnvcsZUo38;+L zx~e$q*eN22pirSckehUs2hw~eaYwLT=ofV?LCn#jr!a7E*1K|IXn-N!u~qoko^onm zEaINarOwo{v5um8X^vW#g51zr!+f%d_TiEr(Shwt?1^-og-w9o${Xtn_#Lk^RVE$SA_zB->7|~_c&y-KsE?- zjT=B0&9@I!rN)=QOget$qnnrZvp}RHD1{1ckS6qtD3oDKLY`KGX`g7ABD~EQ`Fo=d zvkxltVd+DrUAh#IbkgSNOAIWue7m3pe9q>;u?1IlQDyGFVn@Iji5m2k_;$eTCn^H3 z6OdV_>@inJ#unq*X8Jdl3}sM7G>=B%9K!K&t3;oAA%kTF$aazO>?ec*#i#HR!G|h2 z4^hB6WE+`iBbIHra8KPHGI~ zc(2iy@3N&WARS?o!7n^ycXcK9r&%9kJ7PvFNNJ1-&WYH!dOx2DWMk1?K-&!9cr`$m zKTyjpHNKIA&qKY-5jeKqptxscrb%x6wxB)M-d2doK*Hi#o8z@hPPb0o#di()dCsqH z+*+_PWW1TDb}3w#TFE=4UHXf5XMIq=UR0QajGg-^f`dt)&9Lt_#KMAQZ=&! z?3Mf+bhIxz_ai^MaV`D^njVgkT$&sl(sBJEY(P(FHQkM6F;{7QN694T?^nCN68kxo z8y?SpF-7N5sWjx+J$H1d!r=?_Tns1M+Nj^JDG&O1M@igMrSjWJyztI>xZk4F_`5x| zG{Vg-(11&jP7B%ZQy&wH6@V1{+>;wCkHP&)YHJA6_#}Ave1!pyj?Ett-yPtT$+7aZ zeuvw)8$TR!w*neInSpE$CmjCvCyT3I$?;D|J2ra(2ko@YhfKWpw~kj%XV^%20PL~= zlx8RA#1;xj5_ENxu%?#O@W*j{YEL=a%sHxaQ=z=CXaMbGnaqsLJlOZ%N;aFnV*Anb&>WYuFiC&-v%h zzwCjRp7`6^dtgEs>_>4Aurn*z1CrPkROthgg6yFDdZNu*_SSj5L0hR zHKQh4gd>DQOU&kgA1dmhlDBw>nn_;f8{vW-ETWg&hFT+dHYbq|!LDoEO*BpxW4>;F z{DV*I3Ni1zh~wcvvz#ChAIF9hQW{x#dO+f1xn79&fUo`@CO&(Qy?mU~)&JvC#e%FD zd6#j2Z#XcpoaE+?l0ci?Cx7IO`8>f{IAQVYb6pOuMcU}LobS#v% zU1nL>FaFMNok;R@lio<^x;*;Bl`_fGT{_dEC8temJCh-d;*g^qx}?_;SGf@LkCqyaL? z)&IpPCzAjkS{y zq5(jJ#|o`)b-xnHfe4!lK36f}APJ2q9)uAYGibz!gq6~3Xu>HbG_#2&mKGPbeQsjtw%qik8NBukk#dT6T4V1?)mRLTJ15`*T#!&ujSe7 z^N(#+y(YD4Nmjf{pd+uf#rY2)tx4wCHnhwcNPJ=lal%*?6=Q2RZZ!hO?Y9|P(yWk` zY*!s~LWwZx+;f#UDPsLVvfo45`c`2(J!@|!Ig-+%#aI5{T(e6byVkcBslPdAxg5*c z-dOZ=7&r;WU(Ous{GCgFg?vxhwtohS{lB8vo*}ZWx_+oO!$1XX1lZ znajFF;?`rPlZ3)X>sTRSBlBc2wYX>{E*|aA;{kh@Yx~{GA9$bYcSIA{!ouPfOE5(T zI-^d9^kuwjhT^Rk)k5)sTXlhUmaREx$FSro zQD!<5O{6~6brQ{gM0B)3p-Fgwi8=Eh7;Wgl& zBzm^UPQJYUlYhT33;4N6@7p+TPBN9Zwixi=utLsfdBf$Sz%_H90coFsHv0gnG4e7$3EZSS`29oxo=ZQJ&YZQHhO+qP}n zT1i%HVL}t&h*U&Uybk{E|N`U4{;>rSvf9 zI-m1Y2D&GE4!K|xReWq_io43y$6fm7HkJH`*-BOZm|VNS7_9ahKr*5?%qe(o;0#U8 zA$4?F7Ls_lbCGe<27Y!O)lrF7sw>e7bL7(^>VBX$V-_?PffvF9$CirP?J~e1=MN!z z4PA?f;(;Sd!xceeq<^vO1zI>2+12nM{FT_@R~=;$o3R&C9`MEdRT)7wC=AcK{nJhW zV4!<6RsK&5rn`Izrdd?1!hL)7h)q~jx1H&0SVhN=`5r3jKG(|Y`8Edsjmk=`ud*CW zvz`vjD13zhSW{tWNfH2xrTQ>OMD#G}j&RK}!KmsBbj?;xvOxQa*yCJv3flsE+Ys+aDeT$yAP;(IR8Syh?1SEM7Ll_9MaY% zE%JTAh#z%@IwjR|~cjFMZd;T=1OiJk!`JEF1DUt+*eN zp-?7nH*lHz!Kl=z=1$)M)|ZALz;%S7ju3G>jtVei7rG(ExD_hdx%Uz3qb z$cv{|JK+(he&1UXOe_Q0t(5ic(jU1+4`(a49;-Q+Nzl{QFmTp*zP%AB-=5(A%sb2< zp95$A8F$<`mPGCrY=~T7qFQL=rKSI@b<1j}=9vJ|0D+A3 zl=u0Y&<<}y{k{x2&SH_pMuSm!h5De+o)4aJI&Ni#HMGkZA0Jc`kT+=}lv`s7?+~f$ zmLUBdGgdOCFTE58;1??NAF$`2=gsD&K;UoPd@#<~uwDZa`%5O24;86D_IN4@M%lIkv&k0212j;$N1O#A)Z zKtcfnRZ4Q+z+8R&r@x$UU5omg!_^#koC~0epDTg{)zqA_oJuuFR0cC_WkxEG?^*Ez-cLb`aXREa zqcm5t--F;QSM8p6nkyoWr~07_?~LHrYEe;c5clgaD=s}zW;1ZZ9gY57q;K2siRVTxKIpB|%u-fQHT-R&dFM2Uq;Dh6cUFaTyVz9_yRS@q=RAc_PFOVBt$^z*=!!3l2c}^#} zj%Az++J9oGQ8OvQs8D(u$w5gr#F#P$+L#Q@suuD5r_H&>gEY&m+kD{jLNi{Ww1~su zrqH^etDJZIK>y7jx!X0t(%ZcEMnlG)`x!;+{0DlnL&{v**6yN;QFj!jwvvy8oyK>g z%(oM+^ktJ&hpnxNE}6rgWOV3#5UbSEmT|#F7`!61HBCErA$RTh0+*|{5(58)NH>&Z z6J^I1&XilOHGL>e4N2>bnKPBIs~1*5Y@%rYa#=3zwWVP(m>$5im1k=ou!?P!&BH_pf{=1Y3A zJ@8hrhlDaTVl;)2M_uUF=JWAKG{>zQw!&9=)c4|?V0t;bJdH~S_kmP4d+!u1N4#md zS*7&^#ni171;KD$!W;hOjU0r(!2bjd8N8Yj5vc0h_5VkrlC@EVHz^blPz(A0Q?MX~I$@Lw%ey`%5cYtS6)=UEVwt zI4>7dE1a)WWNXfM<$6O<9QE66pVaIFn2H!I0xuFeSVuzQVOlPdB=;a4(i$@-b z(yT=3vifVbIvZu!1tfSaz&MT4z-@44<9Bvq8)>L@!5Lwg zDRbH2>A-FFR;LXO*wkatS8-+Bs4b=a2DY4hTuwE}Ps|wB& zy&#=5$0iIG$DvRsR1}(rkcE+X^ z4osHi4@HK7X}Qa}QBpkwhXf}E79N8$b_jY-TZdeJz`9&B(?lNipGk72=QI+A*O7Cb zY8kwj7Bkk8kgRO=D;dspjw3=g|A;@px8bOhG@^#@p_b zMM7|#x0a|yX?TNR0+N^G3x(22HN#9wn@4R<$l6Vj=PU$qMd~XGVin_ItY*8C<0`S` zS`;LuMfAr>*agNt+HQocrj0R6fHjG$T(0=+Q<+~5`cC}^!8-1D!gpSEac){0(LG~6 zA~;M$=g}Q}17Cd*gX*z8!P?`+2T_|a;V_T$Kp?wx1y7*w#afq&6YhN%G+q-ZhDev& zZp0S(Ex3hWA_HWlSl1f~uYwOzObNmaCw`bukdn&Nramm8C50qYF_@uYaT1uY^H#23 z(J+boP9-XBb359tC-FSvnM1(wd=0r&9=b{qT_IlK4%GaSI2=-QUxLimsktPai>EFX zKN;7is@A;S@bAhL7n3%YlQsLJFWfV%d}RIA8E8*IyQjxI*e5A7ZP2`fZ?KJJb_e8^ z-B;d}2a0(41~3nHGpwYJq(4ze^Otx6K2sLXF7xSH{e3VcY4zOEiLxf(vUGpd&dqXary}CkjGLHvfNR? zH0>S<^NH5ZorU(!C*uA!bH8CjEMNYflaQAI(PT$DS7Ekf6f&73+?iGE;1nJIo9f&? zUm|^yRyH|HJW0gNld3V+Nym^!uyL&(RxwC_XWZYvf+~n%bu$5R{HO$9(PYzL=`z&` z@=Q&Agt~jc^hN=3z--ZdEQHi5cR7KWkc{#c4R@iG#VjDis=-h+SQIW0KGJ5#LH&H- zd~qYj$Z)YH_I^>pHz*-8%Sg7Ou*_ShMq=r_`CL(!e>H-e4Bh3F=EXxwF`zGbLn3trFZdhd(CEf=xWso&%!9Tz|`+>OS1e_~?9FaAsz)S?hicSslHjIMXt z?~SA_w#n5zLV|&-gdZLff~YKm^i*`*=dM-l zhbjh5=j89JCp9?}1jF0Pd5J5H6xl|F5u-Fm!00Ay<7~j+Pmpaw4N~G#8`eyZ*P2=~ z?~>j>@V)DIi`Txeas4ZMYg%!p_N|?4B0FeE8N}SBnN)e9aV_zw)q3<&`Y?FRD3vk& z<1O`UGFLh{55I39mc6_y&pYazRo{n9Pa&2goB-zD*G#2F0@v)xLtjnHkN@|>a>IH| zH=R3MW>ase{-?QfW2NY~Hn!s3U)87U+tY_rZBrx-$OHCZV0y}AGU%xYvG*GZ10@06 zH-i6=fy9s1RzUy(C4Fl^{=>cdUk!$flj(o=;@4W*_L~|=ey8fPy0*gjHX?RbsIsOF z&@Ry8V^ZyJN?a#kIXGL^1j5bL-+~=ypFyM~5F)MGZ|_TevlAa@E|x>+R`;yMmcD0K z3+;5>GkvzMTym%)T7NF9sU|ba$zbD3C2*RikDsM>ds}(5mwdn>Or`sowDV>xmTsir zi;``!p0X4>jaT48vL!@#Fi%R?xs=ZnHTLlllm}$VlYK6#GWbK__fjUx%puv39nH7b zhI@jqW*1%}71HHO$6M!C7^=va)2 z?`*EO=!MuXDK9E5_`<{i$vRXZWCE1qUI=qP6&(T)=P773$mFLjJ<$G7q4I`qU7g)X0cAC)wh0tkK z8=Z(5hwRG#@ML&lq7juL;zy2$C;(@uDbzx8d^=%ApC?R*?scKl7v}?CbS*FOS zz4nZ}10In|79kOh1dK#lu{|dykNhJB3kBLCSI>Fb3B^`!kJiHJ_n{i}jg-r6QYMx> z1uBnM!cR8|aIFq>Oz;*)nt}kWV!IMvw$4BtX6d@KJb%>i(~kaDOhFjiQ=aKS+<|in z+HTR`M@~NWWz{`%FzQU2B7V^X)koP!`03y0pGN3%!EsFl+H4ytq>(JV6c%!LD)pkX zaaSB-YtAuS5De4(54z2~c7!Yh5B0?(b?t$r$UdCUBj}0g5MM;!pQY9&_jKd`V{8pu|@DF zqX-{KD>7VLFKEWh&2q&%%U=yBuoccUCen7`_F@`$$NcDmd}AOhapFHep)A>~SG38? zzJ$Wy4O*KnB`>h=dK&ayXeyA?vQaK&r=+0O(Nc2R@I1?zq8Fs|^miC=fZRidop2(> z1Uh1`qy}HAPRVAWB3UfnAZu=4BK@0YtUs!Dj2B06>l%J`reNguq1|Z0>)jA52}RpR z?<}iv&{=LJx$v}-vlnplSQ4zs{3fqK7fryx$&i4#tU3mvt&d+YK-&hDL-`o0H^MK70>IA+2(&k&Ognaf%Zrp-B)%ll9?d)rV=gxyFn(c+Fjv!eQ3M`b>azMUpn-e>5ook9 zJA2Y?PI9FHNR2#ibYEr7Q99Y2hlqxVJ49O8GSD*H-iEPOL2rxdlFoCSJzEzoYfvI` zu($?ZW5abzTCQQ~uU+BBUlCRxH>r(76}tx04R!_c5++)E-|RAoTtW!pELcaa=QZQ;Cia$A?hCKr+pYDW87efMq2-65-()a_}O|bC&hBt=pV@e z`GEGPXZzI6^CJ0)C->LSOE=+qCB|irR*6CtIq(p$_y3@qlk?UV$$ z^^cF;MFig&9UPH>#3>53pqhcMosIktfWtS$QtO+cI?Zo zm?zt@zwE}o*^Pa(8oOpSU#l@}_B{Bpn$1*~RS0FAX0{Ofpu3z6fBL-s-sgOA3W0>J znzS1;O2wcjz>$p%eOk{lk_kk;VE%iJV^DgIzkvh-GN%Co!u{U|POi@XDsle<&=+eR z^ukCymD^a3WIHxaSd>H*{{XZR5Sef>F8sd$n$VE&dCcR_jcjV8o|jiwzF#hOl>plt z{OMr_k?;NnXl`Z`CUNoBR#XR(pWRy2IK%s?XM%GB4Qaui#~yujA`iYYR9$57oMyU=zP> zCt9SS^P_xNe@iQP948c~?atT;h`cTqHb9>f)g`zGOZsR?HU~iaOKjrOCFgrTsv}Yg z&IJT?{Vk|z*c|8nXTAh*;6b|F8VzIeSyNq3Yl-1(V8&G|k zk%gqnp#Jz^Er;~IDb*jmeGybS`p*8nRDo0%*dR?@f;o<(vr*etnJPUNRza#ifh}iC zi7yj29JY55(vcloI&77nn5cpkAAi5#}Z!KIy$tjs94KvP~27A1egJkl02radzXjyWTDUC3#LnRM7b z#38Cu87zMOw4Oe8f@7aTfL`_F_nTye0r$ghm%Vj$2D4$AvET;FzIjs*ibQ{dQ?fHZ z)6d{cqYd(+O>X}Nu>SE)Gc#_6a@K1W>ZJ58`%bvOxaN{!)w!LP*pj4;qR zVjejEO*xVU%;(bs;KP)^pfiLNL2$}2d}tY_crvDh!)7KhNa=45Tn>#pgp5eh0Ox>k8u z9x-P!cWJG?#`AP0PHPwCosNbI5Dr?s)_Inl6^SR34gNFP8={uPdP~*ekj3_nMeQQ> zbBTh6PjBXwzMC%6K>~aeE6NkXb_QmmK&$>KnMt)c4hKfM@@#&eGLD|HFI#|6spS2O z=zx^ycgE6HZXI%mW6q3|MOfSWRn{Q6Ob#h_w>iF4aF(IcgvC?Ei<9_-?|^H<4VIhu zI&N|Vvb+i_-<`1^fo0YukwlVInbS6W(3|8k@`wbAiFlCYII$xES6#w$16J6KbC|5? zLs8|DUXpl*K<>Sd8gTcQkl9GHR;w%BScN^8Qqvac{I!>pM8A3^$ncy1qv?f*z5)uu z)ta|!D(_jVpYxhmiP2{rv>TRM&}+M#CEJpP#)uRnkoyMO)(^T$ttYLmF;)SUJ1vW{ zoEG0)*dx0m?yt4OFQjAWABzTP=xiTiP`^&}hQ2zzy$7tNFcJD3mZGpArBW zJo=FSy=LIRtSi$hEy>D@dOpJf!wF=*>d}diFM%vaxGBOrN7^@8X`9z(M20E10IlAW zn;p_~fQquRtwH_<3Z{DfolM!L&6g@(~?@`N862lOReNfbwr40Io8X}aR7Z5%da?x3Cvwugf;R> zPIYS;)6x0x3bdWF>e#*6&9b*Ghcvq;_>NX7U@770vQ~*~+&A~tW_##Hzt5H>+75pS zl=~}SrIN(tqx1_xR8g)O#Fk2bBY%Jr^vixcXA=}yXWFN6aG~B7OaDw+Q2`c4_SA}< zCw?U7P}rrA4jMd3(Pr>9C%0g~V^Nn5!e(Xid!PN_QvQn-6YWxY^sWsb!Y&~sI$&9>T#_~uKbs%k-;PDeUdwv!TT-4b z5}@%$I>ai01WCzQ!Z;VuS(VkJ<71MQ+oUfc*N$zxlO)9ljO&PEniQ2JVn*q4e5pHA zmgk1E%0&`ux=i?yb##%qsg6UuXaSdE-0&a%i7%y;STujw3v;5y5Mv@LK$FFQa&D@@ z+?A)i@}=9LP}fO<+%bT#8!3s13~5{ZaFXFtUjJl^AoDg+kuGy$CS+szM81$y-LfCu ztdGb-9qXt-h~haDYo4;PO470%76@FuL#W2bNx@?(Rmk4ASWRpN$tI@vX8*dB2Zk@V z&MF`DmV5zjxW8_kk|9R~VC#w=ILUHi{HS5&5+Pl@R|>dnuF(aXBuHobla^e}MuRwy zB_A%T`{VFO%rCfAlEa{C=dPizp-R-3ulKlLNxY z!dt~Oh0ekA#(nQw2-u~9{iFupUcJ1d#K6lCCU+5e+aGtC3~Hp7Tmx417+6r{6>RT29)WZ5qMnv>JPqVx|4Gg z&F6P+H$aMRy<0Z{f0I2Pz4|ZxH?nW>OYGwoFMY?)^-tZa-SJD}DNkMe>YE=!9{Zm; zbtk`kiuyJ-efbsr|NRk|iu~Kv-Qir3msfdfrP36B0gtmSJszH~ud?&*Mda_O1wvF! zhd*wRj0KB_ovwg!uPjQG{I~SdAL!rP1cMJISI=)0X8aC)rTzCd!PUjmhQZjz(Ak;p zyHj8gHFPl*vA1(Gb#nRFa)jnL8cU*mqwx%21)`-1zO&Mnk;XV%5R;J^(7l~LH2`E6 zd)*3Y(Q@Ix%fiBrDT12BuBtvn9LK<7-shYfFY?4Oyp)T`hsu@pXj@BHFoTr4-tC(`^M8zz0B zM505Z;-6eXulf87I+3))lzBrynPo)gdmRI%J0)ge55d<7^M>+A(SgCuD~U>C{n5jC z^)w0$=t@51SuJkC16fs%pY#32>?qmN8v-|tIz1BR4ig?clL5-B`3;>)O*k+aaB5EX z_o@<_J9XI+?6F4uqQk`)bm2wqa)KUH4`A9dyLHG`7zHgZ@upiUh(8oru1E6-)f2#{ z&kn>ep_h=6goVDVg)HX#iGSr9+M-vjQbAo=fu^p0nL&*|C>!HaeVL&vF$&kMQYU#V zGXv44y)BSv+m;xG>UElIA`LYf(Mcu7CyNr3)wZF~NK13jj8FZ0-A5Pw&xSF5Tm4pT zUNEHw5&G~|4xBMV5u*VwV%SW(#W{Gf!@0)_#i-K$E=bTYZgCL-f-bvY-k1sPFyX@} z4yJssD2OI$Sb>5iFGV?7NtI+(NvObKypu$kU zy`H+(E|s-)2aZRB5eRsORjb3}J?yj?QJ5h`?K6o9`fw=x9h9TBE5IwcjI0QsG9!WmW#FoZCq_3C5PoeU> zQSCgAya!Lg%A4_Oci0uTo8VDXD2*TcOgZJy)u)azk+jXax0m6HS9=2`4*GVNUHlM( z-`aEI%={IY;@z@y;h-eh%c}EgW1WqL7A*n-+SYEXJ1*%j>}pVV>-T!4{eE~m3LiRT zuDe0rVvIN;9K5oNh5(T+ZPsSjMTH{?la8I~ddkqgS1U$1aicDobyt+w=QvBQDK6 z6XauUSD}flg8?dpZ_9_GZV6KNH-mYp1jKJCSfAy|UnTxWu#rR4p{()~J4pv)s0Nmt z+p?FfVesAZ`Wm{R1a?%7S}%l(y0F^}*T8?lqK4em4OA*ADMPA)u42GzE9RLY4qt`t zUDoN5o^^baB!xKRwl}J@R;;sbVY5V&;Pxyd8}sY$$|-XkuZ#uXuD&K*+cZ@SdFY*( za_<9qi>1JAl_{I8uP79#LQ!U_t3V~#H^hF!0eU3sHH}@7)^Et-gkkwrCrOVdC6DBZ?A8`^T1sCvuWiA0 zZlwPtEa?Bd)lB%JwQp8LtZ&VayYX=Hzq@kWns=4-=l6(_=MDi3D?S9%k)UvqyWkTL z|G}I*e&durX~gWj&i5Bup&PCtL+k5DaPEF+uAWJsYtG0L9KpI?WA1rhv6dHdAL`=b zOK-xLOmqaLi^hA!jHpuN16I=y`-0(jFAhOHZiU>l@?zTfug14Di^CK)60 zYyTNtp3&v+3_w7=ub|EXj-)Xngo4e*_E zTLx}1wkTZ&EN#nne@YJnpzLCG6Pp*a;#drKsquUBE~P3!m`e~Mj|wxYj)3K&!1m? zjm$b}*V?l*=8u$b<&?u#4fm1EN*$vSb3E%I*ijN2to!HsI80S`h)m7`--$aU+xrD& zZpe^3;9{0FDqKN*es%NocQc73>RmZ>4cK7l|SGMcAct_x{MD%C1ty8?`1Y*ujN!nZmVaEaoi#sJh*b31%2wust>SzF1BTQ?sJo=MtY^ zn?!;qH|PQw@B{)vprvc;R^}p*uH1422AaDIP{(eKr^Zs8K!~--UVx3k>Ug_rQB_x? zcBNHPm!0%;UyL-Wp5*G65d(@@q}hhHZ4xA~B?1>&u_KU%d8Nb7c_Tbzt0hwVX#(U~ zgRF88goz5`oVk@0BmA5tR)-^~Dxyy^aJlEpAMc=C@KXLFqsfdWhjMx8jV=HviUvcS za^I;Ll3_cSMUH_#bTc9gU4EG=YqvHko9LG=I@QWAbg^#NU7nlp$B8N|kphN^+z7n) zg-ga#!=s~0RxuG@0{6l9+K3$9uzn%Z4QtO}NOeMaqRiP1y|c)(ETwQev=w426-68Y zcSkcHC;mvWdvN^Wz}uDj8O|wvgGHqdDPC*f#}(>kj{MJqT%5%gAPp zyELgz%$HD{^T?aysPzqUhc~hXJ(%Pc1pZ+AXFGYQBPbp|1r>T{_@YjgvnPcl3I zJQk8>S~Ww?rLp1840-LPmIlvS96Ri)D~m-3UuD&jYu8y`(6T5`NIB^P*lD;0e&_nx z4>UPAP)MJ#AU#EsF@ROP)B4$-k%p54>?P^AlL=JqQxC0n{yCG&}&AJ54#PT(q#0|GJA|u7~|Xr zSCEGoV9aF?We0g|Fj>_p-;5cvXxp=D!kY}ySKDjMJY9HBE=S>c{}j{CP|SvHqgqF` z>rk!MTD_dKK95Wth64MYGSvKnd8Pp$>NEGJ)H)6@{=%lc));tK$MxZuSSszeUqh8k zgEgHxi>H>!*d-1oIbPkgYUAsPejj>;2y>cEJN}$sJnOhKE)^(LvtZu|L>DTq0`{VWAYM2YO|E1w8&lGglElDP3@^FG>$|5V6M$t7k5u4^BkqfZuf9P zU(&=VZnb~`lZ#dcH{GJp79A&D+@DHZ2W2!357ORlH>(!qk?fQQa5IW5J^MORf?bRQ11hY7O!rUSR{sN3&3B9N86gNw7Jt%Hpz!++3$jH#!Zp^dAlf}y3; zf2(r7iEC35>7UK%tqSq;dQl$jkk1GTSq_0`YZc1rb6)Wqx&N{QF3a5IzHlcwB}ma0VY- za+KHa82tr`_rmkKR)2pc(QR{RZ*Qw`N+=tWm> zBSHxvC`tvsZ5|`I-Dt(Fs7m*$8CCVrs-sS!d#_P-jRPn?1d*U9u?or76nLii0Uoy8 zz#t6kEbv3rdHoc4mf-kv5?JpO=|O1aPe=fF)VYEf(ccaH6GY##0(u-{z!`7e(lE(_ zt3s4Sf-L&_Nc7?%b(jk`28Ryi`s5$4be#$GzN5Z^eAM5JF1Fr|)pWOx2`1WgDy_4K z3cajXW!GmW{10M`MT`+WzzFKK{YaGx?hZ;xC0=eq>$RNpKiM3v5g?wrv>cn-rBKWY z5qdS}qXix;gr}4s`{*pusS-u+0=EC6nu;MP{c*YH+H?LA|BDAA&|^xPd#zR_2V2!< ztYsk@IPeyBzUHb#i>7B_r8#R>Zj=@KOvW!gwhb6fFh;x4Yt=$O4F;Ih@f-|~_@FV{ zet4YcfWp>m!K1U%Y}WxccWN$1A>f0EH!P3F3kg{8C4S3Ux8KzX(b@>|YKH$K(^<07 zX>(l~hbv+VymX<}r4gIq3ydz&?C@_4EW(a8=l|zS#rM9?rIrTGQXIDZK2yWc!B$hM zOnGvZm#Y5zOoj8daSHU_edjkot@o#qJ|RJJO`?(qqkPr8QIWe+v2`sc$7)8qna;fq z&(3}WCNUB62!Uqvyk;IOWN9JJeM==Pg{zA?wlJL~z!Sk&?ve-6P4QkjgFhoJ^L1RI z4xE4C&zKoap%5dVM;nC=@?~TTxl10xUNk7$%WOr=;-1<;6i+r)OLkS*$&gx=tJb*M zjd}4>1ReKdfPIkaG-(~lIZ~cWxkzjE{>{17^uWndu=N5<(-w576V!01u|BE$x4`z} zoc?OUz;78uAHK=uoFLm(H2GLKlew$9$m1TKnKcQ&bk%8gu(>>&vp0xHr`fRahCgeQ z{a5`J@I{E(fo3`?D^>m-q^`s^HmKG@o@Y!Q?9lsun>yop>3s^7A#2RHMnp|zI+ak8 z62%nzpCi?`Z?C>gs;e>j^XlP~WL>jdq4TNc=fqhIoXt|E$|ARa)8>iYbIL<`h+8V$ z(Rf-%CBb1h?V`+>#>MFIo20Q(NKU0`6nmuPJ^z8r1EHf3GKw_tbH}aeo(f6YVNSDLGwE^|3R_>e8&{MUBb!v-F>Zd40|c&9JW=4cNkP^-VdE z_Ja-{S2wWh)39QmYd&&fx+#gpfDeOt(rnH$ADr9bKj}Zm|0pKY>M^hbd|&Mg4YSoU z9pCF)`yFuv8V8;BiUv1hK91<1toZPqK6t6UZ4Saz0cA(79SgEQZqAa%u3lqDy2NuUkTjoe0%jYrm78_e?Q2w{bAGZ62fR49t4UH~U(LFi zU|-J0C!I{ce`R>u&G2%V<>9i-$7X){8k-IJw|TK>TAN{}YF*D_Egk`G;5|GQc>R5e z`U6yj3|vQyArMSGpq2xpG)CO*K$IUwZ~Om!pk>KoxC#1A1N+}LAOG)?rDSSu>LF+7 zVr=oRdDcG^ApTzzP*cw2mjKrH?RCU0jKWSO8AD1Tr_anxE8du(at(6t^04deMmAt@ zkWl7#h6bPZ$LaaXo!`&R`$^m0M8Tf$9;WINO|^f-i7sKJpnipr6xO$BFSB$G59)n<+@eBfz`&g-EKoooO7s%*zPTE*;R3a z|MDgFjzsQ+&YzL#q3>!H=hx#j7Z@x5kEk^4_HqQ;yq1x}^2hq58i_z`QO-SYuD#Y9 z*e%Y;Cd5dxYXlG!N{rp<)Z!!%OT-D-PP*^87M0O8ln&|a(#JGt%A5s%^qG#~@+9dD zfr=u|LJT|pvMZZy4PiyuqE**%R@j;_PiP72A6KX8CK=whwRzy_p}}6tOo4z3eOgZ< z!BKlxB{oN;)^Uo~fey+2K;8|-CeMz3;}BXX0Rv%e{w>+NGq_sHbw6Vns^D%TF0Yo; zems#p6@GLPw0rR^#=dp&dc8eToD zJ@?Ons9J-5CBiH3=eHtN1kUH%!KFCx8UL0+j$m5d?@c+pMUzg2vKYH+N<+VJxY!hR z%j%8iyPJF1a$Kw-Hr%wgo1#g_eNWTfLVyMNjw`xQauvA$e*u7?%qGkHqU(PF0J^M~ zC9kP;Qrv?>Qw@4;8S*%|Sdk6z-JPUDe*H_iWs;puvA|Z(SMWCgR7`oP*_b>A{Zp;J z0l@zs0Pv=MRTk?01_0x40EqtvfX65%cDvsv&LxeE!gVVcQ91trK%>ILug!k|;BRe& z{(k{LoFC0ow;Y!|1y5tY(xZS35bV1*LdR*q|Nr&Ue;Oe3`8x!HUSp4)`Y8h<%kr6U z9-@c8BEP>kW!Fm;NrR7RW}q03!H`=8Ir^oCf)RZ;;|t>7&(fp;5?pLJARtx+ARyxZ zrTzb3t^{;!-8Z@a(c&+-&h?U+N8@F+o$jD@z-ExTKsyZBw!e{$GlBfV$+nJMxU&0t zo0IelM}kTq-*(VCz_jGWndS9jWv2cpa=#cmwF}O{#iU#MP_SmZ6s5A*EI;fjI}f9` z?@^178o858-}v>cv%J_Mu1z$R@%udTzgzzruTM!9ugwhkob{|j&zLGueg*2zC5BMp z?78lf2n-m9DCT?l;;QNFqnNH04lcZeYTSp>9(Kq)u?KaQE$oD%ziND4K5r)p9`xt) zIuAQ8lZ&`Y?}tZEw-oie30}K|^>I=4kw|`vj8$OhGzRY)>< zsp#J`mBLFNqgc6oMZHgh91K4R-`MZ3O2vuW0<5*Za=udj;g&}k@b}r|LZM+oTj`n| z(V2{n@&|9HZm&g3D)5SmWbZONj%{&Gfm>*?(f(O%5V-d2vw&p%BC%=cJ#KgtQ>hNo zPvk&73}YCsTQ5i6;6l<2`ILOxY_G-ib&x8Ol!mC z#4k6-55LetTWC6>5yf!$8$CN8($^KPYpq!#9qZ4;yeeXcsUgCrcwPo)cu_o zUFS0U9VOL&w4+i9h3(K@qACWxAp&_-%|}N%l{f(6+X2|?;zKDTi@WwSl~&lQSkr=6 zx_o?uU_Fo|%FpU@)KiO+kmwJ(WYwy*Q(e!#X6YcEf7`aw%@NuE43Cbsx^>n>zS$gR zzPkx=@s4c)KwWJ^FkAUvvrH~t zFIZS;TN|HxYQXt2Zc^i*lE<w{9Huc$`>9MUzE$rbUNP`NsN-sD|=SM#oD4LJ@M8dld^>&f$9{b12S%NLGjLMGl-U-p~4X=S`cIC3Pb$ za233aiJ5~ue{8s7X>d;0-LujAUIpuK<0#w_^nlcS_s3HFKF?^Ef|uE~NwY3QN)D#0 zHB~-Z|LhZNQdlmXv`~nT?6Th2w!WN4h!*vxW0lejYFJd{UYO+^mC~hGniuI!m`PIz zw;*;P?{G*c2GYt3aIbhJAb8Xj?hFGXtSXz6sx*$pz8(-IMU~wO37n80%QKa9Fcxv= zaV>MJm{ybfkMmbYWT3Hmh-Xmk;bmgrfCFWP2&G5_RVw)m6r);CNAbVCURX8(eLFMl zl%N^7%23|lKJDmON(OV`@(@?3ELzCE*xnVHYwHd2rkAccc$eZ>O>#BC6Cgubg+o_h z)d@*;>UIQF{8@80$e5+@OLFlSl&LOc`*jHZ?)~(U4xgWR#No6lL@L;U)LHaHf*DdB z)+UTCyDo0WKQR)C6WL9#W5`Tz86SrE=$;u=rV+ZcOdUVI3e~k0p@0y8BqeRJJH@xL z_jmZZt^e#Z(sV?BK#_%b`%uC~)vEe*;Bo?p%oogSD; zvCzOO;_$MuwM-D*i)^1g3fBoTA1ZS8(3yf(E1`|5Ql%d9C{ssz%HZ)wdPW=SaXsc_ zfu22eoqF_DIN;Bb{@^~6PKj1zrhT=SBym{6;|PB=byoU~dB`g?V0U;RoSerI-?|X| z8BXzwDNv(i2C`D-b)tObXC^`_Z4NP4rRqcc&{HyiAgQL1GyEZ3i13IMG|~O`kM18T z-bkSlZAHK2csT^Y07kYl6BB*qbOVeGQ5Xy58RoYOB@9ei(IuN&SyFHvsMyi7iKd zjnveyG&(6NM;BPLhUp0eDv2K>vb;)8NGsF94gQEYk*tAPnN$K9%FK37TUs>AEvy_) z>QNTZQ@6kFk?^}gaJEh7(mOsp@EoYoeHsQ$X_BbacirUJnw646ob7%)nhCCS@D-9a zY#~PH+Y0(J+_Z$hpd_F}V1cPT@J3bOdEH=x+ zvCDAse6WW~!FWebFO_-!cF`3j?QDBWFmSv<2CV-%tba)pKdSL)5|9_egxjS3K$dXf z)w@Yo8-edp{lPCXxnY`sQxZH~cq>OgiptOoJr-_sl}W~l%=)phidWK$a_?jUE94Bt zPQhsKD`z}K0o6I&mSXA6az60bgP!~E<~0g>gC@hD)E3?X|5@4aWdHMj=B1;zM{}fJ)0l{bs%y?Hda(4{ zYOHq>n_ZEXhIxP1tX#Hz5qg?GP%IFqM7(l!dc_EzO7z5flDKV^ z8AXB;?M|-sx|p?{3{9AL3|*rdfY&l>>DBRMc0VaB{b{y%d}he zWe7!OeFRgjAVg;yV_JS_xwtCuG&u+8`)E0U5I`hzl&#-HZ zBN}iFyS#P3YRZhtgg_VS=`a}-$Y}}g2r%#?zU^T7;W}d25f`<)@f6}AMuhs=UQ5CI z@e?r(l^y<#$0->WIA2BBIi!WoWvSHa!Ij?H^jYX8zVZn1++NIbLWS{Z66WH zOa-N;*}ZZv2$V@UjhZgkzeV7$;hXJJzL!4o(JMpn(dQx>Y>an zLpla5KOv^R?l;V@D%Y#g^j+efDpezkO^+vzU>6kqzX2-$hp%@IuI%f#y<@9mt7E5= zj&0kvZQHhO+h)g3I@z&pJ2$`QyyrP}&OP_7+O=z~TI>H&H5gf+@{?C}>o%?fQt&!USMx!M;6a*$vWU&s=NQFo|*yBXC zkCh*v@9)$KP+`!WV`zn;Ah}AeHPEb@wE`CyJ}R^$+=A2Cag8u^`>}}uF_5jV{iT_)RhXpGc{|BFmPa;Y_-yEEbNT$t!Gv>R}0GBk6oS< zKKO2~@3=dL9!=rpu)4ba`z8*H+xAk<{rf)L`VwjGZ}116z-CtzF!_^fndbtIfB1fD z;O-jlX86UOQUKlJ;6&6t1?Z~~B!m8fUFYvbahtU#-v2Hv{vy8c-F=hrslq@&l>dvc z_sl$QEQjyk}-yn+kaQ0NClWWKQ!N( zZ0|-MB^siw;fBSJnK|uD%A$)aWuJ7ky*nBdzGQHkqjl*y%S^T4W)If>=52{62+MEg zHlYbKG2d(#YgH5dWZ>SF8+npamFEzI7FU!wDvfB+qB}SUKZj(E$fs81aMY!$xk8~? zTTH<&esxVAN1~^n!qF=4qfH$9JYoKQgOqKE2uU`~($OPGFsZrlNUPMN!&Vb*ackM` z@$kCDc+1VK<8~ZF*QU`TZ@P8qcUiFPf8B(K%0mbR|=dnDhK6@Ej>Pis{pLd z2DDJgthQ}BBBm@~>=GrU{Ft5zOrZiXL2Ggz@N1`{sS~-FiSEqtgsDu?3CxNScQ|$Y z6x$}~E$Os6{*l@uyHzwWzD8oAe9-CAv&MGSF7x~dtI=9ERAS(4@i_30h$8E3S!C24 z>B^;cWx1$qu&OZn!{nMJQ(M8OmW3VGbyE$qJG6e;&)d0lRpbM?vM|Q?m~Gdi5KGMV zn5TF#ed|I1wv(J?ktN=-kg~wlTgIGXu}1SNx0{?PLz|U_hOZj}Z}{7dapTlg{`K?4 zu(0Bna&p_<>A56mtD$koX=JiP49E3}3x8i8JAUQ-Y?pO9KTfBO^!Ua8(hxKh{JU{W ztEHPFQYBUxxp^2Au-GE*{Y+?uk$>$rpTO0CXN`uA(Ap0+#|*U(gRJLm(^do>l~Ds0 zra;bgc&B4Qj1U725sY2n(Xv+T!a5mkbAEDl@y%s|F3VrMfj8CMKuhaQJPpUHK-0x# z3P94SzPGc-&*(tG&aBMi6MUW4%OoUor-k=h1_IQu0m)rva+J9KzUmE}!~EIMMLPCvQ3#<4=kR=SMX6Q~HqdOl`oouZ+G zI_NASLw|IbjzoofhkT(0H|BD&w3K`VL>HZCQC=V$Xo>7m{Qmr_wMVl2TcF3D3YF_T zDmsR&=8N|86wCILwL+D%jgE8HBm78|eUEM@^nVABh;nibrdwVU8j(m|XKy>g5{5 zO-kB_R22==U5N1rfj+OT#I-Q0hF4EgYJ=A_RXW}61QO}j&dpF017c1U8kvyAP-;Wm z$Zr_I8ejXEKOUUejBeQCQ&>QRI z0{*C+Wc+~N=BXUtg&RE=Z5yMk3^>jByTavpt!_BzmHd}aOVpx>+WyG-1n@xv$}KGe z{M3pt8ix%nj{6tBPl1_-uWh{T=g7EWM;3jJ_K1K01G)H1g(+Il2Gr|$?$m6cTM%E9Ul?&5iqpg^KhndMdB@1Gj%{p{Ob6sUh72$I(2dO_^c@tG+?fp& zNnRI>u^~2J;|O>slB9$a-(kj)ZaGD>pE(U18mb@)NiaAWO1)DG)s&t~;iviaQzu}c z(HJL7mi6WL>F15^Q|wotL%&s3^g&(y;vz}OVym@bk*F4^@nNHx$D}dJ+B{{m^+|3b zeTgq}WF?CiawPR&my11OCQDlWMW;_6^?kuXOeDEd#GQyjh~roE98wCQnlogyu&Y8O zO<^jbU1l1$Xu;bA8VoHnYtwbG@u6!=k{LmAY!W2`^`Zdp zwOtl+7S;jLn`<{9_#eLrBm{$!mUe?>8)Mnb_Fgh&7(483>O-My6{L>gQe&m=A&_ps zJF?UZd7ybWBDo)ra$AX~gs}L~`x2ktpw^G{TtGw+;AKn6gjq~pQY~q44e78&KZCYJ zv}{k2jE2`Vo)>U2ncSya=B2JKPds3BNqHCL2eN}~v!<_>f&n>>=e_49zS9$3zm)v! z!Y>=*A2XoE-xc}JDgO#2>}NUlv)yM`;RT6Qhx5+^r-2}JjXA22W_ev%Q< z7~{D>)?Ws}XgMEgY6LnK+{-z1=YHa<*IY4v8?dpAwK1pcp!SGnjF4*yEb5Yd#Y}bv zu2!jFT1~?bV7KJW^haCFo0-z=Nn+vD(pD02q|NeI+55e(YN{(J_5A2IW>$c4Jvi3- z=%L1P!2L26a0=sg$^G&|t4`Vnl|>sZbms51VXQ1?M{mzahC>0yZCmz@q;=$_p-k1? z54cCV(u0|7Gx#5{Ji=J>-4iZ=mc{i~5p`S+&AA$IFEkmm;5Uld$|0R`w-{Q}-Rlp- z`oeWBDKA6wR}ArJ_GWi2*kl8N1xpdjLZq}EsCb*R^I3f@x) zs=s~`ag;>%X^L+Hg5*S5U`R6wbpjQ} zn>a)AAxn!NaZ*|iju7(8^eDd58Hd*5@=>JTNB@9nIkm-rw=eN#X|V!`~20B2iQKZb_lva8N{LvO~$c?#(ZWqtF?OJuy%n< z#@kpJ#B7L%X(LjUIMgV0T}3xVTwA#8_DxVHQT-Pc*lO zF4uTVd;nyQmIn%CAE7e)eA$Lw{@1SPv_#ci$*&kAIG0<|qtp)|;^?e5e^pSnB4t)Rn&UqtIjxg+d=e)%Ce>E8V%aQYc z`*5`W4fiEmvbt!;No5te;0@su;*J{R1tqL+Vk{HF=c$QRnK0aJ9`x$YM1cwD;UFhE zYLy@p=exVVI(K+7Q+^papH1g>LojFGvD|MiuU2!I2@gKIDX@MIC>8@#U+tl@(t`f+ z;w1DjVB^6zF&-@_4yMf@?#Az|{7I7yNEJa6jylDEYLdu*SFB&jzr)9xGx%XU zoVJ@QvZR2xLkn*%#rB|Q2cJ8Nc0-JT0LjFAombTRHHlJlXrJ*#p%9`?kQ5yBNFebb68PW0LeQ>voLz zBn9ghr|GaRxK8Oo6Hf8~!Tl>Jv`LfbJ0`-Gb1ClYrxCWC(WqtFqlRd3Lwu7o*`?A9 zPRSt=CH7(`Ug?~@l(Zi;erm)>E%RL6#_2n-OCfy8pJ!)2K$=30f1Du5gt1g$$p#zK zcPaSwOhYzZ?wGiAHN8)Y;p3T0A7U)b z7bTF-I}t8KyrdAQH||1yO!V>5<@I&?Oa$9^9RzE0XL@OOyrCDR7e5OXNZeEQ?lY z21`XlF!C&L=Y8q06sH*G?8p|d?~`akBhvE@=|aM$O!HqGzG_QNc#>VUz*yP|^9+rX z=V#N!ERoKQN)46DJ9J-#rw^TGx~qEoua6h^rO$=MqK4Jo2?1vmYmUQ6Qbz>rXLim( z;MFCctwoOg3Xxq7_<)3#_|eG!FyU}DTe_(d;vW&_R0)9b#mQN>Zn{WK3FGD0Ll7i* zj%fgfR*~D}GQi)Gy@gbndu~sX-TDduh@)!Ap!&(GCxKpS z2-<1P-wif;I4oVJoppMq{?}>q)_QC!HUw-*9Ue~DimFwv!+oY+IDCH#CO-AVTXjkJ z>)`WJ%({4K46&sm+e)lJi^HvLMGeHr&Bf@+=xGj^PzX@p3K?~s#r0fyC0soeC|Re4 z2_F9G15e3e?ZvE)e!%L=(bJKiYW>0tevn|B>&0aFni##%tw5P~w0 zVFsHEwh=9HrF+ym%)p>2yGY)!M7W#^T%o=c87zisrBWc!>8XCiB_JNEt7ltxFs^^P zWZN=&jZ>xpyBkeKnJ?YYf`{6qwFHJ7N0|tkUIs0YGrDJ?Zt=m_5rhl#mHC=3Az7_5 zs~Owc(i}$IF>2{8#(NM7Wqd^51S;x2Q`@r8Y&~ zn8F>QWmy_c82{{tF~|dnI$BC;qk38A+|ctqh+tB}rvxv{?06b~NspBt7zr-cMnCy! z#nQ`@7g^GGKVZ})5&>ekWU(P?V;Fza_^yKLp14ebd-L>`z*bG^V=xa-#xR}n@$&4> zs}{kFAiOGt6yfmX@wt%;4Lsclf_L(BMqC-O4on|1pe2|XqgUEAu+LTh_$O&z-=5zK zu#n?#>cB5f$W$+CoCI`XTo}yS(qt+M6(AEjAGQEV4{MTC)c~?dxjEO=Xi67gtE(t) ztu9PGH;ycDKFm0z*-}Yz>TG7XAMg#B3oH_S6Q2|2#NW&c1cq(XZ08>T- zKLDw9#(!$P9`ku4^bUkDlZ@nE2qX-%7ONB`?av&ls$=diaH+V0V|6IljZ-*jHXdcV zB?TEk1C=odu_S9Vv<6G8Oz9ql9`h$TNLo-2{u|v=IqL#LG2d;*tv-Oz0M7iz0U{lJ z0$SAyJ6i5FW3j)6OP(dWBP>g|n^u=*BV{XRJ$=ihV3fn>mwb^R1hBQjZhqaFJkoH3 zAXD@i2*>^^G2>qc`C;CmH#C1gLa^6}xMa3@a})H+%mVcA{+Ppw7u#rRMUnR`O;{rl zohyxKiRr{E8)xtG_bm%&3shrgWL2N~N{Y78eom0FX3SF{co7tpLXp~HCe$QBRk-Jr zE3K>>l8!f&?0ZKIQhV1eelK&YgrG%sUvR2Az<};SVH?4+ezv3pe%1)KkUXEb+ZUDS zS4O-a-XUoD&+3AlA`7=?KVr0DWFE5jV|#X1l8;YPE;1{vST2vSU(&T03f@L=UW=8W zv5Ut7aVHOZC?tD9Z2hW81uA}hiPXNp$_n4*cW zV^NXs0#Drr$y(t$8PdKiZ9lcjX^4^Yr=ZyhN5#isB^~f*U#kjAYT;8A7S<5CA#IR? z4QSUh=m7k24_>-U8KCM6w_lskDyycwqasNY$lG+I^E_|D=pyR`I#&Ub56}2z75sIa z4ChU{R*t)O+Ir!STfjdumXGxdJm~nmz?+1n>?KQREfd;r^)v{S*3ey3AQvt|2?zmn z8!C8BBzUaFtCV{wixVKKDaQ_XMGA3f^!E8JWGWIjh!oSvI3UOsc`6q_%PO2a<$0#j z;}tU!$7ivZ#LMmtXS4mf18?C?;urJ(o*Ou#osP6d7C|*v>aQobTdCm2M^u%^Nc7!m zF20R+qjM11aa}u6RMx2+_#|c+Il}zhnuI`;;g`!dpIjtMPKNkHS!R^%U$BxyU9rIi zPL4NF;)NbM@kz3vaK2W2k!6oNrQA5+kYgJsVu}vdE#}aE11MH}csy$zGg(MWA4Ugk zBj%rr;8#=7t?X9Qi3onf&M#u;(iI{*QbU@z4m;krnr`L#8(JjVjg?In9VRN`;Ht-7 ztB1g<%BoA;m8rW+(<@JAIKWMo?kxGw z7^eTqM6Fh`l`Ukz^zD_sS=pz{fKAHIym6w@@53F}^Y{3pn#z%5npp~ACIzn?sGU0B<-EH5#u!jQ6TT(YN2?_VA?vn5KUJXaYUSK9)B05 zz)HxMqL6}-WW$2v?O1`a6wnYxcR+PES49DK8ZI?j$HX?@1jNeJ!zW!C3Zv+)H36U< zKs!{k4~OQm+KK1AD@q%@8RVEkK0Y<=xH+rx1rbKL;Rv>D4Y;s-#EgB-*1w0E_Erh@!>XeS={s#PB1`I5Zd(F*RA3sn zFSbi!^*YsV%}dHbU?jEZ&H+X__C(lXzuu9y{4@rEm5G%G{*Jopql(06N-{&OyCY<# z6zXUqgNLy(Ov9 zsg5n+{*u`k@VMhLB(3*&C=al(7RVTcj13KRgDf(5=G#A@s3s|w3;P;yg}MT|fVc6z zwTfoS@rke@I0BLmg7r#wVAu7TUgDYF)TxNg?GQF=ls0Rubt&b~2Kn9GY5fWE-^G@` z$*{D`H~s+io!CqAzlQ&sQgTS7 z;MvTe>+m2s4*%QG*pVw<{9L~7qkjEzFSvx4;EQxZzw-Oqa9>-B2a0{>{R-B|a*z)v zV~Q*uyYL6N*PjUtSb6y+*%=AH`b0`VnyI zxs2c$H5&}5(hE0R0WyhK`}raBD6yn7Ivdu`+}ji;e*`HK9#D7>#q5}%-v-tfttO5PE_oN zN%*rZ%$mm3*6sS&i8~UUD{Xv#sr~rV;4Y1oH!kKLB8p?Fv^MYa@UH zUenO5R88^^HI`*k^T{k!;F+=h=2X!z<|dVpPBwsJY^H}=b8DuD&WE3@u{8FmbdL=~ zNl{#NHDHOJt8b>6S%!VP8Zut|1Vyv<7N|%HkH1d(!6_9cdBo##DEs?H5bF$B|9p#$ zXxTXnM3p>k%T?~0v`}{TB2oT2=n`yDup_lE-ec465A;PONC^bbUMEn)p{5Q(iqtL@ zbbvNcGuX|9KGqzeO1;22NO5>m?9Vylo&{rp1Xh)d&jzQ2=fNMkQ*_%Lx<)2k6)NYj z_2eH(oTQz?$lA5kIK=peAom)+2B%8)+M`G{65SO3W>HNMr|oAo#*|XfHQwN9+`O4b zE>u2ru7A1=zjkP$er@a*@WS4^q{hej=nl}0Ke?>;iT@hf6d$WFtX{RN&$@Sb2ckx{ z8oH8AbH;Vc+LG$eRwRYwImRh|2B}%S$TPcS?+7 z)J~g#11T$|cXWD#EXaI``Eu5FL0aR;fY0W=iCao3t2>3V^pD4QdUzx;Y+6MG;8}XI zCOrt6<0zZstH7#11T>?|GMk0|N>JelzBSCAnv>YM?2-fms*6oNyVDu5CbA0^`oi2n8msq0|d4QSk9=%42&AvMK!uT6LU*BZC-) zp{z@cwWsc^=yj8E+e|CS?Pzq}kS*Z5*r$tdlADIFSsgObPTm1tjBU|_tKSeYhhiXW zApxj&+LvbmkX&b(`po$@b(QrLdIv+@gF8c8cSev5=5hLhHv=j2r z_bb2`ani^?pneYA<@H_m$(k_))~^JIQ{@ke^C9OU)?X7dG6FO_8+nT5PId();kuk& z+Sw!2;D{|^j@U6Omt4;%b~*lGAef^^#l9Lr!%@G^q;{RjZa5O%vcfaIC|AbsRkv0E|e4wiTp$P&l2oi?e z&wSXQO+`*=@=Ty}m!?Lq* zEd;xlCht5XTBK9aEtkZj4cEn}jH(5bz8hW`A

-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