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