Got fed up with the given interfaces and made my own HFSM class in a separate package.
Renamed an interface to specify that it's an HFSM instead of just an FSM.
For some reason I had to do this in a separate commit.