anchor.diff:    }
   }
   
  -class ConstantEvaluator extends RecursiveResultVisitor<Constant> {
  +class ConstantEvaluator extends ExpressionVisitor<Constant> {
     final ConstantsBackend backend;
     final NumberSemantics numberSemantics;
     ConstantIntFolder intFolder;
  
positive.code:   }
  
    @override
    Constant defaultTreeNode(Node node) {
      // Only a subset of the expression language is valid for constant
      // evaluation.
      return createInvalidExpressionConstant(
  
negative.code:         if (value is AbortConstant) return value;
          env.addVariableValue(parameter, value);
        }
        Statement body = function.body;
        if (body is ReturnStatement) {
          if (!enableConstFunctions) {
            return createInvalidExpressionConstant(
                node, "Return statements are not supported.");
          }
          return body.expression.accept(this);
        } else {
          return createInvalidExpressionConstant(
              node, "Unsupported statement: ${body.runtimeType}.");
        }
      });
    }
  
    @override
  