void EvalElseIf(MethodCallExpression exp, State state)
 {
     state.PopBlock();
     var prevCondition = state.Conditions.Pop();
     EvalExpression(exp.Arguments[0], state);
     var test = state.CurrentBlock.Formulas.Pop();
     var condition = FormulaRef.Condition(test);
     prevCondition.IfFalse = condition;
     state.Conditions.Push(condition);
     state.PushBlock();
     condition.IfTrue = state.CurrentBlock;
 }
 void EvalEndIf(MethodCallExpression exp, State state)
 {
     state.Conditions.Pop();
     state.PopBlock();
 }
 void EvalElse(MethodCallExpression exp, State state)
 {
     state.PopBlock();
     var prevCondition = state.Conditions.Pop();
     state.Conditions.Push(prevCondition);
     state.PushBlock();
     prevCondition.IfFalse = state.CurrentBlock;
 }