anchor.diff:      }
     }
   
  -  processLink(Map<String, Link<Element>> map,
  -              String memberName,
  -              bool f(Element e)) {
  -    Link<Element> members = map[memberName];
  -    if (members != null) {
  -      // [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] = const Link<Element>();
  -      LinkBuilder<Element> remaining = new LinkBuilder<Element>();
  -      for (; !members.isEmpty; members = members.tail) {
  -        if (!f(members.head)) remaining.addLast(members.head);
  -      }
  -      map[memberName] = remaining.toLink(map[memberName]);
  -    }
  +  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)) {
  -    processLink(instanceMembersByName, n, f);
  +    processSet(instanceMembersByName, n, f);
     }
   
     processInstanceFunctions(String n, bool f(Element e)) {
  -    processLink(instanceFunctionsByName, n, f);
  +    processSet(instanceFunctionsByName, n, f);
     }
   
     void handleUnseenSelector(String methodName, Selector selector) {
  
positive.code: 
      // 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);
    }
  
    void enableNoSuchMethod(Element element) {}
  
negative.code:       }
        // Store the member in [instanceFunctionsByName] to catch
        // getters on the function.
        instanceFunctionsByName.putIfAbsent(memberName, () => new Set<Element>())
            .add(member);
        if (universe.hasInvocation(function, compiler.world)) {
          addToWorkList(function);
          return;
  