protected override void ExecuteStatement(ExecutionContext context)
{
var resultType = ConditionExpression.ReturnType(context.Request, null);
if (!(resultType is BooleanType))
throw new StatementException("The condition expression does not evaluate to a boolean.");
// The condition statement triggers the creation of a new context
var block = context.NewBlock(this);
var conditionResult = ConditionExpression.EvaluateToConstant(context.Request, null);
if (conditionResult) {
foreach (var statement in TrueStatements) {
statement.Execute(block);
if (block.HasTermination)
break;
}
} else if (FalseStatements != null) {
foreach (var statement in FalseStatements) {
statement.Execute(block);
if (block.HasTermination)
break;
}
}
}