<?xml version="1.0" encoding="UTF-8"?><!--  Test that states are entered in entry order (parents before children with document order used to break ties)
after the executable content in the transition is executed. event1, event2, event3, event4 should be raised in that 
order when the transition in s01 is taken  --><scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" version="1.0" initial="s0" datamodel="ecmascript">
    
<state id="s0" initial="s01">
 <onentry>
  <send event="timeout" delay="1s"/>
  </onentry>
  <transition event="timeout" target="fail"/>
  
  <state id="s01">
    <transition target="s0p2">
     <!-- this should be the first event raised -->
     <raise event="event1"/>
     </transition>
    </state>

<parallel id="s0p2">
 
  <transition event="event1" target="s03"/>
   
 <state id="s01p21">
   <onentry>
     <!-- third event -->
     <raise event="event3"/>
     </onentry>     
   </state>
   
  <state id="s01p22">
   <onentry>
   <!-- the fourth event -->
   <raise event="event4"/>
   </onentry>
  </state>
  
  <onentry>
    <!-- this should be the second event raised -->
    <raise event="event2"/>
    </onentry>
  </parallel> 

  
  <state id="s03">
    <transition event="event2" target="s04"/>
    <transition event="*" target="fail"/>
    </state>
    
  <state id="s04">
    <transition event="event3" target="s05"/>
    <transition event="*" target="fail"/>
    </state>

    
  <state id="s05">
    <transition event="event4" target="pass"/>
    <transition event="*" target="fail"/>
    </state>
   
 </state>  <!-- end s0 -->
 

<final id="pass"><onentry><log label="Outcome" expr="'pass'"/></onentry></final>
<final id="fail"><onentry><log label="Outcome" expr="'fail'"/></onentry></final>
</scxml>