public StateTransition(byte state, TransitionBody body)
 {
     State = state;
     Body  = s => Expression.Block(
         body(s),
         Expression.Empty());
 }
 public StateTransition(byte currentState, byte nextState, TransitionBody body)
 {
     State = currentState;
     Body  = state => Expression.Block(
         body(state),
         Expression.Assign(state, Expression.Constant(nextState)),
         Expression.Empty());
 }