http://wickedsource.org/2013/11/19/state-machine-with-java/
http://thombergs.github.io/diffparser/
http://doc.akka.io/docs/akka/2.1.4/java/fsm.html
State(S) x Event(E) -> Actions (A), State(S')
These relations are interpreted as meaning:
If we are in state S and the event E occurs, we should perform the actions A and make a transition to the state S'.
http://www.java2s.com/Code/Java/Collections-Data-Structure/AprogrammableFiniteStateMachineimplementation.htm
http://mindprod.com/jgloss/finitestate.html