anchor.diff:      return namer.nameForOneShotInterceptor(selector, classes);
     }
   
  -  void registerSpecializedGetInterceptor(Set<ClassEntity> classes) {
  +  void registerSpecializedGetInterceptor(Iterable<ClassEntity> classes) {
       if (classes.contains(_commonElements.jsInterceptorClass)) {
         // We can't use a specialized [getInterceptorMethod], so we make
         // sure we emit the one with all checks.
  
positive.code:   @override
    Set<ClassEntity> getInterceptedClassesOn(
        String name, JClosedWorld closedWorld) {
      Set<MemberEntity> intercepted = interceptedMembers[name];
      if (intercepted == null) return _noClasses;
      return _interceptedClassesCache.putIfAbsent(name, () {
        // Populate the cache by running through all the elements and
        // determine if the given selector applies to them.
        Set<ClassEntity> result = {};
        for (MemberEntity element in intercepted) {
          ClassEntity classElement = element.enclosingClass;
          if (_isCompileTimeOnlyClass(classElement)) continue;
          if (_nativeData.isNativeOrExtendsNative(classElement) ||
              interceptedClasses.contains(classElement)) {
            result.add(classElement);
          }
          if (classesMixedIntoInterceptedClasses.contains(classElement)) {
            Set<ClassEntity> nativeSubclasses =
                nativeSubclassesOfMixin(classElement, closedWorld);
            if (nativeSubclasses != null) result.addAll(nativeSubclasses);
          }
  
negative.code: 
      if (!closedWorld.dartTypes.treatAsRawType(type)) return false;
      if (type is FutureOrType) return false;
      final interfaceType = type as InterfaceType;
      ClassEntity classElement = interfaceType.element;
      if (isInterceptedClass(classElement)) return false;
      return closedWorld.classHierarchy.hasOnlySubclasses(classElement);
  