Adding local comparison cases
Change-Id: I4043dbf7cab19b54bf60a1bb4ecc0855a0fc53a9
diff --git a/testLocalCrossReference/.project b/testLocalCrossReference/.project
new file mode 100644
index 0000000..ead448e
--- /dev/null
+++ b/testLocalCrossReference/.project
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>testLocalCrossReference</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ </buildSpec>
+ <natures>
+ </natures>
+</projectDescription>
diff --git a/testLocalCrossReference/model1/My.ecore b/testLocalCrossReference/model1/My.ecore
new file mode 100644
index 0000000..ac4e079
--- /dev/null
+++ b/testLocalCrossReference/model1/My.ecore
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="pack">
+ <eClassifiers xsi:type="ecore:EClass" name="ClassA">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="ref" eType="ecore:EClass types.ecore#//ClassType"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="attr" eType="ecore:EDataType types.ecore#//BooleanType"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ClassB"/>
+</ecore:EPackage>
diff --git a/testLocalCrossReference/model1/types.ecore b/testLocalCrossReference/model1/types.ecore
new file mode 100644
index 0000000..b998468
--- /dev/null
+++ b/testLocalCrossReference/model1/types.ecore
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="types">
+ <eClassifiers xsi:type="ecore:EClass" name="ClassType"/>
+ <eClassifiers xsi:type="ecore:EDataType" name="StringType" instanceClassName="java.lang.String"/>
+ <eClassifiers xsi:type="ecore:EDataType" name="BooleanType" instanceClassName="java.lang.Boolean"/>
+</ecore:EPackage>
diff --git a/testLocalCrossReference/model2/My.ecore b/testLocalCrossReference/model2/My.ecore
new file mode 100644
index 0000000..2d48139
--- /dev/null
+++ b/testLocalCrossReference/model2/My.ecore
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="pack">
+ <eClassifiers xsi:type="ecore:EClass" name="ClassA" eSuperTypes="types.ecore#//ClassType">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="ref" eType="ecore:EClass types.ecore#//ClassType"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ClassB" eSuperTypes="types.ecore#//ClassType">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="attrib" eType="ecore:EDataType types.ecore#//StringType"/>
+ </eClassifiers>
+</ecore:EPackage>
diff --git a/testLocalCrossReference/model2/types.ecore b/testLocalCrossReference/model2/types.ecore
new file mode 100644
index 0000000..6b7371f
--- /dev/null
+++ b/testLocalCrossReference/model2/types.ecore
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="types">
+ <eClassifiers xsi:type="ecore:EClass" name="ClassType"/>
+ <eClassifiers xsi:type="ecore:EDataType" name="StringType" instanceClassName="java.lang.String"/>
+</ecore:EPackage>
diff --git a/testLocalExtLibrary/.project b/testLocalExtLibrary/.project
new file mode 100644
index 0000000..2ae472f
--- /dev/null
+++ b/testLocalExtLibrary/.project
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>testLocalExtLibrary</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ </buildSpec>
+ <natures>
+ </natures>
+</projectDescription>
diff --git a/testLocalExtLibrary/model1/extlibraryLeft.ecore b/testLocalExtLibrary/model1/extlibraryLeft.ecore
new file mode 100644
index 0000000..30ad08a
--- /dev/null
+++ b/testLocalExtLibrary/model1/extlibraryLeft.ecore
@@ -0,0 +1,104 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="extlibrary" nsURI="http:///org/eclipse/emf/examples/library/extlibrary.ecore/1.0.0"
+ nsPrefix="extlib">
+ <eClassifiers xsi:type="ecore:EClass" name="Book" eSuperTypes="#//CirculatingItem">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="title" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="pages" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"
+ defaultValueLiteral="100"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="category" eType="#//BookCategory"
+ unsettable="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="author" lowerBound="1"
+ eType="#//Writer" eOpposite="#//Writer/books"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Library" eSuperTypes="#//Addressable">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="writers" upperBound="-1"
+ eType="#//Writer" volatile="true" transient="true" derived="true" containment="true"
+ resolveProxies="false">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="group" value="#people"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="employees" upperBound="-1"
+ eType="#//Employee" volatile="true" transient="true" derived="true" containment="true"
+ resolveProxies="false">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="group" value="#people"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="borrowers" upperBound="-1"
+ eType="#//Borrower" volatile="true" transient="true" derived="true" containment="true"
+ resolveProxies="false">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="group" value="#people"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="stock" ordered="false"
+ upperBound="-1" eType="#//Item" containment="true" resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="books" ordered="false"
+ upperBound="-1" eType="#//Book" transient="true" derived="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="branches" upperBound="-1"
+ eType="#//Library" containment="true" eOpposite="#//Library/parentBranch"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="parentBranch" eType="#//Library"
+ eOpposite="#//Library/branches"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="people" upperBound="-1"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EFeatureMapEntry">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="kind" value="group"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Writer" eSuperTypes="#//Person">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ volatile="true" transient="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="books" upperBound="-1"
+ eType="#//Book" eOpposite="#//Book/author"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="BookCategory">
+ <eLiterals name="Mystery"/>
+ <eLiterals name="ScienceFiction" value="1"/>
+ <eLiterals name="Biography" value="2"/>
+ <eLiterals name="Encyclopedia" value="3" literal="Encyclopedia"/>
+ <eLiterals name="Dictionary" value="4"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Item" abstract="true">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="publicationDate" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDate"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Borrowable" abstract="true" interface="true">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="copies" lowerBound="1"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="borrowers" ordered="false"
+ upperBound="-1" eType="#//Borrower" eOpposite="#//Borrower/borrowed"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="CirculatingItem" abstract="true" eSuperTypes="#//Item #//Borrowable"/>
+ <eClassifiers xsi:type="ecore:EClass" name="AudioVisualItem" abstract="true" eSuperTypes="#//CirculatingItem">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="title" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="length" lowerBound="1"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="damaged" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="BookOnTape" eSuperTypes="#//AudioVisualItem">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="author" eType="#//Writer"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="VideoCassette" eSuperTypes="#//AudioVisualItem">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="cast" upperBound="-1" eType="#//Person"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Borrower" eSuperTypes="#//Person">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="borrowed" upperBound="-1"
+ eType="#//Borrowable" eOpposite="#//Borrowable/borrowers"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Person" eSuperTypes="#//Addressable">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="fullName" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Employee" eSuperTypes="#//Person">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="manager" eType="#//Employee"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Addressable" abstract="true" interface="true">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="address" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Magazine" eSuperTypes="#//CirculatingItem">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="title" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="pages" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ </eClassifiers>
+</ecore:EPackage>
diff --git a/testLocalExtLibrary/model2/extlibraryRight.ecore b/testLocalExtLibrary/model2/extlibraryRight.ecore
new file mode 100644
index 0000000..9501ecc
--- /dev/null
+++ b/testLocalExtLibrary/model2/extlibraryRight.ecore
@@ -0,0 +1,110 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="extlibrary" nsURI="http:///org/eclipse/emf/examples/library/extlibrary.ecore/1.0.0"
+ nsPrefix="extlib">
+ <eClassifiers xsi:type="ecore:EClass" name="Book" eSuperTypes="#//CirculatingItem #//TitledItem">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="pages" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"
+ defaultValueLiteral="100"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="category" eType="#//BookCategory"
+ unsettable="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="author" lowerBound="1"
+ eType="#//Writer" eOpposite="#//Writer/books"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="subtitle" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Library" eSuperTypes="#//Addressable">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="writers" upperBound="-1"
+ eType="#//Writer" volatile="true" transient="true" derived="true" containment="true"
+ resolveProxies="false">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="group" value="#people"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="employees" upperBound="-1"
+ eType="#//Employee" volatile="true" transient="true" derived="true" containment="true"
+ resolveProxies="false">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="group" value="#people"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="borrowers" upperBound="-1"
+ eType="#//Borrower" volatile="true" transient="true" derived="true" containment="true"
+ resolveProxies="false">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="group" value="#people"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="stock" ordered="false"
+ upperBound="-1" eType="#//Item" containment="true" resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="books" ordered="false"
+ upperBound="-1" eType="#//Book" transient="true" derived="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="branches" upperBound="-1"
+ eType="#//Library" containment="true" eOpposite="#//Library/parentBranch"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="parentBranch" eType="#//Library"
+ eOpposite="#//Library/branches"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="people" upperBound="-1"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EFeatureMapEntry">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="kind" value="group"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Writer" eSuperTypes="#//Person">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ volatile="true" transient="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="books" upperBound="-1"
+ eType="#//Book" eOpposite="#//Book/author"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="BookCategory">
+ <eLiterals name="Mystery"/>
+ <eLiterals name="ScienceFiction" value="1"/>
+ <eLiterals name="Biography" value="2"/>
+ <eLiterals name="Manga" value="3" literal="Manga"/>
+ <eLiterals name="Manhwa" value="5"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Item" abstract="true">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="publicationDate" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDate"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Lendable" abstract="true" interface="true">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="copies" lowerBound="1"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="borrowers" ordered="false"
+ upperBound="-1" eType="#//Borrower" eOpposite="#//Borrower/borrowed"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="CirculatingItem" abstract="true" eSuperTypes="#//Item #//Lendable"/>
+ <eClassifiers xsi:type="ecore:EClass" name="Periodical" abstract="true" eSuperTypes="#//Item #//TitledItem">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="issuesPerYear" lowerBound="1"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="AudioVisualItem" abstract="true" eSuperTypes="#//CirculatingItem #//TitledItem">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="minutes" lowerBound="1"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="damaged" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="BookOnTape" eSuperTypes="#//AudioVisualItem">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="author" eType="#//Writer"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="VideoCassette" eSuperTypes="#//AudioVisualItem">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="cast" upperBound="-1" eType="#//Person"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Borrower" eSuperTypes="#//Person">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="borrowed" upperBound="-1"
+ eType="#//Lendable" eOpposite="#//Lendable/borrowers"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Person" eSuperTypes="#//Addressable">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="firstName" lowerBound="1"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="familyName" lowerBound="1"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Employee" eSuperTypes="#//Person">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="manager" eType="#//Employee"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Addressable" abstract="true" interface="true">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="address" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Magazine" eSuperTypes="#//Periodical"/>
+ <eClassifiers xsi:type="ecore:EClass" name="TitledItem">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="title" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eClassifiers>
+</ecore:EPackage>
diff --git a/testLocalExtLibraryID/.project b/testLocalExtLibraryID/.project
new file mode 100644
index 0000000..95c83c5
--- /dev/null
+++ b/testLocalExtLibraryID/.project
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>testLocalExtLibraryID</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ </buildSpec>
+ <natures>
+ </natures>
+</projectDescription>
diff --git a/testLocalExtLibraryID/model1/extlibraryLeft.ecore b/testLocalExtLibraryID/model1/extlibraryLeft.ecore
new file mode 100644
index 0000000..b26cef2
--- /dev/null
+++ b/testLocalExtLibraryID/model1/extlibraryLeft.ecore
@@ -0,0 +1,109 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmi:id="_14sTEG60EeGkd4g88tZXfA" name="extlibrary" nsURI="http:///org/eclipse/emf/examples/library/extlibrary.ecore/1.0.0" nsPrefix="extlib">
+ <eClassifiers xsi:type="ecore:EClass" xmi:id="_146VgG60EeGkd4g88tZXfA" name="Book" eSuperTypes="_15LbQG60EeGkd4g88tZXfA">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="_146VgW60EeGkd4g88tZXfA" name="title">
+ <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="_146Vg260EeGkd4g88tZXfA" name="pages" defaultValueLiteral="100">
+ <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="_1468kW60EeGkd4g88tZXfA" name="category" eType="_15F7sG60EeGkd4g88tZXfA" unsettable="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" xmi:id="_148KsG60EeGkd4g88tZXfA" name="author" lowerBound="1" eType="_15CRUW60EeGkd4g88tZXfA" eOpposite="_15EGgG60EeGkd4g88tZXfA"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" xmi:id="_148KsW60EeGkd4g88tZXfA" name="Library" eSuperTypes="_15OelG60EeGkd4g88tZXfA">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="_148Ksm60EeGkd4g88tZXfA" name="name">
+ <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" xmi:id="_148xwW60EeGkd4g88tZXfA" name="writers" upperBound="-1" eType="_15CRUW60EeGkd4g88tZXfA" volatile="true" transient="true" derived="true" containment="true" resolveProxies="false">
+ <eAnnotations xmi:id="_148xwm60EeGkd4g88tZXfA" source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details xmi:id="_148xw260EeGkd4g88tZXfA" key="group" value="#people"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" xmi:id="_149Y0G60EeGkd4g88tZXfA" name="employees" upperBound="-1" eType="_15OekG60EeGkd4g88tZXfA" volatile="true" transient="true" derived="true" containment="true" resolveProxies="false">
+ <eAnnotations xmi:id="_149Y0W60EeGkd4g88tZXfA" source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details xmi:id="_149Y0m60EeGkd4g88tZXfA" key="group" value="#people"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" xmi:id="_15AcIG60EeGkd4g88tZXfA" name="borrowers" upperBound="-1" eType="_15NQcW60EeGkd4g88tZXfA" volatile="true" transient="true" derived="true" containment="true" resolveProxies="false">
+ <eAnnotations xmi:id="_15AcIW60EeGkd4g88tZXfA" source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details xmi:id="_15BDMG60EeGkd4g88tZXfA" key="group" value="#people"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" xmi:id="_15BDMW60EeGkd4g88tZXfA" name="stock" ordered="false" upperBound="-1" eType="_15Hw4m60EeGkd4g88tZXfA" containment="true" resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" xmi:id="_15BDMm60EeGkd4g88tZXfA" name="books" ordered="false" upperBound="-1" eType="_146VgG60EeGkd4g88tZXfA" transient="true" derived="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" xmi:id="_15BqQG60EeGkd4g88tZXfA" name="branches" upperBound="-1" eType="_148KsW60EeGkd4g88tZXfA" containment="true" eOpposite="_15BqQm60EeGkd4g88tZXfA"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" xmi:id="_15BqQm60EeGkd4g88tZXfA" name="parentBranch" eType="_148KsW60EeGkd4g88tZXfA" eOpposite="_15BqQG60EeGkd4g88tZXfA"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="_15BqRG60EeGkd4g88tZXfA" name="people" upperBound="-1">
+ <eAnnotations xmi:id="_15BqRW60EeGkd4g88tZXfA" source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details xmi:id="_15BqRm60EeGkd4g88tZXfA" key="kind" value="group"/>
+ </eAnnotations>
+ <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EFeatureMapEntry"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" xmi:id="_15CRUW60EeGkd4g88tZXfA" name="Writer" eSuperTypes="_15N3gm60EeGkd4g88tZXfA">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="_15CRUm60EeGkd4g88tZXfA" name="name" volatile="true" transient="true">
+ <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" xmi:id="_15EGgG60EeGkd4g88tZXfA" name="books" upperBound="-1" eType="_146VgG60EeGkd4g88tZXfA" eOpposite="_148KsG60EeGkd4g88tZXfA"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" xmi:id="_15F7sG60EeGkd4g88tZXfA" name="BookCategory">
+ <eLiterals xmi:id="_15HJ0G60EeGkd4g88tZXfA" name="Mystery"/>
+ <eLiterals xmi:id="_15Hw4G60EeGkd4g88tZXfA" name="ScienceFiction" value="1"/>
+ <eLiterals xmi:id="_15Hw4W60EeGkd4g88tZXfA" name="Biography" value="2"/>
+ <eLiterals xmi:id="_XID4MG9IEeG7V_vNzpYwOw" name="Encyclopedia" value="3" literal="Encyclopedia"/>
+ <eLiterals xmi:id="_XIEfQG9IEeG7V_vNzpYwOw" name="Dictionary" value="4"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" xmi:id="_15Hw4m60EeGkd4g88tZXfA" name="Item" abstract="true">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="_15Hw4260EeGkd4g88tZXfA" name="publicationDate">
+ <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EDate"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" xmi:id="_15IX8G60EeGkd4g88tZXfA" name="Borrowable" abstract="true" interface="true">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="_15JmEG60EeGkd4g88tZXfA" name="copies" lowerBound="1">
+ <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" xmi:id="_15JmEm60EeGkd4g88tZXfA" name="borrowers" ordered="false" upperBound="-1" eType="_15NQcW60EeGkd4g88tZXfA" eOpposite="_15N3gG60EeGkd4g88tZXfA"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" xmi:id="_15LbQG60EeGkd4g88tZXfA" name="CirculatingItem" abstract="true" eSuperTypes="_15Hw4m60EeGkd4g88tZXfA _15IX8G60EeGkd4g88tZXfA"/>
+ <eClassifiers xsi:type="ecore:EClass" xmi:id="_15MCUG60EeGkd4g88tZXfA" name="AudioVisualItem" abstract="true" eSuperTypes="_15LbQG60EeGkd4g88tZXfA">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="_15MCUm60EeGkd4g88tZXfA" name="title">
+ <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="_15MCVG60EeGkd4g88tZXfA" name="length" lowerBound="1">
+ <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="_15MCVm60EeGkd4g88tZXfA" name="damaged">
+ <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" xmi:id="_15MpYW60EeGkd4g88tZXfA" name="BookOnTape" eSuperTypes="_15MCUG60EeGkd4g88tZXfA">
+ <eStructuralFeatures xsi:type="ecore:EReference" xmi:id="_15MpZG60EeGkd4g88tZXfA" name="author" eType="_15CRUW60EeGkd4g88tZXfA"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" xmi:id="_15MpZm60EeGkd4g88tZXfA" name="VideoCassette" eSuperTypes="_15MCUG60EeGkd4g88tZXfA">
+ <eStructuralFeatures xsi:type="ecore:EReference" xmi:id="_15NQcG60EeGkd4g88tZXfA" name="cast" upperBound="-1" eType="_15N3gm60EeGkd4g88tZXfA"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" xmi:id="_15NQcW60EeGkd4g88tZXfA" name="Borrower" eSuperTypes="_15N3gm60EeGkd4g88tZXfA">
+ <eStructuralFeatures xsi:type="ecore:EReference" xmi:id="_15N3gG60EeGkd4g88tZXfA" name="borrowed" upperBound="-1" eType="_15IX8G60EeGkd4g88tZXfA" eOpposite="_15JmEm60EeGkd4g88tZXfA"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" xmi:id="_15N3gm60EeGkd4g88tZXfA" name="Person" eSuperTypes="_15OelG60EeGkd4g88tZXfA">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="_XIJ-0G9IEeG7V_vNzpYwOw" name="fullName">
+ <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" xmi:id="_15OekG60EeGkd4g88tZXfA" name="Employee" eSuperTypes="_15N3gm60EeGkd4g88tZXfA">
+ <eStructuralFeatures xsi:type="ecore:EReference" xmi:id="_15Oekm60EeGkd4g88tZXfA" name="manager" eType="_15OekG60EeGkd4g88tZXfA"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" xmi:id="_15OelG60EeGkd4g88tZXfA" name="Addressable" abstract="true" interface="true">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="_15OelW60EeGkd4g88tZXfA" name="address">
+ <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" xmi:id="_XIKl4W9IEeG7V_vNzpYwOw" name="Magazine" eSuperTypes="_15LbQG60EeGkd4g88tZXfA">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="_XIKl429IEeG7V_vNzpYwOw" name="title">
+ <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="_XIKl5W9IEeG7V_vNzpYwOw" name="pages">
+ <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+</ecore:EPackage>
diff --git a/testLocalExtLibraryID/model2/extlibraryRight.ecore b/testLocalExtLibraryID/model2/extlibraryRight.ecore
new file mode 100644
index 0000000..09d5b07
--- /dev/null
+++ b/testLocalExtLibraryID/model2/extlibraryRight.ecore
@@ -0,0 +1,112 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmi:id="_14sTEG60EeGkd4g88tZXfA" name="extlibrary" nsURI="http:///org/eclipse/emf/examples/library/extlibrary.ecore/1.0.0" nsPrefix="extlib">
+ <eClassifiers xsi:type="ecore:EClass" xmi:id="_146VgG60EeGkd4g88tZXfA" name="Book" eSuperTypes="_15LbQG60EeGkd4g88tZXfA _9M9ys29IEeGekPcBm25hwQ">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="_146Vg260EeGkd4g88tZXfA" name="pages" defaultValueLiteral="100">
+ <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="_1468kW60EeGkd4g88tZXfA" name="category" eType="_15F7sG60EeGkd4g88tZXfA" unsettable="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" xmi:id="_148KsG60EeGkd4g88tZXfA" name="author" lowerBound="1" eType="_15CRUW60EeGkd4g88tZXfA" eOpposite="_15EGgG60EeGkd4g88tZXfA"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="_9MlYMG9IEeGekPcBm25hwQ" name="subtitle">
+ <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" xmi:id="_148KsW60EeGkd4g88tZXfA" name="Library" eSuperTypes="_15OelG60EeGkd4g88tZXfA">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="_148Ksm60EeGkd4g88tZXfA" name="name">
+ <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" xmi:id="_148xwW60EeGkd4g88tZXfA" name="writers" upperBound="-1" eType="_15CRUW60EeGkd4g88tZXfA" volatile="true" transient="true" derived="true" containment="true" resolveProxies="false">
+ <eAnnotations xmi:id="_148xwm60EeGkd4g88tZXfA" source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details xmi:id="_148xw260EeGkd4g88tZXfA" key="group" value="#people"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" xmi:id="_149Y0G60EeGkd4g88tZXfA" name="employees" upperBound="-1" eType="_15OekG60EeGkd4g88tZXfA" volatile="true" transient="true" derived="true" containment="true" resolveProxies="false">
+ <eAnnotations xmi:id="_149Y0W60EeGkd4g88tZXfA" source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details xmi:id="_149Y0m60EeGkd4g88tZXfA" key="group" value="#people"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" xmi:id="_15AcIG60EeGkd4g88tZXfA" name="borrowers" upperBound="-1" eType="_15NQcW60EeGkd4g88tZXfA" volatile="true" transient="true" derived="true" containment="true" resolveProxies="false">
+ <eAnnotations xmi:id="_15AcIW60EeGkd4g88tZXfA" source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details xmi:id="_15BDMG60EeGkd4g88tZXfA" key="group" value="#people"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" xmi:id="_15BDMW60EeGkd4g88tZXfA" name="stock" ordered="false" upperBound="-1" eType="_15Hw4m60EeGkd4g88tZXfA" containment="true" resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" xmi:id="_15BDMm60EeGkd4g88tZXfA" name="books" ordered="false" upperBound="-1" eType="_146VgG60EeGkd4g88tZXfA" transient="true" derived="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" xmi:id="_15BqQG60EeGkd4g88tZXfA" name="branches" upperBound="-1" eType="_148KsW60EeGkd4g88tZXfA" containment="true" eOpposite="_15BqQm60EeGkd4g88tZXfA"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" xmi:id="_15BqQm60EeGkd4g88tZXfA" name="parentBranch" eType="_148KsW60EeGkd4g88tZXfA" eOpposite="_15BqQG60EeGkd4g88tZXfA"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="_15BqRG60EeGkd4g88tZXfA" name="people" upperBound="-1">
+ <eAnnotations xmi:id="_15BqRW60EeGkd4g88tZXfA" source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details xmi:id="_15BqRm60EeGkd4g88tZXfA" key="kind" value="group"/>
+ </eAnnotations>
+ <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EFeatureMapEntry"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" xmi:id="_15CRUW60EeGkd4g88tZXfA" name="Writer" eSuperTypes="_15N3gm60EeGkd4g88tZXfA">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="_15CRUm60EeGkd4g88tZXfA" name="name" volatile="true" transient="true">
+ <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" xmi:id="_15EGgG60EeGkd4g88tZXfA" name="books" upperBound="-1" eType="_146VgG60EeGkd4g88tZXfA" eOpposite="_148KsG60EeGkd4g88tZXfA"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" xmi:id="_15F7sG60EeGkd4g88tZXfA" name="BookCategory">
+ <eLiterals xmi:id="_15HJ0G60EeGkd4g88tZXfA" name="Mystery"/>
+ <eLiterals xmi:id="_15Hw4G60EeGkd4g88tZXfA" name="ScienceFiction" value="1"/>
+ <eLiterals xmi:id="_15Hw4W60EeGkd4g88tZXfA" name="Biography" value="2"/>
+ <eLiterals xmi:id="_9Mw-YG9IEeGekPcBm25hwQ" name="Manga" value="3" literal="Manga"/>
+ <eLiterals xmi:id="_9Mw-YW9IEeGekPcBm25hwQ" name="Manhwa" value="5"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" xmi:id="_15Hw4m60EeGkd4g88tZXfA" name="Item" abstract="true">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="_15Hw4260EeGkd4g88tZXfA" name="publicationDate">
+ <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EDate"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" xmi:id="_15IX8G60EeGkd4g88tZXfA" name="Lendable" abstract="true" interface="true">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="_15JmEG60EeGkd4g88tZXfA" name="copies" lowerBound="1">
+ <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" xmi:id="_15JmEm60EeGkd4g88tZXfA" name="borrowers" ordered="false" upperBound="-1" eType="_15NQcW60EeGkd4g88tZXfA" eOpposite="_15N3gG60EeGkd4g88tZXfA"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" xmi:id="_15LbQG60EeGkd4g88tZXfA" name="CirculatingItem" abstract="true" eSuperTypes="_15Hw4m60EeGkd4g88tZXfA _15IX8G60EeGkd4g88tZXfA"/>
+ <eClassifiers xsi:type="ecore:EClass" xmi:id="_15LbQ260EeGkd4g88tZXfA" name="Periodical" abstract="true" eSuperTypes="_15Hw4m60EeGkd4g88tZXfA _9M9ys29IEeGekPcBm25hwQ">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="_15LbR260EeGkd4g88tZXfA" name="issuesPerYear" lowerBound="1">
+ <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" xmi:id="_15MCUG60EeGkd4g88tZXfA" name="AudioVisualItem" abstract="true" eSuperTypes="_15LbQG60EeGkd4g88tZXfA _9M9ys29IEeGekPcBm25hwQ">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="_15MCVG60EeGkd4g88tZXfA" name="minutes" lowerBound="1">
+ <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="_15MCVm60EeGkd4g88tZXfA" name="damaged">
+ <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" xmi:id="_15MpYW60EeGkd4g88tZXfA" name="BookOnTape" eSuperTypes="_15MCUG60EeGkd4g88tZXfA">
+ <eStructuralFeatures xsi:type="ecore:EReference" xmi:id="_15MpZG60EeGkd4g88tZXfA" name="author" eType="_15CRUW60EeGkd4g88tZXfA"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" xmi:id="_15MpZm60EeGkd4g88tZXfA" name="VideoCassette" eSuperTypes="_15MCUG60EeGkd4g88tZXfA">
+ <eStructuralFeatures xsi:type="ecore:EReference" xmi:id="_15NQcG60EeGkd4g88tZXfA" name="cast" upperBound="-1" eType="_15N3gm60EeGkd4g88tZXfA"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" xmi:id="_15NQcW60EeGkd4g88tZXfA" name="Borrower" eSuperTypes="_15N3gm60EeGkd4g88tZXfA">
+ <eStructuralFeatures xsi:type="ecore:EReference" xmi:id="_15N3gG60EeGkd4g88tZXfA" name="borrowed" upperBound="-1" eType="_15IX8G60EeGkd4g88tZXfA" eOpposite="_15JmEm60EeGkd4g88tZXfA"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" xmi:id="_15N3gm60EeGkd4g88tZXfA" name="Person" eSuperTypes="_15OelG60EeGkd4g88tZXfA">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="_15N3g260EeGkd4g88tZXfA" name="firstName" lowerBound="1">
+ <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="_15N3hW60EeGkd4g88tZXfA" name="familyName" lowerBound="1">
+ <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" xmi:id="_15OekG60EeGkd4g88tZXfA" name="Employee" eSuperTypes="_15N3gm60EeGkd4g88tZXfA">
+ <eStructuralFeatures xsi:type="ecore:EReference" xmi:id="_15Oekm60EeGkd4g88tZXfA" name="manager" eType="_15OekG60EeGkd4g88tZXfA"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" xmi:id="_15OelG60EeGkd4g88tZXfA" name="Addressable" abstract="true" interface="true">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="_15OelW60EeGkd4g88tZXfA" name="address">
+ <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" xmi:id="_9M9ysW9IEeGekPcBm25hwQ" name="Magazine" eSuperTypes="_15LbQ260EeGkd4g88tZXfA"/>
+ <eClassifiers xsi:type="ecore:EClass" xmi:id="_9M9ys29IEeGekPcBm25hwQ" name="TitledItem">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="_9M9ytG9IEeGekPcBm25hwQ" name="title">
+ <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+</ecore:EPackage>
diff --git a/testLocalExtLibraryIDThreeWay/.project b/testLocalExtLibraryIDThreeWay/.project
new file mode 100644
index 0000000..46e3027
--- /dev/null
+++ b/testLocalExtLibraryIDThreeWay/.project
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>testLocalExtLibraryIDThreeWay</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ </buildSpec>
+ <natures>
+ </natures>
+</projectDescription>
diff --git a/testLocalExtLibraryIDThreeWay/extlibraryLeft.ecore b/testLocalExtLibraryIDThreeWay/extlibraryLeft.ecore
new file mode 100644
index 0000000..b26cef2
--- /dev/null
+++ b/testLocalExtLibraryIDThreeWay/extlibraryLeft.ecore
@@ -0,0 +1,109 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmi:id="_14sTEG60EeGkd4g88tZXfA" name="extlibrary" nsURI="http:///org/eclipse/emf/examples/library/extlibrary.ecore/1.0.0" nsPrefix="extlib">
+ <eClassifiers xsi:type="ecore:EClass" xmi:id="_146VgG60EeGkd4g88tZXfA" name="Book" eSuperTypes="_15LbQG60EeGkd4g88tZXfA">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="_146VgW60EeGkd4g88tZXfA" name="title">
+ <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="_146Vg260EeGkd4g88tZXfA" name="pages" defaultValueLiteral="100">
+ <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="_1468kW60EeGkd4g88tZXfA" name="category" eType="_15F7sG60EeGkd4g88tZXfA" unsettable="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" xmi:id="_148KsG60EeGkd4g88tZXfA" name="author" lowerBound="1" eType="_15CRUW60EeGkd4g88tZXfA" eOpposite="_15EGgG60EeGkd4g88tZXfA"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" xmi:id="_148KsW60EeGkd4g88tZXfA" name="Library" eSuperTypes="_15OelG60EeGkd4g88tZXfA">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="_148Ksm60EeGkd4g88tZXfA" name="name">
+ <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" xmi:id="_148xwW60EeGkd4g88tZXfA" name="writers" upperBound="-1" eType="_15CRUW60EeGkd4g88tZXfA" volatile="true" transient="true" derived="true" containment="true" resolveProxies="false">
+ <eAnnotations xmi:id="_148xwm60EeGkd4g88tZXfA" source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details xmi:id="_148xw260EeGkd4g88tZXfA" key="group" value="#people"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" xmi:id="_149Y0G60EeGkd4g88tZXfA" name="employees" upperBound="-1" eType="_15OekG60EeGkd4g88tZXfA" volatile="true" transient="true" derived="true" containment="true" resolveProxies="false">
+ <eAnnotations xmi:id="_149Y0W60EeGkd4g88tZXfA" source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details xmi:id="_149Y0m60EeGkd4g88tZXfA" key="group" value="#people"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" xmi:id="_15AcIG60EeGkd4g88tZXfA" name="borrowers" upperBound="-1" eType="_15NQcW60EeGkd4g88tZXfA" volatile="true" transient="true" derived="true" containment="true" resolveProxies="false">
+ <eAnnotations xmi:id="_15AcIW60EeGkd4g88tZXfA" source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details xmi:id="_15BDMG60EeGkd4g88tZXfA" key="group" value="#people"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" xmi:id="_15BDMW60EeGkd4g88tZXfA" name="stock" ordered="false" upperBound="-1" eType="_15Hw4m60EeGkd4g88tZXfA" containment="true" resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" xmi:id="_15BDMm60EeGkd4g88tZXfA" name="books" ordered="false" upperBound="-1" eType="_146VgG60EeGkd4g88tZXfA" transient="true" derived="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" xmi:id="_15BqQG60EeGkd4g88tZXfA" name="branches" upperBound="-1" eType="_148KsW60EeGkd4g88tZXfA" containment="true" eOpposite="_15BqQm60EeGkd4g88tZXfA"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" xmi:id="_15BqQm60EeGkd4g88tZXfA" name="parentBranch" eType="_148KsW60EeGkd4g88tZXfA" eOpposite="_15BqQG60EeGkd4g88tZXfA"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="_15BqRG60EeGkd4g88tZXfA" name="people" upperBound="-1">
+ <eAnnotations xmi:id="_15BqRW60EeGkd4g88tZXfA" source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details xmi:id="_15BqRm60EeGkd4g88tZXfA" key="kind" value="group"/>
+ </eAnnotations>
+ <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EFeatureMapEntry"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" xmi:id="_15CRUW60EeGkd4g88tZXfA" name="Writer" eSuperTypes="_15N3gm60EeGkd4g88tZXfA">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="_15CRUm60EeGkd4g88tZXfA" name="name" volatile="true" transient="true">
+ <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" xmi:id="_15EGgG60EeGkd4g88tZXfA" name="books" upperBound="-1" eType="_146VgG60EeGkd4g88tZXfA" eOpposite="_148KsG60EeGkd4g88tZXfA"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" xmi:id="_15F7sG60EeGkd4g88tZXfA" name="BookCategory">
+ <eLiterals xmi:id="_15HJ0G60EeGkd4g88tZXfA" name="Mystery"/>
+ <eLiterals xmi:id="_15Hw4G60EeGkd4g88tZXfA" name="ScienceFiction" value="1"/>
+ <eLiterals xmi:id="_15Hw4W60EeGkd4g88tZXfA" name="Biography" value="2"/>
+ <eLiterals xmi:id="_XID4MG9IEeG7V_vNzpYwOw" name="Encyclopedia" value="3" literal="Encyclopedia"/>
+ <eLiterals xmi:id="_XIEfQG9IEeG7V_vNzpYwOw" name="Dictionary" value="4"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" xmi:id="_15Hw4m60EeGkd4g88tZXfA" name="Item" abstract="true">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="_15Hw4260EeGkd4g88tZXfA" name="publicationDate">
+ <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EDate"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" xmi:id="_15IX8G60EeGkd4g88tZXfA" name="Borrowable" abstract="true" interface="true">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="_15JmEG60EeGkd4g88tZXfA" name="copies" lowerBound="1">
+ <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" xmi:id="_15JmEm60EeGkd4g88tZXfA" name="borrowers" ordered="false" upperBound="-1" eType="_15NQcW60EeGkd4g88tZXfA" eOpposite="_15N3gG60EeGkd4g88tZXfA"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" xmi:id="_15LbQG60EeGkd4g88tZXfA" name="CirculatingItem" abstract="true" eSuperTypes="_15Hw4m60EeGkd4g88tZXfA _15IX8G60EeGkd4g88tZXfA"/>
+ <eClassifiers xsi:type="ecore:EClass" xmi:id="_15MCUG60EeGkd4g88tZXfA" name="AudioVisualItem" abstract="true" eSuperTypes="_15LbQG60EeGkd4g88tZXfA">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="_15MCUm60EeGkd4g88tZXfA" name="title">
+ <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="_15MCVG60EeGkd4g88tZXfA" name="length" lowerBound="1">
+ <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="_15MCVm60EeGkd4g88tZXfA" name="damaged">
+ <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" xmi:id="_15MpYW60EeGkd4g88tZXfA" name="BookOnTape" eSuperTypes="_15MCUG60EeGkd4g88tZXfA">
+ <eStructuralFeatures xsi:type="ecore:EReference" xmi:id="_15MpZG60EeGkd4g88tZXfA" name="author" eType="_15CRUW60EeGkd4g88tZXfA"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" xmi:id="_15MpZm60EeGkd4g88tZXfA" name="VideoCassette" eSuperTypes="_15MCUG60EeGkd4g88tZXfA">
+ <eStructuralFeatures xsi:type="ecore:EReference" xmi:id="_15NQcG60EeGkd4g88tZXfA" name="cast" upperBound="-1" eType="_15N3gm60EeGkd4g88tZXfA"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" xmi:id="_15NQcW60EeGkd4g88tZXfA" name="Borrower" eSuperTypes="_15N3gm60EeGkd4g88tZXfA">
+ <eStructuralFeatures xsi:type="ecore:EReference" xmi:id="_15N3gG60EeGkd4g88tZXfA" name="borrowed" upperBound="-1" eType="_15IX8G60EeGkd4g88tZXfA" eOpposite="_15JmEm60EeGkd4g88tZXfA"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" xmi:id="_15N3gm60EeGkd4g88tZXfA" name="Person" eSuperTypes="_15OelG60EeGkd4g88tZXfA">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="_XIJ-0G9IEeG7V_vNzpYwOw" name="fullName">
+ <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" xmi:id="_15OekG60EeGkd4g88tZXfA" name="Employee" eSuperTypes="_15N3gm60EeGkd4g88tZXfA">
+ <eStructuralFeatures xsi:type="ecore:EReference" xmi:id="_15Oekm60EeGkd4g88tZXfA" name="manager" eType="_15OekG60EeGkd4g88tZXfA"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" xmi:id="_15OelG60EeGkd4g88tZXfA" name="Addressable" abstract="true" interface="true">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="_15OelW60EeGkd4g88tZXfA" name="address">
+ <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" xmi:id="_XIKl4W9IEeG7V_vNzpYwOw" name="Magazine" eSuperTypes="_15LbQG60EeGkd4g88tZXfA">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="_XIKl429IEeG7V_vNzpYwOw" name="title">
+ <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="_XIKl5W9IEeG7V_vNzpYwOw" name="pages">
+ <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+</ecore:EPackage>
diff --git a/testLocalExtLibraryIDThreeWay/extlibraryOrigin.ecore b/testLocalExtLibraryIDThreeWay/extlibraryOrigin.ecore
new file mode 100644
index 0000000..b26cef2
--- /dev/null
+++ b/testLocalExtLibraryIDThreeWay/extlibraryOrigin.ecore
@@ -0,0 +1,109 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmi:id="_14sTEG60EeGkd4g88tZXfA" name="extlibrary" nsURI="http:///org/eclipse/emf/examples/library/extlibrary.ecore/1.0.0" nsPrefix="extlib">
+ <eClassifiers xsi:type="ecore:EClass" xmi:id="_146VgG60EeGkd4g88tZXfA" name="Book" eSuperTypes="_15LbQG60EeGkd4g88tZXfA">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="_146VgW60EeGkd4g88tZXfA" name="title">
+ <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="_146Vg260EeGkd4g88tZXfA" name="pages" defaultValueLiteral="100">
+ <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="_1468kW60EeGkd4g88tZXfA" name="category" eType="_15F7sG60EeGkd4g88tZXfA" unsettable="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" xmi:id="_148KsG60EeGkd4g88tZXfA" name="author" lowerBound="1" eType="_15CRUW60EeGkd4g88tZXfA" eOpposite="_15EGgG60EeGkd4g88tZXfA"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" xmi:id="_148KsW60EeGkd4g88tZXfA" name="Library" eSuperTypes="_15OelG60EeGkd4g88tZXfA">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="_148Ksm60EeGkd4g88tZXfA" name="name">
+ <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" xmi:id="_148xwW60EeGkd4g88tZXfA" name="writers" upperBound="-1" eType="_15CRUW60EeGkd4g88tZXfA" volatile="true" transient="true" derived="true" containment="true" resolveProxies="false">
+ <eAnnotations xmi:id="_148xwm60EeGkd4g88tZXfA" source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details xmi:id="_148xw260EeGkd4g88tZXfA" key="group" value="#people"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" xmi:id="_149Y0G60EeGkd4g88tZXfA" name="employees" upperBound="-1" eType="_15OekG60EeGkd4g88tZXfA" volatile="true" transient="true" derived="true" containment="true" resolveProxies="false">
+ <eAnnotations xmi:id="_149Y0W60EeGkd4g88tZXfA" source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details xmi:id="_149Y0m60EeGkd4g88tZXfA" key="group" value="#people"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" xmi:id="_15AcIG60EeGkd4g88tZXfA" name="borrowers" upperBound="-1" eType="_15NQcW60EeGkd4g88tZXfA" volatile="true" transient="true" derived="true" containment="true" resolveProxies="false">
+ <eAnnotations xmi:id="_15AcIW60EeGkd4g88tZXfA" source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details xmi:id="_15BDMG60EeGkd4g88tZXfA" key="group" value="#people"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" xmi:id="_15BDMW60EeGkd4g88tZXfA" name="stock" ordered="false" upperBound="-1" eType="_15Hw4m60EeGkd4g88tZXfA" containment="true" resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" xmi:id="_15BDMm60EeGkd4g88tZXfA" name="books" ordered="false" upperBound="-1" eType="_146VgG60EeGkd4g88tZXfA" transient="true" derived="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" xmi:id="_15BqQG60EeGkd4g88tZXfA" name="branches" upperBound="-1" eType="_148KsW60EeGkd4g88tZXfA" containment="true" eOpposite="_15BqQm60EeGkd4g88tZXfA"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" xmi:id="_15BqQm60EeGkd4g88tZXfA" name="parentBranch" eType="_148KsW60EeGkd4g88tZXfA" eOpposite="_15BqQG60EeGkd4g88tZXfA"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="_15BqRG60EeGkd4g88tZXfA" name="people" upperBound="-1">
+ <eAnnotations xmi:id="_15BqRW60EeGkd4g88tZXfA" source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details xmi:id="_15BqRm60EeGkd4g88tZXfA" key="kind" value="group"/>
+ </eAnnotations>
+ <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EFeatureMapEntry"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" xmi:id="_15CRUW60EeGkd4g88tZXfA" name="Writer" eSuperTypes="_15N3gm60EeGkd4g88tZXfA">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="_15CRUm60EeGkd4g88tZXfA" name="name" volatile="true" transient="true">
+ <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" xmi:id="_15EGgG60EeGkd4g88tZXfA" name="books" upperBound="-1" eType="_146VgG60EeGkd4g88tZXfA" eOpposite="_148KsG60EeGkd4g88tZXfA"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" xmi:id="_15F7sG60EeGkd4g88tZXfA" name="BookCategory">
+ <eLiterals xmi:id="_15HJ0G60EeGkd4g88tZXfA" name="Mystery"/>
+ <eLiterals xmi:id="_15Hw4G60EeGkd4g88tZXfA" name="ScienceFiction" value="1"/>
+ <eLiterals xmi:id="_15Hw4W60EeGkd4g88tZXfA" name="Biography" value="2"/>
+ <eLiterals xmi:id="_XID4MG9IEeG7V_vNzpYwOw" name="Encyclopedia" value="3" literal="Encyclopedia"/>
+ <eLiterals xmi:id="_XIEfQG9IEeG7V_vNzpYwOw" name="Dictionary" value="4"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" xmi:id="_15Hw4m60EeGkd4g88tZXfA" name="Item" abstract="true">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="_15Hw4260EeGkd4g88tZXfA" name="publicationDate">
+ <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EDate"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" xmi:id="_15IX8G60EeGkd4g88tZXfA" name="Borrowable" abstract="true" interface="true">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="_15JmEG60EeGkd4g88tZXfA" name="copies" lowerBound="1">
+ <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" xmi:id="_15JmEm60EeGkd4g88tZXfA" name="borrowers" ordered="false" upperBound="-1" eType="_15NQcW60EeGkd4g88tZXfA" eOpposite="_15N3gG60EeGkd4g88tZXfA"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" xmi:id="_15LbQG60EeGkd4g88tZXfA" name="CirculatingItem" abstract="true" eSuperTypes="_15Hw4m60EeGkd4g88tZXfA _15IX8G60EeGkd4g88tZXfA"/>
+ <eClassifiers xsi:type="ecore:EClass" xmi:id="_15MCUG60EeGkd4g88tZXfA" name="AudioVisualItem" abstract="true" eSuperTypes="_15LbQG60EeGkd4g88tZXfA">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="_15MCUm60EeGkd4g88tZXfA" name="title">
+ <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="_15MCVG60EeGkd4g88tZXfA" name="length" lowerBound="1">
+ <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="_15MCVm60EeGkd4g88tZXfA" name="damaged">
+ <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" xmi:id="_15MpYW60EeGkd4g88tZXfA" name="BookOnTape" eSuperTypes="_15MCUG60EeGkd4g88tZXfA">
+ <eStructuralFeatures xsi:type="ecore:EReference" xmi:id="_15MpZG60EeGkd4g88tZXfA" name="author" eType="_15CRUW60EeGkd4g88tZXfA"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" xmi:id="_15MpZm60EeGkd4g88tZXfA" name="VideoCassette" eSuperTypes="_15MCUG60EeGkd4g88tZXfA">
+ <eStructuralFeatures xsi:type="ecore:EReference" xmi:id="_15NQcG60EeGkd4g88tZXfA" name="cast" upperBound="-1" eType="_15N3gm60EeGkd4g88tZXfA"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" xmi:id="_15NQcW60EeGkd4g88tZXfA" name="Borrower" eSuperTypes="_15N3gm60EeGkd4g88tZXfA">
+ <eStructuralFeatures xsi:type="ecore:EReference" xmi:id="_15N3gG60EeGkd4g88tZXfA" name="borrowed" upperBound="-1" eType="_15IX8G60EeGkd4g88tZXfA" eOpposite="_15JmEm60EeGkd4g88tZXfA"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" xmi:id="_15N3gm60EeGkd4g88tZXfA" name="Person" eSuperTypes="_15OelG60EeGkd4g88tZXfA">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="_XIJ-0G9IEeG7V_vNzpYwOw" name="fullName">
+ <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" xmi:id="_15OekG60EeGkd4g88tZXfA" name="Employee" eSuperTypes="_15N3gm60EeGkd4g88tZXfA">
+ <eStructuralFeatures xsi:type="ecore:EReference" xmi:id="_15Oekm60EeGkd4g88tZXfA" name="manager" eType="_15OekG60EeGkd4g88tZXfA"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" xmi:id="_15OelG60EeGkd4g88tZXfA" name="Addressable" abstract="true" interface="true">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="_15OelW60EeGkd4g88tZXfA" name="address">
+ <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" xmi:id="_XIKl4W9IEeG7V_vNzpYwOw" name="Magazine" eSuperTypes="_15LbQG60EeGkd4g88tZXfA">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="_XIKl429IEeG7V_vNzpYwOw" name="title">
+ <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="_XIKl5W9IEeG7V_vNzpYwOw" name="pages">
+ <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+</ecore:EPackage>
diff --git a/testLocalExtLibraryIDThreeWay/extlibraryRight.ecore b/testLocalExtLibraryIDThreeWay/extlibraryRight.ecore
new file mode 100644
index 0000000..09d5b07
--- /dev/null
+++ b/testLocalExtLibraryIDThreeWay/extlibraryRight.ecore
@@ -0,0 +1,112 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmi:id="_14sTEG60EeGkd4g88tZXfA" name="extlibrary" nsURI="http:///org/eclipse/emf/examples/library/extlibrary.ecore/1.0.0" nsPrefix="extlib">
+ <eClassifiers xsi:type="ecore:EClass" xmi:id="_146VgG60EeGkd4g88tZXfA" name="Book" eSuperTypes="_15LbQG60EeGkd4g88tZXfA _9M9ys29IEeGekPcBm25hwQ">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="_146Vg260EeGkd4g88tZXfA" name="pages" defaultValueLiteral="100">
+ <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="_1468kW60EeGkd4g88tZXfA" name="category" eType="_15F7sG60EeGkd4g88tZXfA" unsettable="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" xmi:id="_148KsG60EeGkd4g88tZXfA" name="author" lowerBound="1" eType="_15CRUW60EeGkd4g88tZXfA" eOpposite="_15EGgG60EeGkd4g88tZXfA"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="_9MlYMG9IEeGekPcBm25hwQ" name="subtitle">
+ <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" xmi:id="_148KsW60EeGkd4g88tZXfA" name="Library" eSuperTypes="_15OelG60EeGkd4g88tZXfA">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="_148Ksm60EeGkd4g88tZXfA" name="name">
+ <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" xmi:id="_148xwW60EeGkd4g88tZXfA" name="writers" upperBound="-1" eType="_15CRUW60EeGkd4g88tZXfA" volatile="true" transient="true" derived="true" containment="true" resolveProxies="false">
+ <eAnnotations xmi:id="_148xwm60EeGkd4g88tZXfA" source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details xmi:id="_148xw260EeGkd4g88tZXfA" key="group" value="#people"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" xmi:id="_149Y0G60EeGkd4g88tZXfA" name="employees" upperBound="-1" eType="_15OekG60EeGkd4g88tZXfA" volatile="true" transient="true" derived="true" containment="true" resolveProxies="false">
+ <eAnnotations xmi:id="_149Y0W60EeGkd4g88tZXfA" source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details xmi:id="_149Y0m60EeGkd4g88tZXfA" key="group" value="#people"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" xmi:id="_15AcIG60EeGkd4g88tZXfA" name="borrowers" upperBound="-1" eType="_15NQcW60EeGkd4g88tZXfA" volatile="true" transient="true" derived="true" containment="true" resolveProxies="false">
+ <eAnnotations xmi:id="_15AcIW60EeGkd4g88tZXfA" source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details xmi:id="_15BDMG60EeGkd4g88tZXfA" key="group" value="#people"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" xmi:id="_15BDMW60EeGkd4g88tZXfA" name="stock" ordered="false" upperBound="-1" eType="_15Hw4m60EeGkd4g88tZXfA" containment="true" resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" xmi:id="_15BDMm60EeGkd4g88tZXfA" name="books" ordered="false" upperBound="-1" eType="_146VgG60EeGkd4g88tZXfA" transient="true" derived="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" xmi:id="_15BqQG60EeGkd4g88tZXfA" name="branches" upperBound="-1" eType="_148KsW60EeGkd4g88tZXfA" containment="true" eOpposite="_15BqQm60EeGkd4g88tZXfA"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" xmi:id="_15BqQm60EeGkd4g88tZXfA" name="parentBranch" eType="_148KsW60EeGkd4g88tZXfA" eOpposite="_15BqQG60EeGkd4g88tZXfA"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="_15BqRG60EeGkd4g88tZXfA" name="people" upperBound="-1">
+ <eAnnotations xmi:id="_15BqRW60EeGkd4g88tZXfA" source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details xmi:id="_15BqRm60EeGkd4g88tZXfA" key="kind" value="group"/>
+ </eAnnotations>
+ <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EFeatureMapEntry"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" xmi:id="_15CRUW60EeGkd4g88tZXfA" name="Writer" eSuperTypes="_15N3gm60EeGkd4g88tZXfA">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="_15CRUm60EeGkd4g88tZXfA" name="name" volatile="true" transient="true">
+ <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" xmi:id="_15EGgG60EeGkd4g88tZXfA" name="books" upperBound="-1" eType="_146VgG60EeGkd4g88tZXfA" eOpposite="_148KsG60EeGkd4g88tZXfA"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" xmi:id="_15F7sG60EeGkd4g88tZXfA" name="BookCategory">
+ <eLiterals xmi:id="_15HJ0G60EeGkd4g88tZXfA" name="Mystery"/>
+ <eLiterals xmi:id="_15Hw4G60EeGkd4g88tZXfA" name="ScienceFiction" value="1"/>
+ <eLiterals xmi:id="_15Hw4W60EeGkd4g88tZXfA" name="Biography" value="2"/>
+ <eLiterals xmi:id="_9Mw-YG9IEeGekPcBm25hwQ" name="Manga" value="3" literal="Manga"/>
+ <eLiterals xmi:id="_9Mw-YW9IEeGekPcBm25hwQ" name="Manhwa" value="5"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" xmi:id="_15Hw4m60EeGkd4g88tZXfA" name="Item" abstract="true">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="_15Hw4260EeGkd4g88tZXfA" name="publicationDate">
+ <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EDate"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" xmi:id="_15IX8G60EeGkd4g88tZXfA" name="Lendable" abstract="true" interface="true">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="_15JmEG60EeGkd4g88tZXfA" name="copies" lowerBound="1">
+ <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" xmi:id="_15JmEm60EeGkd4g88tZXfA" name="borrowers" ordered="false" upperBound="-1" eType="_15NQcW60EeGkd4g88tZXfA" eOpposite="_15N3gG60EeGkd4g88tZXfA"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" xmi:id="_15LbQG60EeGkd4g88tZXfA" name="CirculatingItem" abstract="true" eSuperTypes="_15Hw4m60EeGkd4g88tZXfA _15IX8G60EeGkd4g88tZXfA"/>
+ <eClassifiers xsi:type="ecore:EClass" xmi:id="_15LbQ260EeGkd4g88tZXfA" name="Periodical" abstract="true" eSuperTypes="_15Hw4m60EeGkd4g88tZXfA _9M9ys29IEeGekPcBm25hwQ">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="_15LbR260EeGkd4g88tZXfA" name="issuesPerYear" lowerBound="1">
+ <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" xmi:id="_15MCUG60EeGkd4g88tZXfA" name="AudioVisualItem" abstract="true" eSuperTypes="_15LbQG60EeGkd4g88tZXfA _9M9ys29IEeGekPcBm25hwQ">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="_15MCVG60EeGkd4g88tZXfA" name="minutes" lowerBound="1">
+ <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="_15MCVm60EeGkd4g88tZXfA" name="damaged">
+ <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" xmi:id="_15MpYW60EeGkd4g88tZXfA" name="BookOnTape" eSuperTypes="_15MCUG60EeGkd4g88tZXfA">
+ <eStructuralFeatures xsi:type="ecore:EReference" xmi:id="_15MpZG60EeGkd4g88tZXfA" name="author" eType="_15CRUW60EeGkd4g88tZXfA"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" xmi:id="_15MpZm60EeGkd4g88tZXfA" name="VideoCassette" eSuperTypes="_15MCUG60EeGkd4g88tZXfA">
+ <eStructuralFeatures xsi:type="ecore:EReference" xmi:id="_15NQcG60EeGkd4g88tZXfA" name="cast" upperBound="-1" eType="_15N3gm60EeGkd4g88tZXfA"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" xmi:id="_15NQcW60EeGkd4g88tZXfA" name="Borrower" eSuperTypes="_15N3gm60EeGkd4g88tZXfA">
+ <eStructuralFeatures xsi:type="ecore:EReference" xmi:id="_15N3gG60EeGkd4g88tZXfA" name="borrowed" upperBound="-1" eType="_15IX8G60EeGkd4g88tZXfA" eOpposite="_15JmEm60EeGkd4g88tZXfA"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" xmi:id="_15N3gm60EeGkd4g88tZXfA" name="Person" eSuperTypes="_15OelG60EeGkd4g88tZXfA">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="_15N3g260EeGkd4g88tZXfA" name="firstName" lowerBound="1">
+ <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="_15N3hW60EeGkd4g88tZXfA" name="familyName" lowerBound="1">
+ <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" xmi:id="_15OekG60EeGkd4g88tZXfA" name="Employee" eSuperTypes="_15N3gm60EeGkd4g88tZXfA">
+ <eStructuralFeatures xsi:type="ecore:EReference" xmi:id="_15Oekm60EeGkd4g88tZXfA" name="manager" eType="_15OekG60EeGkd4g88tZXfA"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" xmi:id="_15OelG60EeGkd4g88tZXfA" name="Addressable" abstract="true" interface="true">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="_15OelW60EeGkd4g88tZXfA" name="address">
+ <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" xmi:id="_9M9ysW9IEeGekPcBm25hwQ" name="Magazine" eSuperTypes="_15LbQ260EeGkd4g88tZXfA"/>
+ <eClassifiers xsi:type="ecore:EClass" xmi:id="_9M9ys29IEeGekPcBm25hwQ" name="TitledItem">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="_9M9ytG9IEeGekPcBm25hwQ" name="title">
+ <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+</ecore:EPackage>
diff --git a/testLocalExtLibraryIDThreeWayConflicts/.project b/testLocalExtLibraryIDThreeWayConflicts/.project
new file mode 100644
index 0000000..73a914d
--- /dev/null
+++ b/testLocalExtLibraryIDThreeWayConflicts/.project
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>testLocalExtLibraryIDThreeWayConflicts</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ </buildSpec>
+ <natures>
+ </natures>
+</projectDescription>
diff --git a/testLocalExtLibraryIDThreeWayConflicts/extlibraryLeft.ecore b/testLocalExtLibraryIDThreeWayConflicts/extlibraryLeft.ecore
new file mode 100644
index 0000000..b26cef2
--- /dev/null
+++ b/testLocalExtLibraryIDThreeWayConflicts/extlibraryLeft.ecore
@@ -0,0 +1,109 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmi:id="_14sTEG60EeGkd4g88tZXfA" name="extlibrary" nsURI="http:///org/eclipse/emf/examples/library/extlibrary.ecore/1.0.0" nsPrefix="extlib">
+ <eClassifiers xsi:type="ecore:EClass" xmi:id="_146VgG60EeGkd4g88tZXfA" name="Book" eSuperTypes="_15LbQG60EeGkd4g88tZXfA">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="_146VgW60EeGkd4g88tZXfA" name="title">
+ <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="_146Vg260EeGkd4g88tZXfA" name="pages" defaultValueLiteral="100">
+ <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="_1468kW60EeGkd4g88tZXfA" name="category" eType="_15F7sG60EeGkd4g88tZXfA" unsettable="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" xmi:id="_148KsG60EeGkd4g88tZXfA" name="author" lowerBound="1" eType="_15CRUW60EeGkd4g88tZXfA" eOpposite="_15EGgG60EeGkd4g88tZXfA"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" xmi:id="_148KsW60EeGkd4g88tZXfA" name="Library" eSuperTypes="_15OelG60EeGkd4g88tZXfA">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="_148Ksm60EeGkd4g88tZXfA" name="name">
+ <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" xmi:id="_148xwW60EeGkd4g88tZXfA" name="writers" upperBound="-1" eType="_15CRUW60EeGkd4g88tZXfA" volatile="true" transient="true" derived="true" containment="true" resolveProxies="false">
+ <eAnnotations xmi:id="_148xwm60EeGkd4g88tZXfA" source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details xmi:id="_148xw260EeGkd4g88tZXfA" key="group" value="#people"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" xmi:id="_149Y0G60EeGkd4g88tZXfA" name="employees" upperBound="-1" eType="_15OekG60EeGkd4g88tZXfA" volatile="true" transient="true" derived="true" containment="true" resolveProxies="false">
+ <eAnnotations xmi:id="_149Y0W60EeGkd4g88tZXfA" source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details xmi:id="_149Y0m60EeGkd4g88tZXfA" key="group" value="#people"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" xmi:id="_15AcIG60EeGkd4g88tZXfA" name="borrowers" upperBound="-1" eType="_15NQcW60EeGkd4g88tZXfA" volatile="true" transient="true" derived="true" containment="true" resolveProxies="false">
+ <eAnnotations xmi:id="_15AcIW60EeGkd4g88tZXfA" source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details xmi:id="_15BDMG60EeGkd4g88tZXfA" key="group" value="#people"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" xmi:id="_15BDMW60EeGkd4g88tZXfA" name="stock" ordered="false" upperBound="-1" eType="_15Hw4m60EeGkd4g88tZXfA" containment="true" resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" xmi:id="_15BDMm60EeGkd4g88tZXfA" name="books" ordered="false" upperBound="-1" eType="_146VgG60EeGkd4g88tZXfA" transient="true" derived="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" xmi:id="_15BqQG60EeGkd4g88tZXfA" name="branches" upperBound="-1" eType="_148KsW60EeGkd4g88tZXfA" containment="true" eOpposite="_15BqQm60EeGkd4g88tZXfA"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" xmi:id="_15BqQm60EeGkd4g88tZXfA" name="parentBranch" eType="_148KsW60EeGkd4g88tZXfA" eOpposite="_15BqQG60EeGkd4g88tZXfA"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="_15BqRG60EeGkd4g88tZXfA" name="people" upperBound="-1">
+ <eAnnotations xmi:id="_15BqRW60EeGkd4g88tZXfA" source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details xmi:id="_15BqRm60EeGkd4g88tZXfA" key="kind" value="group"/>
+ </eAnnotations>
+ <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EFeatureMapEntry"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" xmi:id="_15CRUW60EeGkd4g88tZXfA" name="Writer" eSuperTypes="_15N3gm60EeGkd4g88tZXfA">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="_15CRUm60EeGkd4g88tZXfA" name="name" volatile="true" transient="true">
+ <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" xmi:id="_15EGgG60EeGkd4g88tZXfA" name="books" upperBound="-1" eType="_146VgG60EeGkd4g88tZXfA" eOpposite="_148KsG60EeGkd4g88tZXfA"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" xmi:id="_15F7sG60EeGkd4g88tZXfA" name="BookCategory">
+ <eLiterals xmi:id="_15HJ0G60EeGkd4g88tZXfA" name="Mystery"/>
+ <eLiterals xmi:id="_15Hw4G60EeGkd4g88tZXfA" name="ScienceFiction" value="1"/>
+ <eLiterals xmi:id="_15Hw4W60EeGkd4g88tZXfA" name="Biography" value="2"/>
+ <eLiterals xmi:id="_XID4MG9IEeG7V_vNzpYwOw" name="Encyclopedia" value="3" literal="Encyclopedia"/>
+ <eLiterals xmi:id="_XIEfQG9IEeG7V_vNzpYwOw" name="Dictionary" value="4"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" xmi:id="_15Hw4m60EeGkd4g88tZXfA" name="Item" abstract="true">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="_15Hw4260EeGkd4g88tZXfA" name="publicationDate">
+ <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EDate"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" xmi:id="_15IX8G60EeGkd4g88tZXfA" name="Borrowable" abstract="true" interface="true">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="_15JmEG60EeGkd4g88tZXfA" name="copies" lowerBound="1">
+ <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" xmi:id="_15JmEm60EeGkd4g88tZXfA" name="borrowers" ordered="false" upperBound="-1" eType="_15NQcW60EeGkd4g88tZXfA" eOpposite="_15N3gG60EeGkd4g88tZXfA"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" xmi:id="_15LbQG60EeGkd4g88tZXfA" name="CirculatingItem" abstract="true" eSuperTypes="_15Hw4m60EeGkd4g88tZXfA _15IX8G60EeGkd4g88tZXfA"/>
+ <eClassifiers xsi:type="ecore:EClass" xmi:id="_15MCUG60EeGkd4g88tZXfA" name="AudioVisualItem" abstract="true" eSuperTypes="_15LbQG60EeGkd4g88tZXfA">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="_15MCUm60EeGkd4g88tZXfA" name="title">
+ <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="_15MCVG60EeGkd4g88tZXfA" name="length" lowerBound="1">
+ <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="_15MCVm60EeGkd4g88tZXfA" name="damaged">
+ <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" xmi:id="_15MpYW60EeGkd4g88tZXfA" name="BookOnTape" eSuperTypes="_15MCUG60EeGkd4g88tZXfA">
+ <eStructuralFeatures xsi:type="ecore:EReference" xmi:id="_15MpZG60EeGkd4g88tZXfA" name="author" eType="_15CRUW60EeGkd4g88tZXfA"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" xmi:id="_15MpZm60EeGkd4g88tZXfA" name="VideoCassette" eSuperTypes="_15MCUG60EeGkd4g88tZXfA">
+ <eStructuralFeatures xsi:type="ecore:EReference" xmi:id="_15NQcG60EeGkd4g88tZXfA" name="cast" upperBound="-1" eType="_15N3gm60EeGkd4g88tZXfA"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" xmi:id="_15NQcW60EeGkd4g88tZXfA" name="Borrower" eSuperTypes="_15N3gm60EeGkd4g88tZXfA">
+ <eStructuralFeatures xsi:type="ecore:EReference" xmi:id="_15N3gG60EeGkd4g88tZXfA" name="borrowed" upperBound="-1" eType="_15IX8G60EeGkd4g88tZXfA" eOpposite="_15JmEm60EeGkd4g88tZXfA"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" xmi:id="_15N3gm60EeGkd4g88tZXfA" name="Person" eSuperTypes="_15OelG60EeGkd4g88tZXfA">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="_XIJ-0G9IEeG7V_vNzpYwOw" name="fullName">
+ <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" xmi:id="_15OekG60EeGkd4g88tZXfA" name="Employee" eSuperTypes="_15N3gm60EeGkd4g88tZXfA">
+ <eStructuralFeatures xsi:type="ecore:EReference" xmi:id="_15Oekm60EeGkd4g88tZXfA" name="manager" eType="_15OekG60EeGkd4g88tZXfA"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" xmi:id="_15OelG60EeGkd4g88tZXfA" name="Addressable" abstract="true" interface="true">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="_15OelW60EeGkd4g88tZXfA" name="address">
+ <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" xmi:id="_XIKl4W9IEeG7V_vNzpYwOw" name="Magazine" eSuperTypes="_15LbQG60EeGkd4g88tZXfA">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="_XIKl429IEeG7V_vNzpYwOw" name="title">
+ <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="_XIKl5W9IEeG7V_vNzpYwOw" name="pages">
+ <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+</ecore:EPackage>
diff --git a/testLocalExtLibraryIDThreeWayConflicts/extlibraryOrigin.ecore b/testLocalExtLibraryIDThreeWayConflicts/extlibraryOrigin.ecore
new file mode 100644
index 0000000..c891aa8
--- /dev/null
+++ b/testLocalExtLibraryIDThreeWayConflicts/extlibraryOrigin.ecore
@@ -0,0 +1,111 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmi:id="_14sTEG60EeGkd4g88tZXfA" name="extlibrary" nsURI="http:///org/eclipse/emf/examples/library/extlibrary.ecore/1.0.0" nsPrefix="extlib">
+ <eClassifiers xsi:type="ecore:EClass" xmi:id="_146VgG60EeGkd4g88tZXfA" name="Book" eSuperTypes="_15LbQG60EeGkd4g88tZXfA">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="_146VgW60EeGkd4g88tZXfA" name="title">
+ <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="_146Vg260EeGkd4g88tZXfA" name="pages" defaultValueLiteral="100">
+ <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="_1468kW60EeGkd4g88tZXfA" name="category" eType="_15F7sG60EeGkd4g88tZXfA" unsettable="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" xmi:id="_148KsG60EeGkd4g88tZXfA" name="author" lowerBound="1" eType="_15CRUW60EeGkd4g88tZXfA" eOpposite="_15EGgG60EeGkd4g88tZXfA"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" xmi:id="_148KsW60EeGkd4g88tZXfA" name="Library" eSuperTypes="_15OelG60EeGkd4g88tZXfA">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="_148Ksm60EeGkd4g88tZXfA" name="name">
+ <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" xmi:id="_148xwW60EeGkd4g88tZXfA" name="writers" upperBound="-1" eType="_15CRUW60EeGkd4g88tZXfA" volatile="true" transient="true" derived="true" containment="true" resolveProxies="false">
+ <eAnnotations xmi:id="_148xwm60EeGkd4g88tZXfA" source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details xmi:id="_148xw260EeGkd4g88tZXfA" key="group" value="#people"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" xmi:id="_149Y0G60EeGkd4g88tZXfA" name="employees" upperBound="-1" eType="_15OekG60EeGkd4g88tZXfA" volatile="true" transient="true" derived="true" containment="true" resolveProxies="false">
+ <eAnnotations xmi:id="_149Y0W60EeGkd4g88tZXfA" source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details xmi:id="_149Y0m60EeGkd4g88tZXfA" key="group" value="#people"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" xmi:id="_15AcIG60EeGkd4g88tZXfA" name="borrowers" upperBound="-1" eType="_15NQcW60EeGkd4g88tZXfA" volatile="true" transient="true" derived="true" containment="true" resolveProxies="false">
+ <eAnnotations xmi:id="_15AcIW60EeGkd4g88tZXfA" source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details xmi:id="_15BDMG60EeGkd4g88tZXfA" key="group" value="#people"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" xmi:id="_15BDMW60EeGkd4g88tZXfA" name="stock" ordered="false" upperBound="-1" eType="_15Hw4m60EeGkd4g88tZXfA" containment="true" resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" xmi:id="_15BDMm60EeGkd4g88tZXfA" name="books" ordered="false" upperBound="-1" eType="_146VgG60EeGkd4g88tZXfA" transient="true" derived="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" xmi:id="_15BqQG60EeGkd4g88tZXfA" name="branches" upperBound="-1" eType="_148KsW60EeGkd4g88tZXfA" containment="true" eOpposite="_15BqQm60EeGkd4g88tZXfA"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" xmi:id="_15BqQm60EeGkd4g88tZXfA" name="parentBranch" eType="_148KsW60EeGkd4g88tZXfA" eOpposite="_15BqQG60EeGkd4g88tZXfA"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="_15BqRG60EeGkd4g88tZXfA" name="people" upperBound="-1">
+ <eAnnotations xmi:id="_15BqRW60EeGkd4g88tZXfA" source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details xmi:id="_15BqRm60EeGkd4g88tZXfA" key="kind" value="group"/>
+ </eAnnotations>
+ <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EFeatureMapEntry"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" xmi:id="_15CRUW60EeGkd4g88tZXfA" name="Writer" eSuperTypes="_15N3gm60EeGkd4g88tZXfA">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="_15CRUm60EeGkd4g88tZXfA" name="name" volatile="true" transient="true">
+ <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" xmi:id="_15EGgG60EeGkd4g88tZXfA" name="books" upperBound="-1" eType="_146VgG60EeGkd4g88tZXfA" eOpposite="_148KsG60EeGkd4g88tZXfA"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" xmi:id="_15F7sG60EeGkd4g88tZXfA" name="BookCategory">
+ <eLiterals xmi:id="_15HJ0G60EeGkd4g88tZXfA" name="Mystery"/>
+ <eLiterals xmi:id="_15Hw4G60EeGkd4g88tZXfA" name="ScienceFiction" value="1"/>
+ <eLiterals xmi:id="_15Hw4W60EeGkd4g88tZXfA" name="Biography" value="2"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" xmi:id="_15Hw4m60EeGkd4g88tZXfA" name="Item" abstract="true">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="_15Hw4260EeGkd4g88tZXfA" name="publicationDate">
+ <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EDate"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" xmi:id="_15IX8G60EeGkd4g88tZXfA" name="Lendable" abstract="true" interface="true">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="_15JmEG60EeGkd4g88tZXfA" name="copies" lowerBound="1">
+ <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" xmi:id="_15JmEm60EeGkd4g88tZXfA" name="borrowers" ordered="false" upperBound="-1" eType="_15NQcW60EeGkd4g88tZXfA" eOpposite="_15N3gG60EeGkd4g88tZXfA"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" xmi:id="_15LbQG60EeGkd4g88tZXfA" name="CirculatingItem" abstract="true" eSuperTypes="_15Hw4m60EeGkd4g88tZXfA _15IX8G60EeGkd4g88tZXfA"/>
+ <eClassifiers xsi:type="ecore:EClass" xmi:id="_15LbQ260EeGkd4g88tZXfA" name="Periodical" abstract="true" eSuperTypes="_15Hw4m60EeGkd4g88tZXfA">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="_15LbRW60EeGkd4g88tZXfA" name="title">
+ <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="_15LbR260EeGkd4g88tZXfA" name="issuesPerYear" lowerBound="1">
+ <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" xmi:id="_15MCUG60EeGkd4g88tZXfA" name="AudioVisualItem" abstract="true" eSuperTypes="_15LbQG60EeGkd4g88tZXfA">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="_15MCUm60EeGkd4g88tZXfA" name="title">
+ <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="_15MCVG60EeGkd4g88tZXfA" name="minutesLength" lowerBound="1">
+ <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="_15MCVm60EeGkd4g88tZXfA" name="damaged">
+ <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" xmi:id="_15MpYW60EeGkd4g88tZXfA" name="BookOnTape" eSuperTypes="_15MCUG60EeGkd4g88tZXfA">
+ <eStructuralFeatures xsi:type="ecore:EReference" xmi:id="_15MpY260EeGkd4g88tZXfA" name="reader" eType="_15N3gm60EeGkd4g88tZXfA"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" xmi:id="_15MpZG60EeGkd4g88tZXfA" name="author" eType="_15CRUW60EeGkd4g88tZXfA"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" xmi:id="_15MpZm60EeGkd4g88tZXfA" name="VideoCassette" eSuperTypes="_15MCUG60EeGkd4g88tZXfA">
+ <eStructuralFeatures xsi:type="ecore:EReference" xmi:id="_15NQcG60EeGkd4g88tZXfA" name="cast" upperBound="-1" eType="_15N3gm60EeGkd4g88tZXfA"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" xmi:id="_15NQcW60EeGkd4g88tZXfA" name="Borrower" eSuperTypes="_15N3gm60EeGkd4g88tZXfA">
+ <eStructuralFeatures xsi:type="ecore:EReference" xmi:id="_15N3gG60EeGkd4g88tZXfA" name="borrowed" upperBound="-1" eType="_15IX8G60EeGkd4g88tZXfA" eOpposite="_15JmEm60EeGkd4g88tZXfA"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" xmi:id="_15N3gm60EeGkd4g88tZXfA" name="Person" eSuperTypes="_15OelG60EeGkd4g88tZXfA">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="_15N3g260EeGkd4g88tZXfA" name="firstName" lowerBound="1">
+ <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="_15N3hW60EeGkd4g88tZXfA" name="lastName" lowerBound="1">
+ <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" xmi:id="_15OekG60EeGkd4g88tZXfA" name="Employee" eSuperTypes="_15N3gm60EeGkd4g88tZXfA">
+ <eStructuralFeatures xsi:type="ecore:EReference" xmi:id="_15Oekm60EeGkd4g88tZXfA" name="manager" eType="_15OekG60EeGkd4g88tZXfA"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" xmi:id="_15OelG60EeGkd4g88tZXfA" name="Addressable" abstract="true" interface="true">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="_15OelW60EeGkd4g88tZXfA" name="address">
+ <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+</ecore:EPackage>
diff --git a/testLocalExtLibraryIDThreeWayConflicts/extlibraryRight.ecore b/testLocalExtLibraryIDThreeWayConflicts/extlibraryRight.ecore
new file mode 100644
index 0000000..09d5b07
--- /dev/null
+++ b/testLocalExtLibraryIDThreeWayConflicts/extlibraryRight.ecore
@@ -0,0 +1,112 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmi:id="_14sTEG60EeGkd4g88tZXfA" name="extlibrary" nsURI="http:///org/eclipse/emf/examples/library/extlibrary.ecore/1.0.0" nsPrefix="extlib">
+ <eClassifiers xsi:type="ecore:EClass" xmi:id="_146VgG60EeGkd4g88tZXfA" name="Book" eSuperTypes="_15LbQG60EeGkd4g88tZXfA _9M9ys29IEeGekPcBm25hwQ">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="_146Vg260EeGkd4g88tZXfA" name="pages" defaultValueLiteral="100">
+ <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="_1468kW60EeGkd4g88tZXfA" name="category" eType="_15F7sG60EeGkd4g88tZXfA" unsettable="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" xmi:id="_148KsG60EeGkd4g88tZXfA" name="author" lowerBound="1" eType="_15CRUW60EeGkd4g88tZXfA" eOpposite="_15EGgG60EeGkd4g88tZXfA"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="_9MlYMG9IEeGekPcBm25hwQ" name="subtitle">
+ <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" xmi:id="_148KsW60EeGkd4g88tZXfA" name="Library" eSuperTypes="_15OelG60EeGkd4g88tZXfA">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="_148Ksm60EeGkd4g88tZXfA" name="name">
+ <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" xmi:id="_148xwW60EeGkd4g88tZXfA" name="writers" upperBound="-1" eType="_15CRUW60EeGkd4g88tZXfA" volatile="true" transient="true" derived="true" containment="true" resolveProxies="false">
+ <eAnnotations xmi:id="_148xwm60EeGkd4g88tZXfA" source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details xmi:id="_148xw260EeGkd4g88tZXfA" key="group" value="#people"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" xmi:id="_149Y0G60EeGkd4g88tZXfA" name="employees" upperBound="-1" eType="_15OekG60EeGkd4g88tZXfA" volatile="true" transient="true" derived="true" containment="true" resolveProxies="false">
+ <eAnnotations xmi:id="_149Y0W60EeGkd4g88tZXfA" source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details xmi:id="_149Y0m60EeGkd4g88tZXfA" key="group" value="#people"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" xmi:id="_15AcIG60EeGkd4g88tZXfA" name="borrowers" upperBound="-1" eType="_15NQcW60EeGkd4g88tZXfA" volatile="true" transient="true" derived="true" containment="true" resolveProxies="false">
+ <eAnnotations xmi:id="_15AcIW60EeGkd4g88tZXfA" source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details xmi:id="_15BDMG60EeGkd4g88tZXfA" key="group" value="#people"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" xmi:id="_15BDMW60EeGkd4g88tZXfA" name="stock" ordered="false" upperBound="-1" eType="_15Hw4m60EeGkd4g88tZXfA" containment="true" resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" xmi:id="_15BDMm60EeGkd4g88tZXfA" name="books" ordered="false" upperBound="-1" eType="_146VgG60EeGkd4g88tZXfA" transient="true" derived="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" xmi:id="_15BqQG60EeGkd4g88tZXfA" name="branches" upperBound="-1" eType="_148KsW60EeGkd4g88tZXfA" containment="true" eOpposite="_15BqQm60EeGkd4g88tZXfA"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" xmi:id="_15BqQm60EeGkd4g88tZXfA" name="parentBranch" eType="_148KsW60EeGkd4g88tZXfA" eOpposite="_15BqQG60EeGkd4g88tZXfA"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="_15BqRG60EeGkd4g88tZXfA" name="people" upperBound="-1">
+ <eAnnotations xmi:id="_15BqRW60EeGkd4g88tZXfA" source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details xmi:id="_15BqRm60EeGkd4g88tZXfA" key="kind" value="group"/>
+ </eAnnotations>
+ <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EFeatureMapEntry"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" xmi:id="_15CRUW60EeGkd4g88tZXfA" name="Writer" eSuperTypes="_15N3gm60EeGkd4g88tZXfA">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="_15CRUm60EeGkd4g88tZXfA" name="name" volatile="true" transient="true">
+ <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" xmi:id="_15EGgG60EeGkd4g88tZXfA" name="books" upperBound="-1" eType="_146VgG60EeGkd4g88tZXfA" eOpposite="_148KsG60EeGkd4g88tZXfA"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" xmi:id="_15F7sG60EeGkd4g88tZXfA" name="BookCategory">
+ <eLiterals xmi:id="_15HJ0G60EeGkd4g88tZXfA" name="Mystery"/>
+ <eLiterals xmi:id="_15Hw4G60EeGkd4g88tZXfA" name="ScienceFiction" value="1"/>
+ <eLiterals xmi:id="_15Hw4W60EeGkd4g88tZXfA" name="Biography" value="2"/>
+ <eLiterals xmi:id="_9Mw-YG9IEeGekPcBm25hwQ" name="Manga" value="3" literal="Manga"/>
+ <eLiterals xmi:id="_9Mw-YW9IEeGekPcBm25hwQ" name="Manhwa" value="5"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" xmi:id="_15Hw4m60EeGkd4g88tZXfA" name="Item" abstract="true">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="_15Hw4260EeGkd4g88tZXfA" name="publicationDate">
+ <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EDate"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" xmi:id="_15IX8G60EeGkd4g88tZXfA" name="Lendable" abstract="true" interface="true">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="_15JmEG60EeGkd4g88tZXfA" name="copies" lowerBound="1">
+ <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" xmi:id="_15JmEm60EeGkd4g88tZXfA" name="borrowers" ordered="false" upperBound="-1" eType="_15NQcW60EeGkd4g88tZXfA" eOpposite="_15N3gG60EeGkd4g88tZXfA"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" xmi:id="_15LbQG60EeGkd4g88tZXfA" name="CirculatingItem" abstract="true" eSuperTypes="_15Hw4m60EeGkd4g88tZXfA _15IX8G60EeGkd4g88tZXfA"/>
+ <eClassifiers xsi:type="ecore:EClass" xmi:id="_15LbQ260EeGkd4g88tZXfA" name="Periodical" abstract="true" eSuperTypes="_15Hw4m60EeGkd4g88tZXfA _9M9ys29IEeGekPcBm25hwQ">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="_15LbR260EeGkd4g88tZXfA" name="issuesPerYear" lowerBound="1">
+ <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" xmi:id="_15MCUG60EeGkd4g88tZXfA" name="AudioVisualItem" abstract="true" eSuperTypes="_15LbQG60EeGkd4g88tZXfA _9M9ys29IEeGekPcBm25hwQ">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="_15MCVG60EeGkd4g88tZXfA" name="minutes" lowerBound="1">
+ <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="_15MCVm60EeGkd4g88tZXfA" name="damaged">
+ <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" xmi:id="_15MpYW60EeGkd4g88tZXfA" name="BookOnTape" eSuperTypes="_15MCUG60EeGkd4g88tZXfA">
+ <eStructuralFeatures xsi:type="ecore:EReference" xmi:id="_15MpZG60EeGkd4g88tZXfA" name="author" eType="_15CRUW60EeGkd4g88tZXfA"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" xmi:id="_15MpZm60EeGkd4g88tZXfA" name="VideoCassette" eSuperTypes="_15MCUG60EeGkd4g88tZXfA">
+ <eStructuralFeatures xsi:type="ecore:EReference" xmi:id="_15NQcG60EeGkd4g88tZXfA" name="cast" upperBound="-1" eType="_15N3gm60EeGkd4g88tZXfA"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" xmi:id="_15NQcW60EeGkd4g88tZXfA" name="Borrower" eSuperTypes="_15N3gm60EeGkd4g88tZXfA">
+ <eStructuralFeatures xsi:type="ecore:EReference" xmi:id="_15N3gG60EeGkd4g88tZXfA" name="borrowed" upperBound="-1" eType="_15IX8G60EeGkd4g88tZXfA" eOpposite="_15JmEm60EeGkd4g88tZXfA"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" xmi:id="_15N3gm60EeGkd4g88tZXfA" name="Person" eSuperTypes="_15OelG60EeGkd4g88tZXfA">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="_15N3g260EeGkd4g88tZXfA" name="firstName" lowerBound="1">
+ <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="_15N3hW60EeGkd4g88tZXfA" name="familyName" lowerBound="1">
+ <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" xmi:id="_15OekG60EeGkd4g88tZXfA" name="Employee" eSuperTypes="_15N3gm60EeGkd4g88tZXfA">
+ <eStructuralFeatures xsi:type="ecore:EReference" xmi:id="_15Oekm60EeGkd4g88tZXfA" name="manager" eType="_15OekG60EeGkd4g88tZXfA"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" xmi:id="_15OelG60EeGkd4g88tZXfA" name="Addressable" abstract="true" interface="true">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="_15OelW60EeGkd4g88tZXfA" name="address">
+ <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" xmi:id="_9M9ysW9IEeGekPcBm25hwQ" name="Magazine" eSuperTypes="_15LbQ260EeGkd4g88tZXfA"/>
+ <eClassifiers xsi:type="ecore:EClass" xmi:id="_9M9ys29IEeGekPcBm25hwQ" name="TitledItem">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="_9M9ytG9IEeGekPcBm25hwQ" name="title">
+ <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+</ecore:EPackage>
diff --git a/testLocalExtLibraryThreeWay/.project b/testLocalExtLibraryThreeWay/.project
new file mode 100644
index 0000000..fc2b405
--- /dev/null
+++ b/testLocalExtLibraryThreeWay/.project
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>testLocalExtLibraryThreeWay</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ </buildSpec>
+ <natures>
+ </natures>
+</projectDescription>
diff --git a/testLocalExtLibraryThreeWay/extlibraryLeft.ecore b/testLocalExtLibraryThreeWay/extlibraryLeft.ecore
new file mode 100644
index 0000000..30ad08a
--- /dev/null
+++ b/testLocalExtLibraryThreeWay/extlibraryLeft.ecore
@@ -0,0 +1,104 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="extlibrary" nsURI="http:///org/eclipse/emf/examples/library/extlibrary.ecore/1.0.0"
+ nsPrefix="extlib">
+ <eClassifiers xsi:type="ecore:EClass" name="Book" eSuperTypes="#//CirculatingItem">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="title" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="pages" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"
+ defaultValueLiteral="100"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="category" eType="#//BookCategory"
+ unsettable="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="author" lowerBound="1"
+ eType="#//Writer" eOpposite="#//Writer/books"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Library" eSuperTypes="#//Addressable">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="writers" upperBound="-1"
+ eType="#//Writer" volatile="true" transient="true" derived="true" containment="true"
+ resolveProxies="false">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="group" value="#people"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="employees" upperBound="-1"
+ eType="#//Employee" volatile="true" transient="true" derived="true" containment="true"
+ resolveProxies="false">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="group" value="#people"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="borrowers" upperBound="-1"
+ eType="#//Borrower" volatile="true" transient="true" derived="true" containment="true"
+ resolveProxies="false">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="group" value="#people"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="stock" ordered="false"
+ upperBound="-1" eType="#//Item" containment="true" resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="books" ordered="false"
+ upperBound="-1" eType="#//Book" transient="true" derived="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="branches" upperBound="-1"
+ eType="#//Library" containment="true" eOpposite="#//Library/parentBranch"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="parentBranch" eType="#//Library"
+ eOpposite="#//Library/branches"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="people" upperBound="-1"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EFeatureMapEntry">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="kind" value="group"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Writer" eSuperTypes="#//Person">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ volatile="true" transient="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="books" upperBound="-1"
+ eType="#//Book" eOpposite="#//Book/author"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="BookCategory">
+ <eLiterals name="Mystery"/>
+ <eLiterals name="ScienceFiction" value="1"/>
+ <eLiterals name="Biography" value="2"/>
+ <eLiterals name="Encyclopedia" value="3" literal="Encyclopedia"/>
+ <eLiterals name="Dictionary" value="4"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Item" abstract="true">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="publicationDate" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDate"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Borrowable" abstract="true" interface="true">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="copies" lowerBound="1"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="borrowers" ordered="false"
+ upperBound="-1" eType="#//Borrower" eOpposite="#//Borrower/borrowed"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="CirculatingItem" abstract="true" eSuperTypes="#//Item #//Borrowable"/>
+ <eClassifiers xsi:type="ecore:EClass" name="AudioVisualItem" abstract="true" eSuperTypes="#//CirculatingItem">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="title" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="length" lowerBound="1"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="damaged" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="BookOnTape" eSuperTypes="#//AudioVisualItem">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="author" eType="#//Writer"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="VideoCassette" eSuperTypes="#//AudioVisualItem">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="cast" upperBound="-1" eType="#//Person"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Borrower" eSuperTypes="#//Person">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="borrowed" upperBound="-1"
+ eType="#//Borrowable" eOpposite="#//Borrowable/borrowers"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Person" eSuperTypes="#//Addressable">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="fullName" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Employee" eSuperTypes="#//Person">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="manager" eType="#//Employee"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Addressable" abstract="true" interface="true">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="address" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Magazine" eSuperTypes="#//CirculatingItem">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="title" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="pages" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ </eClassifiers>
+</ecore:EPackage>
diff --git a/testLocalExtLibraryThreeWay/extlibraryOrigin.ecore b/testLocalExtLibraryThreeWay/extlibraryOrigin.ecore
new file mode 100644
index 0000000..30ad08a
--- /dev/null
+++ b/testLocalExtLibraryThreeWay/extlibraryOrigin.ecore
@@ -0,0 +1,104 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="extlibrary" nsURI="http:///org/eclipse/emf/examples/library/extlibrary.ecore/1.0.0"
+ nsPrefix="extlib">
+ <eClassifiers xsi:type="ecore:EClass" name="Book" eSuperTypes="#//CirculatingItem">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="title" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="pages" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"
+ defaultValueLiteral="100"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="category" eType="#//BookCategory"
+ unsettable="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="author" lowerBound="1"
+ eType="#//Writer" eOpposite="#//Writer/books"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Library" eSuperTypes="#//Addressable">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="writers" upperBound="-1"
+ eType="#//Writer" volatile="true" transient="true" derived="true" containment="true"
+ resolveProxies="false">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="group" value="#people"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="employees" upperBound="-1"
+ eType="#//Employee" volatile="true" transient="true" derived="true" containment="true"
+ resolveProxies="false">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="group" value="#people"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="borrowers" upperBound="-1"
+ eType="#//Borrower" volatile="true" transient="true" derived="true" containment="true"
+ resolveProxies="false">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="group" value="#people"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="stock" ordered="false"
+ upperBound="-1" eType="#//Item" containment="true" resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="books" ordered="false"
+ upperBound="-1" eType="#//Book" transient="true" derived="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="branches" upperBound="-1"
+ eType="#//Library" containment="true" eOpposite="#//Library/parentBranch"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="parentBranch" eType="#//Library"
+ eOpposite="#//Library/branches"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="people" upperBound="-1"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EFeatureMapEntry">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="kind" value="group"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Writer" eSuperTypes="#//Person">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ volatile="true" transient="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="books" upperBound="-1"
+ eType="#//Book" eOpposite="#//Book/author"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="BookCategory">
+ <eLiterals name="Mystery"/>
+ <eLiterals name="ScienceFiction" value="1"/>
+ <eLiterals name="Biography" value="2"/>
+ <eLiterals name="Encyclopedia" value="3" literal="Encyclopedia"/>
+ <eLiterals name="Dictionary" value="4"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Item" abstract="true">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="publicationDate" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDate"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Borrowable" abstract="true" interface="true">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="copies" lowerBound="1"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="borrowers" ordered="false"
+ upperBound="-1" eType="#//Borrower" eOpposite="#//Borrower/borrowed"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="CirculatingItem" abstract="true" eSuperTypes="#//Item #//Borrowable"/>
+ <eClassifiers xsi:type="ecore:EClass" name="AudioVisualItem" abstract="true" eSuperTypes="#//CirculatingItem">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="title" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="length" lowerBound="1"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="damaged" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="BookOnTape" eSuperTypes="#//AudioVisualItem">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="author" eType="#//Writer"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="VideoCassette" eSuperTypes="#//AudioVisualItem">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="cast" upperBound="-1" eType="#//Person"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Borrower" eSuperTypes="#//Person">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="borrowed" upperBound="-1"
+ eType="#//Borrowable" eOpposite="#//Borrowable/borrowers"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Person" eSuperTypes="#//Addressable">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="fullName" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Employee" eSuperTypes="#//Person">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="manager" eType="#//Employee"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Addressable" abstract="true" interface="true">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="address" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Magazine" eSuperTypes="#//CirculatingItem">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="title" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="pages" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ </eClassifiers>
+</ecore:EPackage>
diff --git a/testLocalExtLibraryThreeWay/extlibraryRight.ecore b/testLocalExtLibraryThreeWay/extlibraryRight.ecore
new file mode 100644
index 0000000..9501ecc
--- /dev/null
+++ b/testLocalExtLibraryThreeWay/extlibraryRight.ecore
@@ -0,0 +1,110 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="extlibrary" nsURI="http:///org/eclipse/emf/examples/library/extlibrary.ecore/1.0.0"
+ nsPrefix="extlib">
+ <eClassifiers xsi:type="ecore:EClass" name="Book" eSuperTypes="#//CirculatingItem #//TitledItem">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="pages" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"
+ defaultValueLiteral="100"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="category" eType="#//BookCategory"
+ unsettable="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="author" lowerBound="1"
+ eType="#//Writer" eOpposite="#//Writer/books"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="subtitle" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Library" eSuperTypes="#//Addressable">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="writers" upperBound="-1"
+ eType="#//Writer" volatile="true" transient="true" derived="true" containment="true"
+ resolveProxies="false">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="group" value="#people"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="employees" upperBound="-1"
+ eType="#//Employee" volatile="true" transient="true" derived="true" containment="true"
+ resolveProxies="false">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="group" value="#people"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="borrowers" upperBound="-1"
+ eType="#//Borrower" volatile="true" transient="true" derived="true" containment="true"
+ resolveProxies="false">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="group" value="#people"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="stock" ordered="false"
+ upperBound="-1" eType="#//Item" containment="true" resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="books" ordered="false"
+ upperBound="-1" eType="#//Book" transient="true" derived="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="branches" upperBound="-1"
+ eType="#//Library" containment="true" eOpposite="#//Library/parentBranch"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="parentBranch" eType="#//Library"
+ eOpposite="#//Library/branches"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="people" upperBound="-1"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EFeatureMapEntry">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="kind" value="group"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Writer" eSuperTypes="#//Person">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ volatile="true" transient="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="books" upperBound="-1"
+ eType="#//Book" eOpposite="#//Book/author"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="BookCategory">
+ <eLiterals name="Mystery"/>
+ <eLiterals name="ScienceFiction" value="1"/>
+ <eLiterals name="Biography" value="2"/>
+ <eLiterals name="Manga" value="3" literal="Manga"/>
+ <eLiterals name="Manhwa" value="5"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Item" abstract="true">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="publicationDate" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDate"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Lendable" abstract="true" interface="true">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="copies" lowerBound="1"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="borrowers" ordered="false"
+ upperBound="-1" eType="#//Borrower" eOpposite="#//Borrower/borrowed"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="CirculatingItem" abstract="true" eSuperTypes="#//Item #//Lendable"/>
+ <eClassifiers xsi:type="ecore:EClass" name="Periodical" abstract="true" eSuperTypes="#//Item #//TitledItem">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="issuesPerYear" lowerBound="1"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="AudioVisualItem" abstract="true" eSuperTypes="#//CirculatingItem #//TitledItem">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="minutes" lowerBound="1"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="damaged" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="BookOnTape" eSuperTypes="#//AudioVisualItem">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="author" eType="#//Writer"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="VideoCassette" eSuperTypes="#//AudioVisualItem">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="cast" upperBound="-1" eType="#//Person"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Borrower" eSuperTypes="#//Person">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="borrowed" upperBound="-1"
+ eType="#//Lendable" eOpposite="#//Lendable/borrowers"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Person" eSuperTypes="#//Addressable">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="firstName" lowerBound="1"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="familyName" lowerBound="1"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Employee" eSuperTypes="#//Person">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="manager" eType="#//Employee"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Addressable" abstract="true" interface="true">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="address" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Magazine" eSuperTypes="#//Periodical"/>
+ <eClassifiers xsi:type="ecore:EClass" name="TitledItem">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="title" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eClassifiers>
+</ecore:EPackage>
diff --git a/testLocalExtLibraryThreeWayConflicts/.project b/testLocalExtLibraryThreeWayConflicts/.project
new file mode 100644
index 0000000..07647c0
--- /dev/null
+++ b/testLocalExtLibraryThreeWayConflicts/.project
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>testLocalExtLibraryThreeWayConflicts</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ </buildSpec>
+ <natures>
+ </natures>
+</projectDescription>
diff --git a/testLocalExtLibraryThreeWayConflicts/extlibraryLeft.ecore b/testLocalExtLibraryThreeWayConflicts/extlibraryLeft.ecore
new file mode 100644
index 0000000..30ad08a
--- /dev/null
+++ b/testLocalExtLibraryThreeWayConflicts/extlibraryLeft.ecore
@@ -0,0 +1,104 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="extlibrary" nsURI="http:///org/eclipse/emf/examples/library/extlibrary.ecore/1.0.0"
+ nsPrefix="extlib">
+ <eClassifiers xsi:type="ecore:EClass" name="Book" eSuperTypes="#//CirculatingItem">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="title" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="pages" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"
+ defaultValueLiteral="100"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="category" eType="#//BookCategory"
+ unsettable="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="author" lowerBound="1"
+ eType="#//Writer" eOpposite="#//Writer/books"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Library" eSuperTypes="#//Addressable">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="writers" upperBound="-1"
+ eType="#//Writer" volatile="true" transient="true" derived="true" containment="true"
+ resolveProxies="false">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="group" value="#people"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="employees" upperBound="-1"
+ eType="#//Employee" volatile="true" transient="true" derived="true" containment="true"
+ resolveProxies="false">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="group" value="#people"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="borrowers" upperBound="-1"
+ eType="#//Borrower" volatile="true" transient="true" derived="true" containment="true"
+ resolveProxies="false">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="group" value="#people"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="stock" ordered="false"
+ upperBound="-1" eType="#//Item" containment="true" resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="books" ordered="false"
+ upperBound="-1" eType="#//Book" transient="true" derived="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="branches" upperBound="-1"
+ eType="#//Library" containment="true" eOpposite="#//Library/parentBranch"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="parentBranch" eType="#//Library"
+ eOpposite="#//Library/branches"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="people" upperBound="-1"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EFeatureMapEntry">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="kind" value="group"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Writer" eSuperTypes="#//Person">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ volatile="true" transient="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="books" upperBound="-1"
+ eType="#//Book" eOpposite="#//Book/author"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="BookCategory">
+ <eLiterals name="Mystery"/>
+ <eLiterals name="ScienceFiction" value="1"/>
+ <eLiterals name="Biography" value="2"/>
+ <eLiterals name="Encyclopedia" value="3" literal="Encyclopedia"/>
+ <eLiterals name="Dictionary" value="4"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Item" abstract="true">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="publicationDate" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDate"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Borrowable" abstract="true" interface="true">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="copies" lowerBound="1"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="borrowers" ordered="false"
+ upperBound="-1" eType="#//Borrower" eOpposite="#//Borrower/borrowed"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="CirculatingItem" abstract="true" eSuperTypes="#//Item #//Borrowable"/>
+ <eClassifiers xsi:type="ecore:EClass" name="AudioVisualItem" abstract="true" eSuperTypes="#//CirculatingItem">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="title" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="length" lowerBound="1"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="damaged" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="BookOnTape" eSuperTypes="#//AudioVisualItem">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="author" eType="#//Writer"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="VideoCassette" eSuperTypes="#//AudioVisualItem">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="cast" upperBound="-1" eType="#//Person"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Borrower" eSuperTypes="#//Person">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="borrowed" upperBound="-1"
+ eType="#//Borrowable" eOpposite="#//Borrowable/borrowers"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Person" eSuperTypes="#//Addressable">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="fullName" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Employee" eSuperTypes="#//Person">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="manager" eType="#//Employee"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Addressable" abstract="true" interface="true">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="address" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Magazine" eSuperTypes="#//CirculatingItem">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="title" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="pages" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ </eClassifiers>
+</ecore:EPackage>
diff --git a/testLocalExtLibraryThreeWayConflicts/extlibraryOrigin.ecore b/testLocalExtLibraryThreeWayConflicts/extlibraryOrigin.ecore
new file mode 100644
index 0000000..0cea4a6
--- /dev/null
+++ b/testLocalExtLibraryThreeWayConflicts/extlibraryOrigin.ecore
@@ -0,0 +1,107 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="extlibrary" nsURI="http:///org/eclipse/emf/examples/library/extlibrary.ecore/1.0.0"
+ nsPrefix="extlib">
+ <eClassifiers xsi:type="ecore:EClass" name="Book" eSuperTypes="#//CirculatingItem">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="title" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="pages" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"
+ defaultValueLiteral="100"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="category" eType="#//BookCategory"
+ unsettable="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="author" lowerBound="1"
+ eType="#//Writer" eOpposite="#//Writer/books"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Library" eSuperTypes="#//Addressable">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="writers" upperBound="-1"
+ eType="#//Writer" volatile="true" transient="true" derived="true" containment="true"
+ resolveProxies="false">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="group" value="#people"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="employees" upperBound="-1"
+ eType="#//Employee" volatile="true" transient="true" derived="true" containment="true"
+ resolveProxies="false">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="group" value="#people"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="borrowers" upperBound="-1"
+ eType="#//Borrower" volatile="true" transient="true" derived="true" containment="true"
+ resolveProxies="false">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="group" value="#people"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="stock" ordered="false"
+ upperBound="-1" eType="#//Item" containment="true" resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="books" ordered="false"
+ upperBound="-1" eType="#//Book" transient="true" derived="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="branches" upperBound="-1"
+ eType="#//Library" containment="true" eOpposite="#//Library/parentBranch"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="parentBranch" eType="#//Library"
+ eOpposite="#//Library/branches"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="people" upperBound="-1"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EFeatureMapEntry">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="kind" value="group"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Writer" eSuperTypes="#//Person">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ volatile="true" transient="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="books" upperBound="-1"
+ eType="#//Book" eOpposite="#//Book/author"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="BookCategory">
+ <eLiterals name="Mystery"/>
+ <eLiterals name="ScienceFiction" value="1"/>
+ <eLiterals name="Biography" value="2"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Item" abstract="true">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="publicationDate" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDate"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Lendable" abstract="true" interface="true">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="copies" lowerBound="1"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="borrowers" ordered="false"
+ upperBound="-1" eType="#//Borrower" eOpposite="#//Borrower/borrowed"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="CirculatingItem" abstract="true" eSuperTypes="#//Item #//Lendable"/>
+ <eClassifiers xsi:type="ecore:EClass" name="Periodical" abstract="true" eSuperTypes="#//Item">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="title" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="issuesPerYear" lowerBound="1"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="AudioVisualItem" abstract="true" eSuperTypes="#//CirculatingItem">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="title" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="minutesLength" lowerBound="1"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="damaged" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="BookOnTape" eSuperTypes="#//AudioVisualItem">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="reader" eType="#//Person"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="author" eType="#//Writer"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="VideoCassette" eSuperTypes="#//AudioVisualItem">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="cast" upperBound="-1" eType="#//Person"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Borrower" eSuperTypes="#//Person">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="borrowed" upperBound="-1"
+ eType="#//Lendable" eOpposite="#//Lendable/borrowers"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Person" eSuperTypes="#//Addressable">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="firstName" lowerBound="1"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="lastName" lowerBound="1"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Employee" eSuperTypes="#//Person">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="manager" eType="#//Employee"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Addressable" abstract="true" interface="true">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="address" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eClassifiers>
+</ecore:EPackage>
diff --git a/testLocalExtLibraryThreeWayConflicts/extlibraryRight.ecore b/testLocalExtLibraryThreeWayConflicts/extlibraryRight.ecore
new file mode 100644
index 0000000..9501ecc
--- /dev/null
+++ b/testLocalExtLibraryThreeWayConflicts/extlibraryRight.ecore
@@ -0,0 +1,110 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="extlibrary" nsURI="http:///org/eclipse/emf/examples/library/extlibrary.ecore/1.0.0"
+ nsPrefix="extlib">
+ <eClassifiers xsi:type="ecore:EClass" name="Book" eSuperTypes="#//CirculatingItem #//TitledItem">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="pages" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"
+ defaultValueLiteral="100"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="category" eType="#//BookCategory"
+ unsettable="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="author" lowerBound="1"
+ eType="#//Writer" eOpposite="#//Writer/books"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="subtitle" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Library" eSuperTypes="#//Addressable">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="writers" upperBound="-1"
+ eType="#//Writer" volatile="true" transient="true" derived="true" containment="true"
+ resolveProxies="false">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="group" value="#people"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="employees" upperBound="-1"
+ eType="#//Employee" volatile="true" transient="true" derived="true" containment="true"
+ resolveProxies="false">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="group" value="#people"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="borrowers" upperBound="-1"
+ eType="#//Borrower" volatile="true" transient="true" derived="true" containment="true"
+ resolveProxies="false">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="group" value="#people"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="stock" ordered="false"
+ upperBound="-1" eType="#//Item" containment="true" resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="books" ordered="false"
+ upperBound="-1" eType="#//Book" transient="true" derived="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="branches" upperBound="-1"
+ eType="#//Library" containment="true" eOpposite="#//Library/parentBranch"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="parentBranch" eType="#//Library"
+ eOpposite="#//Library/branches"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="people" upperBound="-1"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EFeatureMapEntry">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="kind" value="group"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Writer" eSuperTypes="#//Person">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ volatile="true" transient="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="books" upperBound="-1"
+ eType="#//Book" eOpposite="#//Book/author"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="BookCategory">
+ <eLiterals name="Mystery"/>
+ <eLiterals name="ScienceFiction" value="1"/>
+ <eLiterals name="Biography" value="2"/>
+ <eLiterals name="Manga" value="3" literal="Manga"/>
+ <eLiterals name="Manhwa" value="5"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Item" abstract="true">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="publicationDate" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDate"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Lendable" abstract="true" interface="true">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="copies" lowerBound="1"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="borrowers" ordered="false"
+ upperBound="-1" eType="#//Borrower" eOpposite="#//Borrower/borrowed"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="CirculatingItem" abstract="true" eSuperTypes="#//Item #//Lendable"/>
+ <eClassifiers xsi:type="ecore:EClass" name="Periodical" abstract="true" eSuperTypes="#//Item #//TitledItem">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="issuesPerYear" lowerBound="1"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="AudioVisualItem" abstract="true" eSuperTypes="#//CirculatingItem #//TitledItem">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="minutes" lowerBound="1"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="damaged" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="BookOnTape" eSuperTypes="#//AudioVisualItem">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="author" eType="#//Writer"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="VideoCassette" eSuperTypes="#//AudioVisualItem">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="cast" upperBound="-1" eType="#//Person"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Borrower" eSuperTypes="#//Person">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="borrowed" upperBound="-1"
+ eType="#//Lendable" eOpposite="#//Lendable/borrowers"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Person" eSuperTypes="#//Addressable">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="firstName" lowerBound="1"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="familyName" lowerBound="1"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Employee" eSuperTypes="#//Person">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="manager" eType="#//Employee"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Addressable" abstract="true" interface="true">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="address" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Magazine" eSuperTypes="#//Periodical"/>
+ <eClassifiers xsi:type="ecore:EClass" name="TitledItem">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="title" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eClassifiers>
+</ecore:EPackage>