StateMachine(initialState: S, vararg transitionRules: TransitionDef<S, out T>)
StateMachine(initialState: S, transitions: List<TransitionDef<S, out T>>)