<?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="SimpleCD"
    nsURI="http://uk.ac.le.cs.moment2/SimpleCD.ecore" nsPrefix="SimpleCD">
  <eClassifiers xsi:type="ecore:EClass" name="Package">
    <eStructuralFeatures xsi:type="ecore:EReference" name="classes" ordered="false"
        upperBound="-1" eType="#//Class" containment="true" eOpposite="#//Class/package"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="Class">
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="package" lowerBound="1"
        eType="#//Package" eOpposite="#//Package/classes"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="properties" ordered="false"
        upperBound="-1" eType="#//Property" containment="true" eOpposite="#//Property/owningClass"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="ownedOperations" upperBound="-1"
        eType="#//Operation" containment="true" eOpposite="#//Operation/owningClass"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="Property" abstract="true">
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="lowerBound" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="upperBound" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="owningClass" lowerBound="1"
        eType="#//Class" eOpposite="#//Class/properties"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="Attribute" eSuperTypes="#//Property">
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="type" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="AssociationEnd" eSuperTypes="#//Property">
    <eStructuralFeatures xsi:type="ecore:EReference" name="type" lowerBound="1" eType="#//Class"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="opposite" eType="#//AssociationEnd"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="Operation">
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="parameters" upperBound="-1"
        eType="#//Parameter" containment="true" eOpposite="#//Parameter/owningOperation"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="owningClass" lowerBound="1"
        eType="#//Class" eOpposite="#//Class/ownedOperations"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="Parameter">
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="type" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="owningOperation" lowerBound="1"
        eType="#//Operation" eOpposite="#//Operation/parameters"/>
  </eClassifiers>
</ecore:EPackage>
