<?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="DECENT" nsURI="http://decent/3.0" nsPrefix="DECENT">
  <eAnnotations source="http://www.eclipse.org/OCL/Import">
    <details key="ecore" value="http://www.eclipse.org/emf/2002/Ecore#/"/>
  </eAnnotations>
  <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
    <details key="invocationDelegates" value="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot"/>
    <details key="settingDelegates" value="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot"/>
    <details key="validationDelegates" value="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot"/>
  </eAnnotations>
  <eClassifiers xsi:type="ecore:EClass" name="Model">
    <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="content" upperBound="-1"
        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="steps" upperBound="-1"
        eType="#//Step" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="projects" upperBound="-1"
        eType="#//Project" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="artifactTypeHierarchy"
        eType="#//ArtifactTypeHierarchy" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="agentPool" lowerBound="1"
        eType="#//AgentPool" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="attributePool" lowerBound="1"
        eType="#//AttributePool" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="activityTypes" ordered="false"
        upperBound="-1" eType="#//ActivityType" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="dimensions" ordered="false"
        upperBound="-1" eType="#//Dimension" containment="true"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="Element">
    <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="ID" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"
        defaultValueLiteral="-1"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="Step" eSuperTypes="#//Element">
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="duration" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="AgentPool">
    <eStructuralFeatures xsi:type="ecore:EReference" name="agents" upperBound="-1"
        eType="#//Agent" containment="true"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="AttributePool">
    <eStructuralFeatures xsi:type="ecore:EReference" name="attributes" upperBound="-1"
        eType="#//Attribute" containment="true"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="ArtifactTypeHierarchy">
    <eStructuralFeatures xsi:type="ecore:EReference" name="types" upperBound="-1"
        eType="#//ArtifactType" containment="true"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="ArtifactType" eSuperTypes="#//Element">
    <eStructuralFeatures xsi:type="ecore:EReference" name="containerTypes" upperBound="-1"
        eType="#//ArtifactType"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="Project" eSuperTypes="#//Element">
    <eStructuralFeatures xsi:type="ecore:EReference" name="agents" upperBound="-1"
        eType="#//Agent" eOpposite="#//Agent/projects"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="location" upperBound="-1"
        eType="#//Location" containment="true" eOpposite="#//Location/project"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="Agent" eSuperTypes="#//Element">
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="eMail" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="projects" lowerBound="1"
        eType="#//Project" eOpposite="#//Project/agents"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="activities" upperBound="-1"
        eType="#//Activity" containment="true" eOpposite="#//Activity/agent"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="states" upperBound="-1"
        eType="#//AgentState" containment="true" eOpposite="#//AgentState/agent"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="AgentState" eSuperTypes="#//Element">
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="date" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDate"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="agent" lowerBound="1" eType="#//Agent"
        eOpposite="#//Agent/states"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="activities" upperBound="-1"
        eType="#//Activity" eOpposite="#//Activity/agentState"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="next" eType="#//AgentState"
        eOpposite="#//AgentState/previous"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="previous" eType="#//AgentState"
        eOpposite="#//AgentState/next"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="values" upperBound="-1"
        eType="#//Value" containment="true"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="Location" eSuperTypes="#//Element">
    <eStructuralFeatures xsi:type="ecore:EReference" name="type" eType="#//ArtifactType"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="project" lowerBound="1"
        eType="#//Project" eOpposite="#//Project/location"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="artifacts" ordered="false"
        upperBound="-1" eType="#//Artifact" containment="true"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="Artifact" eSuperTypes="#//Element">
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
      <details key="constraints" value="typeHierarchy"/>
    </eAnnotations>
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
      <details key="typeHierarchy" value="type.containerTypes->includes(parent.type) or parent = null"/>
    </eAnnotations>
    <eStructuralFeatures xsi:type="ecore:EReference" name="type" eType="#//ArtifactType"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="parent" eType="#//Artifact"
        eOpposite="#//Artifact/children"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="children" upperBound="-1"
        eType="#//Artifact" containment="true" eOpposite="#//Artifact/parent"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="states" upperBound="-1"
        eType="#//State" containment="true" eOpposite="#//State/artifact"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="attributes" upperBound="-1"
        eType="#//Attribute"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="State" eSuperTypes="#//Element">
    <eStructuralFeatures xsi:type="ecore:EReference" name="artifact" lowerBound="1"
        eType="#//Artifact" eOpposite="#//Artifact/states"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="activity" upperBound="-1"
        eType="#//Activity" eOpposite="#//Activity/state"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="fromActivity" upperBound="-1"
        eType="#//Activity" eOpposite="#//Activity/targetState"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="next" upperBound="-1" eType="#//State"
        eOpposite="#//State/previous"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="previous" upperBound="-1"
        eType="#//State" eOpposite="#//State/next"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="parent" eType="#//State"
        eOpposite="#//State/children"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="children" upperBound="-1"
        eType="#//State" eOpposite="#//State/parent"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="values" upperBound="-1"
        eType="#//Value" containment="true"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="Activity" eSuperTypes="#//Element">
    <eStructuralFeatures xsi:type="ecore:EReference" name="type" upperBound="-1" eType="#//ActivityType"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="agent" lowerBound="1" eType="#//Agent"
        eOpposite="#//Agent/activities"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="state" lowerBound="1" eType="#//State"
        eOpposite="#//State/activity"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="targetState" lowerBound="1"
        eType="#//State" eOpposite="#//State/fromActivity"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="deltas" upperBound="-1"
        eType="#//Delta" containment="true" eOpposite="#//Delta/activity"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="date" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDate"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="values" upperBound="-1"
        eType="#//Value" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="agentState" eType="#//AgentState"
        eOpposite="#//AgentState/activities"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="ActivityType" eSuperTypes="#//Element">
    <eStructuralFeatures xsi:type="ecore:EReference" name="dimension" ordered="false"
        upperBound="-1" eType="#//Dimension"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="Dimension" eSuperTypes="#//Element"/>
  <eClassifiers xsi:type="ecore:EClass" name="Attribute" eSuperTypes="#//Element">
    <eStructuralFeatures xsi:type="ecore:EReference" name="artifactTypes" ordered="false"
        upperBound="-1" eType="#//ArtifactType"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="type" eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EDataType"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="dimension" ordered="false"
        upperBound="-1" eType="#//Dimension"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="description" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="Value" abstract="true">
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="ofAttribute" lowerBound="1"
        eType="#//Attribute"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="IntegerValue" eSuperTypes="#//Value">
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="content" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="DoubleValue" eSuperTypes="#//Value">
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="content" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="StringValue" eSuperTypes="#//Value">
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="content" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="ListValue" eSuperTypes="#//Value">
    <eStructuralFeatures xsi:type="ecore:EReference" name="content" upperBound="-1"
        eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EObject"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="StringListValue" eSuperTypes="#//Value">
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="content" upperBound="-1"
        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="DoubleListValue" eSuperTypes="#//Value">
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="content" upperBound="-1"
        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="IntegerListValue" eSuperTypes="#//Value">
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="content" upperBound="-1"
        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="Delta">
    <eStructuralFeatures xsi:type="ecore:EReference" name="activity" lowerBound="1"
        eType="#//Activity" eOpposite="#//Activity/deltas"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="onAttribute" lowerBound="1"
        eType="#//Attribute"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="targetValue" lowerBound="1"
        eType="#//Value"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="sourceValue" lowerBound="1"
        eType="#//Value"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="change" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
  </eClassifiers>
</ecore:EPackage>
