<?xml version="1.0" encoding="UTF-8"?>
<uml:Model xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xmi:id="_q6BcIMU1EeWXLLOylfwRMQ" name="PSSM_Syntax">
  <elementImport xmi:type="uml:ElementImport" xmi:id="_iC3AEMnIEeWAiZQZbeZaoA">
    <importedElement xmi:type="uml:Package" href="UML.uml#_0"/>
  </elementImport>
  <elementImport xmi:type="uml:ElementImport" xmi:id="_jh3UsMnIEeWAiZQZbeZaoA">
    <importedElement xmi:type="uml:Model" href="fUML_Syntax_UML_2.5.uml#_IRDyIMU3EeWXLLOylfwRMQ"/>
  </elementImport>
  <packagedElement xmi:type="uml:Package" xmi:id="_4P0jwMnDEeWAiZQZbeZaoA" name="Syntax">
    <elementImport xmi:type="uml:ElementImport" xmi:id="_NsdJMMVKEeWXLLOylfwRMQ">
      <importedElement xmi:type="uml:Class" href="UML.uml#Constraint"/>
    </elementImport>
    <packageImport xmi:type="uml:PackageImport" xmi:id="_FD-3gMVKEeWXLLOylfwRMQ">
      <importedPackage xmi:type="uml:Package" href="fUML_Syntax_UML_2.5.uml#_-47vsMU3EeWXLLOylfwRMQ"/>
    </packageImport>
    <packageImport xmi:type="uml:PackageImport" xmi:id="_GKJgQMVIEeWXLLOylfwRMQ">
      <importedPackage xmi:type="uml:Package" href="fUML_Syntax_UML_2.5.uml#_RY31wMU4EeWXLLOylfwRMQ"/>
    </packageImport>
    <packageImport xmi:type="uml:PackageImport" xmi:id="_UGdqIMVIEeWXLLOylfwRMQ">
      <importedPackage xmi:type="uml:Package" href="fUML_Syntax_UML_2.5.uml#_gEUL8MU3EeWXLLOylfwRMQ"/>
    </packageImport>
    <packageImport xmi:type="uml:PackageImport" xmi:id="_VzjeEMVIEeWXLLOylfwRMQ">
      <importedPackage xmi:type="uml:Package" href="fUML_Syntax_UML_2.5.uml#_7sx8wMU3EeWXLLOylfwRMQ"/>
    </packageImport>
    <packageImport xmi:type="uml:PackageImport" xmi:id="_a0VeEMVNEeWXLLOylfwRMQ">
      <importedPackage xmi:type="uml:Package" href="fUML_Syntax_UML_2.5.uml#_bNYcwMU4EeWXLLOylfwRMQ"/>
    </packageImport>
    <packageImport xmi:type="uml:PackageImport" xmi:id="_kOcF4MaeEeWmIYomuH94TA" importedPackage="_Q_2pEMVJEeWXLLOylfwRMQ"/>
    <packageImport xmi:type="uml:PackageImport" xmi:id="_fHvJwMVJEeWXLLOylfwRMQ" importedPackage="_MULkIMVJEeWXLLOylfwRMQ"/>
    <packageImport xmi:type="uml:PackageImport" xmi:id="_bybQQMVIEeWXLLOylfwRMQ" importedPackage="_coJpQMVGEeWXLLOylfwRMQ"/>
    <packageImport xmi:type="uml:PackageImport" xmi:id="_hG9E8MVIEeWXLLOylfwRMQ" importedPackage="_YR7acMVHEeWXLLOylfwRMQ"/>
    <packageImport xmi:type="uml:PackageImport" xmi:id="_3KCPQMqmEeWF7I4YWspV6w">
      <importedPackage xmi:type="uml:Package" href="fUML_Syntax_UML_2.5.uml#_1J2bQMU3EeWXLLOylfwRMQ"/>
    </packageImport>
    <packageImport xmi:type="uml:PackageImport" xmi:id="_7Ne2kMqmEeWF7I4YWspV6w">
      <importedPackage xmi:type="uml:Package" href="fUML_Syntax_UML_2.5.uml#_3M54IMU3EeWXLLOylfwRMQ"/>
    </packageImport>
    <packagedElement xmi:type="uml:Package" xmi:id="_MULkIMVJEeWXLLOylfwRMQ" name="CommonStructure">
      <elementImport xmi:type="uml:ElementImport" xmi:id="_pomscMwYEeWF7I4YWspV6w">
        <importedElement xmi:type="uml:Class" href="UML.uml#Constraint"/>
      </elementImport>
      <packageImport xmi:type="uml:PackageImport" xmi:id="_lq0oQMwYEeWF7I4YWspV6w">
        <importedPackage xmi:type="uml:Package" href="fUML_Syntax_UML_2.5.uml#_-47vsMU3EeWXLLOylfwRMQ"/>
      </packageImport>
    </packagedElement>
    <packagedElement xmi:type="uml:Package" xmi:id="_coJpQMVGEeWXLLOylfwRMQ" name="Values">
      <elementImport xmi:type="uml:ElementImport" xmi:id="_1SE6cMVIEeWXLLOylfwRMQ">
        <importedElement xmi:type="uml:Class" href="UML.uml#OpaqueExpression"/>
      </elementImport>
      <elementImport xmi:type="uml:ElementImport" xmi:id="_J-j_kHbdEeaSFv8wd_UowA">
        <importedElement xmi:type="uml:Class" href="UML.uml#Expression"/>
      </elementImport>
      <packageImport xmi:type="uml:PackageImport" xmi:id="_ubW6QMVIEeWXLLOylfwRMQ">
        <importedPackage xmi:type="uml:Package" href="fUML_Syntax_UML_2.5.uml#_zIiDwMU3EeWXLLOylfwRMQ"/>
      </packageImport>
    </packagedElement>
    <packagedElement xmi:type="uml:Package" xmi:id="_YR7acMVHEeWXLLOylfwRMQ" name="CommonBehavior" URI="">
      <elementImport xmi:type="uml:ElementImport" xmi:id="_sw4twMVOEeWXLLOylfwRMQ">
        <importedElement xmi:type="uml:Class" href="UML.uml#CallEvent"/>
      </elementImport>
      <packageImport xmi:type="uml:PackageImport" xmi:id="_kdR40MVOEeWXLLOylfwRMQ">
        <importedPackage xmi:type="uml:Package" href="fUML_Syntax_UML_2.5.uml#_CkpMcMU4EeWXLLOylfwRMQ"/>
      </packageImport>
    </packagedElement>
    <packagedElement xmi:type="uml:Package" xmi:id="_Q_2pEMVJEeWXLLOylfwRMQ" name="StateMachines">
      <elementImport xmi:type="uml:ElementImport" xmi:id="_AvCeQMVPEeWXLLOylfwRMQ">
        <importedElement xmi:type="uml:Class" href="UML.uml#FinalState"/>
      </elementImport>
      <elementImport xmi:type="uml:ElementImport" xmi:id="_DQ_doMVPEeWXLLOylfwRMQ">
        <importedElement xmi:type="uml:Class" href="UML.uml#ProtocolConformance"/>
      </elementImport>
      <elementImport xmi:type="uml:ElementImport" xmi:id="_Ex_WUMVPEeWXLLOylfwRMQ">
        <importedElement xmi:type="uml:Class" href="UML.uml#ProtocolStateMachine"/>
      </elementImport>
      <elementImport xmi:type="uml:ElementImport" xmi:id="_HzKoUMVPEeWXLLOylfwRMQ">
        <importedElement xmi:type="uml:Class" href="UML.uml#ProtocolTransition"/>
      </elementImport>
      <elementImport xmi:type="uml:ElementImport" xmi:id="_KKu8oMVPEeWXLLOylfwRMQ">
        <importedElement xmi:type="uml:Class" href="UML.uml#Pseudostate"/>
      </elementImport>
      <elementImport xmi:type="uml:ElementImport" xmi:id="_LcmNIMVPEeWXLLOylfwRMQ">
        <importedElement xmi:type="uml:Class" href="UML.uml#Region"/>
      </elementImport>
      <elementImport xmi:type="uml:ElementImport" xmi:id="_M-v8YMVPEeWXLLOylfwRMQ">
        <importedElement xmi:type="uml:Class" href="UML.uml#State"/>
      </elementImport>
      <elementImport xmi:type="uml:ElementImport" xmi:id="_ORsyAMVPEeWXLLOylfwRMQ">
        <importedElement xmi:type="uml:Class" href="UML.uml#StateMachine"/>
      </elementImport>
      <elementImport xmi:type="uml:ElementImport" xmi:id="_aA8AUMVPEeWXLLOylfwRMQ">
        <importedElement xmi:type="uml:Class" href="UML.uml#Transition"/>
      </elementImport>
      <elementImport xmi:type="uml:ElementImport" xmi:id="_kleWEMVPEeWXLLOylfwRMQ">
        <importedElement xmi:type="uml:Class" href="UML.uml#Vertex"/>
      </elementImport>
      <elementImport xmi:type="uml:ElementImport" xmi:id="_m3Uc4MVPEeWXLLOylfwRMQ">
        <importedElement xmi:type="uml:Enumeration" href="UML.uml#PseudostateKind"/>
      </elementImport>
      <elementImport xmi:type="uml:ElementImport" xmi:id="_pNqpMMVPEeWXLLOylfwRMQ">
        <importedElement xmi:type="uml:Enumeration" href="UML.uml#TransitionKind"/>
      </elementImport>
    </packagedElement>
  </packagedElement>
  <packagedElement xmi:type="uml:Package" xmi:id="_hj5BkMnHEeWAiZQZbeZaoA" name="Constraints">
    <packageImport xmi:type="uml:PackageImport" xmi:id="_1DWDAMq7EeWF7I4YWspV6w" importedPackage="_MI8tgcnIEeWAiZQZbeZaoA"/>
    <packageImport xmi:type="uml:PackageImport" xmi:id="_2oh4IMq7EeWF7I4YWspV6w" importedPackage="_Cpr9wMnIEeWAiZQZbeZaoA"/>
    <packageImport xmi:type="uml:PackageImport" xmi:id="_4ALAgMq7EeWF7I4YWspV6w" importedPackage="_qu9HQMqpEeWF7I4YWspV6w"/>
    <packageImport xmi:type="uml:PackageImport" xmi:id="_7cCDYMq7EeWF7I4YWspV6w" importedPackage="_R8j1cMnJEeWAiZQZbeZaoA"/>
    <packageImport xmi:type="uml:PackageImport" xmi:id="_813kIMq7EeWF7I4YWspV6w" importedPackage="_apctEMnJEeWAiZQZbeZaoA"/>
    <packageImport xmi:type="uml:PackageImport" xmi:id="_CYCWwMq9EeWF7I4YWspV6w">
      <importedPackage xmi:type="uml:Package" href="fUML_Syntax_UML_2.5.uml#_ezoDEMq8EeWF7I4YWspV6w"/>
    </packageImport>
    <packageImport xmi:type="uml:PackageImport" xmi:id="_E1hs4Mq9EeWF7I4YWspV6w">
      <importedPackage xmi:type="uml:Package" href="fUML_Syntax_UML_2.5.uml#_kRmHoMq8EeWF7I4YWspV6w"/>
    </packageImport>
    <packageImport xmi:type="uml:PackageImport" xmi:id="_Gi2KUMq9EeWF7I4YWspV6w">
      <importedPackage xmi:type="uml:Package" href="fUML_Syntax_UML_2.5.uml#_nOhy0Mq8EeWF7I4YWspV6w"/>
    </packageImport>
    <packageImport xmi:type="uml:PackageImport" xmi:id="_ILI90Mq9EeWF7I4YWspV6w">
      <importedPackage xmi:type="uml:Package" href="fUML_Syntax_UML_2.5.uml#_pq2EQMq8EeWF7I4YWspV6w"/>
    </packageImport>
    <packagedElement xmi:type="uml:Package" xmi:id="_MI8tgcnIEeWAiZQZbeZaoA" name="CommonStructure" visibility="public">
      <ownedRule xmi:type="uml:Constraint" xmi:id="_7azGcMnNEeWAiZQZbeZaoA" name="pssm_constraint_is_guard">
        <constrainedElement xmi:type="uml:Class" href="UML.uml#Constraint"/>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_gGfLQMnOEeWAiZQZbeZaoA">
          <language>Natural language</language>
          <language>OCL</language>
          <body>A Constraint must be owned as a guard by a Transition and its constrainedElements must be empty.</body>
          <body>self.owner.oclIsKindOf(UML::StateMachines::Transition) and self.constrainedElement->isEmpty()</body>
        </specification>
      </ownedRule>
    </packagedElement>
    <packagedElement xmi:type="uml:Package" xmi:id="_Cpr9wMnIEeWAiZQZbeZaoA" name="Values" visibility="public">
      <packagedElement xmi:type="uml:Constraint" xmi:id="_DwRo8MqlEeWF7I4YWspV6w" name="pssm_opaque_expression_has_behavior" constrainedElement="_Cpr9wMnIEeWAiZQZbeZaoA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_Q28kQMqlEeWF7I4YWspV6w">
          <language>Natural language</language>
          <body>The OpaqueExpression must have a behavior.</body>
        </specification>
      </packagedElement>
      <packagedElement xmi:type="uml:Constraint" xmi:id="_-jRL4G1jEea39NG5Sc27-w" name="pssm_expression_only_for_else">
        <constrainedElement xmi:type="uml:Class" href="UML.uml#Expression"/>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_TzNUYG1kEea39NG5Sc27-w">
          <language>Natural language</language>
          <body>The Expression must have no operands and its symbol must be &quot;else&quot;. </body>
        </specification>
      </packagedElement>
    </packagedElement>
    <packagedElement xmi:type="uml:Package" xmi:id="_qu9HQMqpEeWF7I4YWspV6w" name="Classification">
      <ownedComment xmi:type="uml:Comment" xmi:id="_RsYvwMqrEeWF7I4YWspV6w" annotatedElement="_S7rp4MqqEeWF7I4YWspV6w">
        <body>This replaces fUML constraint zero_or_one_method on Operation.</body>
      </ownedComment>
      <packagedElement xmi:type="uml:Constraint" xmi:id="_S7rp4MqqEeWF7I4YWspV6w" name="pssm_operation_has_at_most_one_method">
        <constrainedElement xmi:type="uml:Class" href="UML.uml#Operation"/>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_oRFhMMqqEeWF7I4YWspV6w">
          <language>Natural language</language>
          <body>If an Operation is abstract, it must have no method. Otherwise it must not have more than one method and it must have exactly one method unless owned by an active Class.</body>
        </specification>
      </packagedElement>
    </packagedElement>
    <packagedElement xmi:type="uml:Package" xmi:id="_R8j1cMnJEeWAiZQZbeZaoA" name="CommonBehavior">
      <packagedElement xmi:type="uml:Constraint" xmi:id="_AQVagMqpEeWF7I4YWspV6w" name="pssm_call_event_operation_has_no_method">
        <constrainedElement xmi:type="uml:Class" href="UML.uml#CallEvent"/>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_T5J0MMqpEeWF7I4YWspV6w">
          <language>Natural language</language>
          <body>The operation of the CallEvent must not have any methods.</body>
        </specification>
      </packagedElement>
    </packagedElement>
    <packagedElement xmi:type="uml:Package" xmi:id="_apctEMnJEeWAiZQZbeZaoA" name="StateMachines">
      <ownedRule xmi:type="uml:Constraint" xmi:id="_dduWIMt3EeWF7I4YWspV6w" name="Of_pssm_transition_signal_event_receptions">
        <constrainedElement xmi:type="uml:Class" href="UML.uml#Transition"/>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_dduWIct3EeWF7I4YWspV6w">
          <language>Natural language</language>
          <body>The Signals of any SignalEvents on the triggers of a Transition must have matching Receptions that are owned or inherited by the context of the containing StateMachine of the Transition.</body>
        </specification>
      </ownedRule>
      <packagedElement xmi:type="uml:Constraint" xmi:id="_SNpToMq0EeWF7I4YWspV6w" name="pssm_state_has_no_submachine">
        <constrainedElement xmi:type="uml:Package" href="#_apctEMnJEeWAiZQZbeZaoA"/>
        <constrainedElement xmi:type="uml:Property" href="UML.uml#State-isSimple"/>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_Y1zTYMq0EeWF7I4YWspV6w">
          <language>Natural language</language>
          <body>A State must not have a submachine.</body>
        </specification>
      </packagedElement>
      <packagedElement xmi:type="uml:Constraint" xmi:id="_eJHAEMq0EeWF7I4YWspV6w" name="pssm_state_has_no_invariant" constrainedElement="_apctEMnJEeWAiZQZbeZaoA">
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_lLNw4Mq0EeWF7I4YWspV6w">
          <language>Natural language</language>
          <body>A State must not have a stateInvariant.</body>
        </specification>
      </packagedElement>
      <packagedElement xmi:type="uml:Constraint" xmi:id="_yEbBgMrAEeWF7I4YWspV6w" name="pssm_state_machine_extends_at_most_one">
        <constrainedElement xmi:type="uml:Class" href="UML.uml#StateMachine"/>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_CzNTAMrBEeWF7I4YWspV6w">
          <language>Natural language</language>
          <body>A StateMachine must not have more than one extendedStateMachine.</body>
        </specification>
      </packagedElement>
      <packagedElement xmi:type="uml:Constraint" xmi:id="_ZAtrMMtqEeWF7I4YWspV6w" name="pssm_state_machine_context">
        <constrainedElement xmi:type="uml:Class" href="UML.uml#StateMachine"/>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_spC8sMtqEeWF7I4YWspV6w">
          <language>Natural language</language>
          <body>A StateMachine may not be a method and, if it has a context, it must be a classifierBehavior for that context.</body>
        </specification>
      </packagedElement>
      <packagedElement xmi:type="uml:Constraint" xmi:id="_r0dooMtrEeWF7I4YWspV6w" name="pssm_transition_triggers">
        <constrainedElement xmi:type="uml:Class" href="UML.uml#Transition"/>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_VUBsIMtsEeWF7I4YWspV6w">
          <language>Natural language</language>
          <body>The triggers of a Transition must all be for CallEvents or SignalEvents.</body>
        </specification>
      </packagedElement>
      <packagedElement xmi:type="uml:Constraint" xmi:id="_eVRDIMtsEeWF7I4YWspV6w" name="pssm_transition_call_event_operations">
        <constrainedElement xmi:type="uml:Class" href="UML.uml#Transition"/>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-GJa0MtsEeWF7I4YWspV6w">
          <language>Natural language</language>
          <body>The Operations of any CallEvents on the triggers of a Transition must be owned or inherited by the context of the containing StateMachine of the Transition.</body>
        </specification>
      </packagedElement>
      <packagedElement xmi:type="uml:Constraint" xmi:id="_FtgNwMttEeWF7I4YWspV6w" name="pssm_transition_behavior_parameters">
        <constrainedElement xmi:type="uml:Class" href="UML.uml#Transition"/>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_Be2mkMtuEeWF7I4YWspV6w">
          <language>Natural language</language>
          <body>If all triggers of a Transition are for SignalEvents, then an effect Behavior of the Transition may have exactly one Parameter of mode “in”, multiplicity upper bound of 1 and a type that is a Signal that conforms to all the Signals of the Transition triggers. If all the triggers are for CallEvents, such that the signatures of the Operations of the CallEvents are consistent, then an effect Behavior may have a signature that conforms to or input-conforms to all the signatures of the Operations of the CallEvents. Otherwise, an effect Behavior must have no Parameters.</body>
        </specification>
      </packagedElement>
      <packagedElement xmi:type="uml:Constraint" xmi:id="_Whi9QMtuEeWF7I4YWspV6w" name="pssm_state_behavior_parameters">
        <constrainedElement xmi:type="uml:Class" href="UML.uml#State"/>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_-Yp1MMtuEeWF7I4YWspV6w">
          <language>Natural language</language>
          <body>If all the relevant Triggers of an entry, doActivity or effect Behavior are for SignalEvents, then the Behavior may have exactly one Parameter of mode “in”, multiplicity upper bound of 1 and a type that is a Signal that conforms to all the Signals of the relevant Triggers. If all the relevant Triggers are for CallEvents, such that the signatures of the Operations of the CallEvents are consistent, then an entry or exit behavior Behavior may have a signature that conforms to or input-conforms to all the signatures of the Operations of the CallEvents and a doActivity Behavior may have a signature that input-conforms to all the signatures of the Operations of the CallEvents. Otherwise, an entry, doActivity or exit Behavior must have no Parameters.</body>
        </specification>
      </packagedElement>
      <packagedElement xmi:type="uml:Constraint" xmi:id="_mzLw8NEaEeWMvYElZ5Ee4w" name="pssm_transition_vertexes">
        <constrainedElement xmi:type="uml:Class" href="UML.uml#Transition"/>
        <specification xmi:type="uml:OpaqueExpression" xmi:id="_44KZUNEaEeWMvYElZ5Ee4w">
          <language>Natural language</language>
          <body>The source and target Vertexes of a Transition must be contained by the same StateMachine as the Transition.</body>
        </specification>
      </packagedElement>
    </packagedElement>
  </packagedElement>
</uml:Model>
