anchor.diff:      ExecutionStatus status = statement.accept(statementEvaluator);
       if (status is ReturnStatus) {
         return status.value;
  +    } else if (status is AbortStatus) {
  +      return status.error;
       }
       return createInvalidExpressionConstant(statement,
           'No valid constant returned from the execution of $statement.');
  
positive.code:   @override
    ExecutionStatus visitIfStatement(IfStatement node) {
      Constant condition = evaluate(node.condition);
      if (condition is AbortConstant) return new ReturnStatus(condition);
      if (condition is BoolConstant) {
        if (condition.value) {
          return node.then.accept(this);
  
negative.code:   ReturnStatus(this.value);
  }
  
  /// Status with an exception or error that the statement has thrown.
  class AbortStatus extends ExecutionStatus {
    final AbortConstant error;
    AbortStatus(this.error);
  }
  
  /// An intermediate result that is used within the [ConstantEvaluator].
  class IntermediateValue implements Constant {
    dynamic value;
  