Class NonBlockingFiniteStateMachine<S extends Enum<S>>