this abstract class is the base class for
implementing automaton abstraction
automaton state behaviour is expressed
in public method and the become method
allows to move computation from state to state
method representing state must be public
(to allow correct behaviour of reflection)