anchor.diff:    visitStaticGet(StaticGet node) {
       final Member target = node.target;
       if (target is Field && target.isConst) {
  -      final Constant constant =
  -          tryEvaluateWithContext(node, target.initializer);
  -      return constant != null ? makeConstantExpression(constant) : node;
  +      return evaluateAndTransformWithContext(node, target.initializer);
       } else if (target is Procedure && target.kind == ProcedureKind.Method) {
  -      return tryEvaluateAndTransformWithContext(node, node);
  +      return evaluateAndTransformWithContext(node, node);
       }
       return super.visitStaticGet(node);
     }
  
positive.code:     Constant constant = node.constant;
      if (constant is UnevaluatedConstant) {
        Expression expression = constant.expression;
        return tryEvaluateAndTransformWithContext(expression, expression);
      } else {
        node.constant = constantEvaluator.canonicalize(constant);
        return node;
      }
    }
  
    tryEvaluateAndTransformWithContext(TreeNode treeContext, Expression node) {
      final Constant constant = tryEvaluateWithContext(treeContext, node);
      return constant != null ? makeConstantExpression(constant) : node;
    }
  
    tryEvaluateWithContext(TreeNode treeContext, Expression node) {
      if (treeContext == node) {
        return constantEvaluator.evaluate(node);
      }
  
negative.code:       transformAnnotations(variable.annotations, variable);
        if (variable.initializer != null) {
          variable.initializer =
              evaluateAndTransformWithContext(variable, variable.initializer)
                ..parent = variable;
        }
      }
  