<?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="base" nsURI="cruise.example.base" nsPrefix="base">
  <eClassifiers xsi:type="ecore:EClass" name="Student">
    <eStructuralFeatures xsi:type="ecore:EReference" name="n" lowerBound="1" eType="#//Mentor" eOpposite="#//Mentor/b" />
    <eStructuralFeatures xsi:type="ecore:EReference" name="o" lowerBound="3" upperBound="3" eType="#//Mentor" eOpposite="#//Mentor/c" />
    <eStructuralFeatures xsi:type="ecore:EReference" name="p" upperBound="-1" eType="#//Mentor" eOpposite="#//Mentor/d" />
    <eStructuralFeatures xsi:type="ecore:EReference" name="m" upperBound="4" eType="#//Mentor" eOpposite="#//Mentor/a" />
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="Mentor">
    <eStructuralFeatures xsi:type="ecore:EReference" name="b" upperBound="-1" eType="#//Student" eOpposite="#//Student/n" />
    <eStructuralFeatures xsi:type="ecore:EReference" name="c" lowerBound="1" eType="#//Student" eOpposite="#//Student/o" />
    <eStructuralFeatures xsi:type="ecore:EReference" name="d" lowerBound="3" upperBound="5" eType="#//Student" eOpposite="#//Student/p" />
    <eStructuralFeatures xsi:type="ecore:EReference" name="a" eType="#//Student" eOpposite="#//Student/m" />
  </eClassifiers>
</ecore:EPackage>

<?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="example" nsURI="example" nsPrefix="example">
  <eClassifiers xsi:type="ecore:EClass" name="A">
    <eStructuralFeatures xsi:type="ecore:EReference" name="b1" upperBound="-1" eType="#//B" eOpposite="#//B/a1" />
    <eStructuralFeatures xsi:type="ecore:EReference" name="b2" lowerBound="1" eType="#//B" eOpposite="#//B/a2" />
    <eStructuralFeatures xsi:type="ecore:EReference" name="b3" eType="#//B" eOpposite="#//B/a3" />
    <eStructuralFeatures xsi:type="ecore:EReference" name="b4" lowerBound="1" upperBound="-1" eType="#//B" eOpposite="#//B/a4" />
    <eStructuralFeatures xsi:type="ecore:EReference" name="b5" upperBound="-1" eType="#//B" eOpposite="#//B/a5" />
    <eStructuralFeatures xsi:type="ecore:EReference" name="b6" lowerBound="1" eType="#//B" eOpposite="#//B/a6" />
    <eStructuralFeatures xsi:type="ecore:EReference" name="b7" eType="#//B" eOpposite="#//B/a7" />
    <eStructuralFeatures xsi:type="ecore:EReference" name="b8" lowerBound="1" upperBound="-1" eType="#//B" eOpposite="#//B/a8" />
    <eStructuralFeatures xsi:type="ecore:EReference" name="b9" upperBound="-1" eType="#//B" eOpposite="#//B/a9" />
    <eStructuralFeatures xsi:type="ecore:EReference" name="b10" lowerBound="1" eType="#//B" eOpposite="#//B/a10" />
    <eStructuralFeatures xsi:type="ecore:EReference" name="b11" eType="#//B" eOpposite="#//B/a11" />
    <eStructuralFeatures xsi:type="ecore:EReference" name="b12" lowerBound="1" upperBound="-1" eType="#//B" eOpposite="#//B/a12" />
    <eStructuralFeatures xsi:type="ecore:EReference" name="b13" upperBound="-1" eType="#//B" eOpposite="#//B/a13" />
    <eStructuralFeatures xsi:type="ecore:EReference" name="b14" lowerBound="1" eType="#//B" eOpposite="#//B/a14" />
    <eStructuralFeatures xsi:type="ecore:EReference" name="b15" eType="#//B" eOpposite="#//B/a15" />
    <eStructuralFeatures xsi:type="ecore:EReference" name="b16" lowerBound="1" upperBound="-1" eType="#//B" eOpposite="#//B/a16" />
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="B">
    <eStructuralFeatures xsi:type="ecore:EReference" name="a1" upperBound="-1" eType="#//A" eOpposite="#//A/b1" />
    <eStructuralFeatures xsi:type="ecore:EReference" name="a2" upperBound="-1" eType="#//A" eOpposite="#//A/b2" />
    <eStructuralFeatures xsi:type="ecore:EReference" name="a3" upperBound="-1" eType="#//A" eOpposite="#//A/b3" />
    <eStructuralFeatures xsi:type="ecore:EReference" name="a4" upperBound="-1" eType="#//A" eOpposite="#//A/b4" />
    <eStructuralFeatures xsi:type="ecore:EReference" name="a5" lowerBound="1" eType="#//A" eOpposite="#//A/b5" />
    <eStructuralFeatures xsi:type="ecore:EReference" name="a6" lowerBound="1" eType="#//A" eOpposite="#//A/b6" />
    <eStructuralFeatures xsi:type="ecore:EReference" name="a7" lowerBound="1" eType="#//A" eOpposite="#//A/b7" />
    <eStructuralFeatures xsi:type="ecore:EReference" name="a8" lowerBound="1" eType="#//A" eOpposite="#//A/b8" />
    <eStructuralFeatures xsi:type="ecore:EReference" name="a9" eType="#//A" eOpposite="#//A/b9" />
    <eStructuralFeatures xsi:type="ecore:EReference" name="a10" eType="#//A" eOpposite="#//A/b10" />
    <eStructuralFeatures xsi:type="ecore:EReference" name="a11" eType="#//A" eOpposite="#//A/b11" />
    <eStructuralFeatures xsi:type="ecore:EReference" name="a12" eType="#//A" eOpposite="#//A/b12" />
    <eStructuralFeatures xsi:type="ecore:EReference" name="a13" lowerBound="1" upperBound="-1" eType="#//A" eOpposite="#//A/b13" />
    <eStructuralFeatures xsi:type="ecore:EReference" name="a14" lowerBound="1" upperBound="-1" eType="#//A" eOpposite="#//A/b14" />
    <eStructuralFeatures xsi:type="ecore:EReference" name="a15" lowerBound="1" upperBound="-1" eType="#//A" eOpposite="#//A/b15" />
    <eStructuralFeatures xsi:type="ecore:EReference" name="a16" lowerBound="1" upperBound="-1" eType="#//A" eOpposite="#//A/b16" />
  </eClassifiers>
</ecore:EPackage>

<?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="MultipleInterfaces" nsURI="MultipleInterfaces" nsPrefix="MultipleInterfaces">
  <eClassifiers xsi:type="ecore:EClass" name="Ione" interface="true" abstract="true" />
  <eClassifiers xsi:type="ecore:EClass" name="Itwo" interface="true" abstract="true" />
  <eClassifiers xsi:type="ecore:EClass" name="A" eSuperTypes="#//Ione #//Itwo" />
</ecore:EPackage>

<?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="test" nsURI="test" nsPrefix="test">
  <eClassifiers xsi:type="ecore:EClass" name="A" interface="true" abstract="true" />
  <eClassifiers xsi:type="ecore:EClass" name="C" interface="true" abstract="true" />
  <eClassifiers xsi:type="ecore:EClass" name="B" />
  <eClassifiers xsi:type="ecore:EClass" name="D" eSuperTypes="#//B #//A #//C" />
</ecore:EPackage>

<?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="NoNamespace" nsURI="NoNamespace" nsPrefix="NoNamespace">
  <eClassifiers xsi:type="ecore:EClass" name="Student">
    <eStructuralFeatures xsi:type="ecore:EReference" name="n" lowerBound="1" eType="#//Mentor" eOpposite="#//Mentor/b" />
    <eStructuralFeatures xsi:type="ecore:EReference" name="o" lowerBound="3" upperBound="3" eType="#//Mentor" eOpposite="#//Mentor/c" />
    <eStructuralFeatures xsi:type="ecore:EReference" name="p" upperBound="-1" eType="#//Mentor" eOpposite="#//Mentor/d" />
    <eStructuralFeatures xsi:type="ecore:EReference" name="m" upperBound="4" eType="#//Mentor" eOpposite="#//Mentor/a" />
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="Mentor">
    <eStructuralFeatures xsi:type="ecore:EReference" name="b" upperBound="-1" eType="#//Student" eOpposite="#//Student/n" />
    <eStructuralFeatures xsi:type="ecore:EReference" name="c" lowerBound="1" eType="#//Student" eOpposite="#//Student/o" />
    <eStructuralFeatures xsi:type="ecore:EReference" name="d" lowerBound="3" upperBound="5" eType="#//Student" eOpposite="#//Student/p" />
    <eStructuralFeatures xsi:type="ecore:EReference" name="a" eType="#//Student" eOpposite="#//Student/m" />
  </eClassifiers>
</ecore:EPackage>

<?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="example" nsURI="example" nsPrefix="example">
  <eClassifiers xsi:type="ecore:EClass" name="A" interface="true" abstract="true" />
</ecore:EPackage>

<?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="example" nsURI="cruise.umple.example" nsPrefix="example">
  <eClassifiers xsi:type="ecore:EDataType" name="Date" instanceClassName="java.sql.Date" />
  <eClassifiers xsi:type="ecore:EDataType" name="Time" instanceClassName="java.sql.Time" />
  <eClassifiers xsi:type="ecore:EClass" name="ICart" interface="true" abstract="true" />
  <eClassifiers xsi:type="ecore:EClass" name="Person">
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="myF" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EFloat" />
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="allMyF" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EFloat" />
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="myMap" transient="true">
      <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
        <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
          <eTypeArguments />
        </eTypeArguments>
        <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
          <eTypeArguments />
        </eTypeArguments>
      </eGenericType>
    </eStructuralFeatures>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="anotherMap" transient="true">
      <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
        <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString" />
        <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString" />
      </eGenericType>
    </eStructuralFeatures>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="status" eType="#//Status" />
    <eStructuralFeatures xsi:type="ecore:EReference" name="mentor" eType="#//Person" eOpposite="#//Person/student" />
    <eStructuralFeatures xsi:type="ecore:EReference" name="student" upperBound="-1" eType="#//Person" eOpposite="#//Person/mentor" />
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="Product">
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="description" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString" />
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="available" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt" />
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="price" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble" />
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="createdDate" eType="#//Date" />
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="createdTime" eType="#//Time" />
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="isActive" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean" />
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="allAvailable" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt" />
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="allPrice" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble" />
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="allCreatedDate" upperBound="-1" eType="#//Date" />
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="allCreatedTime" upperBound="-1" eType="#//Time" />
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="allIsActive" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean" />
    <eStructuralFeatures xsi:type="ecore:EReference" name="addr" eType="#//Address" />
    <eStructuralFeatures xsi:type="ecore:EReference" name="allAddr" upperBound="-1" eType="#//Address" />
    <eStructuralFeatures xsi:type="ecore:EReference" name="item" lowerBound="3" upperBound="-1" eType="#//CartItem" eOpposite="#//CartItem/product" />
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="Address" />
  <eClassifiers xsi:type="ecore:EClass" name="Cart" eSuperTypes="#//ICart" />
  <eClassifiers xsi:type="ecore:EClass" name="CartItem">
    <eStructuralFeatures xsi:type="ecore:EReference" name="product" eType="#//Product" eOpposite="#//Product/item" />
    <eStructuralFeatures xsi:type="ecore:EReference" name="paymentMethods" lowerBound="4" upperBound="4" eType="#//PaymentMethod" eOpposite="#//PaymentMethod/item" />
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="PaymentMethod">
    <eStructuralFeatures xsi:type="ecore:EReference" name="item" upperBound="-1" eType="#//CartItem" eOpposite="#//CartItem/paymentMethods" />
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="Cheque" eSuperTypes="#//PaymentMethod" />
  <eClassifiers xsi:type="ecore:EEnum" name="Status">
    <eLiterals name="Registered" value="0" />
    <eLiterals name="Active" value="1" />
    <eLiterals name="Inactive" value="2" />
  </eClassifiers>
</ecore:EPackage>

<?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="example" nsURI="example" nsPrefix="example">
  <eClassifiers xsi:type="ecore:EDataType" name="Throwable" instanceClassName="java.lang.Throwable" />
  <eClassifiers xsi:type="ecore:EDataType" name="StringBuilder" instanceClassName="java.lang.StringBuilder" />
  <eClassifiers xsi:type="ecore:EDataType" name="File" instanceClassName="java.io.File" />
  <eClassifiers xsi:type="ecore:EDataType" name="HashSet" instanceClassName="java.util.HashSet" />
  <eClassifiers xsi:type="ecore:EDataType" name="BigDecimal" instanceClassName="BigDecimal" />
  <eClassifiers xsi:type="ecore:EClass" name="A">
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="t1" eType="#//Throwable" />
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="t2" upperBound="-1" eType="#//Throwable" />
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="s1" eType="#//StringBuilder" />
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="s2" upperBound="-1" eType="#//StringBuilder" />
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="f1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EFloat" />
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="f2" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EFloat" />
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="B">
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="file1" eType="#//File" />
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="file2" upperBound="-1" eType="#//File" />
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="C">
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="set1" eType="#//HashSet" />
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="set2" eType="#//HashSet" />
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="D">
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="bigDec1" eType="#//BigDecimal" />
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="bigDec2" upperBound="-1" eType="#//BigDecimal" />
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="E">
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="bigInt1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger" />
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="bigInt2" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger" />
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="bigDec1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigDecimal" />
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="bigDec2" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigDecimal" />
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="c1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EChar" />
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="c2" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EChar" />
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="c3" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//ECharacterObject" />
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="c4" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//ECharacterObject" />
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="o1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject" />
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="o2" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject" />
  </eClassifiers>
</ecore:EPackage>

<?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="example" nsURI="example" nsPrefix="example">
  <eClassifiers xsi:type="ecore:EClass" name="Student">
    <eStructuralFeatures xsi:type="ecore:EReference" name="n" lowerBound="1" eType="#//Mentor" />
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="Mentor" />
  <eClassifiers xsi:type="ecore:EClass" name="Boss">
    <eStructuralFeatures xsi:type="ecore:EReference" name="c" upperBound="-1" eType="#//Mentor" />
  </eClassifiers>
</ecore:EPackage>

<?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="example" nsURI="example" nsPrefix="example">
  <eClassifiers xsi:type="ecore:EDataType" name="HashSet" instanceClassName="java.util.HashSet">
    <eTypeParameters name="Type1" />
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EDataType" name="HashMap" instanceClassName="java.util.HashMap">
    <eTypeParameters name="Type1" />
    <eTypeParameters name="Type2" />
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="A" />
  <eClassifiers xsi:type="ecore:EClass" name="C" />
  <eClassifiers xsi:type="ecore:EClass" name="D">
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="m1" transient="true">
      <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
        <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString" />
        <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString" />
      </eGenericType>
    </eStructuralFeatures>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="m2" transient="true">
      <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
        <eTypeArguments eClassifier="#//A" />
        <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger" />
      </eGenericType>
    </eStructuralFeatures>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="m3" transient="true">
      <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
        <eTypeArguments eClassifier="#//A" />
        <eTypeArguments eClassifier="#//D" />
      </eGenericType>
    </eStructuralFeatures>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="m4" transient="true">
      <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
        <eTypeArguments />
        <eTypeArguments />
      </eGenericType>
    </eStructuralFeatures>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="l1" transient="true">
      <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
        <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString" />
      </eGenericType>
    </eStructuralFeatures>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="l2" transient="true">
      <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
        <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigDecimal" />
      </eGenericType>
    </eStructuralFeatures>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="l3" transient="true">
      <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
        <eTypeArguments eClassifier="#//C" />
      </eGenericType>
    </eStructuralFeatures>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="l4" transient="true">
      <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
        <eTypeArguments />
      </eGenericType>
    </eStructuralFeatures>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="c1" transient="true">
      <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaClass">
        <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString" />
      </eGenericType>
    </eStructuralFeatures>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="c2" transient="true">
      <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaClass">
        <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigDecimal" />
      </eGenericType>
    </eStructuralFeatures>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="c3" transient="true">
      <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaClass">
        <eTypeArguments eClassifier="#//C" />
      </eGenericType>
    </eStructuralFeatures>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="c4" transient="true">
      <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaClass">
        <eTypeArguments />
      </eGenericType>
    </eStructuralFeatures>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="s1" transient="true">
      <eGenericType eClassifier="#//HashSet">
        <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString" />
      </eGenericType>
    </eStructuralFeatures>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="s2" transient="true">
      <eGenericType eClassifier="#//HashSet">
        <eTypeArguments eClassifier="#//A" />
      </eGenericType>
    </eStructuralFeatures>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="m5" transient="true">
      <eGenericType eClassifier="#//HashMap">
        <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString" />
        <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigDecimal" />
      </eGenericType>
    </eStructuralFeatures>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="m6" transient="true">
      <eGenericType eClassifier="#//HashMap">
        <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigDecimal" />
        <eTypeArguments eClassifier="#//A" />
      </eGenericType>
    </eStructuralFeatures>
  </eClassifiers>
</ecore:EPackage>

<?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="example" nsURI="example" nsPrefix="example">
  <eClassifiers xsi:type="ecore:EClass" name="A">
    <eStructuralFeatures xsi:type="ecore:EReference" name="b" eType="#//B" eOpposite="#//B/as" />
    <eStructuralFeatures xsi:type="ecore:EReference" name="c" lowerBound="1" eType="#//C" eOpposite="#//C/a" />
    <eStructuralFeatures xsi:type="ecore:EReference" name="ds" lowerBound="1" upperBound="-1" eType="#//D" eOpposite="#//D/a" />
    <eStructuralFeatures xsi:type="ecore:EReference" name="es" upperBound="-1" eType="#//E" eOpposite="#//E/as" />
    <eStructuralFeatures xsi:type="ecore:EReference" name="e2" upperBound="-1" eType="#//E" eOpposite="#//E/a2" />
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="B">
    <eStructuralFeatures xsi:type="ecore:EReference" name="as" upperBound="-1" eType="#//A" eOpposite="#//A/b" />
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="C">
    <eStructuralFeatures xsi:type="ecore:EReference" name="a" eType="#//A" eOpposite="#//A/c" />
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="D">
    <eStructuralFeatures xsi:type="ecore:EReference" name="a" lowerBound="1" eType="#//A" eOpposite="#//A/ds" />
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="E">
    <eStructuralFeatures xsi:type="ecore:EReference" name="as" lowerBound="1" upperBound="-1" eType="#//A" eOpposite="#//A/es" />
    <eStructuralFeatures xsi:type="ecore:EReference" name="a2" lowerBound="1" upperBound="-1" eType="#//A" eOpposite="#//A/e2" />
  </eClassifiers>
</ecore:EPackage>

<?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="example" nsURI="example" nsPrefix="example">
  <eClassifiers xsi:type="ecore:EClass" name="Student">
    <eStructuralFeatures xsi:type="ecore:EReference" name="n" lowerBound="1" eType="#//Mentor" eOpposite="#//Mentor/b" />
    <eStructuralFeatures xsi:type="ecore:EReference" name="o" lowerBound="3" upperBound="3" eType="#//Mentor" eOpposite="#//Mentor/c" />
    <eStructuralFeatures xsi:type="ecore:EReference" name="p" upperBound="-1" eType="#//Mentor" eOpposite="#//Mentor/d" />
    <eStructuralFeatures xsi:type="ecore:EReference" name="m" upperBound="4" eType="#//Mentor" eOpposite="#//Mentor/a" />
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="Mentor">
    <eStructuralFeatures xsi:type="ecore:EReference" name="b" upperBound="-1" eType="#//Student" eOpposite="#//Student/n" />
    <eStructuralFeatures xsi:type="ecore:EReference" name="c" lowerBound="1" eType="#//Student" eOpposite="#//Student/o" />
    <eStructuralFeatures xsi:type="ecore:EReference" name="d" lowerBound="3" upperBound="5" eType="#//Student" eOpposite="#//Student/p" />
    <eStructuralFeatures xsi:type="ecore:EReference" name="a" eType="#//Student" eOpposite="#//Student/m" />
  </eClassifiers>
</ecore:EPackage>

<?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="example" nsURI="example" nsPrefix="example">
  <eClassifiers xsi:type="ecore:EClass" name="Student" />
</ecore:EPackage>