- implemented:
    abstract syntax
    - and/or states
    - pseudo-states
    - enter/exit trigger
    - shallow/deep history
    - transitions
        - event/after trigger
        - event parameters
        - guard expressions
    - action language
        expressions:
            - arithmetic, logic
            - variable references
            - function calls
        actions:
            - variable assignment
            - raising output events
    semantics
    - initialization
    - raising input events
    - time:
        - paused / step-wise
        - (scaled) real time
    - omniscient debugging
    - coupled execution with "plant"
    - MTL properties & checking of plant state
    - recording and replaying traces


TODO

- bugs
    editing SC <-> Plant connections at runtime doesn't seem to work

- maybe support:
    - explicit order of:
        - outgoing transitions?

- usability stuff:
    - action language: add increment operations (++) and (--)
       and (+=) and (-=)

    - snap:
            comments only to states
            triggers only to transitions
            entry/exit only to states

    - ability to hide statechart and only show the plant?
    - hovering over event in side panel should highlight all occurrences of the event in the SC
    - hovering over error in bottom panel should highlight that rror in the SC
    - highlight selected shapes while making a selection
    - highlight about-to-fire transitions
    - integrate undo-history with browser history (back/forward buttons)

- performance:
    maybe try this for rendering the execution trace:
        https://legacy.reactjs.org/docs/optimizing-performance.html#virtualize-long-lists

- experimental features:
    - multiverse execution history
        stable tree layout?
            https://pub.dev/packages/ploeg_tree_layout
    - local variable scopes

for the assignment:
    *ALL* features
        add history (look at original Harel paper)
    add microwave oven
    add traffic light

Publish StateBuddy paper(s):
    compare CS approach to other tools, not only YAKINDU
