anchor.diff:  
       // The element is not yet used. Add it to the list of instance
       // members to still be processed.
  -    Link<Element> members = instanceMembersByName.putIfAbsent(
  -        memberName, () => const Link<Element>());
  -    instanceMembersByName[memberName] = members.prepend(member);
  +    instanceMembersByName.putIfAbsent(memberName, () => new Set<Element>())
  +        .add(member);
     }
   
     void enableNoSuchMethod(Element element) {}
  
positive.code:       }
        // Store the member in [instanceFunctionsByName] to catch
        // getters on the function.
        Link<Element> members = instanceFunctionsByName.putIfAbsent(
            memberName, () => const Link<Element>());
        instanceFunctionsByName[memberName] = members.prepend(function);
        if (universe.hasInvocation(function, compiler.world)) {
          addToWorkList(function);
          return;
  
negative.code:     }
    }
  
    void processSet(
        Map<String, Set<Element>> map,
        String memberName,
        bool f(Element e)) {
      Set<Element> members = map[memberName];
      if (members == null) return;
      // [f] might add elements to [: map[memberName] :] during the loop below
      // so we create a new list for [: map[memberName] :] and prepend the
      // [remaining] members after the loop.
      map[memberName] = new Set<Element>();
      Set<Element> remaining = new Set<Element>();
      for (Element member in members) {
        if (!f(member)) remaining.add(member);
      }
      map[memberName].addAll(remaining);
    }
  
    processInstanceMembers(String n, bool f(Element e)) {
      processSet(instanceMembersByName, n, f);
    }
  
    processInstanceFunctions(String n, bool f(Element e)) {
      processSet(instanceFunctionsByName, n, f);
    }
  
    void handleUnseenSelector(String methodName, Selector selector) {
  