anchor.diff:          // TODO(ngeoffray): Move the bound closure class in the
           // backend.
           enqueueClass(enqueuer, compiler.boundClosureClass, elements);
  +      } else if (Elements.isNativeOrExtendsNative(cls)) {
  +        enqueue(enqueuer, getNativeInterceptorMethod, elements);
  +        enqueueClass(enqueuer, jsInterceptorClass, compiler.globalDependencies);
  +        enqueueClass(enqueuer, jsPlainJavaScriptObjectClass, elements);
         }
       }
       ClassElement result = null;
  
positive.code:   HType nullType = const HBoundedType(const TypeMask.empty());
    HType emptyType = const HBoundedType(const TypeMask.nonNullEmpty());
  
    // TODO(9577): Make it so that these are not needed when there are no native
    // classes.
    Element dispatchPropertyName;
    Element getNativeInterceptorMethod;
    bool needToInitializeDispatchProperty = false;
  
    bool seenAnyClass = false;
  
    final Namer namer;
  
  
negative.code:                                  TreeElements elements) {
      if (!cls.typeVariables.isEmpty) {
        typeVariableHandler.registerClassWithTypeVariables(cls);
      }
  
      // Register any helper that will be needed by the backend.
  