StateMachineLibrary - library implementing the concept of a finit state machine
To use it, you need to implement the interface IStateMashineFactory
Interface IStateMashineFactory uses the methods BuildStateDictionary to build a state model (IState) and BuildTransitionDictionary to build a model of transitions between states (ITransition), as well as the BuildStartState method to specify the initial state of the automaton
After creating a finit state machine model, it has one public method Execute to transition to a new state
During the transition, it may fail with an error, in which case the transition will not be completed and the machine will remain in the previous state