<?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="csp"
    nsURI="csp" nsPrefix="csp">
  <eClassifiers xsi:type="ecore:EClass" name="Condition" eSuperTypes="#//BinaryOperator">
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="expression" lowerBound="1"
        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="Concurrency" eSuperTypes="#//ProcessWithSet #//BinaryOperator"/>
  <eClassifiers xsi:type="ecore:EClass" name="ProcessExpression" abstract="true"/>
  <eClassifiers xsi:type="ecore:EClass" name="BinaryOperator" eSuperTypes="#//ProcessExpression">
    <eStructuralFeatures xsi:type="ecore:EReference" name="leftHandSide" lowerBound="1"
        eType="#//ProcessExpression" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="rightHandSide" lowerBound="1"
        eType="#//ProcessExpression" containment="true"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="Process" eSuperTypes="#//ProcessExpression">
    <eStructuralFeatures xsi:type="ecore:EReference" name="processIdentifier" lowerBound="1"
        eType="#//ProcessIdentifier"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="ProcessIdentifier">
    <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="subscript" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="CspContainer">
    <eStructuralFeatures xsi:type="ecore:EReference" name="processAssignments" upperBound="-1"
        eType="#//ProcessAssignment" containment="true" eOpposite="#//ProcessAssignment/container"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="ProcessAssignment">
    <eStructuralFeatures xsi:type="ecore:EReference" name="processIdentifier" lowerBound="1"
        eType="#//ProcessIdentifier" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="process" lowerBound="1"
        eType="#//ProcessExpression" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="container" lowerBound="1"
        eType="#//CspContainer" eOpposite="#//CspContainer/processAssignments"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="Prefix" eSuperTypes="#//ProcessExpression">
    <eStructuralFeatures xsi:type="ecore:EReference" name="targetProcess" lowerBound="1"
        eType="#//ProcessExpression" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="event" lowerBound="1" eType="#//Event"
        containment="true"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="Event">
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="ProcessWithSet" eSuperTypes="#//ProcessExpression">
    <eStructuralFeatures xsi:type="ecore:EReference" name="eventSet" upperBound="-1"
        eType="#//Event" containment="true"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="Hiding" eSuperTypes="#//ProcessWithSet">
    <eStructuralFeatures xsi:type="ecore:EReference" name="hiddenProcess" lowerBound="1"
        eType="#//ProcessExpression" containment="true"/>
  </eClassifiers>
</ecore:EPackage>

