anchor.diff:  }
   
   class StaticInteropMockCreator extends Transformer {
  +  final Procedure _allowInterop;
  +  final Procedure _callMethod;
  +  final Procedure _createStaticInteropMock;
  +  final DiagnosticReporter<Message, LocatedMessage> _diagnosticReporter;
     late final _ExtensionVisitor _extensionVisitor;
  +  final InterfaceType _functionType;
  +  final Procedure _getProperty;
  +  final Procedure _globalThis;
  +  final InterfaceType _objectType;
  +  final Procedure _setProperty;
     final Map<Reference, Extension> _staticInteropClassesWithExtensions = {};
     final TypeEnvironment _typeEnvironment;
  -  final DiagnosticReporter<Message, LocatedMessage> _diagnosticReporter;
  -  final Procedure _createStaticInteropMock;
   
     StaticInteropMockCreator(this._typeEnvironment, this._diagnosticReporter)
  -      : _createStaticInteropMock = _typeEnvironment.coreTypes.index
  -            .getTopLevelProcedure('dart:js_util', 'createStaticInteropMock') {
  +      : _allowInterop = _typeEnvironment.coreTypes.index
  +            .getTopLevelProcedure('dart:js', 'allowInterop'),
  +        _callMethod = _typeEnvironment.coreTypes.index
  +            .getTopLevelProcedure('dart:js_util', 'callMethod'),
  +        _createStaticInteropMock = _typeEnvironment.coreTypes.index
  +            .getTopLevelProcedure('dart:js_util', 'createStaticInteropMock'),
  +        _functionType = _typeEnvironment.coreTypes.functionNonNullableRawType,
  +        _getProperty = _typeEnvironment.coreTypes.index
  +            .getTopLevelProcedure('dart:js_util', 'getProperty'),
  +        _globalThis = _typeEnvironment.coreTypes.index
  +            .getTopLevelProcedure('dart:js_util', 'get:globalThis'),
  +        _objectType = _typeEnvironment.coreTypes.objectNonNullableRawType,
  +        _setProperty = _typeEnvironment.coreTypes.index
  +            .getTopLevelProcedure('dart:js_util', 'setProperty') {
       _extensionVisitor = _ExtensionVisitor(_staticInteropClassesWithExtensions);
     }
   
  
positive.code:       Map<ExtensionMemberDescriptor, Class> descriptorToClass,
        Map<Reference, Extension> staticInteropClassesWithExtensions,
        TypeEnvironment typeEnvironment) {
      assert(hasStaticInteropAnnotation(this));
      var classes = <Class>{};
      // Compute a map of all the possible descriptors available in this type and
      // the supertypes.
  
negative.code:     var dartType = typeArguments[1];
      var typeArgumentsError = false;
      if (staticInteropType is! InterfaceType ||
          staticInteropType.declaredNullability != Nullability.nonNullable ||
          !js_interop.hasStaticInteropAnnotation(staticInteropType.classNode)) {
        _diagnosticReporter.report(
            templateJsInteropStaticInteropMockNotStaticInteropType.withArguments(
                staticInteropType, true),
  