anchor.diff:          transformAnnotations(node.annotations, node);
           if (node.initializer != null) {
             node.initializer =
  -              tryEvaluateAndTransformWithContext(node, node.initializer)
  +              evaluateAndTransformWithContext(node, node.initializer)
                   ..parent = node;
           }
         } else {
  
positive.code:       transformAnnotations(variable.annotations, variable);
        if (variable.initializer != null) {
          variable.initializer =
              tryEvaluateAndTransformWithContext(variable, variable.initializer)
                ..parent = variable;
        }
      }
  
negative.code:     Constant constant = node.constant;
      if (constant is UnevaluatedConstant) {
        Expression expression = constant.expression;
        return evaluateAndTransformWithContext(expression, expression);
      } else {
        node.constant = constantEvaluator.canonicalize(constant);
        return node;
      }
    }
  
    evaluateAndTransformWithContext(TreeNode treeContext, Expression node) {
      return makeConstantExpression(evaluateWithContext(treeContext, node));
    }
  
    evaluateWithContext(TreeNode treeContext, Expression node) {
      if (treeContext == node) {
        return constantEvaluator.evaluate(node);
      }
  