anchor.diff:    }
   
     visitAsExpression(AsExpression node) {
  -    final Constant constant = node.operand.accept(this);
  +    final Constant constant = _evaluateSubexpression(node.operand);
       ensureIsSubtype(constant, evaluateDartType(node, node.type), node);
       return constant;
     }
   
     visitNot(Not node) {
  -    final Constant constant = node.operand.accept(this);
  +    final Constant constant = _evaluateSubexpression(node.operand);
       if (constant is BoolConstant) {
         return constant == trueConstant ? falseConstant : trueConstant;
       }
  
positive.code:     final List<ConstantMapEntry> entries =
          new List<ConstantMapEntry>(node.entries.length);
      for (int i = 0; i < node.entries.length; ++i) {
        final key = node.entries[i].key.accept(this);
        final value = node.entries[i].value.accept(this);
        if (!usedKeys.add(key)) {
          // TODO(kustermann): We should change the context handling from just
          // capturing the `TreeNode`s to a `(TreeNode, String message)` tuple and
  
negative.code:                 evaluateNamedArguments(init.arguments));
            } else if (init is AssertInitializer) {
              if (enableAsserts) {
                final Constant condition =
                    _evaluateSubexpression(init.statement.condition);
  
                if (condition is BoolConstant) {
                  if (!condition.value) {
                    if (init.statement.message == null) {
                      throw new _AbortCurrentEvaluation(
                          errorReporter.failedAssertion(
                              contextChain, init.statement.condition, null));
                    }
                    final Constant message =
                        _evaluateSubexpression(init.statement.message);
                    if (message is StringConstant) {
                      throw new _AbortCurrentEvaluation(
                          errorReporter.failedAssertion(contextChain,
                              init.statement.condition, message.value));
  