protected override InterpreterInstructionBase SetResult(Interpreter.Evaluator.EvaluatorResult result)
 {
     Result = result;
     // if false, jump to alternative
     if (result.Result == Interpreter.Evaluator.EvaluationResultValues.False)
     {
         return(Alternative);
     }
     // if fail, jump to just after the endif / end loop
     if (result.Result == Interpreter.Evaluator.EvaluationResultValues.Failed)
     {
         if (Alternative.Instruction == "%EndIf" || Alternative.Instruction == "%/Loop")
         {
             return(Alternative);
         }
         else
         {
             // there is an else, but neither clause must be executed now
             return(EndBranch);
         }
     }
     // if ok, jump to next
     return(Next);
 }
 protected override InterpreterInstructionBase SetResult(Interpreter.Evaluator.EvaluatorResult result)
 {
     Result = result;
     return(Next);
 }