JacobeanRnD / SCHVIZ

SCXML Visualization
Apache License 2.0
6 stars 1 forks source link

Drag breaks for very large statecharts #68

Closed jbeard4 closed 9 years ago

jbeard4 commented 9 years ago

Consider the example (generated) SCXML:

<?xml version="1.0" encoding="UTF-8"?>
<scxml xmlns="http://www.w3.org/2005/07/scxml" name="cli-parser" version="1.0">
  <datamodel>
    <data id="tabtabData"/>
    <data id="tabtab"/>
  </datamodel>
  <state id="start">
    <transition target="command_trie" event="init">
      <assign location="tabtabData" expr="_event.data.tabtabData"/>
      <assign location="tabtab" expr="_event.data.tabtab"/>
    </transition>
  </state>
  <state id="command_trie">
    <state id="command_initial">
      <transition target="command_s" event="s"/>
      <transition target="command_c" event="c"/>
      <transition target="command_l" event="l"/>
      <transition target="command_r" event="r"/>
      <transition target="command_i" event="i"/>
      <transition target="command_v" event="v"/>
      <transition target="command_h" event="h"/>
      <state id="command_initial_initial">
        <transition target="command_initial_done" event="tabtab"/>
      </state>
      <final id="command_initial_done">
        <onentry>
          <script>
              tabtab.log(["save","cat","ls","run","send","interact","rm","subscribe","viz","log","help"],tabtabData);
            </script>
        </onentry>
      </final>
    </state>
    <state id="command_s">
      <transition target="command_sa" event="a"/>
      <transition target="command_se" event="e"/>
      <transition target="command_su" event="u"/>
      <state id="command_s_initial">
        <transition target="command_s_done" event="tabtab"/>
      </state>
      <final id="command_s_done">
        <onentry>
          <script>
              tabtab.log(["save","send","subscribe"],tabtabData);
            </script>
        </onentry>
      </final>
    </state>
    <state id="command_sa">
      <transition target="command_sav" event="v"/>
      <state id="command_sa_initial">
        <transition target="command_sa_done" event="tabtab"/>
      </state>
      <final id="command_sa_done">
        <onentry>
          <script>
              tabtab.log(["save"],tabtabData);
            </script>
        </onentry>
      </final>
    </state>
    <state id="command_sav">
      <transition target="command_save" event="e"/>
      <state id="command_sav_initial">
        <transition target="command_sav_done" event="tabtab"/>
      </state>
      <final id="command_sav_done">
        <onentry>
          <script>
              tabtab.log(["save"],tabtabData);
            </script>
        </onentry>
      </final>
    </state>
    <state id="command_save">
      <state id="command_save_initial">
        <transition target="command_save_done" event="tabtab"/>
        <state id="command_save_options_or_arguments">
          <state id="command_save_arguments">
            <transition event="-" target="command_save_short_options_trie"/>
          </state>
          <state id="command_save_short_options_trie">
            <transition event="-" target="command_save_long_options_trie"/>
          </state>
          <state id="command_save_long_options_trie">
            <state id="option_save_initial">
              <transition target="option_save_s" event="s"/>
              <transition target="option_save_w" event="w"/>
              <transition target="option_save_h" event="h"/>
              <state id="option_save_initial_initial">
                <transition target="option_save_initial_done" event="tabtab"/>
              </state>
              <final id="option_save_initial_done">
                <onentry>
                  <script>
                          tabtab.log(["statechartname","watch","host"],tabtabData);
                        </script>
                </onentry>
              </final>
            </state>
            <state id="option_save_s">
              <transition target="option_save_st" event="t"/>
              <state id="option_save_s_initial">
                <transition target="option_save_s_done" event="tabtab"/>
              </state>
              <final id="option_save_s_done">
                <onentry>
                  <script>
                          tabtab.log(["statechartname"],tabtabData);
                        </script>
                </onentry>
              </final>
            </state>
            <state id="option_save_st">
              <transition target="option_save_sta" event="a"/>
              <state id="option_save_st_initial">
                <transition target="option_save_st_done" event="tabtab"/>
              </state>
              <final id="option_save_st_done">
                <onentry>
                  <script>
                          tabtab.log(["statechartname"],tabtabData);
                        </script>
                </onentry>
              </final>
            </state>
            <state id="option_save_sta">
              <transition target="option_save_stat" event="t"/>
              <state id="option_save_sta_initial">
                <transition target="option_save_sta_done" event="tabtab"/>
              </state>
              <final id="option_save_sta_done">
                <onentry>
                  <script>
                          tabtab.log(["statechartname"],tabtabData);
                        </script>
                </onentry>
              </final>
            </state>
            <state id="option_save_stat">
              <transition target="option_save_state" event="e"/>
              <state id="option_save_stat_initial">
                <transition target="option_save_stat_done" event="tabtab"/>
              </state>
              <final id="option_save_stat_done">
                <onentry>
                  <script>
                          tabtab.log(["statechartname"],tabtabData);
                        </script>
                </onentry>
              </final>
            </state>
            <state id="option_save_state">
              <transition target="option_save_statec" event="c"/>
              <state id="option_save_state_initial">
                <transition target="option_save_state_done" event="tabtab"/>
              </state>
              <final id="option_save_state_done">
                <onentry>
                  <script>
                          tabtab.log(["statechartname"],tabtabData);
                        </script>
                </onentry>
              </final>
            </state>
            <state id="option_save_statec">
              <transition target="option_save_statech" event="h"/>
              <state id="option_save_statec_initial">
                <transition target="option_save_statec_done" event="tabtab"/>
              </state>
              <final id="option_save_statec_done">
                <onentry>
                  <script>
                          tabtab.log(["statechartname"],tabtabData);
                        </script>
                </onentry>
              </final>
            </state>
            <state id="option_save_statech">
              <transition target="option_save_statecha" event="a"/>
              <state id="option_save_statech_initial">
                <transition target="option_save_statech_done" event="tabtab"/>
              </state>
              <final id="option_save_statech_done">
                <onentry>
                  <script>
                          tabtab.log(["statechartname"],tabtabData);
                        </script>
                </onentry>
              </final>
            </state>
            <state id="option_save_statecha">
              <transition target="option_save_statechar" event="r"/>
              <state id="option_save_statecha_initial">
                <transition target="option_save_statecha_done" event="tabtab"/>
              </state>
              <final id="option_save_statecha_done">
                <onentry>
                  <script>
                          tabtab.log(["statechartname"],tabtabData);
                        </script>
                </onentry>
              </final>
            </state>
            <state id="option_save_statechar">
              <transition target="option_save_statechart" event="t"/>
              <state id="option_save_statechar_initial">
                <transition target="option_save_statechar_done" event="tabtab"/>
              </state>
              <final id="option_save_statechar_done">
                <onentry>
                  <script>
                          tabtab.log(["statechartname"],tabtabData);
                        </script>
                </onentry>
              </final>
            </state>
            <state id="option_save_statechart">
              <transition target="option_save_statechartn" event="n"/>
              <state id="option_save_statechart_initial">
                <transition target="option_save_statechart_done" event="tabtab"/>
              </state>
              <final id="option_save_statechart_done">
                <onentry>
                  <script>
                          tabtab.log(["statechartname"],tabtabData);
                        </script>
                </onentry>
              </final>
            </state>
            <state id="option_save_statechartn">
              <transition target="option_save_statechartna" event="a"/>
              <state id="option_save_statechartn_initial">
                <transition target="option_save_statechartn_done" event="tabtab"/>
              </state>
              <final id="option_save_statechartn_done">
                <onentry>
                  <script>
                          tabtab.log(["statechartname"],tabtabData);
                        </script>
                </onentry>
              </final>
            </state>
            <state id="option_save_statechartna">
              <transition target="option_save_statechartnam" event="m"/>
              <state id="option_save_statechartna_initial">
                <transition target="option_save_statechartna_done" event="tabtab"/>
              </state>
              <final id="option_save_statechartna_done">
                <onentry>
                  <script>
                          tabtab.log(["statechartname"],tabtabData);
                        </script>
                </onentry>
              </final>
            </state>
            <state id="option_save_statechartnam">
              <transition target="option_save_statechartname" event="e"/>
              <state id="option_save_statechartnam_initial">
                <transition target="option_save_statechartnam_done" event="tabtab"/>
              </state>
              <final id="option_save_statechartnam_done">
                <onentry>
                  <script>
                          tabtab.log(["statechartname"],tabtabData);
                        </script>
                </onentry>
              </final>
            </state>
            <state id="option_save_statechartname">
              <state id="option_save_statechartname_initial">
                <transition target="option_save_statechartname_done" event="tabtab"/>
              </state>
              <final id="option_save_statechartname_done">
                <onentry>
                  <script>
                          tabtab.log(["statechartname"],tabtabData);
                        </script>
                </onentry>
              </final>
            </state>
            <state id="option_save_w">
              <transition target="option_save_wa" event="a"/>
              <state id="option_save_w_initial">
                <transition target="option_save_w_done" event="tabtab"/>
              </state>
              <final id="option_save_w_done">
                <onentry>
                  <script>
                          tabtab.log(["watch"],tabtabData);
                        </script>
                </onentry>
              </final>
            </state>
            <state id="option_save_wa">
              <transition target="option_save_wat" event="t"/>
              <state id="option_save_wa_initial">
                <transition target="option_save_wa_done" event="tabtab"/>
              </state>
              <final id="option_save_wa_done">
                <onentry>
                  <script>
                          tabtab.log(["watch"],tabtabData);
                        </script>
                </onentry>
              </final>
            </state>
            <state id="option_save_wat">
              <transition target="option_save_watc" event="c"/>
              <state id="option_save_wat_initial">
                <transition target="option_save_wat_done" event="tabtab"/>
              </state>
              <final id="option_save_wat_done">
                <onentry>
                  <script>
                          tabtab.log(["watch"],tabtabData);
                        </script>
                </onentry>
              </final>
            </state>
            <state id="option_save_watc">
              <transition target="option_save_watch" event="h"/>
              <state id="option_save_watc_initial">
                <transition target="option_save_watc_done" event="tabtab"/>
              </state>
              <final id="option_save_watc_done">
                <onentry>
                  <script>
                          tabtab.log(["watch"],tabtabData);
                        </script>
                </onentry>
              </final>
            </state>
            <state id="option_save_watch">
              <state id="option_save_watch_initial">
                <transition target="option_save_watch_done" event="tabtab"/>
              </state>
              <final id="option_save_watch_done">
                <onentry>
                  <script>
                          tabtab.log(["watch"],tabtabData);
                        </script>
                </onentry>
              </final>
            </state>
            <state id="option_save_h">
              <transition target="option_save_ho" event="o"/>
              <state id="option_save_h_initial">
                <transition target="option_save_h_done" event="tabtab"/>
              </state>
              <final id="option_save_h_done">
                <onentry>
                  <script>
                          tabtab.log(["host"],tabtabData);
                        </script>
                </onentry>
              </final>
            </state>
            <state id="option_save_ho">
              <transition target="option_save_hos" event="s"/>
              <state id="option_save_ho_initial">
                <transition target="option_save_ho_done" event="tabtab"/>
              </state>
              <final id="option_save_ho_done">
                <onentry>
                  <script>
                          tabtab.log(["host"],tabtabData);
                        </script>
                </onentry>
              </final>
            </state>
            <state id="option_save_hos">
              <transition target="option_save_host" event="t"/>
              <state id="option_save_hos_initial">
                <transition target="option_save_hos_done" event="tabtab"/>
              </state>
              <final id="option_save_hos_done">
                <onentry>
                  <script>
                          tabtab.log(["host"],tabtabData);
                        </script>
                </onentry>
              </final>
            </state>
            <state id="option_save_host">
              <state id="option_save_host_initial">
                <transition target="option_save_host_done" event="tabtab"/>
              </state>
              <final id="option_save_host_done">
                <onentry>
                  <script>
                          tabtab.log(["host"],tabtabData);
                        </script>
                </onentry>
              </final>
            </state>
          </state>
        </state>
      </state>
      <final id="command_save_done">
        <onentry>
          <script>
              tabtab.log(["save"],tabtabData);
            </script>
        </onentry>
      </final>
    </state>
    <state id="command_c">
      <transition target="command_ca" event="a"/>
      <state id="command_c_initial">
        <transition target="command_c_done" event="tabtab"/>
      </state>
      <final id="command_c_done">
        <onentry>
          <script>
              tabtab.log(["cat"],tabtabData);
            </script>
        </onentry>
      </final>
    </state>
    <state id="command_ca">
      <transition target="command_cat" event="t"/>
      <state id="command_ca_initial">
        <transition target="command_ca_done" event="tabtab"/>
      </state>
      <final id="command_ca_done">
        <onentry>
          <script>
              tabtab.log(["cat"],tabtabData);
            </script>
        </onentry>
      </final>
    </state>
    <state id="command_cat">
      <state id="command_cat_initial">
        <transition target="command_cat_done" event="tabtab"/>
        <state id="command_cat_options_or_arguments">
          <state id="command_cat_arguments">
            <transition event="-" target="command_cat_short_options_trie"/>
          </state>
          <state id="command_cat_short_options_trie">
            <transition event="-" target="command_cat_long_options_trie"/>
          </state>
          <state id="command_cat_long_options_trie">
            <state id="option_cat_initial">
              <transition target="option_cat_h" event="h"/>
              <state id="option_cat_initial_initial">
                <transition target="option_cat_initial_done" event="tabtab"/>
              </state>
              <final id="option_cat_initial_done">
                <onentry>
                  <script>
                          tabtab.log(["host"],tabtabData);
                        </script>
                </onentry>
              </final>
            </state>
            <state id="option_cat_h">
              <transition target="option_cat_ho" event="o"/>
              <state id="option_cat_h_initial">
                <transition target="option_cat_h_done" event="tabtab"/>
              </state>
              <final id="option_cat_h_done">
                <onentry>
                  <script>
                          tabtab.log(["host"],tabtabData);
                        </script>
                </onentry>
              </final>
            </state>
            <state id="option_cat_ho">
              <transition target="option_cat_hos" event="s"/>
              <state id="option_cat_ho_initial">
                <transition target="option_cat_ho_done" event="tabtab"/>
              </state>
              <final id="option_cat_ho_done">
                <onentry>
                  <script>
                          tabtab.log(["host"],tabtabData);
                        </script>
                </onentry>
              </final>
            </state>
            <state id="option_cat_hos">
              <transition target="option_cat_host" event="t"/>
              <state id="option_cat_hos_initial">
                <transition target="option_cat_hos_done" event="tabtab"/>
              </state>
              <final id="option_cat_hos_done">
                <onentry>
                  <script>
                          tabtab.log(["host"],tabtabData);
                        </script>
                </onentry>
              </final>
            </state>
            <state id="option_cat_host">
              <state id="option_cat_host_initial">
                <transition target="option_cat_host_done" event="tabtab"/>
              </state>
              <final id="option_cat_host_done">
                <onentry>
                  <script>
                          tabtab.log(["host"],tabtabData);
                        </script>
                </onentry>
              </final>
            </state>
          </state>
        </state>
      </state>
      <final id="command_cat_done">
        <onentry>
          <script>
              tabtab.log(["cat"],tabtabData);
            </script>
        </onentry>
      </final>
    </state>
    <state id="command_l">
      <transition target="command_ls" event="s"/>
      <transition target="command_lo" event="o"/>
      <state id="command_l_initial">
        <transition target="command_l_done" event="tabtab"/>
      </state>
      <final id="command_l_done">
        <onentry>
          <script>
              tabtab.log(["ls","log"],tabtabData);
            </script>
        </onentry>
      </final>
    </state>
    <state id="command_ls">
      <state id="command_ls_initial">
        <transition target="command_ls_done" event="tabtab"/>
        <state id="command_ls_options_or_arguments">
          <state id="command_ls_arguments">
            <transition event="-" target="command_ls_short_options_trie"/>
          </state>
          <state id="command_ls_short_options_trie">
            <transition event="-" target="command_ls_long_options_trie"/>
          </state>
          <state id="command_ls_long_options_trie">
            <state id="option_ls_initial">
              <transition target="option_ls_h" event="h"/>
              <state id="option_ls_initial_initial">
                <transition target="option_ls_initial_done" event="tabtab"/>
              </state>
              <final id="option_ls_initial_done">
                <onentry>
                  <script>
                          tabtab.log(["host"],tabtabData);
                        </script>
                </onentry>
              </final>
            </state>
            <state id="option_ls_h">
              <transition target="option_ls_ho" event="o"/>
              <state id="option_ls_h_initial">
                <transition target="option_ls_h_done" event="tabtab"/>
              </state>
              <final id="option_ls_h_done">
                <onentry>
                  <script>
                          tabtab.log(["host"],tabtabData);
                        </script>
                </onentry>
              </final>
            </state>
            <state id="option_ls_ho">
              <transition target="option_ls_hos" event="s"/>
              <state id="option_ls_ho_initial">
                <transition target="option_ls_ho_done" event="tabtab"/>
              </state>
              <final id="option_ls_ho_done">
                <onentry>
                  <script>
                          tabtab.log(["host"],tabtabData);
                        </script>
                </onentry>
              </final>
            </state>
            <state id="option_ls_hos">
              <transition target="option_ls_host" event="t"/>
              <state id="option_ls_hos_initial">
                <transition target="option_ls_hos_done" event="tabtab"/>
              </state>
              <final id="option_ls_hos_done">
                <onentry>
                  <script>
                          tabtab.log(["host"],tabtabData);
                        </script>
                </onentry>
              </final>
            </state>
            <state id="option_ls_host">
              <state id="option_ls_host_initial">
                <transition target="option_ls_host_done" event="tabtab"/>
              </state>
              <final id="option_ls_host_done">
                <onentry>
                  <script>
                          tabtab.log(["host"],tabtabData);
                        </script>
                </onentry>
              </final>
            </state>
          </state>
        </state>
      </state>
      <final id="command_ls_done">
        <onentry>
          <script>
              tabtab.log(["ls"],tabtabData);
            </script>
        </onentry>
      </final>
    </state>
    <state id="command_r">
      <transition target="command_ru" event="u"/>
      <transition target="command_rm" event="m"/>
      <state id="command_r_initial">
        <transition target="command_r_done" event="tabtab"/>
      </state>
      <final id="command_r_done">
        <onentry>
          <script>
              tabtab.log(["run","rm"],tabtabData);
            </script>
        </onentry>
      </final>
    </state>
    <state id="command_ru">
      <transition target="command_run" event="n"/>
      <state id="command_ru_initial">
        <transition target="command_ru_done" event="tabtab"/>
      </state>
      <final id="command_ru_done">
        <onentry>
          <script>
              tabtab.log(["run"],tabtabData);
            </script>
        </onentry>
      </final>
    </state>
    <state id="command_run">
      <state id="command_run_initial">
        <transition target="command_run_done" event="tabtab"/>
        <state id="command_run_options_or_arguments">
          <state id="command_run_arguments">
            <transition event="-" target="command_run_short_options_trie"/>
          </state>
          <state id="command_run_short_options_trie">
            <transition event="-" target="command_run_long_options_trie"/>
          </state>
          <state id="command_run_long_options_trie">
            <state id="option_run_initial">
              <transition target="option_run_i" event="i"/>
              <transition target="option_run_h" event="h"/>
              <state id="option_run_initial_initial">
                <transition target="option_run_initial_done" event="tabtab"/>
              </state>
              <final id="option_run_initial_done">
                <onentry>
                  <script>
                          tabtab.log(["instanceId","host"],tabtabData);
                        </script>
                </onentry>
              </final>
            </state>
            <state id="option_run_i">
              <transition target="option_run_in" event="n"/>
              <state id="option_run_i_initial">
                <transition target="option_run_i_done" event="tabtab"/>
              </state>
              <final id="option_run_i_done">
                <onentry>
                  <script>
                          tabtab.log(["instanceId"],tabtabData);
                        </script>
                </onentry>
              </final>
            </state>
            <state id="option_run_in">
              <transition target="option_run_ins" event="s"/>
              <state id="option_run_in_initial">
                <transition target="option_run_in_done" event="tabtab"/>
              </state>
              <final id="option_run_in_done">
                <onentry>
                  <script>
                          tabtab.log(["instanceId"],tabtabData);
                        </script>
                </onentry>
              </final>
            </state>
            <state id="option_run_ins">
              <transition target="option_run_inst" event="t"/>
              <state id="option_run_ins_initial">
                <transition target="option_run_ins_done" event="tabtab"/>
              </state>
              <final id="option_run_ins_done">
                <onentry>
                  <script>
                          tabtab.log(["instanceId"],tabtabData);
                        </script>
                </onentry>
              </final>
            </state>
            <state id="option_run_inst">
              <transition target="option_run_insta" event="a"/>
              <state id="option_run_inst_initial">
                <transition target="option_run_inst_done" event="tabtab"/>
              </state>
              <final id="option_run_inst_done">
                <onentry>
                  <script>
                          tabtab.log(["instanceId"],tabtabData);
                        </script>
                </onentry>
              </final>
            </state>
            <state id="option_run_insta">
              <transition target="option_run_instan" event="n"/>
              <state id="option_run_insta_initial">
                <transition target="option_run_insta_done" event="tabtab"/>
              </state>
              <final id="option_run_insta_done">
                <onentry>
                  <script>
                          tabtab.log(["instanceId"],tabtabData);
                        </script>
                </onentry>
              </final>
            </state>
            <state id="option_run_instan">
              <transition target="option_run_instanc" event="c"/>
              <state id="option_run_instan_initial">
                <transition target="option_run_instan_done" event="tabtab"/>
              </state>
              <final id="option_run_instan_done">
                <onentry>
                  <script>
                          tabtab.log(["instanceId"],tabtabData);
                        </script>
                </onentry>
              </final>
            </state>
            <state id="option_run_instanc">
              <transition target="option_run_instance" event="e"/>
              <state id="option_run_instanc_initial">
                <transition target="option_run_instanc_done" event="tabtab"/>
              </state>
              <final id="option_run_instanc_done">
                <onentry>
                  <script>
                          tabtab.log(["instanceId"],tabtabData);
                        </script>
                </onentry>
              </final>
            </state>
            <state id="option_run_instance">
              <transition target="option_run_instanceI" event="I"/>
              <state id="option_run_instance_initial">
                <transition target="option_run_instance_done" event="tabtab"/>
              </state>
              <final id="option_run_instance_done">
                <onentry>
                  <script>
                          tabtab.log(["instanceId"],tabtabData);
                        </script>
                </onentry>
              </final>
            </state>
            <state id="option_run_instanceI">
              <transition target="option_run_instanceId" event="d"/>
              <state id="option_run_instanceI_initial">
                <transition target="option_run_instanceI_done" event="tabtab"/>
              </state>
              <final id="option_run_instanceI_done">
                <onentry>
                  <script>
                          tabtab.log(["instanceId"],tabtabData);
                        </script>
                </onentry>
              </final>
            </state>
            <state id="option_run_instanceId">
              <state id="option_run_instanceId_initial">
                <transition target="option_run_instanceId_done" event="tabtab"/>
              </state>
              <final id="option_run_instanceId_done">
                <onentry>
                  <script>
                          tabtab.log(["instanceId"],tabtabData);
                        </script>
                </onentry>
              </final>
            </state>
            <state id="option_run_h">
              <transition target="option_run_ho" event="o"/>
              <state id="option_run_h_initial">
                <transition target="option_run_h_done" event="tabtab"/>
              </state>
              <final id="option_run_h_done">
                <onentry>
                  <script>
                          tabtab.log(["host"],tabtabData);
                        </script>
                </onentry>
              </final>
            </state>
            <state id="option_run_ho">
              <transition target="option_run_hos" event="s"/>
              <state id="option_run_ho_initial">
                <transition target="option_run_ho_done" event="tabtab"/>
              </state>
              <final id="option_run_ho_done">
                <onentry>
                  <script>
                          tabtab.log(["host"],tabtabData);
                        </script>
                </onentry>
              </final>
            </state>
            <state id="option_run_hos">
              <transition target="option_run_host" event="t"/>
              <state id="option_run_hos_initial">
                <transition target="option_run_hos_done" event="tabtab"/>
              </state>
              <final id="option_run_hos_done">
                <onentry>
                  <script>
                          tabtab.log(["host"],tabtabData);
                        </script>
                </onentry>
              </final>
            </state>
            <state id="option_run_host">
              <state id="option_run_host_initial">
                <transition target="option_run_host_done" event="tabtab"/>
              </state>
              <final id="option_run_host_done">
                <onentry>
                  <script>
                          tabtab.log(["host"],tabtabData);
                        </script>
                </onentry>
              </final>
            </state>
          </state>
        </state>
      </state>
      <final id="command_run_done">
        <onentry>
          <script>
              tabtab.log(["run"],tabtabData);
            </script>
        </onentry>
      </final>
    </state>
    <state id="command_se">
      <transition target="command_sen" event="n"/>
      <state id="command_se_initial">
        <transition target="command_se_done" event="tabtab"/>
      </state>
      <final id="command_se_done">
        <onentry>
          <script>
              tabtab.log(["send"],tabtabData);
            </script>
        </onentry>
      </final>
    </state>
    <state id="command_sen">
      <transition target="command_send" event="d"/>
      <state id="command_sen_initial">
        <transition target="command_sen_done" event="tabtab"/>
      </state>
      <final id="command_sen_done">
        <onentry>
          <script>
              tabtab.log(["send"],tabtabData);
            </script>
        </onentry>
      </final>
    </state>
    <state id="command_send">
      <state id="command_send_initial">
        <transition target="command_send_done" event="tabtab"/>
        <state id="command_send_options_or_arguments">
          <state id="command_send_arguments">
            <transition event="-" target="command_send_short_options_trie"/>
          </state>
          <state id="command_send_short_options_trie">
            <transition event="-" target="command_send_long_options_trie"/>
          </state>
          <state id="command_send_long_options_trie">
            <state id="option_send_initial">
              <transition target="option_send_h" event="h"/>
              <state id="option_send_initial_initial">
                <transition target="option_send_initial_done" event="tabtab"/>
              </state>
              <final id="option_send_initial_done">
                <onentry>
                  <script>
                          tabtab.log(["host"],tabtabData);
                        </script>
                </onentry>
              </final>
            </state>
            <state id="option_send_h">
              <transition target="option_send_ho" event="o"/>
              <state id="option_send_h_initial">
                <transition target="option_send_h_done" event="tabtab"/>
              </state>
              <final id="option_send_h_done">
                <onentry>
                  <script>
                          tabtab.log(["host"],tabtabData);
                        </script>
                </onentry>
              </final>
            </state>
            <state id="option_send_ho">
              <transition target="option_send_hos" event="s"/>
              <state id="option_send_ho_initial">
                <transition target="option_send_ho_done" event="tabtab"/>
              </state>
              <final id="option_send_ho_done">
                <onentry>
                  <script>
                          tabtab.log(["host"],tabtabData);
                        </script>
                </onentry>
              </final>
            </state>
            <state id="option_send_hos">
              <transition target="option_send_host" event="t"/>
              <state id="option_send_hos_initial">
                <transition target="option_send_hos_done" event="tabtab"/>
              </state>
              <final id="option_send_hos_done">
                <onentry>
                  <script>
                          tabtab.log(["host"],tabtabData);
                        </script>
                </onentry>
              </final>
            </state>
            <state id="option_send_host">
              <state id="option_send_host_initial">
                <transition target="option_send_host_done" event="tabtab"/>
              </state>
              <final id="option_send_host_done">
                <onentry>
                  <script>
                          tabtab.log(["host"],tabtabData);
                        </script>
                </onentry>
              </final>
            </state>
          </state>
        </state>
      </state>
      <final id="command_send_done">
        <onentry>
          <script>
              tabtab.log(["send"],tabtabData);
            </script>
        </onentry>
      </final>
    </state>
    <state id="command_i">
      <transition target="command_in" event="n"/>
      <state id="command_i_initial">
        <transition target="command_i_done" event="tabtab"/>
      </state>
      <final id="command_i_done">
        <onentry>
          <script>
              tabtab.log(["interact"],tabtabData);
            </script>
        </onentry>
      </final>
    </state>
    <state id="command_in">
      <transition target="command_int" event="t"/>
      <state id="command_in_initial">
        <transition target="command_in_done" event="tabtab"/>
      </state>
      <final id="command_in_done">
        <onentry>
          <script>
              tabtab.log(["interact"],tabtabData);
            </script>
        </onentry>
      </final>
    </state>
    <state id="command_int">
      <transition target="command_inte" event="e"/>
      <state id="command_int_initial">
        <transition target="command_int_done" event="tabtab"/>
      </state>
      <final id="command_int_done">
        <onentry>
          <script>
              tabtab.log(["interact"],tabtabData);
            </script>
        </onentry>
      </final>
    </state>
    <state id="command_inte">
      <transition target="command_inter" event="r"/>
      <state id="command_inte_initial">
        <transition target="command_inte_done" event="tabtab"/>
      </state>
      <final id="command_inte_done">
        <onentry>
          <script>
              tabtab.log(["interact"],tabtabData);
            </script>
        </onentry>
      </final>
    </state>
    <state id="command_inter">
      <transition target="command_intera" event="a"/>
      <state id="command_inter_initial">
        <transition target="command_inter_done" event="tabtab"/>
      </state>
      <final id="command_inter_done">
        <onentry>
          <script>
              tabtab.log(["interact"],tabtabData);
            </script>
        </onentry>
      </final>
    </state>
    <state id="command_intera">
      <transition target="command_interac" event="c"/>
      <state id="command_intera_initial">
        <transition target="command_intera_done" event="tabtab"/>
      </state>
      <final id="command_intera_done">
        <onentry>
          <script>
              tabtab.log(["interact"],tabtabData);
            </script>
        </onentry>
      </final>
    </state>
    <state id="command_interac">
      <transition target="command_interact" event="t"/>
      <state id="command_interac_initial">
        <transition target="command_interac_done" event="tabtab"/>
      </state>
      <final id="command_interac_done">
        <onentry>
          <script>
              tabtab.log(["interact"],tabtabData);
            </script>
        </onentry>
      </final>
    </state>
    <state id="command_interact">
      <state id="command_interact_initial">
        <transition target="command_interact_done" event="tabtab"/>
        <state id="command_interact_options_or_arguments">
          <state id="command_interact_arguments">
            <transition event="-" target="command_interact_short_options_trie"/>
          </state>
          <state id="command_interact_short_options_trie">
            <transition event="-" target="command_interact_long_options_trie"/>
          </state>
          <state id="command_interact_long_options_trie">
            <state id="option_interact_initial">
              <transition target="option_interact_h" event="h"/>
              <state id="option_interact_initial_initial">
                <transition target="option_interact_initial_done" event="tabtab"/>
              </state>
              <final id="option_interact_initial_done">
                <onentry>
                  <script>
                          tabtab.log(["host"],tabtabData);
                        </script>
                </onentry>
              </final>
            </state>
            <state id="option_interact_h">
              <transition target="option_interact_ho" event="o"/>
              <state id="option_interact_h_initial">
                <transition target="option_interact_h_done" event="tabtab"/>
              </state>
              <final id="option_interact_h_done">
                <onentry>
                  <script>
                          tabtab.log(["host"],tabtabData);
                        </script>
                </onentry>
              </final>
            </state>
            <state id="option_interact_ho">
              <transition target="option_interact_hos" event="s"/>
              <state id="option_interact_ho_initial">
                <transition target="option_interact_ho_done" event="tabtab"/>
              </state>
              <final id="option_interact_ho_done">
                <onentry>
                  <script>
                          tabtab.log(["host"],tabtabData);
                        </script>
                </onentry>
              </final>
            </state>
            <state id="option_interact_hos">
              <transition target="option_interact_host" event="t"/>
              <state id="option_interact_hos_initial">
                <transition target="option_interact_hos_done" event="tabtab"/>
              </state>
              <final id="option_interact_hos_done">
                <onentry>
                  <script>
                          tabtab.log(["host"],tabtabData);
                        </script>
                </onentry>
              </final>
            </state>
            <state id="option_interact_host">
              <state id="option_interact_host_initial">
                <transition target="option_interact_host_done" event="tabtab"/>
              </state>
              <final id="option_interact_host_done">
                <onentry>
                  <script>
                          tabtab.log(["host"],tabtabData);
                        </script>
                </onentry>
              </final>
            </state>
          </state>
        </state>
      </state>
      <final id="command_interact_done">
        <onentry>
          <script>
              tabtab.log(["interact"],tabtabData);
            </script>
        </onentry>
      </final>
    </state>
    <state id="command_rm">
      <state id="command_rm_initial">
        <transition target="command_rm_done" event="tabtab"/>
        <state id="command_rm_options_or_arguments">
          <state id="command_rm_arguments">
            <transition event="-" target="command_rm_short_options_trie"/>
          </state>
          <state id="command_rm_short_options_trie">
            <transition event="-" target="command_rm_long_options_trie"/>
          </state>
          <state id="command_rm_long_options_trie">
            <state id="option_rm_initial">
              <transition target="option_rm_h" event="h"/>
              <state id="option_rm_initial_initial">
                <transition target="option_rm_initial_done" event="tabtab"/>
              </state>
              <final id="option_rm_initial_done">
                <onentry>
                  <script>
                          tabtab.log(["host"],tabtabData);
                        </script>
                </onentry>
              </final>
            </state>
            <state id="option_rm_h">
              <transition target="option_rm_ho" event="o"/>
              <state id="option_rm_h_initial">
                <transition target="option_rm_h_done" event="tabtab"/>
              </state>
              <final id="option_rm_h_done">
                <onentry>
                  <script>
                          tabtab.log(["host"],tabtabData);
                        </script>
                </onentry>
              </final>
            </state>
            <state id="option_rm_ho">
              <transition target="option_rm_hos" event="s"/>
              <state id="option_rm_ho_initial">
                <transition target="option_rm_ho_done" event="tabtab"/>
              </state>
              <final id="option_rm_ho_done">
                <onentry>
                  <script>
                          tabtab.log(["host"],tabtabData);
                        </script>
                </onentry>
              </final>
            </state>
            <state id="option_rm_hos">
              <transition target="option_rm_host" event="t"/>
              <state id="option_rm_hos_initial">
                <transition target="option_rm_hos_done" event="tabtab"/>
              </state>
              <final id="option_rm_hos_done">
                <onentry>
                  <script>
                          tabtab.log(["host"],tabtabData);
                        </script>
                </onentry>
              </final>
            </state>
            <state id="option_rm_host">
              <state id="option_rm_host_initial">
                <transition target="option_rm_host_done" event="tabtab"/>
              </state>
              <final id="option_rm_host_done">
                <onentry>
                  <script>
                          tabtab.log(["host"],tabtabData);
                        </script>
                </onentry>
              </final>
            </state>
          </state>
        </state>
      </state>
      <final id="command_rm_done">
        <onentry>
          <script>
              tabtab.log(["rm"],tabtabData);
            </script>
        </onentry>
      </final>
    </state>
    <state id="command_su">
      <transition target="command_sub" event="b"/>
      <state id="command_su_initial">
        <transition target="command_su_done" event="tabtab"/>
      </state>
      <final id="command_su_done">
        <onentry>
          <script>
              tabtab.log(["subscribe"],tabtabData);
            </script>
        </onentry>
      </final>
    </state>
    <state id="command_sub">
      <transition target="command_subs" event="s"/>
      <state id="command_sub_initial">
        <transition target="command_sub_done" event="tabtab"/>
      </state>
      <final id="command_sub_done">
        <onentry>
          <script>
              tabtab.log(["subscribe"],tabtabData);
            </script>
        </onentry>
      </final>
    </state>
    <state id="command_subs">
      <transition target="command_subsc" event="c"/>
      <state id="command_subs_initial">
        <transition target="command_subs_done" event="tabtab"/>
      </state>
      <final id="command_subs_done">
        <onentry>
          <script>
              tabtab.log(["subscribe"],tabtabData);
            </script>
        </onentry>
      </final>
    </state>
    <state id="command_subsc">
      <transition target="command_subscr" event="r"/>
      <state id="command_subsc_initial">
        <transition target="command_subsc_done" event="tabtab"/>
      </state>
      <final id="command_subsc_done">
        <onentry>
          <script>
              tabtab.log(["subscribe"],tabtabData);
            </script>
        </onentry>
      </final>
    </state>
    <state id="command_subscr">
      <transition target="command_subscri" event="i"/>
      <state id="command_subscr_initial">
        <transition target="command_subscr_done" event="tabtab"/>
      </state>
      <final id="command_subscr_done">
        <onentry>
          <script>
              tabtab.log(["subscribe"],tabtabData);
            </script>
        </onentry>
      </final>
    </state>
    <state id="command_subscri">
      <transition target="command_subscrib" event="b"/>
      <state id="command_subscri_initial">
        <transition target="command_subscri_done" event="tabtab"/>
      </state>
      <final id="command_subscri_done">
        <onentry>
          <script>
              tabtab.log(["subscribe"],tabtabData);
            </script>
        </onentry>
      </final>
    </state>
    <state id="command_subscrib">
      <transition target="command_subscribe" event="e"/>
      <state id="command_subscrib_initial">
        <transition target="command_subscrib_done" event="tabtab"/>
      </state>
      <final id="command_subscrib_done">
        <onentry>
          <script>
              tabtab.log(["subscribe"],tabtabData);
            </script>
        </onentry>
      </final>
    </state>
    <state id="command_subscribe">
      <state id="command_subscribe_initial">
        <transition target="command_subscribe_done" event="tabtab"/>
        <state id="command_subscribe_options_or_arguments">
          <state id="command_subscribe_arguments">
            <transition event="-" target="command_subscribe_short_options_trie"/>
          </state>
          <state id="command_subscribe_short_options_trie">
            <transition event="-" target="command_subscribe_long_options_trie"/>
          </state>
          <state id="command_subscribe_long_options_trie">
            <state id="option_subscribe_initial">
              <transition target="option_subscribe_h" event="h"/>
              <state id="option_subscribe_initial_initial">
                <transition target="option_subscribe_initial_done" event="tabtab"/>
              </state>
              <final id="option_subscribe_initial_done">
                <onentry>
                  <script>
                          tabtab.log(["host"],tabtabData);
                        </script>
                </onentry>
              </final>
            </state>
            <state id="option_subscribe_h">
              <transition target="option_subscribe_ho" event="o"/>
              <state id="option_subscribe_h_initial">
                <transition target="option_subscribe_h_done" event="tabtab"/>
              </state>
              <final id="option_subscribe_h_done">
                <onentry>
                  <script>
                          tabtab.log(["host"],tabtabData);
                        </script>
                </onentry>
              </final>
            </state>
            <state id="option_subscribe_ho">
              <transition target="option_subscribe_hos" event="s"/>
              <state id="option_subscribe_ho_initial">
                <transition target="option_subscribe_ho_done" event="tabtab"/>
              </state>
              <final id="option_subscribe_ho_done">
                <onentry>
                  <script>
                          tabtab.log(["host"],tabtabData);
                        </script>
                </onentry>
              </final>
            </state>
            <state id="option_subscribe_hos">
              <transition target="option_subscribe_host" event="t"/>
              <state id="option_subscribe_hos_initial">
                <transition target="option_subscribe_hos_done" event="tabtab"/>
              </state>
              <final id="option_subscribe_hos_done">
                <onentry>
                  <script>
                          tabtab.log(["host"],tabtabData);
                        </script>
                </onentry>
              </final>
            </state>
            <state id="option_subscribe_host">
              <state id="option_subscribe_host_initial">
                <transition target="option_subscribe_host_done" event="tabtab"/>
              </state>
              <final id="option_subscribe_host_done">
                <onentry>
                  <script>
                          tabtab.log(["host"],tabtabData);
                        </script>
                </onentry>
              </final>
            </state>
          </state>
        </state>
      </state>
      <final id="command_subscribe_done">
        <onentry>
          <script>
              tabtab.log(["subscribe"],tabtabData);
            </script>
        </onentry>
      </final>
    </state>
    <state id="command_v">
      <transition target="command_vi" event="i"/>
      <state id="command_v_initial">
        <transition target="command_v_done" event="tabtab"/>
      </state>
      <final id="command_v_done">
        <onentry>
          <script>
              tabtab.log(["viz"],tabtabData);
            </script>
        </onentry>
      </final>
    </state>
    <state id="command_vi">
      <transition target="command_viz" event="z"/>
      <state id="command_vi_initial">
        <transition target="command_vi_done" event="tabtab"/>
      </state>
      <final id="command_vi_done">
        <onentry>
          <script>
              tabtab.log(["viz"],tabtabData);
            </script>
        </onentry>
      </final>
    </state>
    <state id="command_viz">
      <state id="command_viz_initial">
        <transition target="command_viz_done" event="tabtab"/>
        <state id="command_viz_options_or_arguments">
          <state id="command_viz_arguments">
            <transition event="-" target="command_viz_short_options_trie"/>
          </state>
          <state id="command_viz_short_options_trie">
            <transition event="-" target="command_viz_long_options_trie"/>
          </state>
          <state id="command_viz_long_options_trie">
            <state id="option_viz_initial">
              <transition target="option_viz_h" event="h"/>
              <transition target="option_viz_b" event="b"/>
              <state id="option_viz_initial_initial">
                <transition target="option_viz_initial_done" event="tabtab"/>
              </state>
              <final id="option_viz_initial_done">
                <onentry>
                  <script>
                          tabtab.log(["host","browser"],tabtabData);
                        </script>
                </onentry>
              </final>
            </state>
            <state id="option_viz_h">
              <transition target="option_viz_ho" event="o"/>
              <state id="option_viz_h_initial">
                <transition target="option_viz_h_done" event="tabtab"/>
              </state>
              <final id="option_viz_h_done">
                <onentry>
                  <script>
                          tabtab.log(["host"],tabtabData);
                        </script>
                </onentry>
              </final>
            </state>
            <state id="option_viz_ho">
              <transition target="option_viz_hos" event="s"/>
              <state id="option_viz_ho_initial">
                <transition target="option_viz_ho_done" event="tabtab"/>
              </state>
              <final id="option_viz_ho_done">
                <onentry>
                  <script>
                          tabtab.log(["host"],tabtabData);
                        </script>
                </onentry>
              </final>
            </state>
            <state id="option_viz_hos">
              <transition target="option_viz_host" event="t"/>
              <state id="option_viz_hos_initial">
                <transition target="option_viz_hos_done" event="tabtab"/>
              </state>
              <final id="option_viz_hos_done">
                <onentry>
                  <script>
                          tabtab.log(["host"],tabtabData);
                        </script>
                </onentry>
              </final>
            </state>
            <state id="option_viz_host">
              <state id="option_viz_host_initial">
                <transition target="option_viz_host_done" event="tabtab"/>
              </state>
              <final id="option_viz_host_done">
                <onentry>
                  <script>
                          tabtab.log(["host"],tabtabData);
                        </script>
                </onentry>
              </final>
            </state>
            <state id="option_viz_b">
              <transition target="option_viz_br" event="r"/>
              <state id="option_viz_b_initial">
                <transition target="option_viz_b_done" event="tabtab"/>
              </state>
              <final id="option_viz_b_done">
                <onentry>
                  <script>
                          tabtab.log(["browser"],tabtabData);
                        </script>
                </onentry>
              </final>
            </state>
            <state id="option_viz_br">
              <transition target="option_viz_bro" event="o"/>
              <state id="option_viz_br_initial">
                <transition target="option_viz_br_done" event="tabtab"/>
              </state>
              <final id="option_viz_br_done">
                <onentry>
                  <script>
                          tabtab.log(["browser"],tabtabData);
                        </script>
                </onentry>
              </final>
            </state>
            <state id="option_viz_bro">
              <transition target="option_viz_brow" event="w"/>
              <state id="option_viz_bro_initial">
                <transition target="option_viz_bro_done" event="tabtab"/>
              </state>
              <final id="option_viz_bro_done">
                <onentry>
                  <script>
                          tabtab.log(["browser"],tabtabData);
                        </script>
                </onentry>
              </final>
            </state>
            <state id="option_viz_brow">
              <transition target="option_viz_brows" event="s"/>
              <state id="option_viz_brow_initial">
                <transition target="option_viz_brow_done" event="tabtab"/>
              </state>
              <final id="option_viz_brow_done">
                <onentry>
                  <script>
                          tabtab.log(["browser"],tabtabData);
                        </script>
                </onentry>
              </final>
            </state>
            <state id="option_viz_brows">
              <transition target="option_viz_browse" event="e"/>
              <state id="option_viz_brows_initial">
                <transition target="option_viz_brows_done" event="tabtab"/>
              </state>
              <final id="option_viz_brows_done">
                <onentry>
                  <script>
                          tabtab.log(["browser"],tabtabData);
                        </script>
                </onentry>
              </final>
            </state>
            <state id="option_viz_browse">
              <transition target="option_viz_browser" event="r"/>
              <state id="option_viz_browse_initial">
                <transition target="option_viz_browse_done" event="tabtab"/>
              </state>
              <final id="option_viz_browse_done">
                <onentry>
                  <script>
                          tabtab.log(["browser"],tabtabData);
                        </script>
                </onentry>
              </final>
            </state>
            <state id="option_viz_browser">
              <state id="option_viz_browser_initial">
                <transition target="option_viz_browser_done" event="tabtab"/>
              </state>
              <final id="option_viz_browser_done">
                <onentry>
                  <script>
                          tabtab.log(["browser"],tabtabData);
                        </script>
                </onentry>
              </final>
            </state>
          </state>
        </state>
      </state>
      <final id="command_viz_done">
        <onentry>
          <script>
              tabtab.log(["viz"],tabtabData);
            </script>
        </onentry>
      </final>
    </state>
    <state id="command_lo">
      <transition target="command_log" event="g"/>
      <state id="command_lo_initial">
        <transition target="command_lo_done" event="tabtab"/>
      </state>
      <final id="command_lo_done">
        <onentry>
          <script>
              tabtab.log(["log"],tabtabData);
            </script>
        </onentry>
      </final>
    </state>
    <state id="command_log">
      <state id="command_log_initial">
        <transition target="command_log_done" event="tabtab"/>
        <state id="command_log_options_or_arguments">
          <state id="command_log_arguments">
            <transition event="-" target="command_log_short_options_trie"/>
          </state>
          <state id="command_log_short_options_trie">
            <transition event="-" target="command_log_long_options_trie"/>
          </state>
          <state id="command_log_long_options_trie">
            <state id="option_log_initial">
              <transition target="option_log_h" event="h"/>
              <state id="option_log_initial_initial">
                <transition target="option_log_initial_done" event="tabtab"/>
              </state>
              <final id="option_log_initial_done">
                <onentry>
                  <script>
                          tabtab.log(["host"],tabtabData);
                        </script>
                </onentry>
              </final>
            </state>
            <state id="option_log_h">
              <transition target="option_log_ho" event="o"/>
              <state id="option_log_h_initial">
                <transition target="option_log_h_done" event="tabtab"/>
              </state>
              <final id="option_log_h_done">
                <onentry>
                  <script>
                          tabtab.log(["host"],tabtabData);
                        </script>
                </onentry>
              </final>
            </state>
            <state id="option_log_ho">
              <transition target="option_log_hos" event="s"/>
              <state id="option_log_ho_initial">
                <transition target="option_log_ho_done" event="tabtab"/>
              </state>
              <final id="option_log_ho_done">
                <onentry>
                  <script>
                          tabtab.log(["host"],tabtabData);
                        </script>
                </onentry>
              </final>
            </state>
            <state id="option_log_hos">
              <transition target="option_log_host" event="t"/>
              <state id="option_log_hos_initial">
                <transition target="option_log_hos_done" event="tabtab"/>
              </state>
              <final id="option_log_hos_done">
                <onentry>
                  <script>
                          tabtab.log(["host"],tabtabData);
                        </script>
                </onentry>
              </final>
            </state>
            <state id="option_log_host">
              <state id="option_log_host_initial">
                <transition target="option_log_host_done" event="tabtab"/>
              </state>
              <final id="option_log_host_done">
                <onentry>
                  <script>
                          tabtab.log(["host"],tabtabData);
                        </script>
                </onentry>
              </final>
            </state>
          </state>
        </state>
      </state>
      <final id="command_log_done">
        <onentry>
          <script>
              tabtab.log(["log"],tabtabData);
            </script>
        </onentry>
      </final>
    </state>
    <state id="command_h">
      <transition target="command_he" event="e"/>
      <state id="command_h_initial">
        <transition target="command_h_done" event="tabtab"/>
      </state>
      <final id="command_h_done">
        <onentry>
          <script>
              tabtab.log(["help"],tabtabData);
            </script>
        </onentry>
      </final>
    </state>
    <state id="command_he">
      <transition target="command_hel" event="l"/>
      <state id="command_he_initial">
        <transition target="command_he_done" event="tabtab"/>
      </state>
      <final id="command_he_done">
        <onentry>
          <script>
              tabtab.log(["help"],tabtabData);
            </script>
        </onentry>
      </final>
    </state>
    <state id="command_hel">
      <transition target="command_help" event="p"/>
      <state id="command_hel_initial">
        <transition target="command_hel_done" event="tabtab"/>
      </state>
      <final id="command_hel_done">
        <onentry>
          <script>
              tabtab.log(["help"],tabtabData);
            </script>
        </onentry>
      </final>
    </state>
    <state id="command_help">
      <state id="command_help_initial">
        <transition target="command_help_done" event="tabtab"/>
        <state id="command_help_options_or_arguments">
          <state id="command_help_arguments">
            <transition event="-" target="command_help_short_options_trie"/>
          </state>
          <state id="command_help_short_options_trie">
            <transition event="-" target="command_help_long_options_trie"/>
          </state>
          <state id="command_help_long_options_trie">
            <state id="option_help_initial">
              <state id="option_help_initial_initial">
                <transition target="option_help_initial_done" event="tabtab"/>
              </state>
              <final id="option_help_initial_done">
                <onentry>
                  <script>
                          tabtab.log([],tabtabData);
                        </script>
                </onentry>
              </final>
            </state>
          </state>
        </state>
      </state>
      <final id="command_help_done">
        <onentry>
          <script>
              tabtab.log(["help"],tabtabData);
            </script>
        </onentry>
      </final>
    </state>
  </state>
  <state id="done"/>
  <state id="parser_error"/>
</scxml>

This produces a very large statechart which exceeds the boundaries of the canvas region that can be dragged.