Basic Finite-state machine functionality
Pre-release
Pre-release
Finite-state machine allows you to create an object, containing different states and transitions between them,
that can change its behaviour according to the current state.