anchor.diff:      super.visitMethodInvocation(node);
   
       Member target = node.interfaceTarget;
  -    if ((target != null) &&
  -        isMethod(target) &&
  -        !_objectMemberNames.contains(target.name)) {
  +    if ((target != null) && isMethod(target)) {
         DirectCallMetadata directCall = getDirectCall(node, target);
         // TODO(dartbug.com/30480): Convert _isLegalTargetForMethodInvocation()
         // check into an assertion once front-end implements override checks.
         if ((directCall != null) &&
             isMethod(directCall.target) &&
  -          isLegalTargetForMethodInvocation(directCall.target, node.arguments)) {
  +          isLegalTargetForMethodInvocation(directCall.target, node.arguments) &&
  +          !hasExtraTargetForNull(directCall)) {
           makeDirectCall(node, target, directCall);
         }
       }
  
positive.code:     super.visitPropertyGet(node);
  
      Member target = node.interfaceTarget;
      if ((target != null) &&
          isFieldOrGetter(target) &&
          !_objectMemberNames.contains(target.name)) {
        DirectCallMetadata directCall = getDirectCall(node, target);
        if ((directCall != null) && isFieldOrGetter(directCall.target)) {
          makeDirectCall(node, target, directCall);
        }
      }
  
negative.code:     return true;
    }
  
    bool hasExtraTargetForNull(DirectCallMetadata directCall) =>
        directCall.checkReceiverForNull &&
        _objectMemberNames.contains(directCall.target.name);
  
    DirectCallMetadata getDirectCall(TreeNode node, Member target,
        {bool setter = false});
  
  