<?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="sgraph" nsURI="http://www.yakindu.org/sct/sgraph/2.0.0" nsPrefix="sgraph">
  <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel"/>
  <eClassifiers xsi:type="ecore:EClass" name="Pseudostate" abstract="true" eSuperTypes="#//Vertex"/>
  <eClassifiers xsi:type="ecore:EClass" name="Vertex" abstract="true" eSuperTypes="../../../org.yakindu.base.types/model/base.ecore#//NamedElement">
    <eStructuralFeatures xsi:type="ecore:EReference" name="parentRegion" ordered="false"
        lowerBound="1" eType="#//Region" eOpposite="#//Region/vertices"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="incomingTransitions" ordered="false"
        upperBound="-1" eType="#//Transition" eOpposite="#//Transition/target"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="outgoingTransitions" ordered="false"
        upperBound="-1" eType="#//Transition" containment="true" eOpposite="#//Transition/source"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="Region" eSuperTypes="../../../org.yakindu.base.types/model/base.ecore#//NamedElement">
    <eStructuralFeatures xsi:type="ecore:EReference" name="vertices" ordered="false"
        upperBound="-1" eType="#//Vertex" containment="true" eOpposite="#//Vertex/parentRegion"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="composite" lowerBound="1"
        eType="#//CompositeElement" eOpposite="#//CompositeElement/regions"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="Transition" eSuperTypes="#//SpecificationElement #//Reaction ../../../org.yakindu.base.types/model/base.ecore#//DocumentedElement">
    <eStructuralFeatures xsi:type="ecore:EReference" name="target" ordered="false"
        lowerBound="1" eType="#//Vertex" eOpposite="#//Vertex/incomingTransitions"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="source" ordered="false"
        lowerBound="1" eType="#//Vertex" eOpposite="#//Vertex/outgoingTransitions"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="FinalState" eSuperTypes="#//RegularState"/>
  <eClassifiers xsi:type="ecore:EClass" name="Choice" eSuperTypes="#//Pseudostate">
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="kind" eType="#//ChoiceKind"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="Statechart" eSuperTypes="#//SpecificationElement #//ReactiveElement #//ScopedElement #//CompositeElement ../../../org.yakindu.base.types/model/base.ecore#//NamedElement ../../../org.yakindu.base.types/model/base.ecore#//DocumentedElement ../../../org.yakindu.base.types/model/base.ecore#//DomainElement"/>
  <eClassifiers xsi:type="ecore:EClass" name="Entry" eSuperTypes="#//Pseudostate">
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="kind" eType="#//EntryKind"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EEnum" name="EntryKind">
    <eLiterals name="initial" literal="INITIAL"/>
    <eLiterals name="shallowHistory" value="1" literal="SHALLOW_HISTORY"/>
    <eLiterals name="deepHistory" value="2" literal="DEEP_HISTORY"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="Exit" eSuperTypes="#//Pseudostate"/>
  <eClassifiers xsi:type="ecore:EClass" name="ReactiveElement" abstract="true">
    <eStructuralFeatures xsi:type="ecore:EReference" name="localReactions" upperBound="-1"
        eType="#//Reaction" changeable="false" volatile="true" transient="true" derived="true"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="Reaction" abstract="true">
    <eStructuralFeatures xsi:type="ecore:EReference" name="trigger" eType="#//Trigger"
        transient="true" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="effect" eType="#//Effect"
        transient="true" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="properties" upperBound="-1"
        eType="#//ReactionProperty" transient="true" containment="true"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="Trigger" abstract="true"/>
  <eClassifiers xsi:type="ecore:EClass" name="Effect" abstract="true"/>
  <eClassifiers xsi:type="ecore:EClass" name="ReactionProperty"/>
  <eClassifiers xsi:type="ecore:EClass" name="SpecificationElement" abstract="true">
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="specification" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="Scope">
    <eStructuralFeatures xsi:type="ecore:EReference" name="declarations" upperBound="-1"
        eType="ecore:EClass ../../../org.yakindu.base.types/model/types.ecore#//Declaration"
        containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="events" upperBound="-1"
        eType="ecore:EClass ../../../org.yakindu.base.types/model/types.ecore#//Event"
        changeable="false" volatile="true" transient="true" derived="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="variables" unique="false"
        upperBound="-1" eType="ecore:EClass ../../../org.yakindu.base.types/model/types.ecore#//Property"
        changeable="false" volatile="true" transient="true" derived="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="reactions" upperBound="-1"
        eType="#//Reaction" containment="true"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="ScopedElement" abstract="true">
    <eStructuralFeatures xsi:type="ecore:EReference" name="scopes" upperBound="-1"
        eType="#//Scope" transient="true" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="namespace" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="Synchronization" eSuperTypes="#//Pseudostate"/>
  <eClassifiers xsi:type="ecore:EClass" name="State" eSuperTypes="#//SpecificationElement #//ReactiveElement #//ScopedElement #//RegularState #//CompositeElement ../../../org.yakindu.base.types/model/base.ecore#//DocumentedElement">
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="orthogonal" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
        changeable="false" volatile="true" transient="true" derived="true"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="simple" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
        changeable="false" volatile="true" transient="true" derived="true"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="composite" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
        changeable="false" volatile="true" transient="true" derived="true"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="leaf" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
        changeable="false" volatile="true" transient="true" derived="true"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="RegularState" abstract="true" eSuperTypes="#//Vertex"/>
  <eClassifiers xsi:type="ecore:EEnum" name="ChoiceKind">
    <eLiterals name="dynamic"/>
    <eLiterals name="static" value="1"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="CompositeElement" abstract="true">
    <eStructuralFeatures xsi:type="ecore:EReference" name="regions" upperBound="-1"
        eType="#//Region" containment="true" eOpposite="#//Region/composite"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="ImportDeclaration" eSuperTypes="../../../org.yakindu.base.types/model/types.ecore#//Declaration">
    <eStructuralFeatures xsi:type="ecore:EReference" name="declaration" eType="ecore:EClass ../../../org.yakindu.base.types/model/types.ecore#//Declaration"/>
  </eClassifiers>
</ecore:EPackage>
