anchor.diff:        selector = (receiverType == types.dynamicType)
             ? selector.asUntyped
             : types.newTypedSelector(receiverType, selector);
  -      updateSelectorInTree(node, selector);
  +      inferrer.updateSelectorInTree(analyzedElement, node, selector);
       }
   
       // If the receiver of the call is a local, we may know more about
  
positive.code:     } else {
        return returnTypeOfElement(element);
      }
    }
  }
  
  
negative.code:       // We only set the type once. We don't need to re-visit the children
        // when re-analyzing the node.
        return inferrer.concreteTypes.putIfAbsent(node, () {
          T elementType;
          int length = 0;
          for (Node element in node.elements.nodes) {
            T type = visit(element);
            elementType = elementType == null
                ? types.allocatePhi(null, null, type)
                : types.addPhiInput(null, elementType, type);
            length++;
          }
          return types.allocateContainer(
              types.constListType,
              node,
              outermostElement,
              types.simplifyPhi(null, null, elementType),
              length);
        });
      } else {
  