diff --git a/src/test/java/de/tudresden/inf/st/e2j/parser/ParserTest.java b/src/test/java/de/tudresden/inf/st/e2j/parser/ParserTest.java
index 7c8b0244919bc62b1913efb429c6eab521d28723..4c12e7e2dd6e7bc87a4716125974ee144335a944 100644
--- a/src/test/java/de/tudresden/inf/st/e2j/parser/ParserTest.java
+++ b/src/test/java/de/tudresden/inf/st/e2j/parser/ParserTest.java
@@ -5,13 +5,15 @@ import de.tudresden.inf.st.e2j.jastadd.model.EPackage;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.Test;
 
+import java.io.FileNotFoundException;
 import java.io.IOException;
 import java.io.InputStream;
+import java.io.PrintWriter;
 
 class ParserTest {
 
   @Test
-  void parsePackage() {
+  void parseBigraph() {
 
     EObject ePackage = null;
 
@@ -36,6 +38,47 @@ class ParserTest {
 
     p.writeXMI(b);
 
+    try (PrintWriter out = new PrintWriter("bigraph_out.ecore")) {
+      out.println(b.toString());
+    } catch (FileNotFoundException e) {
+      Assertions.fail("unable to write output file", e);
+    }
+
+    System.out.println(b.toString());
+  }
+
+  @Test
+  void parseEcore() {
+
+    EObject ePackage = null;
+
+    final String fileName = "/ecore/ecore.ecore";
+
+    EcoreParser parser = new EcoreParser();
+
+    try (InputStream stream = this.getClass().getResourceAsStream(fileName)) {
+      Assertions.assertNotNull(stream, "unable to load resource '" + fileName + "'");
+      ePackage = parser.parse(stream);
+    } catch (IOException | XMIParseException e) {
+      Assertions.fail(e);
+    }
+
+    Assertions.assertNotNull(ePackage);
+
+    Assertions.assertTrue(ePackage instanceof EPackage);
+
+    EPackage p = (EPackage) ePackage;
+
+    StringBuilder b = new StringBuilder();
+
+    p.writeXMI(b);
+
+    try (PrintWriter out = new PrintWriter("ecore_out.ecore")) {
+      out.println(b.toString());
+    } catch (FileNotFoundException e) {
+      Assertions.fail("unable to write output file", e);
+    }
+
     System.out.println(b.toString());
   }
 
diff --git a/src/test/resources/ecore/bigraph.ecore b/src/test/resources/ecore/bigraph.ecore
index db72fd127a191003ed74e6712a973bcf759409dd..e84c7e961770c515c92346bafb3819be6f0e2f24 100644
--- a/src/test/resources/ecore/bigraph.ecore
+++ b/src/test/resources/ecore/bigraph.ecore
@@ -2,13 +2,11 @@
 <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="bigraphBaseModel"
-                nsURI="http://de.tudresden.inf.st.bigraphs.models"
-                nsPrefix="bigraphBaseModel">
+                nsURI="http://de.tudresden.inf.st.bigraphs.models" nsPrefix="bigraphBaseModel">
     <eClassifiers xsi:type="ecore:EClass" name="BPlace" abstract="true">
         <eStructuralFeatures xsi:type="ecore:EReference" name="bChild" upperBound="-1"
                              eType="#//BPlace" containment="true" eOpposite="#//BPlace/bPrnt"/>
-        <eStructuralFeatures xsi:type="ecore:EReference" name="bPrnt" eType="#//BPlace"
-                             eOpposite="#//BPlace/bChild"/>
+        <eStructuralFeatures xsi:type="ecore:EReference" name="bPrnt" eType="#//BPlace" eOpposite="#//BPlace/bChild"/>
     </eClassifiers>
     <eClassifiers xsi:type="ecore:EClass" name="BRoot" eSuperTypes="#//BPlace">
         <eStructuralFeatures xsi:type="ecore:EAttribute" name="index"
@@ -27,8 +25,8 @@
                              eOpposite="#//BLink/bPoints"/>
     </eClassifiers>
     <eClassifiers xsi:type="ecore:EClass" name="BLink" abstract="true" eSuperTypes="#//NameableType">
-        <eStructuralFeatures xsi:type="ecore:EReference" name="bPoints" lowerBound="1"
-                             upperBound="-1" eType="#//BPoint" eOpposite="#//BPoint/bLink"/>
+        <eStructuralFeatures xsi:type="ecore:EReference" name="bPoints" lowerBound="1" upperBound="-1" eType="#//BPoint"
+                             eOpposite="#//BPoint/bLink"/>
     </eClassifiers>
     <eClassifiers xsi:type="ecore:EClass" name="BPort" eSuperTypes="#//BPoint">
         <eStructuralFeatures xsi:type="ecore:EAttribute" name="index"
@@ -41,7 +39,6 @@
     <eClassifiers xsi:type="ecore:EClass" name="BOuterName" eSuperTypes="#//BLink"/>
     <eClassifiers xsi:type="ecore:EClass" name="NameableType" abstract="true" interface="true">
         <eStructuralFeatures xsi:type="ecore:EAttribute" name="name"
-                             eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
-                             iD="true"/>
+                             eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString" iD="true"/>
     </eClassifiers>
 </ecore:EPackage>
diff --git a/src/test/resources/ecore/ecore.ecore b/src/test/resources/ecore/ecore.ecore
new file mode 100644
index 0000000000000000000000000000000000000000..30cd5bc3f51329ab23cf3caad760e557ba71e718
--- /dev/null
+++ b/src/test/resources/ecore/ecore.ecore
@@ -0,0 +1,526 @@
+<?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="ecore" nsURI="http://www.eclipse.org/emf/2002/Ecore" nsPrefix="ecore">
+    <eClassifiers xsi:type="ecore:EClass" name="EAttribute" eSuperTypes="#//EStructuralFeature">
+        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
+            <details key="constraints" value="ConsistentTransient"/>
+        </eAnnotations>
+        <eStructuralFeatures xsi:type="ecore:EAttribute" name="iD" eType="#//EBoolean"/>
+        <eStructuralFeatures xsi:type="ecore:EReference" name="eAttributeType" lowerBound="1"
+                             eType="#//EDataType" changeable="false" volatile="true" transient="true" derived="true"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="EAnnotation" eSuperTypes="#//EModelElement">
+        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
+            <details key="constraints" value="WellFormed WellFormedSourceURI"/>
+        </eAnnotations>
+        <eStructuralFeatures xsi:type="ecore:EAttribute" name="source" eType="#//EString"/>
+        <eStructuralFeatures xsi:type="ecore:EReference" name="details" upperBound="-1"
+                             eType="#//EStringToStringMapEntry" containment="true" resolveProxies="false"/>
+        <eStructuralFeatures xsi:type="ecore:EReference" name="eModelElement" eType="#//EModelElement"
+                             transient="true" resolveProxies="false" eOpposite="#//EModelElement/eAnnotations"/>
+        <eStructuralFeatures xsi:type="ecore:EReference" name="contents" upperBound="-1"
+                             eType="#//EObject" containment="true" resolveProxies="false"/>
+        <eStructuralFeatures xsi:type="ecore:EReference" name="references" upperBound="-1"
+                             eType="#//EObject"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="EClass" eSuperTypes="#//EClassifier">
+        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
+            <details key="constraints" value="InterfaceIsAbstract AtMostOneID UniqueFeatureNames UniqueOperationSignatures NoCircularSuperTypes WellFormedMapEntryClass ConsistentSuperTypes DisjointFeatureAndOperationSignatures"/>
+        </eAnnotations>
+        <eOperations name="isSuperTypeOf" eType="#//EBoolean">
+            <eParameters name="someClass" eType="#//EClass"/>
+        </eOperations>
+        <eOperations name="getFeatureCount" eType="#//EInt"/>
+        <eOperations name="getEStructuralFeature" eType="#//EStructuralFeature">
+            <eParameters name="featureID" eType="#//EInt"/>
+        </eOperations>
+        <eOperations name="getFeatureID" eType="#//EInt">
+            <eParameters name="feature" eType="#//EStructuralFeature"/>
+        </eOperations>
+        <eOperations name="getEStructuralFeature" eType="#//EStructuralFeature">
+            <eParameters name="featureName" eType="#//EString"/>
+        </eOperations>
+        <eOperations name="getOperationCount" eType="#//EInt"/>
+        <eOperations name="getEOperation" eType="#//EOperation">
+            <eParameters name="operationID" eType="#//EInt"/>
+        </eOperations>
+        <eOperations name="getOperationID" eType="#//EInt">
+            <eParameters name="operation" eType="#//EOperation"/>
+        </eOperations>
+        <eOperations name="getOverride" eType="#//EOperation">
+            <eParameters name="operation" eType="#//EOperation"/>
+        </eOperations>
+        <eOperations name="getFeatureType" eType="#//EGenericType">
+            <eParameters name="feature" eType="#//EStructuralFeature"/>
+        </eOperations>
+        <eStructuralFeatures xsi:type="ecore:EAttribute" name="abstract" eType="#//EBoolean"/>
+        <eStructuralFeatures xsi:type="ecore:EAttribute" name="interface" eType="#//EBoolean"/>
+        <eStructuralFeatures xsi:type="ecore:EReference" name="eSuperTypes" upperBound="-1"
+                             eType="#//EClass" unsettable="true">
+            <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+                <details key="suppressedIsSetVisibility" value="true"/>
+                <details key="suppressedUnsetVisibility" value="true"/>
+            </eAnnotations>
+        </eStructuralFeatures>
+        <eStructuralFeatures xsi:type="ecore:EReference" name="eOperations" upperBound="-1"
+                             eType="#//EOperation" containment="true" resolveProxies="false" eOpposite="#//EOperation/eContainingClass"/>
+        <eStructuralFeatures xsi:type="ecore:EReference" name="eAllAttributes" upperBound="-1"
+                             eType="#//EAttribute" changeable="false" volatile="true" transient="true"
+                             derived="true"/>
+        <eStructuralFeatures xsi:type="ecore:EReference" name="eAllReferences" upperBound="-1"
+                             eType="#//EReference" changeable="false" volatile="true" transient="true"
+                             derived="true"/>
+        <eStructuralFeatures xsi:type="ecore:EReference" name="eReferences" upperBound="-1"
+                             eType="#//EReference" changeable="false" volatile="true" transient="true"
+                             derived="true"/>
+        <eStructuralFeatures xsi:type="ecore:EReference" name="eAttributes" upperBound="-1"
+                             eType="#//EAttribute" changeable="false" volatile="true" transient="true"
+                             derived="true"/>
+        <eStructuralFeatures xsi:type="ecore:EReference" name="eAllContainments" upperBound="-1"
+                             eType="#//EReference" changeable="false" volatile="true" transient="true"
+                             derived="true"/>
+        <eStructuralFeatures xsi:type="ecore:EReference" name="eAllOperations" upperBound="-1"
+                             eType="#//EOperation" changeable="false" volatile="true" transient="true"
+                             derived="true"/>
+        <eStructuralFeatures xsi:type="ecore:EReference" name="eAllStructuralFeatures"
+                             upperBound="-1" eType="#//EStructuralFeature" changeable="false" volatile="true"
+                             transient="true" derived="true"/>
+        <eStructuralFeatures xsi:type="ecore:EReference" name="eAllSuperTypes" upperBound="-1"
+                             eType="#//EClass" changeable="false" volatile="true" transient="true" derived="true"/>
+        <eStructuralFeatures xsi:type="ecore:EReference" name="eIDAttribute" eType="#//EAttribute"
+                             changeable="false" volatile="true" transient="true" derived="true" resolveProxies="false"/>
+        <eStructuralFeatures xsi:type="ecore:EReference" name="eStructuralFeatures" upperBound="-1"
+                             eType="#//EStructuralFeature" containment="true" resolveProxies="false" eOpposite="#//EStructuralFeature/eContainingClass"/>
+        <eStructuralFeatures xsi:type="ecore:EReference" name="eGenericSuperTypes" upperBound="-1"
+                             eType="#//EGenericType" unsettable="true" containment="true" resolveProxies="false">
+            <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+                <details key="suppressedIsSetVisibility" value="true"/>
+                <details key="suppressedUnsetVisibility" value="true"/>
+            </eAnnotations>
+        </eStructuralFeatures>
+        <eStructuralFeatures xsi:type="ecore:EReference" name="eAllGenericSuperTypes"
+                             upperBound="-1" eType="#//EGenericType" changeable="false" volatile="true"
+                             transient="true" derived="true"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="EClassifier" abstract="true" eSuperTypes="#//ENamedElement">
+        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
+            <details key="constraints" value="WellFormedInstanceTypeName UniqueTypeParameterNames"/>
+        </eAnnotations>
+        <eOperations name="isInstance" eType="#//EBoolean">
+            <eParameters name="object" eType="#//EJavaObject"/>
+        </eOperations>
+        <eOperations name="getClassifierID" eType="#//EInt"/>
+        <eStructuralFeatures xsi:type="ecore:EAttribute" name="instanceClassName" eType="#//EString"
+                             volatile="true" unsettable="true">
+            <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+                <details key="suppressedIsSetVisibility" value="true"/>
+                <details key="suppressedUnsetVisibility" value="true"/>
+            </eAnnotations>
+        </eStructuralFeatures>
+        <eStructuralFeatures xsi:type="ecore:EAttribute" name="instanceClass" changeable="false"
+                             volatile="true" transient="true" derived="true">
+            <eGenericType eClassifier="#//EJavaClass">
+                <eTypeArguments/>
+            </eGenericType>
+        </eStructuralFeatures>
+        <eStructuralFeatures xsi:type="ecore:EAttribute" name="defaultValue" eType="#//EJavaObject"
+                             changeable="false" volatile="true" transient="true" derived="true"/>
+        <eStructuralFeatures xsi:type="ecore:EAttribute" name="instanceTypeName" eType="#//EString"
+                             volatile="true" unsettable="true">
+            <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+                <details key="suppressedIsSetVisibility" value="true"/>
+                <details key="suppressedUnsetVisibility" value="true"/>
+            </eAnnotations>
+        </eStructuralFeatures>
+        <eStructuralFeatures xsi:type="ecore:EReference" name="ePackage" eType="#//EPackage"
+                             changeable="false" transient="true" eOpposite="#//EPackage/eClassifiers"/>
+        <eStructuralFeatures xsi:type="ecore:EReference" name="eTypeParameters" upperBound="-1"
+                             eType="#//ETypeParameter" containment="true"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="EDataType" eSuperTypes="#//EClassifier">
+        <eStructuralFeatures xsi:type="ecore:EAttribute" name="serializable" eType="#//EBoolean"
+                             defaultValueLiteral="true"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="EEnum" eSuperTypes="#//EDataType">
+        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
+            <details key="constraints" value="UniqueEnumeratorNames UniqueEnumeratorLiterals"/>
+        </eAnnotations>
+        <eOperations name="getEEnumLiteral" eType="#//EEnumLiteral">
+            <eParameters name="name" eType="#//EString"/>
+        </eOperations>
+        <eOperations name="getEEnumLiteral" eType="#//EEnumLiteral">
+            <eParameters name="value" eType="#//EInt"/>
+        </eOperations>
+        <eOperations name="getEEnumLiteralByLiteral" eType="#//EEnumLiteral">
+            <eParameters name="literal" eType="#//EString"/>
+        </eOperations>
+        <eStructuralFeatures xsi:type="ecore:EReference" name="eLiterals" upperBound="-1"
+                             eType="#//EEnumLiteral" containment="true" resolveProxies="false" eOpposite="#//EEnumLiteral/eEnum"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="EEnumLiteral" eSuperTypes="#//ENamedElement">
+        <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" eType="#//EInt"/>
+        <eStructuralFeatures xsi:type="ecore:EAttribute" name="instance" eType="#//EEnumerator"
+                             transient="true"/>
+        <eStructuralFeatures xsi:type="ecore:EAttribute" name="literal" eType="#//EString"/>
+        <eStructuralFeatures xsi:type="ecore:EReference" name="eEnum" eType="#//EEnum"
+                             changeable="false" transient="true" resolveProxies="false" eOpposite="#//EEnum/eLiterals"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="EFactory" eSuperTypes="#//EModelElement">
+        <eOperations name="create" eType="#//EObject">
+            <eParameters name="eClass" eType="#//EClass"/>
+        </eOperations>
+        <eOperations name="createFromString" eType="#//EJavaObject">
+            <eParameters name="eDataType" eType="#//EDataType"/>
+            <eParameters name="literalValue" eType="#//EString"/>
+        </eOperations>
+        <eOperations name="convertToString" eType="#//EString">
+            <eParameters name="eDataType" eType="#//EDataType"/>
+            <eParameters name="instanceValue" eType="#//EJavaObject"/>
+        </eOperations>
+        <eStructuralFeatures xsi:type="ecore:EReference" name="ePackage" lowerBound="1"
+                             eType="#//EPackage" transient="true" resolveProxies="false" eOpposite="#//EPackage/eFactoryInstance"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="EModelElement" abstract="true">
+        <eOperations name="getEAnnotation" eType="#//EAnnotation">
+            <eParameters name="source" eType="#//EString"/>
+        </eOperations>
+        <eStructuralFeatures xsi:type="ecore:EReference" name="eAnnotations" upperBound="-1"
+                             eType="#//EAnnotation" containment="true" resolveProxies="false" eOpposite="#//EAnnotation/eModelElement"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="ENamedElement" abstract="true" eSuperTypes="#//EModelElement">
+        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
+            <details key="constraints" value="WellFormedName"/>
+        </eAnnotations>
+        <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="#//EString"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="EObject">
+        <eOperations name="eClass" eType="#//EClass"/>
+        <eOperations name="eIsProxy" eType="#//EBoolean"/>
+        <eOperations name="eResource" eType="#//EResource"/>
+        <eOperations name="eContainer" eType="#//EObject"/>
+        <eOperations name="eContainingFeature" eType="#//EStructuralFeature"/>
+        <eOperations name="eContainmentFeature" eType="#//EReference"/>
+        <eOperations name="eContents">
+            <eGenericType eClassifier="#//EEList">
+                <eTypeArguments eClassifier="#//EObject"/>
+            </eGenericType>
+        </eOperations>
+        <eOperations name="eAllContents">
+            <eGenericType eClassifier="#//ETreeIterator">
+                <eTypeArguments eClassifier="#//EObject"/>
+            </eGenericType>
+        </eOperations>
+        <eOperations name="eCrossReferences">
+            <eGenericType eClassifier="#//EEList">
+                <eTypeArguments eClassifier="#//EObject"/>
+            </eGenericType>
+        </eOperations>
+        <eOperations name="eGet" eType="#//EJavaObject">
+            <eParameters name="feature" eType="#//EStructuralFeature"/>
+        </eOperations>
+        <eOperations name="eGet" eType="#//EJavaObject">
+            <eParameters name="feature" eType="#//EStructuralFeature"/>
+            <eParameters name="resolve" eType="#//EBoolean"/>
+        </eOperations>
+        <eOperations name="eSet">
+            <eParameters name="feature" eType="#//EStructuralFeature"/>
+            <eParameters name="newValue" eType="#//EJavaObject"/>
+        </eOperations>
+        <eOperations name="eIsSet" eType="#//EBoolean">
+            <eParameters name="feature" eType="#//EStructuralFeature"/>
+        </eOperations>
+        <eOperations name="eUnset">
+            <eParameters name="feature" eType="#//EStructuralFeature"/>
+        </eOperations>
+        <eOperations name="eInvoke" eType="#//EJavaObject" eExceptions="#//EInvocationTargetException">
+            <eParameters name="operation" eType="#//EOperation"/>
+            <eParameters name="arguments">
+                <eGenericType eClassifier="#//EEList">
+                    <eTypeArguments/>
+                </eGenericType>
+            </eParameters>
+        </eOperations>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="EOperation" eSuperTypes="#//ETypedElement">
+        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
+            <details key="constraints" value="UniqueParameterNames UniqueTypeParameterNames NoRepeatingVoid"/>
+        </eAnnotations>
+        <eOperations name="getOperationID" eType="#//EInt"/>
+        <eOperations name="isOverrideOf" eType="#//EBoolean">
+            <eParameters name="someOperation" eType="#//EOperation"/>
+        </eOperations>
+        <eStructuralFeatures xsi:type="ecore:EReference" name="eContainingClass" eType="#//EClass"
+                             changeable="false" transient="true" resolveProxies="false" eOpposite="#//EClass/eOperations"/>
+        <eStructuralFeatures xsi:type="ecore:EReference" name="eTypeParameters" upperBound="-1"
+                             eType="#//ETypeParameter" containment="true"/>
+        <eStructuralFeatures xsi:type="ecore:EReference" name="eParameters" upperBound="-1"
+                             eType="#//EParameter" containment="true" resolveProxies="false" eOpposite="#//EParameter/eOperation"/>
+        <eStructuralFeatures xsi:type="ecore:EReference" name="eExceptions" upperBound="-1"
+                             eType="#//EClassifier" unsettable="true">
+            <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+                <details key="suppressedIsSetVisibility" value="true"/>
+                <details key="suppressedUnsetVisibility" value="true"/>
+            </eAnnotations>
+        </eStructuralFeatures>
+        <eStructuralFeatures xsi:type="ecore:EReference" name="eGenericExceptions" upperBound="-1"
+                             eType="#//EGenericType" unsettable="true" containment="true" resolveProxies="false">
+            <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+                <details key="suppressedIsSetVisibility" value="true"/>
+                <details key="suppressedUnsetVisibility" value="true"/>
+            </eAnnotations>
+        </eStructuralFeatures>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="EPackage" eSuperTypes="#//ENamedElement">
+        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
+            <details key="constraints" value="WellFormedNsURI WellFormedNsPrefix UniqueSubpackageNames UniqueClassifierNames UniqueNsURIs"/>
+        </eAnnotations>
+        <eOperations name="getEClassifier" eType="#//EClassifier">
+            <eParameters name="name" eType="#//EString"/>
+        </eOperations>
+        <eStructuralFeatures xsi:type="ecore:EAttribute" name="nsURI" eType="#//EString"/>
+        <eStructuralFeatures xsi:type="ecore:EAttribute" name="nsPrefix" eType="#//EString"/>
+        <eStructuralFeatures xsi:type="ecore:EReference" name="eFactoryInstance" lowerBound="1"
+                             eType="#//EFactory" transient="true" resolveProxies="false" eOpposite="#//EFactory/ePackage"/>
+        <eStructuralFeatures xsi:type="ecore:EReference" name="eClassifiers" upperBound="-1"
+                             eType="#//EClassifier" containment="true" eOpposite="#//EClassifier/ePackage"/>
+        <eStructuralFeatures xsi:type="ecore:EReference" name="eSubpackages" upperBound="-1"
+                             eType="#//EPackage" containment="true" eOpposite="#//EPackage/eSuperPackage"/>
+        <eStructuralFeatures xsi:type="ecore:EReference" name="eSuperPackage" eType="#//EPackage"
+                             changeable="false" transient="true" eOpposite="#//EPackage/eSubpackages"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="EParameter" eSuperTypes="#//ETypedElement">
+        <eStructuralFeatures xsi:type="ecore:EReference" name="eOperation" eType="#//EOperation"
+                             changeable="false" transient="true" resolveProxies="false" eOpposite="#//EOperation/eParameters"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="EReference" eSuperTypes="#//EStructuralFeature">
+        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
+            <details key="constraints" value="ConsistentOpposite SingleContainer ConsistentKeys ConsistentUnique ConsistentContainer"/>
+        </eAnnotations>
+        <eStructuralFeatures xsi:type="ecore:EAttribute" name="containment" eType="#//EBoolean"/>
+        <eStructuralFeatures xsi:type="ecore:EAttribute" name="container" eType="#//EBoolean"
+                             changeable="false" volatile="true" transient="true" derived="true"/>
+        <eStructuralFeatures xsi:type="ecore:EAttribute" name="resolveProxies" eType="#//EBoolean"
+                             defaultValueLiteral="true"/>
+        <eStructuralFeatures xsi:type="ecore:EReference" name="eOpposite" eType="#//EReference"/>
+        <eStructuralFeatures xsi:type="ecore:EReference" name="eReferenceType" lowerBound="1"
+                             eType="#//EClass" changeable="false" volatile="true" transient="true" derived="true"/>
+        <eStructuralFeatures xsi:type="ecore:EReference" name="eKeys" upperBound="-1"
+                             eType="#//EAttribute"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="EStructuralFeature" abstract="true"
+                  eSuperTypes="#//ETypedElement">
+        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
+            <details key="constraints" value="ValidDefaultValueLiteral"/>
+        </eAnnotations>
+        <eOperations name="getFeatureID" eType="#//EInt"/>
+        <eOperations name="getContainerClass">
+            <eGenericType eClassifier="#//EJavaClass">
+                <eTypeArguments/>
+            </eGenericType>
+        </eOperations>
+        <eStructuralFeatures xsi:type="ecore:EAttribute" name="changeable" eType="#//EBoolean"
+                             defaultValueLiteral="true"/>
+        <eStructuralFeatures xsi:type="ecore:EAttribute" name="volatile" eType="#//EBoolean"/>
+        <eStructuralFeatures xsi:type="ecore:EAttribute" name="transient" eType="#//EBoolean"/>
+        <eStructuralFeatures xsi:type="ecore:EAttribute" name="defaultValueLiteral" eType="#//EString"/>
+        <eStructuralFeatures xsi:type="ecore:EAttribute" name="defaultValue" eType="#//EJavaObject"
+                             changeable="false" volatile="true" transient="true" derived="true"/>
+        <eStructuralFeatures xsi:type="ecore:EAttribute" name="unsettable" eType="#//EBoolean"/>
+        <eStructuralFeatures xsi:type="ecore:EAttribute" name="derived" eType="#//EBoolean"/>
+        <eStructuralFeatures xsi:type="ecore:EReference" name="eContainingClass" eType="#//EClass"
+                             changeable="false" transient="true" resolveProxies="false" eOpposite="#//EClass/eStructuralFeatures"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="ETypedElement" abstract="true" eSuperTypes="#//ENamedElement">
+        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
+            <details key="constraints" value="ValidLowerBound ValidUpperBound ConsistentBounds ValidType"/>
+        </eAnnotations>
+        <eStructuralFeatures xsi:type="ecore:EAttribute" name="ordered" eType="#//EBoolean"
+                             defaultValueLiteral="true"/>
+        <eStructuralFeatures xsi:type="ecore:EAttribute" name="unique" eType="#//EBoolean"
+                             defaultValueLiteral="true"/>
+        <eStructuralFeatures xsi:type="ecore:EAttribute" name="lowerBound" eType="#//EInt"/>
+        <eStructuralFeatures xsi:type="ecore:EAttribute" name="upperBound" eType="#//EInt"
+                             defaultValueLiteral="1"/>
+        <eStructuralFeatures xsi:type="ecore:EAttribute" name="many" eType="#//EBoolean"
+                             changeable="false" volatile="true" transient="true" derived="true"/>
+        <eStructuralFeatures xsi:type="ecore:EAttribute" name="required" eType="#//EBoolean"
+                             changeable="false" volatile="true" transient="true" derived="true"/>
+        <eStructuralFeatures xsi:type="ecore:EReference" name="eType" eType="#//EClassifier"
+                             volatile="true" unsettable="true">
+            <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+                <details key="suppressedIsSetVisibility" value="true"/>
+                <details key="suppressedUnsetVisibility" value="true"/>
+            </eAnnotations>
+        </eStructuralFeatures>
+        <eStructuralFeatures xsi:type="ecore:EReference" name="eGenericType" eType="#//EGenericType"
+                             volatile="true" unsettable="true" containment="true" resolveProxies="false">
+            <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+                <details key="suppressedIsSetVisibility" value="true"/>
+                <details key="suppressedUnsetVisibility" value="true"/>
+            </eAnnotations>
+        </eStructuralFeatures>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EDataType" name="EBigDecimal" instanceClassName="java.math.BigDecimal">
+        <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+            <details key="baseType" value="http://www.w3.org/2001/XMLSchema#decimal"/>
+        </eAnnotations>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EDataType" name="EBigInteger" instanceClassName="java.math.BigInteger">
+        <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+            <details key="baseType" value="http://www.w3.org/2001/XMLSchema#integer"/>
+        </eAnnotations>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EDataType" name="EBoolean" instanceClassName="boolean">
+        <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+            <details key="baseType" value="http://www.w3.org/2001/XMLSchema#boolean"/>
+        </eAnnotations>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EDataType" name="EBooleanObject" instanceClassName="java.lang.Boolean">
+        <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+            <details key="baseType" value="EBoolean"/>
+            <details key="name" value="EBoolean:Object"/>
+        </eAnnotations>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EDataType" name="EByte" instanceClassName="byte">
+        <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+            <details key="baseType" value="http://www.w3.org/2001/XMLSchema#byte"/>
+        </eAnnotations>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EDataType" name="EByteArray" instanceClassName="byte[]">
+        <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+            <details key="baseType" value="http://www.w3.org/2001/XMLSchema#hexBinary"/>
+        </eAnnotations>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EDataType" name="EByteObject" instanceClassName="java.lang.Byte">
+        <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+            <details key="baseType" value="EByte"/>
+            <details key="name" value="EByte:Object"/>
+        </eAnnotations>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EDataType" name="EChar" instanceClassName="char"/>
+    <eClassifiers xsi:type="ecore:EDataType" name="ECharacterObject" instanceClassName="java.lang.Character">
+        <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+            <details key="baseType" value="EChar"/>
+            <details key="name" value="EChar:Object"/>
+        </eAnnotations>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EDataType" name="EDate" instanceClassName="java.util.Date"/>
+    <eClassifiers xsi:type="ecore:EDataType" name="EDiagnosticChain" instanceClassName="org.eclipse.emf.common.util.DiagnosticChain"
+                  serializable="false"/>
+    <eClassifiers xsi:type="ecore:EDataType" name="EDouble" instanceClassName="double">
+        <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+            <details key="baseType" value="http://www.w3.org/2001/XMLSchema#double"/>
+        </eAnnotations>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EDataType" name="EDoubleObject" instanceClassName="java.lang.Double">
+        <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+            <details key="baseType" value="EDouble"/>
+            <details key="name" value="EDouble:Object"/>
+        </eAnnotations>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EDataType" name="EEList" instanceClassName="org.eclipse.emf.common.util.EList"
+                  serializable="false">
+        <eTypeParameters name="E"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EDataType" name="EEnumerator" instanceClassName="org.eclipse.emf.common.util.Enumerator"
+                  serializable="false"/>
+    <eClassifiers xsi:type="ecore:EDataType" name="EFeatureMap" instanceClassName="org.eclipse.emf.ecore.util.FeatureMap"
+                  serializable="false"/>
+    <eClassifiers xsi:type="ecore:EDataType" name="EFeatureMapEntry" instanceClassName="org.eclipse.emf.ecore.util.FeatureMap$Entry"
+                  serializable="false"/>
+    <eClassifiers xsi:type="ecore:EDataType" name="EFloat" instanceClassName="float">
+        <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+            <details key="baseType" value="http://www.w3.org/2001/XMLSchema#float"/>
+        </eAnnotations>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EDataType" name="EFloatObject" instanceClassName="java.lang.Float">
+        <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+            <details key="baseType" value="EFloat"/>
+            <details key="name" value="EFloat:Object"/>
+        </eAnnotations>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EDataType" name="EInt" instanceClassName="int">
+        <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+            <details key="baseType" value="http://www.w3.org/2001/XMLSchema#int"/>
+        </eAnnotations>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EDataType" name="EIntegerObject" instanceClassName="java.lang.Integer">
+        <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+            <details key="baseType" value="EInt"/>
+            <details key="name" value="EInt:Object"/>
+        </eAnnotations>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EDataType" name="EJavaClass" instanceClassName="java.lang.Class">
+        <eTypeParameters name="T"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EDataType" name="EJavaObject" instanceClassName="java.lang.Object"/>
+    <eClassifiers xsi:type="ecore:EDataType" name="ELong" instanceClassName="long">
+        <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+            <details key="baseType" value="http://www.w3.org/2001/XMLSchema#long"/>
+        </eAnnotations>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EDataType" name="ELongObject" instanceClassName="java.lang.Long">
+        <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+            <details key="baseType" value="ELong"/>
+            <details key="name" value="ELong:Object"/>
+        </eAnnotations>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EDataType" name="EMap" instanceClassName="java.util.Map"
+                  serializable="false">
+        <eTypeParameters name="K"/>
+        <eTypeParameters name="V"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EDataType" name="EResource" instanceClassName="org.eclipse.emf.ecore.resource.Resource"
+                  serializable="false"/>
+    <eClassifiers xsi:type="ecore:EDataType" name="EResourceSet" instanceClassName="org.eclipse.emf.ecore.resource.ResourceSet"
+                  serializable="false"/>
+    <eClassifiers xsi:type="ecore:EDataType" name="EShort" instanceClassName="short">
+        <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+            <details key="baseType" value="http://www.w3.org/2001/XMLSchema#short"/>
+        </eAnnotations>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EDataType" name="EShortObject" instanceClassName="java.lang.Short">
+        <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+            <details key="baseType" value="EShort"/>
+            <details key="name" value="EShort:Object"/>
+        </eAnnotations>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EDataType" name="EString" instanceClassName="java.lang.String">
+        <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+            <details key="baseType" value="http://www.w3.org/2001/XMLSchema#string"/>
+        </eAnnotations>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="EStringToStringMapEntry" instanceClassName="java.util.Map$Entry">
+        <eStructuralFeatures xsi:type="ecore:EAttribute" name="key" eType="#//EString"/>
+        <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" eType="#//EString"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EDataType" name="ETreeIterator" instanceClassName="org.eclipse.emf.common.util.TreeIterator"
+                  serializable="false">
+        <eTypeParameters name="E"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="EGenericType">
+        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
+            <details key="constraints" value="ConsistentType ConsistentBounds ConsistentArguments"/>
+        </eAnnotations>
+        <eOperations name="isInstance" eType="#//EBoolean">
+            <eParameters name="object" eType="#//EJavaObject"/>
+        </eOperations>
+        <eStructuralFeatures xsi:type="ecore:EReference" name="eUpperBound" eType="#//EGenericType"
+                             containment="true" resolveProxies="false"/>
+        <eStructuralFeatures xsi:type="ecore:EReference" name="eTypeArguments" upperBound="-1"
+                             eType="#//EGenericType" containment="true" resolveProxies="false"/>
+        <eStructuralFeatures xsi:type="ecore:EReference" name="eRawType" lowerBound="1"
+                             eType="#//EClassifier" changeable="false" transient="true" derived="true"/>
+        <eStructuralFeatures xsi:type="ecore:EReference" name="eLowerBound" eType="#//EGenericType"
+                             containment="true" resolveProxies="false"/>
+        <eStructuralFeatures xsi:type="ecore:EReference" name="eTypeParameter" eType="#//ETypeParameter"
+                             resolveProxies="false"/>
+        <eStructuralFeatures xsi:type="ecore:EReference" name="eClassifier" eType="#//EClassifier"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="ETypeParameter" eSuperTypes="#//ENamedElement">
+        <eStructuralFeatures xsi:type="ecore:EReference" name="eBounds" upperBound="-1"
+                             eType="#//EGenericType" containment="true" resolveProxies="false"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EDataType" name="EInvocationTargetException" instanceClassName="java.lang.reflect.InvocationTargetException"
+                  serializable="false"/>
+</ecore:EPackage>