<?xml version="1.0" encoding="UTF-8"?>
<!--
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
-->
<scxml xmlns="http://www.w3.org/2005/07/scxml" version="1.0" datamodel="jexl" initial="init">
       <state id="init">
               <transition event="start" target="onetwo" />
       </state>
       <parallel id="onetwo">
               <transition event="onetwo_three" target="three" />
               <state id="one">
               </state>
               <state id="two">
                       <transition event="two_four" target="four" />
               </state>
       </parallel>
       <state id="three">
               <transition event="three_one" target="one" />
               <transition event="three_four" target="four" />
       </state>
       <state id="four">
               <transition event="four_onetwo" target="onetwo" />
               <transition event="four_three" target="three" />
       </state>
</scxml>
