Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLaurent Delaigue2015-03-20 12:45:06 -0400
committerLaurent Delaigue2015-05-28 09:09:08 -0400
commit62d77d2ca6743b04e0d5c1b33b2591c9cbc77279 (patch)
tree805bd79a0f87a8f7b3e9a71a4211a5433793e83f
parent9307bc155aa04a7d6376ea960992750763e04436 (diff)
downloadorg.eclipse.emf.compare-62d77d2ca6743b04e0d5c1b33b2591c9cbc77279.tar.gz
org.eclipse.emf.compare-62d77d2ca6743b04e0d5c1b33b2591c9cbc77279.tar.xz
org.eclipse.emf.compare-62d77d2ca6743b04e0d5c1b33b2591c9cbc77279.zip
[462842] Edge reconnect with UML.
Reconnecting and edge in a notation file may be "equivalent" to a semantic change. In the case of UML, this is true for associations and transitions (and probably other concepts). Bug: 462842 Change-Id: Ib0a6bcaa8169097b2897317b011e1277ffa11ba0 Signed-off-by: Laurent Delaigue <laurent.delaigue@obeo.fr>
-rw-r--r--org.eclipse.emf.compare-parent/pom.xml2
-rw-r--r--packaging/org.eclipse.emf.compare.diagram.papyrus-feature/feature.xml7
-rw-r--r--plugins/org.eclipse.emf.compare.diagram.papyrus.tests/META-INF/MANIFEST.MF1
-rw-r--r--plugins/org.eclipse.emf.compare.diagram.papyrus.tests/pom.xml3
-rw-r--r--plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/AbstractTest.java29
-rw-r--r--plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/DiagramInputData.java49
-rw-r--r--plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/groups/PapyrusDifferencesOrderTest.java107
-rw-r--r--plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/AssocMergeTest.java594
-rw-r--r--plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/AssocMergeInputData.java97
-rw-r--r--plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/EdgeMergeInputData.java57
-rw-r--r--plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/NodeMergeInputData.java54
-rw-r--r--plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/conflict/c1/ancestor.di2
-rw-r--r--plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/conflict/c1/ancestor.notation192
-rw-r--r--plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/conflict/c1/ancestor.uml30
-rw-r--r--plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/conflict/c1/left.di2
-rw-r--r--plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/conflict/c1/left.notation198
-rw-r--r--plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/conflict/c1/left.uml30
-rw-r--r--plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/conflict/c1/package-info.java17
-rw-r--r--plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/conflict/c1/right.di2
-rw-r--r--plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/conflict/c1/right.notation198
-rw-r--r--plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/conflict/c1/right.uml30
-rw-r--r--plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/conflict/t1/ancestor.di2
-rw-r--r--plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/conflict/t1/ancestor.notation87
-rw-r--r--plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/conflict/t1/ancestor.uml12
-rw-r--r--plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/conflict/t1/left.di2
-rw-r--r--plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/conflict/t1/left.notation103
-rw-r--r--plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/conflict/t1/left.uml12
-rw-r--r--plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/conflict/t1/package-info.java18
-rw-r--r--plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/conflict/t1/right.di2
-rw-r--r--plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/conflict/t1/right.notation103
-rw-r--r--plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/conflict/t1/right.uml12
-rw-r--r--plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/threeway/c1/ancestor.di2
-rw-r--r--plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/threeway/c1/ancestor.notation192
-rw-r--r--plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/threeway/c1/ancestor.uml30
-rw-r--r--plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/threeway/c1/left.di2
-rw-r--r--plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/threeway/c1/left.notation198
-rw-r--r--plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/threeway/c1/left.uml30
-rw-r--r--plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/threeway/c1/package-info.java17
-rw-r--r--plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/threeway/c1/right.di2
-rw-r--r--plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/threeway/c1/right.notation198
-rw-r--r--plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/threeway/c1/right.uml30
-rw-r--r--plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/threeway/t1/ancestor.di2
-rw-r--r--plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/threeway/t1/ancestor.notation99
-rw-r--r--plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/threeway/t1/ancestor.uml13
-rw-r--r--plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/threeway/t1/left.di2
-rw-r--r--plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/threeway/t1/left.notation119
-rw-r--r--plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/threeway/t1/left.uml13
-rw-r--r--plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/threeway/t1/package-info.java18
-rw-r--r--plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/threeway/t1/right.di2
-rw-r--r--plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/threeway/t1/right.notation119
-rw-r--r--plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/threeway/t1/right.uml13
-rw-r--r--plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/twoway/a1/left.di2
-rw-r--r--plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/twoway/a1/left.notation110
-rw-r--r--plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/twoway/a1/left.uml18
-rw-r--r--plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/twoway/a1/package-info.java19
-rw-r--r--plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/twoway/a1/right.di2
-rw-r--r--plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/twoway/a1/right.notation84
-rw-r--r--plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/twoway/a1/right.uml17
-rw-r--r--plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/twoway/a2/left.di2
-rw-r--r--plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/twoway/a2/left.notation110
-rw-r--r--plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/twoway/a2/left.uml17
-rw-r--r--plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/twoway/a2/package-info.java19
-rw-r--r--plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/twoway/a2/right.di2
-rw-r--r--plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/twoway/a2/right.notation84
-rw-r--r--plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/twoway/a2/right.uml16
-rw-r--r--plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/twoway/t1/left.di2
-rw-r--r--plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/twoway/t1/left.notation73
-rw-r--r--plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/twoway/t1/left.uml11
-rw-r--r--plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/twoway/t1/package-info.java19
-rw-r--r--plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/twoway/t1/right.di2
-rw-r--r--plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/twoway/t1/right.notation73
-rw-r--r--plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/twoway/t1/right.uml11
-rw-r--r--plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/suite/AllTests.java3
-rw-r--r--plugins/org.eclipse.emf.compare.diagram.papyrus/.checkstyle13
-rw-r--r--plugins/org.eclipse.emf.compare.diagram.papyrus/.classpath7
-rw-r--r--plugins/org.eclipse.emf.compare.diagram.papyrus/.project34
-rw-r--r--plugins/org.eclipse.emf.compare.diagram.papyrus/.settings/edu.umd.cs.findbugs.core.prefs132
-rw-r--r--plugins/org.eclipse.emf.compare.diagram.papyrus/.settings/edu.umd.cs.findbugs.plugin.eclipse.prefs3
-rw-r--r--plugins/org.eclipse.emf.compare.diagram.papyrus/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--plugins/org.eclipse.emf.compare.diagram.papyrus/.settings/org.eclipse.core.runtime.prefs2
-rw-r--r--plugins/org.eclipse.emf.compare.diagram.papyrus/.settings/org.eclipse.jdt.core.prefs383
-rw-r--r--plugins/org.eclipse.emf.compare.diagram.papyrus/.settings/org.eclipse.jdt.ui.prefs60
-rw-r--r--plugins/org.eclipse.emf.compare.diagram.papyrus/.settings/org.eclipse.pde.api.tools.prefs97
-rw-r--r--plugins/org.eclipse.emf.compare.diagram.papyrus/META-INF/MANIFEST.MF16
-rw-r--r--plugins/org.eclipse.emf.compare.diagram.papyrus/build.properties4
-rw-r--r--plugins/org.eclipse.emf.compare.diagram.papyrus/plugin.properties12
-rw-r--r--plugins/org.eclipse.emf.compare.diagram.papyrus/plugin.xml29
-rw-r--r--plugins/org.eclipse.emf.compare.diagram.papyrus/pom.xml15
-rw-r--r--plugins/org.eclipse.emf.compare.diagram.papyrus/src/org/eclipse/emf/compare/diagram/papyrus/internal/AbstractPapyrusDiagramDiffHandler.java116
-rw-r--r--plugins/org.eclipse.emf.compare.diagram.papyrus/src/org/eclipse/emf/compare/diagram/papyrus/internal/CompareDiagramPapyrusPlugin.java49
-rw-r--r--plugins/org.eclipse.emf.compare.diagram.papyrus/src/org/eclipse/emf/compare/diagram/papyrus/internal/DiffIndexer.java68
-rw-r--r--plugins/org.eclipse.emf.compare.diagram.papyrus/src/org/eclipse/emf/compare/diagram/papyrus/internal/FeatureInstance.java92
-rw-r--r--plugins/org.eclipse.emf.compare.diagram.papyrus/src/org/eclipse/emf/compare/diagram/papyrus/internal/IDiffHandler.java29
-rw-r--r--plugins/org.eclipse.emf.compare.diagram.papyrus/src/org/eclipse/emf/compare/diagram/papyrus/internal/PapyrusDiagram2WayDiffHandler.java108
-rw-r--r--plugins/org.eclipse.emf.compare.diagram.papyrus/src/org/eclipse/emf/compare/diagram/papyrus/internal/PapyrusDiagram3WayDiffHandler.java132
-rw-r--r--plugins/org.eclipse.emf.compare.diagram.papyrus/src/org/eclipse/emf/compare/diagram/papyrus/internal/PapyrusDiagramPostComparison.java92
-rw-r--r--plugins/org.eclipse.emf.compare.diagram.papyrus/src/org/eclipse/emf/compare/diagram/papyrus/internal/PapyrusDiagramPostProcessor.java73
-rw-r--r--plugins/org.eclipse.emf.compare.diagram.papyrus/src/org/eclipse/emf/compare/diagram/papyrus/internal/SidedEObject.java83
-rw-r--r--plugins/org.eclipse.emf.compare.diagram.papyrus/src/org/eclipse/emf/compare/diagram/papyrus/internal/SidedFeatureInstance.java75
99 files changed, 5398 insertions, 179 deletions
diff --git a/org.eclipse.emf.compare-parent/pom.xml b/org.eclipse.emf.compare-parent/pom.xml
index 1e34a6b64..7b14d1703 100644
--- a/org.eclipse.emf.compare-parent/pom.xml
+++ b/org.eclipse.emf.compare-parent/pom.xml
@@ -389,6 +389,7 @@
<module>../packaging/org.eclipse.emf.compare.diagram.papyrus-feature</module>
<module>../plugins/org.eclipse.emf.compare.diagram.ide.ui.papyrus</module>
<module>../plugins/org.eclipse.emf.compare.uml2.edit.papyrus</module>
+ <module>../plugins/org.eclipse.emf.compare.diagram.papyrus</module>
<module>../plugins/org.eclipse.emf.compare.diagram.papyrus.tests</module>
<module>../plugins/org.eclipse.emf.compare.uml2.ide</module>
<module>../plugins/org.eclipse.emf.compare.uml2.ide.tests</module>
@@ -441,6 +442,7 @@
<module>../packaging/org.eclipse.emf.compare.diagram.papyrus-feature</module>
<module>../plugins/org.eclipse.emf.compare.uml2.edit.papyrus</module>
<module>../plugins/org.eclipse.emf.compare.diagram.ide.ui.papyrus</module>
+ <module>../plugins/org.eclipse.emf.compare.diagram.papyrus</module>
<module>../plugins/org.eclipse.emf.compare.diagram.papyrus.tests</module>
<module>../plugins/org.eclipse.emf.compare.uml2.ide</module>
<module>../plugins/org.eclipse.emf.compare.uml2.ide.tests</module>
diff --git a/packaging/org.eclipse.emf.compare.diagram.papyrus-feature/feature.xml b/packaging/org.eclipse.emf.compare.diagram.papyrus-feature/feature.xml
index f5b06dcf1..aa33059c6 100644
--- a/packaging/org.eclipse.emf.compare.diagram.papyrus-feature/feature.xml
+++ b/packaging/org.eclipse.emf.compare.diagram.papyrus-feature/feature.xml
@@ -47,4 +47,11 @@
version="0.0.0"
unpack="false"/>
+ <plugin
+ id="org.eclipse.emf.compare.diagram.papyrus"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
</feature>
diff --git a/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/META-INF/MANIFEST.MF
index 63e4378e9..515366833 100644
--- a/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/META-INF/MANIFEST.MF
@@ -14,6 +14,7 @@ Require-Bundle: org.eclipse.core.runtime,
org.eclipse.uml2.uml,
org.eclipse.uml2.uml.resources,
org.eclipse.papyrus.infra.core,
+ org.eclipse.emf.compare.diagram.papyrus;bundle-version="1.0.0",
org.eclipse.emf.compare.diagram.ide.ui;bundle-version="3.1.0",
org.eclipse.emf.compare.uml2.rcp.ui;bundle-version="2.2.0",
org.eclipse.emf.compare.rcp.ui;bundle-version="4.0.0",
diff --git a/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/pom.xml b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/pom.xml
index 6f970c26c..f747ec011 100644
--- a/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/pom.xml
+++ b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/pom.xml
@@ -21,7 +21,8 @@
<configuration>
<includes>
<include>org/eclipse/emf/compare/diagram/papyrus/tests/suite/AllTests.class</include>
- </includes>
+ </includes>
+ <useUIHarness>true</useUIHarness>
</configuration>
</plugin>
</plugins>
diff --git a/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/AbstractTest.java b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/AbstractTest.java
index a35fc48f2..ff583366b 100644
--- a/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/AbstractTest.java
+++ b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/AbstractTest.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2013 Obeo.
+ * Copyright (c) 2013, 2015 Obeo.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -31,7 +31,6 @@ import org.eclipse.emf.compare.diagram.internal.CompareDiagramPostProcessor;
import org.eclipse.emf.compare.diagram.internal.extensions.DiagramDiff;
import org.eclipse.emf.compare.diagram.internal.merge.CompareDiagramMerger;
import org.eclipse.emf.compare.merge.IMerger;
-import org.eclipse.emf.compare.postprocessor.IPostProcessor;
import org.eclipse.emf.compare.postprocessor.PostProcessorDescriptorRegistryImpl;
import org.eclipse.emf.compare.scope.IComparisonScope;
import org.eclipse.emf.compare.tests.postprocess.data.TestPostProcessor;
@@ -59,16 +58,7 @@ public abstract class AbstractTest {
@Before
public void before() {
postProcessorRegistry = new PostProcessorDescriptorRegistryImpl<String>();
- postProcessorRegistry.put(
- UMLPostProcessor.class.getName(),
- new TestPostProcessor.TestPostProcessorDescriptor(Pattern
- .compile("http://www.eclipse.org/uml2/\\d.0.0/UML"),
- null, new UMLPostProcessor(), 20));
- postProcessorRegistry
- .put(CompareDiagramPostProcessor.class.getName(),
- new TestPostProcessor.TestPostProcessorDescriptor(
- Pattern.compile("http://www.eclipse.org/gmf/runtime/\\d.\\d.\\d/notation"),
- null, new CompareDiagramPostProcessor(), 30));
+ registerPostProcessors();
emfCompare = EMFCompare.builder()
.setPostProcessorRegistry(postProcessorRegistry).build();
mergerRegistry = IMerger.RegistryImpl.createStandaloneInstance();
@@ -80,6 +70,19 @@ public abstract class AbstractTest {
mergerRegistry.add(diagramMerger);
}
+ protected void registerPostProcessors() {
+ getPostProcessorRegistry().put(
+ UMLPostProcessor.class.getName(),
+ new TestPostProcessor.TestPostProcessorDescriptor(Pattern
+ .compile("http://www.eclipse.org/uml2/\\d.0.0/UML"),
+ null, new UMLPostProcessor(), 20));
+ getPostProcessorRegistry()
+ .put(CompareDiagramPostProcessor.class.getName(),
+ new TestPostProcessor.TestPostProcessorDescriptor(
+ Pattern.compile("http://www.eclipse.org/gmf/runtime/\\d.\\d.\\d/notation"),
+ null, new CompareDiagramPostProcessor(), 30));
+ }
+
protected EMFCompare getCompare() {
return emfCompare;
}
@@ -87,7 +90,7 @@ public abstract class AbstractTest {
/**
* @return the postProcessorRegistry
*/
- protected IPostProcessor.Descriptor.Registry<?> getPostProcessorRegistry() {
+ protected PostProcessorDescriptorRegistryImpl<String> getPostProcessorRegistry() {
return postProcessorRegistry;
}
diff --git a/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/DiagramInputData.java b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/DiagramInputData.java
index e81ba5d54..7614225e6 100644
--- a/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/DiagramInputData.java
+++ b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/DiagramInputData.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2012, 2014 Obeo.
+ * Copyright (c) 2012, 2015 Obeo.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -10,12 +10,27 @@
*******************************************************************************/
package org.eclipse.emf.compare.diagram.papyrus.tests;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URL;
+import java.util.Collections;
import java.util.LinkedHashSet;
import java.util.Set;
+import org.eclipse.emf.common.EMFPlugin;
+import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.compare.tests.framework.AbstractInputData;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.gmf.runtime.emf.core.resources.GMFResourceFactory;
+import org.eclipse.gmf.runtime.notation.NotationPackage;
+import org.eclipse.uml2.uml.UMLPackage;
+import org.eclipse.uml2.uml.internal.resource.UMLResourceFactoryImpl;
+@SuppressWarnings("restriction")
public class DiagramInputData extends AbstractInputData {
/** Store the set of the resource sets of the input data. */
@@ -28,4 +43,36 @@ public class DiagramInputData extends AbstractInputData {
return sets;
}
+ @Override
+ protected Resource loadFromClassLoader(String string) throws IOException {
+ final URL fileURL = getClass().getResource(string);
+ final InputStream str = fileURL.openStream();
+ final URI uri = URI.createURI(fileURL.toString());
+
+ ResourceSet resourceSet = new ResourceSetImpl();
+ getSets().add(resourceSet);
+
+ if (!EMFPlugin.IS_RESOURCES_BUNDLE_AVAILABLE) {
+ resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap()
+ .put("uml", new UMLResourceFactoryImpl());
+ resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap()
+ .put("notation", new GMFResourceFactory());
+ EPackage.Registry.INSTANCE.put(UMLPackage.eNS_URI,
+ UMLPackage.eINSTANCE);
+ EPackage.Registry.INSTANCE.put(NotationPackage.eNS_URI,
+ NotationPackage.eINSTANCE);
+ // EPackage.Registry.INSTANCE.put(StylePackage.eNS_URI,
+ // NotationPackage.eINSTANCE);
+ }
+
+ Resource resource = resourceSet.createResource(uri);
+
+ resource.load(str, Collections.emptyMap());
+ str.close();
+
+ EcoreUtil.resolveAll(resourceSet);
+
+ return resource;
+ }
+
}
diff --git a/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/groups/PapyrusDifferencesOrderTest.java b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/groups/PapyrusDifferencesOrderTest.java
index d55db2d5b..d1de8eceb 100644
--- a/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/groups/PapyrusDifferencesOrderTest.java
+++ b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/groups/PapyrusDifferencesOrderTest.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2014 Obeo.
+ * Copyright (c) 2014, 2015 Obeo.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -15,15 +15,10 @@ import static com.google.common.base.Predicates.alwaysTrue;
import com.google.common.collect.Lists;
import java.io.IOException;
-import java.io.InputStream;
-import java.net.URL;
-import java.util.Collections;
import java.util.List;
import java.util.regex.Pattern;
-import org.eclipse.emf.common.EMFPlugin;
import org.eclipse.emf.common.notify.AdapterFactory;
-import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.compare.diagram.ide.ui.internal.structuremergeviewer.filters.GMFRefinedElementsFilter;
import org.eclipse.emf.compare.diagram.internal.CompareDiagramPostProcessor;
import org.eclipse.emf.compare.diagram.internal.extensions.provider.spec.ExtensionsItemProviderAdapterFactorySpec;
@@ -47,26 +42,19 @@ import org.eclipse.emf.compare.uml2.internal.provider.decorator.UMLCompareItemPr
import org.eclipse.emf.compare.uml2.rcp.ui.internal.structuremergeviewer.filters.UMLRefinedElementsFilter;
import org.eclipse.emf.compare.uml2.rcp.ui.tests.groups.AbstractDifferenceOrderTest;
import org.eclipse.emf.compare.uml2.rcp.ui.tests.groups.NotifierScopeProvider;
-import org.eclipse.emf.ecore.EPackage;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.emf.ecore.resource.ResourceSet;
-import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
-import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.emf.edit.provider.ReflectiveItemProviderAdapterFactory;
import org.eclipse.emf.edit.tree.TreeNode;
-import org.eclipse.gmf.runtime.emf.core.resources.GMFResourceFactory;
-import org.eclipse.gmf.runtime.notation.NotationPackage;
import org.eclipse.gmf.runtime.notation.provider.NotationItemProviderAdapterFactory;
import org.eclipse.gmf.runtime.notation.util.NotationAdapterFactory;
-import org.eclipse.uml2.uml.UMLPackage;
import org.eclipse.uml2.uml.edit.providers.UMLItemProviderAdapterFactory;
-import org.eclipse.uml2.uml.internal.resource.UMLResourceFactoryImpl;
import org.junit.Before;
import org.junit.Test;
/**
- * Tests the order of the differences they would be displayed in the structure merge viewer for MDT Papyrus
- * model.
+ * Tests the order of the differences they would be displayed in the structure
+ * merge viewer for MDT Papyrus model.
*
* @author <a href="mailto:arthur.daussy@obeo.fr">Arthur Daussy</a>
*/
@@ -93,15 +81,17 @@ public class PapyrusDifferencesOrderTest extends AbstractDifferenceOrderTest {
@Override
protected Registry<?> getPostProcessorRegistry() {
PostProcessorDescriptorRegistryImpl<Object> postProcessorRegistry = new PostProcessorDescriptorRegistryImpl<Object>();
- //Adds UML post processor
+ // Adds UML post processor
BasicPostProcessorDescriptorImpl descriptor = new BasicPostProcessorDescriptorImpl(
- new UMLPostProcessor(), Pattern.compile("http://www.eclipse.org/uml2/\\d.0.0/UML"), null); //$NON-NLS-1$
+ new UMLPostProcessor(),
+ Pattern.compile("http://www.eclipse.org/uml2/\\d.0.0/UML"), null); //$NON-NLS-1$
postProcessorRegistry.put(UMLPostProcessor.class.getName(), descriptor);
- //Adds Diagram post processor
+ // Adds Diagram post processor
BasicPostProcessorDescriptorImpl descriptor2 = new BasicPostProcessorDescriptorImpl(
- new CompareDiagramPostProcessor(), Pattern
- .compile("http://www.eclipse.org/gmf/runtime/\\d.\\d.\\d/notation"), null); //$NON-NLS-1$
- postProcessorRegistry.put(CompareDiagramPostProcessor.class.getName(), descriptor2);
+ new CompareDiagramPostProcessor(),
+ Pattern.compile("http://www.eclipse.org/gmf/runtime/\\d.\\d.\\d/notation"), null); //$NON-NLS-1$
+ postProcessorRegistry.put(CompareDiagramPostProcessor.class.getName(),
+ descriptor2);
return postProcessorRegistry;
}
@@ -112,12 +102,17 @@ public class PapyrusDifferencesOrderTest extends AbstractDifferenceOrderTest {
@Override
protected List<AdapterFactory> getAdaptersFactory() {
- return Lists.<AdapterFactory> newArrayList(new CompareItemProviderAdapterFactorySpec(),
- new TreeItemProviderAdapterFactorySpec(), new UMLCompareCustomItemProviderAdapterFactory(),
- new UMLItemProviderAdapterFactory(), new UMLCompareItemProviderDecoratorAdapterFactory(),
- new ReflectiveItemProviderAdapterFactory(), new NotationAdapterFactory(),
+ return Lists.<AdapterFactory> newArrayList(
+ new CompareItemProviderAdapterFactorySpec(),
+ new TreeItemProviderAdapterFactorySpec(),
+ new UMLCompareCustomItemProviderAdapterFactory(),
+ new UMLItemProviderAdapterFactory(),
+ new UMLCompareItemProviderDecoratorAdapterFactory(),
+ new ReflectiveItemProviderAdapterFactory(),
+ new NotationAdapterFactory(),
new ExtensionsItemProviderAdapterFactorySpec(),
- new DiagramCompareItemProviderAdapterFactorySpec(), new NotationItemProviderAdapterFactory());
+ new DiagramCompareItemProviderAdapterFactorySpec(),
+ new NotationItemProviderAdapterFactory());
}
@Test
@@ -125,15 +120,17 @@ public class PapyrusDifferencesOrderTest extends AbstractDifferenceOrderTest {
GMFRefinedElementsFilter diagramFilter = new GMFRefinedElementsFilter();
getFilter().removeFilter(diagramFilter);
- IDifferenceGroup group = new BasicDifferenceGroupImpl(getComparison(), alwaysTrue(),
- getCrossReferenceAdapter());
+ IDifferenceGroup group = new BasicDifferenceGroupImpl(getComparison(),
+ alwaysTrue(), getCrossReferenceAdapter());
List<? extends TreeNode> roots = group.getChildren();
// Uncomment the following lines to reserialize the expected model
// TestWriterHelper writerHelper = createTestHelper();
- // writerHelper.createExpectedModel(PATH_TO_MODEL_FILE+"/expectedResult_DiagRefineOff.nodes", roots,false);
+ // writerHelper.createExpectedModel(PATH_TO_MODEL_FILE+"/expectedResult_DiagRefineOff.nodes",
+ // roots,false);
- compareTree(expectedResultData.getExpectedReseultWithFilterOff(), roots, false);
+ compareTree(expectedResultData.getExpectedReseultWithFilterOff(),
+ roots, false);
}
@Test
@@ -141,15 +138,17 @@ public class PapyrusDifferencesOrderTest extends AbstractDifferenceOrderTest {
GMFRefinedElementsFilter diagramFilter = new GMFRefinedElementsFilter();
getFilter().addFilter(diagramFilter);
- IDifferenceGroup group = new BasicDifferenceGroupImpl(getComparison(), alwaysTrue(),
- getCrossReferenceAdapter());
+ IDifferenceGroup group = new BasicDifferenceGroupImpl(getComparison(),
+ alwaysTrue(), getCrossReferenceAdapter());
List<? extends TreeNode> roots = group.getChildren();
// Uncomment the following lines to reserialize the expected model
// TestWriterHelper writerHelper = createTestHelper();
- // writerHelper.createExpectedModel(PATH_TO_MODEL_FILE+"/expectedResult_DiagRefineOn.nodes", roots);
+ // writerHelper.createExpectedModel(PATH_TO_MODEL_FILE+"/expectedResult_DiagRefineOn.nodes",
+ // roots);
- compareTree(expectedResultData.getExpectedReseultWithFilterOn(), roots,false);
+ compareTree(expectedResultData.getExpectedReseultWithFilterOn(), roots,
+ false);
}
/**
@@ -173,46 +172,22 @@ public class PapyrusDifferencesOrderTest extends AbstractDifferenceOrderTest {
*
* @author <a href="mailto:arthur.daussy@obeo.fr">Arthur Daussy</a>
*/
- private static final class InputData extends DiagramInputData implements NotifierScopeProvider {
+ private static final class InputData extends DiagramInputData implements
+ NotifierScopeProvider {
public ResourceSet getLeft() throws IOException {
- return loadFromClassLoader("data/a1/left.notation").getResourceSet();
+ return loadFromClassLoader("data/a1/left.notation")
+ .getResourceSet();
}
public ResourceSet getRight() throws IOException {
- return loadFromClassLoader("data/a1/right.notation").getResourceSet();
+ return loadFromClassLoader("data/a1/right.notation")
+ .getResourceSet();
}
public ResourceSet getOrigin() throws IOException {
- return loadFromClassLoader("data/a1/origin.notation").getResourceSet();
- }
-
- @Override
- protected Resource loadFromClassLoader(String string) throws IOException {
- final URL fileURL = getClass().getResource(string);
- final InputStream str = fileURL.openStream();
- final URI uri = URI.createURI(fileURL.toString());
-
- ResourceSet resourceSet = new ResourceSetImpl();
- getSets().add(resourceSet);
-
- if (!EMFPlugin.IS_RESOURCES_BUNDLE_AVAILABLE) {
- resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put("uml",
- new UMLResourceFactoryImpl());
- resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put("notation",
- new GMFResourceFactory());
- EPackage.Registry.INSTANCE.put(UMLPackage.eNS_URI, UMLPackage.eINSTANCE);
- EPackage.Registry.INSTANCE.put(NotationPackage.eNS_URI, NotationPackage.eINSTANCE);
- }
-
- Resource resource = resourceSet.createResource(uri);
-
- resource.load(str, Collections.emptyMap());
- str.close();
-
- EcoreUtil.resolveAll(resourceSet);
-
- return resource;
+ return loadFromClassLoader("data/a1/origin.notation")
+ .getResourceSet();
}
}
diff --git a/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/AssocMergeTest.java b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/AssocMergeTest.java
new file mode 100644
index 000000000..3d2170fef
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/AssocMergeTest.java
@@ -0,0 +1,594 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.emf.compare.diagram.papyrus.tests.merge;
+
+import static com.google.common.base.Predicates.and;
+import static com.google.common.collect.Iterables.filter;
+import static com.google.common.collect.Iterables.find;
+import static com.google.common.collect.Iterables.size;
+import static org.eclipse.emf.compare.DifferenceSource.LEFT;
+import static org.eclipse.emf.compare.DifferenceSource.RIGHT;
+import static org.eclipse.emf.compare.utils.EMFComparePredicates.fromSide;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+import com.google.common.base.Predicate;
+
+import java.io.IOException;
+import java.util.regex.Pattern;
+
+import org.eclipse.emf.common.util.BasicMonitor;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.compare.Comparison;
+import org.eclipse.emf.compare.Diff;
+import org.eclipse.emf.compare.DifferenceKind;
+import org.eclipse.emf.compare.DifferenceSource;
+import org.eclipse.emf.compare.ReferenceChange;
+import org.eclipse.emf.compare.diagram.papyrus.internal.PapyrusDiagramPostProcessor;
+import org.eclipse.emf.compare.diagram.papyrus.tests.AbstractTest;
+import org.eclipse.emf.compare.diagram.papyrus.tests.DiagramInputData;
+import org.eclipse.emf.compare.diagram.papyrus.tests.merge.data.AssocMergeInputData;
+import org.eclipse.emf.compare.tests.postprocess.data.TestPostProcessor;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.gmf.runtime.notation.NotationPackage;
+import org.eclipse.gmf.runtime.notation.Shape;
+import org.eclipse.gmf.runtime.notation.View;
+import org.eclipse.uml2.uml.NamedElement;
+import org.eclipse.uml2.uml.State;
+import org.eclipse.uml2.uml.UMLPackage;
+import org.junit.Test;
+
+@SuppressWarnings("nls")
+public class AssocMergeTest extends AbstractTest {
+ private AssocMergeInputData input = new AssocMergeInputData();
+
+ /**
+ * Tests that merging a diff of a Connector that represents an association
+ * and whose target changes also merges the "equivalent" change of the
+ * related property whose type has changed accordingly.
+ *
+ * @throws IOException
+ */
+ @Test
+ public void test2WayA1LeftToRight() throws IOException {
+ final Resource left = input.get2WayA1Left();
+ final Resource right = input.get2WayA1Right();
+
+ Comparison comparison = buildComparison(left, right);
+
+ EList<Diff> diffs = comparison.getDifferences();
+ assertEquals(1, size(filter(diffs, edgeTargetChangeTo("Class3"))));
+
+ // ** MERGE **
+ Diff node = find(diffs, edgeTargetChangeTo("Class3"));
+ getMergerRegistry().getHighestRankingMerger(node).copyLeftToRight(node,
+ new BasicMonitor());
+
+ // ** MERGE CHECKING **
+ comparison = buildComparison(left, right);
+ assertTrue(comparison.getDifferences().isEmpty());
+ }
+
+ /**
+ * Tests that merging a diff of a Connector that represents an association
+ * and whose target changes also merges the "equivalent" change of the
+ * related property whose type has changed accordingly.
+ *
+ * @throws IOException
+ */
+ @Test
+ public void test2WayA1RightToLeft() throws IOException {
+ final Resource left = input.get2WayA1Left();
+ final Resource right = input.get2WayA1Right();
+
+ Comparison comparison = buildComparison(left, right);
+
+ EList<Diff> diffs = comparison.getDifferences();
+ assertEquals(25, diffs.size());
+ assertEquals(1, size(filter(diffs, edgeTargetChangeTo("Class3"))));
+
+ // ** MERGE **
+ Diff node = find(diffs, edgeTargetChangeTo("Class3"));
+ getMergerRegistry().getHighestRankingMerger(node).copyRightToLeft(node,
+ new BasicMonitor());
+
+ // ** MERGE CHECKING **
+ comparison = buildComparison(left, right);
+ // 2 diffs must have been merged
+ assertEquals(23, comparison.getDifferences().size());
+ }
+
+ /**
+ * Tests that merging a diff of a Connector that represents an association
+ * and whose target changes also merges the "equivalent" change of the
+ * related property whose type has changed accordingly. The association owns
+ * both ends (contrary to A1).
+ *
+ * @throws IOException
+ */
+ @Test
+ public void test2WayA2LeftToRight() throws IOException {
+ final Resource left = input.get2WayA2Left();
+ final Resource right = input.get2WayA2Right();
+
+ Comparison comparison = buildComparison(left, right);
+
+ EList<Diff> diffs = comparison.getDifferences();
+ assertEquals(1, size(filter(diffs, edgeTargetChangeTo("Class3"))));
+
+ // ** MERGE **
+ Diff node = find(diffs, edgeTargetChangeTo("Class3"));
+ getMergerRegistry().getHighestRankingMerger(node).copyLeftToRight(node,
+ new BasicMonitor());
+
+ // ** MERGE CHECKING **
+ comparison = buildComparison(left, right);
+ assertTrue(comparison.getDifferences().isEmpty());
+ }
+
+ /**
+ * Tests that merging a diff of a Connector that represents an association
+ * and whose target changes also merges the "equivalent" change of the
+ * related property whose type has changed accordingly. The association owns
+ * both ends (contrary to A1).
+ *
+ * @throws IOException
+ */
+ @Test
+ public void test2WayA2RightToLeft() throws IOException {
+ final Resource left = input.get2WayA2Left();
+ final Resource right = input.get2WayA2Right();
+
+ Comparison comparison = buildComparison(left, right);
+
+ EList<Diff> diffs = comparison.getDifferences();
+ assertEquals(25, diffs.size());
+ assertEquals(1, size(filter(diffs, edgeTargetChangeTo("Class3"))));
+
+ // ** MERGE **
+ Diff node = find(diffs, edgeTargetChangeTo("Class3"));
+ getMergerRegistry().getHighestRankingMerger(node).copyRightToLeft(node,
+ new BasicMonitor());
+
+ // ** MERGE CHECKING **
+ comparison = buildComparison(left, right);
+ // 2 diffs must have been merged
+ assertEquals(23, comparison.getDifferences().size());
+ }
+
+ /**
+ * Tests that merging a diff of an edge that represents a transition and
+ * whose target changes also merges the "equivalent" change of the related
+ * transition whose type has changed accordingly.
+ *
+ * @throws IOException
+ */
+ @Test
+ public void test2WayT1LeftToRight() throws IOException {
+ final Resource left = input.get2WayT1Left();
+ final Resource right = input.get2WayT1Right();
+
+ Comparison comparison = buildComparison(left, right);
+
+ EList<Diff> diffs = comparison.getDifferences();
+ assertEquals(4, diffs.size());
+ assertEquals(1, size(filter(diffs, edgeTargetChangeTo("State2"))));
+
+ // ** MERGE **
+ Diff node = find(diffs, edgeTargetChangeTo("State2"));
+ getMergerRegistry().getHighestRankingMerger(node).copyLeftToRight(node,
+ new BasicMonitor());
+
+ // ** MERGE CHECKING **
+ comparison = buildComparison(left, right);
+ assertEquals(2, comparison.getDifferences().size());
+ }
+
+ /**
+ * Tests that merging a diff of an edge that represents a transition and
+ * whose target changes also merges the "equivalent" change of the related
+ * transition whose type has changed accordingly.
+ *
+ * @throws IOException
+ */
+ @Test
+ public void test2WayT1RightToLeft() throws IOException {
+ final Resource left = input.get2WayT1Left();
+ final Resource right = input.get2WayT1Right();
+
+ Comparison comparison = buildComparison(left, right);
+
+ EList<Diff> diffs = comparison.getDifferences();
+ assertEquals(4, diffs.size());
+ assertEquals(1, size(filter(diffs, edgeTargetChangeTo("State2"))));
+
+ // ** MERGE **
+ Diff node = find(diffs, edgeTargetChangeTo("State2"));
+ getMergerRegistry().getHighestRankingMerger(node).copyRightToLeft(node,
+ new BasicMonitor());
+
+ // ** MERGE CHECKING **
+ comparison = buildComparison(left, right);
+ assertEquals(2, comparison.getDifferences().size());
+ }
+
+ /**
+ * Tests that merging a diff of an edge that represents a transition and
+ * whose target changes also merges the "equivalent" change of the related
+ * transition whose type has changed accordingly, and reject the 2
+ * conflicts.
+ *
+ * @throws IOException
+ */
+ @Test
+ public void testConflictC1LeftToRight() throws IOException {
+ final Resource ancestor = input.getConflictC1Ancestor();
+ final Resource left = input.getConflictC1Left();
+ final Resource right = input.getConflictC1Right();
+
+ Comparison comparison = buildComparison(left, right, ancestor);
+
+ EList<Diff> diffs = comparison.getDifferences();
+ assertEquals(1, size(filter(diffs, edgeTargetChangeTo("Class1", LEFT))));
+ assertEquals(1,
+ size(filter(diffs, edgeTargetChangeTo("Class2", RIGHT))));
+ assertEquals(1, size(filter(diffs, edgeTargetChangeTo("Class3", LEFT))));
+ assertEquals(1,
+ size(filter(diffs, edgeTargetChangeTo("Class4", RIGHT))));
+
+ // ** MERGE **
+ Diff node = find(diffs, edgeTargetChangeTo("Class1", LEFT));
+ getMergerRegistry().getHighestRankingMerger(node).copyLeftToRight(node,
+ new BasicMonitor());
+ node = find(diffs, edgeTargetChangeTo("Class3", LEFT));
+ getMergerRegistry().getHighestRankingMerger(node).copyLeftToRight(node,
+ new BasicMonitor());
+
+ // ** MERGE CHECKING **
+ // left and right must now be equal
+ comparison = buildComparison(left, right);
+ assertTrue(comparison.getDifferences().isEmpty());
+ }
+
+ /**
+ * Tests that merging a diff of an edge that represents a transition and
+ * whose target changes also merges the "equivalent" change of the related
+ * transition whose type has changed accordingly, and reject the 2
+ * conflicts.
+ *
+ * @throws IOException
+ */
+ @Test
+ public void testConflictC1RightToLeft() throws IOException {
+ final Resource ancestor = input.getConflictC1Ancestor();
+ final Resource left = input.getConflictC1Left();
+ final Resource right = input.getConflictC1Right();
+
+ Comparison comparison = buildComparison(left, right, ancestor);
+
+ EList<Diff> diffs = comparison.getDifferences();
+ assertEquals(1, size(filter(diffs, edgeTargetChangeTo("Class1", LEFT))));
+ assertEquals(1,
+ size(filter(diffs, edgeTargetChangeTo("Class2", RIGHT))));
+ assertEquals(1, size(filter(diffs, edgeTargetChangeTo("Class3", LEFT))));
+ assertEquals(1,
+ size(filter(diffs, edgeTargetChangeTo("Class4", RIGHT))));
+
+ // ** MERGE **
+ Diff node = find(diffs, edgeTargetChangeTo("Class2", RIGHT));
+ getMergerRegistry().getHighestRankingMerger(node).copyRightToLeft(node,
+ new BasicMonitor());
+ node = find(diffs, edgeTargetChangeTo("Class4", RIGHT));
+ getMergerRegistry().getHighestRankingMerger(node).copyRightToLeft(node,
+ new BasicMonitor());
+
+ // ** MERGE CHECKING **
+ // left and right must now be equal
+ comparison = buildComparison(left, right);
+ assertTrue(comparison.getDifferences().isEmpty());
+ }
+
+ /**
+ * Tests that merging a diff of an edge that represents a transition and
+ * whose target changes also merges the "equivalent" change of the related
+ * transition whose type has changed accordingly, and reject the 2
+ * conflicts.
+ *
+ * @throws IOException
+ */
+ @Test
+ public void testConflictT1LeftToRight() throws IOException {
+ final Resource ancestor = input.getConflictT1Ancestor();
+ final Resource left = input.getConflictT1Left();
+ final Resource right = input.getConflictT1Right();
+
+ Comparison comparison = buildComparison(left, right, ancestor);
+
+ EList<Diff> diffs = comparison.getDifferences();
+ assertEquals(1, size(filter(diffs, edgeTargetChangeTo("State3"))));
+ assertEquals(1, size(filter(diffs, edgeTargetChangeTo("State4"))));
+ assertEquals(1, size(filter(diffs, transitionTargetToState("State3"))));
+ assertEquals(1, size(filter(diffs, transitionTargetToState("State4"))));
+
+ // ** MERGE **
+ Diff node = find(diffs, edgeTargetChangeTo("State3"));
+ getMergerRegistry().getHighestRankingMerger(node).copyLeftToRight(node,
+ new BasicMonitor());
+
+ // ** MERGE CHECKING **
+ // left and right must now be equal
+ comparison = buildComparison(left, right);
+ assertTrue(comparison.getDifferences().isEmpty());
+ }
+
+ /**
+ * Tests that merging a diff of an edge that represents a transition and
+ * whose target changes also merges the "equivalent" change of the related
+ * transition whose type has changed accordingly, and reject the 2
+ * conflicts.
+ *
+ * @throws IOException
+ */
+ @Test
+ public void testConflictT1RightToLeft() throws IOException {
+ final Resource ancestor = input.getConflictT1Ancestor();
+ final Resource left = input.getConflictT1Left();
+ final Resource right = input.getConflictT1Right();
+
+ Comparison comparison = buildComparison(left, right, ancestor);
+
+ EList<Diff> diffs = comparison.getDifferences();
+ assertEquals(1, size(filter(diffs, edgeTargetChangeTo("State3"))));
+ assertEquals(1, size(filter(diffs, edgeTargetChangeTo("State4"))));
+ assertEquals(1, size(filter(diffs, transitionTargetToState("State3"))));
+ assertEquals(1, size(filter(diffs, transitionTargetToState("State4"))));
+
+ // ** MERGE **
+ Diff node = find(diffs, edgeTargetChangeTo("State4"));
+ getMergerRegistry().getHighestRankingMerger(node).copyRightToLeft(node,
+ new BasicMonitor());
+
+ // ** MERGE CHECKING **
+ // left and right must now be equal
+ comparison = buildComparison(left, right);
+ assertTrue(comparison.getDifferences().isEmpty());
+ }
+
+ /**
+ * Tests that merging a diff of an edge that represents a transition and
+ * whose target changes also merges the "equivalent" change of the related
+ * transition whose type has changed accordingly.
+ *
+ * @throws IOException
+ */
+ @Test
+ public void test3WayT1LeftToRight() throws IOException {
+ final Resource ancestor = input.get3WayT1Ancestor();
+ final Resource left = input.get3WayT1Left();
+ final Resource right = input.get3WayT1Right();
+
+ Comparison comparison = buildComparison(left, right, ancestor);
+
+ EList<Diff> diffs = comparison.getDifferences();
+ assertEquals(1, size(filter(diffs, edgeTargetChangeTo("State3", LEFT))));
+ assertEquals(1,
+ size(filter(diffs, edgeSourceChangeTo("State3", RIGHT))));
+
+ // ** MERGE **
+ Diff node = find(diffs, edgeTargetChangeTo("State3", LEFT));
+ getMergerRegistry().getHighestRankingMerger(node).copyLeftToRight(node,
+ new BasicMonitor());
+ node = find(diffs, edgeSourceChangeTo("State3", RIGHT));
+ getMergerRegistry().getHighestRankingMerger(node).copyLeftToRight(node,
+ new BasicMonitor());
+
+ // ** MERGE CHECKING **
+ // left and right must now be equal
+ comparison = buildComparison(left, right);
+ assertTrue(comparison.getDifferences().isEmpty());
+ }
+
+ /**
+ * Tests that merging a diff of an edge that represents a transition and
+ * whose target changes also merges the "equivalent" change of the related
+ * transition whose type has changed accordingly.
+ *
+ * @throws IOException
+ */
+ @Test
+ public void test3WayC1LeftToRight() throws IOException {
+ final Resource ancestor = input.get3WayC1Ancestor();
+ final Resource left = input.get3WayC1Left();
+ final Resource right = input.get3WayC1Right();
+
+ Comparison comparison = buildComparison(left, right, ancestor);
+
+ EList<Diff> diffs = comparison.getDifferences();
+ assertEquals(1, size(filter(diffs, edgeTargetChangeTo("Class3", LEFT))));
+ assertEquals(1,
+ size(filter(diffs, edgeTargetChangeTo("Class1", RIGHT))));
+
+ // ** MERGE **
+ Diff node = find(diffs, edgeTargetChangeTo("Class3", LEFT));
+ getMergerRegistry().getHighestRankingMerger(node).copyLeftToRight(node,
+ new BasicMonitor());
+ node = find(diffs, edgeTargetChangeTo("Class1", RIGHT));
+ getMergerRegistry().getHighestRankingMerger(node).copyLeftToRight(node,
+ new BasicMonitor());
+
+ // ** MERGE CHECKING **
+ // left and right must now be equal
+ comparison = buildComparison(left, right);
+ assertTrue(comparison.getDifferences().isEmpty());
+ }
+
+ /**
+ * Tests that merging a diff of an edge that represents a transition and
+ * whose target changes also merges the "equivalent" change of the related
+ * transition whose type has changed accordingly.
+ *
+ * @throws IOException
+ */
+ @Test
+ public void test3WayC1RightToLeft() throws IOException {
+ final Resource ancestor = input.get3WayC1Ancestor();
+ final Resource left = input.get3WayC1Left();
+ final Resource right = input.get3WayC1Right();
+
+ Comparison comparison = buildComparison(left, right, ancestor);
+
+ EList<Diff> diffs = comparison.getDifferences();
+ assertEquals(1, size(filter(diffs, edgeTargetChangeTo("Class3", LEFT))));
+ assertEquals(1,
+ size(filter(diffs, edgeTargetChangeTo("Class1", RIGHT))));
+
+ // ** MERGE **
+ Diff node = find(diffs, edgeTargetChangeTo("Class3", LEFT));
+ getMergerRegistry().getHighestRankingMerger(node).copyRightToLeft(node,
+ new BasicMonitor());
+ node = find(diffs, edgeTargetChangeTo("Class1", RIGHT));
+ getMergerRegistry().getHighestRankingMerger(node).copyRightToLeft(node,
+ new BasicMonitor());
+
+ // ** MERGE CHECKING **
+ // left and right must now be equal
+ comparison = buildComparison(left, right);
+ assertTrue(comparison.getDifferences().isEmpty());
+ }
+
+ /**
+ * Tests that merging a diff of an edge that represents a transition and
+ * whose target changes also merges the "equivalent" change of the related
+ * transition whose type has changed accordingly.
+ *
+ * @throws IOException
+ */
+ @Test
+ public void test3WayT1RightToLeft() throws IOException {
+ final Resource ancestor = input.get3WayT1Ancestor();
+ final Resource left = input.get3WayT1Left();
+ final Resource right = input.get3WayT1Right();
+
+ Comparison comparison = buildComparison(left, right, ancestor);
+
+ EList<Diff> diffs = comparison.getDifferences();
+ assertEquals(1, size(filter(diffs, edgeTargetChangeTo("State3", LEFT))));
+ assertEquals(1,
+ size(filter(diffs, edgeSourceChangeTo("State3", RIGHT))));
+
+ // ** MERGE **
+ Diff node = find(diffs, edgeTargetChangeTo("State3", LEFT));
+ getMergerRegistry().getHighestRankingMerger(node).copyRightToLeft(node,
+ new BasicMonitor());
+ node = find(diffs, edgeSourceChangeTo("State3", RIGHT));
+ getMergerRegistry().getHighestRankingMerger(node).copyRightToLeft(node,
+ new BasicMonitor());
+
+ // ** MERGE CHECKING **
+ // left and right must now be equal
+ comparison = buildComparison(left, right);
+ assertTrue(comparison.getDifferences().isEmpty());
+ }
+
+ private Predicate<Diff> edgeTargetChangeTo(String name,
+ final DifferenceSource source) {
+ return and(edgeTargetChangeTo(name), fromSide(source));
+ }
+
+ private Predicate<Diff> edgeSourceChangeTo(String name,
+ final DifferenceSource source) {
+ return and(edgeSourceChangeTo(name), fromSide(source));
+ }
+
+ private Predicate<Diff> edgeSourceChangeTo(String name) {
+ return and(
+ isReferenceChange(DifferenceKind.CHANGE,
+ NotationPackage.Literals.EDGE__SOURCE, Shape.class),
+ valueIsViewNamed(name));
+ }
+
+ private Predicate<Diff> edgeTargetChangeTo(String name) {
+ return and(
+ isReferenceChange(DifferenceKind.CHANGE,
+ NotationPackage.Literals.EDGE__TARGET, Shape.class),
+ valueIsViewNamed(name));
+ }
+
+ private Predicate<Diff> transitionTargetToState(String name) {
+ return and(
+ isReferenceChange(DifferenceKind.CHANGE,
+ UMLPackage.Literals.TRANSITION__TARGET, State.class),
+ valueIsElement(UMLPackage.Literals.STATE, name));
+ }
+
+ private Predicate<Diff> valueIsElement(final EClass eClass,
+ final String name) {
+ return new Predicate<Diff>() {
+ public boolean apply(Diff input) {
+ ReferenceChange refChange = (ReferenceChange) input;
+ EObject value = refChange.getValue();
+ return value instanceof NamedElement
+ && eClass.isInstance(value)
+ && name.equals(((NamedElement) value).getName());
+ }
+ };
+ }
+
+ private Predicate<Diff> isReferenceChange(final DifferenceKind kind,
+ final EReference ref, final Class<?> clazz) {
+ return new Predicate<Diff>() {
+ public boolean apply(Diff input) {
+ if (input instanceof ReferenceChange && input.getKind() == kind) {
+ ReferenceChange refChange = (ReferenceChange) input;
+ return refChange.getReference() == ref
+ && refChange.getValue() != null
+ && clazz.isAssignableFrom(refChange.getValue()
+ .getClass());
+ }
+ return false;
+ }
+ };
+ }
+
+ private Predicate<Diff> valueIsViewNamed(final String name) {
+ return new Predicate<Diff>() {
+ public boolean apply(Diff input) {
+ ReferenceChange refChange = (ReferenceChange) input;
+ if (refChange.getValue() instanceof View) {
+ View view = (View) refChange.getValue();
+ return view.getElement() instanceof NamedElement
+ && name.equals(((NamedElement) view.getElement())
+ .getName());
+ }
+ return false;
+ }
+ };
+ }
+
+ @Override
+ protected DiagramInputData getInput() {
+ return input;
+ }
+
+ @Override
+ public void registerPostProcessors() {
+ super.registerPostProcessors();
+ getPostProcessorRegistry()
+ .put(PapyrusDiagramPostProcessor.class.getName(),
+ new TestPostProcessor.TestPostProcessorDescriptor(
+ Pattern.compile("http://www.eclipse.org/gmf/runtime/\\d.\\d.\\d/notation"),
+ null, new PapyrusDiagramPostProcessor(), 35));
+ }
+
+}
diff --git a/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/AssocMergeInputData.java b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/AssocMergeInputData.java
new file mode 100644
index 000000000..bacfa9eae
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/AssocMergeInputData.java
@@ -0,0 +1,97 @@
+/**
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ */
+package org.eclipse.emf.compare.diagram.papyrus.tests.merge.data;
+
+import java.io.IOException;
+
+import org.eclipse.emf.compare.diagram.papyrus.tests.DiagramInputData;
+import org.eclipse.emf.ecore.resource.Resource;
+
+/**
+ * Provides input models to the unit tests of the matching by id.
+ *
+ * @author <a href="mailto:laurent.delaigue@obeo.fr">Laurent Delaigue</a>
+ */
+@SuppressWarnings("nls")
+public class AssocMergeInputData extends DiagramInputData {
+
+ public Resource get2WayA1Left() throws IOException {
+ return loadFromClassLoader("assocs/twoway/a1/left.notation");
+ }
+
+ public Resource get2WayA1Right() throws IOException {
+ return loadFromClassLoader("assocs/twoway/a1/right.notation");
+ }
+
+ public Resource get2WayA2Left() throws IOException {
+ return loadFromClassLoader("assocs/twoway/a2/left.notation");
+ }
+
+ public Resource get2WayA2Right() throws IOException {
+ return loadFromClassLoader("assocs/twoway/a2/right.notation");
+ }
+
+ public Resource get2WayT1Left() throws IOException {
+ return loadFromClassLoader("assocs/twoway/t1/left.notation");
+ }
+
+ public Resource get2WayT1Right() throws IOException {
+ return loadFromClassLoader("assocs/twoway/t1/right.notation");
+ }
+
+ public Resource get3WayC1Ancestor() throws IOException {
+ return loadFromClassLoader("assocs/threeway/c1/ancestor.notation");
+ }
+
+ public Resource get3WayC1Left() throws IOException {
+ return loadFromClassLoader("assocs/threeway/c1/left.notation");
+ }
+
+ public Resource get3WayC1Right() throws IOException {
+ return loadFromClassLoader("assocs/threeway/c1/right.notation");
+ }
+
+ public Resource get3WayT1Ancestor() throws IOException {
+ return loadFromClassLoader("assocs/threeway/t1/ancestor.notation");
+ }
+
+ public Resource get3WayT1Left() throws IOException {
+ return loadFromClassLoader("assocs/threeway/t1/left.notation");
+ }
+
+ public Resource get3WayT1Right() throws IOException {
+ return loadFromClassLoader("assocs/threeway/t1/right.notation");
+ }
+
+ public Resource getConflictC1Ancestor() throws IOException {
+ return loadFromClassLoader("assocs/conflict/c1/ancestor.notation");
+ }
+
+ public Resource getConflictC1Left() throws IOException {
+ return loadFromClassLoader("assocs/conflict/c1/left.notation");
+ }
+
+ public Resource getConflictC1Right() throws IOException {
+ return loadFromClassLoader("assocs/conflict/c1/right.notation");
+ }
+
+ public Resource getConflictT1Ancestor() throws IOException {
+ return loadFromClassLoader("assocs/conflict/t1/ancestor.notation");
+ }
+
+ public Resource getConflictT1Left() throws IOException {
+ return loadFromClassLoader("assocs/conflict/t1/left.notation");
+ }
+
+ public Resource getConflictT1Right() throws IOException {
+ return loadFromClassLoader("assocs/conflict/t1/right.notation");
+ }
+}
diff --git a/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/EdgeMergeInputData.java b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/EdgeMergeInputData.java
index ecc028b26..d80d39f49 100644
--- a/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/EdgeMergeInputData.java
+++ b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/EdgeMergeInputData.java
@@ -1,5 +1,5 @@
/**
- * Copyright (c) 2013 Obeo.
+ * Copyright (c) 2013, 2015 Obeo.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -11,22 +11,9 @@
package org.eclipse.emf.compare.diagram.papyrus.tests.merge.data;
import java.io.IOException;
-import java.io.InputStream;
-import java.net.URL;
-import java.util.Collections;
-import org.eclipse.emf.common.EMFPlugin;
-import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.compare.diagram.papyrus.tests.DiagramInputData;
-import org.eclipse.emf.ecore.EPackage;
import org.eclipse.emf.ecore.resource.Resource;
-import org.eclipse.emf.ecore.resource.ResourceSet;
-import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
-import org.eclipse.emf.ecore.util.EcoreUtil;
-import org.eclipse.gmf.runtime.emf.core.resources.GMFResourceFactory;
-import org.eclipse.gmf.runtime.notation.NotationPackage;
-import org.eclipse.uml2.uml.UMLPackage;
-import org.eclipse.uml2.uml.internal.resource.UMLResourceFactoryImpl;
/**
* Provides input models to the unit tests of the matching by id.
@@ -35,7 +22,7 @@ import org.eclipse.uml2.uml.internal.resource.UMLResourceFactoryImpl;
*/
@SuppressWarnings("nls")
public class EdgeMergeInputData extends DiagramInputData {
-
+
public Resource getA1EdgeChangeLeft() throws IOException {
return loadFromClassLoader("edges/a1/left.notation");
}
@@ -43,7 +30,7 @@ public class EdgeMergeInputData extends DiagramInputData {
public Resource getA1EdgeChangeRight() throws IOException {
return loadFromClassLoader("edges/a1/right.notation");
}
-
+
public Resource getA2EdgeChangeLeft() throws IOException {
return loadFromClassLoader("edges/a2/left.notation");
}
@@ -51,7 +38,7 @@ public class EdgeMergeInputData extends DiagramInputData {
public Resource getA2EdgeChangeRight() throws IOException {
return loadFromClassLoader("edges/a2/right.notation");
}
-
+
public Resource getA3EdgeChangeLeft() throws IOException {
return loadFromClassLoader("edges/a3/left.notation");
}
@@ -59,7 +46,7 @@ public class EdgeMergeInputData extends DiagramInputData {
public Resource getA3EdgeChangeRight() throws IOException {
return loadFromClassLoader("edges/a3/right.notation");
}
-
+
public Resource getA4EdgeChangeLeft() throws IOException {
return loadFromClassLoader("edges/a4/left.notation");
}
@@ -67,7 +54,7 @@ public class EdgeMergeInputData extends DiagramInputData {
public Resource getA4EdgeChangeRight() throws IOException {
return loadFromClassLoader("edges/a4/right.notation");
}
-
+
public Resource getA5EdgeChangeLeft() throws IOException {
return loadFromClassLoader("edges/a5/left.notation");
}
@@ -75,7 +62,7 @@ public class EdgeMergeInputData extends DiagramInputData {
public Resource getA5EdgeChangeRight() throws IOException {
return loadFromClassLoader("edges/a5/right.notation");
}
-
+
public Resource getA6EdgeChangeLeft() throws IOException {
return loadFromClassLoader("edges/a6/left.notation");
}
@@ -83,7 +70,7 @@ public class EdgeMergeInputData extends DiagramInputData {
public Resource getA6EdgeChangeRight() throws IOException {
return loadFromClassLoader("edges/a6/right.notation");
}
-
+
public Resource getA7EdgeChangeLeft() throws IOException {
return loadFromClassLoader("edges/a7/left.notation");
}
@@ -91,32 +78,4 @@ public class EdgeMergeInputData extends DiagramInputData {
public Resource getA7EdgeChangeRight() throws IOException {
return loadFromClassLoader("edges/a7/right.notation");
}
-
- @Override
- protected Resource loadFromClassLoader(String string) throws IOException {
- final URL fileURL = getClass().getResource(string);
- final InputStream str = fileURL.openStream();
- final URI uri = URI.createURI(fileURL.toString());
-
- ResourceSet resourceSet = new ResourceSetImpl();
- getSets().add(resourceSet);
-
- if (!EMFPlugin.IS_RESOURCES_BUNDLE_AVAILABLE) {
- resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put("uml",
- new UMLResourceFactoryImpl());
- resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put("notation",
- new GMFResourceFactory());
- EPackage.Registry.INSTANCE.put(UMLPackage.eNS_URI, UMLPackage.eINSTANCE);
- EPackage.Registry.INSTANCE.put(NotationPackage.eNS_URI, NotationPackage.eINSTANCE);
- }
-
- Resource resource = resourceSet.createResource(uri);
-
- resource.load(str, Collections.emptyMap());
- str.close();
-
- EcoreUtil.resolveAll(resourceSet);
-
- return resource;
- }
}
diff --git a/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/NodeMergeInputData.java b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/NodeMergeInputData.java
index 7d4992644..bcf5607e4 100644
--- a/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/NodeMergeInputData.java
+++ b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/NodeMergeInputData.java
@@ -1,5 +1,5 @@
/**
- * Copyright (c) 2013 Obeo.
+ * Copyright (c) 2013, 2015 Obeo.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -11,22 +11,9 @@
package org.eclipse.emf.compare.diagram.papyrus.tests.merge.data;
import java.io.IOException;
-import java.io.InputStream;
-import java.net.URL;
-import java.util.Collections;
-import org.eclipse.emf.common.EMFPlugin;
-import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.compare.diagram.papyrus.tests.DiagramInputData;
-import org.eclipse.emf.ecore.EPackage;
import org.eclipse.emf.ecore.resource.Resource;
-import org.eclipse.emf.ecore.resource.ResourceSet;
-import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
-import org.eclipse.emf.ecore.util.EcoreUtil;
-import org.eclipse.gmf.runtime.emf.core.resources.GMFResourceFactory;
-import org.eclipse.gmf.runtime.notation.NotationPackage;
-import org.eclipse.uml2.uml.UMLPackage;
-import org.eclipse.uml2.uml.internal.resource.UMLResourceFactoryImpl;
/**
* Provides input models to the unit tests of the matching by id.
@@ -35,7 +22,7 @@ import org.eclipse.uml2.uml.internal.resource.UMLResourceFactoryImpl;
*/
@SuppressWarnings("nls")
public class NodeMergeInputData extends DiagramInputData {
-
+
public Resource getA1NodeChangeLeft() throws IOException {
return loadFromClassLoader("nodes/a1/left.notation");
}
@@ -43,7 +30,7 @@ public class NodeMergeInputData extends DiagramInputData {
public Resource getA1NodeChangeRight() throws IOException {
return loadFromClassLoader("nodes/a1/right.notation");
}
-
+
public Resource getA2NodeChangeLeft() throws IOException {
return loadFromClassLoader("nodes/a2/left.notation");
}
@@ -51,7 +38,7 @@ public class NodeMergeInputData extends DiagramInputData {
public Resource getA2NodeChangeRight() throws IOException {
return loadFromClassLoader("nodes/a2/right.notation");
}
-
+
public Resource getA3NodeChangeLeft() throws IOException {
return loadFromClassLoader("nodes/a3/left.notation");
}
@@ -59,7 +46,7 @@ public class NodeMergeInputData extends DiagramInputData {
public Resource getA3NodeChangeRight() throws IOException {
return loadFromClassLoader("nodes/a3/right.notation");
}
-
+
public Resource getA4NodeChangeLeft() throws IOException {
return loadFromClassLoader("nodes/a4/left.notation");
}
@@ -67,37 +54,8 @@ public class NodeMergeInputData extends DiagramInputData {
public Resource getA4NodeChangeRight() throws IOException {
return loadFromClassLoader("nodes/a4/right.notation");
}
-
+
public Resource getA4NodeChangeOrigin() throws IOException {
return loadFromClassLoader("nodes/a4/ancestor.notation");
}
-
-
- @Override
- protected Resource loadFromClassLoader(String string) throws IOException {
- final URL fileURL = getClass().getResource(string);
- final InputStream str = fileURL.openStream();
- final URI uri = URI.createURI(fileURL.toString());
-
- ResourceSet resourceSet = new ResourceSetImpl();
- getSets().add(resourceSet);
-
- if (!EMFPlugin.IS_RESOURCES_BUNDLE_AVAILABLE) {
- resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put("uml",
- new UMLResourceFactoryImpl());
- resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put("notation",
- new GMFResourceFactory());
- EPackage.Registry.INSTANCE.put(UMLPackage.eNS_URI, UMLPackage.eINSTANCE);
- EPackage.Registry.INSTANCE.put(NotationPackage.eNS_URI, NotationPackage.eINSTANCE);
- }
-
- Resource resource = resourceSet.createResource(uri);
-
- resource.load(str, Collections.emptyMap());
- str.close();
-
- EcoreUtil.resolveAll(resourceSet);
-
- return resource;
- }
}
diff --git a/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/conflict/c1/ancestor.di b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/conflict/c1/ancestor.di
new file mode 100644
index 000000000..8634d4c00
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/conflict/c1/ancestor.di
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI"/>
diff --git a/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/conflict/c1/ancestor.notation b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/conflict/c1/ancestor.notation
new file mode 100644
index 000000000..a71be0536
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/conflict/c1/ancestor.notation
@@ -0,0 +1,192 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:css="http://www.eclipse.org/papyrus/infra/gmfdiag/css" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmlns:style="http://www.eclipse.org/papyrus/infra/viewpoints/policy/style" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML">
+ <notation:Diagram xmi:id="_zmK1oM7cEeSqqOMGqhj_Zg" type="PapyrusUMLClassDiagram" name="ClassDiagram" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_0noSoM7cEeSqqOMGqhj_Zg" type="2008">
+ <children xmi:type="notation:DecorationNode" xmi:id="_0npgwM7cEeSqqOMGqhj_Zg" type="5029">
+ <element xmi:type="uml:Class" href="ancestor.uml#_0nM00M7cEeSqqOMGqhj_Zg"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_0nqH0M7cEeSqqOMGqhj_Zg" type="8510">
+ <element xmi:type="uml:Class" href="ancestor.uml#_0nM00M7cEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_0nqH0c7cEeSqqOMGqhj_Zg" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_0nrV8M7cEeSqqOMGqhj_Zg" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_0nrV8c7cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_0nrV8s7cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_0nrV887cEeSqqOMGqhj_Zg"/>
+ <element xmi:type="uml:Class" href="ancestor.uml#_0nM00M7cEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0nrV9M7cEeSqqOMGqhj_Zg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_0nrV9c7cEeSqqOMGqhj_Zg" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_0nrV9s7cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_0nrV987cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_0nrV-M7cEeSqqOMGqhj_Zg"/>
+ <element xmi:type="uml:Class" href="ancestor.uml#_0nM00M7cEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0nrV-c7cEeSqqOMGqhj_Zg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_0nr9AM7cEeSqqOMGqhj_Zg" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_0nr9Ac7cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_0nr9As7cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_0nr9A87cEeSqqOMGqhj_Zg"/>
+ <element xmi:type="uml:Class" href="ancestor.uml#_0nM00M7cEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0nr9BM7cEeSqqOMGqhj_Zg"/>
+ </children>
+ <element xmi:type="uml:Class" href="ancestor.uml#_0nM00M7cEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0noSoc7cEeSqqOMGqhj_Zg" x="81" y="74"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_1K6l4M7cEeSqqOMGqhj_Zg" type="2008">
+ <children xmi:type="notation:DecorationNode" xmi:id="_1K6l4s7cEeSqqOMGqhj_Zg" type="5029">
+ <element xmi:type="uml:Class" href="ancestor.uml#_1K5XwM7cEeSqqOMGqhj_Zg"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_1K6l487cEeSqqOMGqhj_Zg" type="8510">
+ <element xmi:type="uml:Class" href="ancestor.uml#_1K5XwM7cEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_1K6l5M7cEeSqqOMGqhj_Zg" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_1K6l5c7cEeSqqOMGqhj_Zg" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_1K6l5s7cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_1K6l587cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_1K6l6M7cEeSqqOMGqhj_Zg"/>
+ <element xmi:type="uml:Class" href="ancestor.uml#_1K5XwM7cEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1K6l6c7cEeSqqOMGqhj_Zg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_1K6l6s7cEeSqqOMGqhj_Zg" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_1K6l687cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_1K6l7M7cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_1K6l7c7cEeSqqOMGqhj_Zg"/>
+ <element xmi:type="uml:Class" href="ancestor.uml#_1K5XwM7cEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1K6l7s7cEeSqqOMGqhj_Zg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_1K6l787cEeSqqOMGqhj_Zg" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_1K6l8M7cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_1K6l8c7cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_1K6l8s7cEeSqqOMGqhj_Zg"/>
+ <element xmi:type="uml:Class" href="ancestor.uml#_1K5XwM7cEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1K6l887cEeSqqOMGqhj_Zg"/>
+ </children>
+ <element xmi:type="uml:Class" href="ancestor.uml#_1K5XwM7cEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1K6l4c7cEeSqqOMGqhj_Zg" x="350" y="72"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_TX4o4M7fEeSqqOMGqhj_Zg" type="2008">
+ <children xmi:type="notation:DecorationNode" xmi:id="_TX4o4s7fEeSqqOMGqhj_Zg" type="5029">
+ <element xmi:type="uml:Class" href="ancestor.uml#_TX3awM7fEeSqqOMGqhj_Zg"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_TX4o487fEeSqqOMGqhj_Zg" type="8510">
+ <element xmi:type="uml:Class" href="ancestor.uml#_TX3awM7fEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_TX4o5M7fEeSqqOMGqhj_Zg" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_TX4o5c7fEeSqqOMGqhj_Zg" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_TX4o5s7fEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_TX4o587fEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_TX4o6M7fEeSqqOMGqhj_Zg"/>
+ <element xmi:type="uml:Class" href="ancestor.uml#_TX3awM7fEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_TX4o6c7fEeSqqOMGqhj_Zg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_TX4o6s7fEeSqqOMGqhj_Zg" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_TX4o687fEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_TX4o7M7fEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_TX4o7c7fEeSqqOMGqhj_Zg"/>
+ <element xmi:type="uml:Class" href="ancestor.uml#_TX3awM7fEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_TX4o7s7fEeSqqOMGqhj_Zg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_TX4o787fEeSqqOMGqhj_Zg" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_TX4o8M7fEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_TX4o8c7fEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_TX4o8s7fEeSqqOMGqhj_Zg"/>
+ <element xmi:type="uml:Class" href="ancestor.uml#_TX3awM7fEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_TX4o887fEeSqqOMGqhj_Zg"/>
+ </children>
+ <element xmi:type="uml:Class" href="ancestor.uml#_TX3awM7fEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_TX4o4c7fEeSqqOMGqhj_Zg" x="349" y="243"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_CkYvcM_wEeS6X8bMfB-bzg" type="2008">
+ <children xmi:type="notation:DecorationNode" xmi:id="_CkakoM_wEeS6X8bMfB-bzg" type="5029">
+ <element xmi:type="uml:Class" href="ancestor.uml#_Cha7AM_wEeS6X8bMfB-bzg"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Ckakoc_wEeS6X8bMfB-bzg" type="8510">
+ <element xmi:type="uml:Class" href="ancestor.uml#_Cha7AM_wEeS6X8bMfB-bzg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Ckakos_wEeS6X8bMfB-bzg" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_CkbLsM_wEeS6X8bMfB-bzg" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_CkbLsc_wEeS6X8bMfB-bzg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_CkbLss_wEeS6X8bMfB-bzg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_CkbLs8_wEeS6X8bMfB-bzg"/>
+ <element xmi:type="uml:Class" href="ancestor.uml#_Cha7AM_wEeS6X8bMfB-bzg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CkbLtM_wEeS6X8bMfB-bzg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_CkbLtc_wEeS6X8bMfB-bzg" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_CkbLts_wEeS6X8bMfB-bzg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_CkbLt8_wEeS6X8bMfB-bzg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_CkbLuM_wEeS6X8bMfB-bzg"/>
+ <element xmi:type="uml:Class" href="ancestor.uml#_Cha7AM_wEeS6X8bMfB-bzg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CkbLuc_wEeS6X8bMfB-bzg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_CkbLus_wEeS6X8bMfB-bzg" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_CkbLu8_wEeS6X8bMfB-bzg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_CkbLvM_wEeS6X8bMfB-bzg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_CkbLvc_wEeS6X8bMfB-bzg"/>
+ <element xmi:type="uml:Class" href="ancestor.uml#_Cha7AM_wEeS6X8bMfB-bzg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CkbLvs_wEeS6X8bMfB-bzg"/>
+ </children>
+ <element xmi:type="uml:Class" href="ancestor.uml#_Cha7AM_wEeS6X8bMfB-bzg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CkYvcc_wEeS6X8bMfB-bzg" x="83" y="249"/>
+ </children>
+ <styles xmi:type="notation:StringValueStyle" xmi:id="_zmK1oc7cEeSqqOMGqhj_Zg" name="diagram_compatibility_version" stringValue="1.0.0"/>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_zmK1os7cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="style:PapyrusViewStyle" xmi:id="_zmK1o87cEeSqqOMGqhj_Zg">
+ <owner xmi:type="uml:Model" href="ancestor.uml#_soPaMM7cEeSqqOMGqhj_Zg"/>
+ </styles>
+ <element xmi:type="uml:Model" href="ancestor.uml#_soPaMM7cEeSqqOMGqhj_Zg"/>
+ <edges xmi:type="notation:Connector" xmi:id="_38pGoM7cEeSqqOMGqhj_Zg" type="4001" source="_0noSoM7cEeSqqOMGqhj_Zg" target="_1K6l4M7cEeSqqOMGqhj_Zg">
+ <children xmi:type="notation:DecorationNode" xmi:id="_38pGo87cEeSqqOMGqhj_Zg" type="6001">
+ <element xmi:type="uml:Association" href="ancestor.uml#_38mDUM7cEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_38pGpM7cEeSqqOMGqhj_Zg" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_38pGpc7cEeSqqOMGqhj_Zg" type="6002">
+ <element xmi:type="uml:Association" href="ancestor.uml#_38mDUM7cEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_38pGps7cEeSqqOMGqhj_Zg" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_38pGp87cEeSqqOMGqhj_Zg" type="6003">
+ <element xmi:type="uml:Association" href="ancestor.uml#_38mDUM7cEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_38pGqM7cEeSqqOMGqhj_Zg" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_38ptsM7cEeSqqOMGqhj_Zg" type="6005">
+ <element xmi:type="uml:Association" href="ancestor.uml#_38mDUM7cEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_38ptsc7cEeSqqOMGqhj_Zg" x="-14" y="31"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_38ptss7cEeSqqOMGqhj_Zg" type="6033">
+ <element xmi:type="uml:Association" href="ancestor.uml#_38mDUM7cEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_38pts87cEeSqqOMGqhj_Zg" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_38pttM7cEeSqqOMGqhj_Zg" type="6034">
+ <element xmi:type="uml:Association" href="ancestor.uml#_38mDUM7cEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_38pttc7cEeSqqOMGqhj_Zg" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_38pGoc7cEeSqqOMGqhj_Zg"/>
+ <element xmi:type="uml:Association" href="ancestor.uml#_38mDUM7cEeSqqOMGqhj_Zg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_38pGos7cEeSqqOMGqhj_Zg" points="[50, -8, -219, -6]$[219, -8, -50, -6]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_Wp4vkNLZEeSzBO7rhIZWOw" type="4001" source="_CkYvcM_wEeS6X8bMfB-bzg" target="_TX4o4M7fEeSqqOMGqhj_Zg">
+ <children xmi:type="notation:DecorationNode" xmi:id="_Wp5WoNLZEeSzBO7rhIZWOw" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Wp5WodLZEeSzBO7rhIZWOw" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Wp5WotLZEeSzBO7rhIZWOw" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Wp5Wo9LZEeSzBO7rhIZWOw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Wp5WpNLZEeSzBO7rhIZWOw" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Wp5WpdLZEeSzBO7rhIZWOw" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Wp59sNLZEeSzBO7rhIZWOw" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Wp59sdLZEeSzBO7rhIZWOw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Wp59stLZEeSzBO7rhIZWOw" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Wp59s9LZEeSzBO7rhIZWOw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Wp59tNLZEeSzBO7rhIZWOw" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Wp59tdLZEeSzBO7rhIZWOw" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_Wp4vkdLZEeSzBO7rhIZWOw"/>
+ <element xmi:type="uml:Association" href="ancestor.uml#_WpmbsNLZEeSzBO7rhIZWOw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Wp4vktLZEeSzBO7rhIZWOw" points="[50, -3, -216, 3]$[269, -56, 3, -50]"/>
+ </edges>
+ </notation:Diagram>
+ <css:ModelStyleSheets xmi:id="_SsK80NLZEeSzBO7rhIZWOw"/>
+</xmi:XMI>
diff --git a/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/conflict/c1/ancestor.uml b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/conflict/c1/ancestor.uml
new file mode 100644
index 000000000..aa48ba775
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/conflict/c1/ancestor.uml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<uml:Model xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xmi:id="_soPaMM7cEeSqqOMGqhj_Zg" name="model">
+ <packagedElement xmi:type="uml:Class" xmi:id="_0nM00M7cEeSqqOMGqhj_Zg" name="Class1"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_1K5XwM7cEeSqqOMGqhj_Zg" name="Class2"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_38mDUM7cEeSqqOMGqhj_Zg" memberEnd="_38mDUc7cEeSqqOMGqhj_Zg _38lcQM7cEeSqqOMGqhj_Zg">
+ <name xsi:nil="true"/>
+ <ownedEnd xmi:type="uml:Property" xmi:id="_38mDUc7cEeSqqOMGqhj_Zg" name="class1" type="_0nM00M7cEeSqqOMGqhj_Zg" association="_38mDUM7cEeSqqOMGqhj_Zg">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_38mDUs7cEeSqqOMGqhj_Zg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_38mDU87cEeSqqOMGqhj_Zg" value="1"/>
+ </ownedEnd>
+ <ownedEnd xmi:type="uml:Property" xmi:id="_38lcQM7cEeSqqOMGqhj_Zg" name="someRole" type="_1K5XwM7cEeSqqOMGqhj_Zg" association="_38mDUM7cEeSqqOMGqhj_Zg">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_38lcQc7cEeSqqOMGqhj_Zg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_38lcQs7cEeSqqOMGqhj_Zg" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_TX3awM7fEeSqqOMGqhj_Zg" name="Class3"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_Cha7AM_wEeS6X8bMfB-bzg" name="Class4">
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_Wpl0oNLZEeSzBO7rhIZWOw" name="otherRole" type="_TX3awM7fEeSqqOMGqhj_Zg" association="_WpmbsNLZEeSzBO7rhIZWOw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Wpl0odLZEeSzBO7rhIZWOw" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Wpl0otLZEeSzBO7rhIZWOw" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_WpmbsNLZEeSzBO7rhIZWOw" memberEnd="_WpmbsdLZEeSzBO7rhIZWOw _Wpl0oNLZEeSzBO7rhIZWOw">
+ <name xsi:nil="true"/>
+ <ownedEnd xmi:type="uml:Property" xmi:id="_WpmbsdLZEeSzBO7rhIZWOw" name="class4" type="_Cha7AM_wEeS6X8bMfB-bzg" association="_WpmbsNLZEeSzBO7rhIZWOw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_WpmbstLZEeSzBO7rhIZWOw" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Wpmbs9LZEeSzBO7rhIZWOw" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+</uml:Model>
diff --git a/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/conflict/c1/left.di b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/conflict/c1/left.di
new file mode 100644
index 000000000..8634d4c00
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/conflict/c1/left.di
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI"/>
diff --git a/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/conflict/c1/left.notation b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/conflict/c1/left.notation
new file mode 100644
index 000000000..36b8f3e13
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/conflict/c1/left.notation
@@ -0,0 +1,198 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:css="http://www.eclipse.org/papyrus/infra/gmfdiag/css" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmlns:style="http://www.eclipse.org/papyrus/infra/viewpoints/policy/style" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML">
+ <notation:Diagram xmi:id="_zmK1oM7cEeSqqOMGqhj_Zg" type="PapyrusUMLClassDiagram" name="ClassDiagram" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_0noSoM7cEeSqqOMGqhj_Zg" type="2008">
+ <children xmi:type="notation:DecorationNode" xmi:id="_0npgwM7cEeSqqOMGqhj_Zg" type="5029">
+ <element xmi:type="uml:Class" href="left.uml#_0nM00M7cEeSqqOMGqhj_Zg"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_0nqH0M7cEeSqqOMGqhj_Zg" type="8510">
+ <element xmi:type="uml:Class" href="left.uml#_0nM00M7cEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_0nqH0c7cEeSqqOMGqhj_Zg" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_0nrV8M7cEeSqqOMGqhj_Zg" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_0nrV8c7cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_0nrV8s7cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_0nrV887cEeSqqOMGqhj_Zg"/>
+ <element xmi:type="uml:Class" href="left.uml#_0nM00M7cEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0nrV9M7cEeSqqOMGqhj_Zg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_0nrV9c7cEeSqqOMGqhj_Zg" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_0nrV9s7cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_0nrV987cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_0nrV-M7cEeSqqOMGqhj_Zg"/>
+ <element xmi:type="uml:Class" href="left.uml#_0nM00M7cEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0nrV-c7cEeSqqOMGqhj_Zg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_0nr9AM7cEeSqqOMGqhj_Zg" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_0nr9Ac7cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_0nr9As7cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_0nr9A87cEeSqqOMGqhj_Zg"/>
+ <element xmi:type="uml:Class" href="left.uml#_0nM00M7cEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0nr9BM7cEeSqqOMGqhj_Zg"/>
+ </children>
+ <element xmi:type="uml:Class" href="left.uml#_0nM00M7cEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0noSoc7cEeSqqOMGqhj_Zg" x="81" y="74"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_1K6l4M7cEeSqqOMGqhj_Zg" type="2008">
+ <children xmi:type="notation:DecorationNode" xmi:id="_1K6l4s7cEeSqqOMGqhj_Zg" type="5029">
+ <element xmi:type="uml:Class" href="left.uml#_1K5XwM7cEeSqqOMGqhj_Zg"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_1K6l487cEeSqqOMGqhj_Zg" type="8510">
+ <element xmi:type="uml:Class" href="left.uml#_1K5XwM7cEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_1K6l5M7cEeSqqOMGqhj_Zg" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_1K6l5c7cEeSqqOMGqhj_Zg" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_1K6l5s7cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_1K6l587cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_1K6l6M7cEeSqqOMGqhj_Zg"/>
+ <element xmi:type="uml:Class" href="left.uml#_1K5XwM7cEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1K6l6c7cEeSqqOMGqhj_Zg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_1K6l6s7cEeSqqOMGqhj_Zg" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_1K6l687cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_1K6l7M7cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_1K6l7c7cEeSqqOMGqhj_Zg"/>
+ <element xmi:type="uml:Class" href="left.uml#_1K5XwM7cEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1K6l7s7cEeSqqOMGqhj_Zg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_1K6l787cEeSqqOMGqhj_Zg" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_1K6l8M7cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_1K6l8c7cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_1K6l8s7cEeSqqOMGqhj_Zg"/>
+ <element xmi:type="uml:Class" href="left.uml#_1K5XwM7cEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1K6l887cEeSqqOMGqhj_Zg"/>
+ </children>
+ <element xmi:type="uml:Class" href="left.uml#_1K5XwM7cEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1K6l4c7cEeSqqOMGqhj_Zg" x="350" y="72"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_TX4o4M7fEeSqqOMGqhj_Zg" type="2008">
+ <children xmi:type="notation:DecorationNode" xmi:id="_TX4o4s7fEeSqqOMGqhj_Zg" type="5029">
+ <element xmi:type="uml:Class" href="left.uml#_TX3awM7fEeSqqOMGqhj_Zg"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_TX4o487fEeSqqOMGqhj_Zg" type="8510">
+ <element xmi:type="uml:Class" href="left.uml#_TX3awM7fEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_TX4o5M7fEeSqqOMGqhj_Zg" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_TX4o5c7fEeSqqOMGqhj_Zg" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_TX4o5s7fEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_TX4o587fEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_TX4o6M7fEeSqqOMGqhj_Zg"/>
+ <element xmi:type="uml:Class" href="left.uml#_TX3awM7fEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_TX4o6c7fEeSqqOMGqhj_Zg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_TX4o6s7fEeSqqOMGqhj_Zg" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_TX4o687fEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_TX4o7M7fEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_TX4o7c7fEeSqqOMGqhj_Zg"/>
+ <element xmi:type="uml:Class" href="left.uml#_TX3awM7fEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_TX4o7s7fEeSqqOMGqhj_Zg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_TX4o787fEeSqqOMGqhj_Zg" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_TX4o8M7fEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_TX4o8c7fEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_TX4o8s7fEeSqqOMGqhj_Zg"/>
+ <element xmi:type="uml:Class" href="left.uml#_TX3awM7fEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_TX4o887fEeSqqOMGqhj_Zg"/>
+ </children>
+ <element xmi:type="uml:Class" href="left.uml#_TX3awM7fEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_TX4o4c7fEeSqqOMGqhj_Zg" x="349" y="243"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_CkYvcM_wEeS6X8bMfB-bzg" type="2008">
+ <children xmi:type="notation:DecorationNode" xmi:id="_CkakoM_wEeS6X8bMfB-bzg" type="5029">
+ <element xmi:type="uml:Class" href="left.uml#_Cha7AM_wEeS6X8bMfB-bzg"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Ckakoc_wEeS6X8bMfB-bzg" type="8510">
+ <element xmi:type="uml:Class" href="left.uml#_Cha7AM_wEeS6X8bMfB-bzg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Ckakos_wEeS6X8bMfB-bzg" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_CkbLsM_wEeS6X8bMfB-bzg" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_CkbLsc_wEeS6X8bMfB-bzg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_CkbLss_wEeS6X8bMfB-bzg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_CkbLs8_wEeS6X8bMfB-bzg"/>
+ <element xmi:type="uml:Class" href="left.uml#_Cha7AM_wEeS6X8bMfB-bzg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CkbLtM_wEeS6X8bMfB-bzg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_CkbLtc_wEeS6X8bMfB-bzg" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_CkbLts_wEeS6X8bMfB-bzg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_CkbLt8_wEeS6X8bMfB-bzg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_CkbLuM_wEeS6X8bMfB-bzg"/>
+ <element xmi:type="uml:Class" href="left.uml#_Cha7AM_wEeS6X8bMfB-bzg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CkbLuc_wEeS6X8bMfB-bzg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_CkbLus_wEeS6X8bMfB-bzg" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_CkbLu8_wEeS6X8bMfB-bzg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_CkbLvM_wEeS6X8bMfB-bzg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_CkbLvc_wEeS6X8bMfB-bzg"/>
+ <element xmi:type="uml:Class" href="left.uml#_Cha7AM_wEeS6X8bMfB-bzg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CkbLvs_wEeS6X8bMfB-bzg"/>
+ </children>
+ <element xmi:type="uml:Class" href="left.uml#_Cha7AM_wEeS6X8bMfB-bzg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CkYvcc_wEeS6X8bMfB-bzg" x="83" y="249"/>
+ </children>
+ <styles xmi:type="notation:StringValueStyle" xmi:id="_zmK1oc7cEeSqqOMGqhj_Zg" name="diagram_compatibility_version" stringValue="1.0.0"/>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_zmK1os7cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="style:PapyrusViewStyle" xmi:id="_zmK1o87cEeSqqOMGqhj_Zg">
+ <owner xmi:type="uml:Model" href="left.uml#_soPaMM7cEeSqqOMGqhj_Zg"/>
+ </styles>
+ <element xmi:type="uml:Model" href="left.uml#_soPaMM7cEeSqqOMGqhj_Zg"/>
+ <edges xmi:type="notation:Connector" xmi:id="_38pGoM7cEeSqqOMGqhj_Zg" type="4001" source="_0noSoM7cEeSqqOMGqhj_Zg" target="_TX4o4M7fEeSqqOMGqhj_Zg">
+ <children xmi:type="notation:DecorationNode" xmi:id="_38pGo87cEeSqqOMGqhj_Zg" type="6001">
+ <element xmi:type="uml:Association" href="left.uml#_38mDUM7cEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_38pGpM7cEeSqqOMGqhj_Zg" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_38pGpc7cEeSqqOMGqhj_Zg" type="6002">
+ <element xmi:type="uml:Association" href="left.uml#_38mDUM7cEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_38pGps7cEeSqqOMGqhj_Zg" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_38pGp87cEeSqqOMGqhj_Zg" type="6003">
+ <element xmi:type="uml:Association" href="left.uml#_38mDUM7cEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_38pGqM7cEeSqqOMGqhj_Zg" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_38ptsM7cEeSqqOMGqhj_Zg" type="6005">
+ <element xmi:type="uml:Association" href="left.uml#_38mDUM7cEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_38ptsc7cEeSqqOMGqhj_Zg" x="-14" y="31"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_38ptss7cEeSqqOMGqhj_Zg" type="6033">
+ <element xmi:type="uml:Association" href="left.uml#_38mDUM7cEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_38pts87cEeSqqOMGqhj_Zg" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_38pttM7cEeSqqOMGqhj_Zg" type="6034">
+ <element xmi:type="uml:Association" href="left.uml#_38mDUM7cEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_38pttc7cEeSqqOMGqhj_Zg" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_38pGoc7cEeSqqOMGqhj_Zg"/>
+ <element xmi:type="uml:Association" href="left.uml#_38mDUM7cEeSqqOMGqhj_Zg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_38pGos7cEeSqqOMGqhj_Zg" points="[50, -8, -219, -6]$[219, -8, -50, -6]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_Wp4vkNLZEeSzBO7rhIZWOw" type="4001" source="_CkYvcM_wEeS6X8bMfB-bzg" target="_0noSoM7cEeSqqOMGqhj_Zg">
+ <children xmi:type="notation:DecorationNode" xmi:id="_Wp5WoNLZEeSzBO7rhIZWOw" type="6001">
+ <element xmi:type="uml:Association" href="left.uml#_WpmbsNLZEeSzBO7rhIZWOw"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Wp5WodLZEeSzBO7rhIZWOw" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Wp5WotLZEeSzBO7rhIZWOw" type="6002">
+ <element xmi:type="uml:Association" href="left.uml#_WpmbsNLZEeSzBO7rhIZWOw"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Wp5Wo9LZEeSzBO7rhIZWOw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Wp5WpNLZEeSzBO7rhIZWOw" type="6003">
+ <element xmi:type="uml:Association" href="left.uml#_WpmbsNLZEeSzBO7rhIZWOw"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Wp5WpdLZEeSzBO7rhIZWOw" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Wp59sNLZEeSzBO7rhIZWOw" type="6005">
+ <element xmi:type="uml:Association" href="left.uml#_WpmbsNLZEeSzBO7rhIZWOw"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Wp59sdLZEeSzBO7rhIZWOw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Wp59stLZEeSzBO7rhIZWOw" type="6033">
+ <element xmi:type="uml:Association" href="left.uml#_WpmbsNLZEeSzBO7rhIZWOw"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Wp59s9LZEeSzBO7rhIZWOw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Wp59tNLZEeSzBO7rhIZWOw" type="6034">
+ <element xmi:type="uml:Association" href="left.uml#_WpmbsNLZEeSzBO7rhIZWOw"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Wp59tdLZEeSzBO7rhIZWOw" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_Wp4vkdLZEeSzBO7rhIZWOw"/>
+ <element xmi:type="uml:Association" href="left.uml#_WpmbsNLZEeSzBO7rhIZWOw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Wp4vktLZEeSzBO7rhIZWOw" points="[50, -3, -216, 3]$[269, -56, 3, -50]"/>
+ </edges>
+ </notation:Diagram>
+ <css:ModelStyleSheets xmi:id="_SsK80NLZEeSzBO7rhIZWOw"/>
+</xmi:XMI>
diff --git a/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/conflict/c1/left.uml b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/conflict/c1/left.uml
new file mode 100644
index 000000000..b4be95a58
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/conflict/c1/left.uml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<uml:Model xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xmi:id="_soPaMM7cEeSqqOMGqhj_Zg" name="model">
+ <packagedElement xmi:type="uml:Class" xmi:id="_0nM00M7cEeSqqOMGqhj_Zg" name="Class1"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_1K5XwM7cEeSqqOMGqhj_Zg" name="Class2"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_38mDUM7cEeSqqOMGqhj_Zg" memberEnd="_38mDUc7cEeSqqOMGqhj_Zg _38lcQM7cEeSqqOMGqhj_Zg">
+ <name xsi:nil="true"/>
+ <ownedEnd xmi:type="uml:Property" xmi:id="_38mDUc7cEeSqqOMGqhj_Zg" name="class1" type="_0nM00M7cEeSqqOMGqhj_Zg" association="_38mDUM7cEeSqqOMGqhj_Zg">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_38mDUs7cEeSqqOMGqhj_Zg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_38mDU87cEeSqqOMGqhj_Zg" value="1"/>
+ </ownedEnd>
+ <ownedEnd xmi:type="uml:Property" xmi:id="_38lcQM7cEeSqqOMGqhj_Zg" name="someRole" type="_TX3awM7fEeSqqOMGqhj_Zg" association="_38mDUM7cEeSqqOMGqhj_Zg">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_38lcQc7cEeSqqOMGqhj_Zg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_38lcQs7cEeSqqOMGqhj_Zg" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_TX3awM7fEeSqqOMGqhj_Zg" name="Class3"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_Cha7AM_wEeS6X8bMfB-bzg" name="Class4">
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_Wpl0oNLZEeSzBO7rhIZWOw" name="otherRole" type="_0nM00M7cEeSqqOMGqhj_Zg" association="_WpmbsNLZEeSzBO7rhIZWOw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Wpl0odLZEeSzBO7rhIZWOw" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Wpl0otLZEeSzBO7rhIZWOw" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_WpmbsNLZEeSzBO7rhIZWOw" memberEnd="_WpmbsdLZEeSzBO7rhIZWOw _Wpl0oNLZEeSzBO7rhIZWOw">
+ <name xsi:nil="true"/>
+ <ownedEnd xmi:type="uml:Property" xmi:id="_WpmbsdLZEeSzBO7rhIZWOw" name="class4" type="_Cha7AM_wEeS6X8bMfB-bzg" association="_WpmbsNLZEeSzBO7rhIZWOw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_WpmbstLZEeSzBO7rhIZWOw" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Wpmbs9LZEeSzBO7rhIZWOw" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+</uml:Model>
diff --git a/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/conflict/c1/package-info.java b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/conflict/c1/package-info.java
new file mode 100644
index 000000000..0dfb6114a
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/conflict/c1/package-info.java
@@ -0,0 +1,17 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+
+/**
+ * This package contains test data about conflicts in association changes,
+ * where an existing association is reconnected in 2 branches.
+ * @author <a href="mailto:laurent.delaigue@obeo.fr">Laurent Delaigue</a>
+ */
+package org.eclipse.emf.compare.diagram.papyrus.tests.merge.data.assocs.conflict.c1; \ No newline at end of file
diff --git a/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/conflict/c1/right.di b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/conflict/c1/right.di
new file mode 100644
index 000000000..8634d4c00
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/conflict/c1/right.di
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI"/>
diff --git a/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/conflict/c1/right.notation b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/conflict/c1/right.notation
new file mode 100644
index 000000000..491cecb4a
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/conflict/c1/right.notation
@@ -0,0 +1,198 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:css="http://www.eclipse.org/papyrus/infra/gmfdiag/css" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmlns:style="http://www.eclipse.org/papyrus/infra/viewpoints/policy/style" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML">
+ <notation:Diagram xmi:id="_zmK1oM7cEeSqqOMGqhj_Zg" type="PapyrusUMLClassDiagram" name="ClassDiagram" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_0noSoM7cEeSqqOMGqhj_Zg" type="2008">
+ <children xmi:type="notation:DecorationNode" xmi:id="_0npgwM7cEeSqqOMGqhj_Zg" type="5029">
+ <element xmi:type="uml:Class" href="right.uml#_0nM00M7cEeSqqOMGqhj_Zg"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_0nqH0M7cEeSqqOMGqhj_Zg" type="8510">
+ <element xmi:type="uml:Class" href="right.uml#_0nM00M7cEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_0nqH0c7cEeSqqOMGqhj_Zg" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_0nrV8M7cEeSqqOMGqhj_Zg" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_0nrV8c7cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_0nrV8s7cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_0nrV887cEeSqqOMGqhj_Zg"/>
+ <element xmi:type="uml:Class" href="right.uml#_0nM00M7cEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0nrV9M7cEeSqqOMGqhj_Zg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_0nrV9c7cEeSqqOMGqhj_Zg" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_0nrV9s7cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_0nrV987cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_0nrV-M7cEeSqqOMGqhj_Zg"/>
+ <element xmi:type="uml:Class" href="right.uml#_0nM00M7cEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0nrV-c7cEeSqqOMGqhj_Zg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_0nr9AM7cEeSqqOMGqhj_Zg" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_0nr9Ac7cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_0nr9As7cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_0nr9A87cEeSqqOMGqhj_Zg"/>
+ <element xmi:type="uml:Class" href="right.uml#_0nM00M7cEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0nr9BM7cEeSqqOMGqhj_Zg"/>
+ </children>
+ <element xmi:type="uml:Class" href="right.uml#_0nM00M7cEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0noSoc7cEeSqqOMGqhj_Zg" x="81" y="74"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_1K6l4M7cEeSqqOMGqhj_Zg" type="2008">
+ <children xmi:type="notation:DecorationNode" xmi:id="_1K6l4s7cEeSqqOMGqhj_Zg" type="5029">
+ <element xmi:type="uml:Class" href="right.uml#_1K5XwM7cEeSqqOMGqhj_Zg"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_1K6l487cEeSqqOMGqhj_Zg" type="8510">
+ <element xmi:type="uml:Class" href="right.uml#_1K5XwM7cEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_1K6l5M7cEeSqqOMGqhj_Zg" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_1K6l5c7cEeSqqOMGqhj_Zg" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_1K6l5s7cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_1K6l587cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_1K6l6M7cEeSqqOMGqhj_Zg"/>
+ <element xmi:type="uml:Class" href="right.uml#_1K5XwM7cEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1K6l6c7cEeSqqOMGqhj_Zg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_1K6l6s7cEeSqqOMGqhj_Zg" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_1K6l687cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_1K6l7M7cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_1K6l7c7cEeSqqOMGqhj_Zg"/>
+ <element xmi:type="uml:Class" href="right.uml#_1K5XwM7cEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1K6l7s7cEeSqqOMGqhj_Zg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_1K6l787cEeSqqOMGqhj_Zg" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_1K6l8M7cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_1K6l8c7cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_1K6l8s7cEeSqqOMGqhj_Zg"/>
+ <element xmi:type="uml:Class" href="right.uml#_1K5XwM7cEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1K6l887cEeSqqOMGqhj_Zg"/>
+ </children>
+ <element xmi:type="uml:Class" href="right.uml#_1K5XwM7cEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1K6l4c7cEeSqqOMGqhj_Zg" x="350" y="72"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_TX4o4M7fEeSqqOMGqhj_Zg" type="2008">
+ <children xmi:type="notation:DecorationNode" xmi:id="_TX4o4s7fEeSqqOMGqhj_Zg" type="5029">
+ <element xmi:type="uml:Class" href="right.uml#_TX3awM7fEeSqqOMGqhj_Zg"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_TX4o487fEeSqqOMGqhj_Zg" type="8510">
+ <element xmi:type="uml:Class" href="right.uml#_TX3awM7fEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_TX4o5M7fEeSqqOMGqhj_Zg" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_TX4o5c7fEeSqqOMGqhj_Zg" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_TX4o5s7fEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_TX4o587fEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_TX4o6M7fEeSqqOMGqhj_Zg"/>
+ <element xmi:type="uml:Class" href="right.uml#_TX3awM7fEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_TX4o6c7fEeSqqOMGqhj_Zg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_TX4o6s7fEeSqqOMGqhj_Zg" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_TX4o687fEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_TX4o7M7fEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_TX4o7c7fEeSqqOMGqhj_Zg"/>
+ <element xmi:type="uml:Class" href="right.uml#_TX3awM7fEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_TX4o7s7fEeSqqOMGqhj_Zg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_TX4o787fEeSqqOMGqhj_Zg" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_TX4o8M7fEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_TX4o8c7fEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_TX4o8s7fEeSqqOMGqhj_Zg"/>
+ <element xmi:type="uml:Class" href="right.uml#_TX3awM7fEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_TX4o887fEeSqqOMGqhj_Zg"/>
+ </children>
+ <element xmi:type="uml:Class" href="right.uml#_TX3awM7fEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_TX4o4c7fEeSqqOMGqhj_Zg" x="349" y="243"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_CkYvcM_wEeS6X8bMfB-bzg" type="2008">
+ <children xmi:type="notation:DecorationNode" xmi:id="_CkakoM_wEeS6X8bMfB-bzg" type="5029">
+ <element xmi:type="uml:Class" href="right.uml#_Cha7AM_wEeS6X8bMfB-bzg"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Ckakoc_wEeS6X8bMfB-bzg" type="8510">
+ <element xmi:type="uml:Class" href="right.uml#_Cha7AM_wEeS6X8bMfB-bzg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Ckakos_wEeS6X8bMfB-bzg" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_CkbLsM_wEeS6X8bMfB-bzg" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_CkbLsc_wEeS6X8bMfB-bzg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_CkbLss_wEeS6X8bMfB-bzg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_CkbLs8_wEeS6X8bMfB-bzg"/>
+ <element xmi:type="uml:Class" href="right.uml#_Cha7AM_wEeS6X8bMfB-bzg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CkbLtM_wEeS6X8bMfB-bzg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_CkbLtc_wEeS6X8bMfB-bzg" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_CkbLts_wEeS6X8bMfB-bzg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_CkbLt8_wEeS6X8bMfB-bzg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_CkbLuM_wEeS6X8bMfB-bzg"/>
+ <element xmi:type="uml:Class" href="right.uml#_Cha7AM_wEeS6X8bMfB-bzg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CkbLuc_wEeS6X8bMfB-bzg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_CkbLus_wEeS6X8bMfB-bzg" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_CkbLu8_wEeS6X8bMfB-bzg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_CkbLvM_wEeS6X8bMfB-bzg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_CkbLvc_wEeS6X8bMfB-bzg"/>
+ <element xmi:type="uml:Class" href="right.uml#_Cha7AM_wEeS6X8bMfB-bzg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CkbLvs_wEeS6X8bMfB-bzg"/>
+ </children>
+ <element xmi:type="uml:Class" href="right.uml#_Cha7AM_wEeS6X8bMfB-bzg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CkYvcc_wEeS6X8bMfB-bzg" x="83" y="249"/>
+ </children>
+ <styles xmi:type="notation:StringValueStyle" xmi:id="_zmK1oc7cEeSqqOMGqhj_Zg" name="diagram_compatibility_version" stringValue="1.0.0"/>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_zmK1os7cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="style:PapyrusViewStyle" xmi:id="_zmK1o87cEeSqqOMGqhj_Zg">
+ <owner xmi:type="uml:Model" href="right.uml#_soPaMM7cEeSqqOMGqhj_Zg"/>
+ </styles>
+ <element xmi:type="uml:Model" href="right.uml#_soPaMM7cEeSqqOMGqhj_Zg"/>
+ <edges xmi:type="notation:Connector" xmi:id="_38pGoM7cEeSqqOMGqhj_Zg" type="4001" source="_0noSoM7cEeSqqOMGqhj_Zg" target="_CkYvcM_wEeS6X8bMfB-bzg">
+ <children xmi:type="notation:DecorationNode" xmi:id="_38pGo87cEeSqqOMGqhj_Zg" type="6001">
+ <element xmi:type="uml:Association" href="right.uml#_38mDUM7cEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_38pGpM7cEeSqqOMGqhj_Zg" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_38pGpc7cEeSqqOMGqhj_Zg" type="6002">
+ <element xmi:type="uml:Association" href="right.uml#_38mDUM7cEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_38pGps7cEeSqqOMGqhj_Zg" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_38pGp87cEeSqqOMGqhj_Zg" type="6003">
+ <element xmi:type="uml:Association" href="right.uml#_38mDUM7cEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_38pGqM7cEeSqqOMGqhj_Zg" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_38ptsM7cEeSqqOMGqhj_Zg" type="6005">
+ <element xmi:type="uml:Association" href="right.uml#_38mDUM7cEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_38ptsc7cEeSqqOMGqhj_Zg" x="-14" y="31"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_38ptss7cEeSqqOMGqhj_Zg" type="6033">
+ <element xmi:type="uml:Association" href="right.uml#_38mDUM7cEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_38pts87cEeSqqOMGqhj_Zg" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_38pttM7cEeSqqOMGqhj_Zg" type="6034">
+ <element xmi:type="uml:Association" href="right.uml#_38mDUM7cEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_38pttc7cEeSqqOMGqhj_Zg" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_38pGoc7cEeSqqOMGqhj_Zg"/>
+ <element xmi:type="uml:Association" href="right.uml#_38mDUM7cEeSqqOMGqhj_Zg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_38pGos7cEeSqqOMGqhj_Zg" points="[50, -8, -219, -6]$[219, -8, -50, -6]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_Wp4vkNLZEeSzBO7rhIZWOw" type="4001" source="_CkYvcM_wEeS6X8bMfB-bzg" target="_1K6l4M7cEeSqqOMGqhj_Zg">
+ <children xmi:type="notation:DecorationNode" xmi:id="_Wp5WoNLZEeSzBO7rhIZWOw" type="6001">
+ <element xmi:type="uml:Association" href="right.uml#_WpmbsNLZEeSzBO7rhIZWOw"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Wp5WodLZEeSzBO7rhIZWOw" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Wp5WotLZEeSzBO7rhIZWOw" type="6002">
+ <element xmi:type="uml:Association" href="right.uml#_WpmbsNLZEeSzBO7rhIZWOw"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Wp5Wo9LZEeSzBO7rhIZWOw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Wp5WpNLZEeSzBO7rhIZWOw" type="6003">
+ <element xmi:type="uml:Association" href="right.uml#_WpmbsNLZEeSzBO7rhIZWOw"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Wp5WpdLZEeSzBO7rhIZWOw" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Wp59sNLZEeSzBO7rhIZWOw" type="6005">
+ <element xmi:type="uml:Association" href="right.uml#_WpmbsNLZEeSzBO7rhIZWOw"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Wp59sdLZEeSzBO7rhIZWOw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Wp59stLZEeSzBO7rhIZWOw" type="6033">
+ <element xmi:type="uml:Association" href="right.uml#_WpmbsNLZEeSzBO7rhIZWOw"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Wp59s9LZEeSzBO7rhIZWOw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Wp59tNLZEeSzBO7rhIZWOw" type="6034">
+ <element xmi:type="uml:Association" href="right.uml#_WpmbsNLZEeSzBO7rhIZWOw"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Wp59tdLZEeSzBO7rhIZWOw" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_Wp4vkdLZEeSzBO7rhIZWOw"/>
+ <element xmi:type="uml:Association" href="right.uml#_WpmbsNLZEeSzBO7rhIZWOw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Wp4vktLZEeSzBO7rhIZWOw" points="[50, -3, -216, 3]$[269, -56, 3, -50]"/>
+ </edges>
+ </notation:Diagram>
+ <css:ModelStyleSheets xmi:id="_SsK80NLZEeSzBO7rhIZWOw"/>
+</xmi:XMI>
diff --git a/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/conflict/c1/right.uml b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/conflict/c1/right.uml
new file mode 100644
index 000000000..02cbc56d2
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/conflict/c1/right.uml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<uml:Model xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xmi:id="_soPaMM7cEeSqqOMGqhj_Zg" name="model">
+ <packagedElement xmi:type="uml:Class" xmi:id="_0nM00M7cEeSqqOMGqhj_Zg" name="Class1"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_1K5XwM7cEeSqqOMGqhj_Zg" name="Class2"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_38mDUM7cEeSqqOMGqhj_Zg" memberEnd="_38mDUc7cEeSqqOMGqhj_Zg _38lcQM7cEeSqqOMGqhj_Zg">
+ <name xsi:nil="true"/>
+ <ownedEnd xmi:type="uml:Property" xmi:id="_38mDUc7cEeSqqOMGqhj_Zg" name="class1" type="_0nM00M7cEeSqqOMGqhj_Zg" association="_38mDUM7cEeSqqOMGqhj_Zg">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_38mDUs7cEeSqqOMGqhj_Zg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_38mDU87cEeSqqOMGqhj_Zg" value="1"/>
+ </ownedEnd>
+ <ownedEnd xmi:type="uml:Property" xmi:id="_38lcQM7cEeSqqOMGqhj_Zg" name="someRole" type="_Cha7AM_wEeS6X8bMfB-bzg" association="_38mDUM7cEeSqqOMGqhj_Zg">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_38lcQc7cEeSqqOMGqhj_Zg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_38lcQs7cEeSqqOMGqhj_Zg" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_TX3awM7fEeSqqOMGqhj_Zg" name="Class3"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_Cha7AM_wEeS6X8bMfB-bzg" name="Class4">
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_Wpl0oNLZEeSzBO7rhIZWOw" name="otherRole" type="_1K5XwM7cEeSqqOMGqhj_Zg" association="_WpmbsNLZEeSzBO7rhIZWOw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Wpl0odLZEeSzBO7rhIZWOw" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Wpl0otLZEeSzBO7rhIZWOw" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_WpmbsNLZEeSzBO7rhIZWOw" memberEnd="_WpmbsdLZEeSzBO7rhIZWOw _Wpl0oNLZEeSzBO7rhIZWOw">
+ <name xsi:nil="true"/>
+ <ownedEnd xmi:type="uml:Property" xmi:id="_WpmbsdLZEeSzBO7rhIZWOw" name="class4" type="_Cha7AM_wEeS6X8bMfB-bzg" association="_WpmbsNLZEeSzBO7rhIZWOw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_WpmbstLZEeSzBO7rhIZWOw" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Wpmbs9LZEeSzBO7rhIZWOw" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+</uml:Model>
diff --git a/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/conflict/t1/ancestor.di b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/conflict/t1/ancestor.di
new file mode 100644
index 000000000..8634d4c00
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/conflict/t1/ancestor.di
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI"/>
diff --git a/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/conflict/t1/ancestor.notation b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/conflict/t1/ancestor.notation
new file mode 100644
index 000000000..80cd661bb
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/conflict/t1/ancestor.notation
@@ -0,0 +1,87 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:css="http://www.eclipse.org/papyrus/infra/gmfdiag/css" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmlns:style="http://www.eclipse.org/papyrus/infra/viewpoints/policy/style" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML">
+ <notation:Diagram xmi:id="_qC9nsLwdEeSIRf-5f0gG0g" type="PapyrusUMLStateMachineDiagram" name="NewDiagram" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_qC9nsbwdEeSIRf-5f0gG0g" type="2000">
+ <children xmi:type="notation:DecorationNode" xmi:id="_qC9nsrwdEeSIRf-5f0gG0g" type="2001">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_qC9ns7wdEeSIRf-5f0gG0g" width="700" height="30"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_qC9ntLwdEeSIRf-5f0gG0g" type="2002">
+ <children xmi:type="notation:Shape" xmi:id="_qC9ntbwdEeSIRf-5f0gG0g" type="3000">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_qC9ntrwdEeSIRf-5f0gG0g" source="RegionAnnotationKey">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qC9nt7wdEeSIRf-5f0gG0g" key="RegionZoneKey" value=""/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_qC9nuLwdEeSIRf-5f0gG0g" type="3002">
+ <children xmi:type="notation:Shape" xmi:id="_zf4R0MjFEeSlR5E9fXQsvA" type="6000">
+ <children xmi:type="notation:DecorationNode" xmi:id="_zf5f8MjFEeSlR5E9fXQsvA" type="6001">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1aMCYMjFEeSlR5E9fXQsvA" width="203"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_zf5f8cjFEeSlR5E9fXQsvA" type="6002">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zf5f8sjFEeSlR5E9fXQsvA" y="-1" width="203"/>
+ </children>
+ <element xmi:type="uml:State" href="ancestor.uml#_zfvH4MjFEeSlR5E9fXQsvA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zf4R0cjFEeSlR5E9fXQsvA" x="112" y="66" width="203" height="69"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_1w1AwMjFEeSlR5E9fXQsvA" type="6000">
+ <children xmi:type="notation:DecorationNode" xmi:id="_1w1n0MjFEeSlR5E9fXQsvA" type="6001">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_2GKXkMjFEeSlR5E9fXQsvA" width="169"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_1w1n0cjFEeSlR5E9fXQsvA" type="6002">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1w1n0sjFEeSlR5E9fXQsvA" y="-1" width="169"/>
+ </children>
+ <element xmi:type="uml:State" href="ancestor.uml#_1wykgMjFEeSlR5E9fXQsvA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1w1AwcjFEeSlR5E9fXQsvA" x="397" y="12" width="169" height="62"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3noKUMjFEeSlR5E9fXQsvA" type="6000">
+ <children xmi:type="notation:DecorationNode" xmi:id="_3noKUsjFEeSlR5E9fXQsvA" type="6001"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3noxYMjFEeSlR5E9fXQsvA" type="6002">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3noxYcjFEeSlR5E9fXQsvA"/>
+ </children>
+ <element xmi:type="uml:State" href="ancestor.uml#_3nluEMjFEeSlR5E9fXQsvA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3noKUcjFEeSlR5E9fXQsvA" x="401" y="113" width="157" height="73"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_l32-YNIEEeSvO5owlqm60A" type="6000">
+ <children xmi:type="notation:DecorationNode" xmi:id="_l34MgNIEEeSvO5owlqm60A" type="6001"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_l34MgdIEEeSvO5owlqm60A" type="19003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_l34zkNIEEeSvO5owlqm60A" x="40"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_l34zkdIEEeSvO5owlqm60A" type="6002">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_l34zktIEEeSvO5owlqm60A"/>
+ </children>
+ <element xmi:type="uml:State" href="ancestor.uml#_l3kqgNIEEeSvO5owlqm60A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_l32-YdIEEeSvO5owlqm60A" x="157" y="183" width="154" height="74"/>
+ </children>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_qC9nubwdEeSIRf-5f0gG0g"/>
+ </children>
+ <element xmi:type="uml:Region" href="ancestor.uml#_qC4IILwdEeSIRf-5f0gG0g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_qC9nurwdEeSIRf-5f0gG0g" width="700" height="287"/>
+ </children>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_qC9nu7wdEeSIRf-5f0gG0g" y="30" width="700" height="287"/>
+ </children>
+ <element xmi:type="uml:StateMachine" href="ancestor.uml#_qCgUsLwdEeSIRf-5f0gG0g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_qC9nvLwdEeSIRf-5f0gG0g" x="30" y="30" width="700" height="317"/>
+ </children>
+ <styles xmi:type="notation:StringValueStyle" xmi:id="_qC9nvbwdEeSIRf-5f0gG0g" name="diagram_compatibility_version" stringValue="1.0.0"/>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_qC9nvrwdEeSIRf-5f0gG0g"/>
+ <styles xmi:type="style:PapyrusViewStyle" xmi:id="_qC9nv7wdEeSIRf-5f0gG0g">
+ <owner xmi:type="uml:Model" href="ancestor.uml#_qBqAILwdEeSIRf-5f0gG0g"/>
+ </styles>
+ <element xmi:type="uml:StateMachine" href="ancestor.uml#_qCgUsLwdEeSIRf-5f0gG0g"/>
+ <edges xmi:type="notation:Connector" xmi:id="_4tqlUMjFEeSlR5E9fXQsvA" type="7000" source="_zf4R0MjFEeSlR5E9fXQsvA" target="_1w1AwMjFEeSlR5E9fXQsvA">
+ <children xmi:type="notation:DecorationNode" xmi:id="_4trMYMjFEeSlR5E9fXQsvA" type="7001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_4trzcMjFEeSlR5E9fXQsvA"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_4trzccjFEeSlR5E9fXQsvA" type="7002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_4trzcsjFEeSlR5E9fXQsvA"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_4trzc8jFEeSlR5E9fXQsvA" type="7003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_4trzdMjFEeSlR5E9fXQsvA" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_4tqlUcjFEeSlR5E9fXQsvA"/>
+ <element xmi:type="uml:Transition" href="ancestor.uml#_4rv5wMjFEeSlR5E9fXQsvA"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_4tqlUsjFEeSlR5E9fXQsvA" points="[8, -3, -98, 33]$[90, -33, -16, 3]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_4uHRQMjFEeSlR5E9fXQsvA" id="(0.9605911330049262,0.43478260869565216)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_4uHRQcjFEeSlR5E9fXQsvA" id="(0.09467455621301775,0.7741935483870968)"/>
+ </edges>
+ </notation:Diagram>
+ <css:ModelStyleSheets xmi:id="_ksNDkNIEEeSvO5owlqm60A"/>
+</xmi:XMI>
diff --git a/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/conflict/t1/ancestor.uml b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/conflict/t1/ancestor.uml
new file mode 100644
index 000000000..acfbf9374
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/conflict/t1/ancestor.uml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<uml:Model xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xmi:id="_qBqAILwdEeSIRf-5f0gG0g" name="model">
+ <packagedElement xmi:type="uml:StateMachine" xmi:id="_qCgUsLwdEeSIRf-5f0gG0g" name="StateMachine1">
+ <region xmi:type="uml:Region" xmi:id="_qC4IILwdEeSIRf-5f0gG0g" name="Region1">
+ <transition xmi:type="uml:Transition" xmi:id="_4rv5wMjFEeSlR5E9fXQsvA" source="_zfvH4MjFEeSlR5E9fXQsvA" target="_1wykgMjFEeSlR5E9fXQsvA"/>
+ <subvertex xmi:type="uml:State" xmi:id="_zfvH4MjFEeSlR5E9fXQsvA" name="State1"/>
+ <subvertex xmi:type="uml:State" xmi:id="_1wykgMjFEeSlR5E9fXQsvA" name="State2"/>
+ <subvertex xmi:type="uml:State" xmi:id="_3nluEMjFEeSlR5E9fXQsvA" name="State3"/>
+ <subvertex xmi:type="uml:State" xmi:id="_l3kqgNIEEeSvO5owlqm60A" name="State4"/>
+ </region>
+ </packagedElement>
+</uml:Model>
diff --git a/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/conflict/t1/left.di b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/conflict/t1/left.di
new file mode 100644
index 000000000..8634d4c00
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/conflict/t1/left.di
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI"/>
diff --git a/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/conflict/t1/left.notation b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/conflict/t1/left.notation
new file mode 100644
index 000000000..c4cef80f3
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/conflict/t1/left.notation
@@ -0,0 +1,103 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:css="http://www.eclipse.org/papyrus/infra/gmfdiag/css" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmlns:style="http://www.eclipse.org/papyrus/infra/viewpoints/policy/style" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML">
+ <notation:Diagram xmi:id="_qC9nsLwdEeSIRf-5f0gG0g" type="PapyrusUMLStateMachineDiagram" name="NewDiagram" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_qC9nsbwdEeSIRf-5f0gG0g" type="2000">
+ <children xmi:type="notation:DecorationNode" xmi:id="_qC9nsrwdEeSIRf-5f0gG0g" type="2001">
+ <element xmi:type="uml:StateMachine" href="left.uml#_qCgUsLwdEeSIRf-5f0gG0g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_qC9ns7wdEeSIRf-5f0gG0g" width="700" height="30"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_qC9ntLwdEeSIRf-5f0gG0g" type="2002">
+ <children xmi:type="notation:Shape" xmi:id="_qC9ntbwdEeSIRf-5f0gG0g" type="3000">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_qC9ntrwdEeSIRf-5f0gG0g" source="RegionAnnotationKey">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qC9nt7wdEeSIRf-5f0gG0g" key="RegionZoneKey" value=""/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_qC9nuLwdEeSIRf-5f0gG0g" type="3002">
+ <children xmi:type="notation:Shape" xmi:id="_zf4R0MjFEeSlR5E9fXQsvA" type="6000">
+ <children xmi:type="notation:DecorationNode" xmi:id="_zf5f8MjFEeSlR5E9fXQsvA" type="6001">
+ <element xmi:type="uml:State" href="left.uml#_zfvH4MjFEeSlR5E9fXQsvA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1aMCYMjFEeSlR5E9fXQsvA" width="203"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_zf5f8cjFEeSlR5E9fXQsvA" type="6002">
+ <element xmi:type="uml:State" href="left.uml#_zfvH4MjFEeSlR5E9fXQsvA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zf5f8sjFEeSlR5E9fXQsvA" y="-1" width="203"/>
+ </children>
+ <element xmi:type="uml:State" href="left.uml#_zfvH4MjFEeSlR5E9fXQsvA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zf4R0cjFEeSlR5E9fXQsvA" x="112" y="66" width="203" height="69"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_1w1AwMjFEeSlR5E9fXQsvA" type="6000">
+ <children xmi:type="notation:DecorationNode" xmi:id="_1w1n0MjFEeSlR5E9fXQsvA" type="6001">
+ <element xmi:type="uml:State" href="left.uml#_1wykgMjFEeSlR5E9fXQsvA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_2GKXkMjFEeSlR5E9fXQsvA" width="169"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_1w1n0cjFEeSlR5E9fXQsvA" type="6002">
+ <element xmi:type="uml:State" href="left.uml#_1wykgMjFEeSlR5E9fXQsvA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1w1n0sjFEeSlR5E9fXQsvA" y="-1" width="169"/>
+ </children>
+ <element xmi:type="uml:State" href="left.uml#_1wykgMjFEeSlR5E9fXQsvA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1w1AwcjFEeSlR5E9fXQsvA" x="397" y="12" width="169" height="62"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3noKUMjFEeSlR5E9fXQsvA" type="6000">
+ <children xmi:type="notation:DecorationNode" xmi:id="_3noKUsjFEeSlR5E9fXQsvA" type="6001">
+ <element xmi:type="uml:State" href="left.uml#_3nluEMjFEeSlR5E9fXQsvA"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3noxYMjFEeSlR5E9fXQsvA" type="6002">
+ <element xmi:type="uml:State" href="left.uml#_3nluEMjFEeSlR5E9fXQsvA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3noxYcjFEeSlR5E9fXQsvA"/>
+ </children>
+ <element xmi:type="uml:State" href="left.uml#_3nluEMjFEeSlR5E9fXQsvA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3noKUcjFEeSlR5E9fXQsvA" x="401" y="113" width="157" height="73"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_l32-YNIEEeSvO5owlqm60A" type="6000">
+ <children xmi:type="notation:DecorationNode" xmi:id="_l34MgNIEEeSvO5owlqm60A" type="6001">
+ <element xmi:type="uml:State" href="left.uml#_l3kqgNIEEeSvO5owlqm60A"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_l34MgdIEEeSvO5owlqm60A" type="19003">
+ <element xmi:type="uml:State" href="left.uml#_l3kqgNIEEeSvO5owlqm60A"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_l34zkNIEEeSvO5owlqm60A" x="40"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_l34zkdIEEeSvO5owlqm60A" type="6002">
+ <element xmi:type="uml:State" href="left.uml#_l3kqgNIEEeSvO5owlqm60A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_l34zktIEEeSvO5owlqm60A"/>
+ </children>
+ <element xmi:type="uml:State" href="left.uml#_l3kqgNIEEeSvO5owlqm60A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_l32-YdIEEeSvO5owlqm60A" x="157" y="183" width="154" height="74"/>
+ </children>
+ <element xmi:type="uml:Region" href="left.uml#_qC4IILwdEeSIRf-5f0gG0g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_qC9nubwdEeSIRf-5f0gG0g"/>
+ </children>
+ <element xmi:type="uml:Region" href="left.uml#_qC4IILwdEeSIRf-5f0gG0g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_qC9nurwdEeSIRf-5f0gG0g" width="700" height="287"/>
+ </children>
+ <element xmi:type="uml:StateMachine" href="left.uml#_qCgUsLwdEeSIRf-5f0gG0g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_qC9nu7wdEeSIRf-5f0gG0g" y="30" width="700" height="287"/>
+ </children>
+ <element xmi:type="uml:StateMachine" href="left.uml#_qCgUsLwdEeSIRf-5f0gG0g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_qC9nvLwdEeSIRf-5f0gG0g" x="30" y="30" width="700" height="317"/>
+ </children>
+ <styles xmi:type="notation:StringValueStyle" xmi:id="_qC9nvbwdEeSIRf-5f0gG0g" name="diagram_compatibility_version" stringValue="1.0.0"/>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_qC9nvrwdEeSIRf-5f0gG0g"/>
+ <styles xmi:type="style:PapyrusViewStyle" xmi:id="_qC9nv7wdEeSIRf-5f0gG0g">
+ <owner xmi:type="uml:Model" href="left.uml#_qBqAILwdEeSIRf-5f0gG0g"/>
+ </styles>
+ <element xmi:type="uml:StateMachine" href="left.uml#_qCgUsLwdEeSIRf-5f0gG0g"/>
+ <edges xmi:type="notation:Connector" xmi:id="_4tqlUMjFEeSlR5E9fXQsvA" type="7000" source="_zf4R0MjFEeSlR5E9fXQsvA" target="_3noKUMjFEeSlR5E9fXQsvA">
+ <children xmi:type="notation:DecorationNode" xmi:id="_4trMYMjFEeSlR5E9fXQsvA" type="7001">
+ <element xmi:type="uml:Transition" href="left.uml#_4rv5wMjFEeSlR5E9fXQsvA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_4trzcMjFEeSlR5E9fXQsvA"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_4trzccjFEeSlR5E9fXQsvA" type="7002">
+ <element xmi:type="uml:Transition" href="left.uml#_4rv5wMjFEeSlR5E9fXQsvA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_4trzcsjFEeSlR5E9fXQsvA"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_4trzc8jFEeSlR5E9fXQsvA" type="7003">
+ <element xmi:type="uml:Transition" href="left.uml#_4rv5wMjFEeSlR5E9fXQsvA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_4trzdMjFEeSlR5E9fXQsvA" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_4tqlUcjFEeSlR5E9fXQsvA"/>
+ <element xmi:type="uml:Transition" href="left.uml#_4rv5wMjFEeSlR5E9fXQsvA"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_4tqlUsjFEeSlR5E9fXQsvA" points="[8, -3, -98, 33]$[90, -33, -16, 3]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_4uHRQMjFEeSlR5E9fXQsvA" id="(0.9605911330049262,0.43478260869565216)"/>
+ </edges>
+ </notation:Diagram>
+ <css:ModelStyleSheets xmi:id="_ksNDkNIEEeSvO5owlqm60A"/>
+</xmi:XMI>
diff --git a/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/conflict/t1/left.uml b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/conflict/t1/left.uml
new file mode 100644
index 000000000..ff0ee7300
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/conflict/t1/left.uml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<uml:Model xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xmi:id="_qBqAILwdEeSIRf-5f0gG0g" name="model">
+ <packagedElement xmi:type="uml:StateMachine" xmi:id="_qCgUsLwdEeSIRf-5f0gG0g" name="StateMachine1">
+ <region xmi:type="uml:Region" xmi:id="_qC4IILwdEeSIRf-5f0gG0g" name="Region1">
+ <transition xmi:type="uml:Transition" xmi:id="_4rv5wMjFEeSlR5E9fXQsvA" source="_zfvH4MjFEeSlR5E9fXQsvA" target="_3nluEMjFEeSlR5E9fXQsvA"/>
+ <subvertex xmi:type="uml:State" xmi:id="_zfvH4MjFEeSlR5E9fXQsvA" name="State1"/>
+ <subvertex xmi:type="uml:State" xmi:id="_1wykgMjFEeSlR5E9fXQsvA" name="State2"/>
+ <subvertex xmi:type="uml:State" xmi:id="_3nluEMjFEeSlR5E9fXQsvA" name="State3"/>
+ <subvertex xmi:type="uml:State" xmi:id="_l3kqgNIEEeSvO5owlqm60A" name="State4"/>
+ </region>
+ </packagedElement>
+</uml:Model>
diff --git a/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/conflict/t1/package-info.java b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/conflict/t1/package-info.java
new file mode 100644
index 000000000..b18bf94b0
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/conflict/t1/package-info.java
@@ -0,0 +1,18 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+
+/**
+ * This package contains test data for the case of a conflict
+ * on an existing transition whose target is change din 2 branches.
+ *
+ * @author <a href="mailto:laurent.delaigue@obeo.fr">Laurent Delaigue</a>
+ */
+package org.eclipse.emf.compare.diagram.papyrus.tests.merge.data.assocs.conflict.t1; \ No newline at end of file
diff --git a/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/conflict/t1/right.di b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/conflict/t1/right.di
new file mode 100644
index 000000000..8634d4c00
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/conflict/t1/right.di
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI"/>
diff --git a/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/conflict/t1/right.notation b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/conflict/t1/right.notation
new file mode 100644
index 000000000..65c973780
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/conflict/t1/right.notation
@@ -0,0 +1,103 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:css="http://www.eclipse.org/papyrus/infra/gmfdiag/css" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmlns:style="http://www.eclipse.org/papyrus/infra/viewpoints/policy/style" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML">
+ <notation:Diagram xmi:id="_qC9nsLwdEeSIRf-5f0gG0g" type="PapyrusUMLStateMachineDiagram" name="NewDiagram" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_qC9nsbwdEeSIRf-5f0gG0g" type="2000">
+ <children xmi:type="notation:DecorationNode" xmi:id="_qC9nsrwdEeSIRf-5f0gG0g" type="2001">
+ <element xmi:type="uml:StateMachine" href="right.uml#_qCgUsLwdEeSIRf-5f0gG0g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_qC9ns7wdEeSIRf-5f0gG0g" width="700" height="30"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_qC9ntLwdEeSIRf-5f0gG0g" type="2002">
+ <children xmi:type="notation:Shape" xmi:id="_qC9ntbwdEeSIRf-5f0gG0g" type="3000">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_qC9ntrwdEeSIRf-5f0gG0g" source="RegionAnnotationKey">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qC9nt7wdEeSIRf-5f0gG0g" key="RegionZoneKey" value=""/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_qC9nuLwdEeSIRf-5f0gG0g" type="3002">
+ <children xmi:type="notation:Shape" xmi:id="_zf4R0MjFEeSlR5E9fXQsvA" type="6000">
+ <children xmi:type="notation:DecorationNode" xmi:id="_zf5f8MjFEeSlR5E9fXQsvA" type="6001">
+ <element xmi:type="uml:State" href="right.uml#_zfvH4MjFEeSlR5E9fXQsvA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1aMCYMjFEeSlR5E9fXQsvA" width="203"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_zf5f8cjFEeSlR5E9fXQsvA" type="6002">
+ <element xmi:type="uml:State" href="right.uml#_zfvH4MjFEeSlR5E9fXQsvA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zf5f8sjFEeSlR5E9fXQsvA" y="-1" width="203"/>
+ </children>
+ <element xmi:type="uml:State" href="right.uml#_zfvH4MjFEeSlR5E9fXQsvA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zf4R0cjFEeSlR5E9fXQsvA" x="112" y="66" width="203" height="69"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_1w1AwMjFEeSlR5E9fXQsvA" type="6000">
+ <children xmi:type="notation:DecorationNode" xmi:id="_1w1n0MjFEeSlR5E9fXQsvA" type="6001">
+ <element xmi:type="uml:State" href="right.uml#_1wykgMjFEeSlR5E9fXQsvA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_2GKXkMjFEeSlR5E9fXQsvA" width="169"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_1w1n0cjFEeSlR5E9fXQsvA" type="6002">
+ <element xmi:type="uml:State" href="right.uml#_1wykgMjFEeSlR5E9fXQsvA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1w1n0sjFEeSlR5E9fXQsvA" y="-1" width="169"/>
+ </children>
+ <element xmi:type="uml:State" href="right.uml#_1wykgMjFEeSlR5E9fXQsvA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1w1AwcjFEeSlR5E9fXQsvA" x="397" y="12" width="169" height="62"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3noKUMjFEeSlR5E9fXQsvA" type="6000">
+ <children xmi:type="notation:DecorationNode" xmi:id="_3noKUsjFEeSlR5E9fXQsvA" type="6001">
+ <element xmi:type="uml:State" href="right.uml#_3nluEMjFEeSlR5E9fXQsvA"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3noxYMjFEeSlR5E9fXQsvA" type="6002">
+ <element xmi:type="uml:State" href="right.uml#_3nluEMjFEeSlR5E9fXQsvA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3noxYcjFEeSlR5E9fXQsvA"/>
+ </children>
+ <element xmi:type="uml:State" href="right.uml#_3nluEMjFEeSlR5E9fXQsvA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3noKUcjFEeSlR5E9fXQsvA" x="401" y="113" width="157" height="73"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_l32-YNIEEeSvO5owlqm60A" type="6000">
+ <children xmi:type="notation:DecorationNode" xmi:id="_l34MgNIEEeSvO5owlqm60A" type="6001">
+ <element xmi:type="uml:State" href="right.uml#_l3kqgNIEEeSvO5owlqm60A"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_l34MgdIEEeSvO5owlqm60A" type="19003">
+ <element xmi:type="uml:State" href="right.uml#_l3kqgNIEEeSvO5owlqm60A"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_l34zkNIEEeSvO5owlqm60A" x="40"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_l34zkdIEEeSvO5owlqm60A" type="6002">
+ <element xmi:type="uml:State" href="right.uml#_l3kqgNIEEeSvO5owlqm60A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_l34zktIEEeSvO5owlqm60A"/>
+ </children>
+ <element xmi:type="uml:State" href="right.uml#_l3kqgNIEEeSvO5owlqm60A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_l32-YdIEEeSvO5owlqm60A" x="157" y="183" width="154" height="74"/>
+ </children>
+ <element xmi:type="uml:Region" href="right.uml#_qC4IILwdEeSIRf-5f0gG0g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_qC9nubwdEeSIRf-5f0gG0g"/>
+ </children>
+ <element xmi:type="uml:Region" href="right.uml#_qC4IILwdEeSIRf-5f0gG0g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_qC9nurwdEeSIRf-5f0gG0g" width="700" height="287"/>
+ </children>
+ <element xmi:type="uml:StateMachine" href="right.uml#_qCgUsLwdEeSIRf-5f0gG0g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_qC9nu7wdEeSIRf-5f0gG0g" y="30" width="700" height="287"/>
+ </children>
+ <element xmi:type="uml:StateMachine" href="right.uml#_qCgUsLwdEeSIRf-5f0gG0g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_qC9nvLwdEeSIRf-5f0gG0g" x="30" y="30" width="700" height="317"/>
+ </children>
+ <styles xmi:type="notation:StringValueStyle" xmi:id="_qC9nvbwdEeSIRf-5f0gG0g" name="diagram_compatibility_version" stringValue="1.0.0"/>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_qC9nvrwdEeSIRf-5f0gG0g"/>
+ <styles xmi:type="style:PapyrusViewStyle" xmi:id="_qC9nv7wdEeSIRf-5f0gG0g">
+ <owner xmi:type="uml:Model" href="right.uml#_qBqAILwdEeSIRf-5f0gG0g"/>
+ </styles>
+ <element xmi:type="uml:StateMachine" href="right.uml#_qCgUsLwdEeSIRf-5f0gG0g"/>
+ <edges xmi:type="notation:Connector" xmi:id="_4tqlUMjFEeSlR5E9fXQsvA" type="7000" source="_zf4R0MjFEeSlR5E9fXQsvA" target="_l32-YNIEEeSvO5owlqm60A">
+ <children xmi:type="notation:DecorationNode" xmi:id="_4trMYMjFEeSlR5E9fXQsvA" type="7001">
+ <element xmi:type="uml:Transition" href="right.uml#_4rv5wMjFEeSlR5E9fXQsvA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_4trzcMjFEeSlR5E9fXQsvA"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_4trzccjFEeSlR5E9fXQsvA" type="7002">
+ <element xmi:type="uml:Transition" href="right.uml#_4rv5wMjFEeSlR5E9fXQsvA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_4trzcsjFEeSlR5E9fXQsvA"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_4trzc8jFEeSlR5E9fXQsvA" type="7003">
+ <element xmi:type="uml:Transition" href="right.uml#_4rv5wMjFEeSlR5E9fXQsvA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_4trzdMjFEeSlR5E9fXQsvA" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_4tqlUcjFEeSlR5E9fXQsvA"/>
+ <element xmi:type="uml:Transition" href="right.uml#_4rv5wMjFEeSlR5E9fXQsvA"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_4tqlUsjFEeSlR5E9fXQsvA" points="[8, -3, -98, 33]$[90, -33, -16, 3]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_4uHRQMjFEeSlR5E9fXQsvA" id="(0.9605911330049262,0.43478260869565216)"/>
+ </edges>
+ </notation:Diagram>
+ <css:ModelStyleSheets xmi:id="_ksNDkNIEEeSvO5owlqm60A"/>
+</xmi:XMI>
diff --git a/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/conflict/t1/right.uml b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/conflict/t1/right.uml
new file mode 100644
index 000000000..683f60d79
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/conflict/t1/right.uml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<uml:Model xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xmi:id="_qBqAILwdEeSIRf-5f0gG0g" name="model">
+ <packagedElement xmi:type="uml:StateMachine" xmi:id="_qCgUsLwdEeSIRf-5f0gG0g" name="StateMachine1">
+ <region xmi:type="uml:Region" xmi:id="_qC4IILwdEeSIRf-5f0gG0g" name="Region1">
+ <transition xmi:type="uml:Transition" xmi:id="_4rv5wMjFEeSlR5E9fXQsvA" source="_zfvH4MjFEeSlR5E9fXQsvA" target="_l3kqgNIEEeSvO5owlqm60A"/>
+ <subvertex xmi:type="uml:State" xmi:id="_zfvH4MjFEeSlR5E9fXQsvA" name="State1"/>
+ <subvertex xmi:type="uml:State" xmi:id="_1wykgMjFEeSlR5E9fXQsvA" name="State2"/>
+ <subvertex xmi:type="uml:State" xmi:id="_3nluEMjFEeSlR5E9fXQsvA" name="State3"/>
+ <subvertex xmi:type="uml:State" xmi:id="_l3kqgNIEEeSvO5owlqm60A" name="State4"/>
+ </region>
+ </packagedElement>
+</uml:Model>
diff --git a/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/threeway/c1/ancestor.di b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/threeway/c1/ancestor.di
new file mode 100644
index 000000000..8634d4c00
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/threeway/c1/ancestor.di
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI"/>
diff --git a/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/threeway/c1/ancestor.notation b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/threeway/c1/ancestor.notation
new file mode 100644
index 000000000..a71be0536
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/threeway/c1/ancestor.notation
@@ -0,0 +1,192 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:css="http://www.eclipse.org/papyrus/infra/gmfdiag/css" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmlns:style="http://www.eclipse.org/papyrus/infra/viewpoints/policy/style" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML">
+ <notation:Diagram xmi:id="_zmK1oM7cEeSqqOMGqhj_Zg" type="PapyrusUMLClassDiagram" name="ClassDiagram" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_0noSoM7cEeSqqOMGqhj_Zg" type="2008">
+ <children xmi:type="notation:DecorationNode" xmi:id="_0npgwM7cEeSqqOMGqhj_Zg" type="5029">
+ <element xmi:type="uml:Class" href="ancestor.uml#_0nM00M7cEeSqqOMGqhj_Zg"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_0nqH0M7cEeSqqOMGqhj_Zg" type="8510">
+ <element xmi:type="uml:Class" href="ancestor.uml#_0nM00M7cEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_0nqH0c7cEeSqqOMGqhj_Zg" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_0nrV8M7cEeSqqOMGqhj_Zg" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_0nrV8c7cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_0nrV8s7cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_0nrV887cEeSqqOMGqhj_Zg"/>
+ <element xmi:type="uml:Class" href="ancestor.uml#_0nM00M7cEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0nrV9M7cEeSqqOMGqhj_Zg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_0nrV9c7cEeSqqOMGqhj_Zg" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_0nrV9s7cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_0nrV987cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_0nrV-M7cEeSqqOMGqhj_Zg"/>
+ <element xmi:type="uml:Class" href="ancestor.uml#_0nM00M7cEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0nrV-c7cEeSqqOMGqhj_Zg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_0nr9AM7cEeSqqOMGqhj_Zg" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_0nr9Ac7cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_0nr9As7cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_0nr9A87cEeSqqOMGqhj_Zg"/>
+ <element xmi:type="uml:Class" href="ancestor.uml#_0nM00M7cEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0nr9BM7cEeSqqOMGqhj_Zg"/>
+ </children>
+ <element xmi:type="uml:Class" href="ancestor.uml#_0nM00M7cEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0noSoc7cEeSqqOMGqhj_Zg" x="81" y="74"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_1K6l4M7cEeSqqOMGqhj_Zg" type="2008">
+ <children xmi:type="notation:DecorationNode" xmi:id="_1K6l4s7cEeSqqOMGqhj_Zg" type="5029">
+ <element xmi:type="uml:Class" href="ancestor.uml#_1K5XwM7cEeSqqOMGqhj_Zg"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_1K6l487cEeSqqOMGqhj_Zg" type="8510">
+ <element xmi:type="uml:Class" href="ancestor.uml#_1K5XwM7cEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_1K6l5M7cEeSqqOMGqhj_Zg" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_1K6l5c7cEeSqqOMGqhj_Zg" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_1K6l5s7cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_1K6l587cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_1K6l6M7cEeSqqOMGqhj_Zg"/>
+ <element xmi:type="uml:Class" href="ancestor.uml#_1K5XwM7cEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1K6l6c7cEeSqqOMGqhj_Zg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_1K6l6s7cEeSqqOMGqhj_Zg" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_1K6l687cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_1K6l7M7cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_1K6l7c7cEeSqqOMGqhj_Zg"/>
+ <element xmi:type="uml:Class" href="ancestor.uml#_1K5XwM7cEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1K6l7s7cEeSqqOMGqhj_Zg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_1K6l787cEeSqqOMGqhj_Zg" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_1K6l8M7cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_1K6l8c7cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_1K6l8s7cEeSqqOMGqhj_Zg"/>
+ <element xmi:type="uml:Class" href="ancestor.uml#_1K5XwM7cEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1K6l887cEeSqqOMGqhj_Zg"/>
+ </children>
+ <element xmi:type="uml:Class" href="ancestor.uml#_1K5XwM7cEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1K6l4c7cEeSqqOMGqhj_Zg" x="350" y="72"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_TX4o4M7fEeSqqOMGqhj_Zg" type="2008">
+ <children xmi:type="notation:DecorationNode" xmi:id="_TX4o4s7fEeSqqOMGqhj_Zg" type="5029">
+ <element xmi:type="uml:Class" href="ancestor.uml#_TX3awM7fEeSqqOMGqhj_Zg"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_TX4o487fEeSqqOMGqhj_Zg" type="8510">
+ <element xmi:type="uml:Class" href="ancestor.uml#_TX3awM7fEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_TX4o5M7fEeSqqOMGqhj_Zg" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_TX4o5c7fEeSqqOMGqhj_Zg" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_TX4o5s7fEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_TX4o587fEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_TX4o6M7fEeSqqOMGqhj_Zg"/>
+ <element xmi:type="uml:Class" href="ancestor.uml#_TX3awM7fEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_TX4o6c7fEeSqqOMGqhj_Zg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_TX4o6s7fEeSqqOMGqhj_Zg" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_TX4o687fEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_TX4o7M7fEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_TX4o7c7fEeSqqOMGqhj_Zg"/>
+ <element xmi:type="uml:Class" href="ancestor.uml#_TX3awM7fEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_TX4o7s7fEeSqqOMGqhj_Zg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_TX4o787fEeSqqOMGqhj_Zg" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_TX4o8M7fEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_TX4o8c7fEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_TX4o8s7fEeSqqOMGqhj_Zg"/>
+ <element xmi:type="uml:Class" href="ancestor.uml#_TX3awM7fEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_TX4o887fEeSqqOMGqhj_Zg"/>
+ </children>
+ <element xmi:type="uml:Class" href="ancestor.uml#_TX3awM7fEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_TX4o4c7fEeSqqOMGqhj_Zg" x="349" y="243"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_CkYvcM_wEeS6X8bMfB-bzg" type="2008">
+ <children xmi:type="notation:DecorationNode" xmi:id="_CkakoM_wEeS6X8bMfB-bzg" type="5029">
+ <element xmi:type="uml:Class" href="ancestor.uml#_Cha7AM_wEeS6X8bMfB-bzg"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Ckakoc_wEeS6X8bMfB-bzg" type="8510">
+ <element xmi:type="uml:Class" href="ancestor.uml#_Cha7AM_wEeS6X8bMfB-bzg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Ckakos_wEeS6X8bMfB-bzg" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_CkbLsM_wEeS6X8bMfB-bzg" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_CkbLsc_wEeS6X8bMfB-bzg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_CkbLss_wEeS6X8bMfB-bzg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_CkbLs8_wEeS6X8bMfB-bzg"/>
+ <element xmi:type="uml:Class" href="ancestor.uml#_Cha7AM_wEeS6X8bMfB-bzg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CkbLtM_wEeS6X8bMfB-bzg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_CkbLtc_wEeS6X8bMfB-bzg" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_CkbLts_wEeS6X8bMfB-bzg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_CkbLt8_wEeS6X8bMfB-bzg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_CkbLuM_wEeS6X8bMfB-bzg"/>
+ <element xmi:type="uml:Class" href="ancestor.uml#_Cha7AM_wEeS6X8bMfB-bzg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CkbLuc_wEeS6X8bMfB-bzg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_CkbLus_wEeS6X8bMfB-bzg" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_CkbLu8_wEeS6X8bMfB-bzg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_CkbLvM_wEeS6X8bMfB-bzg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_CkbLvc_wEeS6X8bMfB-bzg"/>
+ <element xmi:type="uml:Class" href="ancestor.uml#_Cha7AM_wEeS6X8bMfB-bzg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CkbLvs_wEeS6X8bMfB-bzg"/>
+ </children>
+ <element xmi:type="uml:Class" href="ancestor.uml#_Cha7AM_wEeS6X8bMfB-bzg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CkYvcc_wEeS6X8bMfB-bzg" x="83" y="249"/>
+ </children>
+ <styles xmi:type="notation:StringValueStyle" xmi:id="_zmK1oc7cEeSqqOMGqhj_Zg" name="diagram_compatibility_version" stringValue="1.0.0"/>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_zmK1os7cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="style:PapyrusViewStyle" xmi:id="_zmK1o87cEeSqqOMGqhj_Zg">
+ <owner xmi:type="uml:Model" href="ancestor.uml#_soPaMM7cEeSqqOMGqhj_Zg"/>
+ </styles>
+ <element xmi:type="uml:Model" href="ancestor.uml#_soPaMM7cEeSqqOMGqhj_Zg"/>
+ <edges xmi:type="notation:Connector" xmi:id="_38pGoM7cEeSqqOMGqhj_Zg" type="4001" source="_0noSoM7cEeSqqOMGqhj_Zg" target="_1K6l4M7cEeSqqOMGqhj_Zg">
+ <children xmi:type="notation:DecorationNode" xmi:id="_38pGo87cEeSqqOMGqhj_Zg" type="6001">
+ <element xmi:type="uml:Association" href="ancestor.uml#_38mDUM7cEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_38pGpM7cEeSqqOMGqhj_Zg" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_38pGpc7cEeSqqOMGqhj_Zg" type="6002">
+ <element xmi:type="uml:Association" href="ancestor.uml#_38mDUM7cEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_38pGps7cEeSqqOMGqhj_Zg" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_38pGp87cEeSqqOMGqhj_Zg" type="6003">
+ <element xmi:type="uml:Association" href="ancestor.uml#_38mDUM7cEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_38pGqM7cEeSqqOMGqhj_Zg" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_38ptsM7cEeSqqOMGqhj_Zg" type="6005">
+ <element xmi:type="uml:Association" href="ancestor.uml#_38mDUM7cEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_38ptsc7cEeSqqOMGqhj_Zg" x="-14" y="31"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_38ptss7cEeSqqOMGqhj_Zg" type="6033">
+ <element xmi:type="uml:Association" href="ancestor.uml#_38mDUM7cEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_38pts87cEeSqqOMGqhj_Zg" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_38pttM7cEeSqqOMGqhj_Zg" type="6034">
+ <element xmi:type="uml:Association" href="ancestor.uml#_38mDUM7cEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_38pttc7cEeSqqOMGqhj_Zg" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_38pGoc7cEeSqqOMGqhj_Zg"/>
+ <element xmi:type="uml:Association" href="ancestor.uml#_38mDUM7cEeSqqOMGqhj_Zg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_38pGos7cEeSqqOMGqhj_Zg" points="[50, -8, -219, -6]$[219, -8, -50, -6]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_Wp4vkNLZEeSzBO7rhIZWOw" type="4001" source="_CkYvcM_wEeS6X8bMfB-bzg" target="_TX4o4M7fEeSqqOMGqhj_Zg">
+ <children xmi:type="notation:DecorationNode" xmi:id="_Wp5WoNLZEeSzBO7rhIZWOw" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Wp5WodLZEeSzBO7rhIZWOw" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Wp5WotLZEeSzBO7rhIZWOw" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Wp5Wo9LZEeSzBO7rhIZWOw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Wp5WpNLZEeSzBO7rhIZWOw" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Wp5WpdLZEeSzBO7rhIZWOw" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Wp59sNLZEeSzBO7rhIZWOw" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Wp59sdLZEeSzBO7rhIZWOw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Wp59stLZEeSzBO7rhIZWOw" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Wp59s9LZEeSzBO7rhIZWOw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Wp59tNLZEeSzBO7rhIZWOw" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Wp59tdLZEeSzBO7rhIZWOw" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_Wp4vkdLZEeSzBO7rhIZWOw"/>
+ <element xmi:type="uml:Association" href="ancestor.uml#_WpmbsNLZEeSzBO7rhIZWOw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Wp4vktLZEeSzBO7rhIZWOw" points="[50, -3, -216, 3]$[269, -56, 3, -50]"/>
+ </edges>
+ </notation:Diagram>
+ <css:ModelStyleSheets xmi:id="_SsK80NLZEeSzBO7rhIZWOw"/>
+</xmi:XMI>
diff --git a/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/threeway/c1/ancestor.uml b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/threeway/c1/ancestor.uml
new file mode 100644
index 000000000..aa48ba775
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/threeway/c1/ancestor.uml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<uml:Model xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xmi:id="_soPaMM7cEeSqqOMGqhj_Zg" name="model">
+ <packagedElement xmi:type="uml:Class" xmi:id="_0nM00M7cEeSqqOMGqhj_Zg" name="Class1"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_1K5XwM7cEeSqqOMGqhj_Zg" name="Class2"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_38mDUM7cEeSqqOMGqhj_Zg" memberEnd="_38mDUc7cEeSqqOMGqhj_Zg _38lcQM7cEeSqqOMGqhj_Zg">
+ <name xsi:nil="true"/>
+ <ownedEnd xmi:type="uml:Property" xmi:id="_38mDUc7cEeSqqOMGqhj_Zg" name="class1" type="_0nM00M7cEeSqqOMGqhj_Zg" association="_38mDUM7cEeSqqOMGqhj_Zg">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_38mDUs7cEeSqqOMGqhj_Zg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_38mDU87cEeSqqOMGqhj_Zg" value="1"/>
+ </ownedEnd>
+ <ownedEnd xmi:type="uml:Property" xmi:id="_38lcQM7cEeSqqOMGqhj_Zg" name="someRole" type="_1K5XwM7cEeSqqOMGqhj_Zg" association="_38mDUM7cEeSqqOMGqhj_Zg">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_38lcQc7cEeSqqOMGqhj_Zg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_38lcQs7cEeSqqOMGqhj_Zg" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_TX3awM7fEeSqqOMGqhj_Zg" name="Class3"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_Cha7AM_wEeS6X8bMfB-bzg" name="Class4">
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_Wpl0oNLZEeSzBO7rhIZWOw" name="otherRole" type="_TX3awM7fEeSqqOMGqhj_Zg" association="_WpmbsNLZEeSzBO7rhIZWOw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Wpl0odLZEeSzBO7rhIZWOw" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Wpl0otLZEeSzBO7rhIZWOw" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_WpmbsNLZEeSzBO7rhIZWOw" memberEnd="_WpmbsdLZEeSzBO7rhIZWOw _Wpl0oNLZEeSzBO7rhIZWOw">
+ <name xsi:nil="true"/>
+ <ownedEnd xmi:type="uml:Property" xmi:id="_WpmbsdLZEeSzBO7rhIZWOw" name="class4" type="_Cha7AM_wEeS6X8bMfB-bzg" association="_WpmbsNLZEeSzBO7rhIZWOw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_WpmbstLZEeSzBO7rhIZWOw" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Wpmbs9LZEeSzBO7rhIZWOw" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+</uml:Model>
diff --git a/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/threeway/c1/left.di b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/threeway/c1/left.di
new file mode 100644
index 000000000..8634d4c00
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/threeway/c1/left.di
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI"/>
diff --git a/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/threeway/c1/left.notation b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/threeway/c1/left.notation
new file mode 100644
index 000000000..f233ae0c0
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/threeway/c1/left.notation
@@ -0,0 +1,198 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:css="http://www.eclipse.org/papyrus/infra/gmfdiag/css" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmlns:style="http://www.eclipse.org/papyrus/infra/viewpoints/policy/style" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML">
+ <notation:Diagram xmi:id="_zmK1oM7cEeSqqOMGqhj_Zg" type="PapyrusUMLClassDiagram" name="ClassDiagram" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_0noSoM7cEeSqqOMGqhj_Zg" type="2008">
+ <children xmi:type="notation:DecorationNode" xmi:id="_0npgwM7cEeSqqOMGqhj_Zg" type="5029">
+ <element xmi:type="uml:Class" href="left.uml#_0nM00M7cEeSqqOMGqhj_Zg"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_0nqH0M7cEeSqqOMGqhj_Zg" type="8510">
+ <element xmi:type="uml:Class" href="left.uml#_0nM00M7cEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_0nqH0c7cEeSqqOMGqhj_Zg" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_0nrV8M7cEeSqqOMGqhj_Zg" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_0nrV8c7cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_0nrV8s7cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_0nrV887cEeSqqOMGqhj_Zg"/>
+ <element xmi:type="uml:Class" href="left.uml#_0nM00M7cEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0nrV9M7cEeSqqOMGqhj_Zg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_0nrV9c7cEeSqqOMGqhj_Zg" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_0nrV9s7cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_0nrV987cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_0nrV-M7cEeSqqOMGqhj_Zg"/>
+ <element xmi:type="uml:Class" href="left.uml#_0nM00M7cEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0nrV-c7cEeSqqOMGqhj_Zg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_0nr9AM7cEeSqqOMGqhj_Zg" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_0nr9Ac7cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_0nr9As7cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_0nr9A87cEeSqqOMGqhj_Zg"/>
+ <element xmi:type="uml:Class" href="left.uml#_0nM00M7cEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0nr9BM7cEeSqqOMGqhj_Zg"/>
+ </children>
+ <element xmi:type="uml:Class" href="left.uml#_0nM00M7cEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0noSoc7cEeSqqOMGqhj_Zg" x="81" y="74"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_1K6l4M7cEeSqqOMGqhj_Zg" type="2008">
+ <children xmi:type="notation:DecorationNode" xmi:id="_1K6l4s7cEeSqqOMGqhj_Zg" type="5029">
+ <element xmi:type="uml:Class" href="left.uml#_1K5XwM7cEeSqqOMGqhj_Zg"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_1K6l487cEeSqqOMGqhj_Zg" type="8510">
+ <element xmi:type="uml:Class" href="left.uml#_1K5XwM7cEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_1K6l5M7cEeSqqOMGqhj_Zg" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_1K6l5c7cEeSqqOMGqhj_Zg" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_1K6l5s7cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_1K6l587cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_1K6l6M7cEeSqqOMGqhj_Zg"/>
+ <element xmi:type="uml:Class" href="left.uml#_1K5XwM7cEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1K6l6c7cEeSqqOMGqhj_Zg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_1K6l6s7cEeSqqOMGqhj_Zg" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_1K6l687cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_1K6l7M7cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_1K6l7c7cEeSqqOMGqhj_Zg"/>
+ <element xmi:type="uml:Class" href="left.uml#_1K5XwM7cEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1K6l7s7cEeSqqOMGqhj_Zg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_1K6l787cEeSqqOMGqhj_Zg" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_1K6l8M7cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_1K6l8c7cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_1K6l8s7cEeSqqOMGqhj_Zg"/>
+ <element xmi:type="uml:Class" href="left.uml#_1K5XwM7cEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1K6l887cEeSqqOMGqhj_Zg"/>
+ </children>
+ <element xmi:type="uml:Class" href="left.uml#_1K5XwM7cEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1K6l4c7cEeSqqOMGqhj_Zg" x="350" y="72"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_TX4o4M7fEeSqqOMGqhj_Zg" type="2008">
+ <children xmi:type="notation:DecorationNode" xmi:id="_TX4o4s7fEeSqqOMGqhj_Zg" type="5029">
+ <element xmi:type="uml:Class" href="left.uml#_TX3awM7fEeSqqOMGqhj_Zg"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_TX4o487fEeSqqOMGqhj_Zg" type="8510">
+ <element xmi:type="uml:Class" href="left.uml#_TX3awM7fEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_TX4o5M7fEeSqqOMGqhj_Zg" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_TX4o5c7fEeSqqOMGqhj_Zg" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_TX4o5s7fEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_TX4o587fEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_TX4o6M7fEeSqqOMGqhj_Zg"/>
+ <element xmi:type="uml:Class" href="left.uml#_TX3awM7fEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_TX4o6c7fEeSqqOMGqhj_Zg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_TX4o6s7fEeSqqOMGqhj_Zg" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_TX4o687fEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_TX4o7M7fEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_TX4o7c7fEeSqqOMGqhj_Zg"/>
+ <element xmi:type="uml:Class" href="left.uml#_TX3awM7fEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_TX4o7s7fEeSqqOMGqhj_Zg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_TX4o787fEeSqqOMGqhj_Zg" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_TX4o8M7fEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_TX4o8c7fEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_TX4o8s7fEeSqqOMGqhj_Zg"/>
+ <element xmi:type="uml:Class" href="left.uml#_TX3awM7fEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_TX4o887fEeSqqOMGqhj_Zg"/>
+ </children>
+ <element xmi:type="uml:Class" href="left.uml#_TX3awM7fEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_TX4o4c7fEeSqqOMGqhj_Zg" x="349" y="243"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_CkYvcM_wEeS6X8bMfB-bzg" type="2008">
+ <children xmi:type="notation:DecorationNode" xmi:id="_CkakoM_wEeS6X8bMfB-bzg" type="5029">
+ <element xmi:type="uml:Class" href="left.uml#_Cha7AM_wEeS6X8bMfB-bzg"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Ckakoc_wEeS6X8bMfB-bzg" type="8510">
+ <element xmi:type="uml:Class" href="left.uml#_Cha7AM_wEeS6X8bMfB-bzg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Ckakos_wEeS6X8bMfB-bzg" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_CkbLsM_wEeS6X8bMfB-bzg" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_CkbLsc_wEeS6X8bMfB-bzg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_CkbLss_wEeS6X8bMfB-bzg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_CkbLs8_wEeS6X8bMfB-bzg"/>
+ <element xmi:type="uml:Class" href="left.uml#_Cha7AM_wEeS6X8bMfB-bzg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CkbLtM_wEeS6X8bMfB-bzg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_CkbLtc_wEeS6X8bMfB-bzg" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_CkbLts_wEeS6X8bMfB-bzg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_CkbLt8_wEeS6X8bMfB-bzg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_CkbLuM_wEeS6X8bMfB-bzg"/>
+ <element xmi:type="uml:Class" href="left.uml#_Cha7AM_wEeS6X8bMfB-bzg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CkbLuc_wEeS6X8bMfB-bzg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_CkbLus_wEeS6X8bMfB-bzg" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_CkbLu8_wEeS6X8bMfB-bzg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_CkbLvM_wEeS6X8bMfB-bzg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_CkbLvc_wEeS6X8bMfB-bzg"/>
+ <element xmi:type="uml:Class" href="left.uml#_Cha7AM_wEeS6X8bMfB-bzg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CkbLvs_wEeS6X8bMfB-bzg"/>
+ </children>
+ <element xmi:type="uml:Class" href="left.uml#_Cha7AM_wEeS6X8bMfB-bzg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CkYvcc_wEeS6X8bMfB-bzg" x="83" y="249"/>
+ </children>
+ <styles xmi:type="notation:StringValueStyle" xmi:id="_zmK1oc7cEeSqqOMGqhj_Zg" name="diagram_compatibility_version" stringValue="1.0.0"/>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_zmK1os7cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="style:PapyrusViewStyle" xmi:id="_zmK1o87cEeSqqOMGqhj_Zg">
+ <owner xmi:type="uml:Model" href="left.uml#_soPaMM7cEeSqqOMGqhj_Zg"/>
+ </styles>
+ <element xmi:type="uml:Model" href="left.uml#_soPaMM7cEeSqqOMGqhj_Zg"/>
+ <edges xmi:type="notation:Connector" xmi:id="_38pGoM7cEeSqqOMGqhj_Zg" type="4001" source="_0noSoM7cEeSqqOMGqhj_Zg" target="_TX4o4M7fEeSqqOMGqhj_Zg">
+ <children xmi:type="notation:DecorationNode" xmi:id="_38pGo87cEeSqqOMGqhj_Zg" type="6001">
+ <element xmi:type="uml:Association" href="left.uml#_38mDUM7cEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_38pGpM7cEeSqqOMGqhj_Zg" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_38pGpc7cEeSqqOMGqhj_Zg" type="6002">
+ <element xmi:type="uml:Association" href="left.uml#_38mDUM7cEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_38pGps7cEeSqqOMGqhj_Zg" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_38pGp87cEeSqqOMGqhj_Zg" type="6003">
+ <element xmi:type="uml:Association" href="left.uml#_38mDUM7cEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_38pGqM7cEeSqqOMGqhj_Zg" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_38ptsM7cEeSqqOMGqhj_Zg" type="6005">
+ <element xmi:type="uml:Association" href="left.uml#_38mDUM7cEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_38ptsc7cEeSqqOMGqhj_Zg" x="-14" y="31"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_38ptss7cEeSqqOMGqhj_Zg" type="6033">
+ <element xmi:type="uml:Association" href="left.uml#_38mDUM7cEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_38pts87cEeSqqOMGqhj_Zg" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_38pttM7cEeSqqOMGqhj_Zg" type="6034">
+ <element xmi:type="uml:Association" href="left.uml#_38mDUM7cEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_38pttc7cEeSqqOMGqhj_Zg" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_38pGoc7cEeSqqOMGqhj_Zg"/>
+ <element xmi:type="uml:Association" href="left.uml#_38mDUM7cEeSqqOMGqhj_Zg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_38pGos7cEeSqqOMGqhj_Zg" points="[50, -8, -219, -6]$[219, -8, -50, -6]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_Wp4vkNLZEeSzBO7rhIZWOw" type="4001" source="_CkYvcM_wEeS6X8bMfB-bzg" target="_TX4o4M7fEeSqqOMGqhj_Zg">
+ <children xmi:type="notation:DecorationNode" xmi:id="_Wp5WoNLZEeSzBO7rhIZWOw" type="6001">
+ <element xmi:type="uml:Association" href="left.uml#_WpmbsNLZEeSzBO7rhIZWOw"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Wp5WodLZEeSzBO7rhIZWOw" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Wp5WotLZEeSzBO7rhIZWOw" type="6002">
+ <element xmi:type="uml:Association" href="left.uml#_WpmbsNLZEeSzBO7rhIZWOw"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Wp5Wo9LZEeSzBO7rhIZWOw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Wp5WpNLZEeSzBO7rhIZWOw" type="6003">
+ <element xmi:type="uml:Association" href="left.uml#_WpmbsNLZEeSzBO7rhIZWOw"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Wp5WpdLZEeSzBO7rhIZWOw" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Wp59sNLZEeSzBO7rhIZWOw" type="6005">
+ <element xmi:type="uml:Association" href="left.uml#_WpmbsNLZEeSzBO7rhIZWOw"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Wp59sdLZEeSzBO7rhIZWOw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Wp59stLZEeSzBO7rhIZWOw" type="6033">
+ <element xmi:type="uml:Association" href="left.uml#_WpmbsNLZEeSzBO7rhIZWOw"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Wp59s9LZEeSzBO7rhIZWOw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Wp59tNLZEeSzBO7rhIZWOw" type="6034">
+ <element xmi:type="uml:Association" href="left.uml#_WpmbsNLZEeSzBO7rhIZWOw"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Wp59tdLZEeSzBO7rhIZWOw" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_Wp4vkdLZEeSzBO7rhIZWOw"/>
+ <element xmi:type="uml:Association" href="left.uml#_WpmbsNLZEeSzBO7rhIZWOw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Wp4vktLZEeSzBO7rhIZWOw" points="[50, -3, -216, 3]$[269, -56, 3, -50]"/>
+ </edges>
+ </notation:Diagram>
+ <css:ModelStyleSheets xmi:id="_SsK80NLZEeSzBO7rhIZWOw"/>
+</xmi:XMI>
diff --git a/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/threeway/c1/left.uml b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/threeway/c1/left.uml
new file mode 100644
index 000000000..e56d84d13
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/threeway/c1/left.uml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<uml:Model xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xmi:id="_soPaMM7cEeSqqOMGqhj_Zg" name="model">
+ <packagedElement xmi:type="uml:Class" xmi:id="_0nM00M7cEeSqqOMGqhj_Zg" name="Class1"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_1K5XwM7cEeSqqOMGqhj_Zg" name="Class2"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_38mDUM7cEeSqqOMGqhj_Zg" memberEnd="_38mDUc7cEeSqqOMGqhj_Zg _38lcQM7cEeSqqOMGqhj_Zg">
+ <name xsi:nil="true"/>
+ <ownedEnd xmi:type="uml:Property" xmi:id="_38mDUc7cEeSqqOMGqhj_Zg" name="class1" type="_0nM00M7cEeSqqOMGqhj_Zg" association="_38mDUM7cEeSqqOMGqhj_Zg">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_38mDUs7cEeSqqOMGqhj_Zg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_38mDU87cEeSqqOMGqhj_Zg" value="1"/>
+ </ownedEnd>
+ <ownedEnd xmi:type="uml:Property" xmi:id="_38lcQM7cEeSqqOMGqhj_Zg" name="someRole" type="_TX3awM7fEeSqqOMGqhj_Zg" association="_38mDUM7cEeSqqOMGqhj_Zg">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_38lcQc7cEeSqqOMGqhj_Zg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_38lcQs7cEeSqqOMGqhj_Zg" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_TX3awM7fEeSqqOMGqhj_Zg" name="Class3"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_Cha7AM_wEeS6X8bMfB-bzg" name="Class4">
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_Wpl0oNLZEeSzBO7rhIZWOw" name="otherRole" type="_TX3awM7fEeSqqOMGqhj_Zg" association="_WpmbsNLZEeSzBO7rhIZWOw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Wpl0odLZEeSzBO7rhIZWOw" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Wpl0otLZEeSzBO7rhIZWOw" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_WpmbsNLZEeSzBO7rhIZWOw" memberEnd="_WpmbsdLZEeSzBO7rhIZWOw _Wpl0oNLZEeSzBO7rhIZWOw">
+ <name xsi:nil="true"/>
+ <ownedEnd xmi:type="uml:Property" xmi:id="_WpmbsdLZEeSzBO7rhIZWOw" name="class4" type="_Cha7AM_wEeS6X8bMfB-bzg" association="_WpmbsNLZEeSzBO7rhIZWOw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_WpmbstLZEeSzBO7rhIZWOw" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Wpmbs9LZEeSzBO7rhIZWOw" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+</uml:Model>
diff --git a/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/threeway/c1/package-info.java b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/threeway/c1/package-info.java
new file mode 100644
index 000000000..abcb1b9c3
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/threeway/c1/package-info.java
@@ -0,0 +1,17 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+
+/**
+ * This package contains test data about association changes,
+ * where an existing association is reconnected in 2 branches.
+ * @author <a href="mailto:laurent.delaigue@obeo.fr">Laurent Delaigue</a>
+ */
+package org.eclipse.emf.compare.diagram.papyrus.tests.merge.data.assocs.threeway.c1; \ No newline at end of file
diff --git a/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/threeway/c1/right.di b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/threeway/c1/right.di
new file mode 100644
index 000000000..8634d4c00
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/threeway/c1/right.di
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI"/>
diff --git a/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/threeway/c1/right.notation b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/threeway/c1/right.notation
new file mode 100644
index 000000000..978c5e57d
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/threeway/c1/right.notation
@@ -0,0 +1,198 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:css="http://www.eclipse.org/papyrus/infra/gmfdiag/css" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmlns:style="http://www.eclipse.org/papyrus/infra/viewpoints/policy/style" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML">
+ <notation:Diagram xmi:id="_zmK1oM7cEeSqqOMGqhj_Zg" type="PapyrusUMLClassDiagram" name="ClassDiagram" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_0noSoM7cEeSqqOMGqhj_Zg" type="2008">
+ <children xmi:type="notation:DecorationNode" xmi:id="_0npgwM7cEeSqqOMGqhj_Zg" type="5029">
+ <element xmi:type="uml:Class" href="right.uml#_0nM00M7cEeSqqOMGqhj_Zg"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_0nqH0M7cEeSqqOMGqhj_Zg" type="8510">
+ <element xmi:type="uml:Class" href="right.uml#_0nM00M7cEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_0nqH0c7cEeSqqOMGqhj_Zg" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_0nrV8M7cEeSqqOMGqhj_Zg" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_0nrV8c7cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_0nrV8s7cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_0nrV887cEeSqqOMGqhj_Zg"/>
+ <element xmi:type="uml:Class" href="right.uml#_0nM00M7cEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0nrV9M7cEeSqqOMGqhj_Zg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_0nrV9c7cEeSqqOMGqhj_Zg" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_0nrV9s7cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_0nrV987cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_0nrV-M7cEeSqqOMGqhj_Zg"/>
+ <element xmi:type="uml:Class" href="right.uml#_0nM00M7cEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0nrV-c7cEeSqqOMGqhj_Zg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_0nr9AM7cEeSqqOMGqhj_Zg" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_0nr9Ac7cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_0nr9As7cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_0nr9A87cEeSqqOMGqhj_Zg"/>
+ <element xmi:type="uml:Class" href="right.uml#_0nM00M7cEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0nr9BM7cEeSqqOMGqhj_Zg"/>
+ </children>
+ <element xmi:type="uml:Class" href="right.uml#_0nM00M7cEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0noSoc7cEeSqqOMGqhj_Zg" x="81" y="74"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_1K6l4M7cEeSqqOMGqhj_Zg" type="2008">
+ <children xmi:type="notation:DecorationNode" xmi:id="_1K6l4s7cEeSqqOMGqhj_Zg" type="5029">
+ <element xmi:type="uml:Class" href="right.uml#_1K5XwM7cEeSqqOMGqhj_Zg"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_1K6l487cEeSqqOMGqhj_Zg" type="8510">
+ <element xmi:type="uml:Class" href="right.uml#_1K5XwM7cEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_1K6l5M7cEeSqqOMGqhj_Zg" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_1K6l5c7cEeSqqOMGqhj_Zg" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_1K6l5s7cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_1K6l587cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_1K6l6M7cEeSqqOMGqhj_Zg"/>
+ <element xmi:type="uml:Class" href="right.uml#_1K5XwM7cEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1K6l6c7cEeSqqOMGqhj_Zg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_1K6l6s7cEeSqqOMGqhj_Zg" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_1K6l687cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_1K6l7M7cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_1K6l7c7cEeSqqOMGqhj_Zg"/>
+ <element xmi:type="uml:Class" href="right.uml#_1K5XwM7cEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1K6l7s7cEeSqqOMGqhj_Zg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_1K6l787cEeSqqOMGqhj_Zg" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_1K6l8M7cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_1K6l8c7cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_1K6l8s7cEeSqqOMGqhj_Zg"/>
+ <element xmi:type="uml:Class" href="right.uml#_1K5XwM7cEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1K6l887cEeSqqOMGqhj_Zg"/>
+ </children>
+ <element xmi:type="uml:Class" href="right.uml#_1K5XwM7cEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1K6l4c7cEeSqqOMGqhj_Zg" x="350" y="72"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_TX4o4M7fEeSqqOMGqhj_Zg" type="2008">
+ <children xmi:type="notation:DecorationNode" xmi:id="_TX4o4s7fEeSqqOMGqhj_Zg" type="5029">
+ <element xmi:type="uml:Class" href="right.uml#_TX3awM7fEeSqqOMGqhj_Zg"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_TX4o487fEeSqqOMGqhj_Zg" type="8510">
+ <element xmi:type="uml:Class" href="right.uml#_TX3awM7fEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_TX4o5M7fEeSqqOMGqhj_Zg" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_TX4o5c7fEeSqqOMGqhj_Zg" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_TX4o5s7fEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_TX4o587fEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_TX4o6M7fEeSqqOMGqhj_Zg"/>
+ <element xmi:type="uml:Class" href="right.uml#_TX3awM7fEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_TX4o6c7fEeSqqOMGqhj_Zg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_TX4o6s7fEeSqqOMGqhj_Zg" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_TX4o687fEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_TX4o7M7fEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_TX4o7c7fEeSqqOMGqhj_Zg"/>
+ <element xmi:type="uml:Class" href="right.uml#_TX3awM7fEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_TX4o7s7fEeSqqOMGqhj_Zg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_TX4o787fEeSqqOMGqhj_Zg" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_TX4o8M7fEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_TX4o8c7fEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_TX4o8s7fEeSqqOMGqhj_Zg"/>
+ <element xmi:type="uml:Class" href="right.uml#_TX3awM7fEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_TX4o887fEeSqqOMGqhj_Zg"/>
+ </children>
+ <element xmi:type="uml:Class" href="right.uml#_TX3awM7fEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_TX4o4c7fEeSqqOMGqhj_Zg" x="349" y="243"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_CkYvcM_wEeS6X8bMfB-bzg" type="2008">
+ <children xmi:type="notation:DecorationNode" xmi:id="_CkakoM_wEeS6X8bMfB-bzg" type="5029">
+ <element xmi:type="uml:Class" href="right.uml#_Cha7AM_wEeS6X8bMfB-bzg"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Ckakoc_wEeS6X8bMfB-bzg" type="8510">
+ <element xmi:type="uml:Class" href="right.uml#_Cha7AM_wEeS6X8bMfB-bzg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Ckakos_wEeS6X8bMfB-bzg" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_CkbLsM_wEeS6X8bMfB-bzg" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_CkbLsc_wEeS6X8bMfB-bzg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_CkbLss_wEeS6X8bMfB-bzg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_CkbLs8_wEeS6X8bMfB-bzg"/>
+ <element xmi:type="uml:Class" href="right.uml#_Cha7AM_wEeS6X8bMfB-bzg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CkbLtM_wEeS6X8bMfB-bzg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_CkbLtc_wEeS6X8bMfB-bzg" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_CkbLts_wEeS6X8bMfB-bzg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_CkbLt8_wEeS6X8bMfB-bzg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_CkbLuM_wEeS6X8bMfB-bzg"/>
+ <element xmi:type="uml:Class" href="right.uml#_Cha7AM_wEeS6X8bMfB-bzg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CkbLuc_wEeS6X8bMfB-bzg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_CkbLus_wEeS6X8bMfB-bzg" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_CkbLu8_wEeS6X8bMfB-bzg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_CkbLvM_wEeS6X8bMfB-bzg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_CkbLvc_wEeS6X8bMfB-bzg"/>
+ <element xmi:type="uml:Class" href="right.uml#_Cha7AM_wEeS6X8bMfB-bzg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CkbLvs_wEeS6X8bMfB-bzg"/>
+ </children>
+ <element xmi:type="uml:Class" href="right.uml#_Cha7AM_wEeS6X8bMfB-bzg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CkYvcc_wEeS6X8bMfB-bzg" x="83" y="249"/>
+ </children>
+ <styles xmi:type="notation:StringValueStyle" xmi:id="_zmK1oc7cEeSqqOMGqhj_Zg" name="diagram_compatibility_version" stringValue="1.0.0"/>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_zmK1os7cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="style:PapyrusViewStyle" xmi:id="_zmK1o87cEeSqqOMGqhj_Zg">
+ <owner xmi:type="uml:Model" href="right.uml#_soPaMM7cEeSqqOMGqhj_Zg"/>
+ </styles>
+ <element xmi:type="uml:Model" href="right.uml#_soPaMM7cEeSqqOMGqhj_Zg"/>
+ <edges xmi:type="notation:Connector" xmi:id="_38pGoM7cEeSqqOMGqhj_Zg" type="4001" source="_0noSoM7cEeSqqOMGqhj_Zg" target="_1K6l4M7cEeSqqOMGqhj_Zg">
+ <children xmi:type="notation:DecorationNode" xmi:id="_38pGo87cEeSqqOMGqhj_Zg" type="6001">
+ <element xmi:type="uml:Association" href="right.uml#_38mDUM7cEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_38pGpM7cEeSqqOMGqhj_Zg" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_38pGpc7cEeSqqOMGqhj_Zg" type="6002">
+ <element xmi:type="uml:Association" href="right.uml#_38mDUM7cEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_38pGps7cEeSqqOMGqhj_Zg" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_38pGp87cEeSqqOMGqhj_Zg" type="6003">
+ <element xmi:type="uml:Association" href="right.uml#_38mDUM7cEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_38pGqM7cEeSqqOMGqhj_Zg" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_38ptsM7cEeSqqOMGqhj_Zg" type="6005">
+ <element xmi:type="uml:Association" href="right.uml#_38mDUM7cEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_38ptsc7cEeSqqOMGqhj_Zg" x="-14" y="31"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_38ptss7cEeSqqOMGqhj_Zg" type="6033">
+ <element xmi:type="uml:Association" href="right.uml#_38mDUM7cEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_38pts87cEeSqqOMGqhj_Zg" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_38pttM7cEeSqqOMGqhj_Zg" type="6034">
+ <element xmi:type="uml:Association" href="right.uml#_38mDUM7cEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_38pttc7cEeSqqOMGqhj_Zg" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_38pGoc7cEeSqqOMGqhj_Zg"/>
+ <element xmi:type="uml:Association" href="right.uml#_38mDUM7cEeSqqOMGqhj_Zg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_38pGos7cEeSqqOMGqhj_Zg" points="[50, -8, -219, -6]$[219, -8, -50, -6]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_Wp4vkNLZEeSzBO7rhIZWOw" type="4001" source="_CkYvcM_wEeS6X8bMfB-bzg" target="_0noSoM7cEeSqqOMGqhj_Zg">
+ <children xmi:type="notation:DecorationNode" xmi:id="_Wp5WoNLZEeSzBO7rhIZWOw" type="6001">
+ <element xmi:type="uml:Association" href="right.uml#_WpmbsNLZEeSzBO7rhIZWOw"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Wp5WodLZEeSzBO7rhIZWOw" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Wp5WotLZEeSzBO7rhIZWOw" type="6002">
+ <element xmi:type="uml:Association" href="right.uml#_WpmbsNLZEeSzBO7rhIZWOw"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Wp5Wo9LZEeSzBO7rhIZWOw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Wp5WpNLZEeSzBO7rhIZWOw" type="6003">
+ <element xmi:type="uml:Association" href="right.uml#_WpmbsNLZEeSzBO7rhIZWOw"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Wp5WpdLZEeSzBO7rhIZWOw" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Wp59sNLZEeSzBO7rhIZWOw" type="6005">
+ <element xmi:type="uml:Association" href="right.uml#_WpmbsNLZEeSzBO7rhIZWOw"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Wp59sdLZEeSzBO7rhIZWOw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Wp59stLZEeSzBO7rhIZWOw" type="6033">
+ <element xmi:type="uml:Association" href="right.uml#_WpmbsNLZEeSzBO7rhIZWOw"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Wp59s9LZEeSzBO7rhIZWOw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Wp59tNLZEeSzBO7rhIZWOw" type="6034">
+ <element xmi:type="uml:Association" href="right.uml#_WpmbsNLZEeSzBO7rhIZWOw"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Wp59tdLZEeSzBO7rhIZWOw" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_Wp4vkdLZEeSzBO7rhIZWOw"/>
+ <element xmi:type="uml:Association" href="right.uml#_WpmbsNLZEeSzBO7rhIZWOw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Wp4vktLZEeSzBO7rhIZWOw" points="[50, -3, -216, 3]$[269, -56, 3, -50]"/>
+ </edges>
+ </notation:Diagram>
+ <css:ModelStyleSheets xmi:id="_SsK80NLZEeSzBO7rhIZWOw"/>
+</xmi:XMI>
diff --git a/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/threeway/c1/right.uml b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/threeway/c1/right.uml
new file mode 100644
index 000000000..3a88004dd
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/threeway/c1/right.uml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<uml:Model xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xmi:id="_soPaMM7cEeSqqOMGqhj_Zg" name="model">
+ <packagedElement xmi:type="uml:Class" xmi:id="_0nM00M7cEeSqqOMGqhj_Zg" name="Class1"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_1K5XwM7cEeSqqOMGqhj_Zg" name="Class2"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_38mDUM7cEeSqqOMGqhj_Zg" memberEnd="_38mDUc7cEeSqqOMGqhj_Zg _38lcQM7cEeSqqOMGqhj_Zg">
+ <name xsi:nil="true"/>
+ <ownedEnd xmi:type="uml:Property" xmi:id="_38mDUc7cEeSqqOMGqhj_Zg" name="class1" type="_0nM00M7cEeSqqOMGqhj_Zg" association="_38mDUM7cEeSqqOMGqhj_Zg">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_38mDUs7cEeSqqOMGqhj_Zg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_38mDU87cEeSqqOMGqhj_Zg" value="1"/>
+ </ownedEnd>
+ <ownedEnd xmi:type="uml:Property" xmi:id="_38lcQM7cEeSqqOMGqhj_Zg" name="someRole" type="_1K5XwM7cEeSqqOMGqhj_Zg" association="_38mDUM7cEeSqqOMGqhj_Zg">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_38lcQc7cEeSqqOMGqhj_Zg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_38lcQs7cEeSqqOMGqhj_Zg" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_TX3awM7fEeSqqOMGqhj_Zg" name="Class3"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_Cha7AM_wEeS6X8bMfB-bzg" name="Class4">
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_Wpl0oNLZEeSzBO7rhIZWOw" name="otherRole" type="_0nM00M7cEeSqqOMGqhj_Zg" association="_WpmbsNLZEeSzBO7rhIZWOw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Wpl0odLZEeSzBO7rhIZWOw" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Wpl0otLZEeSzBO7rhIZWOw" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_WpmbsNLZEeSzBO7rhIZWOw" memberEnd="_WpmbsdLZEeSzBO7rhIZWOw _Wpl0oNLZEeSzBO7rhIZWOw">
+ <name xsi:nil="true"/>
+ <ownedEnd xmi:type="uml:Property" xmi:id="_WpmbsdLZEeSzBO7rhIZWOw" name="class4" type="_Cha7AM_wEeS6X8bMfB-bzg" association="_WpmbsNLZEeSzBO7rhIZWOw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_WpmbstLZEeSzBO7rhIZWOw" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Wpmbs9LZEeSzBO7rhIZWOw" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+</uml:Model>
diff --git a/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/threeway/t1/ancestor.di b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/threeway/t1/ancestor.di
new file mode 100644
index 000000000..8634d4c00
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/threeway/t1/ancestor.di
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI"/>
diff --git a/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/threeway/t1/ancestor.notation b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/threeway/t1/ancestor.notation
new file mode 100644
index 000000000..7b7e6d304
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/threeway/t1/ancestor.notation
@@ -0,0 +1,99 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:css="http://www.eclipse.org/papyrus/infra/gmfdiag/css" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmlns:style="http://www.eclipse.org/papyrus/infra/viewpoints/policy/style" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML">
+ <notation:Diagram xmi:id="_qC9nsLwdEeSIRf-5f0gG0g" type="PapyrusUMLStateMachineDiagram" name="NewDiagram" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_qC9nsbwdEeSIRf-5f0gG0g" type="2000">
+ <children xmi:type="notation:DecorationNode" xmi:id="_qC9nsrwdEeSIRf-5f0gG0g" type="2001">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_qC9ns7wdEeSIRf-5f0gG0g" width="700" height="30"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_qC9ntLwdEeSIRf-5f0gG0g" type="2002">
+ <children xmi:type="notation:Shape" xmi:id="_qC9ntbwdEeSIRf-5f0gG0g" type="3000">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_qC9ntrwdEeSIRf-5f0gG0g" source="RegionAnnotationKey">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qC9nt7wdEeSIRf-5f0gG0g" key="RegionZoneKey" value=""/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_qC9nuLwdEeSIRf-5f0gG0g" type="3002">
+ <children xmi:type="notation:Shape" xmi:id="_zf4R0MjFEeSlR5E9fXQsvA" type="6000">
+ <children xmi:type="notation:DecorationNode" xmi:id="_zf5f8MjFEeSlR5E9fXQsvA" type="6001">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1aMCYMjFEeSlR5E9fXQsvA" width="203"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_zf5f8cjFEeSlR5E9fXQsvA" type="6002">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zf5f8sjFEeSlR5E9fXQsvA" y="-1" width="203"/>
+ </children>
+ <element xmi:type="uml:State" href="ancestor.uml#_zfvH4MjFEeSlR5E9fXQsvA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zf4R0cjFEeSlR5E9fXQsvA" x="112" y="66" width="203" height="69"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_1w1AwMjFEeSlR5E9fXQsvA" type="6000">
+ <children xmi:type="notation:DecorationNode" xmi:id="_1w1n0MjFEeSlR5E9fXQsvA" type="6001">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_2GKXkMjFEeSlR5E9fXQsvA" width="169"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_1w1n0cjFEeSlR5E9fXQsvA" type="6002">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1w1n0sjFEeSlR5E9fXQsvA" y="-1" width="169"/>
+ </children>
+ <element xmi:type="uml:State" href="ancestor.uml#_1wykgMjFEeSlR5E9fXQsvA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1w1AwcjFEeSlR5E9fXQsvA" x="397" y="12" width="169" height="62"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3noKUMjFEeSlR5E9fXQsvA" type="6000">
+ <children xmi:type="notation:DecorationNode" xmi:id="_3noKUsjFEeSlR5E9fXQsvA" type="6001"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3noxYMjFEeSlR5E9fXQsvA" type="6002">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3noxYcjFEeSlR5E9fXQsvA"/>
+ </children>
+ <element xmi:type="uml:State" href="ancestor.uml#_3nluEMjFEeSlR5E9fXQsvA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3noKUcjFEeSlR5E9fXQsvA" x="401" y="113" width="157" height="73"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_l32-YNIEEeSvO5owlqm60A" type="6000">
+ <children xmi:type="notation:DecorationNode" xmi:id="_l34MgNIEEeSvO5owlqm60A" type="6001"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_l34MgdIEEeSvO5owlqm60A" type="19003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_l34zkNIEEeSvO5owlqm60A" x="40"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_l34zkdIEEeSvO5owlqm60A" type="6002">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_l34zktIEEeSvO5owlqm60A"/>
+ </children>
+ <element xmi:type="uml:State" href="ancestor.uml#_l3kqgNIEEeSvO5owlqm60A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_l32-YdIEEeSvO5owlqm60A" x="157" y="183" width="154" height="74"/>
+ </children>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_qC9nubwdEeSIRf-5f0gG0g"/>
+ </children>
+ <element xmi:type="uml:Region" href="ancestor.uml#_qC4IILwdEeSIRf-5f0gG0g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_qC9nurwdEeSIRf-5f0gG0g" width="700" height="287"/>
+ </children>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_qC9nu7wdEeSIRf-5f0gG0g" y="30" width="700" height="287"/>
+ </children>
+ <element xmi:type="uml:StateMachine" href="ancestor.uml#_qCgUsLwdEeSIRf-5f0gG0g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_qC9nvLwdEeSIRf-5f0gG0g" x="30" y="30" width="700" height="317"/>
+ </children>
+ <styles xmi:type="notation:StringValueStyle" xmi:id="_qC9nvbwdEeSIRf-5f0gG0g" name="diagram_compatibility_version" stringValue="1.0.0"/>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_qC9nvrwdEeSIRf-5f0gG0g"/>
+ <styles xmi:type="style:PapyrusViewStyle" xmi:id="_qC9nv7wdEeSIRf-5f0gG0g">
+ <owner xmi:type="uml:Model" href="ancestor.uml#_qBqAILwdEeSIRf-5f0gG0g"/>
+ </styles>
+ <element xmi:type="uml:StateMachine" href="ancestor.uml#_qCgUsLwdEeSIRf-5f0gG0g"/>
+ <edges xmi:type="notation:Connector" xmi:id="_4tqlUMjFEeSlR5E9fXQsvA" type="7000" source="_zf4R0MjFEeSlR5E9fXQsvA" target="_1w1AwMjFEeSlR5E9fXQsvA">
+ <children xmi:type="notation:DecorationNode" xmi:id="_4trMYMjFEeSlR5E9fXQsvA" type="7001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_4trzcMjFEeSlR5E9fXQsvA"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_4trzccjFEeSlR5E9fXQsvA" type="7002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_4trzcsjFEeSlR5E9fXQsvA"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_4trzc8jFEeSlR5E9fXQsvA" type="7003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_4trzdMjFEeSlR5E9fXQsvA" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_4tqlUcjFEeSlR5E9fXQsvA"/>
+ <element xmi:type="uml:Transition" href="ancestor.uml#_4rv5wMjFEeSlR5E9fXQsvA"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_4tqlUsjFEeSlR5E9fXQsvA" points="[8, -3, -98, 33]$[90, -33, -16, 3]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_62v1QNLXEeSzBO7rhIZWOw" type="7000" source="_zf4R0MjFEeSlR5E9fXQsvA" target="_l32-YNIEEeSvO5owlqm60A">
+ <children xmi:type="notation:DecorationNode" xmi:id="_62v1Q9LXEeSzBO7rhIZWOw" type="7001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_62v1RNLXEeSzBO7rhIZWOw"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_62v1RdLXEeSzBO7rhIZWOw" type="7002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_62v1RtLXEeSzBO7rhIZWOw"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_62wcUNLXEeSzBO7rhIZWOw" type="7003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_62wcUdLXEeSzBO7rhIZWOw" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_62v1QdLXEeSzBO7rhIZWOw"/>
+ <element xmi:type="uml:Transition" href="ancestor.uml#_62rj0NLXEeSzBO7rhIZWOw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_62v1QtLXEeSzBO7rhIZWOw" points="[7, 35, -14, -85]$[26, 157, 5, 37]"/>
+ </edges>
+ </notation:Diagram>
+ <css:ModelStyleSheets xmi:id="_ksNDkNIEEeSvO5owlqm60A"/>
+</xmi:XMI>
diff --git a/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/threeway/t1/ancestor.uml b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/threeway/t1/ancestor.uml
new file mode 100644
index 000000000..03e0efcdc
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/threeway/t1/ancestor.uml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<uml:Model xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xmi:id="_qBqAILwdEeSIRf-5f0gG0g" name="model">
+ <packagedElement xmi:type="uml:StateMachine" xmi:id="_qCgUsLwdEeSIRf-5f0gG0g" name="StateMachine1">
+ <region xmi:type="uml:Region" xmi:id="_qC4IILwdEeSIRf-5f0gG0g" name="Region1">
+ <transition xmi:type="uml:Transition" xmi:id="_4rv5wMjFEeSlR5E9fXQsvA" source="_zfvH4MjFEeSlR5E9fXQsvA" target="_1wykgMjFEeSlR5E9fXQsvA"/>
+ <transition xmi:type="uml:Transition" xmi:id="_62rj0NLXEeSzBO7rhIZWOw" source="_zfvH4MjFEeSlR5E9fXQsvA" target="_l3kqgNIEEeSvO5owlqm60A"/>
+ <subvertex xmi:type="uml:State" xmi:id="_zfvH4MjFEeSlR5E9fXQsvA" name="State1"/>
+ <subvertex xmi:type="uml:State" xmi:id="_1wykgMjFEeSlR5E9fXQsvA" name="State2"/>
+ <subvertex xmi:type="uml:State" xmi:id="_3nluEMjFEeSlR5E9fXQsvA" name="State3"/>
+ <subvertex xmi:type="uml:State" xmi:id="_l3kqgNIEEeSvO5owlqm60A" name="State4"/>
+ </region>
+ </packagedElement>
+</uml:Model>
diff --git a/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/threeway/t1/left.di b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/threeway/t1/left.di
new file mode 100644
index 000000000..8634d4c00
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/threeway/t1/left.di
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI"/>
diff --git a/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/threeway/t1/left.notation b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/threeway/t1/left.notation
new file mode 100644
index 000000000..984b832d0
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/threeway/t1/left.notation
@@ -0,0 +1,119 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:css="http://www.eclipse.org/papyrus/infra/gmfdiag/css" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmlns:style="http://www.eclipse.org/papyrus/infra/viewpoints/policy/style" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML">
+ <notation:Diagram xmi:id="_qC9nsLwdEeSIRf-5f0gG0g" type="PapyrusUMLStateMachineDiagram" name="NewDiagram" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_qC9nsbwdEeSIRf-5f0gG0g" type="2000">
+ <children xmi:type="notation:DecorationNode" xmi:id="_qC9nsrwdEeSIRf-5f0gG0g" type="2001">
+ <element xmi:type="uml:StateMachine" href="left.uml#_qCgUsLwdEeSIRf-5f0gG0g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_qC9ns7wdEeSIRf-5f0gG0g" width="700" height="30"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_qC9ntLwdEeSIRf-5f0gG0g" type="2002">
+ <children xmi:type="notation:Shape" xmi:id="_qC9ntbwdEeSIRf-5f0gG0g" type="3000">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_qC9ntrwdEeSIRf-5f0gG0g" source="RegionAnnotationKey">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qC9nt7wdEeSIRf-5f0gG0g" key="RegionZoneKey" value=""/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_qC9nuLwdEeSIRf-5f0gG0g" type="3002">
+ <children xmi:type="notation:Shape" xmi:id="_zf4R0MjFEeSlR5E9fXQsvA" type="6000">
+ <children xmi:type="notation:DecorationNode" xmi:id="_zf5f8MjFEeSlR5E9fXQsvA" type="6001">
+ <element xmi:type="uml:State" href="left.uml#_zfvH4MjFEeSlR5E9fXQsvA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1aMCYMjFEeSlR5E9fXQsvA" width="203"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_zf5f8cjFEeSlR5E9fXQsvA" type="6002">
+ <element xmi:type="uml:State" href="left.uml#_zfvH4MjFEeSlR5E9fXQsvA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zf5f8sjFEeSlR5E9fXQsvA" y="-1" width="203"/>
+ </children>
+ <element xmi:type="uml:State" href="left.uml#_zfvH4MjFEeSlR5E9fXQsvA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zf4R0cjFEeSlR5E9fXQsvA" x="112" y="66" width="203" height="69"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_1w1AwMjFEeSlR5E9fXQsvA" type="6000">
+ <children xmi:type="notation:DecorationNode" xmi:id="_1w1n0MjFEeSlR5E9fXQsvA" type="6001">
+ <element xmi:type="uml:State" href="left.uml#_1wykgMjFEeSlR5E9fXQsvA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_2GKXkMjFEeSlR5E9fXQsvA" width="169"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_1w1n0cjFEeSlR5E9fXQsvA" type="6002">
+ <element xmi:type="uml:State" href="left.uml#_1wykgMjFEeSlR5E9fXQsvA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1w1n0sjFEeSlR5E9fXQsvA" y="-1" width="169"/>
+ </children>
+ <element xmi:type="uml:State" href="left.uml#_1wykgMjFEeSlR5E9fXQsvA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1w1AwcjFEeSlR5E9fXQsvA" x="397" y="12" width="169" height="62"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3noKUMjFEeSlR5E9fXQsvA" type="6000">
+ <children xmi:type="notation:DecorationNode" xmi:id="_3noKUsjFEeSlR5E9fXQsvA" type="6001">
+ <element xmi:type="uml:State" href="left.uml#_3nluEMjFEeSlR5E9fXQsvA"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3noxYMjFEeSlR5E9fXQsvA" type="6002">
+ <element xmi:type="uml:State" href="left.uml#_3nluEMjFEeSlR5E9fXQsvA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3noxYcjFEeSlR5E9fXQsvA"/>
+ </children>
+ <element xmi:type="uml:State" href="left.uml#_3nluEMjFEeSlR5E9fXQsvA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3noKUcjFEeSlR5E9fXQsvA" x="401" y="113" width="157" height="73"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_l32-YNIEEeSvO5owlqm60A" type="6000">
+ <children xmi:type="notation:DecorationNode" xmi:id="_l34MgNIEEeSvO5owlqm60A" type="6001">
+ <element xmi:type="uml:State" href="left.uml#_l3kqgNIEEeSvO5owlqm60A"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_l34MgdIEEeSvO5owlqm60A" type="19003">
+ <element xmi:type="uml:State" href="left.uml#_l3kqgNIEEeSvO5owlqm60A"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_l34zkNIEEeSvO5owlqm60A" x="40"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_l34zkdIEEeSvO5owlqm60A" type="6002">
+ <element xmi:type="uml:State" href="left.uml#_l3kqgNIEEeSvO5owlqm60A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_l34zktIEEeSvO5owlqm60A"/>
+ </children>
+ <element xmi:type="uml:State" href="left.uml#_l3kqgNIEEeSvO5owlqm60A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_l32-YdIEEeSvO5owlqm60A" x="157" y="183" width="154" height="74"/>
+ </children>
+ <element xmi:type="uml:Region" href="left.uml#_qC4IILwdEeSIRf-5f0gG0g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_qC9nubwdEeSIRf-5f0gG0g"/>
+ </children>
+ <element xmi:type="uml:Region" href="left.uml#_qC4IILwdEeSIRf-5f0gG0g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_qC9nurwdEeSIRf-5f0gG0g" width="700" height="287"/>
+ </children>
+ <element xmi:type="uml:StateMachine" href="left.uml#_qCgUsLwdEeSIRf-5f0gG0g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_qC9nu7wdEeSIRf-5f0gG0g" y="30" width="700" height="287"/>
+ </children>
+ <element xmi:type="uml:StateMachine" href="left.uml#_qCgUsLwdEeSIRf-5f0gG0g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_qC9nvLwdEeSIRf-5f0gG0g" x="30" y="30" width="700" height="317"/>
+ </children>
+ <styles xmi:type="notation:StringValueStyle" xmi:id="_qC9nvbwdEeSIRf-5f0gG0g" name="diagram_compatibility_version" stringValue="1.0.0"/>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_qC9nvrwdEeSIRf-5f0gG0g"/>
+ <styles xmi:type="style:PapyrusViewStyle" xmi:id="_qC9nv7wdEeSIRf-5f0gG0g">
+ <owner xmi:type="uml:Model" href="left.uml#_qBqAILwdEeSIRf-5f0gG0g"/>
+ </styles>
+ <element xmi:type="uml:StateMachine" href="left.uml#_qCgUsLwdEeSIRf-5f0gG0g"/>
+ <edges xmi:type="notation:Connector" xmi:id="_4tqlUMjFEeSlR5E9fXQsvA" type="7000" source="_zf4R0MjFEeSlR5E9fXQsvA" target="_3noKUMjFEeSlR5E9fXQsvA">
+ <children xmi:type="notation:DecorationNode" xmi:id="_4trMYMjFEeSlR5E9fXQsvA" type="7001">
+ <element xmi:type="uml:Transition" href="left.uml#_4rv5wMjFEeSlR5E9fXQsvA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_4trzcMjFEeSlR5E9fXQsvA"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_4trzccjFEeSlR5E9fXQsvA" type="7002">
+ <element xmi:type="uml:Transition" href="left.uml#_4rv5wMjFEeSlR5E9fXQsvA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_4trzcsjFEeSlR5E9fXQsvA"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_4trzc8jFEeSlR5E9fXQsvA" type="7003">
+ <element xmi:type="uml:Transition" href="left.uml#_4rv5wMjFEeSlR5E9fXQsvA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_4trzdMjFEeSlR5E9fXQsvA" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_4tqlUcjFEeSlR5E9fXQsvA"/>
+ <element xmi:type="uml:Transition" href="left.uml#_4rv5wMjFEeSlR5E9fXQsvA"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_4tqlUsjFEeSlR5E9fXQsvA" points="[8, -3, -98, 33]$[90, -33, -16, 3]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_62v1QNLXEeSzBO7rhIZWOw" type="7000" source="_zf4R0MjFEeSlR5E9fXQsvA" target="_l32-YNIEEeSvO5owlqm60A">
+ <children xmi:type="notation:DecorationNode" xmi:id="_62v1Q9LXEeSzBO7rhIZWOw" type="7001">
+ <element xmi:type="uml:Transition" href="left.uml#_62rj0NLXEeSzBO7rhIZWOw"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_62v1RNLXEeSzBO7rhIZWOw"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_62v1RdLXEeSzBO7rhIZWOw" type="7002">
+ <element xmi:type="uml:Transition" href="left.uml#_62rj0NLXEeSzBO7rhIZWOw"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_62v1RtLXEeSzBO7rhIZWOw"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_62wcUNLXEeSzBO7rhIZWOw" type="7003">
+ <element xmi:type="uml:Transition" href="left.uml#_62rj0NLXEeSzBO7rhIZWOw"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_62wcUdLXEeSzBO7rhIZWOw" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_62v1QdLXEeSzBO7rhIZWOw"/>
+ <element xmi:type="uml:Transition" href="left.uml#_62rj0NLXEeSzBO7rhIZWOw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_62v1QtLXEeSzBO7rhIZWOw" points="[7, 35, -14, -85]$[26, 157, 5, 37]"/>
+ </edges>
+ </notation:Diagram>
+ <css:ModelStyleSheets xmi:id="_ksNDkNIEEeSvO5owlqm60A"/>
+</xmi:XMI>
diff --git a/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/threeway/t1/left.uml b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/threeway/t1/left.uml
new file mode 100644
index 000000000..0a94bbc75
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/threeway/t1/left.uml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<uml:Model xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xmi:id="_qBqAILwdEeSIRf-5f0gG0g" name="model">
+ <packagedElement xmi:type="uml:StateMachine" xmi:id="_qCgUsLwdEeSIRf-5f0gG0g" name="StateMachine1">
+ <region xmi:type="uml:Region" xmi:id="_qC4IILwdEeSIRf-5f0gG0g" name="Region1">
+ <transition xmi:type="uml:Transition" xmi:id="_4rv5wMjFEeSlR5E9fXQsvA" source="_zfvH4MjFEeSlR5E9fXQsvA" target="_3nluEMjFEeSlR5E9fXQsvA"/>
+ <transition xmi:type="uml:Transition" xmi:id="_62rj0NLXEeSzBO7rhIZWOw" source="_zfvH4MjFEeSlR5E9fXQsvA" target="_l3kqgNIEEeSvO5owlqm60A"/>
+ <subvertex xmi:type="uml:State" xmi:id="_zfvH4MjFEeSlR5E9fXQsvA" name="State1"/>
+ <subvertex xmi:type="uml:State" xmi:id="_1wykgMjFEeSlR5E9fXQsvA" name="State2"/>
+ <subvertex xmi:type="uml:State" xmi:id="_3nluEMjFEeSlR5E9fXQsvA" name="State3"/>
+ <subvertex xmi:type="uml:State" xmi:id="_l3kqgNIEEeSvO5owlqm60A" name="State4"/>
+ </region>
+ </packagedElement>
+</uml:Model>
diff --git a/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/threeway/t1/package-info.java b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/threeway/t1/package-info.java
new file mode 100644
index 000000000..94f60256e
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/threeway/t1/package-info.java
@@ -0,0 +1,18 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+
+/**
+ * This package contains test data for the case of an existing transition whose source
+ * or target is changed in a branch.
+ *
+ * @author <a href="mailto:laurent.delaigue@obeo.fr">Laurent Delaigue</a>
+ */
+package org.eclipse.emf.compare.diagram.papyrus.tests.merge.data.assocs.threeway.t1; \ No newline at end of file
diff --git a/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/threeway/t1/right.di b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/threeway/t1/right.di
new file mode 100644
index 000000000..8634d4c00
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/threeway/t1/right.di
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI"/>
diff --git a/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/threeway/t1/right.notation b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/threeway/t1/right.notation
new file mode 100644
index 000000000..52addc825
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/threeway/t1/right.notation
@@ -0,0 +1,119 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:css="http://www.eclipse.org/papyrus/infra/gmfdiag/css" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmlns:style="http://www.eclipse.org/papyrus/infra/viewpoints/policy/style" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML">
+ <notation:Diagram xmi:id="_qC9nsLwdEeSIRf-5f0gG0g" type="PapyrusUMLStateMachineDiagram" name="NewDiagram" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_qC9nsbwdEeSIRf-5f0gG0g" type="2000">
+ <children xmi:type="notation:DecorationNode" xmi:id="_qC9nsrwdEeSIRf-5f0gG0g" type="2001">
+ <element xmi:type="uml:StateMachine" href="right.uml#_qCgUsLwdEeSIRf-5f0gG0g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_qC9ns7wdEeSIRf-5f0gG0g" width="700" height="30"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_qC9ntLwdEeSIRf-5f0gG0g" type="2002">
+ <children xmi:type="notation:Shape" xmi:id="_qC9ntbwdEeSIRf-5f0gG0g" type="3000">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_qC9ntrwdEeSIRf-5f0gG0g" source="RegionAnnotationKey">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qC9nt7wdEeSIRf-5f0gG0g" key="RegionZoneKey" value=""/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_qC9nuLwdEeSIRf-5f0gG0g" type="3002">
+ <children xmi:type="notation:Shape" xmi:id="_zf4R0MjFEeSlR5E9fXQsvA" type="6000">
+ <children xmi:type="notation:DecorationNode" xmi:id="_zf5f8MjFEeSlR5E9fXQsvA" type="6001">
+ <element xmi:type="uml:State" href="right.uml#_zfvH4MjFEeSlR5E9fXQsvA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1aMCYMjFEeSlR5E9fXQsvA" width="203"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_zf5f8cjFEeSlR5E9fXQsvA" type="6002">
+ <element xmi:type="uml:State" href="right.uml#_zfvH4MjFEeSlR5E9fXQsvA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zf5f8sjFEeSlR5E9fXQsvA" y="-1" width="203"/>
+ </children>
+ <element xmi:type="uml:State" href="right.uml#_zfvH4MjFEeSlR5E9fXQsvA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zf4R0cjFEeSlR5E9fXQsvA" x="112" y="66" width="203" height="69"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_1w1AwMjFEeSlR5E9fXQsvA" type="6000">
+ <children xmi:type="notation:DecorationNode" xmi:id="_1w1n0MjFEeSlR5E9fXQsvA" type="6001">
+ <element xmi:type="uml:State" href="right.uml#_1wykgMjFEeSlR5E9fXQsvA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_2GKXkMjFEeSlR5E9fXQsvA" width="169"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_1w1n0cjFEeSlR5E9fXQsvA" type="6002">
+ <element xmi:type="uml:State" href="right.uml#_1wykgMjFEeSlR5E9fXQsvA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1w1n0sjFEeSlR5E9fXQsvA" y="-1" width="169"/>
+ </children>
+ <element xmi:type="uml:State" href="right.uml#_1wykgMjFEeSlR5E9fXQsvA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1w1AwcjFEeSlR5E9fXQsvA" x="397" y="12" width="169" height="62"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3noKUMjFEeSlR5E9fXQsvA" type="6000">
+ <children xmi:type="notation:DecorationNode" xmi:id="_3noKUsjFEeSlR5E9fXQsvA" type="6001">
+ <element xmi:type="uml:State" href="right.uml#_3nluEMjFEeSlR5E9fXQsvA"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3noxYMjFEeSlR5E9fXQsvA" type="6002">
+ <element xmi:type="uml:State" href="right.uml#_3nluEMjFEeSlR5E9fXQsvA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3noxYcjFEeSlR5E9fXQsvA"/>
+ </children>
+ <element xmi:type="uml:State" href="right.uml#_3nluEMjFEeSlR5E9fXQsvA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3noKUcjFEeSlR5E9fXQsvA" x="401" y="113" width="157" height="73"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_l32-YNIEEeSvO5owlqm60A" type="6000">
+ <children xmi:type="notation:DecorationNode" xmi:id="_l34MgNIEEeSvO5owlqm60A" type="6001">
+ <element xmi:type="uml:State" href="right.uml#_l3kqgNIEEeSvO5owlqm60A"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_l34MgdIEEeSvO5owlqm60A" type="19003">
+ <element xmi:type="uml:State" href="right.uml#_l3kqgNIEEeSvO5owlqm60A"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_l34zkNIEEeSvO5owlqm60A" x="40"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_l34zkdIEEeSvO5owlqm60A" type="6002">
+ <element xmi:type="uml:State" href="right.uml#_l3kqgNIEEeSvO5owlqm60A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_l34zktIEEeSvO5owlqm60A"/>
+ </children>
+ <element xmi:type="uml:State" href="right.uml#_l3kqgNIEEeSvO5owlqm60A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_l32-YdIEEeSvO5owlqm60A" x="157" y="183" width="154" height="74"/>
+ </children>
+ <element xmi:type="uml:Region" href="right.uml#_qC4IILwdEeSIRf-5f0gG0g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_qC9nubwdEeSIRf-5f0gG0g"/>
+ </children>
+ <element xmi:type="uml:Region" href="right.uml#_qC4IILwdEeSIRf-5f0gG0g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_qC9nurwdEeSIRf-5f0gG0g" width="700" height="287"/>
+ </children>
+ <element xmi:type="uml:StateMachine" href="right.uml#_qCgUsLwdEeSIRf-5f0gG0g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_qC9nu7wdEeSIRf-5f0gG0g" y="30" width="700" height="287"/>
+ </children>
+ <element xmi:type="uml:StateMachine" href="right.uml#_qCgUsLwdEeSIRf-5f0gG0g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_qC9nvLwdEeSIRf-5f0gG0g" x="30" y="30" width="700" height="317"/>
+ </children>
+ <styles xmi:type="notation:StringValueStyle" xmi:id="_qC9nvbwdEeSIRf-5f0gG0g" name="diagram_compatibility_version" stringValue="1.0.0"/>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_qC9nvrwdEeSIRf-5f0gG0g"/>
+ <styles xmi:type="style:PapyrusViewStyle" xmi:id="_qC9nv7wdEeSIRf-5f0gG0g">
+ <owner xmi:type="uml:Model" href="right.uml#_qBqAILwdEeSIRf-5f0gG0g"/>
+ </styles>
+ <element xmi:type="uml:StateMachine" href="right.uml#_qCgUsLwdEeSIRf-5f0gG0g"/>
+ <edges xmi:type="notation:Connector" xmi:id="_4tqlUMjFEeSlR5E9fXQsvA" type="7000" source="_zf4R0MjFEeSlR5E9fXQsvA" target="_1w1AwMjFEeSlR5E9fXQsvA">
+ <children xmi:type="notation:DecorationNode" xmi:id="_4trMYMjFEeSlR5E9fXQsvA" type="7001">
+ <element xmi:type="uml:Transition" href="right.uml#_4rv5wMjFEeSlR5E9fXQsvA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_4trzcMjFEeSlR5E9fXQsvA"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_4trzccjFEeSlR5E9fXQsvA" type="7002">
+ <element xmi:type="uml:Transition" href="right.uml#_4rv5wMjFEeSlR5E9fXQsvA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_4trzcsjFEeSlR5E9fXQsvA"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_4trzc8jFEeSlR5E9fXQsvA" type="7003">
+ <element xmi:type="uml:Transition" href="right.uml#_4rv5wMjFEeSlR5E9fXQsvA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_4trzdMjFEeSlR5E9fXQsvA" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_4tqlUcjFEeSlR5E9fXQsvA"/>
+ <element xmi:type="uml:Transition" href="right.uml#_4rv5wMjFEeSlR5E9fXQsvA"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_4tqlUsjFEeSlR5E9fXQsvA" points="[8, -3, -98, 33]$[90, -33, -16, 3]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_62v1QNLXEeSzBO7rhIZWOw" type="7000" source="_3noKUMjFEeSlR5E9fXQsvA" target="_l32-YNIEEeSvO5owlqm60A">
+ <children xmi:type="notation:DecorationNode" xmi:id="_62v1Q9LXEeSzBO7rhIZWOw" type="7001">
+ <element xmi:type="uml:Transition" href="right.uml#_62rj0NLXEeSzBO7rhIZWOw"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_62v1RNLXEeSzBO7rhIZWOw"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_62v1RdLXEeSzBO7rhIZWOw" type="7002">
+ <element xmi:type="uml:Transition" href="right.uml#_62rj0NLXEeSzBO7rhIZWOw"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_62v1RtLXEeSzBO7rhIZWOw"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_62wcUNLXEeSzBO7rhIZWOw" type="7003">
+ <element xmi:type="uml:Transition" href="right.uml#_62rj0NLXEeSzBO7rhIZWOw"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_62wcUdLXEeSzBO7rhIZWOw" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_62v1QdLXEeSzBO7rhIZWOw"/>
+ <element xmi:type="uml:Transition" href="right.uml#_62rj0NLXEeSzBO7rhIZWOw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_62v1QtLXEeSzBO7rhIZWOw" points="[7, 35, -14, -85]$[26, 157, 5, 37]"/>
+ </edges>
+ </notation:Diagram>
+ <css:ModelStyleSheets xmi:id="_ksNDkNIEEeSvO5owlqm60A"/>
+</xmi:XMI>
diff --git a/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/threeway/t1/right.uml b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/threeway/t1/right.uml
new file mode 100644
index 000000000..9048c9649
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/threeway/t1/right.uml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<uml:Model xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xmi:id="_qBqAILwdEeSIRf-5f0gG0g" name="model">
+ <packagedElement xmi:type="uml:StateMachine" xmi:id="_qCgUsLwdEeSIRf-5f0gG0g" name="StateMachine1">
+ <region xmi:type="uml:Region" xmi:id="_qC4IILwdEeSIRf-5f0gG0g" name="Region1">
+ <transition xmi:type="uml:Transition" xmi:id="_4rv5wMjFEeSlR5E9fXQsvA" source="_zfvH4MjFEeSlR5E9fXQsvA" target="_1wykgMjFEeSlR5E9fXQsvA"/>
+ <transition xmi:type="uml:Transition" xmi:id="_62rj0NLXEeSzBO7rhIZWOw" source="_3nluEMjFEeSlR5E9fXQsvA" target="_l3kqgNIEEeSvO5owlqm60A"/>
+ <subvertex xmi:type="uml:State" xmi:id="_zfvH4MjFEeSlR5E9fXQsvA" name="State1"/>
+ <subvertex xmi:type="uml:State" xmi:id="_1wykgMjFEeSlR5E9fXQsvA" name="State2"/>
+ <subvertex xmi:type="uml:State" xmi:id="_3nluEMjFEeSlR5E9fXQsvA" name="State3"/>
+ <subvertex xmi:type="uml:State" xmi:id="_l3kqgNIEEeSvO5owlqm60A" name="State4"/>
+ </region>
+ </packagedElement>
+</uml:Model>
diff --git a/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/twoway/a1/left.di b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/twoway/a1/left.di
new file mode 100644
index 000000000..8634d4c00
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/twoway/a1/left.di
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI"/>
diff --git a/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/twoway/a1/left.notation b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/twoway/a1/left.notation
new file mode 100644
index 000000000..7163f436e
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/twoway/a1/left.notation
@@ -0,0 +1,110 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<notation:Diagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmlns:style="http://www.eclipse.org/papyrus/infra/viewpoints/policy/style" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xmi:id="_zmK1oM7cEeSqqOMGqhj_Zg" type="PapyrusUMLClassDiagram" name="ClassDiagram" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_0noSoM7cEeSqqOMGqhj_Zg" type="2008">
+ <children xmi:type="notation:DecorationNode" xmi:id="_0npgwM7cEeSqqOMGqhj_Zg" type="5029"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_0nqH0M7cEeSqqOMGqhj_Zg" type="8510">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_0nqH0c7cEeSqqOMGqhj_Zg" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_0nrV8M7cEeSqqOMGqhj_Zg" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_0nrV8c7cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_0nrV8s7cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_0nrV887cEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0nrV9M7cEeSqqOMGqhj_Zg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_0nrV9c7cEeSqqOMGqhj_Zg" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_0nrV9s7cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_0nrV987cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_0nrV-M7cEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0nrV-c7cEeSqqOMGqhj_Zg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_0nr9AM7cEeSqqOMGqhj_Zg" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_0nr9Ac7cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_0nr9As7cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_0nr9A87cEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0nr9BM7cEeSqqOMGqhj_Zg"/>
+ </children>
+ <element xmi:type="uml:Class" href="left.uml#_0nM00M7cEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0noSoc7cEeSqqOMGqhj_Zg" x="81" y="74"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_1K6l4M7cEeSqqOMGqhj_Zg" type="2008">
+ <children xmi:type="notation:DecorationNode" xmi:id="_1K6l4s7cEeSqqOMGqhj_Zg" type="5029"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_1K6l487cEeSqqOMGqhj_Zg" type="8510">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_1K6l5M7cEeSqqOMGqhj_Zg" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_1K6l5c7cEeSqqOMGqhj_Zg" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_1K6l5s7cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_1K6l587cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_1K6l6M7cEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1K6l6c7cEeSqqOMGqhj_Zg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_1K6l6s7cEeSqqOMGqhj_Zg" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_1K6l687cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_1K6l7M7cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_1K6l7c7cEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1K6l7s7cEeSqqOMGqhj_Zg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_1K6l787cEeSqqOMGqhj_Zg" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_1K6l8M7cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_1K6l8c7cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_1K6l8s7cEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1K6l887cEeSqqOMGqhj_Zg"/>
+ </children>
+ <element xmi:type="uml:Class" href="left.uml#_1K5XwM7cEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1K6l4c7cEeSqqOMGqhj_Zg" x="350" y="72"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_TX4o4M7fEeSqqOMGqhj_Zg" type="2008">
+ <children xmi:type="notation:DecorationNode" xmi:id="_TX4o4s7fEeSqqOMGqhj_Zg" type="5029"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_TX4o487fEeSqqOMGqhj_Zg" type="8510">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_TX4o5M7fEeSqqOMGqhj_Zg" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_TX4o5c7fEeSqqOMGqhj_Zg" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_TX4o5s7fEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_TX4o587fEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_TX4o6M7fEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_TX4o6c7fEeSqqOMGqhj_Zg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_TX4o6s7fEeSqqOMGqhj_Zg" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_TX4o687fEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_TX4o7M7fEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_TX4o7c7fEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_TX4o7s7fEeSqqOMGqhj_Zg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_TX4o787fEeSqqOMGqhj_Zg" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_TX4o8M7fEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_TX4o8c7fEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_TX4o8s7fEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_TX4o887fEeSqqOMGqhj_Zg"/>
+ </children>
+ <element xmi:type="uml:Class" href="left.uml#_TX3awM7fEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_TX4o4c7fEeSqqOMGqhj_Zg" x="349" y="243"/>
+ </children>
+ <styles xmi:type="notation:StringValueStyle" xmi:id="_zmK1oc7cEeSqqOMGqhj_Zg" name="diagram_compatibility_version" stringValue="1.0.0"/>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_zmK1os7cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="style:PapyrusViewStyle" xmi:id="_zmK1o87cEeSqqOMGqhj_Zg">
+ <owner xmi:type="uml:Model" href="left.uml#_soPaMM7cEeSqqOMGqhj_Zg"/>
+ </styles>
+ <element xmi:type="uml:Model" href="left.uml#_soPaMM7cEeSqqOMGqhj_Zg"/>
+ <edges xmi:type="notation:Connector" xmi:id="_38pGoM7cEeSqqOMGqhj_Zg" type="4001" source="_0noSoM7cEeSqqOMGqhj_Zg" target="_TX4o4M7fEeSqqOMGqhj_Zg">
+ <children xmi:type="notation:DecorationNode" xmi:id="_38pGo87cEeSqqOMGqhj_Zg" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_38pGpM7cEeSqqOMGqhj_Zg" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_38pGpc7cEeSqqOMGqhj_Zg" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_38pGps7cEeSqqOMGqhj_Zg" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_38pGp87cEeSqqOMGqhj_Zg" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_38pGqM7cEeSqqOMGqhj_Zg" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_38ptsM7cEeSqqOMGqhj_Zg" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_38ptsc7cEeSqqOMGqhj_Zg" x="-21" y="31"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_38ptss7cEeSqqOMGqhj_Zg" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_38pts87cEeSqqOMGqhj_Zg" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_38pttM7cEeSqqOMGqhj_Zg" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_38pttc7cEeSqqOMGqhj_Zg" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_38pGoc7cEeSqqOMGqhj_Zg"/>
+ <element xmi:type="uml:Association" href="left.uml#_38mDUM7cEeSqqOMGqhj_Zg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_38pGos7cEeSqqOMGqhj_Zg" points="[50, -8, -219, -6]$[219, -8, -50, -6]"/>
+ </edges>
+</notation:Diagram>
diff --git a/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/twoway/a1/left.uml b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/twoway/a1/left.uml
new file mode 100644
index 000000000..912ac1d40
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/twoway/a1/left.uml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<uml:Model xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xmi:id="_soPaMM7cEeSqqOMGqhj_Zg" name="model">
+ <packagedElement xmi:type="uml:Class" xmi:id="_0nM00M7cEeSqqOMGqhj_Zg" name="Class1">
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_38lcQM7cEeSqqOMGqhj_Zg" name="someRole" type="_TX3awM7fEeSqqOMGqhj_Zg" association="_38mDUM7cEeSqqOMGqhj_Zg">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_38lcQc7cEeSqqOMGqhj_Zg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_38lcQs7cEeSqqOMGqhj_Zg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_1K5XwM7cEeSqqOMGqhj_Zg" name="Class2"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_38mDUM7cEeSqqOMGqhj_Zg" memberEnd="_38mDUc7cEeSqqOMGqhj_Zg _38lcQM7cEeSqqOMGqhj_Zg">
+ <name xsi:nil="true"/>
+ <ownedEnd xmi:type="uml:Property" xmi:id="_38mDUc7cEeSqqOMGqhj_Zg" name="class1" type="_0nM00M7cEeSqqOMGqhj_Zg" association="_38mDUM7cEeSqqOMGqhj_Zg">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_38mDUs7cEeSqqOMGqhj_Zg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_38mDU87cEeSqqOMGqhj_Zg" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_TX3awM7fEeSqqOMGqhj_Zg" name="Class3"/>
+</uml:Model>
diff --git a/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/twoway/a1/package-info.java b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/twoway/a1/package-info.java
new file mode 100644
index 000000000..8e99c2f4f
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/twoway/a1/package-info.java
@@ -0,0 +1,19 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+
+/**
+ * Contains data for the following test case: Two classes C1 and C2 exist, and an association C1 -> C2 exists.
+ * The target property of this assoc is owned by class C1, whereas its source property is owned by the association itself.
+ * In the other model, a class C3 is added, and the association is reconnected to the new class C3.
+ *
+ * @author <a href="mailto:laurent.delaigue@obeo.fr">Laurent Delaigue</a>
+ */
+package org.eclipse.emf.compare.diagram.papyrus.tests.merge.data.assocs.twoway.a1; \ No newline at end of file
diff --git a/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/twoway/a1/right.di b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/twoway/a1/right.di
new file mode 100644
index 000000000..8634d4c00
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/twoway/a1/right.di
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI"/>
diff --git a/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/twoway/a1/right.notation b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/twoway/a1/right.notation
new file mode 100644
index 000000000..fa66bfe3f
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/twoway/a1/right.notation
@@ -0,0 +1,84 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<notation:Diagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmlns:style="http://www.eclipse.org/papyrus/infra/viewpoints/policy/style" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xmi:id="_zmK1oM7cEeSqqOMGqhj_Zg" type="PapyrusUMLClassDiagram" name="ClassDiagram" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_0noSoM7cEeSqqOMGqhj_Zg" type="2008">
+ <children xmi:type="notation:DecorationNode" xmi:id="_0npgwM7cEeSqqOMGqhj_Zg" type="5029"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_0nqH0M7cEeSqqOMGqhj_Zg" type="8510">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_0nqH0c7cEeSqqOMGqhj_Zg" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_0nrV8M7cEeSqqOMGqhj_Zg" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_0nrV8c7cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_0nrV8s7cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_0nrV887cEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0nrV9M7cEeSqqOMGqhj_Zg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_0nrV9c7cEeSqqOMGqhj_Zg" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_0nrV9s7cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_0nrV987cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_0nrV-M7cEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0nrV-c7cEeSqqOMGqhj_Zg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_0nr9AM7cEeSqqOMGqhj_Zg" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_0nr9Ac7cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_0nr9As7cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_0nr9A87cEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0nr9BM7cEeSqqOMGqhj_Zg"/>
+ </children>
+ <element xmi:type="uml:Class" href="right.uml#_0nM00M7cEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0noSoc7cEeSqqOMGqhj_Zg" x="81" y="74"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_1K6l4M7cEeSqqOMGqhj_Zg" type="2008">
+ <children xmi:type="notation:DecorationNode" xmi:id="_1K6l4s7cEeSqqOMGqhj_Zg" type="5029"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_1K6l487cEeSqqOMGqhj_Zg" type="8510">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_1K6l5M7cEeSqqOMGqhj_Zg" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_1K6l5c7cEeSqqOMGqhj_Zg" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_1K6l5s7cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_1K6l587cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_1K6l6M7cEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1K6l6c7cEeSqqOMGqhj_Zg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_1K6l6s7cEeSqqOMGqhj_Zg" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_1K6l687cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_1K6l7M7cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_1K6l7c7cEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1K6l7s7cEeSqqOMGqhj_Zg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_1K6l787cEeSqqOMGqhj_Zg" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_1K6l8M7cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_1K6l8c7cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_1K6l8s7cEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1K6l887cEeSqqOMGqhj_Zg"/>
+ </children>
+ <element xmi:type="uml:Class" href="right.uml#_1K5XwM7cEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1K6l4c7cEeSqqOMGqhj_Zg" x="350" y="72"/>
+ </children>
+ <styles xmi:type="notation:StringValueStyle" xmi:id="_zmK1oc7cEeSqqOMGqhj_Zg" name="diagram_compatibility_version" stringValue="1.0.0"/>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_zmK1os7cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="style:PapyrusViewStyle" xmi:id="_zmK1o87cEeSqqOMGqhj_Zg">
+ <owner xmi:type="uml:Model" href="right.uml#_soPaMM7cEeSqqOMGqhj_Zg"/>
+ </styles>
+ <element xmi:type="uml:Model" href="right.uml#_soPaMM7cEeSqqOMGqhj_Zg"/>
+ <edges xmi:type="notation:Connector" xmi:id="_38pGoM7cEeSqqOMGqhj_Zg" type="4001" source="_0noSoM7cEeSqqOMGqhj_Zg" target="_1K6l4M7cEeSqqOMGqhj_Zg">
+ <children xmi:type="notation:DecorationNode" xmi:id="_38pGo87cEeSqqOMGqhj_Zg" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_38pGpM7cEeSqqOMGqhj_Zg" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_38pGpc7cEeSqqOMGqhj_Zg" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_38pGps7cEeSqqOMGqhj_Zg" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_38pGp87cEeSqqOMGqhj_Zg" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_38pGqM7cEeSqqOMGqhj_Zg" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_38ptsM7cEeSqqOMGqhj_Zg" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_38ptsc7cEeSqqOMGqhj_Zg" x="-21" y="31"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_38ptss7cEeSqqOMGqhj_Zg" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_38pts87cEeSqqOMGqhj_Zg" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_38pttM7cEeSqqOMGqhj_Zg" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_38pttc7cEeSqqOMGqhj_Zg" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_38pGoc7cEeSqqOMGqhj_Zg"/>
+ <element xmi:type="uml:Association" href="right.uml#_38mDUM7cEeSqqOMGqhj_Zg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_38pGos7cEeSqqOMGqhj_Zg" points="[50, -8, -219, -6]$[219, -8, -50, -6]"/>
+ </edges>
+</notation:Diagram>
diff --git a/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/twoway/a1/right.uml b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/twoway/a1/right.uml
new file mode 100644
index 000000000..cdf730634
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/twoway/a1/right.uml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<uml:Model xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xmi:id="_soPaMM7cEeSqqOMGqhj_Zg" name="model">
+ <packagedElement xmi:type="uml:Class" xmi:id="_0nM00M7cEeSqqOMGqhj_Zg" name="Class1">
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_38lcQM7cEeSqqOMGqhj_Zg" name="someRole" type="_1K5XwM7cEeSqqOMGqhj_Zg" association="_38mDUM7cEeSqqOMGqhj_Zg">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_38lcQc7cEeSqqOMGqhj_Zg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_38lcQs7cEeSqqOMGqhj_Zg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_1K5XwM7cEeSqqOMGqhj_Zg" name="Class2"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_38mDUM7cEeSqqOMGqhj_Zg" memberEnd="_38mDUc7cEeSqqOMGqhj_Zg _38lcQM7cEeSqqOMGqhj_Zg">
+ <name xsi:nil="true"/>
+ <ownedEnd xmi:type="uml:Property" xmi:id="_38mDUc7cEeSqqOMGqhj_Zg" name="class1" type="_0nM00M7cEeSqqOMGqhj_Zg" association="_38mDUM7cEeSqqOMGqhj_Zg">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_38mDUs7cEeSqqOMGqhj_Zg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_38mDU87cEeSqqOMGqhj_Zg" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+</uml:Model>
diff --git a/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/twoway/a2/left.di b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/twoway/a2/left.di
new file mode 100644
index 000000000..8634d4c00
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/twoway/a2/left.di
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI"/>
diff --git a/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/twoway/a2/left.notation b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/twoway/a2/left.notation
new file mode 100644
index 000000000..7163f436e
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/twoway/a2/left.notation
@@ -0,0 +1,110 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<notation:Diagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmlns:style="http://www.eclipse.org/papyrus/infra/viewpoints/policy/style" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xmi:id="_zmK1oM7cEeSqqOMGqhj_Zg" type="PapyrusUMLClassDiagram" name="ClassDiagram" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_0noSoM7cEeSqqOMGqhj_Zg" type="2008">
+ <children xmi:type="notation:DecorationNode" xmi:id="_0npgwM7cEeSqqOMGqhj_Zg" type="5029"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_0nqH0M7cEeSqqOMGqhj_Zg" type="8510">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_0nqH0c7cEeSqqOMGqhj_Zg" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_0nrV8M7cEeSqqOMGqhj_Zg" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_0nrV8c7cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_0nrV8s7cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_0nrV887cEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0nrV9M7cEeSqqOMGqhj_Zg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_0nrV9c7cEeSqqOMGqhj_Zg" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_0nrV9s7cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_0nrV987cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_0nrV-M7cEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0nrV-c7cEeSqqOMGqhj_Zg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_0nr9AM7cEeSqqOMGqhj_Zg" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_0nr9Ac7cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_0nr9As7cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_0nr9A87cEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0nr9BM7cEeSqqOMGqhj_Zg"/>
+ </children>
+ <element xmi:type="uml:Class" href="left.uml#_0nM00M7cEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0noSoc7cEeSqqOMGqhj_Zg" x="81" y="74"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_1K6l4M7cEeSqqOMGqhj_Zg" type="2008">
+ <children xmi:type="notation:DecorationNode" xmi:id="_1K6l4s7cEeSqqOMGqhj_Zg" type="5029"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_1K6l487cEeSqqOMGqhj_Zg" type="8510">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_1K6l5M7cEeSqqOMGqhj_Zg" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_1K6l5c7cEeSqqOMGqhj_Zg" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_1K6l5s7cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_1K6l587cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_1K6l6M7cEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1K6l6c7cEeSqqOMGqhj_Zg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_1K6l6s7cEeSqqOMGqhj_Zg" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_1K6l687cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_1K6l7M7cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_1K6l7c7cEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1K6l7s7cEeSqqOMGqhj_Zg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_1K6l787cEeSqqOMGqhj_Zg" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_1K6l8M7cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_1K6l8c7cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_1K6l8s7cEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1K6l887cEeSqqOMGqhj_Zg"/>
+ </children>
+ <element xmi:type="uml:Class" href="left.uml#_1K5XwM7cEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1K6l4c7cEeSqqOMGqhj_Zg" x="350" y="72"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_TX4o4M7fEeSqqOMGqhj_Zg" type="2008">
+ <children xmi:type="notation:DecorationNode" xmi:id="_TX4o4s7fEeSqqOMGqhj_Zg" type="5029"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_TX4o487fEeSqqOMGqhj_Zg" type="8510">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_TX4o5M7fEeSqqOMGqhj_Zg" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_TX4o5c7fEeSqqOMGqhj_Zg" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_TX4o5s7fEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_TX4o587fEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_TX4o6M7fEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_TX4o6c7fEeSqqOMGqhj_Zg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_TX4o6s7fEeSqqOMGqhj_Zg" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_TX4o687fEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_TX4o7M7fEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_TX4o7c7fEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_TX4o7s7fEeSqqOMGqhj_Zg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_TX4o787fEeSqqOMGqhj_Zg" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_TX4o8M7fEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_TX4o8c7fEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_TX4o8s7fEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_TX4o887fEeSqqOMGqhj_Zg"/>
+ </children>
+ <element xmi:type="uml:Class" href="left.uml#_TX3awM7fEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_TX4o4c7fEeSqqOMGqhj_Zg" x="349" y="243"/>
+ </children>
+ <styles xmi:type="notation:StringValueStyle" xmi:id="_zmK1oc7cEeSqqOMGqhj_Zg" name="diagram_compatibility_version" stringValue="1.0.0"/>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_zmK1os7cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="style:PapyrusViewStyle" xmi:id="_zmK1o87cEeSqqOMGqhj_Zg">
+ <owner xmi:type="uml:Model" href="left.uml#_soPaMM7cEeSqqOMGqhj_Zg"/>
+ </styles>
+ <element xmi:type="uml:Model" href="left.uml#_soPaMM7cEeSqqOMGqhj_Zg"/>
+ <edges xmi:type="notation:Connector" xmi:id="_38pGoM7cEeSqqOMGqhj_Zg" type="4001" source="_0noSoM7cEeSqqOMGqhj_Zg" target="_TX4o4M7fEeSqqOMGqhj_Zg">
+ <children xmi:type="notation:DecorationNode" xmi:id="_38pGo87cEeSqqOMGqhj_Zg" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_38pGpM7cEeSqqOMGqhj_Zg" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_38pGpc7cEeSqqOMGqhj_Zg" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_38pGps7cEeSqqOMGqhj_Zg" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_38pGp87cEeSqqOMGqhj_Zg" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_38pGqM7cEeSqqOMGqhj_Zg" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_38ptsM7cEeSqqOMGqhj_Zg" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_38ptsc7cEeSqqOMGqhj_Zg" x="-21" y="31"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_38ptss7cEeSqqOMGqhj_Zg" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_38pts87cEeSqqOMGqhj_Zg" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_38pttM7cEeSqqOMGqhj_Zg" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_38pttc7cEeSqqOMGqhj_Zg" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_38pGoc7cEeSqqOMGqhj_Zg"/>
+ <element xmi:type="uml:Association" href="left.uml#_38mDUM7cEeSqqOMGqhj_Zg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_38pGos7cEeSqqOMGqhj_Zg" points="[50, -8, -219, -6]$[219, -8, -50, -6]"/>
+ </edges>
+</notation:Diagram>
diff --git a/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/twoway/a2/left.uml b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/twoway/a2/left.uml
new file mode 100644
index 000000000..846af7ea5
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/twoway/a2/left.uml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<uml:Model xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xmi:id="_soPaMM7cEeSqqOMGqhj_Zg" name="model">
+ <packagedElement xmi:type="uml:Class" xmi:id="_0nM00M7cEeSqqOMGqhj_Zg" name="Class1"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_1K5XwM7cEeSqqOMGqhj_Zg" name="Class2"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_38mDUM7cEeSqqOMGqhj_Zg" memberEnd="_38mDUc7cEeSqqOMGqhj_Zg _38lcQM7cEeSqqOMGqhj_Zg">
+ <name xsi:nil="true"/>
+ <ownedEnd xmi:type="uml:Property" xmi:id="_38mDUc7cEeSqqOMGqhj_Zg" name="class1" type="_0nM00M7cEeSqqOMGqhj_Zg" association="_38mDUM7cEeSqqOMGqhj_Zg">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_38mDUs7cEeSqqOMGqhj_Zg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_38mDU87cEeSqqOMGqhj_Zg" value="1"/>
+ </ownedEnd>
+ <ownedEnd xmi:type="uml:Property" xmi:id="_38lcQM7cEeSqqOMGqhj_Zg" name="someRole" type="_TX3awM7fEeSqqOMGqhj_Zg" association="_38mDUM7cEeSqqOMGqhj_Zg">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_38lcQc7cEeSqqOMGqhj_Zg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_38lcQs7cEeSqqOMGqhj_Zg" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_TX3awM7fEeSqqOMGqhj_Zg" name="Class3"/>
+</uml:Model>
diff --git a/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/twoway/a2/package-info.java b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/twoway/a2/package-info.java
new file mode 100644
index 000000000..42a581137
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/twoway/a2/package-info.java
@@ -0,0 +1,19 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+
+/**
+ * Contains data for the following test case: Two classes C1 and C2 exist, and an association C1 -> C2 exists.
+ * Both target and source properties of this assoc are owned by the association itself.
+ * In the other model, a class C3 is added, and the association is reconnected to the new class C3.
+ *
+ * @author <a href="mailto:laurent.delaigue@obeo.fr">Laurent Delaigue</a>
+ */
+package org.eclipse.emf.compare.diagram.papyrus.tests.merge.data.assocs.twoway.a2; \ No newline at end of file
diff --git a/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/twoway/a2/right.di b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/twoway/a2/right.di
new file mode 100644
index 000000000..8634d4c00
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/twoway/a2/right.di
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI"/>
diff --git a/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/twoway/a2/right.notation b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/twoway/a2/right.notation
new file mode 100644
index 000000000..fa66bfe3f
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/twoway/a2/right.notation
@@ -0,0 +1,84 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<notation:Diagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmlns:style="http://www.eclipse.org/papyrus/infra/viewpoints/policy/style" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xmi:id="_zmK1oM7cEeSqqOMGqhj_Zg" type="PapyrusUMLClassDiagram" name="ClassDiagram" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_0noSoM7cEeSqqOMGqhj_Zg" type="2008">
+ <children xmi:type="notation:DecorationNode" xmi:id="_0npgwM7cEeSqqOMGqhj_Zg" type="5029"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_0nqH0M7cEeSqqOMGqhj_Zg" type="8510">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_0nqH0c7cEeSqqOMGqhj_Zg" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_0nrV8M7cEeSqqOMGqhj_Zg" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_0nrV8c7cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_0nrV8s7cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_0nrV887cEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0nrV9M7cEeSqqOMGqhj_Zg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_0nrV9c7cEeSqqOMGqhj_Zg" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_0nrV9s7cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_0nrV987cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_0nrV-M7cEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0nrV-c7cEeSqqOMGqhj_Zg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_0nr9AM7cEeSqqOMGqhj_Zg" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_0nr9Ac7cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_0nr9As7cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_0nr9A87cEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0nr9BM7cEeSqqOMGqhj_Zg"/>
+ </children>
+ <element xmi:type="uml:Class" href="right.uml#_0nM00M7cEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0noSoc7cEeSqqOMGqhj_Zg" x="81" y="74"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_1K6l4M7cEeSqqOMGqhj_Zg" type="2008">
+ <children xmi:type="notation:DecorationNode" xmi:id="_1K6l4s7cEeSqqOMGqhj_Zg" type="5029"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_1K6l487cEeSqqOMGqhj_Zg" type="8510">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_1K6l5M7cEeSqqOMGqhj_Zg" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_1K6l5c7cEeSqqOMGqhj_Zg" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_1K6l5s7cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_1K6l587cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_1K6l6M7cEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1K6l6c7cEeSqqOMGqhj_Zg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_1K6l6s7cEeSqqOMGqhj_Zg" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_1K6l687cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_1K6l7M7cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_1K6l7c7cEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1K6l7s7cEeSqqOMGqhj_Zg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_1K6l787cEeSqqOMGqhj_Zg" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_1K6l8M7cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_1K6l8c7cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_1K6l8s7cEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1K6l887cEeSqqOMGqhj_Zg"/>
+ </children>
+ <element xmi:type="uml:Class" href="right.uml#_1K5XwM7cEeSqqOMGqhj_Zg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1K6l4c7cEeSqqOMGqhj_Zg" x="350" y="72"/>
+ </children>
+ <styles xmi:type="notation:StringValueStyle" xmi:id="_zmK1oc7cEeSqqOMGqhj_Zg" name="diagram_compatibility_version" stringValue="1.0.0"/>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_zmK1os7cEeSqqOMGqhj_Zg"/>
+ <styles xmi:type="style:PapyrusViewStyle" xmi:id="_zmK1o87cEeSqqOMGqhj_Zg">
+ <owner xmi:type="uml:Model" href="right.uml#_soPaMM7cEeSqqOMGqhj_Zg"/>
+ </styles>
+ <element xmi:type="uml:Model" href="right.uml#_soPaMM7cEeSqqOMGqhj_Zg"/>
+ <edges xmi:type="notation:Connector" xmi:id="_38pGoM7cEeSqqOMGqhj_Zg" type="4001" source="_0noSoM7cEeSqqOMGqhj_Zg" target="_1K6l4M7cEeSqqOMGqhj_Zg">
+ <children xmi:type="notation:DecorationNode" xmi:id="_38pGo87cEeSqqOMGqhj_Zg" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_38pGpM7cEeSqqOMGqhj_Zg" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_38pGpc7cEeSqqOMGqhj_Zg" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_38pGps7cEeSqqOMGqhj_Zg" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_38pGp87cEeSqqOMGqhj_Zg" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_38pGqM7cEeSqqOMGqhj_Zg" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_38ptsM7cEeSqqOMGqhj_Zg" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_38ptsc7cEeSqqOMGqhj_Zg" x="-21" y="31"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_38ptss7cEeSqqOMGqhj_Zg" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_38pts87cEeSqqOMGqhj_Zg" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_38pttM7cEeSqqOMGqhj_Zg" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_38pttc7cEeSqqOMGqhj_Zg" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_38pGoc7cEeSqqOMGqhj_Zg"/>
+ <element xmi:type="uml:Association" href="right.uml#_38mDUM7cEeSqqOMGqhj_Zg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_38pGos7cEeSqqOMGqhj_Zg" points="[50, -8, -219, -6]$[219, -8, -50, -6]"/>
+ </edges>
+</notation:Diagram>
diff --git a/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/twoway/a2/right.uml b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/twoway/a2/right.uml
new file mode 100644
index 000000000..d5e3e6e55
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/twoway/a2/right.uml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<uml:Model xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xmi:id="_soPaMM7cEeSqqOMGqhj_Zg" name="model">
+ <packagedElement xmi:type="uml:Class" xmi:id="_0nM00M7cEeSqqOMGqhj_Zg" name="Class1"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_1K5XwM7cEeSqqOMGqhj_Zg" name="Class2"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_38mDUM7cEeSqqOMGqhj_Zg" memberEnd="_38mDUc7cEeSqqOMGqhj_Zg _38lcQM7cEeSqqOMGqhj_Zg">
+ <name xsi:nil="true"/>
+ <ownedEnd xmi:type="uml:Property" xmi:id="_38mDUc7cEeSqqOMGqhj_Zg" name="class1" type="_0nM00M7cEeSqqOMGqhj_Zg" association="_38mDUM7cEeSqqOMGqhj_Zg">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_38mDUs7cEeSqqOMGqhj_Zg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_38mDU87cEeSqqOMGqhj_Zg" value="1"/>
+ </ownedEnd>
+ <ownedEnd xmi:type="uml:Property" xmi:id="_38lcQM7cEeSqqOMGqhj_Zg" name="someRole" type="_1K5XwM7cEeSqqOMGqhj_Zg" association="_38mDUM7cEeSqqOMGqhj_Zg">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_38lcQc7cEeSqqOMGqhj_Zg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_38lcQs7cEeSqqOMGqhj_Zg" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+</uml:Model>
diff --git a/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/twoway/t1/left.di b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/twoway/t1/left.di
new file mode 100644
index 000000000..8634d4c00
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/twoway/t1/left.di
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI"/>
diff --git a/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/twoway/t1/left.notation b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/twoway/t1/left.notation
new file mode 100644
index 000000000..5faca7b6c
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/twoway/t1/left.notation
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<notation:Diagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmlns:style="http://www.eclipse.org/papyrus/infra/viewpoints/policy/style" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xmi:id="_qC9nsLwdEeSIRf-5f0gG0g" type="PapyrusUMLStateMachineDiagram" name="NewDiagram" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_qC9nsbwdEeSIRf-5f0gG0g" type="2000">
+ <children xmi:type="notation:DecorationNode" xmi:id="_qC9nsrwdEeSIRf-5f0gG0g" type="2001">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_qC9ns7wdEeSIRf-5f0gG0g" width="700" height="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_qC9ntLwdEeSIRf-5f0gG0g" type="2002">
+ <children xmi:type="notation:Shape" xmi:id="_qC9ntbwdEeSIRf-5f0gG0g" type="3000">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_qC9ntrwdEeSIRf-5f0gG0g" source="RegionAnnotationKey">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qC9nt7wdEeSIRf-5f0gG0g" key="RegionZoneKey" value=""/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_qC9nuLwdEeSIRf-5f0gG0g" type="3002">
+ <children xmi:type="notation:Shape" xmi:id="_zf4R0MjFEeSlR5E9fXQsvA" type="6000">
+ <children xmi:type="notation:DecorationNode" xmi:id="_zf5f8MjFEeSlR5E9fXQsvA" type="6001">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1aMCYMjFEeSlR5E9fXQsvA" width="203"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_zf5f8cjFEeSlR5E9fXQsvA" type="6002">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zf5f8sjFEeSlR5E9fXQsvA" y="-1" width="203"/>
+ </children>
+ <element xmi:type="uml:State" href="left.uml#_zfvH4MjFEeSlR5E9fXQsvA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zf4R0cjFEeSlR5E9fXQsvA" x="112" y="66" width="203" height="69"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_1w1AwMjFEeSlR5E9fXQsvA" type="6000">
+ <children xmi:type="notation:DecorationNode" xmi:id="_1w1n0MjFEeSlR5E9fXQsvA" type="6001">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_2GKXkMjFEeSlR5E9fXQsvA" width="169"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_1w1n0cjFEeSlR5E9fXQsvA" type="6002">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1w1n0sjFEeSlR5E9fXQsvA" y="-1" width="169"/>
+ </children>
+ <element xmi:type="uml:State" href="left.uml#_1wykgMjFEeSlR5E9fXQsvA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1w1AwcjFEeSlR5E9fXQsvA" x="397" y="12" width="169" height="62"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3noKUMjFEeSlR5E9fXQsvA" type="6000">
+ <children xmi:type="notation:DecorationNode" xmi:id="_3noKUsjFEeSlR5E9fXQsvA" type="6001"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3noxYMjFEeSlR5E9fXQsvA" type="6002">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3noxYcjFEeSlR5E9fXQsvA"/>
+ </children>
+ <element xmi:type="uml:State" href="left.uml#_3nluEMjFEeSlR5E9fXQsvA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3noKUcjFEeSlR5E9fXQsvA" x="401" y="113" width="157" height="73"/>
+ </children>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_qC9nubwdEeSIRf-5f0gG0g"/>
+ </children>
+ <element xmi:type="uml:Region" href="left.uml#_qC4IILwdEeSIRf-5f0gG0g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_qC9nurwdEeSIRf-5f0gG0g" width="700" height="287"/>
+ </children>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_qC9nu7wdEeSIRf-5f0gG0g" y="20" width="700" height="287"/>
+ </children>
+ <element xmi:type="uml:StateMachine" href="left.uml#_qCgUsLwdEeSIRf-5f0gG0g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_qC9nvLwdEeSIRf-5f0gG0g" x="30" y="30" width="700" height="307"/>
+ </children>
+ <styles xmi:type="notation:StringValueStyle" xmi:id="_qC9nvbwdEeSIRf-5f0gG0g" name="diagram_compatibility_version" stringValue="1.0.0"/>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_qC9nvrwdEeSIRf-5f0gG0g"/>
+ <styles xmi:type="style:PapyrusViewStyle" xmi:id="_qC9nv7wdEeSIRf-5f0gG0g">
+ <owner xmi:type="uml:Model" href="left.uml#_qBqAILwdEeSIRf-5f0gG0g"/>
+ </styles>
+ <element xmi:type="uml:StateMachine" href="left.uml#_qCgUsLwdEeSIRf-5f0gG0g"/>
+ <edges xmi:type="notation:Connector" xmi:id="_4tqlUMjFEeSlR5E9fXQsvA" type="7000" source="_zf4R0MjFEeSlR5E9fXQsvA" target="_1w1AwMjFEeSlR5E9fXQsvA">
+ <children xmi:type="notation:DecorationNode" xmi:id="_4trMYMjFEeSlR5E9fXQsvA" type="7001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_4trzcMjFEeSlR5E9fXQsvA"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_4trzccjFEeSlR5E9fXQsvA" type="7002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_4trzcsjFEeSlR5E9fXQsvA"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_4trzc8jFEeSlR5E9fXQsvA" type="7003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_4trzdMjFEeSlR5E9fXQsvA" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_4tqlUcjFEeSlR5E9fXQsvA"/>
+ <element xmi:type="uml:Transition" href="left.uml#_4rv5wMjFEeSlR5E9fXQsvA"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_4tqlUsjFEeSlR5E9fXQsvA" points="[8, -3, -98, 33]$[90, -33, -16, 3]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_4uHRQMjFEeSlR5E9fXQsvA" id="(0.9605911330049262,0.43478260869565216)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_4uHRQcjFEeSlR5E9fXQsvA" id="(0.09467455621301775,0.7741935483870968)"/>
+ </edges>
+</notation:Diagram>
diff --git a/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/twoway/t1/left.uml b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/twoway/t1/left.uml
new file mode 100644
index 000000000..bb52e6394
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/twoway/t1/left.uml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<uml:Model xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xmi:id="_qBqAILwdEeSIRf-5f0gG0g" name="model">
+ <packagedElement xmi:type="uml:StateMachine" xmi:id="_qCgUsLwdEeSIRf-5f0gG0g" name="StateMachine1">
+ <region xmi:type="uml:Region" xmi:id="_qC4IILwdEeSIRf-5f0gG0g" name="Region1">
+ <transition xmi:type="uml:Transition" xmi:id="_4rv5wMjFEeSlR5E9fXQsvA" source="_zfvH4MjFEeSlR5E9fXQsvA" target="_1wykgMjFEeSlR5E9fXQsvA"/>
+ <subvertex xmi:type="uml:State" xmi:id="_zfvH4MjFEeSlR5E9fXQsvA" name="State1"/>
+ <subvertex xmi:type="uml:State" xmi:id="_1wykgMjFEeSlR5E9fXQsvA" name="State2"/>
+ <subvertex xmi:type="uml:State" xmi:id="_3nluEMjFEeSlR5E9fXQsvA" name="State3"/>
+ </region>
+ </packagedElement>
+</uml:Model>
diff --git a/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/twoway/t1/package-info.java b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/twoway/t1/package-info.java
new file mode 100644
index 000000000..7d956b494
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/twoway/t1/package-info.java
@@ -0,0 +1,19 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+
+/**
+ * <p>This package contains test data for checkging reconnection of a transition.
+ * An existing transition's target is changed.</p>
+ * See <a href="http://eclip.se/450096">bug 450096</a>
+ *
+ * @author <a href="mailto:laurent.delaigue@obeo.fr">Laurent Delaigue</a>
+ */
+package org.eclipse.emf.compare.diagram.papyrus.tests.merge.data.assocs.twoway.t1; \ No newline at end of file
diff --git a/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/twoway/t1/right.di b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/twoway/t1/right.di
new file mode 100644
index 000000000..8634d4c00
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/twoway/t1/right.di
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI"/>
diff --git a/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/twoway/t1/right.notation b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/twoway/t1/right.notation
new file mode 100644
index 000000000..79cacc70c
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/twoway/t1/right.notation
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<notation:Diagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmlns:style="http://www.eclipse.org/papyrus/infra/viewpoints/policy/style" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xmi:id="_qC9nsLwdEeSIRf-5f0gG0g" type="PapyrusUMLStateMachineDiagram" name="NewDiagram" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_qC9nsbwdEeSIRf-5f0gG0g" type="2000">
+ <children xmi:type="notation:DecorationNode" xmi:id="_qC9nsrwdEeSIRf-5f0gG0g" type="2001">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_qC9ns7wdEeSIRf-5f0gG0g" width="700" height="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_qC9ntLwdEeSIRf-5f0gG0g" type="2002">
+ <children xmi:type="notation:Shape" xmi:id="_qC9ntbwdEeSIRf-5f0gG0g" type="3000">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_qC9ntrwdEeSIRf-5f0gG0g" source="RegionAnnotationKey">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qC9nt7wdEeSIRf-5f0gG0g" key="RegionZoneKey" value=""/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_qC9nuLwdEeSIRf-5f0gG0g" type="3002">
+ <children xmi:type="notation:Shape" xmi:id="_zf4R0MjFEeSlR5E9fXQsvA" type="6000">
+ <children xmi:type="notation:DecorationNode" xmi:id="_zf5f8MjFEeSlR5E9fXQsvA" type="6001">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1aMCYMjFEeSlR5E9fXQsvA" width="203"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_zf5f8cjFEeSlR5E9fXQsvA" type="6002">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zf5f8sjFEeSlR5E9fXQsvA" y="-1" width="203"/>
+ </children>
+ <element xmi:type="uml:State" href="right.uml#_zfvH4MjFEeSlR5E9fXQsvA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zf4R0cjFEeSlR5E9fXQsvA" x="112" y="66" width="203" height="69"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_1w1AwMjFEeSlR5E9fXQsvA" type="6000">
+ <children xmi:type="notation:DecorationNode" xmi:id="_1w1n0MjFEeSlR5E9fXQsvA" type="6001">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_2GKXkMjFEeSlR5E9fXQsvA" width="169"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_1w1n0cjFEeSlR5E9fXQsvA" type="6002">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1w1n0sjFEeSlR5E9fXQsvA" y="-1" width="169"/>
+ </children>
+ <element xmi:type="uml:State" href="right.uml#_1wykgMjFEeSlR5E9fXQsvA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1w1AwcjFEeSlR5E9fXQsvA" x="397" y="12" width="169" height="62"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3noKUMjFEeSlR5E9fXQsvA" type="6000">
+ <children xmi:type="notation:DecorationNode" xmi:id="_3noKUsjFEeSlR5E9fXQsvA" type="6001"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3noxYMjFEeSlR5E9fXQsvA" type="6002">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3noxYcjFEeSlR5E9fXQsvA"/>
+ </children>
+ <element xmi:type="uml:State" href="right.uml#_3nluEMjFEeSlR5E9fXQsvA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3noKUcjFEeSlR5E9fXQsvA" x="401" y="113" width="157" height="73"/>
+ </children>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_qC9nubwdEeSIRf-5f0gG0g"/>
+ </children>
+ <element xmi:type="uml:Region" href="right.uml#_qC4IILwdEeSIRf-5f0gG0g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_qC9nurwdEeSIRf-5f0gG0g" width="700" height="287"/>
+ </children>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_qC9nu7wdEeSIRf-5f0gG0g" y="20" width="700" height="287"/>
+ </children>
+ <element xmi:type="uml:StateMachine" href="right.uml#_qCgUsLwdEeSIRf-5f0gG0g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_qC9nvLwdEeSIRf-5f0gG0g" x="30" y="30" width="700" height="307"/>
+ </children>
+ <styles xmi:type="notation:StringValueStyle" xmi:id="_qC9nvbwdEeSIRf-5f0gG0g" name="diagram_compatibility_version" stringValue="1.0.0"/>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_qC9nvrwdEeSIRf-5f0gG0g"/>
+ <styles xmi:type="style:PapyrusViewStyle" xmi:id="_qC9nv7wdEeSIRf-5f0gG0g">
+ <owner xmi:type="uml:Model" href="right.uml#_qBqAILwdEeSIRf-5f0gG0g"/>
+ </styles>
+ <element xmi:type="uml:StateMachine" href="right.uml#_qCgUsLwdEeSIRf-5f0gG0g"/>
+ <edges xmi:type="notation:Connector" xmi:id="_4tqlUMjFEeSlR5E9fXQsvA" type="7000" source="_zf4R0MjFEeSlR5E9fXQsvA" target="_3noKUMjFEeSlR5E9fXQsvA">
+ <children xmi:type="notation:DecorationNode" xmi:id="_4trMYMjFEeSlR5E9fXQsvA" type="7001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_4trzcMjFEeSlR5E9fXQsvA"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_4trzccjFEeSlR5E9fXQsvA" type="7002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_4trzcsjFEeSlR5E9fXQsvA"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_4trzc8jFEeSlR5E9fXQsvA" type="7003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_4trzdMjFEeSlR5E9fXQsvA" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_4tqlUcjFEeSlR5E9fXQsvA"/>
+ <element xmi:type="uml:Transition" href="right.uml#_4rv5wMjFEeSlR5E9fXQsvA"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_4tqlUsjFEeSlR5E9fXQsvA" points="[8, -3, -98, 33]$[90, -33, -16, 3]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_4uHRQMjFEeSlR5E9fXQsvA" id="(0.9605911330049262,0.43478260869565216)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_4uHRQcjFEeSlR5E9fXQsvA" id="(0.19745222929936307,0.5753424657534246)"/>
+ </edges>
+</notation:Diagram>
diff --git a/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/twoway/t1/right.uml b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/twoway/t1/right.uml
new file mode 100644
index 000000000..844c728eb
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/merge/data/assocs/twoway/t1/right.uml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<uml:Model xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xmi:id="_qBqAILwdEeSIRf-5f0gG0g" name="model">
+ <packagedElement xmi:type="uml:StateMachine" xmi:id="_qCgUsLwdEeSIRf-5f0gG0g" name="StateMachine1">
+ <region xmi:type="uml:Region" xmi:id="_qC4IILwdEeSIRf-5f0gG0g" name="Region1">
+ <transition xmi:type="uml:Transition" xmi:id="_4rv5wMjFEeSlR5E9fXQsvA" source="_zfvH4MjFEeSlR5E9fXQsvA" target="_3nluEMjFEeSlR5E9fXQsvA"/>
+ <subvertex xmi:type="uml:State" xmi:id="_zfvH4MjFEeSlR5E9fXQsvA" name="State1"/>
+ <subvertex xmi:type="uml:State" xmi:id="_1wykgMjFEeSlR5E9fXQsvA" name="State2"/>
+ <subvertex xmi:type="uml:State" xmi:id="_3nluEMjFEeSlR5E9fXQsvA" name="State3"/>
+ </region>
+ </packagedElement>
+</uml:Model>
diff --git a/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/suite/AllTests.java b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/suite/AllTests.java
index e680ec845..2cca78cca 100644
--- a/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/suite/AllTests.java
+++ b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/suite/AllTests.java
@@ -17,6 +17,7 @@ import junit.textui.TestRunner;
import org.eclipse.emf.compare.ComparePackage;
import org.eclipse.emf.compare.diagram.internal.extensions.ExtensionsPackage;
+import org.eclipse.emf.compare.diagram.papyrus.tests.merge.AssocMergeTest;
import org.eclipse.emf.compare.diagram.papyrus.tests.merge.EdgeMergeTest;
import org.eclipse.emf.compare.diagram.papyrus.tests.merge.NodeMergeTest;
import org.eclipse.emf.compare.diagram.papyrus.tests.modelextension.ModelExtensionUtilTest;
@@ -45,7 +46,7 @@ import org.junit.runners.Suite.SuiteClasses;
*/
@SuppressWarnings("restriction")
@RunWith(Suite.class)
-@SuiteClasses({ EdgeMergeTest.class, NodeMergeTest.class,
+@SuiteClasses({AssocMergeTest.class, EdgeMergeTest.class, NodeMergeTest.class,
ModelExtensionUtilTest.class, SaveParameterHookTest.class,
SaveParameterHookIntegrationTest.class,
MergeRenamingMatchResource2WayTest.class,
diff --git a/plugins/org.eclipse.emf.compare.diagram.papyrus/.checkstyle b/plugins/org.eclipse.emf.compare.diagram.papyrus/.checkstyle
new file mode 100644
index 000000000..9d20703eb
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.diagram.papyrus/.checkstyle
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<fileset-config file-format-version="1.2.0" simple-config="true" sync-formatter="false">
+ <local-check-config name="EMF Compare" location="/org.eclipse.emf.compare-parent/codeStyle/EMFCompareCheckstyle5Configuration.xml" type="project" description="">
+ <additional-data name="protect-config-file" value="false"/>
+ </local-check-config>
+ <fileset name="all" enabled="true" check-config-name="EMF Compare" local="true">
+ <file-match-pattern match-pattern="." include-pattern="true"/>
+ </fileset>
+ <filter name="FilesFromPackage" enabled="true">
+ <filter-data value="src-gen"/>
+ </filter>
+</fileset-config>
diff --git a/plugins/org.eclipse.emf.compare.diagram.papyrus/.classpath b/plugins/org.eclipse.emf.compare.diagram.papyrus/.classpath
new file mode 100644
index 000000000..304e86186
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.diagram.papyrus/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/plugins/org.eclipse.emf.compare.diagram.papyrus/.project b/plugins/org.eclipse.emf.compare.diagram.papyrus/.project
new file mode 100644
index 000000000..4d60b2b5f
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.diagram.papyrus/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.emf.compare.diagram.papyrus</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>net.sf.eclipsecs.core.CheckstyleBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>net.sf.eclipsecs.core.CheckstyleNature</nature>
+ </natures>
+</projectDescription>
diff --git a/plugins/org.eclipse.emf.compare.diagram.papyrus/.settings/edu.umd.cs.findbugs.core.prefs b/plugins/org.eclipse.emf.compare.diagram.papyrus/.settings/edu.umd.cs.findbugs.core.prefs
new file mode 100644
index 000000000..1fab65578
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.diagram.papyrus/.settings/edu.umd.cs.findbugs.core.prefs
@@ -0,0 +1,132 @@
+#FindBugs User Preferences
+#Tue Mar 12 08:11:54 CET 2013
+cloud_id=edu.umd.cs.findbugs.cloud.doNothingCloud
+detectorAppendingToAnObjectOutputStream=AppendingToAnObjectOutputStream|true
+detectorAtomicityProblem=AtomicityProblem|true
+detectorBadAppletConstructor=BadAppletConstructor|false
+detectorBadResultSetAccess=BadResultSetAccess|true
+detectorBadSyntaxForRegularExpression=BadSyntaxForRegularExpression|true
+detectorBadUseOfReturnValue=BadUseOfReturnValue|true
+detectorBadlyOverriddenAdapter=BadlyOverriddenAdapter|true
+detectorBooleanReturnNull=BooleanReturnNull|true
+detectorCallToUnsupportedMethod=CallToUnsupportedMethod|false
+detectorCheckExpectedWarnings=CheckExpectedWarnings|false
+detectorCheckImmutableAnnotation=CheckImmutableAnnotation|true
+detectorCheckTypeQualifiers=CheckTypeQualifiers|true
+detectorCloneIdiom=CloneIdiom|true
+detectorComparatorIdiom=ComparatorIdiom|true
+detectorConfusedInheritance=ConfusedInheritance|true
+detectorConfusionBetweenInheritedAndOuterMethod=ConfusionBetweenInheritedAndOuterMethod|true
+detectorCrossSiteScripting=CrossSiteScripting|true
+detectorDefaultEncodingDetector=DefaultEncodingDetector|true
+detectorDoInsideDoPrivileged=DoInsideDoPrivileged|true
+detectorDontCatchIllegalMonitorStateException=DontCatchIllegalMonitorStateException|true
+detectorDontIgnoreResultOfPutIfAbsent=DontIgnoreResultOfPutIfAbsent|true
+detectorDontUseEnum=DontUseEnum|true
+detectorDroppedException=DroppedException|true
+detectorDumbMethodInvocations=DumbMethodInvocations|true
+detectorDumbMethods=DumbMethods|true
+detectorDuplicateBranches=DuplicateBranches|true
+detectorEmptyZipFileEntry=EmptyZipFileEntry|true
+detectorEqualsOperandShouldHaveClassCompatibleWithThis=EqualsOperandShouldHaveClassCompatibleWithThis|true
+detectorExplicitSerialization=ExplicitSerialization|true
+detectorFinalizerNullsFields=FinalizerNullsFields|true
+detectorFindBadCast2=FindBadCast2|true
+detectorFindBadForLoop=FindBadForLoop|true
+detectorFindCircularDependencies=FindCircularDependencies|false
+detectorFindDeadLocalStores=FindDeadLocalStores|true
+detectorFindDoubleCheck=FindDoubleCheck|true
+detectorFindEmptySynchronizedBlock=FindEmptySynchronizedBlock|true
+detectorFindFieldSelfAssignment=FindFieldSelfAssignment|true
+detectorFindFinalizeInvocations=FindFinalizeInvocations|true
+detectorFindFloatEquality=FindFloatEquality|true
+detectorFindHEmismatch=FindHEmismatch|true
+detectorFindInconsistentSync2=FindInconsistentSync2|true
+detectorFindJSR166LockMonitorenter=FindJSR166LockMonitorenter|true
+detectorFindLocalSelfAssignment2=FindLocalSelfAssignment2|true
+detectorFindMaskedFields=FindMaskedFields|true
+detectorFindMismatchedWaitOrNotify=FindMismatchedWaitOrNotify|true
+detectorFindNakedNotify=FindNakedNotify|true
+detectorFindNonShortCircuit=FindNonShortCircuit|true
+detectorFindNullDeref=FindNullDeref|true
+detectorFindNullDerefsInvolvingNonShortCircuitEvaluation=FindNullDerefsInvolvingNonShortCircuitEvaluation|true
+detectorFindOpenStream=FindOpenStream|true
+detectorFindPuzzlers=FindPuzzlers|true
+detectorFindRefComparison=FindRefComparison|true
+detectorFindReturnRef=FindReturnRef|true
+detectorFindRunInvocations=FindRunInvocations|true
+detectorFindSelfComparison=FindSelfComparison|true
+detectorFindSelfComparison2=FindSelfComparison2|true
+detectorFindSleepWithLockHeld=FindSleepWithLockHeld|true
+detectorFindSpinLoop=FindSpinLoop|true
+detectorFindSqlInjection=FindSqlInjection|true
+detectorFindTwoLockWait=FindTwoLockWait|true
+detectorFindUncalledPrivateMethods=FindUncalledPrivateMethods|true
+detectorFindUnconditionalWait=FindUnconditionalWait|true
+detectorFindUninitializedGet=FindUninitializedGet|true
+detectorFindUnrelatedTypesInGenericContainer=FindUnrelatedTypesInGenericContainer|true
+detectorFindUnreleasedLock=FindUnreleasedLock|true
+detectorFindUnsatisfiedObligation=FindUnsatisfiedObligation|true
+detectorFindUnsyncGet=FindUnsyncGet|true
+detectorFindUseOfNonSerializableValue=FindUseOfNonSerializableValue|true
+detectorFindUselessControlFlow=FindUselessControlFlow|true
+detectorFormatStringChecker=FormatStringChecker|true
+detectorHugeSharedStringConstants=HugeSharedStringConstants|true
+detectorIDivResultCastToDouble=IDivResultCastToDouble|true
+detectorIncompatMask=IncompatMask|true
+detectorInconsistentAnnotations=InconsistentAnnotations|true
+detectorInefficientMemberAccess=InefficientMemberAccess|false
+detectorInefficientToArray=InefficientToArray|true
+detectorInfiniteLoop=InfiniteLoop|true
+detectorInfiniteRecursiveLoop=InfiniteRecursiveLoop|true
+detectorInheritanceUnsafeGetResource=InheritanceUnsafeGetResource|true
+detectorInitializationChain=InitializationChain|true
+detectorInitializeNonnullFieldsInConstructor=InitializeNonnullFieldsInConstructor|true
+detectorInstantiateStaticClass=InstantiateStaticClass|true
+detectorIntCast2LongAsInstant=IntCast2LongAsInstant|true
+detectorInvalidJUnitTest=InvalidJUnitTest|true
+detectorIteratorIdioms=IteratorIdioms|true
+detectorLazyInit=LazyInit|true
+detectorLoadOfKnownNullValue=LoadOfKnownNullValue|true
+detectorLostLoggerDueToWeakReference=LostLoggerDueToWeakReference|true
+detectorMethodReturnCheck=MethodReturnCheck|true
+detectorMultithreadedInstanceAccess=MultithreadedInstanceAccess|true
+detectorMutableLock=MutableLock|true
+detectorMutableStaticFields=MutableStaticFields|true
+detectorNaming=Naming|true
+detectorNoteUnconditionalParamDerefs=NoteUnconditionalParamDerefs|true
+detectorNumberConstructor=NumberConstructor|true
+detectorOverridingEqualsNotSymmetrical=OverridingEqualsNotSymmetrical|true
+detectorPreferZeroLengthArrays=PreferZeroLengthArrays|true
+detectorPublicSemaphores=PublicSemaphores|false
+detectorQuestionableBooleanAssignment=QuestionableBooleanAssignment|true
+detectorReadOfInstanceFieldInMethodInvokedByConstructorInSuperclass=ReadOfInstanceFieldInMethodInvokedByConstructorInSuperclass|true
+detectorReadReturnShouldBeChecked=ReadReturnShouldBeChecked|true
+detectorRedundantInterfaces=RedundantInterfaces|true
+detectorRepeatedConditionals=RepeatedConditionals|true
+detectorRuntimeExceptionCapture=RuntimeExceptionCapture|true
+detectorSerializableIdiom=SerializableIdiom|true
+detectorStartInConstructor=StartInConstructor|true
+detectorStaticCalendarDetector=StaticCalendarDetector|true
+detectorStringConcatenation=StringConcatenation|true
+detectorSuperfluousInstanceOf=SuperfluousInstanceOf|true
+detectorSuspiciousThreadInterrupted=SuspiciousThreadInterrupted|true
+detectorSwitchFallthrough=SwitchFallthrough|true
+detectorSynchronizeAndNullCheckField=SynchronizeAndNullCheckField|true
+detectorSynchronizeOnClassLiteralNotGetClass=SynchronizeOnClassLiteralNotGetClass|true
+detectorSynchronizingOnContentsOfFieldToProtectField=SynchronizingOnContentsOfFieldToProtectField|true
+detectorURLProblems=URLProblems|true
+detectorUncallableMethodOfAnonymousClass=UncallableMethodOfAnonymousClass|true
+detectorUnnecessaryMath=UnnecessaryMath|true
+detectorUnreadFields=UnreadFields|true
+detectorUselessSubclassMethod=UselessSubclassMethod|false
+detectorVarArgsProblems=VarArgsProblems|true
+detectorVolatileUsage=VolatileUsage|true
+detectorWaitInLoop=WaitInLoop|true
+detectorWrongMapIterator=WrongMapIterator|true
+detectorXMLFactoryBypass=XMLFactoryBypass|true
+detector_threshold=2
+effort=default
+filter_settings=Medium|BAD_PRACTICE,CORRECTNESS,MALICIOUS_CODE,MT_CORRECTNESS,PERFORMANCE,SECURITY,STYLE|false|15
+filter_settings_neg=NOISE,I18N,EXPERIMENTAL|
+run_at_full_build=true
diff --git a/plugins/org.eclipse.emf.compare.diagram.papyrus/.settings/edu.umd.cs.findbugs.plugin.eclipse.prefs b/plugins/org.eclipse.emf.compare.diagram.papyrus/.settings/edu.umd.cs.findbugs.plugin.eclipse.prefs
new file mode 100644
index 000000000..4235f7661
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.diagram.papyrus/.settings/edu.umd.cs.findbugs.plugin.eclipse.prefs
@@ -0,0 +1,3 @@
+eclipse.preferences.version=1
+edu.umd.cs.findbugs.plugin.eclipse.findbugsMarkerScariest=Error
+edu.umd.cs.findbugs.plugin.eclipse.findbugsMarkerScary=Error
diff --git a/plugins/org.eclipse.emf.compare.diagram.papyrus/.settings/org.eclipse.core.resources.prefs b/plugins/org.eclipse.emf.compare.diagram.papyrus/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 000000000..99f26c020
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.diagram.papyrus/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/plugins/org.eclipse.emf.compare.diagram.papyrus/.settings/org.eclipse.core.runtime.prefs b/plugins/org.eclipse.emf.compare.diagram.papyrus/.settings/org.eclipse.core.runtime.prefs
new file mode 100644
index 000000000..5a0ad22d2
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.diagram.papyrus/.settings/org.eclipse.core.runtime.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+line.separator=\n
diff --git a/plugins/org.eclipse.emf.compare.diagram.papyrus/.settings/org.eclipse.jdt.core.prefs b/plugins/org.eclipse.emf.compare.diagram.papyrus/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 000000000..8598aa198
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.diagram.papyrus/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,383 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
+org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
+org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
+org.eclipse.jdt.core.compiler.annotation.nonnullisdefault=disabled
+org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
+org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.5
+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.annotationSuperInterface=warning
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.autoboxing=warning
+org.eclipse.jdt.core.compiler.problem.comparingIdentical=error
+org.eclipse.jdt.core.compiler.problem.deadCode=error
+org.eclipse.jdt.core.compiler.problem.deprecation=warning
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
+org.eclipse.jdt.core.compiler.problem.emptyStatement=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=disabled
+org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=error
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=error
+org.eclipse.jdt.core.compiler.problem.includeFieldsInNullAnalysis=disabled
+org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=enabled
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=warning
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=warning
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
+org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=error
+org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=error
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=disabled
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=warning
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=error
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=error
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
+org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
+org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
+org.eclipse.jdt.core.compiler.problem.nullReference=warning
+org.eclipse.jdt.core.compiler.problem.nullSpecInsufficientInfo=warning
+org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
+org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=warning
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=error
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning
+org.eclipse.jdt.core.compiler.problem.potentialNullSpecViolation=error
+org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=warning
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
+org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
+org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
+org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
+org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.unusedImport=warning
+org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
+org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
+org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameter=warning
+org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
+org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.source=1.5
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_assignment=0
+org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=1
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=true
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=true
+org.eclipse.jdt.core.formatter.comment.format_block_comments=true
+org.eclipse.jdt.core.formatter.comment.format_header=false
+org.eclipse.jdt.core.formatter.comment.format_html=true
+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true
+org.eclipse.jdt.core.formatter.comment.format_line_comments=true
+org.eclipse.jdt.core.formatter.comment.format_source_code=true
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=true
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=true
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=insert
+org.eclipse.jdt.core.formatter.comment.line_length=110
+org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
+org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
+org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
+org.eclipse.jdt.core.formatter.compact_else_if=true
+org.eclipse.jdt.core.formatter.continuation_indentation=2
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
+org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
+org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_empty_lines=false
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=true
+org.eclipse.jdt.core.formatter.indentation.size=8
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.join_lines_in_comments=true
+org.eclipse.jdt.core.formatter.join_wrapped_lines=true
+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.lineSplit=110
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
+org.eclipse.jdt.core.formatter.tabulation.char=tab
+org.eclipse.jdt.core.formatter.tabulation.size=4
+org.eclipse.jdt.core.formatter.use_on_off_tags=true
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=false
diff --git a/plugins/org.eclipse.emf.compare.diagram.papyrus/.settings/org.eclipse.jdt.ui.prefs b/plugins/org.eclipse.emf.compare.diagram.papyrus/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 000000000..4e1442ee9
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.diagram.papyrus/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,60 @@
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+formatter_profile=_EMF Compare
+formatter_settings_version=12
+org.eclipse.jdt.ui.ignorelowercasenames=true
+org.eclipse.jdt.ui.importorder=fr;com;java;javax;org;
+org.eclipse.jdt.ui.ondemandthreshold=99
+org.eclipse.jdt.ui.staticondemandthreshold=99
+sp_cleanup.add_default_serial_version_id=true
+sp_cleanup.add_generated_serial_version_id=false
+sp_cleanup.add_missing_annotations=true
+sp_cleanup.add_missing_deprecated_annotations=true
+sp_cleanup.add_missing_methods=false
+sp_cleanup.add_missing_nls_tags=false
+sp_cleanup.add_missing_override_annotations=true
+sp_cleanup.add_missing_override_annotations_interface_methods=false
+sp_cleanup.add_serial_version_id=false
+sp_cleanup.always_use_blocks=true
+sp_cleanup.always_use_parentheses_in_expressions=false
+sp_cleanup.always_use_this_for_non_static_field_access=false
+sp_cleanup.always_use_this_for_non_static_method_access=false
+sp_cleanup.convert_to_enhanced_for_loop=false
+sp_cleanup.correct_indentation=false
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.make_local_variable_final=false
+sp_cleanup.make_parameters_final=false
+sp_cleanup.make_private_fields_final=true
+sp_cleanup.make_type_abstract_if_missing_method=false
+sp_cleanup.make_variable_declarations_final=false
+sp_cleanup.never_use_blocks=false
+sp_cleanup.never_use_parentheses_in_expressions=true
+sp_cleanup.on_save_use_additional_actions=true
+sp_cleanup.organize_imports=true
+sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
+sp_cleanup.remove_private_constructors=true
+sp_cleanup.remove_trailing_whitespaces=false
+sp_cleanup.remove_trailing_whitespaces_all=true
+sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
+sp_cleanup.remove_unnecessary_casts=false
+sp_cleanup.remove_unnecessary_nls_tags=true
+sp_cleanup.remove_unused_imports=true
+sp_cleanup.remove_unused_local_variables=false
+sp_cleanup.remove_unused_private_fields=true
+sp_cleanup.remove_unused_private_members=false
+sp_cleanup.remove_unused_private_methods=true
+sp_cleanup.remove_unused_private_types=true
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.use_blocks=true
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_parentheses_in_expressions=false
+sp_cleanup.use_this_for_non_static_field_access=false
+sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+sp_cleanup.use_this_for_non_static_method_access=false
+sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/plugins/org.eclipse.emf.compare.diagram.papyrus/.settings/org.eclipse.pde.api.tools.prefs b/plugins/org.eclipse.emf.compare.diagram.papyrus/.settings/org.eclipse.pde.api.tools.prefs
new file mode 100644
index 000000000..01461e0e0
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.diagram.papyrus/.settings/org.eclipse.pde.api.tools.prefs
@@ -0,0 +1,97 @@
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD_WITHOUT_DEFAULT_VALUE=Warning
+ANNOTATION_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Warning
+ANNOTATION_ELEMENT_TYPE_REMOVED_FIELD=Warning
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD=Warning
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Warning
+API_COMPONENT_ELEMENT_TYPE_REMOVED_API_TYPE=Warning
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_API_TYPE=Warning
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_TYPE=Warning
+API_COMPONENT_ELEMENT_TYPE_REMOVED_TYPE=Warning
+API_USE_SCAN_FIELD_SEVERITY=Error
+API_USE_SCAN_METHOD_SEVERITY=Error
+API_USE_SCAN_TYPE_SEVERITY=Error
+CLASS_ELEMENT_TYPE_ADDED_METHOD=Warning
+CLASS_ELEMENT_TYPE_ADDED_RESTRICTIONS=Warning
+CLASS_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Warning
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Warning
+CLASS_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Warning
+CLASS_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Warning
+CLASS_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Warning
+CLASS_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Warning
+CLASS_ELEMENT_TYPE_REMOVED_CONSTRUCTOR=Warning
+CLASS_ELEMENT_TYPE_REMOVED_FIELD=Warning
+CLASS_ELEMENT_TYPE_REMOVED_METHOD=Warning
+CLASS_ELEMENT_TYPE_REMOVED_SUPERCLASS=Warning
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Warning
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Warning
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Warning
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Warning
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Warning
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Warning
+ENUM_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Warning
+ENUM_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Warning
+ENUM_ELEMENT_TYPE_REMOVED_ENUM_CONSTANT=Warning
+ENUM_ELEMENT_TYPE_REMOVED_FIELD=Warning
+ENUM_ELEMENT_TYPE_REMOVED_METHOD=Warning
+ENUM_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Warning
+FIELD_ELEMENT_TYPE_ADDED_VALUE=Warning
+FIELD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Warning
+FIELD_ELEMENT_TYPE_CHANGED_FINAL_TO_NON_FINAL_STATIC_CONSTANT=Warning
+FIELD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Warning
+FIELD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Warning
+FIELD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Warning
+FIELD_ELEMENT_TYPE_CHANGED_TYPE=Warning
+FIELD_ELEMENT_TYPE_CHANGED_VALUE=Warning
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENT=Warning
+FIELD_ELEMENT_TYPE_REMOVED_VALUE=Warning
+ILLEGAL_EXTEND=Warning
+ILLEGAL_IMPLEMENT=Warning
+ILLEGAL_INSTANTIATE=Warning
+ILLEGAL_OVERRIDE=Warning
+ILLEGAL_REFERENCE=Warning
+INTERFACE_ELEMENT_TYPE_ADDED_FIELD=Warning
+INTERFACE_ELEMENT_TYPE_ADDED_METHOD=Warning
+INTERFACE_ELEMENT_TYPE_ADDED_RESTRICTIONS=Warning
+INTERFACE_ELEMENT_TYPE_ADDED_SUPER_INTERFACE_WITH_METHODS=Warning
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Warning
+INTERFACE_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Warning
+INTERFACE_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Warning
+INTERFACE_ELEMENT_TYPE_REMOVED_FIELD=Warning
+INTERFACE_ELEMENT_TYPE_REMOVED_METHOD=Warning
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Warning
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Warning
+INVALID_JAVADOC_TAG=Ignore
+INVALID_REFERENCE_IN_SYSTEM_LIBRARIES=Error
+LEAK_EXTEND=Warning
+LEAK_FIELD_DECL=Warning
+LEAK_IMPLEMENT=Warning
+LEAK_METHOD_PARAM=Warning
+LEAK_METHOD_RETURN_TYPE=Warning
+METHOD_ELEMENT_TYPE_ADDED_RESTRICTIONS=Warning
+METHOD_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Warning
+METHOD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Warning
+METHOD_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Warning
+METHOD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Warning
+METHOD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Warning
+METHOD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Warning
+METHOD_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Warning
+METHOD_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Warning
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Warning
+MISSING_EE_DESCRIPTIONS=Error
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_CLASS_BOUND=Warning
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Warning
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Warning
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Warning
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Warning
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Warning
+UNUSED_PROBLEM_FILTERS=Warning
+automatically_removed_unused_problem_filters=false
+eclipse.preferences.version=1
+incompatible_api_component_version=Warning
+incompatible_api_component_version_include_major_without_breaking_change=Disabled
+incompatible_api_component_version_include_minor_without_api_change=Disabled
+invalid_since_tag_version=Warning
+malformed_since_tag=Warning
+missing_since_tag=Warning
+report_api_breakage_when_major_version_incremented=Disabled
+report_resolution_errors_api_component=Warning
diff --git a/plugins/org.eclipse.emf.compare.diagram.papyrus/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.compare.diagram.papyrus/META-INF/MANIFEST.MF
new file mode 100644
index 000000000..4a34b5868
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.diagram.papyrus/META-INF/MANIFEST.MF
@@ -0,0 +1,16 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.emf.compare.diagram.papyrus;singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Require-Bundle: org.eclipse.core.runtime;bundle-version="3.10.0",
+ org.eclipse.emf.compare.rcp;bundle-version="2.3.0",
+ org.eclipse.emf.compare;bundle-version="3.2.0",
+ org.eclipse.uml2.uml;bundle-version="5.0.0",
+ org.eclipse.gmf.runtime.notation;bundle-version="1.8.0"
+Bundle-ActivationPolicy: lazy
+Import-Package: com.google.common.collect;version="[11.0.0,16.0.0)"
+Bundle-Activator: org.eclipse.emf.compare.diagram.papyrus.internal.CompareDiagramPapyrusPlugin
+Bundle-Vendor: %providerName
+Export-Package: org.eclipse.emf.compare.diagram.papyrus.internal
diff --git a/plugins/org.eclipse.emf.compare.diagram.papyrus/build.properties b/plugins/org.eclipse.emf.compare.diagram.papyrus/build.properties
new file mode 100644
index 000000000..cc91072ec
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.diagram.papyrus/build.properties
@@ -0,0 +1,4 @@
+source.. = src/
+bin.includes = META-INF/,\
+ .,\
+ plugin.xml
diff --git a/plugins/org.eclipse.emf.compare.diagram.papyrus/plugin.properties b/plugins/org.eclipse.emf.compare.diagram.papyrus/plugin.properties
new file mode 100644
index 000000000..c7798b58a
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.diagram.papyrus/plugin.properties
@@ -0,0 +1,12 @@
+#*******************************************************************************
+ # Copyright (c) 2015 Obeo.
+ # All rights reserved. This program and the accompanying materials
+ # are made available under the terms of the Eclipse Public License v1.0
+ # which accompanies this distribution, and is available at
+ # http://www.eclipse.org/legal/epl-v10.html
+ #
+ # Contributors:
+ # Obeo - initial API and implementation
+ #******************************************************************************/
+pluginName = EMF Compare Papyrus Diagram Comparison Support
+providerName = Eclipse Modeling Project
diff --git a/plugins/org.eclipse.emf.compare.diagram.papyrus/plugin.xml b/plugins/org.eclipse.emf.compare.diagram.papyrus/plugin.xml
new file mode 100644
index 000000000..e2ba4b072
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.diagram.papyrus/plugin.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+
+<!--
+ Copyright (c) 2015 Obeo.
+ All rights reserved. This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License v1.0
+ which accompanies this distribution, and is available at
+ http://www.eclipse.org/legal/epl-v10.html
+
+ Contributors:
+ Obeo - initial API and implementation
+-->
+
+<plugin>
+ <extension
+ point="org.eclipse.emf.compare.rcp.postProcessor">
+ <processor
+ class="org.eclipse.emf.compare.diagram.papyrus.internal.PapyrusDiagramPostProcessor"
+ description="Post-processor that handles specifics of Papyrus UML diagrams."
+ label="Papyrus Diagram Post-Processor"
+ ordinal="35">
+ <nsURI
+ value="http://www.eclipse.org/gmf/runtime/\d.\d.\d/notation">
+ </nsURI>
+ </processor>
+ </extension>
+
+</plugin>
diff --git a/plugins/org.eclipse.emf.compare.diagram.papyrus/pom.xml b/plugins/org.eclipse.emf.compare.diagram.papyrus/pom.xml
new file mode 100644
index 000000000..0312a4a5f
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.diagram.papyrus/pom.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.eclipse.emf.compare</groupId>
+ <artifactId>emf.compare-bundle-parent</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
+ <relativePath>../../org.eclipse.emf.compare-parent/bundle-parent</relativePath>
+ </parent>
+ <groupId>org.eclipse.emf.compare</groupId>
+ <artifactId>org.eclipse.emf.compare.diagram.papyrus</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
+ <packaging>eclipse-plugin</packaging>
+</project>
diff --git a/plugins/org.eclipse.emf.compare.diagram.papyrus/src/org/eclipse/emf/compare/diagram/papyrus/internal/AbstractPapyrusDiagramDiffHandler.java b/plugins/org.eclipse.emf.compare.diagram.papyrus/src/org/eclipse/emf/compare/diagram/papyrus/internal/AbstractPapyrusDiagramDiffHandler.java
new file mode 100644
index 000000000..d4936de32
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.diagram.papyrus/src/org/eclipse/emf/compare/diagram/papyrus/internal/AbstractPapyrusDiagramDiffHandler.java
@@ -0,0 +1,116 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.emf.compare.diagram.papyrus.internal;
+
+import org.eclipse.emf.compare.Diff;
+import org.eclipse.emf.compare.Match;
+import org.eclipse.emf.compare.ReferenceChange;
+import org.eclipse.emf.compare.utils.MatchUtil;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.gmf.runtime.notation.Connector;
+import org.eclipse.gmf.runtime.notation.NotationPackage;
+import org.eclipse.uml2.uml.Property;
+import org.eclipse.uml2.uml.Transition;
+import org.eclipse.uml2.uml.UMLPackage;
+
+/**
+ * Super-class of handlers of this project to mutualize some code.
+ *
+ * @author <a href="mailto:laurent.delaigue@obeo.fr">Laurent Delaigue</a>
+ */
+public abstract class AbstractPapyrusDiagramDiffHandler implements IDiffHandler {
+
+ /**
+ * Indicates whether the given {@link Diff} is a change of the reference <code>uml::Property.type</code>.
+ *
+ * @param diff
+ * The diff
+ * @return <code>true</code> if and only if the given diff is a {@link ReferenceChange} that concerns the
+ * <code>uml::TypedElement.type</code> reference, on an Property
+ */
+ protected boolean isPropertyTypeChange(ReferenceChange diff) {
+ EReference ref = diff.getReference();
+ return ref == UMLPackage.Literals.TYPED_ELEMENT__TYPE
+ && getOriginMatchObject(diff) instanceof Property;
+ }
+
+ /**
+ * Indicates whether the given {@link ReferenceChange} is a change of the "source" or "target" EReference
+ * of a uml::Transition.
+ *
+ * @param diff
+ * The diff
+ * @return <code>true</code> if and only if the change is that of a Transition's target or source
+ * reference.
+ */
+ protected boolean isTransitionReferenceChange(ReferenceChange diff) {
+ EReference ref = diff.getReference();
+ return (ref == UMLPackage.Literals.TRANSITION__TARGET || ref == UMLPackage.Literals.TRANSITION__SOURCE)
+ && getOriginMatchObject(diff) instanceof Transition;
+ }
+
+ /**
+ * Indicates whether the given {@link ReferenceChange} is a change of the "source" or "target" EReference
+ * of a notation::Connector.
+ *
+ * @param diff
+ * the ref change
+ * @return <code>true</code> if and only if the change is that of a Connector'target or source reference.
+ */
+ protected boolean isConnectorReferenceChange(ReferenceChange diff) {
+ EReference ref = diff.getReference();
+ return (ref == NotationPackage.Literals.EDGE__TARGET || ref == NotationPackage.Literals.EDGE__SOURCE)
+ && getOriginMatchObject(diff) instanceof Connector;
+ }
+
+ /**
+ * Indicates whether the given {@link ReferenceChange} is a part of a more global ADD or DELETE change.
+ *
+ * @param refChange
+ * The ref change
+ * @return <code>true</code> if and only if the given change is part of an ADD or DELETE.
+ */
+ protected boolean isContainedInAddOrDelete(ReferenceChange refChange) {
+ EObject eContainer = refChange.getMatch().eContainer();
+ if (eContainer instanceof Match) {
+ if (MatchUtil.getOriginValue(refChange.getMatch().getComparison(), refChange) == null) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ /**
+ * Provides the EObject of the given diff's match that is on the "origin" side, which is LEFT for 2-way
+ * and ORIGIN for 3-way.
+ *
+ * @param diff
+ * The diff
+ * @return The EObject of the diff's match that is on the LEFT if the diff's comparison is 2-way, and on
+ * the ORIGIN side if the diff's comparison is 3-way.
+ */
+ protected EObject getOriginMatchObject(Diff diff) {
+ Match match = diff.getMatch();
+ final EObject result;
+ if (match == null) {
+ result = null; // diff is a ResourceLocationChange, for instance
+ } else {
+ if (match.getOrigin() != null) {
+ result = match.getOrigin();
+ } else {
+ result = match.getLeft();
+ }
+ }
+ return result;
+ }
+
+}
diff --git a/plugins/org.eclipse.emf.compare.diagram.papyrus/src/org/eclipse/emf/compare/diagram/papyrus/internal/CompareDiagramPapyrusPlugin.java b/plugins/org.eclipse.emf.compare.diagram.papyrus/src/org/eclipse/emf/compare/diagram/papyrus/internal/CompareDiagramPapyrusPlugin.java
new file mode 100644
index 000000000..723d40226
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.diagram.papyrus/src/org/eclipse/emf/compare/diagram/papyrus/internal/CompareDiagramPapyrusPlugin.java
@@ -0,0 +1,49 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.emf.compare.diagram.papyrus.internal;
+
+import org.eclipse.core.runtime.Plugin;
+import org.osgi.framework.BundleContext;
+
+/**
+ * Activator.
+ *
+ * @author <a href="mailto:laurent.delaigue@obeo.fr">Laurent Delaigue</a>
+ */
+public class CompareDiagramPapyrusPlugin extends Plugin {
+
+ /** The plugin ID. */
+ public static final String PLUGIN_ID = "org.eclipse.emf.compare.diagram.papyrus"; //$NON-NLS-1$
+
+ /** This plug-in's shared instance. */
+ private static CompareDiagramPapyrusPlugin plugin;
+
+ /**
+ * Returns the shared instance.
+ *
+ * @return the shared instance
+ */
+ public static CompareDiagramPapyrusPlugin getDefault() {
+ return plugin;
+ }
+
+ @Override
+ public void start(BundleContext context) throws Exception {
+ super.start(context);
+ plugin = this;
+ }
+
+ @Override
+ public void stop(BundleContext context) throws Exception {
+ plugin = null;
+ super.stop(context);
+ }
+}
diff --git a/plugins/org.eclipse.emf.compare.diagram.papyrus/src/org/eclipse/emf/compare/diagram/papyrus/internal/DiffIndexer.java b/plugins/org.eclipse.emf.compare.diagram.papyrus/src/org/eclipse/emf/compare/diagram/papyrus/internal/DiffIndexer.java
new file mode 100644
index 000000000..6f7842240
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.diagram.papyrus/src/org/eclipse/emf/compare/diagram/papyrus/internal/DiffIndexer.java
@@ -0,0 +1,68 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.emf.compare.diagram.papyrus.internal;
+
+import com.google.common.collect.LinkedHashMultimap;
+
+import java.util.Set;
+
+import org.eclipse.emf.compare.Diff;
+
+/**
+ * A DiffIndexer allows to store {@link Diff}s by arbitrary keys. It basically wrpas a Multimap, but it could
+ * be enriched to index several different kinds of relations between {@link Diff}s.
+ *
+ * @author <a href="mailto:laurent.delaigue@obeo.fr">Laurent Delaigue</a>
+ */
+public class DiffIndexer {
+
+ /** The multimap used to indef Diffs. */
+ private final LinkedHashMultimap<Object, Diff> equivalentDiffsByKey;
+
+ /**
+ * Constructor.
+ */
+ public DiffIndexer() {
+ this.equivalentDiffsByKey = LinkedHashMultimap.create();
+ }
+
+ /**
+ * Store a Diff in the index.
+ *
+ * @param key
+ * The key to use
+ * @param diff
+ * The Diff to index
+ */
+ public void putEquivalentDiff(Object key, Diff diff) {
+ equivalentDiffsByKey.put(key, diff);
+ }
+
+ /**
+ * Retrieve all the {@link Diff}s for the given key.
+ *
+ * @param key
+ * The key
+ * @return A Set od diffs indexed for the given key, which may be empty but never <code>null</code>.
+ */
+ public Set<Diff> getEquivalentDiffs(Object key) {
+ return equivalentDiffsByKey.get(key);
+ }
+
+ /**
+ * Retrieve all the keys in the index.
+ *
+ * @return a Set of all the keys contained in this indexer.
+ */
+ public Set<Object> getEquivalentDiffsKeySet() {
+ return equivalentDiffsByKey.keySet();
+ }
+}
diff --git a/plugins/org.eclipse.emf.compare.diagram.papyrus/src/org/eclipse/emf/compare/diagram/papyrus/internal/FeatureInstance.java b/plugins/org.eclipse.emf.compare.diagram.papyrus/src/org/eclipse/emf/compare/diagram/papyrus/internal/FeatureInstance.java
new file mode 100644
index 000000000..05ae36c6e
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.diagram.papyrus/src/org/eclipse/emf/compare/diagram/papyrus/internal/FeatureInstance.java
@@ -0,0 +1,92 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.emf.compare.diagram.papyrus.internal;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+/**
+ * Instance of a feature for an EObject, designed to be used as a key in a Map.
+ *
+ * @author <a href="mailto:laurent.delaigue@obeo.fr">Laurent Delaigue</a>
+ */
+class FeatureInstance {
+ /** The EObject. */
+ private final EObject eObject;
+
+ /** The feature. */
+ private final EStructuralFeature feature;
+
+ /**
+ * Constructor.
+ *
+ * @param eObject
+ * The EObject
+ * @param feature
+ * The feature
+ */
+ public FeatureInstance(EObject eObject, EStructuralFeature feature) {
+ super();
+ this.eObject = eObject;
+ this.feature = feature;
+ }
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ // CHECKSTYLE:OFF Code generated by JDT
+ result = prime * result + ((eObject == null) ? 0 : eObject.hashCode());
+ result = prime * result + ((feature == null) ? 0 : feature.hashCode());
+ // CHECKSTYLE:ON
+ return result;
+ }
+
+ // CHECKSTYLE:OFF Code generated by JDT
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ if (obj == null) {
+ return false;
+ }
+ if (getClass() != obj.getClass()) {
+ return false;
+ }
+ FeatureInstance other = (FeatureInstance)obj;
+ if (eObject != other.eObject) {
+ return false;
+ }
+ if (feature != other.feature) {
+ return false;
+ }
+ return true;
+ // CHECKSTYLE:ON
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder b = new StringBuilder();
+ if (eObject == null) {
+ b.append("<null>."); //$NON-NLS-1$
+ } else {
+ b.append(eObject.eClass().getName()).append('@');
+ b.append(Integer.toHexString(eObject.hashCode())).append('.');
+ }
+ if (feature == null) {
+ b.append("<null>"); //$NON-NLS-1$
+ } else {
+ b.append(feature.getName());
+ }
+ return b.toString();
+ }
+}
diff --git a/plugins/org.eclipse.emf.compare.diagram.papyrus/src/org/eclipse/emf/compare/diagram/papyrus/internal/IDiffHandler.java b/plugins/org.eclipse.emf.compare.diagram.papyrus/src/org/eclipse/emf/compare/diagram/papyrus/internal/IDiffHandler.java
new file mode 100644
index 000000000..5ea6b094a
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.diagram.papyrus/src/org/eclipse/emf/compare/diagram/papyrus/internal/IDiffHandler.java
@@ -0,0 +1,29 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.emf.compare.diagram.papyrus.internal;
+
+import org.eclipse.emf.compare.Diff;
+
+/**
+ * A Diff handler performs some treatment on a given {@link Diff}.
+ *
+ * @author <a href="mailto:laurent.delaigue@obeo.fr">Laurent Delaigue</a>
+ */
+public interface IDiffHandler {
+
+ /**
+ * Handles the given diff.
+ *
+ * @param diff
+ * The diff ta handle.
+ */
+ void handle(Diff diff);
+}
diff --git a/plugins/org.eclipse.emf.compare.diagram.papyrus/src/org/eclipse/emf/compare/diagram/papyrus/internal/PapyrusDiagram2WayDiffHandler.java b/plugins/org.eclipse.emf.compare.diagram.papyrus/src/org/eclipse/emf/compare/diagram/papyrus/internal/PapyrusDiagram2WayDiffHandler.java
new file mode 100644
index 000000000..573ec48d2
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.diagram.papyrus/src/org/eclipse/emf/compare/diagram/papyrus/internal/PapyrusDiagram2WayDiffHandler.java
@@ -0,0 +1,108 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.emf.compare.diagram.papyrus.internal;
+
+import org.eclipse.emf.compare.Diff;
+import org.eclipse.emf.compare.DifferenceKind;
+import org.eclipse.emf.compare.Match;
+import org.eclipse.emf.compare.ReferenceChange;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.gmf.runtime.notation.Connector;
+import org.eclipse.gmf.runtime.notation.NotationPackage;
+import org.eclipse.uml2.uml.Association;
+import org.eclipse.uml2.uml.Property;
+import org.eclipse.uml2.uml.Transition;
+import org.eclipse.uml2.uml.UMLPackage;
+
+/**
+ * <p>
+ * Handles a diff for 2-way comparisons by indexing the given diff with a relevant key if this diff can be
+ * related to another diff in the same model. It only cares about notation and UML diffs that can be related
+ * with one another (changing the target of an Edge and the related change of UML Property if the Edge
+ * represents an Association, an so on).
+ * </p>
+ * This should only be used with 2-way comparisons!
+ *
+ * @author <a href="mailto:laurent.delaigue@obeo.fr">Laurent Delaigue</a>
+ */
+public class PapyrusDiagram2WayDiffHandler extends AbstractPapyrusDiagramDiffHandler {
+ /** The indexer. */
+ private final DiffIndexer indexer;
+
+ /**
+ * Constructor.
+ *
+ * @param indexer
+ * The indexer
+ */
+ public PapyrusDiagram2WayDiffHandler(DiffIndexer indexer) {
+ this.indexer = indexer;
+ }
+
+ /**
+ * Handle the given diff.
+ *
+ * @param diff
+ * he diff to handle
+ */
+ public void handle(Diff diff) {
+ if (diff instanceof ReferenceChange && diff.getKind() == DifferenceKind.CHANGE) {
+ ReferenceChange refChange = (ReferenceChange)diff;
+ // Check the match is not contained in an ADD or DELETE
+ if (!isContainedInAddOrDelete(refChange)) {
+ handleActualReferenceChange(refChange);
+ }
+ }
+ }
+
+ /**
+ * Handles an actual reference change, that is to say a reference change that is not contained in an ADD
+ * or a DELETE diff.
+ *
+ * @param refChange
+ * The {@link ReferenceChange} to handle
+ */
+ private void handleActualReferenceChange(ReferenceChange refChange) {
+ if (isConnectorReferenceChange(refChange)) {
+ // Changing the target of an edge that represents an
+ // association has consequences
+ Match match = refChange.getMatch();
+ Connector left = (Connector)match.getLeft();
+ EObject leftElement = left.getElement();
+ if (leftElement instanceof Association) {
+ Association assoc = (Association)leftElement;
+ for (Property memberEnd : assoc.getMemberEnds()) {
+ indexer.putEquivalentDiff(memberEnd, refChange);
+ }
+ } else if (leftElement instanceof Transition) {
+ if (refChange.getReference() == NotationPackage.Literals.EDGE__SOURCE) {
+ indexer.putEquivalentDiff(new FeatureInstance(leftElement,
+ UMLPackage.Literals.TRANSITION__SOURCE), refChange);
+ } else if (refChange.getReference() == NotationPackage.Literals.EDGE__TARGET) {
+ indexer.putEquivalentDiff(new FeatureInstance(leftElement,
+ UMLPackage.Literals.TRANSITION__TARGET), refChange);
+ }
+ }
+ } else if (isPropertyTypeChange(refChange)) {
+ // We record property type changes for properties
+ // because those that participate in relations
+ // materialize in notation files by a target change in
+ // the related Connector
+ indexer.putEquivalentDiff(refChange.getMatch().getLeft(), refChange);
+ } else if (isTransitionReferenceChange(refChange)) {
+ indexer.putEquivalentDiff(new FeatureInstance(refChange.getMatch().getLeft(), refChange
+ .getReference()), refChange);
+ }
+ // TODO Manage other kinds of relations (Dependency, what
+ // else in UML?)
+ }
+
+}
diff --git a/plugins/org.eclipse.emf.compare.diagram.papyrus/src/org/eclipse/emf/compare/diagram/papyrus/internal/PapyrusDiagram3WayDiffHandler.java b/plugins/org.eclipse.emf.compare.diagram.papyrus/src/org/eclipse/emf/compare/diagram/papyrus/internal/PapyrusDiagram3WayDiffHandler.java
new file mode 100644
index 000000000..3cdc279e7
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.diagram.papyrus/src/org/eclipse/emf/compare/diagram/papyrus/internal/PapyrusDiagram3WayDiffHandler.java
@@ -0,0 +1,132 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.emf.compare.diagram.papyrus.internal;
+
+import org.eclipse.emf.compare.Diff;
+import org.eclipse.emf.compare.DifferenceKind;
+import org.eclipse.emf.compare.Match;
+import org.eclipse.emf.compare.ReferenceChange;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.gmf.runtime.notation.Connector;
+import org.eclipse.gmf.runtime.notation.NotationPackage;
+import org.eclipse.uml2.uml.Association;
+import org.eclipse.uml2.uml.Property;
+import org.eclipse.uml2.uml.Transition;
+import org.eclipse.uml2.uml.UMLPackage;
+
+/**
+ * <p>
+ * Handles a diff for 3-way comparisons by indexing the given diff with a relevant key if this diff can be
+ * related to another diff in the same model. It only cares about notation and UML diffs that can be related
+ * with one another (changing the target of an Edge and the related change of UML Property if the Edge
+ * represents an Association, an so on).
+ * </p>
+ * This should only be used with 3-way comparisons!
+ *
+ * @author <a href="mailto:laurent.delaigue@obeo.fr">Laurent Delaigue</a>
+ */
+public class PapyrusDiagram3WayDiffHandler extends AbstractPapyrusDiagramDiffHandler {
+ /**
+ * Constructor.
+ *
+ * @param indexer
+ * The indexer
+ */
+ private final DiffIndexer indexer;
+
+ /**
+ * Constructor.
+ *
+ * @param indexer
+ * The indexer
+ */
+ public PapyrusDiagram3WayDiffHandler(DiffIndexer indexer) {
+ this.indexer = indexer;
+ }
+
+ /**
+ * Handle the given diff.
+ *
+ * @param diff
+ * he diff to handle
+ */
+ public void handle(Diff diff) {
+ if (diff instanceof ReferenceChange && diff.getKind() == DifferenceKind.CHANGE) {
+ ReferenceChange refChange = (ReferenceChange)diff;
+ if (!isContainedInAddOrDelete(refChange)) {
+ handleActualReferenceChange(refChange);
+ }
+ }
+ }
+
+ /**
+ * Handles a {@link ReferenceChange} that is not part of an ADD or DELETE.
+ *
+ * @param refChange
+ * The {@link ReferenceChange} to handle
+ */
+ private void handleActualReferenceChange(ReferenceChange refChange) {
+ if (isConnectorReferenceChange(refChange)) {
+ // Changing the target of an edge that represents an
+ // association has consequences
+ Connector connectorOnDiffSide = (Connector)getMatchObjectOnSameSideAs(refChange);
+ EObject element = connectorOnDiffSide.getElement();
+ if (element instanceof Association) {
+ Association assoc = (Association)element;
+ for (Property memberEnd : assoc.getMemberEnds()) {
+ indexer.putEquivalentDiff(new SidedEObject(memberEnd, refChange.getSource()), refChange);
+ }
+ } else if (element instanceof Transition) {
+ if (refChange.getReference() == NotationPackage.Literals.EDGE__SOURCE) {
+ indexer.putEquivalentDiff(new SidedFeatureInstance(element,
+ UMLPackage.Literals.TRANSITION__SOURCE, refChange.getSource()), refChange);
+ } else if (refChange.getReference() == NotationPackage.Literals.EDGE__TARGET) {
+ indexer.putEquivalentDiff(new SidedFeatureInstance(element,
+ UMLPackage.Literals.TRANSITION__TARGET, refChange.getSource()), refChange);
+ }
+ }
+ } else if (isPropertyTypeChange(refChange)) {
+ // We record property type changes for properties
+ // because those that participate in relations
+ // materialize in notation files by a target change in
+ // the related Connector
+ indexer.putEquivalentDiff(new SidedEObject(getMatchObjectOnSameSideAs(refChange), refChange
+ .getSource()), refChange);
+ } else if (isTransitionReferenceChange(refChange)) {
+ indexer.putEquivalentDiff(new SidedFeatureInstance(getMatchObjectOnSameSideAs(refChange),
+ refChange.getReference(), refChange.getSource()), refChange);
+ }
+ // TODO Manage other kinds of relations (Dependency, what
+ // else in UML?)
+ }
+
+ /**
+ * Proides the EObject of the given diff's match that is on the same side as the given diff.
+ *
+ * @param diff
+ * The diff
+ * @return The EObject of the given diff's match that's on the same side as the diff.
+ */
+ protected EObject getMatchObjectOnSameSideAs(Diff diff) {
+ Match match = diff.getMatch();
+ // CHECKSTYLE:OFF No need of a default case
+ switch (diff.getSource()) {
+ case LEFT:
+ return match.getLeft();
+ case RIGHT:
+ return match.getRight();
+ }
+ // CHECKSTYLE:ON
+ throw new IllegalStateException(
+ "The diff should be part of a 3-way comparison and have a non-null source."); //$NON-NLS-1$
+ }
+
+}
diff --git a/plugins/org.eclipse.emf.compare.diagram.papyrus/src/org/eclipse/emf/compare/diagram/papyrus/internal/PapyrusDiagramPostComparison.java b/plugins/org.eclipse.emf.compare.diagram.papyrus/src/org/eclipse/emf/compare/diagram/papyrus/internal/PapyrusDiagramPostComparison.java
new file mode 100644
index 000000000..7044ee137
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.diagram.papyrus/src/org/eclipse/emf/compare/diagram/papyrus/internal/PapyrusDiagramPostComparison.java
@@ -0,0 +1,92 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.emf.compare.diagram.papyrus.internal;
+
+import com.google.common.collect.Sets;
+
+import java.util.Collections;
+import java.util.Set;
+
+import org.eclipse.emf.compare.Comparison;
+import org.eclipse.emf.compare.Diff;
+
+/**
+ * This class materializes the post-comparison treatment. This treatment manages relations between notation
+ * changes and UML semantic changes when such changes should be linked. For instance, when the target of a
+ * connector is changed in the representation, it is also changed in the UML model.
+ *
+ * @author <a href="mailto:laurent.delaigue@obeo.fr">Laurent Delaigue</a>
+ */
+public class PapyrusDiagramPostComparison implements Runnable {
+ /** The comparison. */
+ private final Comparison comparison;
+
+ /** The indexer. */
+ private final DiffIndexer indexer;
+
+ /**
+ * Constructor.
+ *
+ * @param comparison
+ * The comparison
+ */
+ public PapyrusDiagramPostComparison(Comparison comparison) {
+ this.comparison = comparison;
+ indexer = new DiffIndexer();
+ }
+
+ /**
+ * Executes the treatment. The algorithm takes 2 passes:
+ * <ol>
+ * <li>Index all {@link Diff}s that may be related with another {@link Diff}, using specific keys</li>
+ * <li>for each key in the index, create bi-directional implication links between the concerned diffs</li>
+ * </ol>
+ * This algorithm is linear, indexing in the first pass prevents fancy searches in the comparison model
+ * which may impede scalability.
+ */
+ public void run() {
+ IDiffHandler handler = getHandler();
+ for (Diff diff : comparison.getDifferences()) {
+ handler.handle(diff);
+ }
+ linkEquivalentDiffsWithRequiresRelations();
+ }
+
+ /**
+ * Once all related differences are indexed, walk through the index and create the implication links
+ * between all concerned {@link Diff}s. The indexing of {@link Diff}s must have been done before calling
+ * this method.
+ */
+ private void linkEquivalentDiffsWithRequiresRelations() {
+ for (Object key : indexer.getEquivalentDiffsKeySet()) {
+ Set<Diff> diffs = indexer.getEquivalentDiffs(key);
+ if (diffs.size() > 1) {
+ for (Diff diff : diffs) {
+ diff.getRequires().addAll(Sets.difference(diffs, Collections.singleton(diff)));
+ }
+ }
+ }
+ }
+
+ /**
+ * Provide the {@link IDiffHandler} for the comparison used by this instance.
+ *
+ * @return An indexer that manages 3-way comparisons if the comparison is 3-way, or an indexer that
+ * manages 2-way comparisons otherwise.
+ */
+ protected IDiffHandler getHandler() {
+ if (comparison.isThreeWay()) {
+ return new PapyrusDiagram3WayDiffHandler(indexer);
+ } else {
+ return new PapyrusDiagram2WayDiffHandler(indexer);
+ }
+ }
+}
diff --git a/plugins/org.eclipse.emf.compare.diagram.papyrus/src/org/eclipse/emf/compare/diagram/papyrus/internal/PapyrusDiagramPostProcessor.java b/plugins/org.eclipse.emf.compare.diagram.papyrus/src/org/eclipse/emf/compare/diagram/papyrus/internal/PapyrusDiagramPostProcessor.java
new file mode 100644
index 000000000..568e446c5
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.diagram.papyrus/src/org/eclipse/emf/compare/diagram/papyrus/internal/PapyrusDiagramPostProcessor.java
@@ -0,0 +1,73 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.emf.compare.diagram.papyrus.internal;
+
+import org.eclipse.emf.common.util.Monitor;
+import org.eclipse.emf.compare.Comparison;
+import org.eclipse.emf.compare.postprocessor.IPostProcessor;
+
+/**
+ * Post-processor used to manage interactions between papyrus diagrams (*.notation files) and the related UML
+ * models (*.uml files).
+ *
+ * @author <a href="mailto:laurent.delaigue@obeo.fr">Laurent Delaigue</a>
+ */
+public class PapyrusDiagramPostProcessor implements IPostProcessor {
+
+ /**
+ * {@inheritDoc}
+ */
+ public void postMatch(Comparison comparison, Monitor monitor) {
+ // Nothing to do here
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void postDiff(Comparison comparison, Monitor monitor) {
+ // Nothing to do here
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void postRequirements(Comparison comparison, Monitor monitor) {
+ // Nothing to do here
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void postEquivalences(Comparison comparison, Monitor monitor) {
+ // Nothing to do here
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void postConflicts(Comparison comparison, Monitor monitor) {
+ // Nothing to do here
+ }
+
+ /**
+ * creates links between notation and UML changes when they should be linked.
+ *
+ * @param comparison
+ * The comparison
+ * @param monitor
+ * The progress monitor
+ */
+ public void postComparison(Comparison comparison, Monitor monitor) {
+ if (monitor == null || !monitor.isCanceled()) {
+ new PapyrusDiagramPostComparison(comparison).run();
+ }
+ }
+}
diff --git a/plugins/org.eclipse.emf.compare.diagram.papyrus/src/org/eclipse/emf/compare/diagram/papyrus/internal/SidedEObject.java b/plugins/org.eclipse.emf.compare.diagram.papyrus/src/org/eclipse/emf/compare/diagram/papyrus/internal/SidedEObject.java
new file mode 100644
index 000000000..496fd15e9
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.diagram.papyrus/src/org/eclipse/emf/compare/diagram/papyrus/internal/SidedEObject.java
@@ -0,0 +1,83 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.emf.compare.diagram.papyrus.internal;
+
+import org.eclipse.emf.compare.DifferenceSource;
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * Instance of a feature for an EObject, designed to be used as a key in a Map.
+ *
+ * @author <a href="mailto:laurent.delaigue@obeo.fr">Laurent Delaigue</a>
+ */
+class SidedEObject {
+ /** The EObject. */
+ private final EObject eObject;
+
+ /** The side. */
+ private final DifferenceSource side;
+
+ /**
+ * Constructor.
+ *
+ * @param eObject
+ * The EObject
+ * @param side
+ * The side
+ */
+ public SidedEObject(EObject eObject, DifferenceSource side) {
+ super();
+ this.eObject = eObject;
+ this.side = side;
+ }
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ // CHECKSTYLE:OFF Code generated by JDT
+ result = prime * result + ((eObject == null) ? 0 : eObject.hashCode());
+ result = prime * result + ((side == null) ? 0 : side.hashCode());
+ // CHECKSTYLE:ON
+ return result;
+ }
+
+ // CHECKSTYLE:OFF Code generated by JDT
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ if (obj == null) {
+ return false;
+ }
+ if (getClass() != obj.getClass()) {
+ return false;
+ }
+ SidedEObject other = (SidedEObject)obj;
+ if (eObject != other.eObject) {
+ return false;
+ }
+ if (side != other.side) {
+ return false;
+ }
+ return true;
+ // CHECKSTYLE:ON
+ }
+
+ @Override
+ public String toString() {
+ if (eObject == null) {
+ return "<null>-" + side; //$NON-NLS-1$
+ }
+ return eObject.eClass().getName() + '-' + side.getName();
+ }
+}
diff --git a/plugins/org.eclipse.emf.compare.diagram.papyrus/src/org/eclipse/emf/compare/diagram/papyrus/internal/SidedFeatureInstance.java b/plugins/org.eclipse.emf.compare.diagram.papyrus/src/org/eclipse/emf/compare/diagram/papyrus/internal/SidedFeatureInstance.java
new file mode 100644
index 000000000..e56a0e5cd
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.diagram.papyrus/src/org/eclipse/emf/compare/diagram/papyrus/internal/SidedFeatureInstance.java
@@ -0,0 +1,75 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.emf.compare.diagram.papyrus.internal;
+
+import org.eclipse.emf.compare.DifferenceSource;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+/**
+ * Instance of a feature for an EObject on a side of a comparison.
+ *
+ * @author <a href="mailto:laurent.delaigue@obeo.fr">Laurent Delaigue</a>
+ */
+class SidedFeatureInstance extends FeatureInstance {
+ /** The side. */
+ private final DifferenceSource side;
+
+ /**
+ * Constructor.
+ *
+ * @param eObject
+ * The EObject
+ * @param feature
+ * The feature
+ * @param side
+ * The side
+ */
+ public SidedFeatureInstance(EObject eObject, EStructuralFeature feature, DifferenceSource side) {
+ super(eObject, feature);
+ this.side = side;
+ }
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = super.hashCode();
+ // CHECKSTYLE:OFF Code generated by JDT
+ result = prime * result + ((side == null) ? 0 : side.hashCode());
+ // CHECKSTYLE:ON
+ return result;
+ }
+
+ // CHECKSTYLE:OFF Code generated by JDT
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ if (!super.equals(obj)) {
+ return false;
+ }
+ if (getClass() != obj.getClass()) {
+ return false;
+ }
+ SidedFeatureInstance other = (SidedFeatureInstance)obj;
+ if (side != other.side) {
+ return false;
+ }
+ return true;
+ // CHECKSTYLE:ON
+ }
+
+ @Override
+ public String toString() {
+ return super.toString() + '-' + side.getName();
+ }
+}

Back to the top