[ffigen] Block support (#333)

* WIP: Blocks

* Move ObjCBuiltInFunctions to its own file and its singleton to data.dart

* Block parsing

* Add a test

* More WIP on blocks

* WIP test

* Test is working (with a few hacks)

* Add pointer getter

* Default values for exceptional return

* Fix tests

* Fix analysis errors

* Update test expectations

* Merge cruft

* Merge
diff --git a/pkgs/ffigen/lib/src/code_generator.dart b/pkgs/ffigen/lib/src/code_generator.dart
index f599c7b..82b2ed6 100644
--- a/pkgs/ffigen/lib/src/code_generator.dart
+++ b/pkgs/ffigen/lib/src/code_generator.dart
@@ -16,6 +16,7 @@
 export 'code_generator/imports.dart';
 export 'code_generator/library.dart';
 export 'code_generator/native_type.dart';
+export 'code_generator/objc_block.dart';
 export 'code_generator/objc_built_in_functions.dart';
 export 'code_generator/objc_interface.dart';
 export 'code_generator/pointer.dart';
diff --git a/pkgs/ffigen/lib/src/code_generator/binding_string.dart b/pkgs/ffigen/lib/src/code_generator/binding_string.dart
index 84c4da8..decfd6f 100644
--- a/pkgs/ffigen/lib/src/code_generator/binding_string.dart
+++ b/pkgs/ffigen/lib/src/code_generator/binding_string.dart
@@ -24,4 +24,5 @@
   enumClass,
   typeDef,
   objcInterface,
+  objcBlock,
 }
diff --git a/pkgs/ffigen/lib/src/code_generator/compound.dart b/pkgs/ffigen/lib/src/code_generator/compound.dart
index 2656e04..ec994cd 100644
--- a/pkgs/ffigen/lib/src/code_generator/compound.dart
+++ b/pkgs/ffigen/lib/src/code_generator/compound.dart
@@ -43,12 +43,14 @@
     this.pack,
     String? dartDoc,
     List<Member>? members,
+    bool isInternal = false,
   })  : members = members ?? [],
         super(
           usr: usr,
           originalName: originalName,
           name: name,
           dartDoc: dartDoc,
+          isInternal: isInternal,
         );
 
   factory Compound.fromType({
diff --git a/pkgs/ffigen/lib/src/code_generator/enum_class.dart b/pkgs/ffigen/lib/src/code_generator/enum_class.dart
index 07b9eed..4e8ec3a 100644
--- a/pkgs/ffigen/lib/src/code_generator/enum_class.dart
+++ b/pkgs/ffigen/lib/src/code_generator/enum_class.dart
@@ -85,6 +85,9 @@
 
   @override
   String getDartType(Writer w) => nativeType.getDartType(w);
+
+  @override
+  String? getDefaultValue(Writer w, String nativeLib) => '0';
 }
 
 /// Represents a single value in an enum.
diff --git a/pkgs/ffigen/lib/src/code_generator/imports.dart b/pkgs/ffigen/lib/src/code_generator/imports.dart
index 1a51611..44e6f04 100644
--- a/pkgs/ffigen/lib/src/code_generator/imports.dart
+++ b/pkgs/ffigen/lib/src/code_generator/imports.dart
@@ -28,8 +28,10 @@
   final LibraryImport libraryImport;
   final String cType;
   final String dartType;
+  final String? defaultValue;
 
-  ImportedType(this.libraryImport, this.cType, this.dartType);
+  ImportedType(this.libraryImport, this.cType, this.dartType,
+      [this.defaultValue]);
 
   @override
   String getCType(Writer w) => '${libraryImport.prefix}.$cType';
@@ -39,6 +41,9 @@
 
   @override
   String toString() => '${libraryImport.name}.$cType';
+
+  @override
+  String? getDefaultValue(Writer w, String nativeLib) => defaultValue;
 }
 
 final ffiImport = LibraryImport('ffi', 'dart:ffi');
@@ -46,24 +51,25 @@
 
 final voidType = ImportedType(ffiImport, 'Void', 'void');
 
-final unsignedCharType = ImportedType(ffiPkgImport, 'UnsignedChar', 'int');
-final signedCharType = ImportedType(ffiPkgImport, 'SignedChar', 'int');
-final charType = ImportedType(ffiPkgImport, 'Char', 'int');
-final unsignedShortType = ImportedType(ffiPkgImport, 'UnsignedShort', 'int');
-final shortType = ImportedType(ffiPkgImport, 'Short', 'int');
-final unsignedIntType = ImportedType(ffiPkgImport, 'UnsignedInt', 'int');
-final intType = ImportedType(ffiPkgImport, 'Int', 'int');
-final unsignedLongType = ImportedType(ffiPkgImport, 'UnsignedLong', 'int');
-final longType = ImportedType(ffiPkgImport, 'Long', 'int');
+final unsignedCharType = ImportedType(ffiPkgImport, 'UnsignedChar', 'int', '0');
+final signedCharType = ImportedType(ffiPkgImport, 'SignedChar', 'int', '0');
+final charType = ImportedType(ffiPkgImport, 'Char', 'int', '0');
+final unsignedShortType =
+    ImportedType(ffiPkgImport, 'UnsignedShort', 'int', '0');
+final shortType = ImportedType(ffiPkgImport, 'Short', 'int', '0');
+final unsignedIntType = ImportedType(ffiPkgImport, 'UnsignedInt', 'int', '0');
+final intType = ImportedType(ffiPkgImport, 'Int', 'int', '0');
+final unsignedLongType = ImportedType(ffiPkgImport, 'UnsignedLong', 'int', '0');
+final longType = ImportedType(ffiPkgImport, 'Long', 'int', '0');
 final unsignedLongLongType =
-    ImportedType(ffiPkgImport, 'UnsignedLongLong', 'int');
-final longLongType = ImportedType(ffiPkgImport, 'LongLong', 'int');
+    ImportedType(ffiPkgImport, 'UnsignedLongLong', 'int', '0');
+final longLongType = ImportedType(ffiPkgImport, 'LongLong', 'int', '0');
 
-final floatType = ImportedType(ffiImport, 'Float', 'double');
-final doubleType = ImportedType(ffiImport, 'Double', 'double');
+final floatType = ImportedType(ffiImport, 'Float', 'double', '0');
+final doubleType = ImportedType(ffiImport, 'Double', 'double', '0');
 
-final sizeType = ImportedType(ffiPkgImport, 'Size', 'int');
-final wCharType = ImportedType(ffiPkgImport, 'WChar', 'int');
+final sizeType = ImportedType(ffiPkgImport, 'Size', 'int', '0');
+final wCharType = ImportedType(ffiPkgImport, 'WChar', 'int', '0');
 
 final objCObjectType = Struct(name: 'ObjCObject');
 final objCSelType = Struct(name: 'ObjCSel');
diff --git a/pkgs/ffigen/lib/src/code_generator/native_type.dart b/pkgs/ffigen/lib/src/code_generator/native_type.dart
index ea65169..e05d170 100644
--- a/pkgs/ffigen/lib/src/code_generator/native_type.dart
+++ b/pkgs/ffigen/lib/src/code_generator/native_type.dart
@@ -25,25 +25,26 @@
 /// Represents a primitive native type, such as float.
 class NativeType extends Type {
   static const _primitives = <SupportedNativeType, NativeType>{
-    SupportedNativeType.Void: NativeType._('Void', 'void'),
-    SupportedNativeType.Char: NativeType._('Uint8', 'int'),
-    SupportedNativeType.Int8: NativeType._('Int8', 'int'),
-    SupportedNativeType.Int16: NativeType._('Int16', 'int'),
-    SupportedNativeType.Int32: NativeType._('Int32', 'int'),
-    SupportedNativeType.Int64: NativeType._('Int64', 'int'),
-    SupportedNativeType.Uint8: NativeType._('Uint8', 'int'),
-    SupportedNativeType.Uint16: NativeType._('Uint16', 'int'),
-    SupportedNativeType.Uint32: NativeType._('Uint32', 'int'),
-    SupportedNativeType.Uint64: NativeType._('Uint64', 'int'),
-    SupportedNativeType.Float: NativeType._('Float', 'double'),
-    SupportedNativeType.Double: NativeType._('Double', 'double'),
-    SupportedNativeType.IntPtr: NativeType._('IntPtr', 'int'),
+    SupportedNativeType.Void: NativeType._('Void', 'void', null),
+    SupportedNativeType.Char: NativeType._('Uint8', 'int', '0'),
+    SupportedNativeType.Int8: NativeType._('Int8', 'int', '0'),
+    SupportedNativeType.Int16: NativeType._('Int16', 'int', '0'),
+    SupportedNativeType.Int32: NativeType._('Int32', 'int', '0'),
+    SupportedNativeType.Int64: NativeType._('Int64', 'int', '0'),
+    SupportedNativeType.Uint8: NativeType._('Uint8', 'int', '0'),
+    SupportedNativeType.Uint16: NativeType._('Uint16', 'int', '0'),
+    SupportedNativeType.Uint32: NativeType._('Uint32', 'int', '0'),
+    SupportedNativeType.Uint64: NativeType._('Uint64', 'int', '0'),
+    SupportedNativeType.Float: NativeType._('Float', 'double', '0'),
+    SupportedNativeType.Double: NativeType._('Double', 'double', '0'),
+    SupportedNativeType.IntPtr: NativeType._('IntPtr', 'int', '0'),
   };
 
   final String _cType;
   final String _dartType;
+  final String? _defaultValue;
 
-  const NativeType._(this._cType, this._dartType);
+  const NativeType._(this._cType, this._dartType, this._defaultValue);
 
   factory NativeType(SupportedNativeType type) => _primitives[type]!;
 
@@ -58,11 +59,14 @@
 
   @override
   String cacheKey() => _cType;
+
+  @override
+  String? getDefaultValue(Writer w, String nativeLib) => _defaultValue;
 }
 
 class BooleanType extends NativeType {
   // Booleans are treated as uint8.
-  const BooleanType._() : super._('Uint8', 'int');
+  const BooleanType._() : super._('Uint8', 'int', '0');
   static const _boolean = BooleanType._();
   factory BooleanType() => _boolean;
 
diff --git a/pkgs/ffigen/lib/src/code_generator/objc_block.dart b/pkgs/ffigen/lib/src/code_generator/objc_block.dart
new file mode 100644
index 0000000..04f4c0b
--- /dev/null
+++ b/pkgs/ffigen/lib/src/code_generator/objc_block.dart
@@ -0,0 +1,109 @@
+// Copyright (c) 2022, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+import 'package:ffigen/src/code_generator.dart';
+
+import 'binding_string.dart';
+import 'writer.dart';
+
+class ObjCBlock extends BindingType {
+  final Type returnType;
+  final List<Type> argTypes;
+  final ObjCBuiltInFunctions builtInFunctions;
+
+  ObjCBlock({
+    required String usr,
+    required String name,
+    required this.returnType,
+    required this.argTypes,
+    required this.builtInFunctions,
+  }) : super(
+          usr: usr,
+          originalName: name,
+          name: name,
+        );
+
+  @override
+  BindingString toBindingString(Writer w) {
+    final s = StringBuffer();
+
+    final params = <Parameter>[];
+    for (int i = 0; i < argTypes.length; ++i) {
+      params.add(Parameter(name: 'arg$i', type: argTypes[i]));
+    }
+
+    final isVoid = returnType == NativeType(SupportedNativeType.Void);
+    final blockPtr = PointerType(builtInFunctions.blockStruct);
+    final funcType = FunctionType(returnType: returnType, parameters: params);
+    final natFnType = NativeFunc(funcType);
+    final natFnPtr = PointerType(natFnType).getCType(w);
+    final funcPtrTrampoline =
+        w.topLevelUniqueNamer.makeUnique('_${name}_fnPtrTrampoline');
+    final trampFuncType = FunctionType(
+        returnType: returnType,
+        parameters: [Parameter(type: blockPtr, name: 'block'), ...params]);
+
+    // Write the function pointer based trampoline function.
+    s.write(returnType.getDartType(w));
+    s.write(' $funcPtrTrampoline(${blockPtr.getCType(w)} block');
+    for (int i = 0; i < params.length; ++i) {
+      s.write(', ${params[i].type.getDartType(w)} ${params[i].name}');
+    }
+    s.write(') {\n');
+    s.write('  ${isVoid ? '' : 'return '}block.ref.target.cast<'
+        '${natFnType.getDartType(w)}>().asFunction<'
+        '${funcType.getDartType(w)}>()(');
+    for (int i = 0; i < params.length; ++i) {
+      s.write('${i == 0 ? '' : ', '}${params[i].name}');
+    }
+    s.write(');\n');
+    s.write('}\n');
+
+    // Write the wrapper class.
+    s.write('class $name {\n');
+    s.write('  final ${blockPtr.getCType(w)} _impl;\n');
+    s.write('  final ${w.className} _lib;\n');
+    s.write('  $name._(this._impl, this._lib);\n');
+
+    // Constructor from a function pointer.
+    final defaultValue = returnType.getDefaultValue(w, '_lib');
+    final exceptionalReturn = defaultValue == null ? '' : ', $defaultValue';
+    s.write('\n');
+    s.write('  $name.fromFunctionPointer(this._lib, $natFnPtr ptr)');
+    s.write(' : _impl =  _lib.${builtInFunctions.newBlock.name}('
+        '${w.ffiLibraryPrefix}.Pointer.fromFunction<'
+        '${trampFuncType.getCType(w)}>($funcPtrTrampoline'
+        '$exceptionalReturn).cast(), ptr.cast());\n');
+
+    // Get the pointer to the underlying block.
+    s.write('  ${blockPtr.getCType(w)} get pointer => _impl;\n');
+
+    s.write('}\n');
+    return BindingString(
+        type: BindingStringType.objcBlock, string: s.toString());
+  }
+
+  @override
+  void addDependencies(Set<Binding> dependencies) {
+    if (dependencies.contains(this)) return;
+    dependencies.add(this);
+
+    returnType.addDependencies(dependencies);
+    for (final t in argTypes) {
+      t.addDependencies(dependencies);
+    }
+
+    builtInFunctions.newBlockDesc.addDependencies(dependencies);
+    builtInFunctions.blockDescSingleton.addDependencies(dependencies);
+    builtInFunctions.blockStruct.addDependencies(dependencies);
+    builtInFunctions.newBlock.addDependencies(dependencies);
+  }
+
+  @override
+  String getCType(Writer w) =>
+      PointerType(builtInFunctions.blockStruct).getCType(w);
+
+  @override
+  String toString() => '($returnType (^)(${argTypes.join(', ')}))';
+}
diff --git a/pkgs/ffigen/lib/src/code_generator/objc_built_in_functions.dart b/pkgs/ffigen/lib/src/code_generator/objc_built_in_functions.dart
index 3f0a647..7babb2b 100644
--- a/pkgs/ffigen/lib/src/code_generator/objc_built_in_functions.dart
+++ b/pkgs/ffigen/lib/src/code_generator/objc_built_in_functions.dart
@@ -77,6 +77,66 @@
         () => '${registerName.name}("$methodName")');
   }
 
+  // See https://clang.llvm.org/docs/Block-ABI-Apple.html
+  late final blockStruct = Struct(
+    name: '_ObjCBlock',
+    isInternal: true,
+    members: [
+      Member(name: 'isa', type: PointerType(voidType)),
+      Member(name: 'flags', type: intType),
+      Member(name: 'reserved', type: intType),
+      Member(name: 'invoke', type: PointerType(voidType)),
+      Member(name: 'descriptor', type: PointerType(blockDescStruct)),
+      Member(name: 'target', type: PointerType(voidType)),
+    ],
+  );
+  late final blockDescStruct = Struct(
+    name: '_ObjCBlockDesc',
+    isInternal: true,
+    members: [
+      Member(name: 'reserved', type: unsignedLongType),
+      Member(name: 'size', type: unsignedLongType),
+      Member(name: 'copy_helper', type: PointerType(voidType)),
+      Member(name: 'dispose_helper', type: PointerType(voidType)),
+      Member(name: 'signature', type: PointerType(charType)),
+    ],
+  );
+  late final newBlockDesc =
+      ObjCInternalFunction('_newBlockDesc', null, (Writer w, String name) {
+    final s = StringBuffer();
+    final blockType = blockStruct.getCType(w);
+    final descType = blockDescStruct.getCType(w);
+    final descPtr = PointerType(blockDescStruct).getCType(w);
+    s.write('\n$descPtr $name() {\n');
+    s.write('  final d = ${w.ffiPkgLibraryPrefix}.calloc.allocate<$descType>('
+        '${w.ffiLibraryPrefix}.sizeOf<$descType>());\n');
+    s.write('  d.ref.size = ${w.ffiLibraryPrefix}.sizeOf<$blockType>();\n');
+    s.write('  return d;\n');
+    s.write('}\n');
+    return s.toString();
+  });
+  late final blockDescSingleton = ObjCInternalGlobal(
+    PointerType(blockDescStruct),
+    '_objc_block_desc',
+    () => '${newBlockDesc.name}()',
+  );
+  late final newBlock =
+      ObjCInternalFunction('_newBlock', null, (Writer w, String name) {
+    final s = StringBuffer();
+    final blockType = blockStruct.getCType(w);
+    final blockPtr = PointerType(blockStruct).getCType(w);
+    final voidPtr = PointerType(voidType).getCType(w);
+    s.write('\n$blockPtr $name($voidPtr invoke, $voidPtr target) {\n');
+    s.write('  final b = ${w.ffiPkgLibraryPrefix}.calloc.allocate<$blockType>('
+        '${w.ffiLibraryPrefix}.sizeOf<$blockType>());\n');
+    s.write('  b.ref.invoke = invoke;\n');
+    s.write('  b.ref.target = target;\n');
+    s.write('  b.ref.descriptor = ${blockDescSingleton.name};\n');
+    s.write('  return b;\n');
+    s.write('}\n');
+    return s.toString();
+  });
+
   bool utilsExist = false;
   void ensureUtilsExist(Writer w, StringBuffer s) {
     if (utilsExist) return;
@@ -137,9 +197,10 @@
   }
 }
 
-/// Functions only used internally by ObjC bindings, such as getClass.
+/// Functions only used internally by ObjC bindings, which may or may not wrap a
+/// native function, such as getClass.
 class ObjCInternalFunction extends LookUpBinding {
-  final Func _wrappedFunction;
+  final Func? _wrappedFunction;
   final String Function(Writer, String) _toBindingString;
 
   ObjCInternalFunction(
@@ -157,7 +218,7 @@
   void addDependencies(Set<Binding> dependencies) {
     if (dependencies.contains(this)) return;
     dependencies.add(this);
-    _wrappedFunction.addDependencies(dependencies);
+    _wrappedFunction?.addDependencies(dependencies);
   }
 }
 
diff --git a/pkgs/ffigen/lib/src/code_generator/objc_interface.dart b/pkgs/ffigen/lib/src/code_generator/objc_interface.dart
index bddaec9..70fa7f2 100644
--- a/pkgs/ffigen/lib/src/code_generator/objc_interface.dart
+++ b/pkgs/ffigen/lib/src/code_generator/objc_interface.dart
@@ -308,11 +308,15 @@
   // passed to native as Pointer<ObjCObject>, but the user sees the Dart wrapper
   // class. These methods need to be kept in sync.
   bool _needsConverting(Type type) =>
-      type is ObjCInterface || _isObject(type) || _isInstanceType(type);
+      type is ObjCInterface ||
+      type is ObjCBlock ||
+      _isObject(type) ||
+      _isInstanceType(type);
 
   String _getConvertedType(Type type, Writer w, String enclosingClass) {
     if (type is BooleanType) return 'bool';
     if (type is ObjCInterface) return type.name;
+    if (type is ObjCBlock) return type.name;
     if (_isObject(type)) return 'NSObject';
     if (_isInstanceType(type)) return enclosingClass;
     return type.getDartType(w);
@@ -330,11 +334,13 @@
   String _doArgConversion(ObjCMethodParam arg) {
     if (arg.type is ObjCInterface ||
         _isObject(arg.type) ||
-        _isInstanceType(arg.type)) {
+        _isInstanceType(arg.type) ||
+        arg.type is ObjCBlock) {
+      final field = arg.type is ObjCBlock ? '_impl' : '_id';
       if (arg.isNullable) {
-        return '${arg.name}?._id ?? ffi.nullptr';
+        return '${arg.name}?.$field ?? ffi.nullptr';
       } else {
-        return '${arg.name}._id';
+        return '${arg.name}.$field';
       }
     }
     return arg.name;
@@ -349,6 +355,9 @@
     if (type is ObjCInterface) {
       return prefix + '${type.name}._($value, $library)';
     }
+    if (type is ObjCBlock) {
+      return prefix + '${type.name}._($value, $library)';
+    }
     if (_isObject(type)) {
       return prefix + 'NSObject._($value, $library)';
     }
diff --git a/pkgs/ffigen/lib/src/code_generator/struct.dart b/pkgs/ffigen/lib/src/code_generator/struct.dart
index f430d0f..c65e04b 100644
--- a/pkgs/ffigen/lib/src/code_generator/struct.dart
+++ b/pkgs/ffigen/lib/src/code_generator/struct.dart
@@ -37,6 +37,7 @@
     int? pack,
     String? dartDoc,
     List<Member>? members,
+    bool isInternal = false,
   }) : super(
           usr: usr,
           originalName: originalName,
@@ -46,5 +47,6 @@
           members: members,
           pack: pack,
           compoundType: CompoundType.struct,
+          isInternal: isInternal,
         );
 }
diff --git a/pkgs/ffigen/lib/src/code_generator/type.dart b/pkgs/ffigen/lib/src/code_generator/type.dart
index 0ad138f..8468eca 100644
--- a/pkgs/ffigen/lib/src/code_generator/type.dart
+++ b/pkgs/ffigen/lib/src/code_generator/type.dart
@@ -54,6 +54,11 @@
   /// specific key. Types that are already deduped don't need to override this.
   /// toString() is not a valid cache key as there may be name collisions.
   String cacheKey() => hashCode.toRadixString(36);
+
+  /// Returns a string of code that creates a default value for this type. For
+  /// example, for int types this returns the string '0'. A null return means
+  /// that default values aren't supported for this type, eg void.
+  String? getDefaultValue(Writer w, String nativeLib) => null;
 }
 
 /// Function to check if the dart and C type string are same.
@@ -70,11 +75,13 @@
     String? originalName,
     required String name,
     String? dartDoc,
+    bool isInternal = false,
   }) : super(
           usr: usr,
           originalName: originalName,
           name: name,
           dartDoc: dartDoc,
+          isInternal: isInternal,
         );
 
   @override
@@ -97,6 +104,9 @@
 
   @override
   String cacheKey() => hashCode.toRadixString(36);
+
+  @override
+  String? getDefaultValue(Writer w, String nativeLib) => null;
 }
 
 /// Represents an unimplemented type. Used as a marker, so that declarations
diff --git a/pkgs/ffigen/lib/src/code_generator/typealias.dart b/pkgs/ffigen/lib/src/code_generator/typealias.dart
index 9211ae8..f42e863 100644
--- a/pkgs/ffigen/lib/src/code_generator/typealias.dart
+++ b/pkgs/ffigen/lib/src/code_generator/typealias.dart
@@ -79,4 +79,8 @@
 
   @override
   String cacheKey() => type.cacheKey();
+
+  @override
+  String? getDefaultValue(Writer w, String nativeLib) =>
+      type.getDefaultValue(w, nativeLib);
 }
diff --git a/pkgs/ffigen/lib/src/header_parser/sub_parsers/objc_block_parser.dart b/pkgs/ffigen/lib/src/header_parser/sub_parsers/objc_block_parser.dart
new file mode 100644
index 0000000..83f8223
--- /dev/null
+++ b/pkgs/ffigen/lib/src/header_parser/sub_parsers/objc_block_parser.dart
@@ -0,0 +1,40 @@
+// Copyright (c) 2022, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+import 'package:ffigen/src/code_generator.dart';
+import 'package:ffigen/src/header_parser/data.dart';
+import 'package:logging/logging.dart';
+
+import '../clang_bindings/clang_bindings.dart' as clang_types;
+import '../utils.dart';
+
+final _logger = Logger('ffigen.header_parser.objc_block_parser');
+
+ObjCBlock parseObjCBlock(clang_types.CXType cxtype) {
+  final blk = clang.clang_getPointeeType(cxtype);
+  final returnType = clang.clang_getResultType(blk).toCodeGenType();
+  final argTypes = <Type>[];
+  final int numArgs = clang.clang_getNumArgTypes(blk);
+  for (int i = 0; i < numArgs; ++i) {
+    argTypes.add(clang.clang_getArgType(blk, i).toCodeGenType());
+  }
+
+  // Create a fake USR code for the block. This code is used to dedupe blocks
+  // with the same signature.
+  var usr = 'objcBlock: ' + returnType.cacheKey();
+  for (final type in argTypes) {
+    usr += ' ' + type.cacheKey();
+  }
+
+  _logger.fine('++++ Adding ObjC block: '
+      '${cxtype.completeStringRepr()}, syntheticUsr: $usr');
+
+  return ObjCBlock(
+    usr: usr.toString(),
+    name: 'ObjCBlock',
+    returnType: returnType,
+    argTypes: argTypes,
+    builtInFunctions: objCBuiltInFunctions,
+  );
+}
diff --git a/pkgs/ffigen/lib/src/header_parser/type_extractor/extractor.dart b/pkgs/ffigen/lib/src/header_parser/type_extractor/extractor.dart
index de2a599..1a69715 100644
--- a/pkgs/ffigen/lib/src/header_parser/type_extractor/extractor.dart
+++ b/pkgs/ffigen/lib/src/header_parser/type_extractor/extractor.dart
@@ -13,6 +13,7 @@
 import '../data.dart';
 import '../sub_parsers/compounddecl_parser.dart';
 import '../sub_parsers/enumdecl_parser.dart';
+import '../sub_parsers/objc_block_parser.dart';
 import '../sub_parsers/objcinterfacedecl_parser.dart';
 import '../type_extractor/cxtypekindmap.dart';
 import '../utils.dart';
@@ -44,13 +45,14 @@
   if (config.language == Language.objc) {
     switch (cxtype.kind) {
       case clang_types.CXTypeKind.CXType_ObjCObjectPointer:
-      case clang_types.CXTypeKind.CXType_BlockPointer:
       case clang_types.CXTypeKind.CXType_ObjCId:
       case clang_types.CXTypeKind.CXType_ObjCTypeParam:
       case clang_types.CXTypeKind.CXType_ObjCClass:
         return PointerType(objCObjectType);
       case clang_types.CXTypeKind.CXType_ObjCSel:
         return PointerType(objCSelType);
+      case clang_types.CXTypeKind.CXType_BlockPointer:
+        return _getOrCreateBlockType(cxtype);
     }
   }
 
@@ -129,6 +131,17 @@
   }
 }
 
+Type _getOrCreateBlockType(clang_types.CXType cxtype) {
+  final block = parseObjCBlock(cxtype);
+  final key = block.usr;
+  final oldBlock = bindingsIndex.getSeenObjCBlock(key);
+  if (oldBlock != null) {
+    return oldBlock;
+  }
+  bindingsIndex.addObjCBlockToSeen(key, block);
+  return block;
+}
+
 class _CreateTypeFromCursorResult {
   final Type? type;
 
diff --git a/pkgs/ffigen/lib/src/header_parser/utils.dart b/pkgs/ffigen/lib/src/header_parser/utils.dart
index 068b786..e8c60cf 100644
--- a/pkgs/ffigen/lib/src/header_parser/utils.dart
+++ b/pkgs/ffigen/lib/src/header_parser/utils.dart
@@ -355,6 +355,7 @@
   final Map<String, Constant> _unnamedEnumConstants = {};
   final Map<String, String> _macros = {};
   final Map<String, Global> _globals = {};
+  final Map<String, ObjCBlock> _objcBlocks = {};
 
   /// Contains usr for typedefs which cannot be generated.
   final Set<String> _unsupportedTypealiases = {};
@@ -388,4 +389,6 @@
   void addHeaderToSeen(String source, bool includeStatus) =>
       _headerCache[source] = includeStatus;
   bool? getSeenHeaderStatus(String source) => _headerCache[source];
+  void addObjCBlockToSeen(String key, ObjCBlock t) => _objcBlocks[key] = t;
+  ObjCBlock? getSeenObjCBlock(String key) => _objcBlocks[key];
 }
diff --git a/pkgs/ffigen/test/header_parser_tests/expected_bindings/_expected_objc_basic_types_bindings.dart b/pkgs/ffigen/test/header_parser_tests/expected_bindings/_expected_objc_basic_types_bindings.dart
index 5fa6fc7..b677511 100644
--- a/pkgs/ffigen/test/header_parser_tests/expected_bindings/_expected_objc_basic_types_bindings.dart
+++ b/pkgs/ffigen/test/header_parser_tests/expected_bindings/_expected_objc_basic_types_bindings.dart
@@ -486,6 +486,22 @@
       _registerName1("poseAsClass:");
   late final ffi.Pointer<ObjCSel> _sel_autoContentAccessingProxy1 =
       _registerName1("autoContentAccessingProxy");
+  ffi.Pointer<_ObjCBlockDesc> _newBlockDesc1() {
+    final d =
+        pkg_ffi.calloc.allocate<_ObjCBlockDesc>(ffi.sizeOf<_ObjCBlockDesc>());
+    d.ref.size = ffi.sizeOf<_ObjCBlock>();
+    return d;
+  }
+
+  late final ffi.Pointer<_ObjCBlockDesc> _objc_block_desc1 = _newBlockDesc1();
+  ffi.Pointer<_ObjCBlock> _newBlock1(
+      ffi.Pointer<ffi.Void> invoke, ffi.Pointer<ffi.Void> target) {
+    final b = pkg_ffi.calloc.allocate<_ObjCBlock>(ffi.sizeOf<_ObjCBlock>());
+    b.ref.invoke = invoke;
+    b.ref.target = target;
+    b.ref.descriptor = _objc_block_desc1;
+    return b;
+  }
 }
 
 class _ObjCWrapper {
@@ -791,5 +807,57 @@
 
   external ffi.Pointer<ObjCObject> clazz;
 
-  external ffi.Pointer<ObjCObject> blockThatReturnsAnInt;
+  external ffi.Pointer<_ObjCBlock> blockThatReturnsAnInt;
+}
+
+int _ObjCBlock_fnPtrTrampoline(ffi.Pointer<_ObjCBlock> block) {
+  return block.ref.target
+      .cast<ffi.NativeFunction<ffi.Int32 Function()>>()
+      .asFunction<int Function()>()();
+}
+
+class ObjCBlock {
+  final ffi.Pointer<_ObjCBlock> _impl;
+  final NativeLibrary _lib;
+  ObjCBlock._(this._impl, this._lib);
+
+  ObjCBlock.fromFunctionPointer(
+      this._lib, ffi.Pointer<ffi.NativeFunction<ffi.Int32 Function()>> ptr)
+      : _impl = _lib._newBlock1(
+            ffi.Pointer.fromFunction<
+                        ffi.Int32 Function(ffi.Pointer<_ObjCBlock> block)>(
+                    _ObjCBlock_fnPtrTrampoline, 0)
+                .cast(),
+            ptr.cast());
+  ffi.Pointer<_ObjCBlock> get pointer => _impl;
+}
+
+class _ObjCBlockDesc extends ffi.Struct {
+  @pkg_ffi.UnsignedLong()
+  external int reserved;
+
+  @pkg_ffi.UnsignedLong()
+  external int size;
+
+  external ffi.Pointer<ffi.Void> copy_helper;
+
+  external ffi.Pointer<ffi.Void> dispose_helper;
+
+  external ffi.Pointer<pkg_ffi.Char> signature;
+}
+
+class _ObjCBlock extends ffi.Struct {
+  external ffi.Pointer<ffi.Void> isa;
+
+  @pkg_ffi.Int()
+  external int flags;
+
+  @pkg_ffi.Int()
+  external int reserved;
+
+  external ffi.Pointer<ffi.Void> invoke;
+
+  external ffi.Pointer<_ObjCBlockDesc> descriptor;
+
+  external ffi.Pointer<ffi.Void> target;
 }
diff --git a/pkgs/ffigen/test/native_objc_test/block_bindings.dart b/pkgs/ffigen/test/native_objc_test/block_bindings.dart
new file mode 100644
index 0000000..8ae5e4b
--- /dev/null
+++ b/pkgs/ffigen/test/native_objc_test/block_bindings.dart
@@ -0,0 +1,1519 @@
+// ignore_for_file: camel_case_types, non_constant_identifier_names, unused_element, unused_field
+
+// AUTO GENERATED FILE, DO NOT EDIT.
+//
+// Generated by `package:ffigen`.
+import 'dart:ffi' as ffi;
+import 'package:ffi/ffi.dart' as pkg_ffi;
+
+/// Tests calling Objective-C blocks
+class BlockTestObjCLibrary {
+  /// Holds the symbol lookup function.
+  final ffi.Pointer<T> Function<T extends ffi.NativeType>(String symbolName)
+      _lookup;
+
+  /// The symbols are looked up in [dynamicLibrary].
+  BlockTestObjCLibrary(ffi.DynamicLibrary dynamicLibrary)
+      : _lookup = dynamicLibrary.lookup;
+
+  /// The symbols are looked up with [lookup].
+  BlockTestObjCLibrary.fromLookup(
+      ffi.Pointer<T> Function<T extends ffi.NativeType>(String symbolName)
+          lookup)
+      : _lookup = lookup;
+
+  late final ffi.Pointer<ffi.Double> _NSFoundationVersionNumber =
+      _lookup<ffi.Double>('NSFoundationVersionNumber');
+
+  double get NSFoundationVersionNumber => _NSFoundationVersionNumber.value;
+
+  set NSFoundationVersionNumber(double value) =>
+      _NSFoundationVersionNumber.value = value;
+
+  late final ffi.Pointer<NSInteger> _NSNotFound =
+      _lookup<NSInteger>('NSNotFound');
+
+  int get NSNotFound => _NSNotFound.value;
+
+  set NSNotFound(int value) => _NSNotFound.value = value;
+
+  late final ffi.Pointer<ffi.Double> _kCFCoreFoundationVersionNumber =
+      _lookup<ffi.Double>('kCFCoreFoundationVersionNumber');
+
+  double get kCFCoreFoundationVersionNumber =>
+      _kCFCoreFoundationVersionNumber.value;
+
+  set kCFCoreFoundationVersionNumber(double value) =>
+      _kCFCoreFoundationVersionNumber.value = value;
+
+  late final ffi.Pointer<CFIndex> _kCFNotFound =
+      _lookup<CFIndex>('kCFNotFound');
+
+  int get kCFNotFound => _kCFNotFound.value;
+
+  set kCFNotFound(int value) => _kCFNotFound.value = value;
+
+  late final ffi.Pointer<CFNullRef> _kCFNull = _lookup<CFNullRef>('kCFNull');
+
+  CFNullRef get kCFNull => _kCFNull.value;
+
+  set kCFNull(CFNullRef value) => _kCFNull.value = value;
+
+  late final ffi.Pointer<CFAllocatorRef> _kCFAllocatorDefault =
+      _lookup<CFAllocatorRef>('kCFAllocatorDefault');
+
+  CFAllocatorRef get kCFAllocatorDefault => _kCFAllocatorDefault.value;
+
+  set kCFAllocatorDefault(CFAllocatorRef value) =>
+      _kCFAllocatorDefault.value = value;
+
+  late final ffi.Pointer<CFAllocatorRef> _kCFAllocatorSystemDefault =
+      _lookup<CFAllocatorRef>('kCFAllocatorSystemDefault');
+
+  CFAllocatorRef get kCFAllocatorSystemDefault =>
+      _kCFAllocatorSystemDefault.value;
+
+  set kCFAllocatorSystemDefault(CFAllocatorRef value) =>
+      _kCFAllocatorSystemDefault.value = value;
+
+  late final ffi.Pointer<CFAllocatorRef> _kCFAllocatorMalloc =
+      _lookup<CFAllocatorRef>('kCFAllocatorMalloc');
+
+  CFAllocatorRef get kCFAllocatorMalloc => _kCFAllocatorMalloc.value;
+
+  set kCFAllocatorMalloc(CFAllocatorRef value) =>
+      _kCFAllocatorMalloc.value = value;
+
+  late final ffi.Pointer<CFAllocatorRef> _kCFAllocatorMallocZone =
+      _lookup<CFAllocatorRef>('kCFAllocatorMallocZone');
+
+  CFAllocatorRef get kCFAllocatorMallocZone => _kCFAllocatorMallocZone.value;
+
+  set kCFAllocatorMallocZone(CFAllocatorRef value) =>
+      _kCFAllocatorMallocZone.value = value;
+
+  late final ffi.Pointer<CFAllocatorRef> _kCFAllocatorNull =
+      _lookup<CFAllocatorRef>('kCFAllocatorNull');
+
+  CFAllocatorRef get kCFAllocatorNull => _kCFAllocatorNull.value;
+
+  set kCFAllocatorNull(CFAllocatorRef value) => _kCFAllocatorNull.value = value;
+
+  late final ffi.Pointer<CFAllocatorRef> _kCFAllocatorUseContext =
+      _lookup<CFAllocatorRef>('kCFAllocatorUseContext');
+
+  CFAllocatorRef get kCFAllocatorUseContext => _kCFAllocatorUseContext.value;
+
+  set kCFAllocatorUseContext(CFAllocatorRef value) =>
+      _kCFAllocatorUseContext.value = value;
+
+  ffi.Pointer<ObjCSel> _registerName1(String name) {
+    final cstr = name.toNativeUtf8();
+    final sel = _sel_registerName(cstr.cast());
+    pkg_ffi.calloc.free(cstr);
+    return sel;
+  }
+
+  ffi.Pointer<ObjCSel> _sel_registerName(
+    ffi.Pointer<pkg_ffi.Char> str,
+  ) {
+    return __sel_registerName(
+      str,
+    );
+  }
+
+  late final __sel_registerNamePtr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ObjCSel> Function(
+              ffi.Pointer<pkg_ffi.Char>)>>('sel_registerName');
+  late final __sel_registerName = __sel_registerNamePtr
+      .asFunction<ffi.Pointer<ObjCSel> Function(ffi.Pointer<pkg_ffi.Char>)>();
+
+  ffi.Pointer<ObjCObject> _getClass1(String name) {
+    final cstr = name.toNativeUtf8();
+    final clazz = _objc_getClass(cstr.cast());
+    pkg_ffi.calloc.free(cstr);
+    return clazz;
+  }
+
+  ffi.Pointer<ObjCObject> _objc_getClass(
+    ffi.Pointer<pkg_ffi.Char> str,
+  ) {
+    return __objc_getClass(
+      str,
+    );
+  }
+
+  late final __objc_getClassPtr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ObjCObject> Function(
+              ffi.Pointer<pkg_ffi.Char>)>>('objc_getClass');
+  late final __objc_getClass = __objc_getClassPtr.asFunction<
+      ffi.Pointer<ObjCObject> Function(ffi.Pointer<pkg_ffi.Char>)>();
+
+  late final ffi.Pointer<ObjCObject> _class_NSObject1 = _getClass1("NSObject");
+  late final ffi.Pointer<ObjCSel> _sel_load1 = _registerName1("load");
+  void _objc_msgSend_0(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+  ) {
+    return __objc_msgSend_0(
+      obj,
+      sel,
+    );
+  }
+
+  late final __objc_msgSend_0Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Void Function(
+              ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>>('objc_msgSend');
+  late final __objc_msgSend_0 = __objc_msgSend_0Ptr.asFunction<
+      void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>();
+
+  late final ffi.Pointer<ObjCSel> _sel_initialize1 =
+      _registerName1("initialize");
+  late final ffi.Pointer<ObjCSel> _sel_init1 = _registerName1("init");
+  instancetype _objc_msgSend_1(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+  ) {
+    return __objc_msgSend_1(
+      obj,
+      sel,
+    );
+  }
+
+  late final __objc_msgSend_1Ptr = _lookup<
+      ffi.NativeFunction<
+          instancetype Function(
+              ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>>('objc_msgSend');
+  late final __objc_msgSend_1 = __objc_msgSend_1Ptr.asFunction<
+      instancetype Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>();
+
+  late final ffi.Pointer<ObjCSel> _sel_new1 = _registerName1("new");
+  late final ffi.Pointer<ObjCSel> _sel_allocWithZone_1 =
+      _registerName1("allocWithZone:");
+  instancetype _objc_msgSend_2(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    ffi.Pointer<_NSZone> zone,
+  ) {
+    return __objc_msgSend_2(
+      obj,
+      sel,
+      zone,
+    );
+  }
+
+  late final __objc_msgSend_2Ptr = _lookup<
+      ffi.NativeFunction<
+          instancetype Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+              ffi.Pointer<_NSZone>)>>('objc_msgSend');
+  late final __objc_msgSend_2 = __objc_msgSend_2Ptr.asFunction<
+      instancetype Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+          ffi.Pointer<_NSZone>)>();
+
+  late final ffi.Pointer<ObjCSel> _sel_alloc1 = _registerName1("alloc");
+  late final ffi.Pointer<ObjCSel> _sel_dealloc1 = _registerName1("dealloc");
+  late final ffi.Pointer<ObjCSel> _sel_finalize1 = _registerName1("finalize");
+  late final ffi.Pointer<ObjCSel> _sel_copy1 = _registerName1("copy");
+  late final ffi.Pointer<ObjCSel> _sel_mutableCopy1 =
+      _registerName1("mutableCopy");
+  late final ffi.Pointer<ObjCSel> _sel_copyWithZone_1 =
+      _registerName1("copyWithZone:");
+  late final ffi.Pointer<ObjCSel> _sel_mutableCopyWithZone_1 =
+      _registerName1("mutableCopyWithZone:");
+  late final ffi.Pointer<ObjCSel> _sel_instancesRespondToSelector_1 =
+      _registerName1("instancesRespondToSelector:");
+  bool _objc_msgSend_3(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    ffi.Pointer<ObjCSel> aSelector,
+  ) {
+    return __objc_msgSend_3(
+          obj,
+          sel,
+          aSelector,
+        ) !=
+        0;
+  }
+
+  late final __objc_msgSend_3Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Uint8 Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+              ffi.Pointer<ObjCSel>)>>('objc_msgSend');
+  late final __objc_msgSend_3 = __objc_msgSend_3Ptr.asFunction<
+      int Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+          ffi.Pointer<ObjCSel>)>();
+
+  late final ffi.Pointer<ObjCSel> _sel_conformsToProtocol_1 =
+      _registerName1("conformsToProtocol:");
+  bool _objc_msgSend_4(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    ffi.Pointer<ObjCObject> protocol,
+  ) {
+    return __objc_msgSend_4(
+          obj,
+          sel,
+          protocol,
+        ) !=
+        0;
+  }
+
+  late final __objc_msgSend_4Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Uint8 Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+              ffi.Pointer<ObjCObject>)>>('objc_msgSend');
+  late final __objc_msgSend_4 = __objc_msgSend_4Ptr.asFunction<
+      int Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+          ffi.Pointer<ObjCObject>)>();
+
+  late final ffi.Pointer<ObjCSel> _sel_methodForSelector_1 =
+      _registerName1("methodForSelector:");
+  IMP _objc_msgSend_5(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    ffi.Pointer<ObjCSel> aSelector,
+  ) {
+    return __objc_msgSend_5(
+      obj,
+      sel,
+      aSelector,
+    );
+  }
+
+  late final __objc_msgSend_5Ptr = _lookup<
+      ffi.NativeFunction<
+          IMP Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+              ffi.Pointer<ObjCSel>)>>('objc_msgSend');
+  late final __objc_msgSend_5 = __objc_msgSend_5Ptr.asFunction<
+      IMP Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+          ffi.Pointer<ObjCSel>)>();
+
+  late final ffi.Pointer<ObjCSel> _sel_instanceMethodForSelector_1 =
+      _registerName1("instanceMethodForSelector:");
+  late final ffi.Pointer<ObjCSel> _sel_doesNotRecognizeSelector_1 =
+      _registerName1("doesNotRecognizeSelector:");
+  void _objc_msgSend_6(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    ffi.Pointer<ObjCSel> aSelector,
+  ) {
+    return __objc_msgSend_6(
+      obj,
+      sel,
+      aSelector,
+    );
+  }
+
+  late final __objc_msgSend_6Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+              ffi.Pointer<ObjCSel>)>>('objc_msgSend');
+  late final __objc_msgSend_6 = __objc_msgSend_6Ptr.asFunction<
+      void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+          ffi.Pointer<ObjCSel>)>();
+
+  late final ffi.Pointer<ObjCSel> _sel_forwardingTargetForSelector_1 =
+      _registerName1("forwardingTargetForSelector:");
+  ffi.Pointer<ObjCObject> _objc_msgSend_7(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    ffi.Pointer<ObjCSel> aSelector,
+  ) {
+    return __objc_msgSend_7(
+      obj,
+      sel,
+      aSelector,
+    );
+  }
+
+  late final __objc_msgSend_7Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
+              ffi.Pointer<ObjCSel>, ffi.Pointer<ObjCSel>)>>('objc_msgSend');
+  late final __objc_msgSend_7 = __objc_msgSend_7Ptr.asFunction<
+      ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
+          ffi.Pointer<ObjCSel>, ffi.Pointer<ObjCSel>)>();
+
+  late final ffi.Pointer<ObjCSel> _sel_forwardInvocation_1 =
+      _registerName1("forwardInvocation:");
+  void _objc_msgSend_8(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    ffi.Pointer<ObjCObject> anInvocation,
+  ) {
+    return __objc_msgSend_8(
+      obj,
+      sel,
+      anInvocation,
+    );
+  }
+
+  late final __objc_msgSend_8Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+              ffi.Pointer<ObjCObject>)>>('objc_msgSend');
+  late final __objc_msgSend_8 = __objc_msgSend_8Ptr.asFunction<
+      void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+          ffi.Pointer<ObjCObject>)>();
+
+  late final ffi.Pointer<ObjCObject> _class_NSMethodSignature1 =
+      _getClass1("NSMethodSignature");
+  late final ffi.Pointer<ObjCSel> _sel_methodSignatureForSelector_1 =
+      _registerName1("methodSignatureForSelector:");
+  ffi.Pointer<ObjCObject> _objc_msgSend_9(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    ffi.Pointer<ObjCSel> aSelector,
+  ) {
+    return __objc_msgSend_9(
+      obj,
+      sel,
+      aSelector,
+    );
+  }
+
+  late final __objc_msgSend_9Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
+              ffi.Pointer<ObjCSel>, ffi.Pointer<ObjCSel>)>>('objc_msgSend');
+  late final __objc_msgSend_9 = __objc_msgSend_9Ptr.asFunction<
+      ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
+          ffi.Pointer<ObjCSel>, ffi.Pointer<ObjCSel>)>();
+
+  late final ffi.Pointer<ObjCSel> _sel_instanceMethodSignatureForSelector_1 =
+      _registerName1("instanceMethodSignatureForSelector:");
+  late final ffi.Pointer<ObjCSel> _sel_allowsWeakReference1 =
+      _registerName1("allowsWeakReference");
+  bool _objc_msgSend_10(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+  ) {
+    return __objc_msgSend_10(
+          obj,
+          sel,
+        ) !=
+        0;
+  }
+
+  late final __objc_msgSend_10Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Uint8 Function(
+              ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>>('objc_msgSend');
+  late final __objc_msgSend_10 = __objc_msgSend_10Ptr.asFunction<
+      int Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>();
+
+  late final ffi.Pointer<ObjCSel> _sel_retainWeakReference1 =
+      _registerName1("retainWeakReference");
+  late final ffi.Pointer<ObjCSel> _sel_isSubclassOfClass_1 =
+      _registerName1("isSubclassOfClass:");
+  late final ffi.Pointer<ObjCSel> _sel_resolveClassMethod_1 =
+      _registerName1("resolveClassMethod:");
+  late final ffi.Pointer<ObjCSel> _sel_resolveInstanceMethod_1 =
+      _registerName1("resolveInstanceMethod:");
+  late final ffi.Pointer<ObjCSel> _sel_hash1 = _registerName1("hash");
+  int _objc_msgSend_11(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+  ) {
+    return __objc_msgSend_11(
+      obj,
+      sel,
+    );
+  }
+
+  late final __objc_msgSend_11Ptr = _lookup<
+      ffi.NativeFunction<
+          NSUInteger Function(
+              ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>>('objc_msgSend');
+  late final __objc_msgSend_11 = __objc_msgSend_11Ptr.asFunction<
+      int Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>();
+
+  late final ffi.Pointer<ObjCSel> _sel_superclass1 =
+      _registerName1("superclass");
+  late final ffi.Pointer<ObjCSel> _sel_class1 = _registerName1("class");
+  late final ffi.Pointer<ObjCObject> _class_NSString1 = _getClass1("NSString");
+  late final ffi.Pointer<ObjCSel> _sel_stringWithCString_encoding_1 =
+      _registerName1("stringWithCString:encoding:");
+  ffi.Pointer<ObjCObject> _objc_msgSend_12(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    ffi.Pointer<pkg_ffi.Char> cString,
+    int enc,
+  ) {
+    return __objc_msgSend_12(
+      obj,
+      sel,
+      cString,
+      enc,
+    );
+  }
+
+  late final __objc_msgSend_12Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ObjCObject> Function(
+              ffi.Pointer<ObjCObject>,
+              ffi.Pointer<ObjCSel>,
+              ffi.Pointer<pkg_ffi.Char>,
+              pkg_ffi.UnsignedInt)>>('objc_msgSend');
+  late final __objc_msgSend_12 = __objc_msgSend_12Ptr.asFunction<
+      ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
+          ffi.Pointer<ObjCSel>, ffi.Pointer<pkg_ffi.Char>, int)>();
+
+  late final ffi.Pointer<ObjCSel> _sel_UTF8String1 =
+      _registerName1("UTF8String");
+  ffi.Pointer<pkg_ffi.Char> _objc_msgSend_13(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+  ) {
+    return __objc_msgSend_13(
+      obj,
+      sel,
+    );
+  }
+
+  late final __objc_msgSend_13Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<pkg_ffi.Char> Function(
+              ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>>('objc_msgSend');
+  late final __objc_msgSend_13 = __objc_msgSend_13Ptr.asFunction<
+      ffi.Pointer<pkg_ffi.Char> Function(
+          ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>();
+
+  late final ffi.Pointer<ObjCSel> _sel_description1 =
+      _registerName1("description");
+  ffi.Pointer<ObjCObject> _objc_msgSend_14(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+  ) {
+    return __objc_msgSend_14(
+      obj,
+      sel,
+    );
+  }
+
+  late final __objc_msgSend_14Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ObjCObject> Function(
+              ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>>('objc_msgSend');
+  late final __objc_msgSend_14 = __objc_msgSend_14Ptr.asFunction<
+      ffi.Pointer<ObjCObject> Function(
+          ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>();
+
+  late final ffi.Pointer<ObjCSel> _sel_debugDescription1 =
+      _registerName1("debugDescription");
+  late final ffi.Pointer<ObjCSel> _sel_version1 = _registerName1("version");
+  int _objc_msgSend_15(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+  ) {
+    return __objc_msgSend_15(
+      obj,
+      sel,
+    );
+  }
+
+  late final __objc_msgSend_15Ptr = _lookup<
+      ffi.NativeFunction<
+          NSInteger Function(
+              ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>>('objc_msgSend');
+  late final __objc_msgSend_15 = __objc_msgSend_15Ptr.asFunction<
+      int Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>();
+
+  late final ffi.Pointer<ObjCSel> _sel_setVersion_1 =
+      _registerName1("setVersion:");
+  void _objc_msgSend_16(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    int aVersion,
+  ) {
+    return __objc_msgSend_16(
+      obj,
+      sel,
+      aVersion,
+    );
+  }
+
+  late final __objc_msgSend_16Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+              NSInteger)>>('objc_msgSend');
+  late final __objc_msgSend_16 = __objc_msgSend_16Ptr.asFunction<
+      void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, int)>();
+
+  late final ffi.Pointer<ObjCSel> _sel_classForCoder1 =
+      _registerName1("classForCoder");
+  late final ffi.Pointer<ObjCSel> _sel_replacementObjectForCoder_1 =
+      _registerName1("replacementObjectForCoder:");
+  ffi.Pointer<ObjCObject> _objc_msgSend_17(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    ffi.Pointer<ObjCObject> coder,
+  ) {
+    return __objc_msgSend_17(
+      obj,
+      sel,
+      coder,
+    );
+  }
+
+  late final __objc_msgSend_17Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
+              ffi.Pointer<ObjCSel>, ffi.Pointer<ObjCObject>)>>('objc_msgSend');
+  late final __objc_msgSend_17 = __objc_msgSend_17Ptr.asFunction<
+      ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
+          ffi.Pointer<ObjCSel>, ffi.Pointer<ObjCObject>)>();
+
+  late final ffi.Pointer<ObjCSel> _sel_awakeAfterUsingCoder_1 =
+      _registerName1("awakeAfterUsingCoder:");
+  late final ffi.Pointer<ObjCSel> _sel_poseAsClass_1 =
+      _registerName1("poseAsClass:");
+  late final ffi.Pointer<ObjCSel> _sel_autoContentAccessingProxy1 =
+      _registerName1("autoContentAccessingProxy");
+  late final ffi.Pointer<ObjCObject> _class_BlockTester1 =
+      _getClass1("BlockTester");
+  ffi.Pointer<_ObjCBlockDesc> _newBlockDesc1() {
+    final d =
+        pkg_ffi.calloc.allocate<_ObjCBlockDesc>(ffi.sizeOf<_ObjCBlockDesc>());
+    d.ref.size = ffi.sizeOf<_ObjCBlock>();
+    return d;
+  }
+
+  late final ffi.Pointer<_ObjCBlockDesc> _objc_block_desc1 = _newBlockDesc1();
+  ffi.Pointer<_ObjCBlock> _newBlock1(
+      ffi.Pointer<ffi.Void> invoke, ffi.Pointer<ffi.Void> target) {
+    final b = pkg_ffi.calloc.allocate<_ObjCBlock>(ffi.sizeOf<_ObjCBlock>());
+    b.ref.invoke = invoke;
+    b.ref.target = target;
+    b.ref.descriptor = _objc_block_desc1;
+    return b;
+  }
+
+  late final ffi.Pointer<ObjCSel> _sel_makeFromBlock_1 =
+      _registerName1("makeFromBlock:");
+  ffi.Pointer<ObjCObject> _objc_msgSend_18(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    IntBlock block,
+  ) {
+    return __objc_msgSend_18(
+      obj,
+      sel,
+      block,
+    );
+  }
+
+  late final __objc_msgSend_18Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
+              ffi.Pointer<ObjCSel>, IntBlock)>>('objc_msgSend');
+  late final __objc_msgSend_18 = __objc_msgSend_18Ptr.asFunction<
+      ffi.Pointer<ObjCObject> Function(
+          ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, IntBlock)>();
+
+  late final ffi.Pointer<ObjCSel> _sel_makeFromMultiplier_1 =
+      _registerName1("makeFromMultiplier:");
+  ffi.Pointer<ObjCObject> _objc_msgSend_19(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    int mult,
+  ) {
+    return __objc_msgSend_19(
+      obj,
+      sel,
+      mult,
+    );
+  }
+
+  late final __objc_msgSend_19Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
+              ffi.Pointer<ObjCSel>, ffi.Int32)>>('objc_msgSend');
+  late final __objc_msgSend_19 = __objc_msgSend_19Ptr.asFunction<
+      ffi.Pointer<ObjCObject> Function(
+          ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, int)>();
+
+  late final ffi.Pointer<ObjCSel> _sel_call_1 = _registerName1("call:");
+  int _objc_msgSend_20(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    int x,
+  ) {
+    return __objc_msgSend_20(
+      obj,
+      sel,
+      x,
+    );
+  }
+
+  late final __objc_msgSend_20Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Int32 Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+              ffi.Int32)>>('objc_msgSend');
+  late final __objc_msgSend_20 = __objc_msgSend_20Ptr.asFunction<
+      int Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, int)>();
+
+  late final ffi.Pointer<ObjCSel> _sel_getBlock1 = _registerName1("getBlock");
+  IntBlock _objc_msgSend_21(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+  ) {
+    return __objc_msgSend_21(
+      obj,
+      sel,
+    );
+  }
+
+  late final __objc_msgSend_21Ptr = _lookup<
+      ffi.NativeFunction<
+          IntBlock Function(
+              ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>>('objc_msgSend');
+  late final __objc_msgSend_21 = __objc_msgSend_21Ptr.asFunction<
+      IntBlock Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>();
+}
+
+abstract class NSComparisonResult {
+  static const int NSOrderedAscending = -1;
+  static const int NSOrderedSame = 0;
+  static const int NSOrderedDescending = 1;
+}
+
+abstract class NSEnumerationOptions {
+  static const int NSEnumerationConcurrent = 1;
+  static const int NSEnumerationReverse = 2;
+}
+
+abstract class NSSortOptions {
+  static const int NSSortConcurrent = 1;
+  static const int NSSortStable = 16;
+}
+
+abstract class NSQualityOfService {
+  static const int NSQualityOfServiceUserInteractive = 33;
+  static const int NSQualityOfServiceUserInitiated = 25;
+  static const int NSQualityOfServiceUtility = 17;
+  static const int NSQualityOfServiceBackground = 9;
+  static const int NSQualityOfServiceDefault = -1;
+}
+
+typedef NSInteger = pkg_ffi.Long;
+
+class __CFString extends ffi.Opaque {}
+
+abstract class CFComparisonResult {
+  static const int kCFCompareLessThan = -1;
+  static const int kCFCompareEqualTo = 0;
+  static const int kCFCompareGreaterThan = 1;
+}
+
+typedef CFIndex = pkg_ffi.Long;
+
+class CFRange extends ffi.Struct {
+  @CFIndex()
+  external int location;
+
+  @CFIndex()
+  external int length;
+}
+
+class __CFNull extends ffi.Opaque {}
+
+typedef CFNullRef = ffi.Pointer<__CFNull>;
+
+class __CFAllocator extends ffi.Opaque {}
+
+typedef CFAllocatorRef = ffi.Pointer<__CFAllocator>;
+
+class CFAllocatorContext extends ffi.Struct {
+  @CFIndex()
+  external int version;
+
+  external ffi.Pointer<ffi.Void> info;
+
+  external CFAllocatorRetainCallBack retain;
+
+  external CFAllocatorReleaseCallBack release;
+
+  external CFAllocatorCopyDescriptionCallBack copyDescription;
+
+  external CFAllocatorAllocateCallBack allocate;
+
+  external CFAllocatorReallocateCallBack reallocate;
+
+  external CFAllocatorDeallocateCallBack deallocate;
+
+  external CFAllocatorPreferredSizeCallBack preferredSize;
+}
+
+typedef CFAllocatorRetainCallBack = ffi.Pointer<
+    ffi.NativeFunction<ffi.Pointer<ffi.Void> Function(ffi.Pointer<ffi.Void>)>>;
+typedef CFAllocatorReleaseCallBack
+    = ffi.Pointer<ffi.NativeFunction<ffi.Void Function(ffi.Pointer<ffi.Void>)>>;
+typedef CFAllocatorCopyDescriptionCallBack = ffi
+    .Pointer<ffi.NativeFunction<CFStringRef Function(ffi.Pointer<ffi.Void>)>>;
+typedef CFStringRef = ffi.Pointer<__CFString>;
+typedef CFAllocatorAllocateCallBack = ffi.Pointer<
+    ffi.NativeFunction<
+        ffi.Pointer<ffi.Void> Function(
+            CFIndex, CFOptionFlags, ffi.Pointer<ffi.Void>)>>;
+typedef CFOptionFlags = pkg_ffi.UnsignedLong;
+typedef CFAllocatorReallocateCallBack = ffi.Pointer<
+    ffi.NativeFunction<
+        ffi.Pointer<ffi.Void> Function(ffi.Pointer<ffi.Void>, CFIndex,
+            CFOptionFlags, ffi.Pointer<ffi.Void>)>>;
+typedef CFAllocatorDeallocateCallBack = ffi.Pointer<
+    ffi.NativeFunction<
+        ffi.Void Function(ffi.Pointer<ffi.Void>, ffi.Pointer<ffi.Void>)>>;
+typedef CFAllocatorPreferredSizeCallBack = ffi.Pointer<
+    ffi.NativeFunction<
+        CFIndex Function(CFIndex, CFOptionFlags, ffi.Pointer<ffi.Void>)>>;
+
+class _ObjCWrapper {
+  final ffi.Pointer<ObjCObject> _id;
+  final BlockTestObjCLibrary _lib;
+
+  _ObjCWrapper._(this._id, this._lib);
+
+  @override
+  bool operator ==(Object other) {
+    return other is _ObjCWrapper && _id == other._id;
+  }
+
+  @override
+  int get hashCode => _id.hashCode;
+}
+
+class NSObject extends _ObjCWrapper {
+  NSObject._(ffi.Pointer<ObjCObject> id, BlockTestObjCLibrary lib)
+      : super._(id, lib);
+
+  static NSObject castFrom<T extends _ObjCWrapper>(T other) {
+    return NSObject._(other._id, other._lib);
+  }
+
+  static NSObject castFromPointer(
+      BlockTestObjCLibrary lib, ffi.Pointer<ObjCObject> other) {
+    return NSObject._(other, lib);
+  }
+
+  static void load(BlockTestObjCLibrary _lib) {
+    _lib._objc_msgSend_0(_lib._class_NSObject1, _lib._sel_load1);
+  }
+
+  static void initialize(BlockTestObjCLibrary _lib) {
+    _lib._objc_msgSend_0(_lib._class_NSObject1, _lib._sel_initialize1);
+  }
+
+  NSObject init() {
+    final _ret = _lib._objc_msgSend_1(_id, _lib._sel_init1);
+    return NSObject._(_ret, _lib);
+  }
+
+  static NSObject new1(BlockTestObjCLibrary _lib) {
+    final _ret = _lib._objc_msgSend_1(_lib._class_NSObject1, _lib._sel_new1);
+    return NSObject._(_ret, _lib);
+  }
+
+  static NSObject allocWithZone(
+      BlockTestObjCLibrary _lib, ffi.Pointer<_NSZone> zone) {
+    final _ret = _lib._objc_msgSend_2(
+        _lib._class_NSObject1, _lib._sel_allocWithZone_1, zone);
+    return NSObject._(_ret, _lib);
+  }
+
+  static NSObject alloc(BlockTestObjCLibrary _lib) {
+    final _ret = _lib._objc_msgSend_1(_lib._class_NSObject1, _lib._sel_alloc1);
+    return NSObject._(_ret, _lib);
+  }
+
+  void dealloc() {
+    _lib._objc_msgSend_0(_id, _lib._sel_dealloc1);
+  }
+
+  void finalize() {
+    _lib._objc_msgSend_0(_id, _lib._sel_finalize1);
+  }
+
+  NSObject copy() {
+    final _ret = _lib._objc_msgSend_1(_id, _lib._sel_copy1);
+    return NSObject._(_ret, _lib);
+  }
+
+  NSObject mutableCopy() {
+    final _ret = _lib._objc_msgSend_1(_id, _lib._sel_mutableCopy1);
+    return NSObject._(_ret, _lib);
+  }
+
+  static NSObject copyWithZone(
+      BlockTestObjCLibrary _lib, ffi.Pointer<_NSZone> zone) {
+    final _ret = _lib._objc_msgSend_2(
+        _lib._class_NSObject1, _lib._sel_copyWithZone_1, zone);
+    return NSObject._(_ret, _lib);
+  }
+
+  static NSObject mutableCopyWithZone(
+      BlockTestObjCLibrary _lib, ffi.Pointer<_NSZone> zone) {
+    final _ret = _lib._objc_msgSend_2(
+        _lib._class_NSObject1, _lib._sel_mutableCopyWithZone_1, zone);
+    return NSObject._(_ret, _lib);
+  }
+
+  static bool instancesRespondToSelector(
+      BlockTestObjCLibrary _lib, ffi.Pointer<ObjCSel> aSelector) {
+    return _lib._objc_msgSend_3(_lib._class_NSObject1,
+        _lib._sel_instancesRespondToSelector_1, aSelector);
+  }
+
+  static bool conformsToProtocol(
+      BlockTestObjCLibrary _lib, NSObject? protocol) {
+    return _lib._objc_msgSend_4(_lib._class_NSObject1,
+        _lib._sel_conformsToProtocol_1, protocol?._id ?? ffi.nullptr);
+  }
+
+  IMP methodForSelector(ffi.Pointer<ObjCSel> aSelector) {
+    return _lib._objc_msgSend_5(_id, _lib._sel_methodForSelector_1, aSelector);
+  }
+
+  static IMP instanceMethodForSelector(
+      BlockTestObjCLibrary _lib, ffi.Pointer<ObjCSel> aSelector) {
+    return _lib._objc_msgSend_5(_lib._class_NSObject1,
+        _lib._sel_instanceMethodForSelector_1, aSelector);
+  }
+
+  void doesNotRecognizeSelector(ffi.Pointer<ObjCSel> aSelector) {
+    _lib._objc_msgSend_6(_id, _lib._sel_doesNotRecognizeSelector_1, aSelector);
+  }
+
+  NSObject forwardingTargetForSelector(ffi.Pointer<ObjCSel> aSelector) {
+    final _ret = _lib._objc_msgSend_7(
+        _id, _lib._sel_forwardingTargetForSelector_1, aSelector);
+    return NSObject._(_ret, _lib);
+  }
+
+  void forwardInvocation(NSObject? anInvocation) {
+    _lib._objc_msgSend_8(
+        _id, _lib._sel_forwardInvocation_1, anInvocation?._id ?? ffi.nullptr);
+  }
+
+  NSMethodSignature methodSignatureForSelector(ffi.Pointer<ObjCSel> aSelector) {
+    final _ret = _lib._objc_msgSend_9(
+        _id, _lib._sel_methodSignatureForSelector_1, aSelector);
+    return NSMethodSignature._(_ret, _lib);
+  }
+
+  static NSMethodSignature instanceMethodSignatureForSelector(
+      BlockTestObjCLibrary _lib, ffi.Pointer<ObjCSel> aSelector) {
+    final _ret = _lib._objc_msgSend_9(_lib._class_NSObject1,
+        _lib._sel_instanceMethodSignatureForSelector_1, aSelector);
+    return NSMethodSignature._(_ret, _lib);
+  }
+
+  bool allowsWeakReference() {
+    return _lib._objc_msgSend_10(_id, _lib._sel_allowsWeakReference1);
+  }
+
+  bool retainWeakReference() {
+    return _lib._objc_msgSend_10(_id, _lib._sel_retainWeakReference1);
+  }
+
+  static bool isSubclassOfClass(BlockTestObjCLibrary _lib, NSObject aClass) {
+    return _lib._objc_msgSend_4(
+        _lib._class_NSObject1, _lib._sel_isSubclassOfClass_1, aClass._id);
+  }
+
+  static bool resolveClassMethod(
+      BlockTestObjCLibrary _lib, ffi.Pointer<ObjCSel> sel) {
+    return _lib._objc_msgSend_3(
+        _lib._class_NSObject1, _lib._sel_resolveClassMethod_1, sel);
+  }
+
+  static bool resolveInstanceMethod(
+      BlockTestObjCLibrary _lib, ffi.Pointer<ObjCSel> sel) {
+    return _lib._objc_msgSend_3(
+        _lib._class_NSObject1, _lib._sel_resolveInstanceMethod_1, sel);
+  }
+
+  static int hash(BlockTestObjCLibrary _lib) {
+    return _lib._objc_msgSend_11(_lib._class_NSObject1, _lib._sel_hash1);
+  }
+
+  static NSObject superclass(BlockTestObjCLibrary _lib) {
+    final _ret =
+        _lib._objc_msgSend_1(_lib._class_NSObject1, _lib._sel_superclass1);
+    return NSObject._(_ret, _lib);
+  }
+
+  static NSObject class1(BlockTestObjCLibrary _lib) {
+    final _ret = _lib._objc_msgSend_1(_lib._class_NSObject1, _lib._sel_class1);
+    return NSObject._(_ret, _lib);
+  }
+
+  static NSString description(BlockTestObjCLibrary _lib) {
+    final _ret =
+        _lib._objc_msgSend_14(_lib._class_NSObject1, _lib._sel_description1);
+    return NSString._(_ret, _lib);
+  }
+
+  static NSString debugDescription(BlockTestObjCLibrary _lib) {
+    final _ret = _lib._objc_msgSend_14(
+        _lib._class_NSObject1, _lib._sel_debugDescription1);
+    return NSString._(_ret, _lib);
+  }
+
+  static int version(BlockTestObjCLibrary _lib) {
+    return _lib._objc_msgSend_15(_lib._class_NSObject1, _lib._sel_version1);
+  }
+
+  static void setVersion(BlockTestObjCLibrary _lib, int aVersion) {
+    _lib._objc_msgSend_16(
+        _lib._class_NSObject1, _lib._sel_setVersion_1, aVersion);
+  }
+
+  NSObject get classForCoder {
+    final _ret = _lib._objc_msgSend_1(_id, _lib._sel_classForCoder1);
+    return NSObject._(_ret, _lib);
+  }
+
+  NSObject replacementObjectForCoder(NSObject? coder) {
+    final _ret = _lib._objc_msgSend_17(
+        _id, _lib._sel_replacementObjectForCoder_1, coder?._id ?? ffi.nullptr);
+    return NSObject._(_ret, _lib);
+  }
+
+  NSObject awakeAfterUsingCoder(NSObject? coder) {
+    final _ret = _lib._objc_msgSend_17(
+        _id, _lib._sel_awakeAfterUsingCoder_1, coder?._id ?? ffi.nullptr);
+    return NSObject._(_ret, _lib);
+  }
+
+  static void poseAsClass(BlockTestObjCLibrary _lib, NSObject aClass) {
+    _lib._objc_msgSend_8(
+        _lib._class_NSObject1, _lib._sel_poseAsClass_1, aClass._id);
+  }
+
+  NSObject get autoContentAccessingProxy {
+    final _ret =
+        _lib._objc_msgSend_1(_id, _lib._sel_autoContentAccessingProxy1);
+    return NSObject._(_ret, _lib);
+  }
+}
+
+class ObjCSel extends ffi.Opaque {}
+
+class ObjCObject extends ffi.Opaque {}
+
+typedef instancetype = ffi.Pointer<ObjCObject>;
+
+class _NSZone extends ffi.Opaque {}
+
+typedef IMP = ffi.Pointer<ffi.NativeFunction<ffi.Void Function()>>;
+
+class NSMethodSignature extends _ObjCWrapper {
+  NSMethodSignature._(ffi.Pointer<ObjCObject> id, BlockTestObjCLibrary lib)
+      : super._(id, lib);
+
+  static NSMethodSignature castFrom<T extends _ObjCWrapper>(T other) {
+    return NSMethodSignature._(other._id, other._lib);
+  }
+
+  static NSMethodSignature castFromPointer(
+      BlockTestObjCLibrary lib, ffi.Pointer<ObjCObject> other) {
+    return NSMethodSignature._(other, lib);
+  }
+}
+
+typedef NSUInteger = pkg_ffi.UnsignedLong;
+
+class NSString extends _ObjCWrapper {
+  NSString._(ffi.Pointer<ObjCObject> id, BlockTestObjCLibrary lib)
+      : super._(id, lib);
+
+  static NSString castFrom<T extends _ObjCWrapper>(T other) {
+    return NSString._(other._id, other._lib);
+  }
+
+  static NSString castFromPointer(
+      BlockTestObjCLibrary lib, ffi.Pointer<ObjCObject> other) {
+    return NSString._(other, lib);
+  }
+
+  factory NSString(BlockTestObjCLibrary _lib, String str) {
+    final cstr = str.toNativeUtf8();
+    final nsstr = stringWithCString_encoding(_lib, cstr.cast(), 4 /* UTF8 */);
+    pkg_ffi.calloc.free(cstr);
+    return nsstr;
+  }
+
+  @override
+  String toString() => (UTF8String).cast<pkg_ffi.Utf8>().toDartString();
+
+  static NSString stringWithCString_encoding(
+      BlockTestObjCLibrary _lib, ffi.Pointer<pkg_ffi.Char> cString, int enc) {
+    final _ret = _lib._objc_msgSend_12(_lib._class_NSString1,
+        _lib._sel_stringWithCString_encoding_1, cString, enc);
+    return NSString._(_ret, _lib);
+  }
+
+  ffi.Pointer<pkg_ffi.Char> get UTF8String {
+    return _lib._objc_msgSend_13(_id, _lib._sel_UTF8String1);
+  }
+}
+
+extension StringToNSString on String {
+  NSString toNSString(BlockTestObjCLibrary lib) => NSString(lib, this);
+}
+
+class BlockTester extends NSObject {
+  BlockTester._(ffi.Pointer<ObjCObject> id, BlockTestObjCLibrary lib)
+      : super._(id, lib);
+
+  static BlockTester castFrom<T extends _ObjCWrapper>(T other) {
+    return BlockTester._(other._id, other._lib);
+  }
+
+  static BlockTester castFromPointer(
+      BlockTestObjCLibrary lib, ffi.Pointer<ObjCObject> other) {
+    return BlockTester._(other, lib);
+  }
+
+  static BlockTester makeFromBlock(BlockTestObjCLibrary _lib, IntBlock block) {
+    final _ret = _lib._objc_msgSend_18(
+        _lib._class_BlockTester1, _lib._sel_makeFromBlock_1, block);
+    return BlockTester._(_ret, _lib);
+  }
+
+  static BlockTester makeFromMultiplier(BlockTestObjCLibrary _lib, int mult) {
+    final _ret = _lib._objc_msgSend_19(
+        _lib._class_BlockTester1, _lib._sel_makeFromMultiplier_1, mult);
+    return BlockTester._(_ret, _lib);
+  }
+
+  int call(int x) {
+    return _lib._objc_msgSend_20(_id, _lib._sel_call_1, x);
+  }
+
+  IntBlock getBlock() {
+    return _lib._objc_msgSend_21(_id, _lib._sel_getBlock1);
+  }
+
+  static BlockTester new1(BlockTestObjCLibrary _lib) {
+    final _ret = _lib._objc_msgSend_1(_lib._class_BlockTester1, _lib._sel_new1);
+    return BlockTester._(_ret, _lib);
+  }
+
+  static BlockTester alloc(BlockTestObjCLibrary _lib) {
+    final _ret =
+        _lib._objc_msgSend_1(_lib._class_BlockTester1, _lib._sel_alloc1);
+    return BlockTester._(_ret, _lib);
+  }
+}
+
+typedef IntBlock = ffi.Pointer<_ObjCBlock>;
+int _ObjCBlock_fnPtrTrampoline(ffi.Pointer<_ObjCBlock> block, int arg0) {
+  return block.ref.target
+      .cast<ffi.NativeFunction<ffi.Int32 Function(ffi.Int32 arg0)>>()
+      .asFunction<int Function(int arg0)>()(arg0);
+}
+
+class ObjCBlock {
+  final ffi.Pointer<_ObjCBlock> _impl;
+  final BlockTestObjCLibrary _lib;
+  ObjCBlock._(this._impl, this._lib);
+
+  ObjCBlock.fromFunctionPointer(this._lib,
+      ffi.Pointer<ffi.NativeFunction<ffi.Int32 Function(ffi.Int32 arg0)>> ptr)
+      : _impl = _lib._newBlock1(
+            ffi.Pointer.fromFunction<
+                    ffi.Int32 Function(ffi.Pointer<_ObjCBlock> block,
+                        ffi.Int32 arg0)>(_ObjCBlock_fnPtrTrampoline, 0)
+                .cast(),
+            ptr.cast());
+  ffi.Pointer<_ObjCBlock> get pointer => _impl;
+}
+
+class _ObjCBlockDesc extends ffi.Struct {
+  @pkg_ffi.UnsignedLong()
+  external int reserved;
+
+  @pkg_ffi.UnsignedLong()
+  external int size;
+
+  external ffi.Pointer<ffi.Void> copy_helper;
+
+  external ffi.Pointer<ffi.Void> dispose_helper;
+
+  external ffi.Pointer<pkg_ffi.Char> signature;
+}
+
+class _ObjCBlock extends ffi.Struct {
+  external ffi.Pointer<ffi.Void> isa;
+
+  @pkg_ffi.Int()
+  external int flags;
+
+  @pkg_ffi.Int()
+  external int reserved;
+
+  external ffi.Pointer<ffi.Void> invoke;
+
+  external ffi.Pointer<_ObjCBlockDesc> descriptor;
+
+  external ffi.Pointer<ffi.Void> target;
+}
+
+const int NSScannedOption = 1;
+
+const int NSCollectorDisabledOption = 2;
+
+const int NS_BLOCKS_AVAILABLE = 1;
+
+const int __COREFOUNDATION_CFAVAILABILITY__ = 1;
+
+const int __CF_ENUM_FIXED_IS_AVAILABLE = 1;
+
+const double NSFoundationVersionNumber10_0 = 397.4;
+
+const double NSFoundationVersionNumber10_1 = 425.0;
+
+const double NSFoundationVersionNumber10_1_1 = 425.0;
+
+const double NSFoundationVersionNumber10_1_2 = 425.0;
+
+const double NSFoundationVersionNumber10_1_3 = 425.0;
+
+const double NSFoundationVersionNumber10_1_4 = 425.0;
+
+const double NSFoundationVersionNumber10_2 = 462.0;
+
+const double NSFoundationVersionNumber10_2_1 = 462.0;
+
+const double NSFoundationVersionNumber10_2_2 = 462.0;
+
+const double NSFoundationVersionNumber10_2_3 = 462.0;
+
+const double NSFoundationVersionNumber10_2_4 = 462.0;
+
+const double NSFoundationVersionNumber10_2_5 = 462.0;
+
+const double NSFoundationVersionNumber10_2_6 = 462.0;
+
+const double NSFoundationVersionNumber10_2_7 = 462.7;
+
+const double NSFoundationVersionNumber10_2_8 = 462.7;
+
+const double NSFoundationVersionNumber10_3 = 500.0;
+
+const double NSFoundationVersionNumber10_3_1 = 500.0;
+
+const double NSFoundationVersionNumber10_3_2 = 500.3;
+
+const double NSFoundationVersionNumber10_3_3 = 500.54;
+
+const double NSFoundationVersionNumber10_3_4 = 500.56;
+
+const double NSFoundationVersionNumber10_3_5 = 500.56;
+
+const double NSFoundationVersionNumber10_3_6 = 500.56;
+
+const double NSFoundationVersionNumber10_3_7 = 500.56;
+
+const double NSFoundationVersionNumber10_3_8 = 500.56;
+
+const double NSFoundationVersionNumber10_3_9 = 500.58;
+
+const double NSFoundationVersionNumber10_4 = 567.0;
+
+const double NSFoundationVersionNumber10_4_1 = 567.0;
+
+const double NSFoundationVersionNumber10_4_2 = 567.12;
+
+const double NSFoundationVersionNumber10_4_3 = 567.21;
+
+const double NSFoundationVersionNumber10_4_4_Intel = 567.23;
+
+const double NSFoundationVersionNumber10_4_4_PowerPC = 567.21;
+
+const double NSFoundationVersionNumber10_4_5 = 567.25;
+
+const double NSFoundationVersionNumber10_4_6 = 567.26;
+
+const double NSFoundationVersionNumber10_4_7 = 567.27;
+
+const double NSFoundationVersionNumber10_4_8 = 567.28;
+
+const double NSFoundationVersionNumber10_4_9 = 567.29;
+
+const double NSFoundationVersionNumber10_4_10 = 567.29;
+
+const double NSFoundationVersionNumber10_4_11 = 567.36;
+
+const double NSFoundationVersionNumber10_5 = 677.0;
+
+const double NSFoundationVersionNumber10_5_1 = 677.1;
+
+const double NSFoundationVersionNumber10_5_2 = 677.15;
+
+const double NSFoundationVersionNumber10_5_3 = 677.19;
+
+const double NSFoundationVersionNumber10_5_4 = 677.19;
+
+const double NSFoundationVersionNumber10_5_5 = 677.21;
+
+const double NSFoundationVersionNumber10_5_6 = 677.22;
+
+const double NSFoundationVersionNumber10_5_7 = 677.24;
+
+const double NSFoundationVersionNumber10_5_8 = 677.26;
+
+const double NSFoundationVersionNumber10_6 = 751.0;
+
+const double NSFoundationVersionNumber10_6_1 = 751.0;
+
+const double NSFoundationVersionNumber10_6_2 = 751.14;
+
+const double NSFoundationVersionNumber10_6_3 = 751.21;
+
+const double NSFoundationVersionNumber10_6_4 = 751.29;
+
+const double NSFoundationVersionNumber10_6_5 = 751.42;
+
+const double NSFoundationVersionNumber10_6_6 = 751.53;
+
+const double NSFoundationVersionNumber10_6_7 = 751.53;
+
+const double NSFoundationVersionNumber10_6_8 = 751.62;
+
+const double NSFoundationVersionNumber10_7 = 833.1;
+
+const double NSFoundationVersionNumber10_7_1 = 833.1;
+
+const double NSFoundationVersionNumber10_7_2 = 833.2;
+
+const double NSFoundationVersionNumber10_7_3 = 833.24;
+
+const double NSFoundationVersionNumber10_7_4 = 833.25;
+
+const double NSFoundationVersionNumber10_8 = 945.0;
+
+const double NSFoundationVersionNumber10_8_1 = 945.0;
+
+const double NSFoundationVersionNumber10_8_2 = 945.11;
+
+const double NSFoundationVersionNumber10_8_3 = 945.16;
+
+const double NSFoundationVersionNumber10_8_4 = 945.18;
+
+const int NSFoundationVersionNumber10_9 = 1056;
+
+const int NSFoundationVersionNumber10_9_1 = 1056;
+
+const double NSFoundationVersionNumber10_9_2 = 1056.13;
+
+const double NSFoundationVersionNumber10_10 = 1151.16;
+
+const double NSFoundationVersionNumber10_10_1 = 1151.16;
+
+const double NSFoundationVersionNumber10_10_2 = 1152.14;
+
+const double NSFoundationVersionNumber10_10_3 = 1153.2;
+
+const double NSFoundationVersionNumber10_10_4 = 1153.2;
+
+const int NSFoundationVersionNumber10_10_5 = 1154;
+
+const int NSFoundationVersionNumber10_10_Max = 1199;
+
+const int NSFoundationVersionNumber10_11 = 1252;
+
+const double NSFoundationVersionNumber10_11_1 = 1255.1;
+
+const double NSFoundationVersionNumber10_11_2 = 1256.1;
+
+const double NSFoundationVersionNumber10_11_3 = 1256.1;
+
+const int NSFoundationVersionNumber10_11_4 = 1258;
+
+const int NSFoundationVersionNumber10_11_Max = 1299;
+
+const int __COREFOUNDATION_CFBASE__ = 1;
+
+const int TRUE = 1;
+
+const int FALSE = 0;
+
+const double kCFCoreFoundationVersionNumber10_0 = 196.4;
+
+const double kCFCoreFoundationVersionNumber10_0_3 = 196.5;
+
+const double kCFCoreFoundationVersionNumber10_1 = 226.0;
+
+const double kCFCoreFoundationVersionNumber10_1_1 = 226.0;
+
+const double kCFCoreFoundationVersionNumber10_1_2 = 227.2;
+
+const double kCFCoreFoundationVersionNumber10_1_3 = 227.2;
+
+const double kCFCoreFoundationVersionNumber10_1_4 = 227.3;
+
+const double kCFCoreFoundationVersionNumber10_2 = 263.0;
+
+const double kCFCoreFoundationVersionNumber10_2_1 = 263.1;
+
+const double kCFCoreFoundationVersionNumber10_2_2 = 263.1;
+
+const double kCFCoreFoundationVersionNumber10_2_3 = 263.3;
+
+const double kCFCoreFoundationVersionNumber10_2_4 = 263.3;
+
+const double kCFCoreFoundationVersionNumber10_2_5 = 263.5;
+
+const double kCFCoreFoundationVersionNumber10_2_6 = 263.5;
+
+const double kCFCoreFoundationVersionNumber10_2_7 = 263.5;
+
+const double kCFCoreFoundationVersionNumber10_2_8 = 263.5;
+
+const double kCFCoreFoundationVersionNumber10_3 = 299.0;
+
+const double kCFCoreFoundationVersionNumber10_3_1 = 299.0;
+
+const double kCFCoreFoundationVersionNumber10_3_2 = 299.0;
+
+const double kCFCoreFoundationVersionNumber10_3_3 = 299.3;
+
+const double kCFCoreFoundationVersionNumber10_3_4 = 299.31;
+
+const double kCFCoreFoundationVersionNumber10_3_5 = 299.31;
+
+const double kCFCoreFoundationVersionNumber10_3_6 = 299.32;
+
+const double kCFCoreFoundationVersionNumber10_3_7 = 299.33;
+
+const double kCFCoreFoundationVersionNumber10_3_8 = 299.33;
+
+const double kCFCoreFoundationVersionNumber10_3_9 = 299.35;
+
+const double kCFCoreFoundationVersionNumber10_4 = 368.0;
+
+const double kCFCoreFoundationVersionNumber10_4_1 = 368.1;
+
+const double kCFCoreFoundationVersionNumber10_4_2 = 368.11;
+
+const double kCFCoreFoundationVersionNumber10_4_3 = 368.18;
+
+const double kCFCoreFoundationVersionNumber10_4_4_Intel = 368.26;
+
+const double kCFCoreFoundationVersionNumber10_4_4_PowerPC = 368.25;
+
+const double kCFCoreFoundationVersionNumber10_4_5_Intel = 368.26;
+
+const double kCFCoreFoundationVersionNumber10_4_5_PowerPC = 368.25;
+
+const double kCFCoreFoundationVersionNumber10_4_6_Intel = 368.26;
+
+const double kCFCoreFoundationVersionNumber10_4_6_PowerPC = 368.25;
+
+const double kCFCoreFoundationVersionNumber10_4_7 = 368.27;
+
+const double kCFCoreFoundationVersionNumber10_4_8 = 368.27;
+
+const double kCFCoreFoundationVersionNumber10_4_9 = 368.28;
+
+const double kCFCoreFoundationVersionNumber10_4_10 = 368.28;
+
+const double kCFCoreFoundationVersionNumber10_4_11 = 368.31;
+
+const double kCFCoreFoundationVersionNumber10_5 = 476.0;
+
+const double kCFCoreFoundationVersionNumber10_5_1 = 476.0;
+
+const double kCFCoreFoundationVersionNumber10_5_2 = 476.1;
+
+const double kCFCoreFoundationVersionNumber10_5_3 = 476.13;
+
+const double kCFCoreFoundationVersionNumber10_5_4 = 476.14;
+
+const double kCFCoreFoundationVersionNumber10_5_5 = 476.15;
+
+const double kCFCoreFoundationVersionNumber10_5_6 = 476.17;
+
+const double kCFCoreFoundationVersionNumber10_5_7 = 476.18;
+
+const double kCFCoreFoundationVersionNumber10_5_8 = 476.19;
+
+const double kCFCoreFoundationVersionNumber10_6 = 550.0;
+
+const double kCFCoreFoundationVersionNumber10_6_1 = 550.0;
+
+const double kCFCoreFoundationVersionNumber10_6_2 = 550.13;
+
+const double kCFCoreFoundationVersionNumber10_6_3 = 550.19;
+
+const double kCFCoreFoundationVersionNumber10_6_4 = 550.29;
+
+const double kCFCoreFoundationVersionNumber10_6_5 = 550.42;
+
+const double kCFCoreFoundationVersionNumber10_6_6 = 550.42;
+
+const double kCFCoreFoundationVersionNumber10_6_7 = 550.42;
+
+const double kCFCoreFoundationVersionNumber10_6_8 = 550.43;
+
+const double kCFCoreFoundationVersionNumber10_7 = 635.0;
+
+const double kCFCoreFoundationVersionNumber10_7_1 = 635.0;
+
+const double kCFCoreFoundationVersionNumber10_7_2 = 635.15;
+
+const double kCFCoreFoundationVersionNumber10_7_3 = 635.19;
+
+const double kCFCoreFoundationVersionNumber10_7_4 = 635.21;
+
+const double kCFCoreFoundationVersionNumber10_7_5 = 635.21;
+
+const double kCFCoreFoundationVersionNumber10_8 = 744.0;
+
+const double kCFCoreFoundationVersionNumber10_8_1 = 744.0;
+
+const double kCFCoreFoundationVersionNumber10_8_2 = 744.12;
+
+const double kCFCoreFoundationVersionNumber10_8_3 = 744.18;
+
+const double kCFCoreFoundationVersionNumber10_8_4 = 744.19;
+
+const double kCFCoreFoundationVersionNumber10_9 = 855.11;
+
+const double kCFCoreFoundationVersionNumber10_9_1 = 855.11;
+
+const double kCFCoreFoundationVersionNumber10_9_2 = 855.14;
+
+const double kCFCoreFoundationVersionNumber10_10 = 1151.16;
+
+const double kCFCoreFoundationVersionNumber10_10_1 = 1151.16;
+
+const int kCFCoreFoundationVersionNumber10_10_2 = 1152;
+
+const double kCFCoreFoundationVersionNumber10_10_3 = 1153.18;
+
+const double kCFCoreFoundationVersionNumber10_10_4 = 1153.18;
+
+const double kCFCoreFoundationVersionNumber10_10_5 = 1153.18;
+
+const int kCFCoreFoundationVersionNumber10_10_Max = 1199;
+
+const int kCFCoreFoundationVersionNumber10_11 = 1253;
+
+const double kCFCoreFoundationVersionNumber10_11_1 = 1255.1;
+
+const double kCFCoreFoundationVersionNumber10_11_2 = 1256.14;
+
+const double kCFCoreFoundationVersionNumber10_11_3 = 1256.14;
+
+const double kCFCoreFoundationVersionNumber10_11_4 = 1258.1;
+
+const int kCFCoreFoundationVersionNumber10_11_Max = 1299;
+
+const int ISA_PTRAUTH_DISCRIMINATOR = 27361;
diff --git a/pkgs/ffigen/test/native_objc_test/block_config.yaml b/pkgs/ffigen/test/native_objc_test/block_config.yaml
new file mode 100644
index 0000000..38316c2
--- /dev/null
+++ b/pkgs/ffigen/test/native_objc_test/block_config.yaml
@@ -0,0 +1,12 @@
+name: BlockTestObjCLibrary
+description: 'Tests calling Objective-C blocks'
+language: objc
+output: 'test/native_objc_test/block_bindings.dart'
+functions:
+  exclude:
+    - '.*'
+headers:
+  entry-points:
+    - 'test/native_objc_test/block_test.m'
+preamble: |
+  // ignore_for_file: camel_case_types, non_constant_identifier_names, unused_element, unused_field
diff --git a/pkgs/ffigen/test/native_objc_test/block_test.dart b/pkgs/ffigen/test/native_objc_test/block_test.dart
new file mode 100644
index 0000000..767404e
--- /dev/null
+++ b/pkgs/ffigen/test/native_objc_test/block_test.dart
@@ -0,0 +1,73 @@
+// Copyright (c) 2022, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+// Objective C support is only available on mac.
+@TestOn('mac-os')
+
+import 'dart:ffi';
+import 'dart:io';
+
+import 'package:ffigen/ffigen.dart';
+import 'package:path/path.dart' as path;
+import 'package:test/test.dart';
+import 'package:yaml/yaml.dart';
+import '../test_utils.dart';
+import 'block_bindings.dart';
+
+void main() {
+  late BlockTestObjCLibrary lib;
+
+  group('Blocks', () {
+    setUpAll(() {
+      logWarnings();
+      final dylib = File('test/native_objc_test/block_test.dylib');
+      verifySetupFile(dylib);
+      lib = BlockTestObjCLibrary(DynamicLibrary.open(dylib.absolute.path));
+    });
+
+    test('generate_bindings', () {
+      final config = Config.fromYaml(loadYaml(
+          File(path.join('test', 'native_objc_test', 'block_config.yaml'))
+              .readAsStringSync()) as YamlMap);
+      final library = parse(config);
+      final file = File(
+        path.join('test', 'debug_generated', 'block_test.dart'),
+      );
+      library.generateFile(file);
+
+      try {
+        final actual = file.readAsStringSync();
+        final expected = File(path.join(config.output)).readAsStringSync();
+        expect(actual, expected);
+        if (file.existsSync()) {
+          file.delete();
+        }
+      } catch (e) {
+        print('Failed test: Debug generated file: ${file.absolute.path}');
+        rethrow;
+      }
+    });
+
+    test('BlockTester is working', () {
+      // This doesn't test any Block functionality, just that the BlockTester
+      // itself is working correctly.
+      final blockTester = BlockTester.makeFromMultiplier(lib, 10);
+      expect(blockTester.call(123), 1230);
+      final intBlock = blockTester.getBlock();
+      final blockTester2 = BlockTester.makeFromBlock(lib, intBlock);
+      expect(blockTester2.call(456), 4560);
+    });
+
+    test('Block from function pointer', () {
+      final block = ObjCBlock.fromFunctionPointer(
+          lib, Pointer.fromFunction(_add100, 999));
+      final blockTester = BlockTester.makeFromBlock(lib, block.pointer);
+      expect(blockTester.call(123), 223);
+    });
+  });
+}
+
+int _add100(int x) {
+  return x + 100;
+}
diff --git a/pkgs/ffigen/test/native_objc_test/block_test.m b/pkgs/ffigen/test/native_objc_test/block_test.m
new file mode 100644
index 0000000..43d6a2c
--- /dev/null
+++ b/pkgs/ffigen/test/native_objc_test/block_test.m
@@ -0,0 +1,42 @@
+// Copyright (c) 2022, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+#import <Foundation/NSObject.h>
+
+typedef int32_t (^IntBlock)(int32_t);
+
+// Wrapper around a block, so that our Dart code can test creating and invoking
+// blocks in Objective C code.
+@interface BlockTester : NSObject {
+  IntBlock myBlock;
+}
++ (BlockTester*)makeFromBlock:(IntBlock)block;
++ (BlockTester*)makeFromMultiplier:(int32_t)mult;
+- (int32_t)call:(int32_t)x;
+- (IntBlock)getBlock;
+@end
+
+@implementation BlockTester
++ (BlockTester*)makeFromBlock:(IntBlock)block {
+  BlockTester* bt = [BlockTester new];
+  bt->myBlock = block;
+  return bt;
+}
+
++ (BlockTester*)makeFromMultiplier:(int32_t)mult {
+  BlockTester* bt = [BlockTester new];
+  bt->myBlock = [^int32_t(int32_t x) {
+    return x * mult;
+  } copy];
+  return bt;
+}
+
+- (int32_t)call:(int32_t)x {
+  return self->myBlock(x);
+}
+
+- (IntBlock)getBlock {
+  return self->myBlock;
+}
+@end
diff --git a/pkgs/ffigen/test/native_objc_test/native_objc_test_bindings.dart b/pkgs/ffigen/test/native_objc_test/native_objc_test_bindings.dart
index 73e0ae3..29d1652 100644
--- a/pkgs/ffigen/test/native_objc_test/native_objc_test_bindings.dart
+++ b/pkgs/ffigen/test/native_objc_test/native_objc_test_bindings.dart
@@ -1041,6 +1041,23 @@
       _registerName1("getParagraphStart:end:contentsEnd:forRange:");
   late final ffi.Pointer<ObjCSel> _sel_paragraphRangeForRange_1 =
       _registerName1("paragraphRangeForRange:");
+  ffi.Pointer<_ObjCBlockDesc> _newBlockDesc1() {
+    final d =
+        pkg_ffi.calloc.allocate<_ObjCBlockDesc>(ffi.sizeOf<_ObjCBlockDesc>());
+    d.ref.size = ffi.sizeOf<_ObjCBlock>();
+    return d;
+  }
+
+  late final ffi.Pointer<_ObjCBlockDesc> _objc_block_desc1 = _newBlockDesc1();
+  ffi.Pointer<_ObjCBlock> _newBlock1(
+      ffi.Pointer<ffi.Void> invoke, ffi.Pointer<ffi.Void> target) {
+    final b = pkg_ffi.calloc.allocate<_ObjCBlock>(ffi.sizeOf<_ObjCBlock>());
+    b.ref.invoke = invoke;
+    b.ref.target = target;
+    b.ref.descriptor = _objc_block_desc1;
+    return b;
+  }
+
   late final ffi.Pointer<ObjCSel>
       _sel_enumerateSubstringsInRange_options_usingBlock_1 =
       _registerName1("enumerateSubstringsInRange:options:usingBlock:");
@@ -1049,7 +1066,7 @@
     ffi.Pointer<ObjCSel> sel,
     NSRange range,
     int opts,
-    ffi.Pointer<ObjCObject> block,
+    ffi.Pointer<_ObjCBlock> block,
   ) {
     return __objc_msgSend_35(
       obj,
@@ -1063,30 +1080,50 @@
   late final __objc_msgSend_35Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
-              NSRange, ffi.Int32, ffi.Pointer<ObjCObject>)>>('objc_msgSend');
+              NSRange, ffi.Int32, ffi.Pointer<_ObjCBlock>)>>('objc_msgSend');
   late final __objc_msgSend_35 = __objc_msgSend_35Ptr.asFunction<
       void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, NSRange, int,
-          ffi.Pointer<ObjCObject>)>();
+          ffi.Pointer<_ObjCBlock>)>();
 
   late final ffi.Pointer<ObjCSel> _sel_enumerateLinesUsingBlock_1 =
       _registerName1("enumerateLinesUsingBlock:");
-  late final ffi.Pointer<ObjCSel> _sel_UTF8String1 =
-      _registerName1("UTF8String");
-  ffi.Pointer<pkg_ffi.Char> _objc_msgSend_36(
+  void _objc_msgSend_36(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
+    ffi.Pointer<_ObjCBlock> block,
   ) {
     return __objc_msgSend_36(
       obj,
       sel,
+      block,
     );
   }
 
   late final __objc_msgSend_36Ptr = _lookup<
       ffi.NativeFunction<
+          ffi.Void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+              ffi.Pointer<_ObjCBlock>)>>('objc_msgSend');
+  late final __objc_msgSend_36 = __objc_msgSend_36Ptr.asFunction<
+      void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+          ffi.Pointer<_ObjCBlock>)>();
+
+  late final ffi.Pointer<ObjCSel> _sel_UTF8String1 =
+      _registerName1("UTF8String");
+  ffi.Pointer<pkg_ffi.Char> _objc_msgSend_37(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+  ) {
+    return __objc_msgSend_37(
+      obj,
+      sel,
+    );
+  }
+
+  late final __objc_msgSend_37Ptr = _lookup<
+      ffi.NativeFunction<
           ffi.Pointer<pkg_ffi.Char> Function(
               ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>>('objc_msgSend');
-  late final __objc_msgSend_36 = __objc_msgSend_36Ptr.asFunction<
+  late final __objc_msgSend_37 = __objc_msgSend_37Ptr.asFunction<
       ffi.Pointer<pkg_ffi.Char> Function(
           ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>();
 
@@ -1098,13 +1135,13 @@
   late final ffi.Pointer<ObjCSel>
       _sel_dataUsingEncoding_allowLossyConversion_1 =
       _registerName1("dataUsingEncoding:allowLossyConversion:");
-  ffi.Pointer<ObjCObject> _objc_msgSend_37(
+  ffi.Pointer<ObjCObject> _objc_msgSend_38(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     int encoding,
     bool lossy,
   ) {
-    return __objc_msgSend_37(
+    return __objc_msgSend_38(
       obj,
       sel,
       encoding,
@@ -1112,47 +1149,47 @@
     );
   }
 
-  late final __objc_msgSend_37Ptr = _lookup<
+  late final __objc_msgSend_38Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Pointer<ObjCObject> Function(
               ffi.Pointer<ObjCObject>,
               ffi.Pointer<ObjCSel>,
               NSStringEncoding,
               ffi.Uint8)>>('objc_msgSend');
-  late final __objc_msgSend_37 = __objc_msgSend_37Ptr.asFunction<
+  late final __objc_msgSend_38 = __objc_msgSend_38Ptr.asFunction<
       ffi.Pointer<ObjCObject> Function(
           ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, int, int)>();
 
   late final ffi.Pointer<ObjCSel> _sel_dataUsingEncoding_1 =
       _registerName1("dataUsingEncoding:");
-  ffi.Pointer<ObjCObject> _objc_msgSend_38(
+  ffi.Pointer<ObjCObject> _objc_msgSend_39(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     int encoding,
   ) {
-    return __objc_msgSend_38(
+    return __objc_msgSend_39(
       obj,
       sel,
       encoding,
     );
   }
 
-  late final __objc_msgSend_38Ptr = _lookup<
+  late final __objc_msgSend_39Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
               ffi.Pointer<ObjCSel>, NSStringEncoding)>>('objc_msgSend');
-  late final __objc_msgSend_38 = __objc_msgSend_38Ptr.asFunction<
+  late final __objc_msgSend_39 = __objc_msgSend_39Ptr.asFunction<
       ffi.Pointer<ObjCObject> Function(
           ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, int)>();
 
   late final ffi.Pointer<ObjCSel> _sel_canBeConvertedToEncoding_1 =
       _registerName1("canBeConvertedToEncoding:");
-  bool _objc_msgSend_39(
+  bool _objc_msgSend_40(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     int encoding,
   ) {
-    return __objc_msgSend_39(
+    return __objc_msgSend_40(
           obj,
           sel,
           encoding,
@@ -1160,44 +1197,44 @@
         0;
   }
 
-  late final __objc_msgSend_39Ptr = _lookup<
+  late final __objc_msgSend_40Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Uint8 Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
               NSStringEncoding)>>('objc_msgSend');
-  late final __objc_msgSend_39 = __objc_msgSend_39Ptr.asFunction<
+  late final __objc_msgSend_40 = __objc_msgSend_40Ptr.asFunction<
       int Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, int)>();
 
   late final ffi.Pointer<ObjCSel> _sel_cStringUsingEncoding_1 =
       _registerName1("cStringUsingEncoding:");
-  void _objc_msgSend_40(
+  void _objc_msgSend_41(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     int encoding,
   ) {
-    return __objc_msgSend_40(
+    return __objc_msgSend_41(
       obj,
       sel,
       encoding,
     );
   }
 
-  late final __objc_msgSend_40Ptr = _lookup<
+  late final __objc_msgSend_41Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
               NSStringEncoding)>>('objc_msgSend');
-  late final __objc_msgSend_40 = __objc_msgSend_40Ptr.asFunction<
+  late final __objc_msgSend_41 = __objc_msgSend_41Ptr.asFunction<
       void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, int)>();
 
   late final ffi.Pointer<ObjCSel> _sel_getCString_maxLength_encoding_1 =
       _registerName1("getCString:maxLength:encoding:");
-  bool _objc_msgSend_41(
+  bool _objc_msgSend_42(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     ffi.Pointer<pkg_ffi.Char> buffer,
     int maxBufferCount,
     int encoding,
   ) {
-    return __objc_msgSend_41(
+    return __objc_msgSend_42(
           obj,
           sel,
           buffer,
@@ -1207,7 +1244,7 @@
         0;
   }
 
-  late final __objc_msgSend_41Ptr = _lookup<
+  late final __objc_msgSend_42Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Uint8 Function(
               ffi.Pointer<ObjCObject>,
@@ -1215,7 +1252,7 @@
               ffi.Pointer<pkg_ffi.Char>,
               NSUInteger,
               NSStringEncoding)>>('objc_msgSend');
-  late final __objc_msgSend_41 = __objc_msgSend_41Ptr.asFunction<
+  late final __objc_msgSend_42 = __objc_msgSend_42Ptr.asFunction<
       int Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
           ffi.Pointer<pkg_ffi.Char>, int, int)>();
 
@@ -1223,7 +1260,7 @@
       _sel_getBytes_maxLength_usedLength_encoding_options_range_remainingRange_1 =
       _registerName1(
           "getBytes:maxLength:usedLength:encoding:options:range:remainingRange:");
-  bool _objc_msgSend_42(
+  bool _objc_msgSend_43(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     ffi.Pointer<ffi.Void> buffer,
@@ -1234,7 +1271,7 @@
     NSRange range,
     NSRangePointer leftover,
   ) {
-    return __objc_msgSend_42(
+    return __objc_msgSend_43(
           obj,
           sel,
           buffer,
@@ -1248,7 +1285,7 @@
         0;
   }
 
-  late final __objc_msgSend_42Ptr = _lookup<
+  late final __objc_msgSend_43Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Uint8 Function(
               ffi.Pointer<ObjCObject>,
@@ -1260,7 +1297,7 @@
               ffi.Int32,
               NSRange,
               NSRangePointer)>>('objc_msgSend');
-  late final __objc_msgSend_42 = __objc_msgSend_42Ptr.asFunction<
+  late final __objc_msgSend_43 = __objc_msgSend_43Ptr.asFunction<
       int Function(
           ffi.Pointer<ObjCObject>,
           ffi.Pointer<ObjCSel>,
@@ -1274,44 +1311,44 @@
 
   late final ffi.Pointer<ObjCSel> _sel_maximumLengthOfBytesUsingEncoding_1 =
       _registerName1("maximumLengthOfBytesUsingEncoding:");
-  int _objc_msgSend_43(
+  int _objc_msgSend_44(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     int enc,
   ) {
-    return __objc_msgSend_43(
+    return __objc_msgSend_44(
       obj,
       sel,
       enc,
     );
   }
 
-  late final __objc_msgSend_43Ptr = _lookup<
+  late final __objc_msgSend_44Ptr = _lookup<
       ffi.NativeFunction<
           NSUInteger Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
               NSStringEncoding)>>('objc_msgSend');
-  late final __objc_msgSend_43 = __objc_msgSend_43Ptr.asFunction<
+  late final __objc_msgSend_44 = __objc_msgSend_44Ptr.asFunction<
       int Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, int)>();
 
   late final ffi.Pointer<ObjCSel> _sel_lengthOfBytesUsingEncoding_1 =
       _registerName1("lengthOfBytesUsingEncoding:");
   late final ffi.Pointer<ObjCSel> _sel_availableStringEncodings1 =
       _registerName1("availableStringEncodings");
-  ffi.Pointer<NSStringEncoding> _objc_msgSend_44(
+  ffi.Pointer<NSStringEncoding> _objc_msgSend_45(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
   ) {
-    return __objc_msgSend_44(
+    return __objc_msgSend_45(
       obj,
       sel,
     );
   }
 
-  late final __objc_msgSend_44Ptr = _lookup<
+  late final __objc_msgSend_45Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Pointer<NSStringEncoding> Function(
               ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>>('objc_msgSend');
-  late final __objc_msgSend_44 = __objc_msgSend_44Ptr.asFunction<
+  late final __objc_msgSend_45 = __objc_msgSend_45Ptr.asFunction<
       ffi.Pointer<NSStringEncoding> Function(
           ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>();
 
@@ -1334,14 +1371,14 @@
   late final ffi.Pointer<ObjCSel>
       _sel_stringByPaddingToLength_withString_startingAtIndex_1 =
       _registerName1("stringByPaddingToLength:withString:startingAtIndex:");
-  ffi.Pointer<ObjCObject> _objc_msgSend_45(
+  ffi.Pointer<ObjCObject> _objc_msgSend_46(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     int newLength,
     ffi.Pointer<ObjCObject> padString,
     int padIndex,
   ) {
-    return __objc_msgSend_45(
+    return __objc_msgSend_46(
       obj,
       sel,
       newLength,
@@ -1350,7 +1387,7 @@
     );
   }
 
-  late final __objc_msgSend_45Ptr = _lookup<
+  late final __objc_msgSend_46Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Pointer<ObjCObject> Function(
               ffi.Pointer<ObjCObject>,
@@ -1358,19 +1395,19 @@
               NSUInteger,
               ffi.Pointer<ObjCObject>,
               NSUInteger)>>('objc_msgSend');
-  late final __objc_msgSend_45 = __objc_msgSend_45Ptr.asFunction<
+  late final __objc_msgSend_46 = __objc_msgSend_46Ptr.asFunction<
       ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
           ffi.Pointer<ObjCSel>, int, ffi.Pointer<ObjCObject>, int)>();
 
   late final ffi.Pointer<ObjCSel> _sel_stringByFoldingWithOptions_locale_1 =
       _registerName1("stringByFoldingWithOptions:locale:");
-  ffi.Pointer<ObjCObject> _objc_msgSend_46(
+  ffi.Pointer<ObjCObject> _objc_msgSend_47(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     int options,
     ffi.Pointer<ObjCObject> locale,
   ) {
-    return __objc_msgSend_46(
+    return __objc_msgSend_47(
       obj,
       sel,
       options,
@@ -1378,14 +1415,14 @@
     );
   }
 
-  late final __objc_msgSend_46Ptr = _lookup<
+  late final __objc_msgSend_47Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Pointer<ObjCObject> Function(
               ffi.Pointer<ObjCObject>,
               ffi.Pointer<ObjCSel>,
               ffi.Int32,
               ffi.Pointer<ObjCObject>)>>('objc_msgSend');
-  late final __objc_msgSend_46 = __objc_msgSend_46Ptr.asFunction<
+  late final __objc_msgSend_47 = __objc_msgSend_47Ptr.asFunction<
       ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
           ffi.Pointer<ObjCSel>, int, ffi.Pointer<ObjCObject>)>();
 
@@ -1393,7 +1430,7 @@
       _sel_stringByReplacingOccurrencesOfString_withString_options_range_1 =
       _registerName1(
           "stringByReplacingOccurrencesOfString:withString:options:range:");
-  ffi.Pointer<ObjCObject> _objc_msgSend_47(
+  ffi.Pointer<ObjCObject> _objc_msgSend_48(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     ffi.Pointer<ObjCObject> target,
@@ -1401,7 +1438,7 @@
     int options,
     NSRange searchRange,
   ) {
-    return __objc_msgSend_47(
+    return __objc_msgSend_48(
       obj,
       sel,
       target,
@@ -1411,7 +1448,7 @@
     );
   }
 
-  late final __objc_msgSend_47Ptr = _lookup<
+  late final __objc_msgSend_48Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Pointer<ObjCObject> Function(
               ffi.Pointer<ObjCObject>,
@@ -1420,7 +1457,7 @@
               ffi.Pointer<ObjCObject>,
               ffi.Int32,
               NSRange)>>('objc_msgSend');
-  late final __objc_msgSend_47 = __objc_msgSend_47Ptr.asFunction<
+  late final __objc_msgSend_48 = __objc_msgSend_48Ptr.asFunction<
       ffi.Pointer<ObjCObject> Function(
           ffi.Pointer<ObjCObject>,
           ffi.Pointer<ObjCSel>,
@@ -1432,47 +1469,16 @@
   late final ffi.Pointer<ObjCSel>
       _sel_stringByReplacingOccurrencesOfString_withString_1 =
       _registerName1("stringByReplacingOccurrencesOfString:withString:");
-  ffi.Pointer<ObjCObject> _objc_msgSend_48(
+  ffi.Pointer<ObjCObject> _objc_msgSend_49(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     ffi.Pointer<ObjCObject> target,
     ffi.Pointer<ObjCObject> replacement,
   ) {
-    return __objc_msgSend_48(
-      obj,
-      sel,
-      target,
-      replacement,
-    );
-  }
-
-  late final __objc_msgSend_48Ptr = _lookup<
-      ffi.NativeFunction<
-          ffi.Pointer<ObjCObject> Function(
-              ffi.Pointer<ObjCObject>,
-              ffi.Pointer<ObjCSel>,
-              ffi.Pointer<ObjCObject>,
-              ffi.Pointer<ObjCObject>)>>('objc_msgSend');
-  late final __objc_msgSend_48 = __objc_msgSend_48Ptr.asFunction<
-      ffi.Pointer<ObjCObject> Function(
-          ffi.Pointer<ObjCObject>,
-          ffi.Pointer<ObjCSel>,
-          ffi.Pointer<ObjCObject>,
-          ffi.Pointer<ObjCObject>)>();
-
-  late final ffi.Pointer<ObjCSel>
-      _sel_stringByReplacingCharactersInRange_withString_1 =
-      _registerName1("stringByReplacingCharactersInRange:withString:");
-  ffi.Pointer<ObjCObject> _objc_msgSend_49(
-    ffi.Pointer<ObjCObject> obj,
-    ffi.Pointer<ObjCSel> sel,
-    NSRange range,
-    ffi.Pointer<ObjCObject> replacement,
-  ) {
     return __objc_msgSend_49(
       obj,
       sel,
-      range,
+      target,
       replacement,
     );
   }
@@ -1482,25 +1488,29 @@
           ffi.Pointer<ObjCObject> Function(
               ffi.Pointer<ObjCObject>,
               ffi.Pointer<ObjCSel>,
-              NSRange,
+              ffi.Pointer<ObjCObject>,
               ffi.Pointer<ObjCObject>)>>('objc_msgSend');
   late final __objc_msgSend_49 = __objc_msgSend_49Ptr.asFunction<
-      ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
-          ffi.Pointer<ObjCSel>, NSRange, ffi.Pointer<ObjCObject>)>();
+      ffi.Pointer<ObjCObject> Function(
+          ffi.Pointer<ObjCObject>,
+          ffi.Pointer<ObjCSel>,
+          ffi.Pointer<ObjCObject>,
+          ffi.Pointer<ObjCObject>)>();
 
-  late final ffi.Pointer<ObjCSel> _sel_stringByApplyingTransform_reverse_1 =
-      _registerName1("stringByApplyingTransform:reverse:");
+  late final ffi.Pointer<ObjCSel>
+      _sel_stringByReplacingCharactersInRange_withString_1 =
+      _registerName1("stringByReplacingCharactersInRange:withString:");
   ffi.Pointer<ObjCObject> _objc_msgSend_50(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
-    NSStringTransform transform,
-    bool reverse,
+    NSRange range,
+    ffi.Pointer<ObjCObject> replacement,
   ) {
     return __objc_msgSend_50(
       obj,
       sel,
-      transform,
-      reverse ? 1 : 0,
+      range,
+      replacement,
     );
   }
 
@@ -1509,15 +1519,42 @@
           ffi.Pointer<ObjCObject> Function(
               ffi.Pointer<ObjCObject>,
               ffi.Pointer<ObjCSel>,
+              NSRange,
+              ffi.Pointer<ObjCObject>)>>('objc_msgSend');
+  late final __objc_msgSend_50 = __objc_msgSend_50Ptr.asFunction<
+      ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
+          ffi.Pointer<ObjCSel>, NSRange, ffi.Pointer<ObjCObject>)>();
+
+  late final ffi.Pointer<ObjCSel> _sel_stringByApplyingTransform_reverse_1 =
+      _registerName1("stringByApplyingTransform:reverse:");
+  ffi.Pointer<ObjCObject> _objc_msgSend_51(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    NSStringTransform transform,
+    bool reverse,
+  ) {
+    return __objc_msgSend_51(
+      obj,
+      sel,
+      transform,
+      reverse ? 1 : 0,
+    );
+  }
+
+  late final __objc_msgSend_51Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ObjCObject> Function(
+              ffi.Pointer<ObjCObject>,
+              ffi.Pointer<ObjCSel>,
               NSStringTransform,
               ffi.Uint8)>>('objc_msgSend');
-  late final __objc_msgSend_50 = __objc_msgSend_50Ptr.asFunction<
+  late final __objc_msgSend_51 = __objc_msgSend_51Ptr.asFunction<
       ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
           ffi.Pointer<ObjCSel>, NSStringTransform, int)>();
 
   late final ffi.Pointer<ObjCSel> _sel_writeToURL_atomically_encoding_error_1 =
       _registerName1("writeToURL:atomically:encoding:error:");
-  bool _objc_msgSend_51(
+  bool _objc_msgSend_52(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     ffi.Pointer<ObjCObject> url,
@@ -1525,7 +1562,7 @@
     int enc,
     ffi.Pointer<ffi.Pointer<ObjCObject>> error,
   ) {
-    return __objc_msgSend_51(
+    return __objc_msgSend_52(
           obj,
           sel,
           url,
@@ -1536,7 +1573,7 @@
         0;
   }
 
-  late final __objc_msgSend_51Ptr = _lookup<
+  late final __objc_msgSend_52Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Uint8 Function(
               ffi.Pointer<ObjCObject>,
@@ -1545,7 +1582,7 @@
               ffi.Uint8,
               NSStringEncoding,
               ffi.Pointer<ffi.Pointer<ObjCObject>>)>>('objc_msgSend');
-  late final __objc_msgSend_51 = __objc_msgSend_51Ptr.asFunction<
+  late final __objc_msgSend_52 = __objc_msgSend_52Ptr.asFunction<
       int Function(
           ffi.Pointer<ObjCObject>,
           ffi.Pointer<ObjCSel>,
@@ -1561,14 +1598,14 @@
   late final ffi.Pointer<ObjCSel>
       _sel_initWithCharactersNoCopy_length_freeWhenDone_1 =
       _registerName1("initWithCharactersNoCopy:length:freeWhenDone:");
-  instancetype _objc_msgSend_52(
+  instancetype _objc_msgSend_53(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     ffi.Pointer<unichar> characters,
     int length,
     bool freeBuffer,
   ) {
-    return __objc_msgSend_52(
+    return __objc_msgSend_53(
       obj,
       sel,
       characters,
@@ -1577,25 +1614,25 @@
     );
   }
 
-  late final __objc_msgSend_52Ptr = _lookup<
+  late final __objc_msgSend_53Ptr = _lookup<
       ffi.NativeFunction<
           instancetype Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
               ffi.Pointer<unichar>, NSUInteger, ffi.Uint8)>>('objc_msgSend');
-  late final __objc_msgSend_52 = __objc_msgSend_52Ptr.asFunction<
+  late final __objc_msgSend_53 = __objc_msgSend_53Ptr.asFunction<
       instancetype Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
           ffi.Pointer<unichar>, int, int)>();
 
   late final ffi.Pointer<ObjCSel>
       _sel_initWithCharactersNoCopy_length_deallocator_1 =
       _registerName1("initWithCharactersNoCopy:length:deallocator:");
-  instancetype _objc_msgSend_53(
+  instancetype _objc_msgSend_54(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     ffi.Pointer<unichar> chars,
     int len,
-    ffi.Pointer<ObjCObject> deallocator,
+    ffi.Pointer<_ObjCBlock> deallocator,
   ) {
-    return __objc_msgSend_53(
+    return __objc_msgSend_54(
       obj,
       sel,
       chars,
@@ -1604,27 +1641,27 @@
     );
   }
 
-  late final __objc_msgSend_53Ptr = _lookup<
+  late final __objc_msgSend_54Ptr = _lookup<
       ffi.NativeFunction<
           instancetype Function(
               ffi.Pointer<ObjCObject>,
               ffi.Pointer<ObjCSel>,
               ffi.Pointer<unichar>,
               NSUInteger,
-              ffi.Pointer<ObjCObject>)>>('objc_msgSend');
-  late final __objc_msgSend_53 = __objc_msgSend_53Ptr.asFunction<
+              ffi.Pointer<_ObjCBlock>)>>('objc_msgSend');
+  late final __objc_msgSend_54 = __objc_msgSend_54Ptr.asFunction<
       instancetype Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
-          ffi.Pointer<unichar>, int, ffi.Pointer<ObjCObject>)>();
+          ffi.Pointer<unichar>, int, ffi.Pointer<_ObjCBlock>)>();
 
   late final ffi.Pointer<ObjCSel> _sel_initWithCharacters_length_1 =
       _registerName1("initWithCharacters:length:");
-  instancetype _objc_msgSend_54(
+  instancetype _objc_msgSend_55(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     ffi.Pointer<unichar> characters,
     int length,
   ) {
-    return __objc_msgSend_54(
+    return __objc_msgSend_55(
       obj,
       sel,
       characters,
@@ -1632,33 +1669,33 @@
     );
   }
 
-  late final __objc_msgSend_54Ptr = _lookup<
+  late final __objc_msgSend_55Ptr = _lookup<
       ffi.NativeFunction<
           instancetype Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
               ffi.Pointer<unichar>, NSUInteger)>>('objc_msgSend');
-  late final __objc_msgSend_54 = __objc_msgSend_54Ptr.asFunction<
+  late final __objc_msgSend_55 = __objc_msgSend_55Ptr.asFunction<
       instancetype Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
           ffi.Pointer<unichar>, int)>();
 
   late final ffi.Pointer<ObjCSel> _sel_initWithUTF8String_1 =
       _registerName1("initWithUTF8String:");
-  instancetype _objc_msgSend_55(
+  instancetype _objc_msgSend_56(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     ffi.Pointer<pkg_ffi.Char> nullTerminatedCString,
   ) {
-    return __objc_msgSend_55(
+    return __objc_msgSend_56(
       obj,
       sel,
       nullTerminatedCString,
     );
   }
 
-  late final __objc_msgSend_55Ptr = _lookup<
+  late final __objc_msgSend_56Ptr = _lookup<
       ffi.NativeFunction<
           instancetype Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
               ffi.Pointer<pkg_ffi.Char>)>>('objc_msgSend');
-  late final __objc_msgSend_55 = __objc_msgSend_55Ptr.asFunction<
+  late final __objc_msgSend_56 = __objc_msgSend_56Ptr.asFunction<
       instancetype Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
           ffi.Pointer<pkg_ffi.Char>)>();
 
@@ -1668,44 +1705,17 @@
       _registerName1("initWithFormat:");
   late final ffi.Pointer<ObjCSel> _sel_initWithFormat_arguments_1 =
       _registerName1("initWithFormat:arguments:");
-  instancetype _objc_msgSend_56(
+  instancetype _objc_msgSend_57(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     ffi.Pointer<ObjCObject> format,
     ffi.Pointer<__va_list_tag> argList,
   ) {
-    return __objc_msgSend_56(
-      obj,
-      sel,
-      format,
-      argList,
-    );
-  }
-
-  late final __objc_msgSend_56Ptr = _lookup<
-      ffi.NativeFunction<
-          instancetype Function(
-              ffi.Pointer<ObjCObject>,
-              ffi.Pointer<ObjCSel>,
-              ffi.Pointer<ObjCObject>,
-              ffi.Pointer<__va_list_tag>)>>('objc_msgSend');
-  late final __objc_msgSend_56 = __objc_msgSend_56Ptr.asFunction<
-      instancetype Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
-          ffi.Pointer<ObjCObject>, ffi.Pointer<__va_list_tag>)>();
-
-  late final ffi.Pointer<ObjCSel> _sel_initWithFormat_locale_1 =
-      _registerName1("initWithFormat:locale:");
-  instancetype _objc_msgSend_57(
-    ffi.Pointer<ObjCObject> obj,
-    ffi.Pointer<ObjCSel> sel,
-    ffi.Pointer<ObjCObject> format,
-    ffi.Pointer<ObjCObject> locale,
-  ) {
     return __objc_msgSend_57(
       obj,
       sel,
       format,
-      locale,
+      argList,
     );
   }
 
@@ -1715,26 +1725,24 @@
               ffi.Pointer<ObjCObject>,
               ffi.Pointer<ObjCSel>,
               ffi.Pointer<ObjCObject>,
-              ffi.Pointer<ObjCObject>)>>('objc_msgSend');
+              ffi.Pointer<__va_list_tag>)>>('objc_msgSend');
   late final __objc_msgSend_57 = __objc_msgSend_57Ptr.asFunction<
       instancetype Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
-          ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCObject>)>();
+          ffi.Pointer<ObjCObject>, ffi.Pointer<__va_list_tag>)>();
 
-  late final ffi.Pointer<ObjCSel> _sel_initWithFormat_locale_arguments_1 =
-      _registerName1("initWithFormat:locale:arguments:");
+  late final ffi.Pointer<ObjCSel> _sel_initWithFormat_locale_1 =
+      _registerName1("initWithFormat:locale:");
   instancetype _objc_msgSend_58(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     ffi.Pointer<ObjCObject> format,
     ffi.Pointer<ObjCObject> locale,
-    ffi.Pointer<__va_list_tag> argList,
   ) {
     return __objc_msgSend_58(
       obj,
       sel,
       format,
       locale,
-      argList,
     );
   }
 
@@ -1744,9 +1752,38 @@
               ffi.Pointer<ObjCObject>,
               ffi.Pointer<ObjCSel>,
               ffi.Pointer<ObjCObject>,
+              ffi.Pointer<ObjCObject>)>>('objc_msgSend');
+  late final __objc_msgSend_58 = __objc_msgSend_58Ptr.asFunction<
+      instancetype Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+          ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCObject>)>();
+
+  late final ffi.Pointer<ObjCSel> _sel_initWithFormat_locale_arguments_1 =
+      _registerName1("initWithFormat:locale:arguments:");
+  instancetype _objc_msgSend_59(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    ffi.Pointer<ObjCObject> format,
+    ffi.Pointer<ObjCObject> locale,
+    ffi.Pointer<__va_list_tag> argList,
+  ) {
+    return __objc_msgSend_59(
+      obj,
+      sel,
+      format,
+      locale,
+      argList,
+    );
+  }
+
+  late final __objc_msgSend_59Ptr = _lookup<
+      ffi.NativeFunction<
+          instancetype Function(
+              ffi.Pointer<ObjCObject>,
+              ffi.Pointer<ObjCSel>,
+              ffi.Pointer<ObjCObject>,
               ffi.Pointer<ObjCObject>,
               ffi.Pointer<__va_list_tag>)>>('objc_msgSend');
-  late final __objc_msgSend_58 = __objc_msgSend_58Ptr.asFunction<
+  late final __objc_msgSend_59 = __objc_msgSend_59Ptr.asFunction<
       instancetype Function(
           ffi.Pointer<ObjCObject>,
           ffi.Pointer<ObjCSel>,
@@ -1756,13 +1793,13 @@
 
   late final ffi.Pointer<ObjCSel> _sel_initWithData_encoding_1 =
       _registerName1("initWithData:encoding:");
-  instancetype _objc_msgSend_59(
+  instancetype _objc_msgSend_60(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     ffi.Pointer<ObjCObject> data,
     int encoding,
   ) {
-    return __objc_msgSend_59(
+    return __objc_msgSend_60(
       obj,
       sel,
       data,
@@ -1770,54 +1807,22 @@
     );
   }
 
-  late final __objc_msgSend_59Ptr = _lookup<
+  late final __objc_msgSend_60Ptr = _lookup<
       ffi.NativeFunction<
           instancetype Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
               ffi.Pointer<ObjCObject>, NSStringEncoding)>>('objc_msgSend');
-  late final __objc_msgSend_59 = __objc_msgSend_59Ptr.asFunction<
+  late final __objc_msgSend_60 = __objc_msgSend_60Ptr.asFunction<
       instancetype Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
           ffi.Pointer<ObjCObject>, int)>();
 
   late final ffi.Pointer<ObjCSel> _sel_initWithBytes_length_encoding_1 =
       _registerName1("initWithBytes:length:encoding:");
-  instancetype _objc_msgSend_60(
-    ffi.Pointer<ObjCObject> obj,
-    ffi.Pointer<ObjCSel> sel,
-    ffi.Pointer<ffi.Void> bytes,
-    int len,
-    int encoding,
-  ) {
-    return __objc_msgSend_60(
-      obj,
-      sel,
-      bytes,
-      len,
-      encoding,
-    );
-  }
-
-  late final __objc_msgSend_60Ptr = _lookup<
-      ffi.NativeFunction<
-          instancetype Function(
-              ffi.Pointer<ObjCObject>,
-              ffi.Pointer<ObjCSel>,
-              ffi.Pointer<ffi.Void>,
-              NSUInteger,
-              NSStringEncoding)>>('objc_msgSend');
-  late final __objc_msgSend_60 = __objc_msgSend_60Ptr.asFunction<
-      instancetype Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
-          ffi.Pointer<ffi.Void>, int, int)>();
-
-  late final ffi.Pointer<ObjCSel>
-      _sel_initWithBytesNoCopy_length_encoding_freeWhenDone_1 =
-      _registerName1("initWithBytesNoCopy:length:encoding:freeWhenDone:");
   instancetype _objc_msgSend_61(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     ffi.Pointer<ffi.Void> bytes,
     int len,
     int encoding,
-    bool freeBuffer,
   ) {
     return __objc_msgSend_61(
       obj,
@@ -1825,7 +1830,6 @@
       bytes,
       len,
       encoding,
-      freeBuffer ? 1 : 0,
     );
   }
 
@@ -1836,22 +1840,21 @@
               ffi.Pointer<ObjCSel>,
               ffi.Pointer<ffi.Void>,
               NSUInteger,
-              NSStringEncoding,
-              ffi.Uint8)>>('objc_msgSend');
+              NSStringEncoding)>>('objc_msgSend');
   late final __objc_msgSend_61 = __objc_msgSend_61Ptr.asFunction<
       instancetype Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
-          ffi.Pointer<ffi.Void>, int, int, int)>();
+          ffi.Pointer<ffi.Void>, int, int)>();
 
   late final ffi.Pointer<ObjCSel>
-      _sel_initWithBytesNoCopy_length_encoding_deallocator_1 =
-      _registerName1("initWithBytesNoCopy:length:encoding:deallocator:");
+      _sel_initWithBytesNoCopy_length_encoding_freeWhenDone_1 =
+      _registerName1("initWithBytesNoCopy:length:encoding:freeWhenDone:");
   instancetype _objc_msgSend_62(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     ffi.Pointer<ffi.Void> bytes,
     int len,
     int encoding,
-    ffi.Pointer<ObjCObject> deallocator,
+    bool freeBuffer,
   ) {
     return __objc_msgSend_62(
       obj,
@@ -1859,7 +1862,7 @@
       bytes,
       len,
       encoding,
-      deallocator,
+      freeBuffer ? 1 : 0,
     );
   }
 
@@ -1871,10 +1874,44 @@
               ffi.Pointer<ffi.Void>,
               NSUInteger,
               NSStringEncoding,
-              ffi.Pointer<ObjCObject>)>>('objc_msgSend');
+              ffi.Uint8)>>('objc_msgSend');
   late final __objc_msgSend_62 = __objc_msgSend_62Ptr.asFunction<
       instancetype Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
-          ffi.Pointer<ffi.Void>, int, int, ffi.Pointer<ObjCObject>)>();
+          ffi.Pointer<ffi.Void>, int, int, int)>();
+
+  late final ffi.Pointer<ObjCSel>
+      _sel_initWithBytesNoCopy_length_encoding_deallocator_1 =
+      _registerName1("initWithBytesNoCopy:length:encoding:deallocator:");
+  instancetype _objc_msgSend_63(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    ffi.Pointer<ffi.Void> bytes,
+    int len,
+    int encoding,
+    ffi.Pointer<_ObjCBlock> deallocator,
+  ) {
+    return __objc_msgSend_63(
+      obj,
+      sel,
+      bytes,
+      len,
+      encoding,
+      deallocator,
+    );
+  }
+
+  late final __objc_msgSend_63Ptr = _lookup<
+      ffi.NativeFunction<
+          instancetype Function(
+              ffi.Pointer<ObjCObject>,
+              ffi.Pointer<ObjCSel>,
+              ffi.Pointer<ffi.Void>,
+              NSUInteger,
+              NSStringEncoding,
+              ffi.Pointer<_ObjCBlock>)>>('objc_msgSend');
+  late final __objc_msgSend_63 = __objc_msgSend_63Ptr.asFunction<
+      instancetype Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+          ffi.Pointer<ffi.Void>, int, int, ffi.Pointer<_ObjCBlock>)>();
 
   late final ffi.Pointer<ObjCSel> _sel_string1 = _registerName1("string");
   late final ffi.Pointer<ObjCSel> _sel_stringWithString_1 =
@@ -1889,13 +1926,13 @@
       _registerName1("localizedStringWithFormat:");
   late final ffi.Pointer<ObjCSel> _sel_initWithCString_encoding_1 =
       _registerName1("initWithCString:encoding:");
-  instancetype _objc_msgSend_63(
+  instancetype _objc_msgSend_64(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     ffi.Pointer<pkg_ffi.Char> nullTerminatedCString,
     int encoding,
   ) {
-    return __objc_msgSend_63(
+    return __objc_msgSend_64(
       obj,
       sel,
       nullTerminatedCString,
@@ -1903,11 +1940,11 @@
     );
   }
 
-  late final __objc_msgSend_63Ptr = _lookup<
+  late final __objc_msgSend_64Ptr = _lookup<
       ffi.NativeFunction<
           instancetype Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
               ffi.Pointer<pkg_ffi.Char>, NSStringEncoding)>>('objc_msgSend');
-  late final __objc_msgSend_63 = __objc_msgSend_63Ptr.asFunction<
+  late final __objc_msgSend_64 = __objc_msgSend_64Ptr.asFunction<
       instancetype Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
           ffi.Pointer<pkg_ffi.Char>, int)>();
 
@@ -1915,14 +1952,14 @@
       _registerName1("stringWithCString:encoding:");
   late final ffi.Pointer<ObjCSel> _sel_initWithContentsOfURL_encoding_error_1 =
       _registerName1("initWithContentsOfURL:encoding:error:");
-  instancetype _objc_msgSend_64(
+  instancetype _objc_msgSend_65(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     ffi.Pointer<ObjCObject> url,
     int enc,
     ffi.Pointer<ffi.Pointer<ObjCObject>> error,
   ) {
-    return __objc_msgSend_64(
+    return __objc_msgSend_65(
       obj,
       sel,
       url,
@@ -1931,7 +1968,7 @@
     );
   }
 
-  late final __objc_msgSend_64Ptr = _lookup<
+  late final __objc_msgSend_65Ptr = _lookup<
       ffi.NativeFunction<
           instancetype Function(
               ffi.Pointer<ObjCObject>,
@@ -1939,7 +1976,7 @@
               ffi.Pointer<ObjCObject>,
               NSStringEncoding,
               ffi.Pointer<ffi.Pointer<ObjCObject>>)>>('objc_msgSend');
-  late final __objc_msgSend_64 = __objc_msgSend_64Ptr.asFunction<
+  late final __objc_msgSend_65 = __objc_msgSend_65Ptr.asFunction<
       instancetype Function(
           ffi.Pointer<ObjCObject>,
           ffi.Pointer<ObjCSel>,
@@ -1958,14 +1995,14 @@
   late final ffi.Pointer<ObjCSel>
       _sel_initWithContentsOfURL_usedEncoding_error_1 =
       _registerName1("initWithContentsOfURL:usedEncoding:error:");
-  instancetype _objc_msgSend_65(
+  instancetype _objc_msgSend_66(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     ffi.Pointer<ObjCObject> url,
     ffi.Pointer<NSStringEncoding> enc,
     ffi.Pointer<ffi.Pointer<ObjCObject>> error,
   ) {
-    return __objc_msgSend_65(
+    return __objc_msgSend_66(
       obj,
       sel,
       url,
@@ -1974,7 +2011,7 @@
     );
   }
 
-  late final __objc_msgSend_65Ptr = _lookup<
+  late final __objc_msgSend_66Ptr = _lookup<
       ffi.NativeFunction<
           instancetype Function(
               ffi.Pointer<ObjCObject>,
@@ -1982,7 +2019,7 @@
               ffi.Pointer<ObjCObject>,
               ffi.Pointer<NSStringEncoding>,
               ffi.Pointer<ffi.Pointer<ObjCObject>>)>>('objc_msgSend');
-  late final __objc_msgSend_65 = __objc_msgSend_65Ptr.asFunction<
+  late final __objc_msgSend_66 = __objc_msgSend_66Ptr.asFunction<
       instancetype Function(
           ffi.Pointer<ObjCObject>,
           ffi.Pointer<ObjCSel>,
@@ -2003,7 +2040,7 @@
       _sel_stringEncodingForData_encodingOptions_convertedString_usedLossyConversion_1 =
       _registerName1(
           "stringEncodingForData:encodingOptions:convertedString:usedLossyConversion:");
-  int _objc_msgSend_66(
+  int _objc_msgSend_67(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     ffi.Pointer<ObjCObject> data,
@@ -2011,7 +2048,7 @@
     ffi.Pointer<ffi.Pointer<ObjCObject>> string,
     ffi.Pointer<ffi.Uint8> usedLossyConversion,
   ) {
-    return __objc_msgSend_66(
+    return __objc_msgSend_67(
       obj,
       sel,
       data,
@@ -2021,7 +2058,7 @@
     );
   }
 
-  late final __objc_msgSend_66Ptr = _lookup<
+  late final __objc_msgSend_67Ptr = _lookup<
       ffi.NativeFunction<
           NSStringEncoding Function(
               ffi.Pointer<ObjCObject>,
@@ -2030,7 +2067,7 @@
               ffi.Pointer<ObjCObject>,
               ffi.Pointer<ffi.Pointer<ObjCObject>>,
               ffi.Pointer<ffi.Uint8>)>>('objc_msgSend');
-  late final __objc_msgSend_66 = __objc_msgSend_66Ptr.asFunction<
+  late final __objc_msgSend_67 = __objc_msgSend_67Ptr.asFunction<
       int Function(
           ffi.Pointer<ObjCObject>,
           ffi.Pointer<ObjCSel>,
@@ -2045,21 +2082,21 @@
       _getClass1("NSDictionary");
   late final ffi.Pointer<ObjCSel> _sel_propertyListFromStringsFileFormat1 =
       _registerName1("propertyListFromStringsFileFormat");
-  ffi.Pointer<ObjCObject> _objc_msgSend_67(
+  ffi.Pointer<ObjCObject> _objc_msgSend_68(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
   ) {
-    return __objc_msgSend_67(
+    return __objc_msgSend_68(
       obj,
       sel,
     );
   }
 
-  late final __objc_msgSend_67Ptr = _lookup<
+  late final __objc_msgSend_68Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Pointer<ObjCObject> Function(
               ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>>('objc_msgSend');
-  late final __objc_msgSend_67 = __objc_msgSend_67Ptr.asFunction<
+  late final __objc_msgSend_68 = __objc_msgSend_68Ptr.asFunction<
       ffi.Pointer<ObjCObject> Function(
           ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>();
 
@@ -2070,35 +2107,35 @@
       _registerName1("cStringLength");
   late final ffi.Pointer<ObjCSel> _sel_getCString_1 =
       _registerName1("getCString:");
-  void _objc_msgSend_68(
+  void _objc_msgSend_69(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     ffi.Pointer<pkg_ffi.Char> bytes,
   ) {
-    return __objc_msgSend_68(
+    return __objc_msgSend_69(
       obj,
       sel,
       bytes,
     );
   }
 
-  late final __objc_msgSend_68Ptr = _lookup<
+  late final __objc_msgSend_69Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
               ffi.Pointer<pkg_ffi.Char>)>>('objc_msgSend');
-  late final __objc_msgSend_68 = __objc_msgSend_68Ptr.asFunction<
+  late final __objc_msgSend_69 = __objc_msgSend_69Ptr.asFunction<
       void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
           ffi.Pointer<pkg_ffi.Char>)>();
 
   late final ffi.Pointer<ObjCSel> _sel_getCString_maxLength_1 =
       _registerName1("getCString:maxLength:");
-  void _objc_msgSend_69(
+  void _objc_msgSend_70(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     ffi.Pointer<pkg_ffi.Char> bytes,
     int maxLength,
   ) {
-    return __objc_msgSend_69(
+    return __objc_msgSend_70(
       obj,
       sel,
       bytes,
@@ -2106,18 +2143,18 @@
     );
   }
 
-  late final __objc_msgSend_69Ptr = _lookup<
+  late final __objc_msgSend_70Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
               ffi.Pointer<pkg_ffi.Char>, NSUInteger)>>('objc_msgSend');
-  late final __objc_msgSend_69 = __objc_msgSend_69Ptr.asFunction<
+  late final __objc_msgSend_70 = __objc_msgSend_70Ptr.asFunction<
       void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
           ffi.Pointer<pkg_ffi.Char>, int)>();
 
   late final ffi.Pointer<ObjCSel>
       _sel_getCString_maxLength_range_remainingRange_1 =
       _registerName1("getCString:maxLength:range:remainingRange:");
-  void _objc_msgSend_70(
+  void _objc_msgSend_71(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     ffi.Pointer<pkg_ffi.Char> bytes,
@@ -2125,7 +2162,7 @@
     NSRange aRange,
     NSRangePointer leftoverRange,
   ) {
-    return __objc_msgSend_70(
+    return __objc_msgSend_71(
       obj,
       sel,
       bytes,
@@ -2135,7 +2172,7 @@
     );
   }
 
-  late final __objc_msgSend_70Ptr = _lookup<
+  late final __objc_msgSend_71Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Void Function(
               ffi.Pointer<ObjCObject>,
@@ -2144,19 +2181,19 @@
               NSUInteger,
               NSRange,
               NSRangePointer)>>('objc_msgSend');
-  late final __objc_msgSend_70 = __objc_msgSend_70Ptr.asFunction<
+  late final __objc_msgSend_71 = __objc_msgSend_71Ptr.asFunction<
       void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
           ffi.Pointer<pkg_ffi.Char>, int, NSRange, NSRangePointer)>();
 
   late final ffi.Pointer<ObjCSel> _sel_writeToFile_atomically_1 =
       _registerName1("writeToFile:atomically:");
-  bool _objc_msgSend_71(
+  bool _objc_msgSend_72(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     ffi.Pointer<ObjCObject> path,
     bool useAuxiliaryFile,
   ) {
-    return __objc_msgSend_71(
+    return __objc_msgSend_72(
           obj,
           sel,
           path,
@@ -2165,11 +2202,11 @@
         0;
   }
 
-  late final __objc_msgSend_71Ptr = _lookup<
+  late final __objc_msgSend_72Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Uint8 Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
               ffi.Pointer<ObjCObject>, ffi.Uint8)>>('objc_msgSend');
-  late final __objc_msgSend_71 = __objc_msgSend_71Ptr.asFunction<
+  late final __objc_msgSend_72 = __objc_msgSend_72Ptr.asFunction<
       int Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
           ffi.Pointer<ObjCObject>, int)>();
 
@@ -2186,14 +2223,14 @@
   late final ffi.Pointer<ObjCSel>
       _sel_initWithCStringNoCopy_length_freeWhenDone_1 =
       _registerName1("initWithCStringNoCopy:length:freeWhenDone:");
-  ffi.Pointer<ObjCObject> _objc_msgSend_72(
+  ffi.Pointer<ObjCObject> _objc_msgSend_73(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     ffi.Pointer<pkg_ffi.Char> bytes,
     int length,
     bool freeBuffer,
   ) {
-    return __objc_msgSend_72(
+    return __objc_msgSend_73(
       obj,
       sel,
       bytes,
@@ -2202,7 +2239,7 @@
     );
   }
 
-  late final __objc_msgSend_72Ptr = _lookup<
+  late final __objc_msgSend_73Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Pointer<ObjCObject> Function(
               ffi.Pointer<ObjCObject>,
@@ -2210,7 +2247,7 @@
               ffi.Pointer<pkg_ffi.Char>,
               NSUInteger,
               ffi.Uint8)>>('objc_msgSend');
-  late final __objc_msgSend_72 = __objc_msgSend_72Ptr.asFunction<
+  late final __objc_msgSend_73 = __objc_msgSend_73Ptr.asFunction<
       ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
           ffi.Pointer<ObjCSel>, ffi.Pointer<pkg_ffi.Char>, int, int)>();
 
@@ -2224,41 +2261,41 @@
       _registerName1("stringWithCString:");
   late final ffi.Pointer<ObjCSel> _sel_getCharacters_1 =
       _registerName1("getCharacters:");
-  void _objc_msgSend_73(
+  void _objc_msgSend_74(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     ffi.Pointer<unichar> buffer,
   ) {
-    return __objc_msgSend_73(
+    return __objc_msgSend_74(
       obj,
       sel,
       buffer,
     );
   }
 
-  late final __objc_msgSend_73Ptr = _lookup<
+  late final __objc_msgSend_74Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
               ffi.Pointer<unichar>)>>('objc_msgSend');
-  late final __objc_msgSend_73 = __objc_msgSend_73Ptr.asFunction<
+  late final __objc_msgSend_74 = __objc_msgSend_74Ptr.asFunction<
       void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
           ffi.Pointer<unichar>)>();
 
-  ffi.Pointer<ObjCObject> _objc_msgSend_74(
+  ffi.Pointer<ObjCObject> _objc_msgSend_75(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
   ) {
-    return __objc_msgSend_74(
+    return __objc_msgSend_75(
       obj,
       sel,
     );
   }
 
-  late final __objc_msgSend_74Ptr = _lookup<
+  late final __objc_msgSend_75Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Pointer<ObjCObject> Function(
               ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>>('objc_msgSend');
-  late final __objc_msgSend_74 = __objc_msgSend_74Ptr.asFunction<
+  late final __objc_msgSend_75 = __objc_msgSend_75Ptr.asFunction<
       ffi.Pointer<ObjCObject> Function(
           ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>();
 
@@ -2267,23 +2304,23 @@
   late final ffi.Pointer<ObjCSel> _sel_version1 = _registerName1("version");
   late final ffi.Pointer<ObjCSel> _sel_setVersion_1 =
       _registerName1("setVersion:");
-  void _objc_msgSend_75(
+  void _objc_msgSend_76(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     int aVersion,
   ) {
-    return __objc_msgSend_75(
+    return __objc_msgSend_76(
       obj,
       sel,
       aVersion,
     );
   }
 
-  late final __objc_msgSend_75Ptr = _lookup<
+  late final __objc_msgSend_76Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
               NSInteger)>>('objc_msgSend');
-  late final __objc_msgSend_75 = __objc_msgSend_75Ptr.asFunction<
+  late final __objc_msgSend_76 = __objc_msgSend_76Ptr.asFunction<
       void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, int)>();
 
   late final ffi.Pointer<ObjCSel> _sel_classForCoder1 =
@@ -2299,13 +2336,13 @@
   late final ffi.Pointer<ObjCObject> _class_NSValue1 = _getClass1("NSValue");
   late final ffi.Pointer<ObjCSel> _sel_getValue_size_1 =
       _registerName1("getValue:size:");
-  void _objc_msgSend_76(
+  void _objc_msgSend_77(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     ffi.Pointer<ffi.Void> value,
     int size,
   ) {
-    return __objc_msgSend_76(
+    return __objc_msgSend_77(
       obj,
       sel,
       value,
@@ -2313,45 +2350,18 @@
     );
   }
 
-  late final __objc_msgSend_76Ptr = _lookup<
+  late final __objc_msgSend_77Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
               ffi.Pointer<ffi.Void>, NSUInteger)>>('objc_msgSend');
-  late final __objc_msgSend_76 = __objc_msgSend_76Ptr.asFunction<
+  late final __objc_msgSend_77 = __objc_msgSend_77Ptr.asFunction<
       void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
           ffi.Pointer<ffi.Void>, int)>();
 
   late final ffi.Pointer<ObjCSel> _sel_objCType1 = _registerName1("objCType");
   late final ffi.Pointer<ObjCSel> _sel_initWithBytes_objCType_1 =
       _registerName1("initWithBytes:objCType:");
-  instancetype _objc_msgSend_77(
-    ffi.Pointer<ObjCObject> obj,
-    ffi.Pointer<ObjCSel> sel,
-    ffi.Pointer<ffi.Void> value,
-    ffi.Pointer<pkg_ffi.Char> type,
-  ) {
-    return __objc_msgSend_77(
-      obj,
-      sel,
-      value,
-      type,
-    );
-  }
-
-  late final __objc_msgSend_77Ptr = _lookup<
-      ffi.NativeFunction<
-          instancetype Function(
-              ffi.Pointer<ObjCObject>,
-              ffi.Pointer<ObjCSel>,
-              ffi.Pointer<ffi.Void>,
-              ffi.Pointer<pkg_ffi.Char>)>>('objc_msgSend');
-  late final __objc_msgSend_77 = __objc_msgSend_77Ptr.asFunction<
-      instancetype Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
-          ffi.Pointer<ffi.Void>, ffi.Pointer<pkg_ffi.Char>)>();
-
-  late final ffi.Pointer<ObjCSel> _sel_valueWithBytes_objCType_1 =
-      _registerName1("valueWithBytes:objCType:");
-  ffi.Pointer<ObjCObject> _objc_msgSend_78(
+  instancetype _objc_msgSend_78(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     ffi.Pointer<ffi.Void> value,
@@ -2367,12 +2377,39 @@
 
   late final __objc_msgSend_78Ptr = _lookup<
       ffi.NativeFunction<
-          ffi.Pointer<ObjCObject> Function(
+          instancetype Function(
               ffi.Pointer<ObjCObject>,
               ffi.Pointer<ObjCSel>,
               ffi.Pointer<ffi.Void>,
               ffi.Pointer<pkg_ffi.Char>)>>('objc_msgSend');
   late final __objc_msgSend_78 = __objc_msgSend_78Ptr.asFunction<
+      instancetype Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+          ffi.Pointer<ffi.Void>, ffi.Pointer<pkg_ffi.Char>)>();
+
+  late final ffi.Pointer<ObjCSel> _sel_valueWithBytes_objCType_1 =
+      _registerName1("valueWithBytes:objCType:");
+  ffi.Pointer<ObjCObject> _objc_msgSend_79(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    ffi.Pointer<ffi.Void> value,
+    ffi.Pointer<pkg_ffi.Char> type,
+  ) {
+    return __objc_msgSend_79(
+      obj,
+      sel,
+      value,
+      type,
+    );
+  }
+
+  late final __objc_msgSend_79Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ObjCObject> Function(
+              ffi.Pointer<ObjCObject>,
+              ffi.Pointer<ObjCSel>,
+              ffi.Pointer<ffi.Void>,
+              ffi.Pointer<pkg_ffi.Char>)>>('objc_msgSend');
+  late final __objc_msgSend_79 = __objc_msgSend_79Ptr.asFunction<
       ffi.Pointer<ObjCObject> Function(
           ffi.Pointer<ObjCObject>,
           ffi.Pointer<ObjCSel>,
@@ -2383,23 +2420,23 @@
       _registerName1("value:withObjCType:");
   late final ffi.Pointer<ObjCSel> _sel_valueWithNonretainedObject_1 =
       _registerName1("valueWithNonretainedObject:");
-  ffi.Pointer<ObjCObject> _objc_msgSend_79(
+  ffi.Pointer<ObjCObject> _objc_msgSend_80(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     ffi.Pointer<ObjCObject> anObject,
   ) {
-    return __objc_msgSend_79(
+    return __objc_msgSend_80(
       obj,
       sel,
       anObject,
     );
   }
 
-  late final __objc_msgSend_79Ptr = _lookup<
+  late final __objc_msgSend_80Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
               ffi.Pointer<ObjCSel>, ffi.Pointer<ObjCObject>)>>('objc_msgSend');
-  late final __objc_msgSend_79 = __objc_msgSend_79Ptr.asFunction<
+  late final __objc_msgSend_80 = __objc_msgSend_80Ptr.asFunction<
       ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
           ffi.Pointer<ObjCSel>, ffi.Pointer<ObjCObject>)>();
 
@@ -2407,135 +2444,113 @@
       _registerName1("nonretainedObjectValue");
   late final ffi.Pointer<ObjCSel> _sel_valueWithPointer_1 =
       _registerName1("valueWithPointer:");
-  ffi.Pointer<ObjCObject> _objc_msgSend_80(
+  ffi.Pointer<ObjCObject> _objc_msgSend_81(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     ffi.Pointer<ffi.Void> pointer,
   ) {
-    return __objc_msgSend_80(
+    return __objc_msgSend_81(
       obj,
       sel,
       pointer,
     );
   }
 
-  late final __objc_msgSend_80Ptr = _lookup<
+  late final __objc_msgSend_81Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
               ffi.Pointer<ObjCSel>, ffi.Pointer<ffi.Void>)>>('objc_msgSend');
-  late final __objc_msgSend_80 = __objc_msgSend_80Ptr.asFunction<
+  late final __objc_msgSend_81 = __objc_msgSend_81Ptr.asFunction<
       ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
           ffi.Pointer<ObjCSel>, ffi.Pointer<ffi.Void>)>();
 
   late final ffi.Pointer<ObjCSel> _sel_pointerValue1 =
       _registerName1("pointerValue");
-  ffi.Pointer<ffi.Void> _objc_msgSend_81(
+  ffi.Pointer<ffi.Void> _objc_msgSend_82(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
   ) {
-    return __objc_msgSend_81(
+    return __objc_msgSend_82(
       obj,
       sel,
     );
   }
 
-  late final __objc_msgSend_81Ptr = _lookup<
+  late final __objc_msgSend_82Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Pointer<ffi.Void> Function(
               ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>>('objc_msgSend');
-  late final __objc_msgSend_81 = __objc_msgSend_81Ptr.asFunction<
+  late final __objc_msgSend_82 = __objc_msgSend_82Ptr.asFunction<
       ffi.Pointer<ffi.Void> Function(
           ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>();
 
   late final ffi.Pointer<ObjCSel> _sel_isEqualToValue_1 =
       _registerName1("isEqualToValue:");
   late final ffi.Pointer<ObjCSel> _sel_getValue_1 = _registerName1("getValue:");
-  void _objc_msgSend_82(
+  void _objc_msgSend_83(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     ffi.Pointer<ffi.Void> value,
   ) {
-    return __objc_msgSend_82(
+    return __objc_msgSend_83(
       obj,
       sel,
       value,
     );
   }
 
-  late final __objc_msgSend_82Ptr = _lookup<
+  late final __objc_msgSend_83Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
               ffi.Pointer<ffi.Void>)>>('objc_msgSend');
-  late final __objc_msgSend_82 = __objc_msgSend_82Ptr.asFunction<
+  late final __objc_msgSend_83 = __objc_msgSend_83Ptr.asFunction<
       void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
           ffi.Pointer<ffi.Void>)>();
 
   late final ffi.Pointer<ObjCSel> _sel_valueWithRange_1 =
       _registerName1("valueWithRange:");
-  ffi.Pointer<ObjCObject> _objc_msgSend_83(
+  ffi.Pointer<ObjCObject> _objc_msgSend_84(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     NSRange range,
   ) {
-    return __objc_msgSend_83(
+    return __objc_msgSend_84(
       obj,
       sel,
       range,
     );
   }
 
-  late final __objc_msgSend_83Ptr = _lookup<
+  late final __objc_msgSend_84Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
               ffi.Pointer<ObjCSel>, NSRange)>>('objc_msgSend');
-  late final __objc_msgSend_83 = __objc_msgSend_83Ptr.asFunction<
+  late final __objc_msgSend_84 = __objc_msgSend_84Ptr.asFunction<
       ffi.Pointer<ObjCObject> Function(
           ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, NSRange)>();
 
   late final ffi.Pointer<ObjCSel> _sel_rangeValue1 =
       _registerName1("rangeValue");
-  NSRange _objc_msgSend_84(
+  NSRange _objc_msgSend_85(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
   ) {
-    return __objc_msgSend_84(
-      obj,
-      sel,
-    );
-  }
-
-  late final __objc_msgSend_84Ptr = _lookup<
-      ffi.NativeFunction<
-          NSRange Function(
-              ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>>('objc_msgSend');
-  late final __objc_msgSend_84 = __objc_msgSend_84Ptr.asFunction<
-      NSRange Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>();
-
-  late final ffi.Pointer<ObjCObject> _class_NSNumber1 = _getClass1("NSNumber");
-  late final ffi.Pointer<ObjCSel> _sel_initWithChar_1 =
-      _registerName1("initWithChar:");
-  ffi.Pointer<ObjCObject> _objc_msgSend_85(
-    ffi.Pointer<ObjCObject> obj,
-    ffi.Pointer<ObjCSel> sel,
-    int value,
-  ) {
     return __objc_msgSend_85(
       obj,
       sel,
-      value,
     );
   }
 
   late final __objc_msgSend_85Ptr = _lookup<
       ffi.NativeFunction<
-          ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
-              ffi.Pointer<ObjCSel>, pkg_ffi.Char)>>('objc_msgSend');
+          NSRange Function(
+              ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>>('objc_msgSend');
   late final __objc_msgSend_85 = __objc_msgSend_85Ptr.asFunction<
-      ffi.Pointer<ObjCObject> Function(
-          ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, int)>();
+      NSRange Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>();
 
-  late final ffi.Pointer<ObjCSel> _sel_initWithUnsignedChar_1 =
-      _registerName1("initWithUnsignedChar:");
+  late final ffi.Pointer<ObjCObject> _class_NSNumber1 = _getClass1("NSNumber");
+  late final ffi.Pointer<ObjCSel> _sel_initWithChar_1 =
+      _registerName1("initWithChar:");
   ffi.Pointer<ObjCObject> _objc_msgSend_86(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
@@ -2551,13 +2566,13 @@
   late final __objc_msgSend_86Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
-              ffi.Pointer<ObjCSel>, pkg_ffi.UnsignedChar)>>('objc_msgSend');
+              ffi.Pointer<ObjCSel>, pkg_ffi.Char)>>('objc_msgSend');
   late final __objc_msgSend_86 = __objc_msgSend_86Ptr.asFunction<
       ffi.Pointer<ObjCObject> Function(
           ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, int)>();
 
-  late final ffi.Pointer<ObjCSel> _sel_initWithShort_1 =
-      _registerName1("initWithShort:");
+  late final ffi.Pointer<ObjCSel> _sel_initWithUnsignedChar_1 =
+      _registerName1("initWithUnsignedChar:");
   ffi.Pointer<ObjCObject> _objc_msgSend_87(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
@@ -2573,13 +2588,13 @@
   late final __objc_msgSend_87Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
-              ffi.Pointer<ObjCSel>, pkg_ffi.Short)>>('objc_msgSend');
+              ffi.Pointer<ObjCSel>, pkg_ffi.UnsignedChar)>>('objc_msgSend');
   late final __objc_msgSend_87 = __objc_msgSend_87Ptr.asFunction<
       ffi.Pointer<ObjCObject> Function(
           ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, int)>();
 
-  late final ffi.Pointer<ObjCSel> _sel_initWithUnsignedShort_1 =
-      _registerName1("initWithUnsignedShort:");
+  late final ffi.Pointer<ObjCSel> _sel_initWithShort_1 =
+      _registerName1("initWithShort:");
   ffi.Pointer<ObjCObject> _objc_msgSend_88(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
@@ -2595,13 +2610,13 @@
   late final __objc_msgSend_88Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
-              ffi.Pointer<ObjCSel>, pkg_ffi.UnsignedShort)>>('objc_msgSend');
+              ffi.Pointer<ObjCSel>, pkg_ffi.Short)>>('objc_msgSend');
   late final __objc_msgSend_88 = __objc_msgSend_88Ptr.asFunction<
       ffi.Pointer<ObjCObject> Function(
           ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, int)>();
 
-  late final ffi.Pointer<ObjCSel> _sel_initWithInt_1 =
-      _registerName1("initWithInt:");
+  late final ffi.Pointer<ObjCSel> _sel_initWithUnsignedShort_1 =
+      _registerName1("initWithUnsignedShort:");
   ffi.Pointer<ObjCObject> _objc_msgSend_89(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
@@ -2617,13 +2632,13 @@
   late final __objc_msgSend_89Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
-              ffi.Pointer<ObjCSel>, pkg_ffi.Int)>>('objc_msgSend');
+              ffi.Pointer<ObjCSel>, pkg_ffi.UnsignedShort)>>('objc_msgSend');
   late final __objc_msgSend_89 = __objc_msgSend_89Ptr.asFunction<
       ffi.Pointer<ObjCObject> Function(
           ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, int)>();
 
-  late final ffi.Pointer<ObjCSel> _sel_initWithUnsignedInt_1 =
-      _registerName1("initWithUnsignedInt:");
+  late final ffi.Pointer<ObjCSel> _sel_initWithInt_1 =
+      _registerName1("initWithInt:");
   ffi.Pointer<ObjCObject> _objc_msgSend_90(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
@@ -2639,13 +2654,13 @@
   late final __objc_msgSend_90Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
-              ffi.Pointer<ObjCSel>, pkg_ffi.UnsignedInt)>>('objc_msgSend');
+              ffi.Pointer<ObjCSel>, pkg_ffi.Int)>>('objc_msgSend');
   late final __objc_msgSend_90 = __objc_msgSend_90Ptr.asFunction<
       ffi.Pointer<ObjCObject> Function(
           ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, int)>();
 
-  late final ffi.Pointer<ObjCSel> _sel_initWithLong_1 =
-      _registerName1("initWithLong:");
+  late final ffi.Pointer<ObjCSel> _sel_initWithUnsignedInt_1 =
+      _registerName1("initWithUnsignedInt:");
   ffi.Pointer<ObjCObject> _objc_msgSend_91(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
@@ -2661,13 +2676,13 @@
   late final __objc_msgSend_91Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
-              ffi.Pointer<ObjCSel>, pkg_ffi.Long)>>('objc_msgSend');
+              ffi.Pointer<ObjCSel>, pkg_ffi.UnsignedInt)>>('objc_msgSend');
   late final __objc_msgSend_91 = __objc_msgSend_91Ptr.asFunction<
       ffi.Pointer<ObjCObject> Function(
           ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, int)>();
 
-  late final ffi.Pointer<ObjCSel> _sel_initWithUnsignedLong_1 =
-      _registerName1("initWithUnsignedLong:");
+  late final ffi.Pointer<ObjCSel> _sel_initWithLong_1 =
+      _registerName1("initWithLong:");
   ffi.Pointer<ObjCObject> _objc_msgSend_92(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
@@ -2683,13 +2698,13 @@
   late final __objc_msgSend_92Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
-              ffi.Pointer<ObjCSel>, pkg_ffi.UnsignedLong)>>('objc_msgSend');
+              ffi.Pointer<ObjCSel>, pkg_ffi.Long)>>('objc_msgSend');
   late final __objc_msgSend_92 = __objc_msgSend_92Ptr.asFunction<
       ffi.Pointer<ObjCObject> Function(
           ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, int)>();
 
-  late final ffi.Pointer<ObjCSel> _sel_initWithLongLong_1 =
-      _registerName1("initWithLongLong:");
+  late final ffi.Pointer<ObjCSel> _sel_initWithUnsignedLong_1 =
+      _registerName1("initWithUnsignedLong:");
   ffi.Pointer<ObjCObject> _objc_msgSend_93(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
@@ -2705,13 +2720,13 @@
   late final __objc_msgSend_93Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
-              ffi.Pointer<ObjCSel>, pkg_ffi.LongLong)>>('objc_msgSend');
+              ffi.Pointer<ObjCSel>, pkg_ffi.UnsignedLong)>>('objc_msgSend');
   late final __objc_msgSend_93 = __objc_msgSend_93Ptr.asFunction<
       ffi.Pointer<ObjCObject> Function(
           ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, int)>();
 
-  late final ffi.Pointer<ObjCSel> _sel_initWithUnsignedLongLong_1 =
-      _registerName1("initWithUnsignedLongLong:");
+  late final ffi.Pointer<ObjCSel> _sel_initWithLongLong_1 =
+      _registerName1("initWithLongLong:");
   ffi.Pointer<ObjCObject> _objc_msgSend_94(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
@@ -2727,17 +2742,17 @@
   late final __objc_msgSend_94Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
-              ffi.Pointer<ObjCSel>, pkg_ffi.UnsignedLongLong)>>('objc_msgSend');
+              ffi.Pointer<ObjCSel>, pkg_ffi.LongLong)>>('objc_msgSend');
   late final __objc_msgSend_94 = __objc_msgSend_94Ptr.asFunction<
       ffi.Pointer<ObjCObject> Function(
           ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, int)>();
 
-  late final ffi.Pointer<ObjCSel> _sel_initWithFloat_1 =
-      _registerName1("initWithFloat:");
+  late final ffi.Pointer<ObjCSel> _sel_initWithUnsignedLongLong_1 =
+      _registerName1("initWithUnsignedLongLong:");
   ffi.Pointer<ObjCObject> _objc_msgSend_95(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
-    double value,
+    int value,
   ) {
     return __objc_msgSend_95(
       obj,
@@ -2749,13 +2764,13 @@
   late final __objc_msgSend_95Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
-              ffi.Pointer<ObjCSel>, ffi.Float)>>('objc_msgSend');
+              ffi.Pointer<ObjCSel>, pkg_ffi.UnsignedLongLong)>>('objc_msgSend');
   late final __objc_msgSend_95 = __objc_msgSend_95Ptr.asFunction<
       ffi.Pointer<ObjCObject> Function(
-          ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, double)>();
+          ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, int)>();
 
-  late final ffi.Pointer<ObjCSel> _sel_initWithDouble_1 =
-      _registerName1("initWithDouble:");
+  late final ffi.Pointer<ObjCSel> _sel_initWithFloat_1 =
+      _registerName1("initWithFloat:");
   ffi.Pointer<ObjCObject> _objc_msgSend_96(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
@@ -2771,31 +2786,53 @@
   late final __objc_msgSend_96Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
-              ffi.Pointer<ObjCSel>, ffi.Double)>>('objc_msgSend');
+              ffi.Pointer<ObjCSel>, ffi.Float)>>('objc_msgSend');
   late final __objc_msgSend_96 = __objc_msgSend_96Ptr.asFunction<
       ffi.Pointer<ObjCObject> Function(
           ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, double)>();
 
-  late final ffi.Pointer<ObjCSel> _sel_initWithBool_1 =
-      _registerName1("initWithBool:");
+  late final ffi.Pointer<ObjCSel> _sel_initWithDouble_1 =
+      _registerName1("initWithDouble:");
   ffi.Pointer<ObjCObject> _objc_msgSend_97(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
-    bool value,
+    double value,
   ) {
     return __objc_msgSend_97(
       obj,
       sel,
-      value ? 1 : 0,
+      value,
     );
   }
 
   late final __objc_msgSend_97Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
-              ffi.Pointer<ObjCSel>, ffi.Uint8)>>('objc_msgSend');
+              ffi.Pointer<ObjCSel>, ffi.Double)>>('objc_msgSend');
   late final __objc_msgSend_97 = __objc_msgSend_97Ptr.asFunction<
       ffi.Pointer<ObjCObject> Function(
+          ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, double)>();
+
+  late final ffi.Pointer<ObjCSel> _sel_initWithBool_1 =
+      _registerName1("initWithBool:");
+  ffi.Pointer<ObjCObject> _objc_msgSend_98(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    bool value,
+  ) {
+    return __objc_msgSend_98(
+      obj,
+      sel,
+      value ? 1 : 0,
+    );
+  }
+
+  late final __objc_msgSend_98Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
+              ffi.Pointer<ObjCSel>, ffi.Uint8)>>('objc_msgSend');
+  late final __objc_msgSend_98 = __objc_msgSend_98Ptr.asFunction<
+      ffi.Pointer<ObjCObject> Function(
           ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, int)>();
 
   late final ffi.Pointer<ObjCSel> _sel_initWithInteger_1 =
@@ -2803,25 +2840,6 @@
   late final ffi.Pointer<ObjCSel> _sel_initWithUnsignedInteger_1 =
       _registerName1("initWithUnsignedInteger:");
   late final ffi.Pointer<ObjCSel> _sel_charValue1 = _registerName1("charValue");
-  int _objc_msgSend_98(
-    ffi.Pointer<ObjCObject> obj,
-    ffi.Pointer<ObjCSel> sel,
-  ) {
-    return __objc_msgSend_98(
-      obj,
-      sel,
-    );
-  }
-
-  late final __objc_msgSend_98Ptr = _lookup<
-      ffi.NativeFunction<
-          pkg_ffi.Char Function(
-              ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>>('objc_msgSend');
-  late final __objc_msgSend_98 = __objc_msgSend_98Ptr.asFunction<
-      int Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>();
-
-  late final ffi.Pointer<ObjCSel> _sel_unsignedCharValue1 =
-      _registerName1("unsignedCharValue");
   int _objc_msgSend_99(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
@@ -2834,13 +2852,13 @@
 
   late final __objc_msgSend_99Ptr = _lookup<
       ffi.NativeFunction<
-          pkg_ffi.UnsignedChar Function(
+          pkg_ffi.Char Function(
               ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>>('objc_msgSend');
   late final __objc_msgSend_99 = __objc_msgSend_99Ptr.asFunction<
       int Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>();
 
-  late final ffi.Pointer<ObjCSel> _sel_shortValue1 =
-      _registerName1("shortValue");
+  late final ffi.Pointer<ObjCSel> _sel_unsignedCharValue1 =
+      _registerName1("unsignedCharValue");
   int _objc_msgSend_100(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
@@ -2853,13 +2871,13 @@
 
   late final __objc_msgSend_100Ptr = _lookup<
       ffi.NativeFunction<
-          pkg_ffi.Short Function(
+          pkg_ffi.UnsignedChar Function(
               ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>>('objc_msgSend');
   late final __objc_msgSend_100 = __objc_msgSend_100Ptr.asFunction<
       int Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>();
 
-  late final ffi.Pointer<ObjCSel> _sel_unsignedShortValue1 =
-      _registerName1("unsignedShortValue");
+  late final ffi.Pointer<ObjCSel> _sel_shortValue1 =
+      _registerName1("shortValue");
   int _objc_msgSend_101(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
@@ -2872,13 +2890,13 @@
 
   late final __objc_msgSend_101Ptr = _lookup<
       ffi.NativeFunction<
-          pkg_ffi.UnsignedShort Function(
+          pkg_ffi.Short Function(
               ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>>('objc_msgSend');
   late final __objc_msgSend_101 = __objc_msgSend_101Ptr.asFunction<
       int Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>();
 
-  late final ffi.Pointer<ObjCSel> _sel_unsignedIntValue1 =
-      _registerName1("unsignedIntValue");
+  late final ffi.Pointer<ObjCSel> _sel_unsignedShortValue1 =
+      _registerName1("unsignedShortValue");
   int _objc_msgSend_102(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
@@ -2891,16 +2909,13 @@
 
   late final __objc_msgSend_102Ptr = _lookup<
       ffi.NativeFunction<
-          pkg_ffi.UnsignedInt Function(
+          pkg_ffi.UnsignedShort Function(
               ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>>('objc_msgSend');
   late final __objc_msgSend_102 = __objc_msgSend_102Ptr.asFunction<
       int Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>();
 
-  late final ffi.Pointer<ObjCSel> _sel_longValue1 = _registerName1("longValue");
-  late final ffi.Pointer<ObjCSel> _sel_unsignedLongValue1 =
-      _registerName1("unsignedLongValue");
-  late final ffi.Pointer<ObjCSel> _sel_unsignedLongLongValue1 =
-      _registerName1("unsignedLongLongValue");
+  late final ffi.Pointer<ObjCSel> _sel_unsignedIntValue1 =
+      _registerName1("unsignedIntValue");
   int _objc_msgSend_103(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
@@ -2913,11 +2928,33 @@
 
   late final __objc_msgSend_103Ptr = _lookup<
       ffi.NativeFunction<
-          pkg_ffi.UnsignedLongLong Function(
+          pkg_ffi.UnsignedInt Function(
               ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>>('objc_msgSend');
   late final __objc_msgSend_103 = __objc_msgSend_103Ptr.asFunction<
       int Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>();
 
+  late final ffi.Pointer<ObjCSel> _sel_longValue1 = _registerName1("longValue");
+  late final ffi.Pointer<ObjCSel> _sel_unsignedLongValue1 =
+      _registerName1("unsignedLongValue");
+  late final ffi.Pointer<ObjCSel> _sel_unsignedLongLongValue1 =
+      _registerName1("unsignedLongLongValue");
+  int _objc_msgSend_104(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+  ) {
+    return __objc_msgSend_104(
+      obj,
+      sel,
+    );
+  }
+
+  late final __objc_msgSend_104Ptr = _lookup<
+      ffi.NativeFunction<
+          pkg_ffi.UnsignedLongLong Function(
+              ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>>('objc_msgSend');
+  late final __objc_msgSend_104 = __objc_msgSend_104Ptr.asFunction<
+      int Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>();
+
   late final ffi.Pointer<ObjCSel> _sel_unsignedIntegerValue1 =
       _registerName1("unsignedIntegerValue");
   late final ffi.Pointer<ObjCSel> _sel_stringValue1 =
@@ -2966,35 +3003,35 @@
   late final ffi.Pointer<ObjCSel> _sel_count1 = _registerName1("count");
   late final ffi.Pointer<ObjCSel> _sel_objectAtIndex_1 =
       _registerName1("objectAtIndex:");
-  ffi.Pointer<ObjCObject> _objc_msgSend_104(
+  ffi.Pointer<ObjCObject> _objc_msgSend_105(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     int index,
   ) {
-    return __objc_msgSend_104(
+    return __objc_msgSend_105(
       obj,
       sel,
       index,
     );
   }
 
-  late final __objc_msgSend_104Ptr = _lookup<
+  late final __objc_msgSend_105Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
               ffi.Pointer<ObjCSel>, NSUInteger)>>('objc_msgSend');
-  late final __objc_msgSend_104 = __objc_msgSend_104Ptr.asFunction<
+  late final __objc_msgSend_105 = __objc_msgSend_105Ptr.asFunction<
       ffi.Pointer<ObjCObject> Function(
           ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, int)>();
 
   late final ffi.Pointer<ObjCSel> _sel_initWithObjects_count_1 =
       _registerName1("initWithObjects:count:");
-  instancetype _objc_msgSend_105(
+  instancetype _objc_msgSend_106(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     ffi.Pointer<ffi.Pointer<ObjCObject>> objects,
     int cnt,
   ) {
-    return __objc_msgSend_105(
+    return __objc_msgSend_106(
       obj,
       sel,
       objects,
@@ -3002,14 +3039,14 @@
     );
   }
 
-  late final __objc_msgSend_105Ptr = _lookup<
+  late final __objc_msgSend_106Ptr = _lookup<
       ffi.NativeFunction<
           instancetype Function(
               ffi.Pointer<ObjCObject>,
               ffi.Pointer<ObjCSel>,
               ffi.Pointer<ffi.Pointer<ObjCObject>>,
               NSUInteger)>>('objc_msgSend');
-  late final __objc_msgSend_105 = __objc_msgSend_105Ptr.asFunction<
+  late final __objc_msgSend_106 = __objc_msgSend_106Ptr.asFunction<
       instancetype Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
           ffi.Pointer<ffi.Pointer<ObjCObject>>, int)>();
 
@@ -3019,13 +3056,13 @@
       _registerName1("containsObject:");
   late final ffi.Pointer<ObjCSel> _sel_descriptionWithLocale_indent_1 =
       _registerName1("descriptionWithLocale:indent:");
-  ffi.Pointer<ObjCObject> _objc_msgSend_106(
+  ffi.Pointer<ObjCObject> _objc_msgSend_107(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     ffi.Pointer<ObjCObject> locale,
     int level,
   ) {
-    return __objc_msgSend_106(
+    return __objc_msgSend_107(
       obj,
       sel,
       locale,
@@ -3033,14 +3070,14 @@
     );
   }
 
-  late final __objc_msgSend_106Ptr = _lookup<
+  late final __objc_msgSend_107Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Pointer<ObjCObject> Function(
               ffi.Pointer<ObjCObject>,
               ffi.Pointer<ObjCSel>,
               ffi.Pointer<ObjCObject>,
               NSUInteger)>>('objc_msgSend');
-  late final __objc_msgSend_106 = __objc_msgSend_106Ptr.asFunction<
+  late final __objc_msgSend_107 = __objc_msgSend_107Ptr.asFunction<
       ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
           ffi.Pointer<ObjCSel>, ffi.Pointer<ObjCObject>, int)>();
 
@@ -3048,13 +3085,13 @@
       _registerName1("firstObjectCommonWithArray:");
   late final ffi.Pointer<ObjCSel> _sel_getObjects_range_1 =
       _registerName1("getObjects:range:");
-  void _objc_msgSend_107(
+  void _objc_msgSend_108(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     ffi.Pointer<ffi.Pointer<ObjCObject>> objects,
     NSRange range,
   ) {
-    return __objc_msgSend_107(
+    return __objc_msgSend_108(
       obj,
       sel,
       objects,
@@ -3062,45 +3099,45 @@
     );
   }
 
-  late final __objc_msgSend_107Ptr = _lookup<
+  late final __objc_msgSend_108Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
               ffi.Pointer<ffi.Pointer<ObjCObject>>, NSRange)>>('objc_msgSend');
-  late final __objc_msgSend_107 = __objc_msgSend_107Ptr.asFunction<
+  late final __objc_msgSend_108 = __objc_msgSend_108Ptr.asFunction<
       void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
           ffi.Pointer<ffi.Pointer<ObjCObject>>, NSRange)>();
 
   late final ffi.Pointer<ObjCSel> _sel_indexOfObject_1 =
       _registerName1("indexOfObject:");
-  int _objc_msgSend_108(
+  int _objc_msgSend_109(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     ffi.Pointer<ObjCObject> anObject,
   ) {
-    return __objc_msgSend_108(
+    return __objc_msgSend_109(
       obj,
       sel,
       anObject,
     );
   }
 
-  late final __objc_msgSend_108Ptr = _lookup<
+  late final __objc_msgSend_109Ptr = _lookup<
       ffi.NativeFunction<
           NSUInteger Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
               ffi.Pointer<ObjCObject>)>>('objc_msgSend');
-  late final __objc_msgSend_108 = __objc_msgSend_108Ptr.asFunction<
+  late final __objc_msgSend_109 = __objc_msgSend_109Ptr.asFunction<
       int Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
           ffi.Pointer<ObjCObject>)>();
 
   late final ffi.Pointer<ObjCSel> _sel_indexOfObject_inRange_1 =
       _registerName1("indexOfObject:inRange:");
-  int _objc_msgSend_109(
+  int _objc_msgSend_110(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     ffi.Pointer<ObjCObject> anObject,
     NSRange range,
   ) {
-    return __objc_msgSend_109(
+    return __objc_msgSend_110(
       obj,
       sel,
       anObject,
@@ -3108,11 +3145,11 @@
     );
   }
 
-  late final __objc_msgSend_109Ptr = _lookup<
+  late final __objc_msgSend_110Ptr = _lookup<
       ffi.NativeFunction<
           NSUInteger Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
               ffi.Pointer<ObjCObject>, NSRange)>>('objc_msgSend');
-  late final __objc_msgSend_109 = __objc_msgSend_109Ptr.asFunction<
+  late final __objc_msgSend_110 = __objc_msgSend_110Ptr.asFunction<
       int Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
           ffi.Pointer<ObjCObject>, NSRange)>();
 
@@ -3130,13 +3167,13 @@
       _registerName1("sortedArrayHint");
   late final ffi.Pointer<ObjCSel> _sel_writeToURL_error_1 =
       _registerName1("writeToURL:error:");
-  bool _objc_msgSend_110(
+  bool _objc_msgSend_111(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     ffi.Pointer<ObjCObject> url,
     ffi.Pointer<ffi.Pointer<ObjCObject>> error,
   ) {
-    return __objc_msgSend_110(
+    return __objc_msgSend_111(
           obj,
           sel,
           url,
@@ -3145,14 +3182,14 @@
         0;
   }
 
-  late final __objc_msgSend_110Ptr = _lookup<
+  late final __objc_msgSend_111Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Uint8 Function(
               ffi.Pointer<ObjCObject>,
               ffi.Pointer<ObjCSel>,
               ffi.Pointer<ObjCObject>,
               ffi.Pointer<ffi.Pointer<ObjCObject>>)>>('objc_msgSend');
-  late final __objc_msgSend_110 = __objc_msgSend_110Ptr.asFunction<
+  late final __objc_msgSend_111 = __objc_msgSend_111Ptr.asFunction<
       int Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
           ffi.Pointer<ObjCObject>, ffi.Pointer<ffi.Pointer<ObjCObject>>)>();
 
@@ -3160,13 +3197,13 @@
       _registerName1("makeObjectsPerformSelector:");
   late final ffi.Pointer<ObjCSel> _sel_makeObjectsPerformSelector_withObject_1 =
       _registerName1("makeObjectsPerformSelector:withObject:");
-  void _objc_msgSend_111(
+  void _objc_msgSend_112(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     ffi.Pointer<ObjCSel> aSelector,
     ffi.Pointer<ObjCObject> argument,
   ) {
-    return __objc_msgSend_111(
+    return __objc_msgSend_112(
       obj,
       sel,
       aSelector,
@@ -3174,11 +3211,11 @@
     );
   }
 
-  late final __objc_msgSend_111Ptr = _lookup<
+  late final __objc_msgSend_112Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
               ffi.Pointer<ObjCSel>, ffi.Pointer<ObjCObject>)>>('objc_msgSend');
-  late final __objc_msgSend_111 = __objc_msgSend_111Ptr.asFunction<
+  late final __objc_msgSend_112 = __objc_msgSend_112Ptr.asFunction<
       void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
           ffi.Pointer<ObjCSel>, ffi.Pointer<ObjCObject>)>();
 
@@ -3186,73 +3223,113 @@
       _registerName1("objectAtIndexedSubscript:");
   late final ffi.Pointer<ObjCSel> _sel_enumerateObjectsUsingBlock_1 =
       _registerName1("enumerateObjectsUsingBlock:");
-  late final ffi.Pointer<ObjCSel>
-      _sel_enumerateObjectsWithOptions_usingBlock_1 =
-      _registerName1("enumerateObjectsWithOptions:usingBlock:");
-  void _objc_msgSend_112(
-    ffi.Pointer<ObjCObject> obj,
-    ffi.Pointer<ObjCSel> sel,
-    int opts,
-    ffi.Pointer<ObjCObject> block,
-  ) {
-    return __objc_msgSend_112(
-      obj,
-      sel,
-      opts,
-      block,
-    );
-  }
-
-  late final __objc_msgSend_112Ptr = _lookup<
-      ffi.NativeFunction<
-          ffi.Void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
-              ffi.Int32, ffi.Pointer<ObjCObject>)>>('objc_msgSend');
-  late final __objc_msgSend_112 = __objc_msgSend_112Ptr.asFunction<
-      void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, int,
-          ffi.Pointer<ObjCObject>)>();
-
-  late final ffi.Pointer<ObjCSel>
-      _sel_enumerateObjectsAtIndexes_options_usingBlock_1 =
-      _registerName1("enumerateObjectsAtIndexes:options:usingBlock:");
   void _objc_msgSend_113(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
-    ffi.Pointer<ObjCObject> s,
-    int opts,
-    ffi.Pointer<ObjCObject> block,
+    ffi.Pointer<_ObjCBlock> block,
   ) {
     return __objc_msgSend_113(
       obj,
       sel,
-      s,
-      opts,
       block,
     );
   }
 
   late final __objc_msgSend_113Ptr = _lookup<
       ffi.NativeFunction<
+          ffi.Void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+              ffi.Pointer<_ObjCBlock>)>>('objc_msgSend');
+  late final __objc_msgSend_113 = __objc_msgSend_113Ptr.asFunction<
+      void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+          ffi.Pointer<_ObjCBlock>)>();
+
+  late final ffi.Pointer<ObjCSel>
+      _sel_enumerateObjectsWithOptions_usingBlock_1 =
+      _registerName1("enumerateObjectsWithOptions:usingBlock:");
+  void _objc_msgSend_114(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    int opts,
+    ffi.Pointer<_ObjCBlock> block,
+  ) {
+    return __objc_msgSend_114(
+      obj,
+      sel,
+      opts,
+      block,
+    );
+  }
+
+  late final __objc_msgSend_114Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+              ffi.Int32, ffi.Pointer<_ObjCBlock>)>>('objc_msgSend');
+  late final __objc_msgSend_114 = __objc_msgSend_114Ptr.asFunction<
+      void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, int,
+          ffi.Pointer<_ObjCBlock>)>();
+
+  late final ffi.Pointer<ObjCSel>
+      _sel_enumerateObjectsAtIndexes_options_usingBlock_1 =
+      _registerName1("enumerateObjectsAtIndexes:options:usingBlock:");
+  void _objc_msgSend_115(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    ffi.Pointer<ObjCObject> s,
+    int opts,
+    ffi.Pointer<_ObjCBlock> block,
+  ) {
+    return __objc_msgSend_115(
+      obj,
+      sel,
+      s,
+      opts,
+      block,
+    );
+  }
+
+  late final __objc_msgSend_115Ptr = _lookup<
+      ffi.NativeFunction<
           ffi.Void Function(
               ffi.Pointer<ObjCObject>,
               ffi.Pointer<ObjCSel>,
               ffi.Pointer<ObjCObject>,
               ffi.Int32,
-              ffi.Pointer<ObjCObject>)>>('objc_msgSend');
-  late final __objc_msgSend_113 = __objc_msgSend_113Ptr.asFunction<
+              ffi.Pointer<_ObjCBlock>)>>('objc_msgSend');
+  late final __objc_msgSend_115 = __objc_msgSend_115Ptr.asFunction<
       void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
-          ffi.Pointer<ObjCObject>, int, ffi.Pointer<ObjCObject>)>();
+          ffi.Pointer<ObjCObject>, int, ffi.Pointer<_ObjCBlock>)>();
 
   late final ffi.Pointer<ObjCSel> _sel_indexOfObjectPassingTest_1 =
       _registerName1("indexOfObjectPassingTest:");
+  int _objc_msgSend_116(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    ffi.Pointer<_ObjCBlock> predicate,
+  ) {
+    return __objc_msgSend_116(
+      obj,
+      sel,
+      predicate,
+    );
+  }
+
+  late final __objc_msgSend_116Ptr = _lookup<
+      ffi.NativeFunction<
+          NSUInteger Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+              ffi.Pointer<_ObjCBlock>)>>('objc_msgSend');
+  late final __objc_msgSend_116 = __objc_msgSend_116Ptr.asFunction<
+      int Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+          ffi.Pointer<_ObjCBlock>)>();
+
   late final ffi.Pointer<ObjCSel> _sel_indexOfObjectWithOptions_passingTest_1 =
       _registerName1("indexOfObjectWithOptions:passingTest:");
-  int _objc_msgSend_114(
+  int _objc_msgSend_117(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     int opts,
-    ffi.Pointer<ObjCObject> predicate,
+    ffi.Pointer<_ObjCBlock> predicate,
   ) {
-    return __objc_msgSend_114(
+    return __objc_msgSend_117(
       obj,
       sel,
       opts,
@@ -3260,25 +3337,25 @@
     );
   }
 
-  late final __objc_msgSend_114Ptr = _lookup<
+  late final __objc_msgSend_117Ptr = _lookup<
       ffi.NativeFunction<
           NSUInteger Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
-              ffi.Int32, ffi.Pointer<ObjCObject>)>>('objc_msgSend');
-  late final __objc_msgSend_114 = __objc_msgSend_114Ptr.asFunction<
+              ffi.Int32, ffi.Pointer<_ObjCBlock>)>>('objc_msgSend');
+  late final __objc_msgSend_117 = __objc_msgSend_117Ptr.asFunction<
       int Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, int,
-          ffi.Pointer<ObjCObject>)>();
+          ffi.Pointer<_ObjCBlock>)>();
 
   late final ffi.Pointer<ObjCSel>
       _sel_indexOfObjectAtIndexes_options_passingTest_1 =
       _registerName1("indexOfObjectAtIndexes:options:passingTest:");
-  int _objc_msgSend_115(
+  int _objc_msgSend_118(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     ffi.Pointer<ObjCObject> s,
     int opts,
-    ffi.Pointer<ObjCObject> predicate,
+    ffi.Pointer<_ObjCBlock> predicate,
   ) {
-    return __objc_msgSend_115(
+    return __objc_msgSend_118(
       obj,
       sel,
       s,
@@ -3287,17 +3364,17 @@
     );
   }
 
-  late final __objc_msgSend_115Ptr = _lookup<
+  late final __objc_msgSend_118Ptr = _lookup<
       ffi.NativeFunction<
           NSUInteger Function(
               ffi.Pointer<ObjCObject>,
               ffi.Pointer<ObjCSel>,
               ffi.Pointer<ObjCObject>,
               ffi.Int32,
-              ffi.Pointer<ObjCObject>)>>('objc_msgSend');
-  late final __objc_msgSend_115 = __objc_msgSend_115Ptr.asFunction<
+              ffi.Pointer<_ObjCBlock>)>>('objc_msgSend');
+  late final __objc_msgSend_118 = __objc_msgSend_118Ptr.asFunction<
       int Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
-          ffi.Pointer<ObjCObject>, int, ffi.Pointer<ObjCObject>)>();
+          ffi.Pointer<ObjCObject>, int, ffi.Pointer<_ObjCBlock>)>();
 
   late final ffi.Pointer<ObjCObject> _class_NSIndexSet1 =
       _getClass1("NSIndexSet");
@@ -3306,23 +3383,23 @@
       _registerName1("indexSetWithIndex:");
   late final ffi.Pointer<ObjCSel> _sel_indexSetWithIndexesInRange_1 =
       _registerName1("indexSetWithIndexesInRange:");
-  instancetype _objc_msgSend_116(
+  instancetype _objc_msgSend_119(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     NSRange range,
   ) {
-    return __objc_msgSend_116(
+    return __objc_msgSend_119(
       obj,
       sel,
       range,
     );
   }
 
-  late final __objc_msgSend_116Ptr = _lookup<
+  late final __objc_msgSend_119Ptr = _lookup<
       ffi.NativeFunction<
           instancetype Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
               NSRange)>>('objc_msgSend');
-  late final __objc_msgSend_116 = __objc_msgSend_116Ptr.asFunction<
+  late final __objc_msgSend_119 = __objc_msgSend_119Ptr.asFunction<
       instancetype Function(
           ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, NSRange)>();
 
@@ -3347,14 +3424,14 @@
       _registerName1("indexLessThanOrEqualToIndex:");
   late final ffi.Pointer<ObjCSel> _sel_getIndexes_maxCount_inIndexRange_1 =
       _registerName1("getIndexes:maxCount:inIndexRange:");
-  int _objc_msgSend_117(
+  int _objc_msgSend_120(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     ffi.Pointer<NSUInteger> indexBuffer,
     int bufferSize,
     NSRangePointer range,
   ) {
-    return __objc_msgSend_117(
+    return __objc_msgSend_120(
       obj,
       sel,
       indexBuffer,
@@ -3363,7 +3440,7 @@
     );
   }
 
-  late final __objc_msgSend_117Ptr = _lookup<
+  late final __objc_msgSend_120Ptr = _lookup<
       ffi.NativeFunction<
           NSUInteger Function(
               ffi.Pointer<ObjCObject>,
@@ -3371,41 +3448,41 @@
               ffi.Pointer<NSUInteger>,
               NSUInteger,
               NSRangePointer)>>('objc_msgSend');
-  late final __objc_msgSend_117 = __objc_msgSend_117Ptr.asFunction<
+  late final __objc_msgSend_120 = __objc_msgSend_120Ptr.asFunction<
       int Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
           ffi.Pointer<NSUInteger>, int, NSRangePointer)>();
 
   late final ffi.Pointer<ObjCSel> _sel_countOfIndexesInRange_1 =
       _registerName1("countOfIndexesInRange:");
-  int _objc_msgSend_118(
+  int _objc_msgSend_121(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     NSRange range,
   ) {
-    return __objc_msgSend_118(
+    return __objc_msgSend_121(
       obj,
       sel,
       range,
     );
   }
 
-  late final __objc_msgSend_118Ptr = _lookup<
+  late final __objc_msgSend_121Ptr = _lookup<
       ffi.NativeFunction<
           NSUInteger Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
               NSRange)>>('objc_msgSend');
-  late final __objc_msgSend_118 = __objc_msgSend_118Ptr.asFunction<
+  late final __objc_msgSend_121 = __objc_msgSend_121Ptr.asFunction<
       int Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, NSRange)>();
 
   late final ffi.Pointer<ObjCSel> _sel_containsIndex_1 =
       _registerName1("containsIndex:");
   late final ffi.Pointer<ObjCSel> _sel_containsIndexesInRange_1 =
       _registerName1("containsIndexesInRange:");
-  bool _objc_msgSend_119(
+  bool _objc_msgSend_122(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     NSRange range,
   ) {
-    return __objc_msgSend_119(
+    return __objc_msgSend_122(
           obj,
           sel,
           range,
@@ -3413,11 +3490,11 @@
         0;
   }
 
-  late final __objc_msgSend_119Ptr = _lookup<
+  late final __objc_msgSend_122Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Uint8 Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
               NSRange)>>('objc_msgSend');
-  late final __objc_msgSend_119 = __objc_msgSend_119Ptr.asFunction<
+  late final __objc_msgSend_122 = __objc_msgSend_122Ptr.asFunction<
       int Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, NSRange)>();
 
   late final ffi.Pointer<ObjCSel> _sel_containsIndexes_1 =
@@ -3426,20 +3503,62 @@
       _registerName1("intersectsIndexesInRange:");
   late final ffi.Pointer<ObjCSel> _sel_enumerateIndexesUsingBlock_1 =
       _registerName1("enumerateIndexesUsingBlock:");
+  void _objc_msgSend_123(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    ffi.Pointer<_ObjCBlock> block,
+  ) {
+    return __objc_msgSend_123(
+      obj,
+      sel,
+      block,
+    );
+  }
+
+  late final __objc_msgSend_123Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+              ffi.Pointer<_ObjCBlock>)>>('objc_msgSend');
+  late final __objc_msgSend_123 = __objc_msgSend_123Ptr.asFunction<
+      void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+          ffi.Pointer<_ObjCBlock>)>();
+
   late final ffi.Pointer<ObjCSel>
       _sel_enumerateIndexesWithOptions_usingBlock_1 =
       _registerName1("enumerateIndexesWithOptions:usingBlock:");
+  void _objc_msgSend_124(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    int opts,
+    ffi.Pointer<_ObjCBlock> block,
+  ) {
+    return __objc_msgSend_124(
+      obj,
+      sel,
+      opts,
+      block,
+    );
+  }
+
+  late final __objc_msgSend_124Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+              ffi.Int32, ffi.Pointer<_ObjCBlock>)>>('objc_msgSend');
+  late final __objc_msgSend_124 = __objc_msgSend_124Ptr.asFunction<
+      void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, int,
+          ffi.Pointer<_ObjCBlock>)>();
+
   late final ffi.Pointer<ObjCSel>
       _sel_enumerateIndexesInRange_options_usingBlock_1 =
       _registerName1("enumerateIndexesInRange:options:usingBlock:");
-  void _objc_msgSend_120(
+  void _objc_msgSend_125(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     NSRange range,
     int opts,
-    ffi.Pointer<ObjCObject> block,
+    ffi.Pointer<_ObjCBlock> block,
   ) {
-    return __objc_msgSend_120(
+    return __objc_msgSend_125(
       obj,
       sel,
       range,
@@ -3448,28 +3567,70 @@
     );
   }
 
-  late final __objc_msgSend_120Ptr = _lookup<
+  late final __objc_msgSend_125Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
-              NSRange, ffi.Int32, ffi.Pointer<ObjCObject>)>>('objc_msgSend');
-  late final __objc_msgSend_120 = __objc_msgSend_120Ptr.asFunction<
+              NSRange, ffi.Int32, ffi.Pointer<_ObjCBlock>)>>('objc_msgSend');
+  late final __objc_msgSend_125 = __objc_msgSend_125Ptr.asFunction<
       void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, NSRange, int,
-          ffi.Pointer<ObjCObject>)>();
+          ffi.Pointer<_ObjCBlock>)>();
 
   late final ffi.Pointer<ObjCSel> _sel_indexPassingTest_1 =
       _registerName1("indexPassingTest:");
+  int _objc_msgSend_126(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    ffi.Pointer<_ObjCBlock> predicate,
+  ) {
+    return __objc_msgSend_126(
+      obj,
+      sel,
+      predicate,
+    );
+  }
+
+  late final __objc_msgSend_126Ptr = _lookup<
+      ffi.NativeFunction<
+          NSUInteger Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+              ffi.Pointer<_ObjCBlock>)>>('objc_msgSend');
+  late final __objc_msgSend_126 = __objc_msgSend_126Ptr.asFunction<
+      int Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+          ffi.Pointer<_ObjCBlock>)>();
+
   late final ffi.Pointer<ObjCSel> _sel_indexWithOptions_passingTest_1 =
       _registerName1("indexWithOptions:passingTest:");
+  int _objc_msgSend_127(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    int opts,
+    ffi.Pointer<_ObjCBlock> predicate,
+  ) {
+    return __objc_msgSend_127(
+      obj,
+      sel,
+      opts,
+      predicate,
+    );
+  }
+
+  late final __objc_msgSend_127Ptr = _lookup<
+      ffi.NativeFunction<
+          NSUInteger Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+              ffi.Int32, ffi.Pointer<_ObjCBlock>)>>('objc_msgSend');
+  late final __objc_msgSend_127 = __objc_msgSend_127Ptr.asFunction<
+      int Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, int,
+          ffi.Pointer<_ObjCBlock>)>();
+
   late final ffi.Pointer<ObjCSel> _sel_indexInRange_options_passingTest_1 =
       _registerName1("indexInRange:options:passingTest:");
-  int _objc_msgSend_121(
+  int _objc_msgSend_128(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     NSRange range,
     int opts,
-    ffi.Pointer<ObjCObject> predicate,
+    ffi.Pointer<_ObjCBlock> predicate,
   ) {
-    return __objc_msgSend_121(
+    return __objc_msgSend_128(
       obj,
       sel,
       range,
@@ -3478,45 +3639,45 @@
     );
   }
 
-  late final __objc_msgSend_121Ptr = _lookup<
+  late final __objc_msgSend_128Ptr = _lookup<
       ffi.NativeFunction<
           NSUInteger Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
-              NSRange, ffi.Int32, ffi.Pointer<ObjCObject>)>>('objc_msgSend');
-  late final __objc_msgSend_121 = __objc_msgSend_121Ptr.asFunction<
+              NSRange, ffi.Int32, ffi.Pointer<_ObjCBlock>)>>('objc_msgSend');
+  late final __objc_msgSend_128 = __objc_msgSend_128Ptr.asFunction<
       int Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, NSRange, int,
-          ffi.Pointer<ObjCObject>)>();
+          ffi.Pointer<_ObjCBlock>)>();
 
   late final ffi.Pointer<ObjCSel> _sel_indexesPassingTest_1 =
       _registerName1("indexesPassingTest:");
-  ffi.Pointer<ObjCObject> _objc_msgSend_122(
+  ffi.Pointer<ObjCObject> _objc_msgSend_129(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
-    ffi.Pointer<ObjCObject> predicate,
+    ffi.Pointer<_ObjCBlock> predicate,
   ) {
-    return __objc_msgSend_122(
+    return __objc_msgSend_129(
       obj,
       sel,
       predicate,
     );
   }
 
-  late final __objc_msgSend_122Ptr = _lookup<
+  late final __objc_msgSend_129Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
-              ffi.Pointer<ObjCSel>, ffi.Pointer<ObjCObject>)>>('objc_msgSend');
-  late final __objc_msgSend_122 = __objc_msgSend_122Ptr.asFunction<
+              ffi.Pointer<ObjCSel>, ffi.Pointer<_ObjCBlock>)>>('objc_msgSend');
+  late final __objc_msgSend_129 = __objc_msgSend_129Ptr.asFunction<
       ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
-          ffi.Pointer<ObjCSel>, ffi.Pointer<ObjCObject>)>();
+          ffi.Pointer<ObjCSel>, ffi.Pointer<_ObjCBlock>)>();
 
   late final ffi.Pointer<ObjCSel> _sel_indexesWithOptions_passingTest_1 =
       _registerName1("indexesWithOptions:passingTest:");
-  ffi.Pointer<ObjCObject> _objc_msgSend_123(
+  ffi.Pointer<ObjCObject> _objc_msgSend_130(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     int opts,
-    ffi.Pointer<ObjCObject> predicate,
+    ffi.Pointer<_ObjCBlock> predicate,
   ) {
-    return __objc_msgSend_123(
+    return __objc_msgSend_130(
       obj,
       sel,
       opts,
@@ -3524,27 +3685,27 @@
     );
   }
 
-  late final __objc_msgSend_123Ptr = _lookup<
+  late final __objc_msgSend_130Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Pointer<ObjCObject> Function(
               ffi.Pointer<ObjCObject>,
               ffi.Pointer<ObjCSel>,
               ffi.Int32,
-              ffi.Pointer<ObjCObject>)>>('objc_msgSend');
-  late final __objc_msgSend_123 = __objc_msgSend_123Ptr.asFunction<
+              ffi.Pointer<_ObjCBlock>)>>('objc_msgSend');
+  late final __objc_msgSend_130 = __objc_msgSend_130Ptr.asFunction<
       ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
-          ffi.Pointer<ObjCSel>, int, ffi.Pointer<ObjCObject>)>();
+          ffi.Pointer<ObjCSel>, int, ffi.Pointer<_ObjCBlock>)>();
 
   late final ffi.Pointer<ObjCSel> _sel_indexesInRange_options_passingTest_1 =
       _registerName1("indexesInRange:options:passingTest:");
-  ffi.Pointer<ObjCObject> _objc_msgSend_124(
+  ffi.Pointer<ObjCObject> _objc_msgSend_131(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     NSRange range,
     int opts,
-    ffi.Pointer<ObjCObject> predicate,
+    ffi.Pointer<_ObjCBlock> predicate,
   ) {
-    return __objc_msgSend_124(
+    return __objc_msgSend_131(
       obj,
       sel,
       range,
@@ -3553,41 +3714,152 @@
     );
   }
 
-  late final __objc_msgSend_124Ptr = _lookup<
+  late final __objc_msgSend_131Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Pointer<ObjCObject> Function(
               ffi.Pointer<ObjCObject>,
               ffi.Pointer<ObjCSel>,
               NSRange,
               ffi.Int32,
-              ffi.Pointer<ObjCObject>)>>('objc_msgSend');
-  late final __objc_msgSend_124 = __objc_msgSend_124Ptr.asFunction<
+              ffi.Pointer<_ObjCBlock>)>>('objc_msgSend');
+  late final __objc_msgSend_131 = __objc_msgSend_131Ptr.asFunction<
       ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
-          ffi.Pointer<ObjCSel>, NSRange, int, ffi.Pointer<ObjCObject>)>();
+          ffi.Pointer<ObjCSel>, NSRange, int, ffi.Pointer<_ObjCBlock>)>();
 
   late final ffi.Pointer<ObjCSel> _sel_enumerateRangesUsingBlock_1 =
       _registerName1("enumerateRangesUsingBlock:");
+  void _objc_msgSend_132(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    ffi.Pointer<_ObjCBlock> block,
+  ) {
+    return __objc_msgSend_132(
+      obj,
+      sel,
+      block,
+    );
+  }
+
+  late final __objc_msgSend_132Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+              ffi.Pointer<_ObjCBlock>)>>('objc_msgSend');
+  late final __objc_msgSend_132 = __objc_msgSend_132Ptr.asFunction<
+      void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+          ffi.Pointer<_ObjCBlock>)>();
+
   late final ffi.Pointer<ObjCSel> _sel_enumerateRangesWithOptions_usingBlock_1 =
       _registerName1("enumerateRangesWithOptions:usingBlock:");
+  void _objc_msgSend_133(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    int opts,
+    ffi.Pointer<_ObjCBlock> block,
+  ) {
+    return __objc_msgSend_133(
+      obj,
+      sel,
+      opts,
+      block,
+    );
+  }
+
+  late final __objc_msgSend_133Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+              ffi.Int32, ffi.Pointer<_ObjCBlock>)>>('objc_msgSend');
+  late final __objc_msgSend_133 = __objc_msgSend_133Ptr.asFunction<
+      void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, int,
+          ffi.Pointer<_ObjCBlock>)>();
+
   late final ffi.Pointer<ObjCSel>
       _sel_enumerateRangesInRange_options_usingBlock_1 =
       _registerName1("enumerateRangesInRange:options:usingBlock:");
+  void _objc_msgSend_134(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    NSRange range,
+    int opts,
+    ffi.Pointer<_ObjCBlock> block,
+  ) {
+    return __objc_msgSend_134(
+      obj,
+      sel,
+      range,
+      opts,
+      block,
+    );
+  }
+
+  late final __objc_msgSend_134Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+              NSRange, ffi.Int32, ffi.Pointer<_ObjCBlock>)>>('objc_msgSend');
+  late final __objc_msgSend_134 = __objc_msgSend_134Ptr.asFunction<
+      void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, NSRange, int,
+          ffi.Pointer<_ObjCBlock>)>();
+
   late final ffi.Pointer<ObjCSel> _sel_indexesOfObjectsPassingTest_1 =
       _registerName1("indexesOfObjectsPassingTest:");
+  ffi.Pointer<ObjCObject> _objc_msgSend_135(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    ffi.Pointer<_ObjCBlock> predicate,
+  ) {
+    return __objc_msgSend_135(
+      obj,
+      sel,
+      predicate,
+    );
+  }
+
+  late final __objc_msgSend_135Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
+              ffi.Pointer<ObjCSel>, ffi.Pointer<_ObjCBlock>)>>('objc_msgSend');
+  late final __objc_msgSend_135 = __objc_msgSend_135Ptr.asFunction<
+      ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
+          ffi.Pointer<ObjCSel>, ffi.Pointer<_ObjCBlock>)>();
+
   late final ffi.Pointer<ObjCSel>
       _sel_indexesOfObjectsWithOptions_passingTest_1 =
       _registerName1("indexesOfObjectsWithOptions:passingTest:");
+  ffi.Pointer<ObjCObject> _objc_msgSend_136(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    int opts,
+    ffi.Pointer<_ObjCBlock> predicate,
+  ) {
+    return __objc_msgSend_136(
+      obj,
+      sel,
+      opts,
+      predicate,
+    );
+  }
+
+  late final __objc_msgSend_136Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ObjCObject> Function(
+              ffi.Pointer<ObjCObject>,
+              ffi.Pointer<ObjCSel>,
+              ffi.Int32,
+              ffi.Pointer<_ObjCBlock>)>>('objc_msgSend');
+  late final __objc_msgSend_136 = __objc_msgSend_136Ptr.asFunction<
+      ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
+          ffi.Pointer<ObjCSel>, int, ffi.Pointer<_ObjCBlock>)>();
+
   late final ffi.Pointer<ObjCSel>
       _sel_indexesOfObjectsAtIndexes_options_passingTest_1 =
       _registerName1("indexesOfObjectsAtIndexes:options:passingTest:");
-  ffi.Pointer<ObjCObject> _objc_msgSend_125(
+  ffi.Pointer<ObjCObject> _objc_msgSend_137(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     ffi.Pointer<ObjCObject> s,
     int opts,
-    ffi.Pointer<ObjCObject> predicate,
+    ffi.Pointer<_ObjCBlock> predicate,
   ) {
-    return __objc_msgSend_125(
+    return __objc_msgSend_137(
       obj,
       sel,
       s,
@@ -3596,26 +3868,26 @@
     );
   }
 
-  late final __objc_msgSend_125Ptr = _lookup<
+  late final __objc_msgSend_137Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Pointer<ObjCObject> Function(
               ffi.Pointer<ObjCObject>,
               ffi.Pointer<ObjCSel>,
               ffi.Pointer<ObjCObject>,
               ffi.Int32,
-              ffi.Pointer<ObjCObject>)>>('objc_msgSend');
-  late final __objc_msgSend_125 = __objc_msgSend_125Ptr.asFunction<
+              ffi.Pointer<_ObjCBlock>)>>('objc_msgSend');
+  late final __objc_msgSend_137 = __objc_msgSend_137Ptr.asFunction<
       ffi.Pointer<ObjCObject> Function(
           ffi.Pointer<ObjCObject>,
           ffi.Pointer<ObjCSel>,
           ffi.Pointer<ObjCObject>,
           int,
-          ffi.Pointer<ObjCObject>)>();
+          ffi.Pointer<_ObjCBlock>)>();
 
   late final ffi.Pointer<ObjCSel>
       _sel_indexOfObject_inSortedRange_options_usingComparator_1 =
       _registerName1("indexOfObject:inSortedRange:options:usingComparator:");
-  int _objc_msgSend_126(
+  int _objc_msgSend_138(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     ffi.Pointer<ObjCObject> obj1,
@@ -3623,7 +3895,7 @@
     int opts,
     NSComparator cmp,
   ) {
-    return __objc_msgSend_126(
+    return __objc_msgSend_138(
       obj,
       sel,
       obj1,
@@ -3633,7 +3905,7 @@
     );
   }
 
-  late final __objc_msgSend_126Ptr = _lookup<
+  late final __objc_msgSend_138Ptr = _lookup<
       ffi.NativeFunction<
           NSUInteger Function(
               ffi.Pointer<ObjCObject>,
@@ -3642,7 +3914,7 @@
               NSRange,
               ffi.Int32,
               NSComparator)>>('objc_msgSend');
-  late final __objc_msgSend_126 = __objc_msgSend_126Ptr.asFunction<
+  late final __objc_msgSend_138 = __objc_msgSend_138Ptr.asFunction<
       int Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
           ffi.Pointer<ObjCObject>, NSRange, int, NSComparator)>();
 
@@ -3661,13 +3933,13 @@
       _registerName1("initWithArray:");
   late final ffi.Pointer<ObjCSel> _sel_initWithArray_copyItems_1 =
       _registerName1("initWithArray:copyItems:");
-  instancetype _objc_msgSend_127(
+  instancetype _objc_msgSend_139(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     ffi.Pointer<ObjCObject> array,
     bool flag,
   ) {
-    return __objc_msgSend_127(
+    return __objc_msgSend_139(
       obj,
       sel,
       array,
@@ -3675,33 +3947,33 @@
     );
   }
 
-  late final __objc_msgSend_127Ptr = _lookup<
+  late final __objc_msgSend_139Ptr = _lookup<
       ffi.NativeFunction<
           instancetype Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
               ffi.Pointer<ObjCObject>, ffi.Uint8)>>('objc_msgSend');
-  late final __objc_msgSend_127 = __objc_msgSend_127Ptr.asFunction<
+  late final __objc_msgSend_139 = __objc_msgSend_139Ptr.asFunction<
       instancetype Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
           ffi.Pointer<ObjCObject>, int)>();
 
   late final ffi.Pointer<ObjCSel> _sel_getObjects_1 =
       _registerName1("getObjects:");
-  void _objc_msgSend_128(
+  void _objc_msgSend_140(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     ffi.Pointer<ffi.Pointer<ObjCObject>> objects,
   ) {
-    return __objc_msgSend_128(
+    return __objc_msgSend_140(
       obj,
       sel,
       objects,
     );
   }
 
-  late final __objc_msgSend_128Ptr = _lookup<
+  late final __objc_msgSend_140Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
               ffi.Pointer<ffi.Pointer<ObjCObject>>)>>('objc_msgSend');
-  late final __objc_msgSend_128 = __objc_msgSend_128Ptr.asFunction<
+  late final __objc_msgSend_140 = __objc_msgSend_140Ptr.asFunction<
       void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
           ffi.Pointer<ffi.Pointer<ObjCObject>>)>();
 
@@ -3711,13 +3983,13 @@
       _registerName1("addObject:");
   late final ffi.Pointer<ObjCSel> _sel_insertObject_atIndex_1 =
       _registerName1("insertObject:atIndex:");
-  void _objc_msgSend_129(
+  void _objc_msgSend_141(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     ffi.Pointer<ObjCObject> anObject,
     int index,
   ) {
-    return __objc_msgSend_129(
+    return __objc_msgSend_141(
       obj,
       sel,
       anObject,
@@ -3725,11 +3997,11 @@
     );
   }
 
-  late final __objc_msgSend_129Ptr = _lookup<
+  late final __objc_msgSend_141Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
               ffi.Pointer<ObjCObject>, NSUInteger)>>('objc_msgSend');
-  late final __objc_msgSend_129 = __objc_msgSend_129Ptr.asFunction<
+  late final __objc_msgSend_141 = __objc_msgSend_141Ptr.asFunction<
       void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
           ffi.Pointer<ObjCObject>, int)>();
 
@@ -3739,13 +4011,13 @@
       _registerName1("removeObjectAtIndex:");
   late final ffi.Pointer<ObjCSel> _sel_replaceObjectAtIndex_withObject_1 =
       _registerName1("replaceObjectAtIndex:withObject:");
-  void _objc_msgSend_130(
+  void _objc_msgSend_142(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     int index,
     ffi.Pointer<ObjCObject> anObject,
   ) {
-    return __objc_msgSend_130(
+    return __objc_msgSend_142(
       obj,
       sel,
       index,
@@ -3753,11 +4025,11 @@
     );
   }
 
-  late final __objc_msgSend_130Ptr = _lookup<
+  late final __objc_msgSend_142Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
               NSUInteger, ffi.Pointer<ObjCObject>)>>('objc_msgSend');
-  late final __objc_msgSend_130 = __objc_msgSend_130Ptr.asFunction<
+  late final __objc_msgSend_142 = __objc_msgSend_142Ptr.asFunction<
       void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, int,
           ffi.Pointer<ObjCObject>)>();
 
@@ -3768,13 +4040,13 @@
   late final ffi.Pointer<ObjCSel>
       _sel_exchangeObjectAtIndex_withObjectAtIndex_1 =
       _registerName1("exchangeObjectAtIndex:withObjectAtIndex:");
-  void _objc_msgSend_131(
+  void _objc_msgSend_143(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     int idx1,
     int idx2,
   ) {
-    return __objc_msgSend_131(
+    return __objc_msgSend_143(
       obj,
       sel,
       idx1,
@@ -3782,24 +4054,24 @@
     );
   }
 
-  late final __objc_msgSend_131Ptr = _lookup<
+  late final __objc_msgSend_143Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
               NSUInteger, NSUInteger)>>('objc_msgSend');
-  late final __objc_msgSend_131 = __objc_msgSend_131Ptr.asFunction<
+  late final __objc_msgSend_143 = __objc_msgSend_143Ptr.asFunction<
       void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, int, int)>();
 
   late final ffi.Pointer<ObjCSel> _sel_removeAllObjects1 =
       _registerName1("removeAllObjects");
   late final ffi.Pointer<ObjCSel> _sel_removeObject_inRange_1 =
       _registerName1("removeObject:inRange:");
-  void _objc_msgSend_132(
+  void _objc_msgSend_144(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     ffi.Pointer<ObjCObject> anObject,
     NSRange range,
   ) {
-    return __objc_msgSend_132(
+    return __objc_msgSend_144(
       obj,
       sel,
       anObject,
@@ -3807,11 +4079,11 @@
     );
   }
 
-  late final __objc_msgSend_132Ptr = _lookup<
+  late final __objc_msgSend_144Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
               ffi.Pointer<ObjCObject>, NSRange)>>('objc_msgSend');
-  late final __objc_msgSend_132 = __objc_msgSend_132Ptr.asFunction<
+  late final __objc_msgSend_144 = __objc_msgSend_144Ptr.asFunction<
       void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
           ffi.Pointer<ObjCObject>, NSRange)>();
 
@@ -3823,13 +4095,13 @@
       _registerName1("removeObjectIdenticalTo:");
   late final ffi.Pointer<ObjCSel> _sel_removeObjectsFromIndices_numIndices_1 =
       _registerName1("removeObjectsFromIndices:numIndices:");
-  void _objc_msgSend_133(
+  void _objc_msgSend_145(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     ffi.Pointer<NSUInteger> indices,
     int cnt,
   ) {
-    return __objc_msgSend_133(
+    return __objc_msgSend_145(
       obj,
       sel,
       indices,
@@ -3837,11 +4109,11 @@
     );
   }
 
-  late final __objc_msgSend_133Ptr = _lookup<
+  late final __objc_msgSend_145Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
               ffi.Pointer<NSUInteger>, NSUInteger)>>('objc_msgSend');
-  late final __objc_msgSend_133 = __objc_msgSend_133Ptr.asFunction<
+  late final __objc_msgSend_145 = __objc_msgSend_145Ptr.asFunction<
       void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
           ffi.Pointer<NSUInteger>, int)>();
 
@@ -3849,36 +4121,36 @@
       _registerName1("removeObjectsInArray:");
   late final ffi.Pointer<ObjCSel> _sel_removeObjectsInRange_1 =
       _registerName1("removeObjectsInRange:");
-  void _objc_msgSend_134(
+  void _objc_msgSend_146(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     NSRange range,
   ) {
-    return __objc_msgSend_134(
+    return __objc_msgSend_146(
       obj,
       sel,
       range,
     );
   }
 
-  late final __objc_msgSend_134Ptr = _lookup<
+  late final __objc_msgSend_146Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
               NSRange)>>('objc_msgSend');
-  late final __objc_msgSend_134 = __objc_msgSend_134Ptr.asFunction<
+  late final __objc_msgSend_146 = __objc_msgSend_146Ptr.asFunction<
       void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, NSRange)>();
 
   late final ffi.Pointer<ObjCSel>
       _sel_replaceObjectsInRange_withObjectsFromArray_range_1 =
       _registerName1("replaceObjectsInRange:withObjectsFromArray:range:");
-  void _objc_msgSend_135(
+  void _objc_msgSend_147(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     NSRange range,
     ffi.Pointer<ObjCObject> otherArray,
     NSRange otherRange,
   ) {
-    return __objc_msgSend_135(
+    return __objc_msgSend_147(
       obj,
       sel,
       range,
@@ -3887,24 +4159,24 @@
     );
   }
 
-  late final __objc_msgSend_135Ptr = _lookup<
+  late final __objc_msgSend_147Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
               NSRange, ffi.Pointer<ObjCObject>, NSRange)>>('objc_msgSend');
-  late final __objc_msgSend_135 = __objc_msgSend_135Ptr.asFunction<
+  late final __objc_msgSend_147 = __objc_msgSend_147Ptr.asFunction<
       void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, NSRange,
           ffi.Pointer<ObjCObject>, NSRange)>();
 
   late final ffi.Pointer<ObjCSel>
       _sel_replaceObjectsInRange_withObjectsFromArray_1 =
       _registerName1("replaceObjectsInRange:withObjectsFromArray:");
-  void _objc_msgSend_136(
+  void _objc_msgSend_148(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     NSRange range,
     ffi.Pointer<ObjCObject> otherArray,
   ) {
-    return __objc_msgSend_136(
+    return __objc_msgSend_148(
       obj,
       sel,
       range,
@@ -3912,18 +4184,18 @@
     );
   }
 
-  late final __objc_msgSend_136Ptr = _lookup<
+  late final __objc_msgSend_148Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
               NSRange, ffi.Pointer<ObjCObject>)>>('objc_msgSend');
-  late final __objc_msgSend_136 = __objc_msgSend_136Ptr.asFunction<
+  late final __objc_msgSend_148 = __objc_msgSend_148Ptr.asFunction<
       void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, NSRange,
           ffi.Pointer<ObjCObject>)>();
 
   late final ffi.Pointer<ObjCSel> _sel_setArray_1 = _registerName1("setArray:");
   late final ffi.Pointer<ObjCSel> _sel_sortUsingFunction_context_1 =
       _registerName1("sortUsingFunction:context:");
-  void _objc_msgSend_137(
+  void _objc_msgSend_149(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     ffi.Pointer<
@@ -3933,7 +4205,7 @@
         compare,
     ffi.Pointer<ffi.Void> context,
   ) {
-    return __objc_msgSend_137(
+    return __objc_msgSend_149(
       obj,
       sel,
       compare,
@@ -3941,7 +4213,7 @@
     );
   }
 
-  late final __objc_msgSend_137Ptr = _lookup<
+  late final __objc_msgSend_149Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Void Function(
               ffi.Pointer<ObjCObject>,
@@ -3951,7 +4223,7 @@
                       NSInteger Function(ffi.Pointer<ObjCObject>,
                           ffi.Pointer<ObjCObject>, ffi.Pointer<ffi.Void>)>>,
               ffi.Pointer<ffi.Void>)>>('objc_msgSend');
-  late final __objc_msgSend_137 = __objc_msgSend_137Ptr.asFunction<
+  late final __objc_msgSend_149 = __objc_msgSend_149Ptr.asFunction<
       void Function(
           ffi.Pointer<ObjCObject>,
           ffi.Pointer<ObjCSel>,
@@ -3965,13 +4237,13 @@
       _registerName1("sortUsingSelector:");
   late final ffi.Pointer<ObjCSel> _sel_insertObjects_atIndexes_1 =
       _registerName1("insertObjects:atIndexes:");
-  void _objc_msgSend_138(
+  void _objc_msgSend_150(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     ffi.Pointer<ObjCObject> objects,
     ffi.Pointer<ObjCObject> indexes,
   ) {
-    return __objc_msgSend_138(
+    return __objc_msgSend_150(
       obj,
       sel,
       objects,
@@ -3979,14 +4251,14 @@
     );
   }
 
-  late final __objc_msgSend_138Ptr = _lookup<
+  late final __objc_msgSend_150Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Void Function(
               ffi.Pointer<ObjCObject>,
               ffi.Pointer<ObjCSel>,
               ffi.Pointer<ObjCObject>,
               ffi.Pointer<ObjCObject>)>>('objc_msgSend');
-  late final __objc_msgSend_138 = __objc_msgSend_138Ptr.asFunction<
+  late final __objc_msgSend_150 = __objc_msgSend_150Ptr.asFunction<
       void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
           ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCObject>)>();
 
@@ -3998,15 +4270,35 @@
       _registerName1("setObject:atIndexedSubscript:");
   late final ffi.Pointer<ObjCSel> _sel_sortUsingComparator_1 =
       _registerName1("sortUsingComparator:");
+  void _objc_msgSend_151(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    NSComparator cmptr,
+  ) {
+    return __objc_msgSend_151(
+      obj,
+      sel,
+      cmptr,
+    );
+  }
+
+  late final __objc_msgSend_151Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+              NSComparator)>>('objc_msgSend');
+  late final __objc_msgSend_151 = __objc_msgSend_151Ptr.asFunction<
+      void Function(
+          ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, NSComparator)>();
+
   late final ffi.Pointer<ObjCSel> _sel_sortWithOptions_usingComparator_1 =
       _registerName1("sortWithOptions:usingComparator:");
-  void _objc_msgSend_139(
+  void _objc_msgSend_152(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     int opts,
     NSComparator cmptr,
   ) {
-    return __objc_msgSend_139(
+    return __objc_msgSend_152(
       obj,
       sel,
       opts,
@@ -4014,11 +4306,11 @@
     );
   }
 
-  late final __objc_msgSend_139Ptr = _lookup<
+  late final __objc_msgSend_152Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
               ffi.Int32, NSComparator)>>('objc_msgSend');
-  late final __objc_msgSend_139 = __objc_msgSend_139Ptr.asFunction<
+  late final __objc_msgSend_152 = __objc_msgSend_152Ptr.asFunction<
       void Function(
           ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, int, NSComparator)>();
 
@@ -4042,14 +4334,14 @@
       _sel_registerDataRepresentationForTypeIdentifier_visibility_loadHandler_1 =
       _registerName1(
           "registerDataRepresentationForTypeIdentifier:visibility:loadHandler:");
-  void _objc_msgSend_140(
+  void _objc_msgSend_153(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     ffi.Pointer<ObjCObject> typeIdentifier,
     int visibility,
-    ffi.Pointer<ObjCObject> loadHandler,
+    ffi.Pointer<_ObjCBlock> loadHandler,
   ) {
-    return __objc_msgSend_140(
+    return __objc_msgSend_153(
       obj,
       sel,
       typeIdentifier,
@@ -4058,31 +4350,31 @@
     );
   }
 
-  late final __objc_msgSend_140Ptr = _lookup<
+  late final __objc_msgSend_153Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Void Function(
               ffi.Pointer<ObjCObject>,
               ffi.Pointer<ObjCSel>,
               ffi.Pointer<ObjCObject>,
               ffi.Int32,
-              ffi.Pointer<ObjCObject>)>>('objc_msgSend');
-  late final __objc_msgSend_140 = __objc_msgSend_140Ptr.asFunction<
+              ffi.Pointer<_ObjCBlock>)>>('objc_msgSend');
+  late final __objc_msgSend_153 = __objc_msgSend_153Ptr.asFunction<
       void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
-          ffi.Pointer<ObjCObject>, int, ffi.Pointer<ObjCObject>)>();
+          ffi.Pointer<ObjCObject>, int, ffi.Pointer<_ObjCBlock>)>();
 
   late final ffi.Pointer<ObjCSel>
       _sel_registerFileRepresentationForTypeIdentifier_fileOptions_visibility_loadHandler_1 =
       _registerName1(
           "registerFileRepresentationForTypeIdentifier:fileOptions:visibility:loadHandler:");
-  void _objc_msgSend_141(
+  void _objc_msgSend_154(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     ffi.Pointer<ObjCObject> typeIdentifier,
     int fileOptions,
     int visibility,
-    ffi.Pointer<ObjCObject> loadHandler,
+    ffi.Pointer<_ObjCBlock> loadHandler,
   ) {
-    return __objc_msgSend_141(
+    return __objc_msgSend_154(
       obj,
       sel,
       typeIdentifier,
@@ -4092,7 +4384,7 @@
     );
   }
 
-  late final __objc_msgSend_141Ptr = _lookup<
+  late final __objc_msgSend_154Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Void Function(
               ffi.Pointer<ObjCObject>,
@@ -4100,10 +4392,10 @@
               ffi.Pointer<ObjCObject>,
               ffi.Int32,
               ffi.Int32,
-              ffi.Pointer<ObjCObject>)>>('objc_msgSend');
-  late final __objc_msgSend_141 = __objc_msgSend_141Ptr.asFunction<
+              ffi.Pointer<_ObjCBlock>)>>('objc_msgSend');
+  late final __objc_msgSend_154 = __objc_msgSend_154Ptr.asFunction<
       void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
-          ffi.Pointer<ObjCObject>, int, int, ffi.Pointer<ObjCObject>)>();
+          ffi.Pointer<ObjCObject>, int, int, ffi.Pointer<_ObjCBlock>)>();
 
   late final ffi.Pointer<ObjCSel> _sel_registeredTypeIdentifiers1 =
       _registerName1("registeredTypeIdentifiers");
@@ -4113,13 +4405,13 @@
       _sel_hasRepresentationConformingToTypeIdentifier_fileOptions_1 =
       _registerName1(
           "hasRepresentationConformingToTypeIdentifier:fileOptions:");
-  bool _objc_msgSend_142(
+  bool _objc_msgSend_155(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     ffi.Pointer<ObjCObject> typeIdentifier,
     int fileOptions,
   ) {
-    return __objc_msgSend_142(
+    return __objc_msgSend_155(
           obj,
           sel,
           typeIdentifier,
@@ -4128,11 +4420,11 @@
         0;
   }
 
-  late final __objc_msgSend_142Ptr = _lookup<
+  late final __objc_msgSend_155Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Uint8 Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
               ffi.Pointer<ObjCObject>, ffi.Int32)>>('objc_msgSend');
-  late final __objc_msgSend_142 = __objc_msgSend_142Ptr.asFunction<
+  late final __objc_msgSend_155 = __objc_msgSend_155Ptr.asFunction<
       int Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
           ffi.Pointer<ObjCObject>, int)>();
 
@@ -4142,13 +4434,13 @@
       _sel_loadDataRepresentationForTypeIdentifier_completionHandler_1 =
       _registerName1(
           "loadDataRepresentationForTypeIdentifier:completionHandler:");
-  ffi.Pointer<ObjCObject> _objc_msgSend_143(
+  ffi.Pointer<ObjCObject> _objc_msgSend_156(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     ffi.Pointer<ObjCObject> typeIdentifier,
-    ffi.Pointer<ObjCObject> completionHandler,
+    ffi.Pointer<_ObjCBlock> completionHandler,
   ) {
-    return __objc_msgSend_143(
+    return __objc_msgSend_156(
       obj,
       sel,
       typeIdentifier,
@@ -4156,19 +4448,19 @@
     );
   }
 
-  late final __objc_msgSend_143Ptr = _lookup<
+  late final __objc_msgSend_156Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Pointer<ObjCObject> Function(
               ffi.Pointer<ObjCObject>,
               ffi.Pointer<ObjCSel>,
               ffi.Pointer<ObjCObject>,
-              ffi.Pointer<ObjCObject>)>>('objc_msgSend');
-  late final __objc_msgSend_143 = __objc_msgSend_143Ptr.asFunction<
+              ffi.Pointer<_ObjCBlock>)>>('objc_msgSend');
+  late final __objc_msgSend_156 = __objc_msgSend_156Ptr.asFunction<
       ffi.Pointer<ObjCObject> Function(
           ffi.Pointer<ObjCObject>,
           ffi.Pointer<ObjCSel>,
           ffi.Pointer<ObjCObject>,
-          ffi.Pointer<ObjCObject>)>();
+          ffi.Pointer<_ObjCBlock>)>();
 
   late final ffi.Pointer<ObjCSel>
       _sel_loadFileRepresentationForTypeIdentifier_completionHandler_1 =
@@ -4178,6 +4470,34 @@
       _sel_loadInPlaceFileRepresentationForTypeIdentifier_completionHandler_1 =
       _registerName1(
           "loadInPlaceFileRepresentationForTypeIdentifier:completionHandler:");
+  ffi.Pointer<ObjCObject> _objc_msgSend_157(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    ffi.Pointer<ObjCObject> typeIdentifier,
+    ffi.Pointer<_ObjCBlock> completionHandler,
+  ) {
+    return __objc_msgSend_157(
+      obj,
+      sel,
+      typeIdentifier,
+      completionHandler,
+    );
+  }
+
+  late final __objc_msgSend_157Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ObjCObject> Function(
+              ffi.Pointer<ObjCObject>,
+              ffi.Pointer<ObjCSel>,
+              ffi.Pointer<ObjCObject>,
+              ffi.Pointer<_ObjCBlock>)>>('objc_msgSend');
+  late final __objc_msgSend_157 = __objc_msgSend_157Ptr.asFunction<
+      ffi.Pointer<ObjCObject> Function(
+          ffi.Pointer<ObjCObject>,
+          ffi.Pointer<ObjCSel>,
+          ffi.Pointer<ObjCObject>,
+          ffi.Pointer<_ObjCBlock>)>();
+
   late final ffi.Pointer<ObjCSel> _sel_suggestedName1 =
       _registerName1("suggestedName");
   late final ffi.Pointer<ObjCSel> _sel_setSuggestedName_1 =
@@ -4186,13 +4506,13 @@
       _registerName1("initWithObject:");
   late final ffi.Pointer<ObjCSel> _sel_registerObject_visibility_1 =
       _registerName1("registerObject:visibility:");
-  void _objc_msgSend_144(
+  void _objc_msgSend_158(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     ffi.Pointer<ObjCObject> object,
     int visibility,
   ) {
-    return __objc_msgSend_144(
+    return __objc_msgSend_158(
       obj,
       sel,
       object,
@@ -4200,11 +4520,11 @@
     );
   }
 
-  late final __objc_msgSend_144Ptr = _lookup<
+  late final __objc_msgSend_158Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
               ffi.Pointer<ObjCObject>, ffi.Int32)>>('objc_msgSend');
-  late final __objc_msgSend_144 = __objc_msgSend_144Ptr.asFunction<
+  late final __objc_msgSend_158 = __objc_msgSend_158Ptr.asFunction<
       void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
           ffi.Pointer<ObjCObject>, int)>();
 
@@ -4220,17 +4540,42 @@
   late final ffi.Pointer<ObjCSel>
       _sel_registerItemForTypeIdentifier_loadHandler_1 =
       _registerName1("registerItemForTypeIdentifier:loadHandler:");
+  void _objc_msgSend_159(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    ffi.Pointer<ObjCObject> typeIdentifier,
+    NSItemProviderLoadHandler loadHandler,
+  ) {
+    return __objc_msgSend_159(
+      obj,
+      sel,
+      typeIdentifier,
+      loadHandler,
+    );
+  }
+
+  late final __objc_msgSend_159Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Void Function(
+              ffi.Pointer<ObjCObject>,
+              ffi.Pointer<ObjCSel>,
+              ffi.Pointer<ObjCObject>,
+              NSItemProviderLoadHandler)>>('objc_msgSend');
+  late final __objc_msgSend_159 = __objc_msgSend_159Ptr.asFunction<
+      void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+          ffi.Pointer<ObjCObject>, NSItemProviderLoadHandler)>();
+
   late final ffi.Pointer<ObjCSel>
       _sel_loadItemForTypeIdentifier_options_completionHandler_1 =
       _registerName1("loadItemForTypeIdentifier:options:completionHandler:");
-  void _objc_msgSend_145(
+  void _objc_msgSend_160(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     ffi.Pointer<ObjCObject> typeIdentifier,
     ffi.Pointer<ObjCObject> options,
     NSItemProviderCompletionHandler completionHandler,
   ) {
-    return __objc_msgSend_145(
+    return __objc_msgSend_160(
       obj,
       sel,
       typeIdentifier,
@@ -4239,7 +4584,7 @@
     );
   }
 
-  late final __objc_msgSend_145Ptr = _lookup<
+  late final __objc_msgSend_160Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Void Function(
               ffi.Pointer<ObjCObject>,
@@ -4247,7 +4592,7 @@
               ffi.Pointer<ObjCObject>,
               ffi.Pointer<ObjCObject>,
               NSItemProviderCompletionHandler)>>('objc_msgSend');
-  late final __objc_msgSend_145 = __objc_msgSend_145Ptr.asFunction<
+  late final __objc_msgSend_160 = __objc_msgSend_160Ptr.asFunction<
       void Function(
           ffi.Pointer<ObjCObject>,
           ffi.Pointer<ObjCSel>,
@@ -4257,11 +4602,74 @@
 
   late final ffi.Pointer<ObjCSel> _sel_previewImageHandler1 =
       _registerName1("previewImageHandler");
+  NSItemProviderLoadHandler _objc_msgSend_161(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+  ) {
+    return __objc_msgSend_161(
+      obj,
+      sel,
+    );
+  }
+
+  late final __objc_msgSend_161Ptr = _lookup<
+      ffi.NativeFunction<
+          NSItemProviderLoadHandler Function(
+              ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>>('objc_msgSend');
+  late final __objc_msgSend_161 = __objc_msgSend_161Ptr.asFunction<
+      NSItemProviderLoadHandler Function(
+          ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>();
+
   late final ffi.Pointer<ObjCSel> _sel_setPreviewImageHandler_1 =
       _registerName1("setPreviewImageHandler:");
+  void _objc_msgSend_162(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    NSItemProviderLoadHandler value,
+  ) {
+    return __objc_msgSend_162(
+      obj,
+      sel,
+      value,
+    );
+  }
+
+  late final __objc_msgSend_162Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+              NSItemProviderLoadHandler)>>('objc_msgSend');
+  late final __objc_msgSend_162 = __objc_msgSend_162Ptr.asFunction<
+      void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+          NSItemProviderLoadHandler)>();
+
   late final ffi.Pointer<ObjCSel>
       _sel_loadPreviewImageWithOptions_completionHandler_1 =
       _registerName1("loadPreviewImageWithOptions:completionHandler:");
+  void _objc_msgSend_163(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    ffi.Pointer<ObjCObject> options,
+    NSItemProviderCompletionHandler completionHandler,
+  ) {
+    return __objc_msgSend_163(
+      obj,
+      sel,
+      options,
+      completionHandler,
+    );
+  }
+
+  late final __objc_msgSend_163Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Void Function(
+              ffi.Pointer<ObjCObject>,
+              ffi.Pointer<ObjCSel>,
+              ffi.Pointer<ObjCObject>,
+              NSItemProviderCompletionHandler)>>('objc_msgSend');
+  late final __objc_msgSend_163 = __objc_msgSend_163Ptr.asFunction<
+      void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+          ffi.Pointer<ObjCObject>, NSItemProviderCompletionHandler)>();
+
   late final ffi.Pointer<ffi.Pointer<ObjCObject>>
       _NSExtensionJavaScriptPreprocessingResultsKey =
       _lookup<ffi.Pointer<ObjCObject>>(
@@ -4549,7 +4957,7 @@
   late final ffi.Pointer<ObjCSel>
       _sel_replaceOccurrencesOfString_withString_options_range_1 =
       _registerName1("replaceOccurrencesOfString:withString:options:range:");
-  int _objc_msgSend_146(
+  int _objc_msgSend_164(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     ffi.Pointer<ObjCObject> target,
@@ -4557,7 +4965,7 @@
     int options,
     NSRange searchRange,
   ) {
-    return __objc_msgSend_146(
+    return __objc_msgSend_164(
       obj,
       sel,
       target,
@@ -4567,7 +4975,7 @@
     );
   }
 
-  late final __objc_msgSend_146Ptr = _lookup<
+  late final __objc_msgSend_164Ptr = _lookup<
       ffi.NativeFunction<
           NSUInteger Function(
               ffi.Pointer<ObjCObject>,
@@ -4576,14 +4984,14 @@
               ffi.Pointer<ObjCObject>,
               ffi.Int32,
               NSRange)>>('objc_msgSend');
-  late final __objc_msgSend_146 = __objc_msgSend_146Ptr.asFunction<
+  late final __objc_msgSend_164 = __objc_msgSend_164Ptr.asFunction<
       int Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
           ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCObject>, int, NSRange)>();
 
   late final ffi.Pointer<ObjCSel>
       _sel_applyTransform_reverse_range_updatedRange_1 =
       _registerName1("applyTransform:reverse:range:updatedRange:");
-  bool _objc_msgSend_147(
+  bool _objc_msgSend_165(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     NSStringTransform transform,
@@ -4591,7 +4999,7 @@
     NSRange range,
     NSRangePointer resultingRange,
   ) {
-    return __objc_msgSend_147(
+    return __objc_msgSend_165(
           obj,
           sel,
           transform,
@@ -4602,7 +5010,7 @@
         0;
   }
 
-  late final __objc_msgSend_147Ptr = _lookup<
+  late final __objc_msgSend_165Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Uint8 Function(
               ffi.Pointer<ObjCObject>,
@@ -4611,27 +5019,27 @@
               ffi.Uint8,
               NSRange,
               NSRangePointer)>>('objc_msgSend');
-  late final __objc_msgSend_147 = __objc_msgSend_147Ptr.asFunction<
+  late final __objc_msgSend_165 = __objc_msgSend_165Ptr.asFunction<
       int Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
           NSStringTransform, int, NSRange, NSRangePointer)>();
 
-  ffi.Pointer<ObjCObject> _objc_msgSend_148(
+  ffi.Pointer<ObjCObject> _objc_msgSend_166(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     int capacity,
   ) {
-    return __objc_msgSend_148(
+    return __objc_msgSend_166(
       obj,
       sel,
       capacity,
     );
   }
 
-  late final __objc_msgSend_148Ptr = _lookup<
+  late final __objc_msgSend_166Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
               ffi.Pointer<ObjCSel>, NSUInteger)>>('objc_msgSend');
-  late final __objc_msgSend_148 = __objc_msgSend_148Ptr.asFunction<
+  late final __objc_msgSend_166 = __objc_msgSend_166Ptr.asFunction<
       ffi.Pointer<ObjCObject> Function(
           ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, int)>();
 
@@ -4656,74 +5064,74 @@
 
   late final ffi.Pointer<ObjCObject> _class_Foo1 = _getClass1("Foo");
   late final ffi.Pointer<ObjCSel> _sel_intVal1 = _registerName1("intVal");
-  int _objc_msgSend_149(
+  int _objc_msgSend_167(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
   ) {
-    return __objc_msgSend_149(
+    return __objc_msgSend_167(
       obj,
       sel,
     );
   }
 
-  late final __objc_msgSend_149Ptr = _lookup<
+  late final __objc_msgSend_167Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Int32 Function(
               ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>>('objc_msgSend');
-  late final __objc_msgSend_149 = __objc_msgSend_149Ptr.asFunction<
+  late final __objc_msgSend_167 = __objc_msgSend_167Ptr.asFunction<
       int Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>();
 
   late final ffi.Pointer<ObjCSel> _sel_setIntVal_1 =
       _registerName1("setIntVal:");
-  void _objc_msgSend_150(
+  void _objc_msgSend_168(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     int value,
   ) {
-    return __objc_msgSend_150(
+    return __objc_msgSend_168(
       obj,
       sel,
       value,
     );
   }
 
-  late final __objc_msgSend_150Ptr = _lookup<
+  late final __objc_msgSend_168Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
               ffi.Int32)>>('objc_msgSend');
-  late final __objc_msgSend_150 = __objc_msgSend_150Ptr.asFunction<
+  late final __objc_msgSend_168 = __objc_msgSend_168Ptr.asFunction<
       void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, int)>();
 
   late final ffi.Pointer<ObjCSel> _sel_makeFoo_1 = _registerName1("makeFoo:");
-  ffi.Pointer<ObjCObject> _objc_msgSend_151(
+  ffi.Pointer<ObjCObject> _objc_msgSend_169(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     double x,
   ) {
-    return __objc_msgSend_151(
+    return __objc_msgSend_169(
       obj,
       sel,
       x,
     );
   }
 
-  late final __objc_msgSend_151Ptr = _lookup<
+  late final __objc_msgSend_169Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
               ffi.Pointer<ObjCSel>, ffi.Double)>>('objc_msgSend');
-  late final __objc_msgSend_151 = __objc_msgSend_151Ptr.asFunction<
+  late final __objc_msgSend_169 = __objc_msgSend_169Ptr.asFunction<
       ffi.Pointer<ObjCObject> Function(
           ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, double)>();
 
   late final ffi.Pointer<ObjCSel> _sel_multiply_withOtherFoo_1 =
       _registerName1("multiply:withOtherFoo:");
-  int _objc_msgSend_152(
+  int _objc_msgSend_170(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     bool useIntVals,
     ffi.Pointer<ObjCObject> other,
   ) {
-    return __objc_msgSend_152(
+    return __objc_msgSend_170(
       obj,
       sel,
       useIntVals ? 1 : 0,
@@ -4731,33 +5139,33 @@
     );
   }
 
-  late final __objc_msgSend_152Ptr = _lookup<
+  late final __objc_msgSend_170Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Int32 Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
               ffi.Uint8, ffi.Pointer<ObjCObject>)>>('objc_msgSend');
-  late final __objc_msgSend_152 = __objc_msgSend_152Ptr.asFunction<
+  late final __objc_msgSend_170 = __objc_msgSend_170Ptr.asFunction<
       int Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, int,
           ffi.Pointer<ObjCObject>)>();
 
   late final ffi.Pointer<ObjCSel> _sel_setDoubleVal_1 =
       _registerName1("setDoubleVal:");
-  void _objc_msgSend_153(
+  void _objc_msgSend_171(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     double x,
   ) {
-    return __objc_msgSend_153(
+    return __objc_msgSend_171(
       obj,
       sel,
       x,
     );
   }
 
-  late final __objc_msgSend_153Ptr = _lookup<
+  late final __objc_msgSend_171Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
               ffi.Double)>>('objc_msgSend');
-  late final __objc_msgSend_153 = __objc_msgSend_153Ptr.asFunction<
+  late final __objc_msgSend_171 = __objc_msgSend_171Ptr.asFunction<
       void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, double)>();
 }
 
@@ -5038,12 +5446,12 @@
 
   static NSString description(NativeObjCLibrary _lib) {
     final _ret =
-        _lib._objc_msgSend_74(_lib._class_NSObject1, _lib._sel_description1);
+        _lib._objc_msgSend_75(_lib._class_NSObject1, _lib._sel_description1);
     return NSString._(_ret, _lib);
   }
 
   static NSString debugDescription(NativeObjCLibrary _lib) {
-    final _ret = _lib._objc_msgSend_74(
+    final _ret = _lib._objc_msgSend_75(
         _lib._class_NSObject1, _lib._sel_debugDescription1);
     return NSString._(_ret, _lib);
   }
@@ -5053,7 +5461,7 @@
   }
 
   static void setVersion(NativeObjCLibrary _lib, int aVersion) {
-    _lib._objc_msgSend_75(
+    _lib._objc_msgSend_76(
         _lib._class_NSObject1, _lib._sel_setVersion_1, aVersion);
   }
 
@@ -5449,21 +5857,22 @@
   }
 
   void enumerateSubstringsInRange_options_usingBlock(
-      NSRange range, int opts, NSObject block) {
+      NSRange range, int opts, ObjCBlock block) {
     _lib._objc_msgSend_35(
         _id,
         _lib._sel_enumerateSubstringsInRange_options_usingBlock_1,
         range,
         opts,
-        block._id);
+        block._impl);
   }
 
-  void enumerateLinesUsingBlock(NSObject block) {
-    _lib._objc_msgSend_8(_id, _lib._sel_enumerateLinesUsingBlock_1, block._id);
+  void enumerateLinesUsingBlock(ObjCBlock1 block) {
+    _lib._objc_msgSend_36(
+        _id, _lib._sel_enumerateLinesUsingBlock_1, block._impl);
   }
 
   ffi.Pointer<pkg_ffi.Char> get UTF8String {
-    return _lib._objc_msgSend_36(_id, _lib._sel_UTF8String1);
+    return _lib._objc_msgSend_37(_id, _lib._sel_UTF8String1);
   }
 
   int get fastestEncoding {
@@ -5475,29 +5884,29 @@
   }
 
   NSData dataUsingEncoding_allowLossyConversion(int encoding, bool lossy) {
-    final _ret = _lib._objc_msgSend_37(_id,
+    final _ret = _lib._objc_msgSend_38(_id,
         _lib._sel_dataUsingEncoding_allowLossyConversion_1, encoding, lossy);
     return NSData._(_ret, _lib);
   }
 
   NSData dataUsingEncoding(int encoding) {
     final _ret =
-        _lib._objc_msgSend_38(_id, _lib._sel_dataUsingEncoding_1, encoding);
+        _lib._objc_msgSend_39(_id, _lib._sel_dataUsingEncoding_1, encoding);
     return NSData._(_ret, _lib);
   }
 
   bool canBeConvertedToEncoding(int encoding) {
-    return _lib._objc_msgSend_39(
+    return _lib._objc_msgSend_40(
         _id, _lib._sel_canBeConvertedToEncoding_1, encoding);
   }
 
   void cStringUsingEncoding(int encoding) {
-    _lib._objc_msgSend_40(_id, _lib._sel_cStringUsingEncoding_1, encoding);
+    _lib._objc_msgSend_41(_id, _lib._sel_cStringUsingEncoding_1, encoding);
   }
 
   bool getCString_maxLength_encoding(
       ffi.Pointer<pkg_ffi.Char> buffer, int maxBufferCount, int encoding) {
-    return _lib._objc_msgSend_41(_id, _lib._sel_getCString_maxLength_encoding_1,
+    return _lib._objc_msgSend_42(_id, _lib._sel_getCString_maxLength_encoding_1,
         buffer, maxBufferCount, encoding);
   }
 
@@ -5509,7 +5918,7 @@
       int options,
       NSRange range,
       NSRangePointer leftover) {
-    return _lib._objc_msgSend_42(
+    return _lib._objc_msgSend_43(
         _id,
         _lib._sel_getBytes_maxLength_usedLength_encoding_options_range_remainingRange_1,
         buffer,
@@ -5522,18 +5931,18 @@
   }
 
   int maximumLengthOfBytesUsingEncoding(int enc) {
-    return _lib._objc_msgSend_43(
+    return _lib._objc_msgSend_44(
         _id, _lib._sel_maximumLengthOfBytesUsingEncoding_1, enc);
   }
 
   int lengthOfBytesUsingEncoding(int enc) {
-    return _lib._objc_msgSend_43(
+    return _lib._objc_msgSend_44(
         _id, _lib._sel_lengthOfBytesUsingEncoding_1, enc);
   }
 
   static ffi.Pointer<NSStringEncoding> getAvailableStringEncodings(
       NativeObjCLibrary _lib) {
-    return _lib._objc_msgSend_44(
+    return _lib._objc_msgSend_45(
         _lib._class_NSString1, _lib._sel_availableStringEncodings1);
   }
 
@@ -5581,7 +5990,7 @@
 
   NSString stringByPaddingToLength_withString_startingAtIndex(
       int newLength, NSObject? padString, int padIndex) {
-    final _ret = _lib._objc_msgSend_45(
+    final _ret = _lib._objc_msgSend_46(
         _id,
         _lib._sel_stringByPaddingToLength_withString_startingAtIndex_1,
         newLength,
@@ -5591,7 +6000,7 @@
   }
 
   NSString stringByFoldingWithOptions_locale(int options, NSObject? locale) {
-    final _ret = _lib._objc_msgSend_46(
+    final _ret = _lib._objc_msgSend_47(
         _id,
         _lib._sel_stringByFoldingWithOptions_locale_1,
         options,
@@ -5604,7 +6013,7 @@
       NSObject? replacement,
       int options,
       NSRange searchRange) {
-    final _ret = _lib._objc_msgSend_47(
+    final _ret = _lib._objc_msgSend_48(
         _id,
         _lib._sel_stringByReplacingOccurrencesOfString_withString_options_range_1,
         target?._id ?? ffi.nullptr,
@@ -5616,7 +6025,7 @@
 
   NSString stringByReplacingOccurrencesOfString_withString(
       NSObject? target, NSObject? replacement) {
-    final _ret = _lib._objc_msgSend_48(
+    final _ret = _lib._objc_msgSend_49(
         _id,
         _lib._sel_stringByReplacingOccurrencesOfString_withString_1,
         target?._id ?? ffi.nullptr,
@@ -5626,7 +6035,7 @@
 
   NSString stringByReplacingCharactersInRange_withString(
       NSRange range, NSObject? replacement) {
-    final _ret = _lib._objc_msgSend_49(
+    final _ret = _lib._objc_msgSend_50(
         _id,
         _lib._sel_stringByReplacingCharactersInRange_withString_1,
         range,
@@ -5636,7 +6045,7 @@
 
   NSString stringByApplyingTransform_reverse(
       NSStringTransform transform, bool reverse) {
-    final _ret = _lib._objc_msgSend_50(
+    final _ret = _lib._objc_msgSend_51(
         _id, _lib._sel_stringByApplyingTransform_reverse_1, transform, reverse);
     return NSString._(_ret, _lib);
   }
@@ -5646,7 +6055,7 @@
       bool useAuxiliaryFile,
       int enc,
       ffi.Pointer<ffi.Pointer<ObjCObject>> error) {
-    return _lib._objc_msgSend_51(
+    return _lib._objc_msgSend_52(
         _id,
         _lib._sel_writeToURL_atomically_encoding_error_1,
         url?._id ?? ffi.nullptr,
@@ -5660,7 +6069,7 @@
       bool useAuxiliaryFile,
       int enc,
       ffi.Pointer<ffi.Pointer<ObjCObject>> error) {
-    return _lib._objc_msgSend_51(
+    return _lib._objc_msgSend_52(
         _id,
         _lib._sel_writeToFile_atomically_encoding_error_1,
         path?._id ?? ffi.nullptr,
@@ -5680,7 +6089,7 @@
 
   NSString initWithCharactersNoCopy_length_freeWhenDone(
       ffi.Pointer<unichar> characters, int length, bool freeBuffer) {
-    final _ret = _lib._objc_msgSend_52(
+    final _ret = _lib._objc_msgSend_53(
         _id,
         _lib._sel_initWithCharactersNoCopy_length_freeWhenDone_1,
         characters,
@@ -5690,25 +6099,25 @@
   }
 
   NSString initWithCharactersNoCopy_length_deallocator(
-      ffi.Pointer<unichar> chars, int len, NSObject deallocator) {
-    final _ret = _lib._objc_msgSend_53(
+      ffi.Pointer<unichar> chars, int len, ObjCBlock2 deallocator) {
+    final _ret = _lib._objc_msgSend_54(
         _id,
         _lib._sel_initWithCharactersNoCopy_length_deallocator_1,
         chars,
         len,
-        deallocator._id);
+        deallocator._impl);
     return NSString._(_ret, _lib);
   }
 
   NSString initWithCharacters_length(
       ffi.Pointer<unichar> characters, int length) {
-    final _ret = _lib._objc_msgSend_54(
+    final _ret = _lib._objc_msgSend_55(
         _id, _lib._sel_initWithCharacters_length_1, characters, length);
     return NSString._(_ret, _lib);
   }
 
   NSString initWithUTF8String(ffi.Pointer<pkg_ffi.Char> nullTerminatedCString) {
-    final _ret = _lib._objc_msgSend_55(
+    final _ret = _lib._objc_msgSend_56(
         _id, _lib._sel_initWithUTF8String_1, nullTerminatedCString);
     return NSString._(_ret, _lib);
   }
@@ -5727,7 +6136,7 @@
 
   NSString initWithFormat_arguments(
       NSObject? format, ffi.Pointer<__va_list_tag> argList) {
-    final _ret = _lib._objc_msgSend_56(
+    final _ret = _lib._objc_msgSend_57(
         _id,
         _lib._sel_initWithFormat_arguments_1,
         format?._id ?? ffi.nullptr,
@@ -5736,14 +6145,14 @@
   }
 
   NSString initWithFormat_locale(NSObject? format, NSObject locale) {
-    final _ret = _lib._objc_msgSend_57(_id, _lib._sel_initWithFormat_locale_1,
+    final _ret = _lib._objc_msgSend_58(_id, _lib._sel_initWithFormat_locale_1,
         format?._id ?? ffi.nullptr, locale._id);
     return NSString._(_ret, _lib);
   }
 
   NSString initWithFormat_locale_arguments(
       NSObject? format, NSObject locale, ffi.Pointer<__va_list_tag> argList) {
-    final _ret = _lib._objc_msgSend_58(
+    final _ret = _lib._objc_msgSend_59(
         _id,
         _lib._sel_initWithFormat_locale_arguments_1,
         format?._id ?? ffi.nullptr,
@@ -5753,21 +6162,21 @@
   }
 
   NSString initWithData_encoding(NSObject? data, int encoding) {
-    final _ret = _lib._objc_msgSend_59(_id, _lib._sel_initWithData_encoding_1,
+    final _ret = _lib._objc_msgSend_60(_id, _lib._sel_initWithData_encoding_1,
         data?._id ?? ffi.nullptr, encoding);
     return NSString._(_ret, _lib);
   }
 
   NSString initWithBytes_length_encoding(
       ffi.Pointer<ffi.Void> bytes, int len, int encoding) {
-    final _ret = _lib._objc_msgSend_60(
+    final _ret = _lib._objc_msgSend_61(
         _id, _lib._sel_initWithBytes_length_encoding_1, bytes, len, encoding);
     return NSString._(_ret, _lib);
   }
 
   NSString initWithBytesNoCopy_length_encoding_freeWhenDone(
       ffi.Pointer<ffi.Void> bytes, int len, int encoding, bool freeBuffer) {
-    final _ret = _lib._objc_msgSend_61(
+    final _ret = _lib._objc_msgSend_62(
         _id,
         _lib._sel_initWithBytesNoCopy_length_encoding_freeWhenDone_1,
         bytes,
@@ -5781,14 +6190,14 @@
       ffi.Pointer<ffi.Void> bytes,
       int len,
       int encoding,
-      NSObject deallocator) {
-    final _ret = _lib._objc_msgSend_62(
+      ObjCBlock3 deallocator) {
+    final _ret = _lib._objc_msgSend_63(
         _id,
         _lib._sel_initWithBytesNoCopy_length_encoding_deallocator_1,
         bytes,
         len,
         encoding,
-        deallocator._id);
+        deallocator._impl);
     return NSString._(_ret, _lib);
   }
 
@@ -5805,14 +6214,14 @@
 
   static NSString stringWithCharacters_length(
       NativeObjCLibrary _lib, ffi.Pointer<unichar> characters, int length) {
-    final _ret = _lib._objc_msgSend_54(_lib._class_NSString1,
+    final _ret = _lib._objc_msgSend_55(_lib._class_NSString1,
         _lib._sel_stringWithCharacters_length_1, characters, length);
     return NSString._(_ret, _lib);
   }
 
   static NSString stringWithUTF8String(
       NativeObjCLibrary _lib, ffi.Pointer<pkg_ffi.Char> nullTerminatedCString) {
-    final _ret = _lib._objc_msgSend_55(_lib._class_NSString1,
+    final _ret = _lib._objc_msgSend_56(_lib._class_NSString1,
         _lib._sel_stringWithUTF8String_1, nullTerminatedCString);
     return NSString._(_ret, _lib);
   }
@@ -5832,21 +6241,21 @@
 
   NSString initWithCString_encoding(
       ffi.Pointer<pkg_ffi.Char> nullTerminatedCString, int encoding) {
-    final _ret = _lib._objc_msgSend_63(_id,
+    final _ret = _lib._objc_msgSend_64(_id,
         _lib._sel_initWithCString_encoding_1, nullTerminatedCString, encoding);
     return NSString._(_ret, _lib);
   }
 
   static NSString stringWithCString_encoding(
       NativeObjCLibrary _lib, ffi.Pointer<pkg_ffi.Char> cString, int enc) {
-    final _ret = _lib._objc_msgSend_63(_lib._class_NSString1,
+    final _ret = _lib._objc_msgSend_64(_lib._class_NSString1,
         _lib._sel_stringWithCString_encoding_1, cString, enc);
     return NSString._(_ret, _lib);
   }
 
   NSString initWithContentsOfURL_encoding_error(
       NSObject? url, int enc, ffi.Pointer<ffi.Pointer<ObjCObject>> error) {
-    final _ret = _lib._objc_msgSend_64(
+    final _ret = _lib._objc_msgSend_65(
         _id,
         _lib._sel_initWithContentsOfURL_encoding_error_1,
         url?._id ?? ffi.nullptr,
@@ -5857,7 +6266,7 @@
 
   NSString initWithContentsOfFile_encoding_error(
       NSObject? path, int enc, ffi.Pointer<ffi.Pointer<ObjCObject>> error) {
-    final _ret = _lib._objc_msgSend_64(
+    final _ret = _lib._objc_msgSend_65(
         _id,
         _lib._sel_initWithContentsOfFile_encoding_error_1,
         path?._id ?? ffi.nullptr,
@@ -5868,7 +6277,7 @@
 
   static NSString stringWithContentsOfURL_encoding_error(NativeObjCLibrary _lib,
       NSObject? url, int enc, ffi.Pointer<ffi.Pointer<ObjCObject>> error) {
-    final _ret = _lib._objc_msgSend_64(
+    final _ret = _lib._objc_msgSend_65(
         _lib._class_NSString1,
         _lib._sel_stringWithContentsOfURL_encoding_error_1,
         url?._id ?? ffi.nullptr,
@@ -5882,7 +6291,7 @@
       NSObject? path,
       int enc,
       ffi.Pointer<ffi.Pointer<ObjCObject>> error) {
-    final _ret = _lib._objc_msgSend_64(
+    final _ret = _lib._objc_msgSend_65(
         _lib._class_NSString1,
         _lib._sel_stringWithContentsOfFile_encoding_error_1,
         path?._id ?? ffi.nullptr,
@@ -5895,7 +6304,7 @@
       NSObject? url,
       ffi.Pointer<NSStringEncoding> enc,
       ffi.Pointer<ffi.Pointer<ObjCObject>> error) {
-    final _ret = _lib._objc_msgSend_65(
+    final _ret = _lib._objc_msgSend_66(
         _id,
         _lib._sel_initWithContentsOfURL_usedEncoding_error_1,
         url?._id ?? ffi.nullptr,
@@ -5908,7 +6317,7 @@
       NSObject? path,
       ffi.Pointer<NSStringEncoding> enc,
       ffi.Pointer<ffi.Pointer<ObjCObject>> error) {
-    final _ret = _lib._objc_msgSend_65(
+    final _ret = _lib._objc_msgSend_66(
         _id,
         _lib._sel_initWithContentsOfFile_usedEncoding_error_1,
         path?._id ?? ffi.nullptr,
@@ -5922,7 +6331,7 @@
       NSObject? url,
       ffi.Pointer<NSStringEncoding> enc,
       ffi.Pointer<ffi.Pointer<ObjCObject>> error) {
-    final _ret = _lib._objc_msgSend_65(
+    final _ret = _lib._objc_msgSend_66(
         _lib._class_NSString1,
         _lib._sel_stringWithContentsOfURL_usedEncoding_error_1,
         url?._id ?? ffi.nullptr,
@@ -5936,7 +6345,7 @@
       NSObject? path,
       ffi.Pointer<NSStringEncoding> enc,
       ffi.Pointer<ffi.Pointer<ObjCObject>> error) {
-    final _ret = _lib._objc_msgSend_65(
+    final _ret = _lib._objc_msgSend_66(
         _lib._class_NSString1,
         _lib._sel_stringWithContentsOfFile_usedEncoding_error_1,
         path?._id ?? ffi.nullptr,
@@ -5952,7 +6361,7 @@
           NSObject? opts,
           ffi.Pointer<ffi.Pointer<ObjCObject>> string,
           ffi.Pointer<ffi.Uint8> usedLossyConversion) {
-    return _lib._objc_msgSend_66(
+    return _lib._objc_msgSend_67(
         _lib._class_NSString1,
         _lib._sel_stringEncodingForData_encodingOptions_convertedString_usedLossyConversion_1,
         data?._id ?? ffi.nullptr,
@@ -5967,7 +6376,7 @@
   }
 
   NSDictionary propertyListFromStringsFileFormat() {
-    final _ret = _lib._objc_msgSend_67(
+    final _ret = _lib._objc_msgSend_68(
         _id, _lib._sel_propertyListFromStringsFileFormat1);
     return NSDictionary._(_ret, _lib);
   }
@@ -5985,11 +6394,11 @@
   }
 
   void getCString(ffi.Pointer<pkg_ffi.Char> bytes) {
-    _lib._objc_msgSend_68(_id, _lib._sel_getCString_1, bytes);
+    _lib._objc_msgSend_69(_id, _lib._sel_getCString_1, bytes);
   }
 
   void getCString_maxLength(ffi.Pointer<pkg_ffi.Char> bytes, int maxLength) {
-    _lib._objc_msgSend_69(
+    _lib._objc_msgSend_70(
         _id, _lib._sel_getCString_maxLength_1, bytes, maxLength);
   }
 
@@ -5998,7 +6407,7 @@
       int maxLength,
       NSRange aRange,
       NSRangePointer leftoverRange) {
-    _lib._objc_msgSend_70(
+    _lib._objc_msgSend_71(
         _id,
         _lib._sel_getCString_maxLength_range_remainingRange_1,
         bytes,
@@ -6008,12 +6417,12 @@
   }
 
   bool writeToFile_atomically(NSObject? path, bool useAuxiliaryFile) {
-    return _lib._objc_msgSend_71(_id, _lib._sel_writeToFile_atomically_1,
+    return _lib._objc_msgSend_72(_id, _lib._sel_writeToFile_atomically_1,
         path?._id ?? ffi.nullptr, useAuxiliaryFile);
   }
 
   bool writeToURL_atomically(NSObject? url, bool atomically) {
-    return _lib._objc_msgSend_71(_id, _lib._sel_writeToURL_atomically_1,
+    return _lib._objc_msgSend_72(_id, _lib._sel_writeToURL_atomically_1,
         url?._id ?? ffi.nullptr, atomically);
   }
 
@@ -6045,7 +6454,7 @@
 
   NSObject initWithCStringNoCopy_length_freeWhenDone(
       ffi.Pointer<pkg_ffi.Char> bytes, int length, bool freeBuffer) {
-    final _ret = _lib._objc_msgSend_72(
+    final _ret = _lib._objc_msgSend_73(
         _id,
         _lib._sel_initWithCStringNoCopy_length_freeWhenDone_1,
         bytes,
@@ -6055,32 +6464,32 @@
   }
 
   NSObject initWithCString_length(ffi.Pointer<pkg_ffi.Char> bytes, int length) {
-    final _ret = _lib._objc_msgSend_63(
+    final _ret = _lib._objc_msgSend_64(
         _id, _lib._sel_initWithCString_length_1, bytes, length);
     return NSObject._(_ret, _lib);
   }
 
   NSObject initWithCString(ffi.Pointer<pkg_ffi.Char> bytes) {
-    final _ret = _lib._objc_msgSend_55(_id, _lib._sel_initWithCString_1, bytes);
+    final _ret = _lib._objc_msgSend_56(_id, _lib._sel_initWithCString_1, bytes);
     return NSObject._(_ret, _lib);
   }
 
   static NSObject stringWithCString_length(
       NativeObjCLibrary _lib, ffi.Pointer<pkg_ffi.Char> bytes, int length) {
-    final _ret = _lib._objc_msgSend_63(_lib._class_NSString1,
+    final _ret = _lib._objc_msgSend_64(_lib._class_NSString1,
         _lib._sel_stringWithCString_length_1, bytes, length);
     return NSObject._(_ret, _lib);
   }
 
   static NSObject stringWithCString(
       NativeObjCLibrary _lib, ffi.Pointer<pkg_ffi.Char> bytes) {
-    final _ret = _lib._objc_msgSend_55(
+    final _ret = _lib._objc_msgSend_56(
         _lib._class_NSString1, _lib._sel_stringWithCString_1, bytes);
     return NSObject._(_ret, _lib);
   }
 
   void getCharacters(ffi.Pointer<unichar> buffer) {
-    _lib._objc_msgSend_73(_id, _lib._sel_getCharacters_1, buffer);
+    _lib._objc_msgSend_74(_id, _lib._sel_getCharacters_1, buffer);
   }
 
   static NSString new1(NativeObjCLibrary _lib) {
@@ -6134,6 +6543,118 @@
   static const int NSStringEnumerationLocalized = 1024;
 }
 
+void _ObjCBlock_fnPtrTrampoline(
+    ffi.Pointer<_ObjCBlock> block,
+    ffi.Pointer<ObjCObject> arg0,
+    NSRange arg1,
+    NSRange arg2,
+    ffi.Pointer<ffi.Uint8> arg3) {
+  return block.ref.target
+      .cast<
+          ffi.NativeFunction<
+              ffi.Void Function(ffi.Pointer<ObjCObject> arg0, NSRange arg1,
+                  NSRange arg2, ffi.Pointer<ffi.Uint8> arg3)>>()
+      .asFunction<
+          void Function(
+              ffi.Pointer<ObjCObject> arg0,
+              NSRange arg1,
+              NSRange arg2,
+              ffi.Pointer<ffi.Uint8> arg3)>()(arg0, arg1, arg2, arg3);
+}
+
+class ObjCBlock {
+  final ffi.Pointer<_ObjCBlock> _impl;
+  final NativeObjCLibrary _lib;
+  ObjCBlock._(this._impl, this._lib);
+
+  ObjCBlock.fromFunctionPointer(
+      this._lib,
+      ffi.Pointer<
+              ffi.NativeFunction<
+                  ffi.Void Function(ffi.Pointer<ObjCObject> arg0, NSRange arg1,
+                      NSRange arg2, ffi.Pointer<ffi.Uint8> arg3)>>
+          ptr)
+      : _impl = _lib._newBlock1(
+            ffi.Pointer.fromFunction<
+                        ffi.Void Function(
+                            ffi.Pointer<_ObjCBlock> block,
+                            ffi.Pointer<ObjCObject> arg0,
+                            NSRange arg1,
+                            NSRange arg2,
+                            ffi.Pointer<ffi.Uint8> arg3)>(
+                    _ObjCBlock_fnPtrTrampoline)
+                .cast(),
+            ptr.cast());
+  ffi.Pointer<_ObjCBlock> get pointer => _impl;
+}
+
+class _ObjCBlockDesc extends ffi.Struct {
+  @pkg_ffi.UnsignedLong()
+  external int reserved;
+
+  @pkg_ffi.UnsignedLong()
+  external int size;
+
+  external ffi.Pointer<ffi.Void> copy_helper;
+
+  external ffi.Pointer<ffi.Void> dispose_helper;
+
+  external ffi.Pointer<pkg_ffi.Char> signature;
+}
+
+class _ObjCBlock extends ffi.Struct {
+  external ffi.Pointer<ffi.Void> isa;
+
+  @pkg_ffi.Int()
+  external int flags;
+
+  @pkg_ffi.Int()
+  external int reserved;
+
+  external ffi.Pointer<ffi.Void> invoke;
+
+  external ffi.Pointer<_ObjCBlockDesc> descriptor;
+
+  external ffi.Pointer<ffi.Void> target;
+}
+
+void _ObjCBlock1_fnPtrTrampoline(ffi.Pointer<_ObjCBlock> block,
+    ffi.Pointer<ObjCObject> arg0, ffi.Pointer<ffi.Uint8> arg1) {
+  return block.ref.target
+      .cast<
+          ffi.NativeFunction<
+              ffi.Void Function(
+                  ffi.Pointer<ObjCObject> arg0, ffi.Pointer<ffi.Uint8> arg1)>>()
+      .asFunction<
+          void Function(ffi.Pointer<ObjCObject> arg0,
+              ffi.Pointer<ffi.Uint8> arg1)>()(arg0, arg1);
+}
+
+class ObjCBlock1 {
+  final ffi.Pointer<_ObjCBlock> _impl;
+  final NativeObjCLibrary _lib;
+  ObjCBlock1._(this._impl, this._lib);
+
+  ObjCBlock1.fromFunctionPointer(
+      this._lib,
+      ffi.Pointer<
+              ffi.NativeFunction<
+                  ffi.Void Function(ffi.Pointer<ObjCObject> arg0,
+                      ffi.Pointer<ffi.Uint8> arg1)>>
+          ptr)
+      : _impl =
+            _lib._newBlock1(
+                ffi.Pointer.fromFunction<
+                            ffi.Void Function(
+                                ffi.Pointer<_ObjCBlock> block,
+                                ffi.Pointer<ObjCObject> arg0,
+                                ffi.Pointer<ffi.Uint8> arg1)>(
+                        _ObjCBlock1_fnPtrTrampoline)
+                    .cast(),
+                ptr.cast());
+  ffi.Pointer<_ObjCBlock> get pointer => _impl;
+}
+
 typedef NSStringEncoding = NSUInteger;
 
 class NSData extends _ObjCWrapper {
@@ -6157,6 +6678,38 @@
 
 typedef NSRangePointer = ffi.Pointer<NSRange>;
 typedef NSStringTransform = ffi.Pointer<ObjCObject>;
+void _ObjCBlock2_fnPtrTrampoline(
+    ffi.Pointer<_ObjCBlock> block, ffi.Pointer<unichar> arg0, int arg1) {
+  return block.ref.target
+      .cast<
+          ffi.NativeFunction<
+              ffi.Void Function(ffi.Pointer<unichar> arg0, NSUInteger arg1)>>()
+      .asFunction<
+          void Function(ffi.Pointer<unichar> arg0, int arg1)>()(arg0, arg1);
+}
+
+class ObjCBlock2 {
+  final ffi.Pointer<_ObjCBlock> _impl;
+  final NativeObjCLibrary _lib;
+  ObjCBlock2._(this._impl, this._lib);
+
+  ObjCBlock2.fromFunctionPointer(
+      this._lib,
+      ffi.Pointer<
+              ffi.NativeFunction<
+                  ffi.Void Function(
+                      ffi.Pointer<unichar> arg0, NSUInteger arg1)>>
+          ptr)
+      : _impl = _lib._newBlock1(
+            ffi.Pointer.fromFunction<
+                    ffi.Void Function(
+                        ffi.Pointer<_ObjCBlock> block,
+                        ffi.Pointer<unichar> arg0,
+                        NSUInteger arg1)>(_ObjCBlock2_fnPtrTrampoline)
+                .cast(),
+            ptr.cast());
+  ffi.Pointer<_ObjCBlock> get pointer => _impl;
+}
 
 class __va_list_tag extends ffi.Struct {
   @pkg_ffi.UnsignedInt()
@@ -6170,6 +6723,39 @@
   external ffi.Pointer<ffi.Void> reg_save_area;
 }
 
+void _ObjCBlock3_fnPtrTrampoline(
+    ffi.Pointer<_ObjCBlock> block, ffi.Pointer<ffi.Void> arg0, int arg1) {
+  return block.ref.target
+      .cast<
+          ffi.NativeFunction<
+              ffi.Void Function(ffi.Pointer<ffi.Void> arg0, NSUInteger arg1)>>()
+      .asFunction<
+          void Function(ffi.Pointer<ffi.Void> arg0, int arg1)>()(arg0, arg1);
+}
+
+class ObjCBlock3 {
+  final ffi.Pointer<_ObjCBlock> _impl;
+  final NativeObjCLibrary _lib;
+  ObjCBlock3._(this._impl, this._lib);
+
+  ObjCBlock3.fromFunctionPointer(
+      this._lib,
+      ffi.Pointer<
+              ffi.NativeFunction<
+                  ffi.Void Function(
+                      ffi.Pointer<ffi.Void> arg0, NSUInteger arg1)>>
+          ptr)
+      : _impl = _lib._newBlock1(
+            ffi.Pointer.fromFunction<
+                    ffi.Void Function(
+                        ffi.Pointer<_ObjCBlock> block,
+                        ffi.Pointer<ffi.Void> arg0,
+                        NSUInteger arg1)>(_ObjCBlock3_fnPtrTrampoline)
+                .cast(),
+            ptr.cast());
+  ffi.Pointer<_ObjCBlock> get pointer => _impl;
+}
+
 class NSDictionary extends _ObjCWrapper {
   NSDictionary._(ffi.Pointer<ObjCObject> id, NativeObjCLibrary lib)
       : super._(id, lib);
@@ -6198,16 +6784,16 @@
   }
 
   void getValue_size(ffi.Pointer<ffi.Void> value, int size) {
-    _lib._objc_msgSend_76(_id, _lib._sel_getValue_size_1, value, size);
+    _lib._objc_msgSend_77(_id, _lib._sel_getValue_size_1, value, size);
   }
 
   ffi.Pointer<pkg_ffi.Char> get objCType {
-    return _lib._objc_msgSend_36(_id, _lib._sel_objCType1);
+    return _lib._objc_msgSend_37(_id, _lib._sel_objCType1);
   }
 
   NSValue initWithBytes_objCType(
       ffi.Pointer<ffi.Void> value, ffi.Pointer<pkg_ffi.Char> type) {
-    final _ret = _lib._objc_msgSend_77(
+    final _ret = _lib._objc_msgSend_78(
         _id, _lib._sel_initWithBytes_objCType_1, value, type);
     return NSValue._(_ret, _lib);
   }
@@ -6220,21 +6806,21 @@
 
   static NSValue valueWithBytes_objCType(NativeObjCLibrary _lib,
       ffi.Pointer<ffi.Void> value, ffi.Pointer<pkg_ffi.Char> type) {
-    final _ret = _lib._objc_msgSend_78(
+    final _ret = _lib._objc_msgSend_79(
         _lib._class_NSValue1, _lib._sel_valueWithBytes_objCType_1, value, type);
     return NSValue._(_ret, _lib);
   }
 
   static NSValue value_withObjCType(NativeObjCLibrary _lib,
       ffi.Pointer<ffi.Void> value, ffi.Pointer<pkg_ffi.Char> type) {
-    final _ret = _lib._objc_msgSend_78(
+    final _ret = _lib._objc_msgSend_79(
         _lib._class_NSValue1, _lib._sel_value_withObjCType_1, value, type);
     return NSValue._(_ret, _lib);
   }
 
   static NSValue valueWithNonretainedObject(
       NativeObjCLibrary _lib, NSObject anObject) {
-    final _ret = _lib._objc_msgSend_79(_lib._class_NSValue1,
+    final _ret = _lib._objc_msgSend_80(_lib._class_NSValue1,
         _lib._sel_valueWithNonretainedObject_1, anObject._id);
     return NSValue._(_ret, _lib);
   }
@@ -6246,13 +6832,13 @@
 
   static NSValue valueWithPointer(
       NativeObjCLibrary _lib, ffi.Pointer<ffi.Void> pointer) {
-    final _ret = _lib._objc_msgSend_80(
+    final _ret = _lib._objc_msgSend_81(
         _lib._class_NSValue1, _lib._sel_valueWithPointer_1, pointer);
     return NSValue._(_ret, _lib);
   }
 
   ffi.Pointer<ffi.Void> get pointerValue {
-    return _lib._objc_msgSend_81(_id, _lib._sel_pointerValue1);
+    return _lib._objc_msgSend_82(_id, _lib._sel_pointerValue1);
   }
 
   bool isEqualToValue(NSObject? value) {
@@ -6261,17 +6847,17 @@
   }
 
   void getValue(ffi.Pointer<ffi.Void> value) {
-    _lib._objc_msgSend_82(_id, _lib._sel_getValue_1, value);
+    _lib._objc_msgSend_83(_id, _lib._sel_getValue_1, value);
   }
 
   static NSValue valueWithRange(NativeObjCLibrary _lib, NSRange range) {
-    final _ret = _lib._objc_msgSend_83(
+    final _ret = _lib._objc_msgSend_84(
         _lib._class_NSValue1, _lib._sel_valueWithRange_1, range);
     return NSValue._(_ret, _lib);
   }
 
   NSRange get rangeValue {
-    return _lib._objc_msgSend_84(_id, _lib._sel_rangeValue1);
+    return _lib._objc_msgSend_85(_id, _lib._sel_rangeValue1);
   }
 
   static NSValue new1(NativeObjCLibrary _lib) {
@@ -6306,101 +6892,101 @@
   }
 
   NSNumber initWithChar(int value) {
-    final _ret = _lib._objc_msgSend_85(_id, _lib._sel_initWithChar_1, value);
+    final _ret = _lib._objc_msgSend_86(_id, _lib._sel_initWithChar_1, value);
     return NSNumber._(_ret, _lib);
   }
 
   NSNumber initWithUnsignedChar(int value) {
     final _ret =
-        _lib._objc_msgSend_86(_id, _lib._sel_initWithUnsignedChar_1, value);
+        _lib._objc_msgSend_87(_id, _lib._sel_initWithUnsignedChar_1, value);
     return NSNumber._(_ret, _lib);
   }
 
   NSNumber initWithShort(int value) {
-    final _ret = _lib._objc_msgSend_87(_id, _lib._sel_initWithShort_1, value);
+    final _ret = _lib._objc_msgSend_88(_id, _lib._sel_initWithShort_1, value);
     return NSNumber._(_ret, _lib);
   }
 
   NSNumber initWithUnsignedShort(int value) {
     final _ret =
-        _lib._objc_msgSend_88(_id, _lib._sel_initWithUnsignedShort_1, value);
+        _lib._objc_msgSend_89(_id, _lib._sel_initWithUnsignedShort_1, value);
     return NSNumber._(_ret, _lib);
   }
 
   NSNumber initWithInt(int value) {
-    final _ret = _lib._objc_msgSend_89(_id, _lib._sel_initWithInt_1, value);
+    final _ret = _lib._objc_msgSend_90(_id, _lib._sel_initWithInt_1, value);
     return NSNumber._(_ret, _lib);
   }
 
   NSNumber initWithUnsignedInt(int value) {
     final _ret =
-        _lib._objc_msgSend_90(_id, _lib._sel_initWithUnsignedInt_1, value);
+        _lib._objc_msgSend_91(_id, _lib._sel_initWithUnsignedInt_1, value);
     return NSNumber._(_ret, _lib);
   }
 
   NSNumber initWithLong(int value) {
-    final _ret = _lib._objc_msgSend_91(_id, _lib._sel_initWithLong_1, value);
+    final _ret = _lib._objc_msgSend_92(_id, _lib._sel_initWithLong_1, value);
     return NSNumber._(_ret, _lib);
   }
 
   NSNumber initWithUnsignedLong(int value) {
     final _ret =
-        _lib._objc_msgSend_92(_id, _lib._sel_initWithUnsignedLong_1, value);
+        _lib._objc_msgSend_93(_id, _lib._sel_initWithUnsignedLong_1, value);
     return NSNumber._(_ret, _lib);
   }
 
   NSNumber initWithLongLong(int value) {
     final _ret =
-        _lib._objc_msgSend_93(_id, _lib._sel_initWithLongLong_1, value);
+        _lib._objc_msgSend_94(_id, _lib._sel_initWithLongLong_1, value);
     return NSNumber._(_ret, _lib);
   }
 
   NSNumber initWithUnsignedLongLong(int value) {
     final _ret =
-        _lib._objc_msgSend_94(_id, _lib._sel_initWithUnsignedLongLong_1, value);
+        _lib._objc_msgSend_95(_id, _lib._sel_initWithUnsignedLongLong_1, value);
     return NSNumber._(_ret, _lib);
   }
 
   NSNumber initWithFloat(double value) {
-    final _ret = _lib._objc_msgSend_95(_id, _lib._sel_initWithFloat_1, value);
+    final _ret = _lib._objc_msgSend_96(_id, _lib._sel_initWithFloat_1, value);
     return NSNumber._(_ret, _lib);
   }
 
   NSNumber initWithDouble(double value) {
-    final _ret = _lib._objc_msgSend_96(_id, _lib._sel_initWithDouble_1, value);
+    final _ret = _lib._objc_msgSend_97(_id, _lib._sel_initWithDouble_1, value);
     return NSNumber._(_ret, _lib);
   }
 
   NSNumber initWithBool(bool value) {
-    final _ret = _lib._objc_msgSend_97(_id, _lib._sel_initWithBool_1, value);
+    final _ret = _lib._objc_msgSend_98(_id, _lib._sel_initWithBool_1, value);
     return NSNumber._(_ret, _lib);
   }
 
   NSNumber initWithInteger(int value) {
-    final _ret = _lib._objc_msgSend_91(_id, _lib._sel_initWithInteger_1, value);
+    final _ret = _lib._objc_msgSend_92(_id, _lib._sel_initWithInteger_1, value);
     return NSNumber._(_ret, _lib);
   }
 
   NSNumber initWithUnsignedInteger(int value) {
     final _ret =
-        _lib._objc_msgSend_92(_id, _lib._sel_initWithUnsignedInteger_1, value);
+        _lib._objc_msgSend_93(_id, _lib._sel_initWithUnsignedInteger_1, value);
     return NSNumber._(_ret, _lib);
   }
 
   int get charValue {
-    return _lib._objc_msgSend_98(_id, _lib._sel_charValue1);
+    return _lib._objc_msgSend_99(_id, _lib._sel_charValue1);
   }
 
   int get unsignedCharValue {
-    return _lib._objc_msgSend_99(_id, _lib._sel_unsignedCharValue1);
+    return _lib._objc_msgSend_100(_id, _lib._sel_unsignedCharValue1);
   }
 
   int get shortValue {
-    return _lib._objc_msgSend_100(_id, _lib._sel_shortValue1);
+    return _lib._objc_msgSend_101(_id, _lib._sel_shortValue1);
   }
 
   int get unsignedShortValue {
-    return _lib._objc_msgSend_101(_id, _lib._sel_unsignedShortValue1);
+    return _lib._objc_msgSend_102(_id, _lib._sel_unsignedShortValue1);
   }
 
   int get intValue {
@@ -6408,7 +6994,7 @@
   }
 
   int get unsignedIntValue {
-    return _lib._objc_msgSend_102(_id, _lib._sel_unsignedIntValue1);
+    return _lib._objc_msgSend_103(_id, _lib._sel_unsignedIntValue1);
   }
 
   int get longValue {
@@ -6424,7 +7010,7 @@
   }
 
   int get unsignedLongLongValue {
-    return _lib._objc_msgSend_103(_id, _lib._sel_unsignedLongLongValue1);
+    return _lib._objc_msgSend_104(_id, _lib._sel_unsignedLongLongValue1);
   }
 
   double get floatValue {
@@ -6469,126 +7055,126 @@
   }
 
   static NSNumber numberWithChar(NativeObjCLibrary _lib, int value) {
-    final _ret = _lib._objc_msgSend_85(
+    final _ret = _lib._objc_msgSend_86(
         _lib._class_NSNumber1, _lib._sel_numberWithChar_1, value);
     return NSNumber._(_ret, _lib);
   }
 
   static NSNumber numberWithUnsignedChar(NativeObjCLibrary _lib, int value) {
-    final _ret = _lib._objc_msgSend_86(
+    final _ret = _lib._objc_msgSend_87(
         _lib._class_NSNumber1, _lib._sel_numberWithUnsignedChar_1, value);
     return NSNumber._(_ret, _lib);
   }
 
   static NSNumber numberWithShort(NativeObjCLibrary _lib, int value) {
-    final _ret = _lib._objc_msgSend_87(
+    final _ret = _lib._objc_msgSend_88(
         _lib._class_NSNumber1, _lib._sel_numberWithShort_1, value);
     return NSNumber._(_ret, _lib);
   }
 
   static NSNumber numberWithUnsignedShort(NativeObjCLibrary _lib, int value) {
-    final _ret = _lib._objc_msgSend_88(
+    final _ret = _lib._objc_msgSend_89(
         _lib._class_NSNumber1, _lib._sel_numberWithUnsignedShort_1, value);
     return NSNumber._(_ret, _lib);
   }
 
   static NSNumber numberWithInt(NativeObjCLibrary _lib, int value) {
-    final _ret = _lib._objc_msgSend_89(
+    final _ret = _lib._objc_msgSend_90(
         _lib._class_NSNumber1, _lib._sel_numberWithInt_1, value);
     return NSNumber._(_ret, _lib);
   }
 
   static NSNumber numberWithUnsignedInt(NativeObjCLibrary _lib, int value) {
-    final _ret = _lib._objc_msgSend_90(
+    final _ret = _lib._objc_msgSend_91(
         _lib._class_NSNumber1, _lib._sel_numberWithUnsignedInt_1, value);
     return NSNumber._(_ret, _lib);
   }
 
   static NSNumber numberWithLong(NativeObjCLibrary _lib, int value) {
-    final _ret = _lib._objc_msgSend_91(
+    final _ret = _lib._objc_msgSend_92(
         _lib._class_NSNumber1, _lib._sel_numberWithLong_1, value);
     return NSNumber._(_ret, _lib);
   }
 
   static NSNumber numberWithUnsignedLong(NativeObjCLibrary _lib, int value) {
-    final _ret = _lib._objc_msgSend_92(
+    final _ret = _lib._objc_msgSend_93(
         _lib._class_NSNumber1, _lib._sel_numberWithUnsignedLong_1, value);
     return NSNumber._(_ret, _lib);
   }
 
   static NSNumber numberWithLongLong(NativeObjCLibrary _lib, int value) {
-    final _ret = _lib._objc_msgSend_93(
+    final _ret = _lib._objc_msgSend_94(
         _lib._class_NSNumber1, _lib._sel_numberWithLongLong_1, value);
     return NSNumber._(_ret, _lib);
   }
 
   static NSNumber numberWithUnsignedLongLong(
       NativeObjCLibrary _lib, int value) {
-    final _ret = _lib._objc_msgSend_94(
+    final _ret = _lib._objc_msgSend_95(
         _lib._class_NSNumber1, _lib._sel_numberWithUnsignedLongLong_1, value);
     return NSNumber._(_ret, _lib);
   }
 
   static NSNumber numberWithFloat(NativeObjCLibrary _lib, double value) {
-    final _ret = _lib._objc_msgSend_95(
+    final _ret = _lib._objc_msgSend_96(
         _lib._class_NSNumber1, _lib._sel_numberWithFloat_1, value);
     return NSNumber._(_ret, _lib);
   }
 
   static NSNumber numberWithDouble(NativeObjCLibrary _lib, double value) {
-    final _ret = _lib._objc_msgSend_96(
+    final _ret = _lib._objc_msgSend_97(
         _lib._class_NSNumber1, _lib._sel_numberWithDouble_1, value);
     return NSNumber._(_ret, _lib);
   }
 
   static NSNumber numberWithBool(NativeObjCLibrary _lib, bool value) {
-    final _ret = _lib._objc_msgSend_97(
+    final _ret = _lib._objc_msgSend_98(
         _lib._class_NSNumber1, _lib._sel_numberWithBool_1, value);
     return NSNumber._(_ret, _lib);
   }
 
   static NSNumber numberWithInteger(NativeObjCLibrary _lib, int value) {
-    final _ret = _lib._objc_msgSend_91(
+    final _ret = _lib._objc_msgSend_92(
         _lib._class_NSNumber1, _lib._sel_numberWithInteger_1, value);
     return NSNumber._(_ret, _lib);
   }
 
   static NSNumber numberWithUnsignedInteger(NativeObjCLibrary _lib, int value) {
-    final _ret = _lib._objc_msgSend_92(
+    final _ret = _lib._objc_msgSend_93(
         _lib._class_NSNumber1, _lib._sel_numberWithUnsignedInteger_1, value);
     return NSNumber._(_ret, _lib);
   }
 
   static NSValue valueWithBytes_objCType(NativeObjCLibrary _lib,
       ffi.Pointer<ffi.Void> value, ffi.Pointer<pkg_ffi.Char> type) {
-    final _ret = _lib._objc_msgSend_78(_lib._class_NSNumber1,
+    final _ret = _lib._objc_msgSend_79(_lib._class_NSNumber1,
         _lib._sel_valueWithBytes_objCType_1, value, type);
     return NSValue._(_ret, _lib);
   }
 
   static NSValue value_withObjCType(NativeObjCLibrary _lib,
       ffi.Pointer<ffi.Void> value, ffi.Pointer<pkg_ffi.Char> type) {
-    final _ret = _lib._objc_msgSend_78(
+    final _ret = _lib._objc_msgSend_79(
         _lib._class_NSNumber1, _lib._sel_value_withObjCType_1, value, type);
     return NSValue._(_ret, _lib);
   }
 
   static NSValue valueWithNonretainedObject(
       NativeObjCLibrary _lib, NSObject anObject) {
-    final _ret = _lib._objc_msgSend_79(_lib._class_NSNumber1,
+    final _ret = _lib._objc_msgSend_80(_lib._class_NSNumber1,
         _lib._sel_valueWithNonretainedObject_1, anObject._id);
     return NSValue._(_ret, _lib);
   }
 
   static NSValue valueWithPointer(
       NativeObjCLibrary _lib, ffi.Pointer<ffi.Void> pointer) {
-    final _ret = _lib._objc_msgSend_80(
+    final _ret = _lib._objc_msgSend_81(
         _lib._class_NSNumber1, _lib._sel_valueWithPointer_1, pointer);
     return NSValue._(_ret, _lib);
   }
 
   static NSValue valueWithRange(NativeObjCLibrary _lib, NSRange range) {
-    final _ret = _lib._objc_msgSend_83(
+    final _ret = _lib._objc_msgSend_84(
         _lib._class_NSNumber1, _lib._sel_valueWithRange_1, range);
     return NSValue._(_ret, _lib);
   }
@@ -6683,7 +7269,7 @@
   }
 
   NSObject objectAtIndex(int index) {
-    final _ret = _lib._objc_msgSend_104(_id, _lib._sel_objectAtIndex_1, index);
+    final _ret = _lib._objc_msgSend_105(_id, _lib._sel_objectAtIndex_1, index);
     return NSObject._(_ret, _lib);
   }
 
@@ -6695,7 +7281,7 @@
 
   NSArray initWithObjects_count(
       ffi.Pointer<ffi.Pointer<ObjCObject>> objects, int cnt) {
-    final _ret = _lib._objc_msgSend_105(
+    final _ret = _lib._objc_msgSend_106(
         _id, _lib._sel_initWithObjects_count_1, objects, cnt);
     return NSArray._(_ret, _lib);
   }
@@ -6728,7 +7314,7 @@
   }
 
   NSString descriptionWithLocale_indent(NSObject locale, int level) {
-    final _ret = _lib._objc_msgSend_106(
+    final _ret = _lib._objc_msgSend_107(
         _id, _lib._sel_descriptionWithLocale_indent_1, locale._id, level);
     return NSString._(_ret, _lib);
   }
@@ -6741,25 +7327,25 @@
 
   void getObjects_range(
       ffi.Pointer<ffi.Pointer<ObjCObject>> objects, NSRange range) {
-    _lib._objc_msgSend_107(_id, _lib._sel_getObjects_range_1, objects, range);
+    _lib._objc_msgSend_108(_id, _lib._sel_getObjects_range_1, objects, range);
   }
 
   int indexOfObject(NSObject anObject) {
-    return _lib._objc_msgSend_108(_id, _lib._sel_indexOfObject_1, anObject._id);
+    return _lib._objc_msgSend_109(_id, _lib._sel_indexOfObject_1, anObject._id);
   }
 
   int indexOfObject_inRange(NSObject anObject, NSRange range) {
-    return _lib._objc_msgSend_109(
+    return _lib._objc_msgSend_110(
         _id, _lib._sel_indexOfObject_inRange_1, anObject._id, range);
   }
 
   int indexOfObjectIdenticalTo(NSObject anObject) {
-    return _lib._objc_msgSend_108(
+    return _lib._objc_msgSend_109(
         _id, _lib._sel_indexOfObjectIdenticalTo_1, anObject._id);
   }
 
   int indexOfObjectIdenticalTo_inRange(NSObject anObject, NSRange range) {
-    return _lib._objc_msgSend_109(
+    return _lib._objc_msgSend_110(
         _id, _lib._sel_indexOfObjectIdenticalTo_inRange_1, anObject._id, range);
   }
 
@@ -6785,7 +7371,7 @@
 
   bool writeToURL_error(
       NSObject? url, ffi.Pointer<ffi.Pointer<ObjCObject>> error) {
-    return _lib._objc_msgSend_110(
+    return _lib._objc_msgSend_111(
         _id, _lib._sel_writeToURL_error_1, url?._id ?? ffi.nullptr, error);
   }
 
@@ -6796,7 +7382,7 @@
 
   void makeObjectsPerformSelector_withObject(
       ffi.Pointer<ObjCSel> aSelector, NSObject argument) {
-    _lib._objc_msgSend_111(
+    _lib._objc_msgSend_112(
         _id,
         _lib._sel_makeObjectsPerformSelector_withObject_1,
         aSelector,
@@ -6805,80 +7391,83 @@
 
   NSObject objectAtIndexedSubscript(int idx) {
     final _ret =
-        _lib._objc_msgSend_104(_id, _lib._sel_objectAtIndexedSubscript_1, idx);
+        _lib._objc_msgSend_105(_id, _lib._sel_objectAtIndexedSubscript_1, idx);
     return NSObject._(_ret, _lib);
   }
 
-  void enumerateObjectsUsingBlock(NSObject block) {
-    _lib._objc_msgSend_8(
-        _id, _lib._sel_enumerateObjectsUsingBlock_1, block._id);
+  void enumerateObjectsUsingBlock(ObjCBlock4 block) {
+    _lib._objc_msgSend_113(
+        _id, _lib._sel_enumerateObjectsUsingBlock_1, block._impl);
   }
 
-  void enumerateObjectsWithOptions_usingBlock(int opts, NSObject block) {
-    _lib._objc_msgSend_112(_id,
-        _lib._sel_enumerateObjectsWithOptions_usingBlock_1, opts, block._id);
+  void enumerateObjectsWithOptions_usingBlock(int opts, ObjCBlock4 block) {
+    _lib._objc_msgSend_114(_id,
+        _lib._sel_enumerateObjectsWithOptions_usingBlock_1, opts, block._impl);
   }
 
   void enumerateObjectsAtIndexes_options_usingBlock(
-      NSObject? s, int opts, NSObject block) {
-    _lib._objc_msgSend_113(
+      NSObject? s, int opts, ObjCBlock4 block) {
+    _lib._objc_msgSend_115(
         _id,
         _lib._sel_enumerateObjectsAtIndexes_options_usingBlock_1,
         s?._id ?? ffi.nullptr,
         opts,
-        block._id);
+        block._impl);
   }
 
-  int indexOfObjectPassingTest(NSObject predicate) {
-    return _lib._objc_msgSend_108(
-        _id, _lib._sel_indexOfObjectPassingTest_1, predicate._id);
+  int indexOfObjectPassingTest(ObjCBlock5 predicate) {
+    return _lib._objc_msgSend_116(
+        _id, _lib._sel_indexOfObjectPassingTest_1, predicate._impl);
   }
 
-  int indexOfObjectWithOptions_passingTest(int opts, NSObject predicate) {
-    return _lib._objc_msgSend_114(_id,
-        _lib._sel_indexOfObjectWithOptions_passingTest_1, opts, predicate._id);
+  int indexOfObjectWithOptions_passingTest(int opts, ObjCBlock5 predicate) {
+    return _lib._objc_msgSend_117(
+        _id,
+        _lib._sel_indexOfObjectWithOptions_passingTest_1,
+        opts,
+        predicate._impl);
   }
 
   int indexOfObjectAtIndexes_options_passingTest(
-      NSObject? s, int opts, NSObject predicate) {
-    return _lib._objc_msgSend_115(
+      NSObject? s, int opts, ObjCBlock5 predicate) {
+    return _lib._objc_msgSend_118(
         _id,
         _lib._sel_indexOfObjectAtIndexes_options_passingTest_1,
         s?._id ?? ffi.nullptr,
         opts,
-        predicate._id);
+        predicate._impl);
   }
 
-  NSIndexSet indexesOfObjectsPassingTest(NSObject predicate) {
-    final _ret = _lib._objc_msgSend_122(
-        _id, _lib._sel_indexesOfObjectsPassingTest_1, predicate._id);
+  NSIndexSet indexesOfObjectsPassingTest(ObjCBlock5 predicate) {
+    final _ret = _lib._objc_msgSend_135(
+        _id, _lib._sel_indexesOfObjectsPassingTest_1, predicate._impl);
     return NSIndexSet._(_ret, _lib);
   }
 
   NSIndexSet indexesOfObjectsWithOptions_passingTest(
-      int opts, NSObject predicate) {
-    final _ret = _lib._objc_msgSend_123(
+      int opts, ObjCBlock5 predicate) {
+    final _ret = _lib._objc_msgSend_136(
         _id,
         _lib._sel_indexesOfObjectsWithOptions_passingTest_1,
         opts,
-        predicate._id);
+        predicate._impl);
     return NSIndexSet._(_ret, _lib);
   }
 
   NSIndexSet indexesOfObjectsAtIndexes_options_passingTest(
-      NSObject? s, int opts, NSObject predicate) {
-    final _ret = _lib._objc_msgSend_125(
+      NSObject? s, int opts, ObjCBlock5 predicate) {
+    final _ret = _lib._objc_msgSend_137(
         _id,
         _lib._sel_indexesOfObjectsAtIndexes_options_passingTest_1,
         s?._id ?? ffi.nullptr,
         opts,
-        predicate._id);
+        predicate._impl);
     return NSIndexSet._(_ret, _lib);
   }
 
   int indexOfObject_inSortedRange_options_usingComparator(
       NSObject obj, NSRange r, int opts, NSComparator cmp) {
-    return _lib._objc_msgSend_126(
+    return _lib._objc_msgSend_138(
         _id,
         _lib._sel_indexOfObject_inSortedRange_options_usingComparator_1,
         obj._id,
@@ -6900,7 +7489,7 @@
 
   static NSArray arrayWithObjects_count(NativeObjCLibrary _lib,
       ffi.Pointer<ffi.Pointer<ObjCObject>> objects, int cnt) {
-    final _ret = _lib._objc_msgSend_105(
+    final _ret = _lib._objc_msgSend_106(
         _lib._class_NSArray1, _lib._sel_arrayWithObjects_count_1, objects, cnt);
     return NSArray._(_ret, _lib);
   }
@@ -6930,22 +7519,22 @@
   }
 
   NSArray initWithArray_copyItems(NSObject? array, bool flag) {
-    final _ret = _lib._objc_msgSend_127(_id,
+    final _ret = _lib._objc_msgSend_139(_id,
         _lib._sel_initWithArray_copyItems_1, array?._id ?? ffi.nullptr, flag);
     return NSArray._(_ret, _lib);
   }
 
   void getObjects(ffi.Pointer<ffi.Pointer<ObjCObject>> objects) {
-    _lib._objc_msgSend_128(_id, _lib._sel_getObjects_1, objects);
+    _lib._objc_msgSend_140(_id, _lib._sel_getObjects_1, objects);
   }
 
   bool writeToFile_atomically(NSObject? path, bool useAuxiliaryFile) {
-    return _lib._objc_msgSend_71(_id, _lib._sel_writeToFile_atomically_1,
+    return _lib._objc_msgSend_72(_id, _lib._sel_writeToFile_atomically_1,
         path?._id ?? ffi.nullptr, useAuxiliaryFile);
   }
 
   bool writeToURL_atomically(NSObject? url, bool atomically) {
-    return _lib._objc_msgSend_71(_id, _lib._sel_writeToURL_atomically_1,
+    return _lib._objc_msgSend_72(_id, _lib._sel_writeToURL_atomically_1,
         url?._id ?? ffi.nullptr, atomically);
   }
 
@@ -6960,6 +7549,80 @@
   }
 }
 
+void _ObjCBlock4_fnPtrTrampoline(ffi.Pointer<_ObjCBlock> block,
+    ffi.Pointer<ObjCObject> arg0, int arg1, ffi.Pointer<ffi.Uint8> arg2) {
+  return block.ref.target
+      .cast<
+          ffi.NativeFunction<
+              ffi.Void Function(ffi.Pointer<ObjCObject> arg0, NSUInteger arg1,
+                  ffi.Pointer<ffi.Uint8> arg2)>>()
+      .asFunction<
+          void Function(ffi.Pointer<ObjCObject> arg0, int arg1,
+              ffi.Pointer<ffi.Uint8> arg2)>()(arg0, arg1, arg2);
+}
+
+class ObjCBlock4 {
+  final ffi.Pointer<_ObjCBlock> _impl;
+  final NativeObjCLibrary _lib;
+  ObjCBlock4._(this._impl, this._lib);
+
+  ObjCBlock4.fromFunctionPointer(
+      this._lib,
+      ffi.Pointer<
+              ffi.NativeFunction<
+                  ffi.Void Function(ffi.Pointer<ObjCObject> arg0,
+                      NSUInteger arg1, ffi.Pointer<ffi.Uint8> arg2)>>
+          ptr)
+      : _impl = _lib._newBlock1(
+            ffi.Pointer.fromFunction<
+                        ffi.Void Function(
+                            ffi.Pointer<_ObjCBlock> block,
+                            ffi.Pointer<ObjCObject> arg0,
+                            NSUInteger arg1,
+                            ffi.Pointer<ffi.Uint8> arg2)>(
+                    _ObjCBlock4_fnPtrTrampoline)
+                .cast(),
+            ptr.cast());
+  ffi.Pointer<_ObjCBlock> get pointer => _impl;
+}
+
+int _ObjCBlock5_fnPtrTrampoline(ffi.Pointer<_ObjCBlock> block,
+    ffi.Pointer<ObjCObject> arg0, int arg1, ffi.Pointer<ffi.Uint8> arg2) {
+  return block.ref.target
+      .cast<
+          ffi.NativeFunction<
+              ffi.Uint8 Function(ffi.Pointer<ObjCObject> arg0, NSUInteger arg1,
+                  ffi.Pointer<ffi.Uint8> arg2)>>()
+      .asFunction<
+          int Function(ffi.Pointer<ObjCObject> arg0, int arg1,
+              ffi.Pointer<ffi.Uint8> arg2)>()(arg0, arg1, arg2);
+}
+
+class ObjCBlock5 {
+  final ffi.Pointer<_ObjCBlock> _impl;
+  final NativeObjCLibrary _lib;
+  ObjCBlock5._(this._impl, this._lib);
+
+  ObjCBlock5.fromFunctionPointer(
+      this._lib,
+      ffi.Pointer<
+              ffi.NativeFunction<
+                  ffi.Uint8 Function(ffi.Pointer<ObjCObject> arg0,
+                      NSUInteger arg1, ffi.Pointer<ffi.Uint8> arg2)>>
+          ptr)
+      : _impl = _lib._newBlock1(
+            ffi.Pointer.fromFunction<
+                        ffi.Uint8 Function(
+                            ffi.Pointer<_ObjCBlock> block,
+                            ffi.Pointer<ObjCObject> arg0,
+                            NSUInteger arg1,
+                            ffi.Pointer<ffi.Uint8> arg2)>(
+                    _ObjCBlock5_fnPtrTrampoline, 0)
+                .cast(),
+            ptr.cast());
+  ffi.Pointer<_ObjCBlock> get pointer => _impl;
+}
+
 class NSIndexSet extends NSObject {
   NSIndexSet._(ffi.Pointer<ObjCObject> id, NativeObjCLibrary lib)
       : super._(id, lib);
@@ -6980,21 +7643,21 @@
   }
 
   static NSIndexSet indexSetWithIndex(NativeObjCLibrary _lib, int value) {
-    final _ret = _lib._objc_msgSend_104(
+    final _ret = _lib._objc_msgSend_105(
         _lib._class_NSIndexSet1, _lib._sel_indexSetWithIndex_1, value);
     return NSIndexSet._(_ret, _lib);
   }
 
   static NSIndexSet indexSetWithIndexesInRange(
       NativeObjCLibrary _lib, NSRange range) {
-    final _ret = _lib._objc_msgSend_116(
+    final _ret = _lib._objc_msgSend_119(
         _lib._class_NSIndexSet1, _lib._sel_indexSetWithIndexesInRange_1, range);
     return NSIndexSet._(_ret, _lib);
   }
 
   NSIndexSet initWithIndexesInRange(NSRange range) {
     final _ret =
-        _lib._objc_msgSend_116(_id, _lib._sel_initWithIndexesInRange_1, range);
+        _lib._objc_msgSend_119(_id, _lib._sel_initWithIndexesInRange_1, range);
     return NSIndexSet._(_ret, _lib);
   }
 
@@ -7005,7 +7668,7 @@
   }
 
   NSIndexSet initWithIndex(int value) {
-    final _ret = _lib._objc_msgSend_104(_id, _lib._sel_initWithIndex_1, value);
+    final _ret = _lib._objc_msgSend_105(_id, _lib._sel_initWithIndex_1, value);
     return NSIndexSet._(_ret, _lib);
   }
 
@@ -7027,26 +7690,26 @@
   }
 
   int indexGreaterThanIndex(int value) {
-    return _lib._objc_msgSend_43(_id, _lib._sel_indexGreaterThanIndex_1, value);
+    return _lib._objc_msgSend_44(_id, _lib._sel_indexGreaterThanIndex_1, value);
   }
 
   int indexLessThanIndex(int value) {
-    return _lib._objc_msgSend_43(_id, _lib._sel_indexLessThanIndex_1, value);
+    return _lib._objc_msgSend_44(_id, _lib._sel_indexLessThanIndex_1, value);
   }
 
   int indexGreaterThanOrEqualToIndex(int value) {
-    return _lib._objc_msgSend_43(
+    return _lib._objc_msgSend_44(
         _id, _lib._sel_indexGreaterThanOrEqualToIndex_1, value);
   }
 
   int indexLessThanOrEqualToIndex(int value) {
-    return _lib._objc_msgSend_43(
+    return _lib._objc_msgSend_44(
         _id, _lib._sel_indexLessThanOrEqualToIndex_1, value);
   }
 
   int getIndexes_maxCount_inIndexRange(ffi.Pointer<NSUInteger> indexBuffer,
       int bufferSize, NSRangePointer range) {
-    return _lib._objc_msgSend_117(
+    return _lib._objc_msgSend_120(
         _id,
         _lib._sel_getIndexes_maxCount_inIndexRange_1,
         indexBuffer,
@@ -7055,16 +7718,16 @@
   }
 
   int countOfIndexesInRange(NSRange range) {
-    return _lib._objc_msgSend_118(
+    return _lib._objc_msgSend_121(
         _id, _lib._sel_countOfIndexesInRange_1, range);
   }
 
   bool containsIndex(int value) {
-    return _lib._objc_msgSend_39(_id, _lib._sel_containsIndex_1, value);
+    return _lib._objc_msgSend_40(_id, _lib._sel_containsIndex_1, value);
   }
 
   bool containsIndexesInRange(NSRange range) {
-    return _lib._objc_msgSend_119(
+    return _lib._objc_msgSend_122(
         _id, _lib._sel_containsIndexesInRange_1, range);
   }
 
@@ -7074,90 +7737,91 @@
   }
 
   bool intersectsIndexesInRange(NSRange range) {
-    return _lib._objc_msgSend_119(
+    return _lib._objc_msgSend_122(
         _id, _lib._sel_intersectsIndexesInRange_1, range);
   }
 
-  void enumerateIndexesUsingBlock(NSObject block) {
-    _lib._objc_msgSend_8(
-        _id, _lib._sel_enumerateIndexesUsingBlock_1, block._id);
+  void enumerateIndexesUsingBlock(ObjCBlock6 block) {
+    _lib._objc_msgSend_123(
+        _id, _lib._sel_enumerateIndexesUsingBlock_1, block._impl);
   }
 
-  void enumerateIndexesWithOptions_usingBlock(int opts, NSObject block) {
-    _lib._objc_msgSend_112(_id,
-        _lib._sel_enumerateIndexesWithOptions_usingBlock_1, opts, block._id);
+  void enumerateIndexesWithOptions_usingBlock(int opts, ObjCBlock6 block) {
+    _lib._objc_msgSend_124(_id,
+        _lib._sel_enumerateIndexesWithOptions_usingBlock_1, opts, block._impl);
   }
 
   void enumerateIndexesInRange_options_usingBlock(
-      NSRange range, int opts, NSObject block) {
-    _lib._objc_msgSend_120(
+      NSRange range, int opts, ObjCBlock6 block) {
+    _lib._objc_msgSend_125(
         _id,
         _lib._sel_enumerateIndexesInRange_options_usingBlock_1,
         range,
         opts,
-        block._id);
+        block._impl);
   }
 
-  int indexPassingTest(NSObject predicate) {
-    return _lib._objc_msgSend_108(
-        _id, _lib._sel_indexPassingTest_1, predicate._id);
+  int indexPassingTest(ObjCBlock7 predicate) {
+    return _lib._objc_msgSend_126(
+        _id, _lib._sel_indexPassingTest_1, predicate._impl);
   }
 
-  int indexWithOptions_passingTest(int opts, NSObject predicate) {
-    return _lib._objc_msgSend_114(
-        _id, _lib._sel_indexWithOptions_passingTest_1, opts, predicate._id);
+  int indexWithOptions_passingTest(int opts, ObjCBlock7 predicate) {
+    return _lib._objc_msgSend_127(
+        _id, _lib._sel_indexWithOptions_passingTest_1, opts, predicate._impl);
   }
 
   int indexInRange_options_passingTest(
-      NSRange range, int opts, NSObject predicate) {
-    return _lib._objc_msgSend_121(
+      NSRange range, int opts, ObjCBlock7 predicate) {
+    return _lib._objc_msgSend_128(
         _id,
         _lib._sel_indexInRange_options_passingTest_1,
         range,
         opts,
-        predicate._id);
+        predicate._impl);
   }
 
-  NSIndexSet indexesPassingTest(NSObject predicate) {
-    final _ret = _lib._objc_msgSend_122(
-        _id, _lib._sel_indexesPassingTest_1, predicate._id);
+  NSIndexSet indexesPassingTest(ObjCBlock7 predicate) {
+    final _ret = _lib._objc_msgSend_129(
+        _id, _lib._sel_indexesPassingTest_1, predicate._impl);
     return NSIndexSet._(_ret, _lib);
   }
 
-  NSIndexSet indexesWithOptions_passingTest(int opts, NSObject predicate) {
-    final _ret = _lib._objc_msgSend_123(
-        _id, _lib._sel_indexesWithOptions_passingTest_1, opts, predicate._id);
+  NSIndexSet indexesWithOptions_passingTest(int opts, ObjCBlock7 predicate) {
+    final _ret = _lib._objc_msgSend_130(
+        _id, _lib._sel_indexesWithOptions_passingTest_1, opts, predicate._impl);
     return NSIndexSet._(_ret, _lib);
   }
 
   NSIndexSet indexesInRange_options_passingTest(
-      NSRange range, int opts, NSObject predicate) {
-    final _ret = _lib._objc_msgSend_124(
+      NSRange range, int opts, ObjCBlock7 predicate) {
+    final _ret = _lib._objc_msgSend_131(
         _id,
         _lib._sel_indexesInRange_options_passingTest_1,
         range,
         opts,
-        predicate._id);
+        predicate._impl);
     return NSIndexSet._(_ret, _lib);
   }
 
-  void enumerateRangesUsingBlock(NSObject block) {
-    _lib._objc_msgSend_8(_id, _lib._sel_enumerateRangesUsingBlock_1, block._id);
+  void enumerateRangesUsingBlock(ObjCBlock8 block) {
+    _lib._objc_msgSend_132(
+        _id, _lib._sel_enumerateRangesUsingBlock_1, block._impl);
   }
 
-  void enumerateRangesWithOptions_usingBlock(int opts, NSObject block) {
-    _lib._objc_msgSend_112(_id,
-        _lib._sel_enumerateRangesWithOptions_usingBlock_1, opts, block._id);
+  void enumerateRangesWithOptions_usingBlock(int opts, ObjCBlock8 block) {
+    _lib._objc_msgSend_133(_id,
+        _lib._sel_enumerateRangesWithOptions_usingBlock_1, opts, block._impl);
   }
 
   void enumerateRangesInRange_options_usingBlock(
-      NSRange range, int opts, NSObject block) {
-    _lib._objc_msgSend_120(
+      NSRange range, int opts, ObjCBlock8 block) {
+    _lib._objc_msgSend_134(
         _id,
         _lib._sel_enumerateRangesInRange_options_usingBlock_1,
         range,
         opts,
-        block._id);
+        block._impl);
   }
 
   static NSIndexSet new1(NativeObjCLibrary _lib) {
@@ -7172,13 +7836,146 @@
   }
 }
 
+void _ObjCBlock6_fnPtrTrampoline(
+    ffi.Pointer<_ObjCBlock> block, int arg0, ffi.Pointer<ffi.Uint8> arg1) {
+  return block.ref.target
+          .cast<
+              ffi.NativeFunction<
+                  ffi.Void Function(
+                      NSUInteger arg0, ffi.Pointer<ffi.Uint8> arg1)>>()
+          .asFunction<void Function(int arg0, ffi.Pointer<ffi.Uint8> arg1)>()(
+      arg0, arg1);
+}
+
+class ObjCBlock6 {
+  final ffi.Pointer<_ObjCBlock> _impl;
+  final NativeObjCLibrary _lib;
+  ObjCBlock6._(this._impl, this._lib);
+
+  ObjCBlock6.fromFunctionPointer(
+      this._lib,
+      ffi.Pointer<
+              ffi.NativeFunction<
+                  ffi.Void Function(
+                      NSUInteger arg0, ffi.Pointer<ffi.Uint8> arg1)>>
+          ptr)
+      : _impl = _lib._newBlock1(
+            ffi.Pointer.fromFunction<
+                        ffi.Void Function(ffi.Pointer<_ObjCBlock> block,
+                            NSUInteger arg0, ffi.Pointer<ffi.Uint8> arg1)>(
+                    _ObjCBlock6_fnPtrTrampoline)
+                .cast(),
+            ptr.cast());
+  ffi.Pointer<_ObjCBlock> get pointer => _impl;
+}
+
+int _ObjCBlock7_fnPtrTrampoline(
+    ffi.Pointer<_ObjCBlock> block, int arg0, ffi.Pointer<ffi.Uint8> arg1) {
+  return block.ref.target
+          .cast<
+              ffi.NativeFunction<
+                  ffi.Uint8 Function(
+                      NSUInteger arg0, ffi.Pointer<ffi.Uint8> arg1)>>()
+          .asFunction<int Function(int arg0, ffi.Pointer<ffi.Uint8> arg1)>()(
+      arg0, arg1);
+}
+
+class ObjCBlock7 {
+  final ffi.Pointer<_ObjCBlock> _impl;
+  final NativeObjCLibrary _lib;
+  ObjCBlock7._(this._impl, this._lib);
+
+  ObjCBlock7.fromFunctionPointer(
+      this._lib,
+      ffi.Pointer<
+              ffi.NativeFunction<
+                  ffi.Uint8 Function(
+                      NSUInteger arg0, ffi.Pointer<ffi.Uint8> arg1)>>
+          ptr)
+      : _impl = _lib._newBlock1(
+            ffi.Pointer.fromFunction<
+                        ffi.Uint8 Function(ffi.Pointer<_ObjCBlock> block,
+                            NSUInteger arg0, ffi.Pointer<ffi.Uint8> arg1)>(
+                    _ObjCBlock7_fnPtrTrampoline, 0)
+                .cast(),
+            ptr.cast());
+  ffi.Pointer<_ObjCBlock> get pointer => _impl;
+}
+
+void _ObjCBlock8_fnPtrTrampoline(
+    ffi.Pointer<_ObjCBlock> block, NSRange arg0, ffi.Pointer<ffi.Uint8> arg1) {
+  return block.ref.target
+      .cast<
+          ffi.NativeFunction<
+              ffi.Void Function(NSRange arg0, ffi.Pointer<ffi.Uint8> arg1)>>()
+      .asFunction<
+          void Function(
+              NSRange arg0, ffi.Pointer<ffi.Uint8> arg1)>()(arg0, arg1);
+}
+
+class ObjCBlock8 {
+  final ffi.Pointer<_ObjCBlock> _impl;
+  final NativeObjCLibrary _lib;
+  ObjCBlock8._(this._impl, this._lib);
+
+  ObjCBlock8.fromFunctionPointer(
+      this._lib,
+      ffi.Pointer<
+              ffi.NativeFunction<
+                  ffi.Void Function(NSRange arg0, ffi.Pointer<ffi.Uint8> arg1)>>
+          ptr)
+      : _impl = _lib._newBlock1(
+            ffi.Pointer.fromFunction<
+                        ffi.Void Function(ffi.Pointer<_ObjCBlock> block,
+                            NSRange arg0, ffi.Pointer<ffi.Uint8> arg1)>(
+                    _ObjCBlock8_fnPtrTrampoline)
+                .cast(),
+            ptr.cast());
+  ffi.Pointer<_ObjCBlock> get pointer => _impl;
+}
+
 abstract class NSBinarySearchingOptions {
   static const int NSBinarySearchingFirstEqual = 256;
   static const int NSBinarySearchingLastEqual = 512;
   static const int NSBinarySearchingInsertionIndex = 1024;
 }
 
-typedef NSComparator = ffi.Pointer<ObjCObject>;
+typedef NSComparator = ffi.Pointer<_ObjCBlock>;
+int _ObjCBlock9_fnPtrTrampoline(ffi.Pointer<_ObjCBlock> block,
+    ffi.Pointer<ObjCObject> arg0, ffi.Pointer<ObjCObject> arg1) {
+  return block.ref.target
+      .cast<
+          ffi.NativeFunction<
+              ffi.Int32 Function(ffi.Pointer<ObjCObject> arg0,
+                  ffi.Pointer<ObjCObject> arg1)>>()
+      .asFunction<
+          int Function(ffi.Pointer<ObjCObject> arg0,
+              ffi.Pointer<ObjCObject> arg1)>()(arg0, arg1);
+}
+
+class ObjCBlock9 {
+  final ffi.Pointer<_ObjCBlock> _impl;
+  final NativeObjCLibrary _lib;
+  ObjCBlock9._(this._impl, this._lib);
+
+  ObjCBlock9.fromFunctionPointer(
+      this._lib,
+      ffi.Pointer<
+              ffi.NativeFunction<
+                  ffi.Int32 Function(ffi.Pointer<ObjCObject> arg0,
+                      ffi.Pointer<ObjCObject> arg1)>>
+          ptr)
+      : _impl = _lib._newBlock1(
+            ffi.Pointer.fromFunction<
+                        ffi.Int32 Function(
+                            ffi.Pointer<_ObjCBlock> block,
+                            ffi.Pointer<ObjCObject> arg0,
+                            ffi.Pointer<ObjCObject> arg1)>(
+                    _ObjCBlock9_fnPtrTrampoline, 0)
+                .cast(),
+            ptr.cast());
+  ffi.Pointer<_ObjCBlock> get pointer => _impl;
+}
 
 class NSMutableArray extends NSArray {
   NSMutableArray._(ffi.Pointer<ObjCObject> id, NativeObjCLibrary lib)
@@ -7198,7 +7995,7 @@
   }
 
   void insertObject_atIndex(NSObject anObject, int index) {
-    _lib._objc_msgSend_129(
+    _lib._objc_msgSend_141(
         _id, _lib._sel_insertObject_atIndex_1, anObject._id, index);
   }
 
@@ -7207,11 +8004,11 @@
   }
 
   void removeObjectAtIndex(int index) {
-    _lib._objc_msgSend_40(_id, _lib._sel_removeObjectAtIndex_1, index);
+    _lib._objc_msgSend_41(_id, _lib._sel_removeObjectAtIndex_1, index);
   }
 
   void replaceObjectAtIndex_withObject(int index, NSObject anObject) {
-    _lib._objc_msgSend_130(
+    _lib._objc_msgSend_142(
         _id, _lib._sel_replaceObjectAtIndex_withObject_1, index, anObject._id);
   }
 
@@ -7223,7 +8020,7 @@
 
   NSMutableArray initWithCapacity(int numItems) {
     final _ret =
-        _lib._objc_msgSend_104(_id, _lib._sel_initWithCapacity_1, numItems);
+        _lib._objc_msgSend_105(_id, _lib._sel_initWithCapacity_1, numItems);
     return NSMutableArray._(_ret, _lib);
   }
 
@@ -7240,7 +8037,7 @@
   }
 
   void exchangeObjectAtIndex_withObjectAtIndex(int idx1, int idx2) {
-    _lib._objc_msgSend_131(
+    _lib._objc_msgSend_143(
         _id, _lib._sel_exchangeObjectAtIndex_withObjectAtIndex_1, idx1, idx2);
   }
 
@@ -7249,7 +8046,7 @@
   }
 
   void removeObject_inRange(NSObject anObject, NSRange range) {
-    _lib._objc_msgSend_132(
+    _lib._objc_msgSend_144(
         _id, _lib._sel_removeObject_inRange_1, anObject._id, range);
   }
 
@@ -7258,7 +8055,7 @@
   }
 
   void removeObjectIdenticalTo_inRange(NSObject anObject, NSRange range) {
-    _lib._objc_msgSend_132(
+    _lib._objc_msgSend_144(
         _id, _lib._sel_removeObjectIdenticalTo_inRange_1, anObject._id, range);
   }
 
@@ -7269,7 +8066,7 @@
 
   void removeObjectsFromIndices_numIndices(
       ffi.Pointer<NSUInteger> indices, int cnt) {
-    _lib._objc_msgSend_133(
+    _lib._objc_msgSend_145(
         _id, _lib._sel_removeObjectsFromIndices_numIndices_1, indices, cnt);
   }
 
@@ -7279,12 +8076,12 @@
   }
 
   void removeObjectsInRange(NSRange range) {
-    _lib._objc_msgSend_134(_id, _lib._sel_removeObjectsInRange_1, range);
+    _lib._objc_msgSend_146(_id, _lib._sel_removeObjectsInRange_1, range);
   }
 
   void replaceObjectsInRange_withObjectsFromArray_range(
       NSRange range, NSObject? otherArray, NSRange otherRange) {
-    _lib._objc_msgSend_135(
+    _lib._objc_msgSend_147(
         _id,
         _lib._sel_replaceObjectsInRange_withObjectsFromArray_range_1,
         range,
@@ -7294,7 +8091,7 @@
 
   void replaceObjectsInRange_withObjectsFromArray(
       NSRange range, NSObject? otherArray) {
-    _lib._objc_msgSend_136(
+    _lib._objc_msgSend_148(
         _id,
         _lib._sel_replaceObjectsInRange_withObjectsFromArray_1,
         range,
@@ -7313,7 +8110,7 @@
                       ffi.Pointer<ObjCObject>, ffi.Pointer<ffi.Void>)>>
           compare,
       ffi.Pointer<ffi.Void> context) {
-    _lib._objc_msgSend_137(
+    _lib._objc_msgSend_149(
         _id, _lib._sel_sortUsingFunction_context_1, compare, context);
   }
 
@@ -7322,7 +8119,7 @@
   }
 
   void insertObjects_atIndexes(NSObject? objects, NSObject? indexes) {
-    _lib._objc_msgSend_138(_id, _lib._sel_insertObjects_atIndexes_1,
+    _lib._objc_msgSend_150(_id, _lib._sel_insertObjects_atIndexes_1,
         objects?._id ?? ffi.nullptr, indexes?._id ?? ffi.nullptr);
   }
 
@@ -7333,27 +8130,27 @@
 
   void replaceObjectsAtIndexes_withObjects(
       NSObject? indexes, NSObject? objects) {
-    _lib._objc_msgSend_138(_id, _lib._sel_replaceObjectsAtIndexes_withObjects_1,
+    _lib._objc_msgSend_150(_id, _lib._sel_replaceObjectsAtIndexes_withObjects_1,
         indexes?._id ?? ffi.nullptr, objects?._id ?? ffi.nullptr);
   }
 
   void setObject_atIndexedSubscript(NSObject obj, int idx) {
-    _lib._objc_msgSend_129(
+    _lib._objc_msgSend_141(
         _id, _lib._sel_setObject_atIndexedSubscript_1, obj._id, idx);
   }
 
   void sortUsingComparator(NSComparator cmptr) {
-    _lib._objc_msgSend_8(_id, _lib._sel_sortUsingComparator_1, cmptr);
+    _lib._objc_msgSend_151(_id, _lib._sel_sortUsingComparator_1, cmptr);
   }
 
   void sortWithOptions_usingComparator(int opts, NSComparator cmptr) {
-    _lib._objc_msgSend_139(
+    _lib._objc_msgSend_152(
         _id, _lib._sel_sortWithOptions_usingComparator_1, opts, cmptr);
   }
 
   static NSMutableArray arrayWithCapacity(
       NativeObjCLibrary _lib, int numItems) {
-    final _ret = _lib._objc_msgSend_104(
+    final _ret = _lib._objc_msgSend_105(
         _lib._class_NSMutableArray1, _lib._sel_arrayWithCapacity_1, numItems);
     return NSMutableArray._(_ret, _lib);
   }
@@ -7378,7 +8175,7 @@
 
   static NSMutableArray arrayWithObjects_count(NativeObjCLibrary _lib,
       ffi.Pointer<ffi.Pointer<ObjCObject>> objects, int cnt) {
-    final _ret = _lib._objc_msgSend_105(_lib._class_NSMutableArray1,
+    final _ret = _lib._objc_msgSend_106(_lib._class_NSMutableArray1,
         _lib._sel_arrayWithObjects_count_1, objects, cnt);
     return NSMutableArray._(_ret, _lib);
   }
@@ -7441,13 +8238,13 @@
   }
 
   void registerDataRepresentationForTypeIdentifier_visibility_loadHandler(
-      NSObject? typeIdentifier, int visibility, NSObject loadHandler) {
-    _lib._objc_msgSend_140(
+      NSObject? typeIdentifier, int visibility, ObjCBlock10 loadHandler) {
+    _lib._objc_msgSend_153(
         _id,
         _lib._sel_registerDataRepresentationForTypeIdentifier_visibility_loadHandler_1,
         typeIdentifier?._id ?? ffi.nullptr,
         visibility,
-        loadHandler._id);
+        loadHandler._impl);
   }
 
   void
@@ -7455,14 +8252,14 @@
           NSObject? typeIdentifier,
           int fileOptions,
           int visibility,
-          NSObject loadHandler) {
-    _lib._objc_msgSend_141(
+          ObjCBlock12 loadHandler) {
+    _lib._objc_msgSend_154(
         _id,
         _lib._sel_registerFileRepresentationForTypeIdentifier_fileOptions_visibility_loadHandler_1,
         typeIdentifier?._id ?? ffi.nullptr,
         fileOptions,
         visibility,
-        loadHandler._id);
+        loadHandler._impl);
   }
 
   NSObject? get registeredTypeIdentifiers {
@@ -7480,7 +8277,7 @@
 
   bool hasRepresentationConformingToTypeIdentifier_fileOptions(
       NSObject? typeIdentifier, int fileOptions) {
-    return _lib._objc_msgSend_142(
+    return _lib._objc_msgSend_155(
         _id,
         _lib._sel_hasRepresentationConformingToTypeIdentifier_fileOptions_1,
         typeIdentifier?._id ?? ffi.nullptr,
@@ -7488,32 +8285,32 @@
   }
 
   NSProgress loadDataRepresentationForTypeIdentifier_completionHandler(
-      NSObject? typeIdentifier, NSObject completionHandler) {
-    final _ret = _lib._objc_msgSend_143(
+      NSObject? typeIdentifier, ObjCBlock11 completionHandler) {
+    final _ret = _lib._objc_msgSend_156(
         _id,
         _lib._sel_loadDataRepresentationForTypeIdentifier_completionHandler_1,
         typeIdentifier?._id ?? ffi.nullptr,
-        completionHandler._id);
+        completionHandler._impl);
     return NSProgress._(_ret, _lib);
   }
 
   NSProgress loadFileRepresentationForTypeIdentifier_completionHandler(
-      NSObject? typeIdentifier, NSObject completionHandler) {
-    final _ret = _lib._objc_msgSend_143(
+      NSObject? typeIdentifier, ObjCBlock11 completionHandler) {
+    final _ret = _lib._objc_msgSend_156(
         _id,
         _lib._sel_loadFileRepresentationForTypeIdentifier_completionHandler_1,
         typeIdentifier?._id ?? ffi.nullptr,
-        completionHandler._id);
+        completionHandler._impl);
     return NSProgress._(_ret, _lib);
   }
 
   NSProgress loadInPlaceFileRepresentationForTypeIdentifier_completionHandler(
-      NSObject? typeIdentifier, NSObject completionHandler) {
-    final _ret = _lib._objc_msgSend_143(
+      NSObject? typeIdentifier, ObjCBlock13 completionHandler) {
+    final _ret = _lib._objc_msgSend_157(
         _id,
         _lib._sel_loadInPlaceFileRepresentationForTypeIdentifier_completionHandler_1,
         typeIdentifier?._id ?? ffi.nullptr,
-        completionHandler._id);
+        completionHandler._impl);
     return NSProgress._(_ret, _lib);
   }
 
@@ -7534,18 +8331,18 @@
   }
 
   void registerObject_visibility(NSObject? object, int visibility) {
-    _lib._objc_msgSend_144(_id, _lib._sel_registerObject_visibility_1,
+    _lib._objc_msgSend_158(_id, _lib._sel_registerObject_visibility_1,
         object?._id ?? ffi.nullptr, visibility);
   }
 
   void registerObjectOfClass_visibility_loadHandler(
-      NSObject? aClass, int visibility, NSObject loadHandler) {
-    _lib._objc_msgSend_140(
+      NSObject? aClass, int visibility, ObjCBlock10 loadHandler) {
+    _lib._objc_msgSend_153(
         _id,
         _lib._sel_registerObjectOfClass_visibility_loadHandler_1,
         aClass?._id ?? ffi.nullptr,
         visibility,
-        loadHandler._id);
+        loadHandler._impl);
   }
 
   bool canLoadObjectOfClass(NSObject? aClass) {
@@ -7554,18 +8351,18 @@
   }
 
   NSProgress loadObjectOfClass_completionHandler(
-      NSObject? aClass, NSObject completionHandler) {
-    final _ret = _lib._objc_msgSend_143(
+      NSObject? aClass, ObjCBlock11 completionHandler) {
+    final _ret = _lib._objc_msgSend_156(
         _id,
         _lib._sel_loadObjectOfClass_completionHandler_1,
         aClass?._id ?? ffi.nullptr,
-        completionHandler._id);
+        completionHandler._impl);
     return NSProgress._(_ret, _lib);
   }
 
   NSItemProvider initWithItem_typeIdentifier(
       NSObject? item, NSObject? typeIdentifier) {
-    final _ret = _lib._objc_msgSend_57(
+    final _ret = _lib._objc_msgSend_58(
         _id,
         _lib._sel_initWithItem_typeIdentifier_1,
         item?._id ?? ffi.nullptr,
@@ -7581,7 +8378,7 @@
 
   void registerItemForTypeIdentifier_loadHandler(
       NSObject? typeIdentifier, NSItemProviderLoadHandler loadHandler) {
-    _lib._objc_msgSend_138(
+    _lib._objc_msgSend_159(
         _id,
         _lib._sel_registerItemForTypeIdentifier_loadHandler_1,
         typeIdentifier?._id ?? ffi.nullptr,
@@ -7592,7 +8389,7 @@
       NSObject? typeIdentifier,
       NSObject? options,
       NSItemProviderCompletionHandler completionHandler) {
-    _lib._objc_msgSend_145(
+    _lib._objc_msgSend_160(
         _id,
         _lib._sel_loadItemForTypeIdentifier_options_completionHandler_1,
         typeIdentifier?._id ?? ffi.nullptr,
@@ -7601,16 +8398,16 @@
   }
 
   NSItemProviderLoadHandler get previewImageHandler {
-    return _lib._objc_msgSend_1(_id, _lib._sel_previewImageHandler1);
+    return _lib._objc_msgSend_161(_id, _lib._sel_previewImageHandler1);
   }
 
   set previewImageHandler(NSItemProviderLoadHandler value) {
-    _lib._objc_msgSend_8(_id, _lib._sel_setPreviewImageHandler_1, value);
+    _lib._objc_msgSend_162(_id, _lib._sel_setPreviewImageHandler_1, value);
   }
 
   void loadPreviewImageWithOptions_completionHandler(
       NSObject? options, NSItemProviderCompletionHandler completionHandler) {
-    _lib._objc_msgSend_138(
+    _lib._objc_msgSend_163(
         _id,
         _lib._sel_loadPreviewImageWithOptions_completionHandler_1,
         options?._id ?? ffi.nullptr,
@@ -7630,6 +8427,148 @@
   }
 }
 
+ffi.Pointer<ObjCObject> _ObjCBlock10_fnPtrTrampoline(
+    ffi.Pointer<_ObjCBlock> block, ffi.Pointer<_ObjCBlock> arg0) {
+  return block.ref.target
+      .cast<
+          ffi.NativeFunction<
+              ffi.Pointer<ObjCObject> Function(ffi.Pointer<_ObjCBlock> arg0)>>()
+      .asFunction<
+          ffi.Pointer<ObjCObject> Function(
+              ffi.Pointer<_ObjCBlock> arg0)>()(arg0);
+}
+
+class ObjCBlock10 {
+  final ffi.Pointer<_ObjCBlock> _impl;
+  final NativeObjCLibrary _lib;
+  ObjCBlock10._(this._impl, this._lib);
+
+  ObjCBlock10.fromFunctionPointer(
+      this._lib,
+      ffi.Pointer<
+              ffi.NativeFunction<
+                  ffi.Pointer<ObjCObject> Function(
+                      ffi.Pointer<_ObjCBlock> arg0)>>
+          ptr)
+      : _impl = _lib._newBlock1(
+            ffi.Pointer.fromFunction<
+                        ffi.Pointer<ObjCObject> Function(
+                            ffi.Pointer<_ObjCBlock> block,
+                            ffi.Pointer<_ObjCBlock> arg0)>(
+                    _ObjCBlock10_fnPtrTrampoline)
+                .cast(),
+            ptr.cast());
+  ffi.Pointer<_ObjCBlock> get pointer => _impl;
+}
+
+void _ObjCBlock11_fnPtrTrampoline(ffi.Pointer<_ObjCBlock> block,
+    ffi.Pointer<ObjCObject> arg0, ffi.Pointer<ObjCObject> arg1) {
+  return block.ref.target
+      .cast<
+          ffi.NativeFunction<
+              ffi.Void Function(ffi.Pointer<ObjCObject> arg0,
+                  ffi.Pointer<ObjCObject> arg1)>>()
+      .asFunction<
+          void Function(ffi.Pointer<ObjCObject> arg0,
+              ffi.Pointer<ObjCObject> arg1)>()(arg0, arg1);
+}
+
+class ObjCBlock11 {
+  final ffi.Pointer<_ObjCBlock> _impl;
+  final NativeObjCLibrary _lib;
+  ObjCBlock11._(this._impl, this._lib);
+
+  ObjCBlock11.fromFunctionPointer(
+      this._lib,
+      ffi.Pointer<
+              ffi.NativeFunction<
+                  ffi.Void Function(ffi.Pointer<ObjCObject> arg0,
+                      ffi.Pointer<ObjCObject> arg1)>>
+          ptr)
+      : _impl =
+            _lib._newBlock1(
+                ffi.Pointer.fromFunction<
+                            ffi.Void Function(
+                                ffi.Pointer<_ObjCBlock> block,
+                                ffi.Pointer<ObjCObject> arg0,
+                                ffi.Pointer<ObjCObject> arg1)>(
+                        _ObjCBlock11_fnPtrTrampoline)
+                    .cast(),
+                ptr.cast());
+  ffi.Pointer<_ObjCBlock> get pointer => _impl;
+}
+
+ffi.Pointer<ObjCObject> _ObjCBlock12_fnPtrTrampoline(
+    ffi.Pointer<_ObjCBlock> block, ffi.Pointer<_ObjCBlock> arg0) {
+  return block.ref.target
+      .cast<
+          ffi.NativeFunction<
+              ffi.Pointer<ObjCObject> Function(ffi.Pointer<_ObjCBlock> arg0)>>()
+      .asFunction<
+          ffi.Pointer<ObjCObject> Function(
+              ffi.Pointer<_ObjCBlock> arg0)>()(arg0);
+}
+
+class ObjCBlock12 {
+  final ffi.Pointer<_ObjCBlock> _impl;
+  final NativeObjCLibrary _lib;
+  ObjCBlock12._(this._impl, this._lib);
+
+  ObjCBlock12.fromFunctionPointer(
+      this._lib,
+      ffi.Pointer<
+              ffi.NativeFunction<
+                  ffi.Pointer<ObjCObject> Function(
+                      ffi.Pointer<_ObjCBlock> arg0)>>
+          ptr)
+      : _impl = _lib._newBlock1(
+            ffi.Pointer.fromFunction<
+                        ffi.Pointer<ObjCObject> Function(
+                            ffi.Pointer<_ObjCBlock> block,
+                            ffi.Pointer<_ObjCBlock> arg0)>(
+                    _ObjCBlock12_fnPtrTrampoline)
+                .cast(),
+            ptr.cast());
+  ffi.Pointer<_ObjCBlock> get pointer => _impl;
+}
+
+void _ObjCBlock13_fnPtrTrampoline(ffi.Pointer<_ObjCBlock> block,
+    ffi.Pointer<ObjCObject> arg0, int arg1, ffi.Pointer<ObjCObject> arg2) {
+  return block.ref.target
+      .cast<
+          ffi.NativeFunction<
+              ffi.Void Function(ffi.Pointer<ObjCObject> arg0, ffi.Uint8 arg1,
+                  ffi.Pointer<ObjCObject> arg2)>>()
+      .asFunction<
+          void Function(ffi.Pointer<ObjCObject> arg0, int arg1,
+              ffi.Pointer<ObjCObject> arg2)>()(arg0, arg1, arg2);
+}
+
+class ObjCBlock13 {
+  final ffi.Pointer<_ObjCBlock> _impl;
+  final NativeObjCLibrary _lib;
+  ObjCBlock13._(this._impl, this._lib);
+
+  ObjCBlock13.fromFunctionPointer(
+      this._lib,
+      ffi.Pointer<
+              ffi.NativeFunction<
+                  ffi.Void Function(ffi.Pointer<ObjCObject> arg0,
+                      ffi.Uint8 arg1, ffi.Pointer<ObjCObject> arg2)>>
+          ptr)
+      : _impl = _lib._newBlock1(
+            ffi.Pointer.fromFunction<
+                        ffi.Void Function(
+                            ffi.Pointer<_ObjCBlock> block,
+                            ffi.Pointer<ObjCObject> arg0,
+                            ffi.Uint8 arg1,
+                            ffi.Pointer<ObjCObject> arg2)>(
+                    _ObjCBlock13_fnPtrTrampoline)
+                .cast(),
+            ptr.cast());
+  ffi.Pointer<_ObjCBlock> get pointer => _impl;
+}
+
 class NSProgress extends _ObjCWrapper {
   NSProgress._(ffi.Pointer<ObjCObject> id, NativeObjCLibrary lib)
       : super._(id, lib);
@@ -7644,8 +8583,54 @@
   }
 }
 
-typedef NSItemProviderLoadHandler = ffi.Pointer<ObjCObject>;
-typedef NSItemProviderCompletionHandler = ffi.Pointer<ObjCObject>;
+typedef NSItemProviderLoadHandler = ffi.Pointer<_ObjCBlock>;
+void _ObjCBlock14_fnPtrTrampoline(
+    ffi.Pointer<_ObjCBlock> block,
+    NSItemProviderCompletionHandler arg0,
+    ffi.Pointer<ObjCObject> arg1,
+    ffi.Pointer<ObjCObject> arg2) {
+  return block.ref.target
+      .cast<
+          ffi.NativeFunction<
+              ffi.Void Function(
+                  NSItemProviderCompletionHandler arg0,
+                  ffi.Pointer<ObjCObject> arg1,
+                  ffi.Pointer<ObjCObject> arg2)>>()
+      .asFunction<
+          void Function(
+              NSItemProviderCompletionHandler arg0,
+              ffi.Pointer<ObjCObject> arg1,
+              ffi.Pointer<ObjCObject> arg2)>()(arg0, arg1, arg2);
+}
+
+class ObjCBlock14 {
+  final ffi.Pointer<_ObjCBlock> _impl;
+  final NativeObjCLibrary _lib;
+  ObjCBlock14._(this._impl, this._lib);
+
+  ObjCBlock14.fromFunctionPointer(
+      this._lib,
+      ffi.Pointer<
+              ffi.NativeFunction<
+                  ffi.Void Function(
+                      NSItemProviderCompletionHandler arg0,
+                      ffi.Pointer<ObjCObject> arg1,
+                      ffi.Pointer<ObjCObject> arg2)>>
+          ptr)
+      : _impl = _lib._newBlock1(
+            ffi.Pointer.fromFunction<
+                        ffi.Void Function(
+                            ffi.Pointer<_ObjCBlock> block,
+                            NSItemProviderCompletionHandler arg0,
+                            ffi.Pointer<ObjCObject> arg1,
+                            ffi.Pointer<ObjCObject> arg2)>(
+                    _ObjCBlock14_fnPtrTrampoline)
+                .cast(),
+            ptr.cast());
+  ffi.Pointer<_ObjCBlock> get pointer => _impl;
+}
+
+typedef NSItemProviderCompletionHandler = ffi.Pointer<_ObjCBlock>;
 
 abstract class NSItemProviderErrorCode {
   static const int NSItemProviderUnknownError = -1;
@@ -7670,17 +8655,17 @@
   }
 
   void replaceCharactersInRange_withString(NSRange range, NSObject? aString) {
-    _lib._objc_msgSend_136(_id, _lib._sel_replaceCharactersInRange_withString_1,
+    _lib._objc_msgSend_148(_id, _lib._sel_replaceCharactersInRange_withString_1,
         range, aString?._id ?? ffi.nullptr);
   }
 
   void insertString_atIndex(NSObject? aString, int loc) {
-    _lib._objc_msgSend_129(_id, _lib._sel_insertString_atIndex_1,
+    _lib._objc_msgSend_141(_id, _lib._sel_insertString_atIndex_1,
         aString?._id ?? ffi.nullptr, loc);
   }
 
   void deleteCharactersInRange(NSRange range) {
-    _lib._objc_msgSend_134(_id, _lib._sel_deleteCharactersInRange_1, range);
+    _lib._objc_msgSend_146(_id, _lib._sel_deleteCharactersInRange_1, range);
   }
 
   void appendString(NSObject? aString) {
@@ -7700,7 +8685,7 @@
 
   int replaceOccurrencesOfString_withString_options_range(NSObject? target,
       NSObject? replacement, int options, NSRange searchRange) {
-    return _lib._objc_msgSend_146(
+    return _lib._objc_msgSend_164(
         _id,
         _lib._sel_replaceOccurrencesOfString_withString_options_range_1,
         target?._id ?? ffi.nullptr,
@@ -7711,7 +8696,7 @@
 
   bool applyTransform_reverse_range_updatedRange(NSStringTransform transform,
       bool reverse, NSRange range, NSRangePointer resultingRange) {
-    return _lib._objc_msgSend_147(
+    return _lib._objc_msgSend_165(
         _id,
         _lib._sel_applyTransform_reverse_range_updatedRange_1,
         transform,
@@ -7722,13 +8707,13 @@
 
   NSMutableString initWithCapacity(int capacity) {
     final _ret =
-        _lib._objc_msgSend_148(_id, _lib._sel_initWithCapacity_1, capacity);
+        _lib._objc_msgSend_166(_id, _lib._sel_initWithCapacity_1, capacity);
     return NSMutableString._(_ret, _lib);
   }
 
   static NSMutableString stringWithCapacity(
       NativeObjCLibrary _lib, int capacity) {
-    final _ret = _lib._objc_msgSend_148(
+    final _ret = _lib._objc_msgSend_166(
         _lib._class_NSMutableString1, _lib._sel_stringWithCapacity_1, capacity);
     return NSMutableString._(_ret, _lib);
   }
@@ -7755,14 +8740,14 @@
 
   static NSMutableString stringWithCharacters_length(
       NativeObjCLibrary _lib, ffi.Pointer<unichar> characters, int length) {
-    final _ret = _lib._objc_msgSend_54(_lib._class_NSMutableString1,
+    final _ret = _lib._objc_msgSend_55(_lib._class_NSMutableString1,
         _lib._sel_stringWithCharacters_length_1, characters, length);
     return NSMutableString._(_ret, _lib);
   }
 
   static NSMutableString stringWithUTF8String(
       NativeObjCLibrary _lib, ffi.Pointer<pkg_ffi.Char> nullTerminatedCString) {
-    final _ret = _lib._objc_msgSend_55(_lib._class_NSMutableString1,
+    final _ret = _lib._objc_msgSend_56(_lib._class_NSMutableString1,
         _lib._sel_stringWithUTF8String_1, nullTerminatedCString);
     return NSMutableString._(_ret, _lib);
   }
@@ -7783,7 +8768,7 @@
 
   static NSMutableString stringWithCString_encoding(
       NativeObjCLibrary _lib, ffi.Pointer<pkg_ffi.Char> cString, int enc) {
-    final _ret = _lib._objc_msgSend_63(_lib._class_NSMutableString1,
+    final _ret = _lib._objc_msgSend_64(_lib._class_NSMutableString1,
         _lib._sel_stringWithCString_encoding_1, cString, enc);
     return NSMutableString._(_ret, _lib);
   }
@@ -7793,7 +8778,7 @@
       NSObject? url,
       int enc,
       ffi.Pointer<ffi.Pointer<ObjCObject>> error) {
-    final _ret = _lib._objc_msgSend_64(
+    final _ret = _lib._objc_msgSend_65(
         _lib._class_NSMutableString1,
         _lib._sel_stringWithContentsOfURL_encoding_error_1,
         url?._id ?? ffi.nullptr,
@@ -7807,7 +8792,7 @@
       NSObject? path,
       int enc,
       ffi.Pointer<ffi.Pointer<ObjCObject>> error) {
-    final _ret = _lib._objc_msgSend_64(
+    final _ret = _lib._objc_msgSend_65(
         _lib._class_NSMutableString1,
         _lib._sel_stringWithContentsOfFile_encoding_error_1,
         path?._id ?? ffi.nullptr,
@@ -7821,7 +8806,7 @@
       NSObject? url,
       ffi.Pointer<NSStringEncoding> enc,
       ffi.Pointer<ffi.Pointer<ObjCObject>> error) {
-    final _ret = _lib._objc_msgSend_65(
+    final _ret = _lib._objc_msgSend_66(
         _lib._class_NSMutableString1,
         _lib._sel_stringWithContentsOfURL_usedEncoding_error_1,
         url?._id ?? ffi.nullptr,
@@ -7835,7 +8820,7 @@
       NSObject? path,
       ffi.Pointer<NSStringEncoding> enc,
       ffi.Pointer<ffi.Pointer<ObjCObject>> error) {
-    final _ret = _lib._objc_msgSend_65(
+    final _ret = _lib._objc_msgSend_66(
         _lib._class_NSMutableString1,
         _lib._sel_stringWithContentsOfFile_usedEncoding_error_1,
         path?._id ?? ffi.nullptr,
@@ -7861,7 +8846,7 @@
           NSObject? opts,
           ffi.Pointer<ffi.Pointer<ObjCObject>> string,
           ffi.Pointer<ffi.Uint8> usedLossyConversion) {
-    return _lib._objc_msgSend_66(
+    return _lib._objc_msgSend_67(
         _lib._class_NSMutableString1,
         _lib._sel_stringEncodingForData_encodingOptions_convertedString_usedLossyConversion_1,
         data?._id ?? ffi.nullptr,
@@ -7886,14 +8871,14 @@
 
   static NSObject stringWithCString_length(
       NativeObjCLibrary _lib, ffi.Pointer<pkg_ffi.Char> bytes, int length) {
-    final _ret = _lib._objc_msgSend_63(_lib._class_NSMutableString1,
+    final _ret = _lib._objc_msgSend_64(_lib._class_NSMutableString1,
         _lib._sel_stringWithCString_length_1, bytes, length);
     return NSObject._(_ret, _lib);
   }
 
   static NSObject stringWithCString(
       NativeObjCLibrary _lib, ffi.Pointer<pkg_ffi.Char> bytes) {
-    final _ret = _lib._objc_msgSend_55(
+    final _ret = _lib._objc_msgSend_56(
         _lib._class_NSMutableString1, _lib._sel_stringWithCString_1, bytes);
     return NSObject._(_ret, _lib);
   }
@@ -7926,26 +8911,26 @@
   }
 
   int get intVal {
-    return _lib._objc_msgSend_149(_id, _lib._sel_intVal1);
+    return _lib._objc_msgSend_167(_id, _lib._sel_intVal1);
   }
 
   set intVal(int value) {
-    _lib._objc_msgSend_150(_id, _lib._sel_setIntVal_1, value);
+    _lib._objc_msgSend_168(_id, _lib._sel_setIntVal_1, value);
   }
 
   static Foo makeFoo(NativeObjCLibrary _lib, double x) {
     final _ret =
-        _lib._objc_msgSend_151(_lib._class_Foo1, _lib._sel_makeFoo_1, x);
+        _lib._objc_msgSend_169(_lib._class_Foo1, _lib._sel_makeFoo_1, x);
     return Foo._(_ret, _lib);
   }
 
   int multiply_withOtherFoo(bool useIntVals, NSObject? other) {
-    return _lib._objc_msgSend_152(_id, _lib._sel_multiply_withOtherFoo_1,
+    return _lib._objc_msgSend_170(_id, _lib._sel_multiply_withOtherFoo_1,
         useIntVals, other?._id ?? ffi.nullptr);
   }
 
   void setDoubleVal(double x) {
-    _lib._objc_msgSend_153(_id, _lib._sel_setDoubleVal_1, x);
+    _lib._objc_msgSend_171(_id, _lib._sel_setDoubleVal_1, x);
   }
 
   static Foo new1(NativeObjCLibrary _lib) {
diff --git a/pkgs/ffigen/test/native_objc_test/setup.dart b/pkgs/ffigen/test/native_objc_test/setup.dart
index 60ec7a6..2681389 100644
--- a/pkgs/ffigen/test/native_objc_test/setup.dart
+++ b/pkgs/ffigen/test/native_objc_test/setup.dart
@@ -39,4 +39,5 @@
   await _buildLib('nullable_test.m', 'nullable_test.dylib');
   await _buildLib('property_test.m', 'property_test.dylib');
   await _buildLib('string_test.m', 'string_test.dylib');
+  await _buildLib('block_test.m', 'block_test.dylib');
 }
diff --git a/pkgs/ffigen/test/native_objc_test/string_bindings.dart b/pkgs/ffigen/test/native_objc_test/string_bindings.dart
index ae27fc9..4614d8e 100644
--- a/pkgs/ffigen/test/native_objc_test/string_bindings.dart
+++ b/pkgs/ffigen/test/native_objc_test/string_bindings.dart
@@ -1041,6 +1041,23 @@
       _registerName1("getParagraphStart:end:contentsEnd:forRange:");
   late final ffi.Pointer<ObjCSel> _sel_paragraphRangeForRange_1 =
       _registerName1("paragraphRangeForRange:");
+  ffi.Pointer<_ObjCBlockDesc> _newBlockDesc1() {
+    final d =
+        pkg_ffi.calloc.allocate<_ObjCBlockDesc>(ffi.sizeOf<_ObjCBlockDesc>());
+    d.ref.size = ffi.sizeOf<_ObjCBlock>();
+    return d;
+  }
+
+  late final ffi.Pointer<_ObjCBlockDesc> _objc_block_desc1 = _newBlockDesc1();
+  ffi.Pointer<_ObjCBlock> _newBlock1(
+      ffi.Pointer<ffi.Void> invoke, ffi.Pointer<ffi.Void> target) {
+    final b = pkg_ffi.calloc.allocate<_ObjCBlock>(ffi.sizeOf<_ObjCBlock>());
+    b.ref.invoke = invoke;
+    b.ref.target = target;
+    b.ref.descriptor = _objc_block_desc1;
+    return b;
+  }
+
   late final ffi.Pointer<ObjCSel>
       _sel_enumerateSubstringsInRange_options_usingBlock_1 =
       _registerName1("enumerateSubstringsInRange:options:usingBlock:");
@@ -1049,7 +1066,7 @@
     ffi.Pointer<ObjCSel> sel,
     NSRange range,
     int opts,
-    ffi.Pointer<ObjCObject> block,
+    ffi.Pointer<_ObjCBlock> block,
   ) {
     return __objc_msgSend_35(
       obj,
@@ -1063,30 +1080,50 @@
   late final __objc_msgSend_35Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
-              NSRange, ffi.Int32, ffi.Pointer<ObjCObject>)>>('objc_msgSend');
+              NSRange, ffi.Int32, ffi.Pointer<_ObjCBlock>)>>('objc_msgSend');
   late final __objc_msgSend_35 = __objc_msgSend_35Ptr.asFunction<
       void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, NSRange, int,
-          ffi.Pointer<ObjCObject>)>();
+          ffi.Pointer<_ObjCBlock>)>();
 
   late final ffi.Pointer<ObjCSel> _sel_enumerateLinesUsingBlock_1 =
       _registerName1("enumerateLinesUsingBlock:");
-  late final ffi.Pointer<ObjCSel> _sel_UTF8String1 =
-      _registerName1("UTF8String");
-  ffi.Pointer<pkg_ffi.Char> _objc_msgSend_36(
+  void _objc_msgSend_36(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
+    ffi.Pointer<_ObjCBlock> block,
   ) {
     return __objc_msgSend_36(
       obj,
       sel,
+      block,
     );
   }
 
   late final __objc_msgSend_36Ptr = _lookup<
       ffi.NativeFunction<
+          ffi.Void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+              ffi.Pointer<_ObjCBlock>)>>('objc_msgSend');
+  late final __objc_msgSend_36 = __objc_msgSend_36Ptr.asFunction<
+      void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+          ffi.Pointer<_ObjCBlock>)>();
+
+  late final ffi.Pointer<ObjCSel> _sel_UTF8String1 =
+      _registerName1("UTF8String");
+  ffi.Pointer<pkg_ffi.Char> _objc_msgSend_37(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+  ) {
+    return __objc_msgSend_37(
+      obj,
+      sel,
+    );
+  }
+
+  late final __objc_msgSend_37Ptr = _lookup<
+      ffi.NativeFunction<
           ffi.Pointer<pkg_ffi.Char> Function(
               ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>>('objc_msgSend');
-  late final __objc_msgSend_36 = __objc_msgSend_36Ptr.asFunction<
+  late final __objc_msgSend_37 = __objc_msgSend_37Ptr.asFunction<
       ffi.Pointer<pkg_ffi.Char> Function(
           ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>();
 
@@ -1098,13 +1135,13 @@
   late final ffi.Pointer<ObjCSel>
       _sel_dataUsingEncoding_allowLossyConversion_1 =
       _registerName1("dataUsingEncoding:allowLossyConversion:");
-  ffi.Pointer<ObjCObject> _objc_msgSend_37(
+  ffi.Pointer<ObjCObject> _objc_msgSend_38(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     int encoding,
     bool lossy,
   ) {
-    return __objc_msgSend_37(
+    return __objc_msgSend_38(
       obj,
       sel,
       encoding,
@@ -1112,47 +1149,47 @@
     );
   }
 
-  late final __objc_msgSend_37Ptr = _lookup<
+  late final __objc_msgSend_38Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Pointer<ObjCObject> Function(
               ffi.Pointer<ObjCObject>,
               ffi.Pointer<ObjCSel>,
               NSStringEncoding,
               ffi.Uint8)>>('objc_msgSend');
-  late final __objc_msgSend_37 = __objc_msgSend_37Ptr.asFunction<
+  late final __objc_msgSend_38 = __objc_msgSend_38Ptr.asFunction<
       ffi.Pointer<ObjCObject> Function(
           ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, int, int)>();
 
   late final ffi.Pointer<ObjCSel> _sel_dataUsingEncoding_1 =
       _registerName1("dataUsingEncoding:");
-  ffi.Pointer<ObjCObject> _objc_msgSend_38(
+  ffi.Pointer<ObjCObject> _objc_msgSend_39(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     int encoding,
   ) {
-    return __objc_msgSend_38(
+    return __objc_msgSend_39(
       obj,
       sel,
       encoding,
     );
   }
 
-  late final __objc_msgSend_38Ptr = _lookup<
+  late final __objc_msgSend_39Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
               ffi.Pointer<ObjCSel>, NSStringEncoding)>>('objc_msgSend');
-  late final __objc_msgSend_38 = __objc_msgSend_38Ptr.asFunction<
+  late final __objc_msgSend_39 = __objc_msgSend_39Ptr.asFunction<
       ffi.Pointer<ObjCObject> Function(
           ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, int)>();
 
   late final ffi.Pointer<ObjCSel> _sel_canBeConvertedToEncoding_1 =
       _registerName1("canBeConvertedToEncoding:");
-  bool _objc_msgSend_39(
+  bool _objc_msgSend_40(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     int encoding,
   ) {
-    return __objc_msgSend_39(
+    return __objc_msgSend_40(
           obj,
           sel,
           encoding,
@@ -1160,44 +1197,44 @@
         0;
   }
 
-  late final __objc_msgSend_39Ptr = _lookup<
+  late final __objc_msgSend_40Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Uint8 Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
               NSStringEncoding)>>('objc_msgSend');
-  late final __objc_msgSend_39 = __objc_msgSend_39Ptr.asFunction<
+  late final __objc_msgSend_40 = __objc_msgSend_40Ptr.asFunction<
       int Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, int)>();
 
   late final ffi.Pointer<ObjCSel> _sel_cStringUsingEncoding_1 =
       _registerName1("cStringUsingEncoding:");
-  void _objc_msgSend_40(
+  void _objc_msgSend_41(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     int encoding,
   ) {
-    return __objc_msgSend_40(
+    return __objc_msgSend_41(
       obj,
       sel,
       encoding,
     );
   }
 
-  late final __objc_msgSend_40Ptr = _lookup<
+  late final __objc_msgSend_41Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
               NSStringEncoding)>>('objc_msgSend');
-  late final __objc_msgSend_40 = __objc_msgSend_40Ptr.asFunction<
+  late final __objc_msgSend_41 = __objc_msgSend_41Ptr.asFunction<
       void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, int)>();
 
   late final ffi.Pointer<ObjCSel> _sel_getCString_maxLength_encoding_1 =
       _registerName1("getCString:maxLength:encoding:");
-  bool _objc_msgSend_41(
+  bool _objc_msgSend_42(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     ffi.Pointer<pkg_ffi.Char> buffer,
     int maxBufferCount,
     int encoding,
   ) {
-    return __objc_msgSend_41(
+    return __objc_msgSend_42(
           obj,
           sel,
           buffer,
@@ -1207,7 +1244,7 @@
         0;
   }
 
-  late final __objc_msgSend_41Ptr = _lookup<
+  late final __objc_msgSend_42Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Uint8 Function(
               ffi.Pointer<ObjCObject>,
@@ -1215,7 +1252,7 @@
               ffi.Pointer<pkg_ffi.Char>,
               NSUInteger,
               NSStringEncoding)>>('objc_msgSend');
-  late final __objc_msgSend_41 = __objc_msgSend_41Ptr.asFunction<
+  late final __objc_msgSend_42 = __objc_msgSend_42Ptr.asFunction<
       int Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
           ffi.Pointer<pkg_ffi.Char>, int, int)>();
 
@@ -1223,7 +1260,7 @@
       _sel_getBytes_maxLength_usedLength_encoding_options_range_remainingRange_1 =
       _registerName1(
           "getBytes:maxLength:usedLength:encoding:options:range:remainingRange:");
-  bool _objc_msgSend_42(
+  bool _objc_msgSend_43(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     ffi.Pointer<ffi.Void> buffer,
@@ -1234,7 +1271,7 @@
     NSRange range,
     NSRangePointer leftover,
   ) {
-    return __objc_msgSend_42(
+    return __objc_msgSend_43(
           obj,
           sel,
           buffer,
@@ -1248,7 +1285,7 @@
         0;
   }
 
-  late final __objc_msgSend_42Ptr = _lookup<
+  late final __objc_msgSend_43Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Uint8 Function(
               ffi.Pointer<ObjCObject>,
@@ -1260,7 +1297,7 @@
               ffi.Int32,
               NSRange,
               NSRangePointer)>>('objc_msgSend');
-  late final __objc_msgSend_42 = __objc_msgSend_42Ptr.asFunction<
+  late final __objc_msgSend_43 = __objc_msgSend_43Ptr.asFunction<
       int Function(
           ffi.Pointer<ObjCObject>,
           ffi.Pointer<ObjCSel>,
@@ -1274,44 +1311,44 @@
 
   late final ffi.Pointer<ObjCSel> _sel_maximumLengthOfBytesUsingEncoding_1 =
       _registerName1("maximumLengthOfBytesUsingEncoding:");
-  int _objc_msgSend_43(
+  int _objc_msgSend_44(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     int enc,
   ) {
-    return __objc_msgSend_43(
+    return __objc_msgSend_44(
       obj,
       sel,
       enc,
     );
   }
 
-  late final __objc_msgSend_43Ptr = _lookup<
+  late final __objc_msgSend_44Ptr = _lookup<
       ffi.NativeFunction<
           NSUInteger Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
               NSStringEncoding)>>('objc_msgSend');
-  late final __objc_msgSend_43 = __objc_msgSend_43Ptr.asFunction<
+  late final __objc_msgSend_44 = __objc_msgSend_44Ptr.asFunction<
       int Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, int)>();
 
   late final ffi.Pointer<ObjCSel> _sel_lengthOfBytesUsingEncoding_1 =
       _registerName1("lengthOfBytesUsingEncoding:");
   late final ffi.Pointer<ObjCSel> _sel_availableStringEncodings1 =
       _registerName1("availableStringEncodings");
-  ffi.Pointer<NSStringEncoding> _objc_msgSend_44(
+  ffi.Pointer<NSStringEncoding> _objc_msgSend_45(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
   ) {
-    return __objc_msgSend_44(
+    return __objc_msgSend_45(
       obj,
       sel,
     );
   }
 
-  late final __objc_msgSend_44Ptr = _lookup<
+  late final __objc_msgSend_45Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Pointer<NSStringEncoding> Function(
               ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>>('objc_msgSend');
-  late final __objc_msgSend_44 = __objc_msgSend_44Ptr.asFunction<
+  late final __objc_msgSend_45 = __objc_msgSend_45Ptr.asFunction<
       ffi.Pointer<NSStringEncoding> Function(
           ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>();
 
@@ -1334,14 +1371,14 @@
   late final ffi.Pointer<ObjCSel>
       _sel_stringByPaddingToLength_withString_startingAtIndex_1 =
       _registerName1("stringByPaddingToLength:withString:startingAtIndex:");
-  ffi.Pointer<ObjCObject> _objc_msgSend_45(
+  ffi.Pointer<ObjCObject> _objc_msgSend_46(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     int newLength,
     ffi.Pointer<ObjCObject> padString,
     int padIndex,
   ) {
-    return __objc_msgSend_45(
+    return __objc_msgSend_46(
       obj,
       sel,
       newLength,
@@ -1350,7 +1387,7 @@
     );
   }
 
-  late final __objc_msgSend_45Ptr = _lookup<
+  late final __objc_msgSend_46Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Pointer<ObjCObject> Function(
               ffi.Pointer<ObjCObject>,
@@ -1358,19 +1395,19 @@
               NSUInteger,
               ffi.Pointer<ObjCObject>,
               NSUInteger)>>('objc_msgSend');
-  late final __objc_msgSend_45 = __objc_msgSend_45Ptr.asFunction<
+  late final __objc_msgSend_46 = __objc_msgSend_46Ptr.asFunction<
       ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
           ffi.Pointer<ObjCSel>, int, ffi.Pointer<ObjCObject>, int)>();
 
   late final ffi.Pointer<ObjCSel> _sel_stringByFoldingWithOptions_locale_1 =
       _registerName1("stringByFoldingWithOptions:locale:");
-  ffi.Pointer<ObjCObject> _objc_msgSend_46(
+  ffi.Pointer<ObjCObject> _objc_msgSend_47(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     int options,
     ffi.Pointer<ObjCObject> locale,
   ) {
-    return __objc_msgSend_46(
+    return __objc_msgSend_47(
       obj,
       sel,
       options,
@@ -1378,14 +1415,14 @@
     );
   }
 
-  late final __objc_msgSend_46Ptr = _lookup<
+  late final __objc_msgSend_47Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Pointer<ObjCObject> Function(
               ffi.Pointer<ObjCObject>,
               ffi.Pointer<ObjCSel>,
               ffi.Int32,
               ffi.Pointer<ObjCObject>)>>('objc_msgSend');
-  late final __objc_msgSend_46 = __objc_msgSend_46Ptr.asFunction<
+  late final __objc_msgSend_47 = __objc_msgSend_47Ptr.asFunction<
       ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
           ffi.Pointer<ObjCSel>, int, ffi.Pointer<ObjCObject>)>();
 
@@ -1393,7 +1430,7 @@
       _sel_stringByReplacingOccurrencesOfString_withString_options_range_1 =
       _registerName1(
           "stringByReplacingOccurrencesOfString:withString:options:range:");
-  ffi.Pointer<ObjCObject> _objc_msgSend_47(
+  ffi.Pointer<ObjCObject> _objc_msgSend_48(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     ffi.Pointer<ObjCObject> target,
@@ -1401,7 +1438,7 @@
     int options,
     NSRange searchRange,
   ) {
-    return __objc_msgSend_47(
+    return __objc_msgSend_48(
       obj,
       sel,
       target,
@@ -1411,7 +1448,7 @@
     );
   }
 
-  late final __objc_msgSend_47Ptr = _lookup<
+  late final __objc_msgSend_48Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Pointer<ObjCObject> Function(
               ffi.Pointer<ObjCObject>,
@@ -1420,7 +1457,7 @@
               ffi.Pointer<ObjCObject>,
               ffi.Int32,
               NSRange)>>('objc_msgSend');
-  late final __objc_msgSend_47 = __objc_msgSend_47Ptr.asFunction<
+  late final __objc_msgSend_48 = __objc_msgSend_48Ptr.asFunction<
       ffi.Pointer<ObjCObject> Function(
           ffi.Pointer<ObjCObject>,
           ffi.Pointer<ObjCSel>,
@@ -1432,47 +1469,16 @@
   late final ffi.Pointer<ObjCSel>
       _sel_stringByReplacingOccurrencesOfString_withString_1 =
       _registerName1("stringByReplacingOccurrencesOfString:withString:");
-  ffi.Pointer<ObjCObject> _objc_msgSend_48(
+  ffi.Pointer<ObjCObject> _objc_msgSend_49(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     ffi.Pointer<ObjCObject> target,
     ffi.Pointer<ObjCObject> replacement,
   ) {
-    return __objc_msgSend_48(
-      obj,
-      sel,
-      target,
-      replacement,
-    );
-  }
-
-  late final __objc_msgSend_48Ptr = _lookup<
-      ffi.NativeFunction<
-          ffi.Pointer<ObjCObject> Function(
-              ffi.Pointer<ObjCObject>,
-              ffi.Pointer<ObjCSel>,
-              ffi.Pointer<ObjCObject>,
-              ffi.Pointer<ObjCObject>)>>('objc_msgSend');
-  late final __objc_msgSend_48 = __objc_msgSend_48Ptr.asFunction<
-      ffi.Pointer<ObjCObject> Function(
-          ffi.Pointer<ObjCObject>,
-          ffi.Pointer<ObjCSel>,
-          ffi.Pointer<ObjCObject>,
-          ffi.Pointer<ObjCObject>)>();
-
-  late final ffi.Pointer<ObjCSel>
-      _sel_stringByReplacingCharactersInRange_withString_1 =
-      _registerName1("stringByReplacingCharactersInRange:withString:");
-  ffi.Pointer<ObjCObject> _objc_msgSend_49(
-    ffi.Pointer<ObjCObject> obj,
-    ffi.Pointer<ObjCSel> sel,
-    NSRange range,
-    ffi.Pointer<ObjCObject> replacement,
-  ) {
     return __objc_msgSend_49(
       obj,
       sel,
-      range,
+      target,
       replacement,
     );
   }
@@ -1482,25 +1488,29 @@
           ffi.Pointer<ObjCObject> Function(
               ffi.Pointer<ObjCObject>,
               ffi.Pointer<ObjCSel>,
-              NSRange,
+              ffi.Pointer<ObjCObject>,
               ffi.Pointer<ObjCObject>)>>('objc_msgSend');
   late final __objc_msgSend_49 = __objc_msgSend_49Ptr.asFunction<
-      ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
-          ffi.Pointer<ObjCSel>, NSRange, ffi.Pointer<ObjCObject>)>();
+      ffi.Pointer<ObjCObject> Function(
+          ffi.Pointer<ObjCObject>,
+          ffi.Pointer<ObjCSel>,
+          ffi.Pointer<ObjCObject>,
+          ffi.Pointer<ObjCObject>)>();
 
-  late final ffi.Pointer<ObjCSel> _sel_stringByApplyingTransform_reverse_1 =
-      _registerName1("stringByApplyingTransform:reverse:");
+  late final ffi.Pointer<ObjCSel>
+      _sel_stringByReplacingCharactersInRange_withString_1 =
+      _registerName1("stringByReplacingCharactersInRange:withString:");
   ffi.Pointer<ObjCObject> _objc_msgSend_50(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
-    NSStringTransform transform,
-    bool reverse,
+    NSRange range,
+    ffi.Pointer<ObjCObject> replacement,
   ) {
     return __objc_msgSend_50(
       obj,
       sel,
-      transform,
-      reverse ? 1 : 0,
+      range,
+      replacement,
     );
   }
 
@@ -1509,15 +1519,42 @@
           ffi.Pointer<ObjCObject> Function(
               ffi.Pointer<ObjCObject>,
               ffi.Pointer<ObjCSel>,
+              NSRange,
+              ffi.Pointer<ObjCObject>)>>('objc_msgSend');
+  late final __objc_msgSend_50 = __objc_msgSend_50Ptr.asFunction<
+      ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
+          ffi.Pointer<ObjCSel>, NSRange, ffi.Pointer<ObjCObject>)>();
+
+  late final ffi.Pointer<ObjCSel> _sel_stringByApplyingTransform_reverse_1 =
+      _registerName1("stringByApplyingTransform:reverse:");
+  ffi.Pointer<ObjCObject> _objc_msgSend_51(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    NSStringTransform transform,
+    bool reverse,
+  ) {
+    return __objc_msgSend_51(
+      obj,
+      sel,
+      transform,
+      reverse ? 1 : 0,
+    );
+  }
+
+  late final __objc_msgSend_51Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ObjCObject> Function(
+              ffi.Pointer<ObjCObject>,
+              ffi.Pointer<ObjCSel>,
               NSStringTransform,
               ffi.Uint8)>>('objc_msgSend');
-  late final __objc_msgSend_50 = __objc_msgSend_50Ptr.asFunction<
+  late final __objc_msgSend_51 = __objc_msgSend_51Ptr.asFunction<
       ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
           ffi.Pointer<ObjCSel>, NSStringTransform, int)>();
 
   late final ffi.Pointer<ObjCSel> _sel_writeToURL_atomically_encoding_error_1 =
       _registerName1("writeToURL:atomically:encoding:error:");
-  bool _objc_msgSend_51(
+  bool _objc_msgSend_52(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     ffi.Pointer<ObjCObject> url,
@@ -1525,7 +1562,7 @@
     int enc,
     ffi.Pointer<ffi.Pointer<ObjCObject>> error,
   ) {
-    return __objc_msgSend_51(
+    return __objc_msgSend_52(
           obj,
           sel,
           url,
@@ -1536,7 +1573,7 @@
         0;
   }
 
-  late final __objc_msgSend_51Ptr = _lookup<
+  late final __objc_msgSend_52Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Uint8 Function(
               ffi.Pointer<ObjCObject>,
@@ -1545,7 +1582,7 @@
               ffi.Uint8,
               NSStringEncoding,
               ffi.Pointer<ffi.Pointer<ObjCObject>>)>>('objc_msgSend');
-  late final __objc_msgSend_51 = __objc_msgSend_51Ptr.asFunction<
+  late final __objc_msgSend_52 = __objc_msgSend_52Ptr.asFunction<
       int Function(
           ffi.Pointer<ObjCObject>,
           ffi.Pointer<ObjCSel>,
@@ -1561,14 +1598,14 @@
   late final ffi.Pointer<ObjCSel>
       _sel_initWithCharactersNoCopy_length_freeWhenDone_1 =
       _registerName1("initWithCharactersNoCopy:length:freeWhenDone:");
-  instancetype _objc_msgSend_52(
+  instancetype _objc_msgSend_53(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     ffi.Pointer<unichar> characters,
     int length,
     bool freeBuffer,
   ) {
-    return __objc_msgSend_52(
+    return __objc_msgSend_53(
       obj,
       sel,
       characters,
@@ -1577,25 +1614,25 @@
     );
   }
 
-  late final __objc_msgSend_52Ptr = _lookup<
+  late final __objc_msgSend_53Ptr = _lookup<
       ffi.NativeFunction<
           instancetype Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
               ffi.Pointer<unichar>, NSUInteger, ffi.Uint8)>>('objc_msgSend');
-  late final __objc_msgSend_52 = __objc_msgSend_52Ptr.asFunction<
+  late final __objc_msgSend_53 = __objc_msgSend_53Ptr.asFunction<
       instancetype Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
           ffi.Pointer<unichar>, int, int)>();
 
   late final ffi.Pointer<ObjCSel>
       _sel_initWithCharactersNoCopy_length_deallocator_1 =
       _registerName1("initWithCharactersNoCopy:length:deallocator:");
-  instancetype _objc_msgSend_53(
+  instancetype _objc_msgSend_54(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     ffi.Pointer<unichar> chars,
     int len,
-    ffi.Pointer<ObjCObject> deallocator,
+    ffi.Pointer<_ObjCBlock> deallocator,
   ) {
-    return __objc_msgSend_53(
+    return __objc_msgSend_54(
       obj,
       sel,
       chars,
@@ -1604,27 +1641,27 @@
     );
   }
 
-  late final __objc_msgSend_53Ptr = _lookup<
+  late final __objc_msgSend_54Ptr = _lookup<
       ffi.NativeFunction<
           instancetype Function(
               ffi.Pointer<ObjCObject>,
               ffi.Pointer<ObjCSel>,
               ffi.Pointer<unichar>,
               NSUInteger,
-              ffi.Pointer<ObjCObject>)>>('objc_msgSend');
-  late final __objc_msgSend_53 = __objc_msgSend_53Ptr.asFunction<
+              ffi.Pointer<_ObjCBlock>)>>('objc_msgSend');
+  late final __objc_msgSend_54 = __objc_msgSend_54Ptr.asFunction<
       instancetype Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
-          ffi.Pointer<unichar>, int, ffi.Pointer<ObjCObject>)>();
+          ffi.Pointer<unichar>, int, ffi.Pointer<_ObjCBlock>)>();
 
   late final ffi.Pointer<ObjCSel> _sel_initWithCharacters_length_1 =
       _registerName1("initWithCharacters:length:");
-  instancetype _objc_msgSend_54(
+  instancetype _objc_msgSend_55(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     ffi.Pointer<unichar> characters,
     int length,
   ) {
-    return __objc_msgSend_54(
+    return __objc_msgSend_55(
       obj,
       sel,
       characters,
@@ -1632,33 +1669,33 @@
     );
   }
 
-  late final __objc_msgSend_54Ptr = _lookup<
+  late final __objc_msgSend_55Ptr = _lookup<
       ffi.NativeFunction<
           instancetype Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
               ffi.Pointer<unichar>, NSUInteger)>>('objc_msgSend');
-  late final __objc_msgSend_54 = __objc_msgSend_54Ptr.asFunction<
+  late final __objc_msgSend_55 = __objc_msgSend_55Ptr.asFunction<
       instancetype Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
           ffi.Pointer<unichar>, int)>();
 
   late final ffi.Pointer<ObjCSel> _sel_initWithUTF8String_1 =
       _registerName1("initWithUTF8String:");
-  instancetype _objc_msgSend_55(
+  instancetype _objc_msgSend_56(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     ffi.Pointer<pkg_ffi.Char> nullTerminatedCString,
   ) {
-    return __objc_msgSend_55(
+    return __objc_msgSend_56(
       obj,
       sel,
       nullTerminatedCString,
     );
   }
 
-  late final __objc_msgSend_55Ptr = _lookup<
+  late final __objc_msgSend_56Ptr = _lookup<
       ffi.NativeFunction<
           instancetype Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
               ffi.Pointer<pkg_ffi.Char>)>>('objc_msgSend');
-  late final __objc_msgSend_55 = __objc_msgSend_55Ptr.asFunction<
+  late final __objc_msgSend_56 = __objc_msgSend_56Ptr.asFunction<
       instancetype Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
           ffi.Pointer<pkg_ffi.Char>)>();
 
@@ -1668,44 +1705,17 @@
       _registerName1("initWithFormat:");
   late final ffi.Pointer<ObjCSel> _sel_initWithFormat_arguments_1 =
       _registerName1("initWithFormat:arguments:");
-  instancetype _objc_msgSend_56(
+  instancetype _objc_msgSend_57(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     ffi.Pointer<ObjCObject> format,
     ffi.Pointer<__va_list_tag> argList,
   ) {
-    return __objc_msgSend_56(
-      obj,
-      sel,
-      format,
-      argList,
-    );
-  }
-
-  late final __objc_msgSend_56Ptr = _lookup<
-      ffi.NativeFunction<
-          instancetype Function(
-              ffi.Pointer<ObjCObject>,
-              ffi.Pointer<ObjCSel>,
-              ffi.Pointer<ObjCObject>,
-              ffi.Pointer<__va_list_tag>)>>('objc_msgSend');
-  late final __objc_msgSend_56 = __objc_msgSend_56Ptr.asFunction<
-      instancetype Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
-          ffi.Pointer<ObjCObject>, ffi.Pointer<__va_list_tag>)>();
-
-  late final ffi.Pointer<ObjCSel> _sel_initWithFormat_locale_1 =
-      _registerName1("initWithFormat:locale:");
-  instancetype _objc_msgSend_57(
-    ffi.Pointer<ObjCObject> obj,
-    ffi.Pointer<ObjCSel> sel,
-    ffi.Pointer<ObjCObject> format,
-    ffi.Pointer<ObjCObject> locale,
-  ) {
     return __objc_msgSend_57(
       obj,
       sel,
       format,
-      locale,
+      argList,
     );
   }
 
@@ -1715,26 +1725,24 @@
               ffi.Pointer<ObjCObject>,
               ffi.Pointer<ObjCSel>,
               ffi.Pointer<ObjCObject>,
-              ffi.Pointer<ObjCObject>)>>('objc_msgSend');
+              ffi.Pointer<__va_list_tag>)>>('objc_msgSend');
   late final __objc_msgSend_57 = __objc_msgSend_57Ptr.asFunction<
       instancetype Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
-          ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCObject>)>();
+          ffi.Pointer<ObjCObject>, ffi.Pointer<__va_list_tag>)>();
 
-  late final ffi.Pointer<ObjCSel> _sel_initWithFormat_locale_arguments_1 =
-      _registerName1("initWithFormat:locale:arguments:");
+  late final ffi.Pointer<ObjCSel> _sel_initWithFormat_locale_1 =
+      _registerName1("initWithFormat:locale:");
   instancetype _objc_msgSend_58(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     ffi.Pointer<ObjCObject> format,
     ffi.Pointer<ObjCObject> locale,
-    ffi.Pointer<__va_list_tag> argList,
   ) {
     return __objc_msgSend_58(
       obj,
       sel,
       format,
       locale,
-      argList,
     );
   }
 
@@ -1744,9 +1752,38 @@
               ffi.Pointer<ObjCObject>,
               ffi.Pointer<ObjCSel>,
               ffi.Pointer<ObjCObject>,
+              ffi.Pointer<ObjCObject>)>>('objc_msgSend');
+  late final __objc_msgSend_58 = __objc_msgSend_58Ptr.asFunction<
+      instancetype Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+          ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCObject>)>();
+
+  late final ffi.Pointer<ObjCSel> _sel_initWithFormat_locale_arguments_1 =
+      _registerName1("initWithFormat:locale:arguments:");
+  instancetype _objc_msgSend_59(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    ffi.Pointer<ObjCObject> format,
+    ffi.Pointer<ObjCObject> locale,
+    ffi.Pointer<__va_list_tag> argList,
+  ) {
+    return __objc_msgSend_59(
+      obj,
+      sel,
+      format,
+      locale,
+      argList,
+    );
+  }
+
+  late final __objc_msgSend_59Ptr = _lookup<
+      ffi.NativeFunction<
+          instancetype Function(
+              ffi.Pointer<ObjCObject>,
+              ffi.Pointer<ObjCSel>,
+              ffi.Pointer<ObjCObject>,
               ffi.Pointer<ObjCObject>,
               ffi.Pointer<__va_list_tag>)>>('objc_msgSend');
-  late final __objc_msgSend_58 = __objc_msgSend_58Ptr.asFunction<
+  late final __objc_msgSend_59 = __objc_msgSend_59Ptr.asFunction<
       instancetype Function(
           ffi.Pointer<ObjCObject>,
           ffi.Pointer<ObjCSel>,
@@ -1756,13 +1793,13 @@
 
   late final ffi.Pointer<ObjCSel> _sel_initWithData_encoding_1 =
       _registerName1("initWithData:encoding:");
-  instancetype _objc_msgSend_59(
+  instancetype _objc_msgSend_60(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     ffi.Pointer<ObjCObject> data,
     int encoding,
   ) {
-    return __objc_msgSend_59(
+    return __objc_msgSend_60(
       obj,
       sel,
       data,
@@ -1770,54 +1807,22 @@
     );
   }
 
-  late final __objc_msgSend_59Ptr = _lookup<
+  late final __objc_msgSend_60Ptr = _lookup<
       ffi.NativeFunction<
           instancetype Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
               ffi.Pointer<ObjCObject>, NSStringEncoding)>>('objc_msgSend');
-  late final __objc_msgSend_59 = __objc_msgSend_59Ptr.asFunction<
+  late final __objc_msgSend_60 = __objc_msgSend_60Ptr.asFunction<
       instancetype Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
           ffi.Pointer<ObjCObject>, int)>();
 
   late final ffi.Pointer<ObjCSel> _sel_initWithBytes_length_encoding_1 =
       _registerName1("initWithBytes:length:encoding:");
-  instancetype _objc_msgSend_60(
-    ffi.Pointer<ObjCObject> obj,
-    ffi.Pointer<ObjCSel> sel,
-    ffi.Pointer<ffi.Void> bytes,
-    int len,
-    int encoding,
-  ) {
-    return __objc_msgSend_60(
-      obj,
-      sel,
-      bytes,
-      len,
-      encoding,
-    );
-  }
-
-  late final __objc_msgSend_60Ptr = _lookup<
-      ffi.NativeFunction<
-          instancetype Function(
-              ffi.Pointer<ObjCObject>,
-              ffi.Pointer<ObjCSel>,
-              ffi.Pointer<ffi.Void>,
-              NSUInteger,
-              NSStringEncoding)>>('objc_msgSend');
-  late final __objc_msgSend_60 = __objc_msgSend_60Ptr.asFunction<
-      instancetype Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
-          ffi.Pointer<ffi.Void>, int, int)>();
-
-  late final ffi.Pointer<ObjCSel>
-      _sel_initWithBytesNoCopy_length_encoding_freeWhenDone_1 =
-      _registerName1("initWithBytesNoCopy:length:encoding:freeWhenDone:");
   instancetype _objc_msgSend_61(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     ffi.Pointer<ffi.Void> bytes,
     int len,
     int encoding,
-    bool freeBuffer,
   ) {
     return __objc_msgSend_61(
       obj,
@@ -1825,7 +1830,6 @@
       bytes,
       len,
       encoding,
-      freeBuffer ? 1 : 0,
     );
   }
 
@@ -1836,22 +1840,21 @@
               ffi.Pointer<ObjCSel>,
               ffi.Pointer<ffi.Void>,
               NSUInteger,
-              NSStringEncoding,
-              ffi.Uint8)>>('objc_msgSend');
+              NSStringEncoding)>>('objc_msgSend');
   late final __objc_msgSend_61 = __objc_msgSend_61Ptr.asFunction<
       instancetype Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
-          ffi.Pointer<ffi.Void>, int, int, int)>();
+          ffi.Pointer<ffi.Void>, int, int)>();
 
   late final ffi.Pointer<ObjCSel>
-      _sel_initWithBytesNoCopy_length_encoding_deallocator_1 =
-      _registerName1("initWithBytesNoCopy:length:encoding:deallocator:");
+      _sel_initWithBytesNoCopy_length_encoding_freeWhenDone_1 =
+      _registerName1("initWithBytesNoCopy:length:encoding:freeWhenDone:");
   instancetype _objc_msgSend_62(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     ffi.Pointer<ffi.Void> bytes,
     int len,
     int encoding,
-    ffi.Pointer<ObjCObject> deallocator,
+    bool freeBuffer,
   ) {
     return __objc_msgSend_62(
       obj,
@@ -1859,7 +1862,7 @@
       bytes,
       len,
       encoding,
-      deallocator,
+      freeBuffer ? 1 : 0,
     );
   }
 
@@ -1871,10 +1874,44 @@
               ffi.Pointer<ffi.Void>,
               NSUInteger,
               NSStringEncoding,
-              ffi.Pointer<ObjCObject>)>>('objc_msgSend');
+              ffi.Uint8)>>('objc_msgSend');
   late final __objc_msgSend_62 = __objc_msgSend_62Ptr.asFunction<
       instancetype Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
-          ffi.Pointer<ffi.Void>, int, int, ffi.Pointer<ObjCObject>)>();
+          ffi.Pointer<ffi.Void>, int, int, int)>();
+
+  late final ffi.Pointer<ObjCSel>
+      _sel_initWithBytesNoCopy_length_encoding_deallocator_1 =
+      _registerName1("initWithBytesNoCopy:length:encoding:deallocator:");
+  instancetype _objc_msgSend_63(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    ffi.Pointer<ffi.Void> bytes,
+    int len,
+    int encoding,
+    ffi.Pointer<_ObjCBlock> deallocator,
+  ) {
+    return __objc_msgSend_63(
+      obj,
+      sel,
+      bytes,
+      len,
+      encoding,
+      deallocator,
+    );
+  }
+
+  late final __objc_msgSend_63Ptr = _lookup<
+      ffi.NativeFunction<
+          instancetype Function(
+              ffi.Pointer<ObjCObject>,
+              ffi.Pointer<ObjCSel>,
+              ffi.Pointer<ffi.Void>,
+              NSUInteger,
+              NSStringEncoding,
+              ffi.Pointer<_ObjCBlock>)>>('objc_msgSend');
+  late final __objc_msgSend_63 = __objc_msgSend_63Ptr.asFunction<
+      instancetype Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+          ffi.Pointer<ffi.Void>, int, int, ffi.Pointer<_ObjCBlock>)>();
 
   late final ffi.Pointer<ObjCSel> _sel_string1 = _registerName1("string");
   late final ffi.Pointer<ObjCSel> _sel_stringWithString_1 =
@@ -1889,13 +1926,13 @@
       _registerName1("localizedStringWithFormat:");
   late final ffi.Pointer<ObjCSel> _sel_initWithCString_encoding_1 =
       _registerName1("initWithCString:encoding:");
-  instancetype _objc_msgSend_63(
+  instancetype _objc_msgSend_64(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     ffi.Pointer<pkg_ffi.Char> nullTerminatedCString,
     int encoding,
   ) {
-    return __objc_msgSend_63(
+    return __objc_msgSend_64(
       obj,
       sel,
       nullTerminatedCString,
@@ -1903,11 +1940,11 @@
     );
   }
 
-  late final __objc_msgSend_63Ptr = _lookup<
+  late final __objc_msgSend_64Ptr = _lookup<
       ffi.NativeFunction<
           instancetype Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
               ffi.Pointer<pkg_ffi.Char>, NSStringEncoding)>>('objc_msgSend');
-  late final __objc_msgSend_63 = __objc_msgSend_63Ptr.asFunction<
+  late final __objc_msgSend_64 = __objc_msgSend_64Ptr.asFunction<
       instancetype Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
           ffi.Pointer<pkg_ffi.Char>, int)>();
 
@@ -1915,14 +1952,14 @@
       _registerName1("stringWithCString:encoding:");
   late final ffi.Pointer<ObjCSel> _sel_initWithContentsOfURL_encoding_error_1 =
       _registerName1("initWithContentsOfURL:encoding:error:");
-  instancetype _objc_msgSend_64(
+  instancetype _objc_msgSend_65(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     ffi.Pointer<ObjCObject> url,
     int enc,
     ffi.Pointer<ffi.Pointer<ObjCObject>> error,
   ) {
-    return __objc_msgSend_64(
+    return __objc_msgSend_65(
       obj,
       sel,
       url,
@@ -1931,7 +1968,7 @@
     );
   }
 
-  late final __objc_msgSend_64Ptr = _lookup<
+  late final __objc_msgSend_65Ptr = _lookup<
       ffi.NativeFunction<
           instancetype Function(
               ffi.Pointer<ObjCObject>,
@@ -1939,7 +1976,7 @@
               ffi.Pointer<ObjCObject>,
               NSStringEncoding,
               ffi.Pointer<ffi.Pointer<ObjCObject>>)>>('objc_msgSend');
-  late final __objc_msgSend_64 = __objc_msgSend_64Ptr.asFunction<
+  late final __objc_msgSend_65 = __objc_msgSend_65Ptr.asFunction<
       instancetype Function(
           ffi.Pointer<ObjCObject>,
           ffi.Pointer<ObjCSel>,
@@ -1958,14 +1995,14 @@
   late final ffi.Pointer<ObjCSel>
       _sel_initWithContentsOfURL_usedEncoding_error_1 =
       _registerName1("initWithContentsOfURL:usedEncoding:error:");
-  instancetype _objc_msgSend_65(
+  instancetype _objc_msgSend_66(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     ffi.Pointer<ObjCObject> url,
     ffi.Pointer<NSStringEncoding> enc,
     ffi.Pointer<ffi.Pointer<ObjCObject>> error,
   ) {
-    return __objc_msgSend_65(
+    return __objc_msgSend_66(
       obj,
       sel,
       url,
@@ -1974,7 +2011,7 @@
     );
   }
 
-  late final __objc_msgSend_65Ptr = _lookup<
+  late final __objc_msgSend_66Ptr = _lookup<
       ffi.NativeFunction<
           instancetype Function(
               ffi.Pointer<ObjCObject>,
@@ -1982,7 +2019,7 @@
               ffi.Pointer<ObjCObject>,
               ffi.Pointer<NSStringEncoding>,
               ffi.Pointer<ffi.Pointer<ObjCObject>>)>>('objc_msgSend');
-  late final __objc_msgSend_65 = __objc_msgSend_65Ptr.asFunction<
+  late final __objc_msgSend_66 = __objc_msgSend_66Ptr.asFunction<
       instancetype Function(
           ffi.Pointer<ObjCObject>,
           ffi.Pointer<ObjCSel>,
@@ -2003,7 +2040,7 @@
       _sel_stringEncodingForData_encodingOptions_convertedString_usedLossyConversion_1 =
       _registerName1(
           "stringEncodingForData:encodingOptions:convertedString:usedLossyConversion:");
-  int _objc_msgSend_66(
+  int _objc_msgSend_67(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     ffi.Pointer<ObjCObject> data,
@@ -2011,7 +2048,7 @@
     ffi.Pointer<ffi.Pointer<ObjCObject>> string,
     ffi.Pointer<ffi.Uint8> usedLossyConversion,
   ) {
-    return __objc_msgSend_66(
+    return __objc_msgSend_67(
       obj,
       sel,
       data,
@@ -2021,7 +2058,7 @@
     );
   }
 
-  late final __objc_msgSend_66Ptr = _lookup<
+  late final __objc_msgSend_67Ptr = _lookup<
       ffi.NativeFunction<
           NSStringEncoding Function(
               ffi.Pointer<ObjCObject>,
@@ -2030,7 +2067,7 @@
               ffi.Pointer<ObjCObject>,
               ffi.Pointer<ffi.Pointer<ObjCObject>>,
               ffi.Pointer<ffi.Uint8>)>>('objc_msgSend');
-  late final __objc_msgSend_66 = __objc_msgSend_66Ptr.asFunction<
+  late final __objc_msgSend_67 = __objc_msgSend_67Ptr.asFunction<
       int Function(
           ffi.Pointer<ObjCObject>,
           ffi.Pointer<ObjCSel>,
@@ -2045,21 +2082,21 @@
       _getClass1("NSDictionary");
   late final ffi.Pointer<ObjCSel> _sel_propertyListFromStringsFileFormat1 =
       _registerName1("propertyListFromStringsFileFormat");
-  ffi.Pointer<ObjCObject> _objc_msgSend_67(
+  ffi.Pointer<ObjCObject> _objc_msgSend_68(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
   ) {
-    return __objc_msgSend_67(
+    return __objc_msgSend_68(
       obj,
       sel,
     );
   }
 
-  late final __objc_msgSend_67Ptr = _lookup<
+  late final __objc_msgSend_68Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Pointer<ObjCObject> Function(
               ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>>('objc_msgSend');
-  late final __objc_msgSend_67 = __objc_msgSend_67Ptr.asFunction<
+  late final __objc_msgSend_68 = __objc_msgSend_68Ptr.asFunction<
       ffi.Pointer<ObjCObject> Function(
           ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>();
 
@@ -2070,35 +2107,35 @@
       _registerName1("cStringLength");
   late final ffi.Pointer<ObjCSel> _sel_getCString_1 =
       _registerName1("getCString:");
-  void _objc_msgSend_68(
+  void _objc_msgSend_69(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     ffi.Pointer<pkg_ffi.Char> bytes,
   ) {
-    return __objc_msgSend_68(
+    return __objc_msgSend_69(
       obj,
       sel,
       bytes,
     );
   }
 
-  late final __objc_msgSend_68Ptr = _lookup<
+  late final __objc_msgSend_69Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
               ffi.Pointer<pkg_ffi.Char>)>>('objc_msgSend');
-  late final __objc_msgSend_68 = __objc_msgSend_68Ptr.asFunction<
+  late final __objc_msgSend_69 = __objc_msgSend_69Ptr.asFunction<
       void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
           ffi.Pointer<pkg_ffi.Char>)>();
 
   late final ffi.Pointer<ObjCSel> _sel_getCString_maxLength_1 =
       _registerName1("getCString:maxLength:");
-  void _objc_msgSend_69(
+  void _objc_msgSend_70(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     ffi.Pointer<pkg_ffi.Char> bytes,
     int maxLength,
   ) {
-    return __objc_msgSend_69(
+    return __objc_msgSend_70(
       obj,
       sel,
       bytes,
@@ -2106,18 +2143,18 @@
     );
   }
 
-  late final __objc_msgSend_69Ptr = _lookup<
+  late final __objc_msgSend_70Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
               ffi.Pointer<pkg_ffi.Char>, NSUInteger)>>('objc_msgSend');
-  late final __objc_msgSend_69 = __objc_msgSend_69Ptr.asFunction<
+  late final __objc_msgSend_70 = __objc_msgSend_70Ptr.asFunction<
       void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
           ffi.Pointer<pkg_ffi.Char>, int)>();
 
   late final ffi.Pointer<ObjCSel>
       _sel_getCString_maxLength_range_remainingRange_1 =
       _registerName1("getCString:maxLength:range:remainingRange:");
-  void _objc_msgSend_70(
+  void _objc_msgSend_71(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     ffi.Pointer<pkg_ffi.Char> bytes,
@@ -2125,7 +2162,7 @@
     NSRange aRange,
     NSRangePointer leftoverRange,
   ) {
-    return __objc_msgSend_70(
+    return __objc_msgSend_71(
       obj,
       sel,
       bytes,
@@ -2135,7 +2172,7 @@
     );
   }
 
-  late final __objc_msgSend_70Ptr = _lookup<
+  late final __objc_msgSend_71Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Void Function(
               ffi.Pointer<ObjCObject>,
@@ -2144,19 +2181,19 @@
               NSUInteger,
               NSRange,
               NSRangePointer)>>('objc_msgSend');
-  late final __objc_msgSend_70 = __objc_msgSend_70Ptr.asFunction<
+  late final __objc_msgSend_71 = __objc_msgSend_71Ptr.asFunction<
       void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
           ffi.Pointer<pkg_ffi.Char>, int, NSRange, NSRangePointer)>();
 
   late final ffi.Pointer<ObjCSel> _sel_writeToFile_atomically_1 =
       _registerName1("writeToFile:atomically:");
-  bool _objc_msgSend_71(
+  bool _objc_msgSend_72(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     ffi.Pointer<ObjCObject> path,
     bool useAuxiliaryFile,
   ) {
-    return __objc_msgSend_71(
+    return __objc_msgSend_72(
           obj,
           sel,
           path,
@@ -2165,11 +2202,11 @@
         0;
   }
 
-  late final __objc_msgSend_71Ptr = _lookup<
+  late final __objc_msgSend_72Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Uint8 Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
               ffi.Pointer<ObjCObject>, ffi.Uint8)>>('objc_msgSend');
-  late final __objc_msgSend_71 = __objc_msgSend_71Ptr.asFunction<
+  late final __objc_msgSend_72 = __objc_msgSend_72Ptr.asFunction<
       int Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
           ffi.Pointer<ObjCObject>, int)>();
 
@@ -2186,14 +2223,14 @@
   late final ffi.Pointer<ObjCSel>
       _sel_initWithCStringNoCopy_length_freeWhenDone_1 =
       _registerName1("initWithCStringNoCopy:length:freeWhenDone:");
-  ffi.Pointer<ObjCObject> _objc_msgSend_72(
+  ffi.Pointer<ObjCObject> _objc_msgSend_73(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     ffi.Pointer<pkg_ffi.Char> bytes,
     int length,
     bool freeBuffer,
   ) {
-    return __objc_msgSend_72(
+    return __objc_msgSend_73(
       obj,
       sel,
       bytes,
@@ -2202,7 +2239,7 @@
     );
   }
 
-  late final __objc_msgSend_72Ptr = _lookup<
+  late final __objc_msgSend_73Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Pointer<ObjCObject> Function(
               ffi.Pointer<ObjCObject>,
@@ -2210,7 +2247,7 @@
               ffi.Pointer<pkg_ffi.Char>,
               NSUInteger,
               ffi.Uint8)>>('objc_msgSend');
-  late final __objc_msgSend_72 = __objc_msgSend_72Ptr.asFunction<
+  late final __objc_msgSend_73 = __objc_msgSend_73Ptr.asFunction<
       ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
           ffi.Pointer<ObjCSel>, ffi.Pointer<pkg_ffi.Char>, int, int)>();
 
@@ -2224,41 +2261,41 @@
       _registerName1("stringWithCString:");
   late final ffi.Pointer<ObjCSel> _sel_getCharacters_1 =
       _registerName1("getCharacters:");
-  void _objc_msgSend_73(
+  void _objc_msgSend_74(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     ffi.Pointer<unichar> buffer,
   ) {
-    return __objc_msgSend_73(
+    return __objc_msgSend_74(
       obj,
       sel,
       buffer,
     );
   }
 
-  late final __objc_msgSend_73Ptr = _lookup<
+  late final __objc_msgSend_74Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
               ffi.Pointer<unichar>)>>('objc_msgSend');
-  late final __objc_msgSend_73 = __objc_msgSend_73Ptr.asFunction<
+  late final __objc_msgSend_74 = __objc_msgSend_74Ptr.asFunction<
       void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
           ffi.Pointer<unichar>)>();
 
-  ffi.Pointer<ObjCObject> _objc_msgSend_74(
+  ffi.Pointer<ObjCObject> _objc_msgSend_75(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
   ) {
-    return __objc_msgSend_74(
+    return __objc_msgSend_75(
       obj,
       sel,
     );
   }
 
-  late final __objc_msgSend_74Ptr = _lookup<
+  late final __objc_msgSend_75Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Pointer<ObjCObject> Function(
               ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>>('objc_msgSend');
-  late final __objc_msgSend_74 = __objc_msgSend_74Ptr.asFunction<
+  late final __objc_msgSend_75 = __objc_msgSend_75Ptr.asFunction<
       ffi.Pointer<ObjCObject> Function(
           ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>();
 
@@ -2267,23 +2304,23 @@
   late final ffi.Pointer<ObjCSel> _sel_version1 = _registerName1("version");
   late final ffi.Pointer<ObjCSel> _sel_setVersion_1 =
       _registerName1("setVersion:");
-  void _objc_msgSend_75(
+  void _objc_msgSend_76(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     int aVersion,
   ) {
-    return __objc_msgSend_75(
+    return __objc_msgSend_76(
       obj,
       sel,
       aVersion,
     );
   }
 
-  late final __objc_msgSend_75Ptr = _lookup<
+  late final __objc_msgSend_76Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
               NSInteger)>>('objc_msgSend');
-  late final __objc_msgSend_75 = __objc_msgSend_75Ptr.asFunction<
+  late final __objc_msgSend_76 = __objc_msgSend_76Ptr.asFunction<
       void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, int)>();
 
   late final ffi.Pointer<ObjCSel> _sel_classForCoder1 =
@@ -2299,13 +2336,13 @@
   late final ffi.Pointer<ObjCObject> _class_NSValue1 = _getClass1("NSValue");
   late final ffi.Pointer<ObjCSel> _sel_getValue_size_1 =
       _registerName1("getValue:size:");
-  void _objc_msgSend_76(
+  void _objc_msgSend_77(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     ffi.Pointer<ffi.Void> value,
     int size,
   ) {
-    return __objc_msgSend_76(
+    return __objc_msgSend_77(
       obj,
       sel,
       value,
@@ -2313,45 +2350,18 @@
     );
   }
 
-  late final __objc_msgSend_76Ptr = _lookup<
+  late final __objc_msgSend_77Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
               ffi.Pointer<ffi.Void>, NSUInteger)>>('objc_msgSend');
-  late final __objc_msgSend_76 = __objc_msgSend_76Ptr.asFunction<
+  late final __objc_msgSend_77 = __objc_msgSend_77Ptr.asFunction<
       void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
           ffi.Pointer<ffi.Void>, int)>();
 
   late final ffi.Pointer<ObjCSel> _sel_objCType1 = _registerName1("objCType");
   late final ffi.Pointer<ObjCSel> _sel_initWithBytes_objCType_1 =
       _registerName1("initWithBytes:objCType:");
-  instancetype _objc_msgSend_77(
-    ffi.Pointer<ObjCObject> obj,
-    ffi.Pointer<ObjCSel> sel,
-    ffi.Pointer<ffi.Void> value,
-    ffi.Pointer<pkg_ffi.Char> type,
-  ) {
-    return __objc_msgSend_77(
-      obj,
-      sel,
-      value,
-      type,
-    );
-  }
-
-  late final __objc_msgSend_77Ptr = _lookup<
-      ffi.NativeFunction<
-          instancetype Function(
-              ffi.Pointer<ObjCObject>,
-              ffi.Pointer<ObjCSel>,
-              ffi.Pointer<ffi.Void>,
-              ffi.Pointer<pkg_ffi.Char>)>>('objc_msgSend');
-  late final __objc_msgSend_77 = __objc_msgSend_77Ptr.asFunction<
-      instancetype Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
-          ffi.Pointer<ffi.Void>, ffi.Pointer<pkg_ffi.Char>)>();
-
-  late final ffi.Pointer<ObjCSel> _sel_valueWithBytes_objCType_1 =
-      _registerName1("valueWithBytes:objCType:");
-  ffi.Pointer<ObjCObject> _objc_msgSend_78(
+  instancetype _objc_msgSend_78(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     ffi.Pointer<ffi.Void> value,
@@ -2367,12 +2377,39 @@
 
   late final __objc_msgSend_78Ptr = _lookup<
       ffi.NativeFunction<
-          ffi.Pointer<ObjCObject> Function(
+          instancetype Function(
               ffi.Pointer<ObjCObject>,
               ffi.Pointer<ObjCSel>,
               ffi.Pointer<ffi.Void>,
               ffi.Pointer<pkg_ffi.Char>)>>('objc_msgSend');
   late final __objc_msgSend_78 = __objc_msgSend_78Ptr.asFunction<
+      instancetype Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+          ffi.Pointer<ffi.Void>, ffi.Pointer<pkg_ffi.Char>)>();
+
+  late final ffi.Pointer<ObjCSel> _sel_valueWithBytes_objCType_1 =
+      _registerName1("valueWithBytes:objCType:");
+  ffi.Pointer<ObjCObject> _objc_msgSend_79(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    ffi.Pointer<ffi.Void> value,
+    ffi.Pointer<pkg_ffi.Char> type,
+  ) {
+    return __objc_msgSend_79(
+      obj,
+      sel,
+      value,
+      type,
+    );
+  }
+
+  late final __objc_msgSend_79Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ObjCObject> Function(
+              ffi.Pointer<ObjCObject>,
+              ffi.Pointer<ObjCSel>,
+              ffi.Pointer<ffi.Void>,
+              ffi.Pointer<pkg_ffi.Char>)>>('objc_msgSend');
+  late final __objc_msgSend_79 = __objc_msgSend_79Ptr.asFunction<
       ffi.Pointer<ObjCObject> Function(
           ffi.Pointer<ObjCObject>,
           ffi.Pointer<ObjCSel>,
@@ -2383,23 +2420,23 @@
       _registerName1("value:withObjCType:");
   late final ffi.Pointer<ObjCSel> _sel_valueWithNonretainedObject_1 =
       _registerName1("valueWithNonretainedObject:");
-  ffi.Pointer<ObjCObject> _objc_msgSend_79(
+  ffi.Pointer<ObjCObject> _objc_msgSend_80(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     ffi.Pointer<ObjCObject> anObject,
   ) {
-    return __objc_msgSend_79(
+    return __objc_msgSend_80(
       obj,
       sel,
       anObject,
     );
   }
 
-  late final __objc_msgSend_79Ptr = _lookup<
+  late final __objc_msgSend_80Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
               ffi.Pointer<ObjCSel>, ffi.Pointer<ObjCObject>)>>('objc_msgSend');
-  late final __objc_msgSend_79 = __objc_msgSend_79Ptr.asFunction<
+  late final __objc_msgSend_80 = __objc_msgSend_80Ptr.asFunction<
       ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
           ffi.Pointer<ObjCSel>, ffi.Pointer<ObjCObject>)>();
 
@@ -2407,135 +2444,113 @@
       _registerName1("nonretainedObjectValue");
   late final ffi.Pointer<ObjCSel> _sel_valueWithPointer_1 =
       _registerName1("valueWithPointer:");
-  ffi.Pointer<ObjCObject> _objc_msgSend_80(
+  ffi.Pointer<ObjCObject> _objc_msgSend_81(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     ffi.Pointer<ffi.Void> pointer,
   ) {
-    return __objc_msgSend_80(
+    return __objc_msgSend_81(
       obj,
       sel,
       pointer,
     );
   }
 
-  late final __objc_msgSend_80Ptr = _lookup<
+  late final __objc_msgSend_81Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
               ffi.Pointer<ObjCSel>, ffi.Pointer<ffi.Void>)>>('objc_msgSend');
-  late final __objc_msgSend_80 = __objc_msgSend_80Ptr.asFunction<
+  late final __objc_msgSend_81 = __objc_msgSend_81Ptr.asFunction<
       ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
           ffi.Pointer<ObjCSel>, ffi.Pointer<ffi.Void>)>();
 
   late final ffi.Pointer<ObjCSel> _sel_pointerValue1 =
       _registerName1("pointerValue");
-  ffi.Pointer<ffi.Void> _objc_msgSend_81(
+  ffi.Pointer<ffi.Void> _objc_msgSend_82(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
   ) {
-    return __objc_msgSend_81(
+    return __objc_msgSend_82(
       obj,
       sel,
     );
   }
 
-  late final __objc_msgSend_81Ptr = _lookup<
+  late final __objc_msgSend_82Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Pointer<ffi.Void> Function(
               ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>>('objc_msgSend');
-  late final __objc_msgSend_81 = __objc_msgSend_81Ptr.asFunction<
+  late final __objc_msgSend_82 = __objc_msgSend_82Ptr.asFunction<
       ffi.Pointer<ffi.Void> Function(
           ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>();
 
   late final ffi.Pointer<ObjCSel> _sel_isEqualToValue_1 =
       _registerName1("isEqualToValue:");
   late final ffi.Pointer<ObjCSel> _sel_getValue_1 = _registerName1("getValue:");
-  void _objc_msgSend_82(
+  void _objc_msgSend_83(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     ffi.Pointer<ffi.Void> value,
   ) {
-    return __objc_msgSend_82(
+    return __objc_msgSend_83(
       obj,
       sel,
       value,
     );
   }
 
-  late final __objc_msgSend_82Ptr = _lookup<
+  late final __objc_msgSend_83Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
               ffi.Pointer<ffi.Void>)>>('objc_msgSend');
-  late final __objc_msgSend_82 = __objc_msgSend_82Ptr.asFunction<
+  late final __objc_msgSend_83 = __objc_msgSend_83Ptr.asFunction<
       void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
           ffi.Pointer<ffi.Void>)>();
 
   late final ffi.Pointer<ObjCSel> _sel_valueWithRange_1 =
       _registerName1("valueWithRange:");
-  ffi.Pointer<ObjCObject> _objc_msgSend_83(
+  ffi.Pointer<ObjCObject> _objc_msgSend_84(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     NSRange range,
   ) {
-    return __objc_msgSend_83(
+    return __objc_msgSend_84(
       obj,
       sel,
       range,
     );
   }
 
-  late final __objc_msgSend_83Ptr = _lookup<
+  late final __objc_msgSend_84Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
               ffi.Pointer<ObjCSel>, NSRange)>>('objc_msgSend');
-  late final __objc_msgSend_83 = __objc_msgSend_83Ptr.asFunction<
+  late final __objc_msgSend_84 = __objc_msgSend_84Ptr.asFunction<
       ffi.Pointer<ObjCObject> Function(
           ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, NSRange)>();
 
   late final ffi.Pointer<ObjCSel> _sel_rangeValue1 =
       _registerName1("rangeValue");
-  NSRange _objc_msgSend_84(
+  NSRange _objc_msgSend_85(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
   ) {
-    return __objc_msgSend_84(
-      obj,
-      sel,
-    );
-  }
-
-  late final __objc_msgSend_84Ptr = _lookup<
-      ffi.NativeFunction<
-          NSRange Function(
-              ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>>('objc_msgSend');
-  late final __objc_msgSend_84 = __objc_msgSend_84Ptr.asFunction<
-      NSRange Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>();
-
-  late final ffi.Pointer<ObjCObject> _class_NSNumber1 = _getClass1("NSNumber");
-  late final ffi.Pointer<ObjCSel> _sel_initWithChar_1 =
-      _registerName1("initWithChar:");
-  ffi.Pointer<ObjCObject> _objc_msgSend_85(
-    ffi.Pointer<ObjCObject> obj,
-    ffi.Pointer<ObjCSel> sel,
-    int value,
-  ) {
     return __objc_msgSend_85(
       obj,
       sel,
-      value,
     );
   }
 
   late final __objc_msgSend_85Ptr = _lookup<
       ffi.NativeFunction<
-          ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
-              ffi.Pointer<ObjCSel>, pkg_ffi.Char)>>('objc_msgSend');
+          NSRange Function(
+              ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>>('objc_msgSend');
   late final __objc_msgSend_85 = __objc_msgSend_85Ptr.asFunction<
-      ffi.Pointer<ObjCObject> Function(
-          ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, int)>();
+      NSRange Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>();
 
-  late final ffi.Pointer<ObjCSel> _sel_initWithUnsignedChar_1 =
-      _registerName1("initWithUnsignedChar:");
+  late final ffi.Pointer<ObjCObject> _class_NSNumber1 = _getClass1("NSNumber");
+  late final ffi.Pointer<ObjCSel> _sel_initWithChar_1 =
+      _registerName1("initWithChar:");
   ffi.Pointer<ObjCObject> _objc_msgSend_86(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
@@ -2551,13 +2566,13 @@
   late final __objc_msgSend_86Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
-              ffi.Pointer<ObjCSel>, pkg_ffi.UnsignedChar)>>('objc_msgSend');
+              ffi.Pointer<ObjCSel>, pkg_ffi.Char)>>('objc_msgSend');
   late final __objc_msgSend_86 = __objc_msgSend_86Ptr.asFunction<
       ffi.Pointer<ObjCObject> Function(
           ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, int)>();
 
-  late final ffi.Pointer<ObjCSel> _sel_initWithShort_1 =
-      _registerName1("initWithShort:");
+  late final ffi.Pointer<ObjCSel> _sel_initWithUnsignedChar_1 =
+      _registerName1("initWithUnsignedChar:");
   ffi.Pointer<ObjCObject> _objc_msgSend_87(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
@@ -2573,13 +2588,13 @@
   late final __objc_msgSend_87Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
-              ffi.Pointer<ObjCSel>, pkg_ffi.Short)>>('objc_msgSend');
+              ffi.Pointer<ObjCSel>, pkg_ffi.UnsignedChar)>>('objc_msgSend');
   late final __objc_msgSend_87 = __objc_msgSend_87Ptr.asFunction<
       ffi.Pointer<ObjCObject> Function(
           ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, int)>();
 
-  late final ffi.Pointer<ObjCSel> _sel_initWithUnsignedShort_1 =
-      _registerName1("initWithUnsignedShort:");
+  late final ffi.Pointer<ObjCSel> _sel_initWithShort_1 =
+      _registerName1("initWithShort:");
   ffi.Pointer<ObjCObject> _objc_msgSend_88(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
@@ -2595,13 +2610,13 @@
   late final __objc_msgSend_88Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
-              ffi.Pointer<ObjCSel>, pkg_ffi.UnsignedShort)>>('objc_msgSend');
+              ffi.Pointer<ObjCSel>, pkg_ffi.Short)>>('objc_msgSend');
   late final __objc_msgSend_88 = __objc_msgSend_88Ptr.asFunction<
       ffi.Pointer<ObjCObject> Function(
           ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, int)>();
 
-  late final ffi.Pointer<ObjCSel> _sel_initWithInt_1 =
-      _registerName1("initWithInt:");
+  late final ffi.Pointer<ObjCSel> _sel_initWithUnsignedShort_1 =
+      _registerName1("initWithUnsignedShort:");
   ffi.Pointer<ObjCObject> _objc_msgSend_89(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
@@ -2617,13 +2632,13 @@
   late final __objc_msgSend_89Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
-              ffi.Pointer<ObjCSel>, pkg_ffi.Int)>>('objc_msgSend');
+              ffi.Pointer<ObjCSel>, pkg_ffi.UnsignedShort)>>('objc_msgSend');
   late final __objc_msgSend_89 = __objc_msgSend_89Ptr.asFunction<
       ffi.Pointer<ObjCObject> Function(
           ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, int)>();
 
-  late final ffi.Pointer<ObjCSel> _sel_initWithUnsignedInt_1 =
-      _registerName1("initWithUnsignedInt:");
+  late final ffi.Pointer<ObjCSel> _sel_initWithInt_1 =
+      _registerName1("initWithInt:");
   ffi.Pointer<ObjCObject> _objc_msgSend_90(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
@@ -2639,13 +2654,13 @@
   late final __objc_msgSend_90Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
-              ffi.Pointer<ObjCSel>, pkg_ffi.UnsignedInt)>>('objc_msgSend');
+              ffi.Pointer<ObjCSel>, pkg_ffi.Int)>>('objc_msgSend');
   late final __objc_msgSend_90 = __objc_msgSend_90Ptr.asFunction<
       ffi.Pointer<ObjCObject> Function(
           ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, int)>();
 
-  late final ffi.Pointer<ObjCSel> _sel_initWithLong_1 =
-      _registerName1("initWithLong:");
+  late final ffi.Pointer<ObjCSel> _sel_initWithUnsignedInt_1 =
+      _registerName1("initWithUnsignedInt:");
   ffi.Pointer<ObjCObject> _objc_msgSend_91(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
@@ -2661,13 +2676,13 @@
   late final __objc_msgSend_91Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
-              ffi.Pointer<ObjCSel>, pkg_ffi.Long)>>('objc_msgSend');
+              ffi.Pointer<ObjCSel>, pkg_ffi.UnsignedInt)>>('objc_msgSend');
   late final __objc_msgSend_91 = __objc_msgSend_91Ptr.asFunction<
       ffi.Pointer<ObjCObject> Function(
           ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, int)>();
 
-  late final ffi.Pointer<ObjCSel> _sel_initWithUnsignedLong_1 =
-      _registerName1("initWithUnsignedLong:");
+  late final ffi.Pointer<ObjCSel> _sel_initWithLong_1 =
+      _registerName1("initWithLong:");
   ffi.Pointer<ObjCObject> _objc_msgSend_92(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
@@ -2683,13 +2698,13 @@
   late final __objc_msgSend_92Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
-              ffi.Pointer<ObjCSel>, pkg_ffi.UnsignedLong)>>('objc_msgSend');
+              ffi.Pointer<ObjCSel>, pkg_ffi.Long)>>('objc_msgSend');
   late final __objc_msgSend_92 = __objc_msgSend_92Ptr.asFunction<
       ffi.Pointer<ObjCObject> Function(
           ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, int)>();
 
-  late final ffi.Pointer<ObjCSel> _sel_initWithLongLong_1 =
-      _registerName1("initWithLongLong:");
+  late final ffi.Pointer<ObjCSel> _sel_initWithUnsignedLong_1 =
+      _registerName1("initWithUnsignedLong:");
   ffi.Pointer<ObjCObject> _objc_msgSend_93(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
@@ -2705,13 +2720,13 @@
   late final __objc_msgSend_93Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
-              ffi.Pointer<ObjCSel>, pkg_ffi.LongLong)>>('objc_msgSend');
+              ffi.Pointer<ObjCSel>, pkg_ffi.UnsignedLong)>>('objc_msgSend');
   late final __objc_msgSend_93 = __objc_msgSend_93Ptr.asFunction<
       ffi.Pointer<ObjCObject> Function(
           ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, int)>();
 
-  late final ffi.Pointer<ObjCSel> _sel_initWithUnsignedLongLong_1 =
-      _registerName1("initWithUnsignedLongLong:");
+  late final ffi.Pointer<ObjCSel> _sel_initWithLongLong_1 =
+      _registerName1("initWithLongLong:");
   ffi.Pointer<ObjCObject> _objc_msgSend_94(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
@@ -2727,17 +2742,17 @@
   late final __objc_msgSend_94Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
-              ffi.Pointer<ObjCSel>, pkg_ffi.UnsignedLongLong)>>('objc_msgSend');
+              ffi.Pointer<ObjCSel>, pkg_ffi.LongLong)>>('objc_msgSend');
   late final __objc_msgSend_94 = __objc_msgSend_94Ptr.asFunction<
       ffi.Pointer<ObjCObject> Function(
           ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, int)>();
 
-  late final ffi.Pointer<ObjCSel> _sel_initWithFloat_1 =
-      _registerName1("initWithFloat:");
+  late final ffi.Pointer<ObjCSel> _sel_initWithUnsignedLongLong_1 =
+      _registerName1("initWithUnsignedLongLong:");
   ffi.Pointer<ObjCObject> _objc_msgSend_95(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
-    double value,
+    int value,
   ) {
     return __objc_msgSend_95(
       obj,
@@ -2749,13 +2764,13 @@
   late final __objc_msgSend_95Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
-              ffi.Pointer<ObjCSel>, ffi.Float)>>('objc_msgSend');
+              ffi.Pointer<ObjCSel>, pkg_ffi.UnsignedLongLong)>>('objc_msgSend');
   late final __objc_msgSend_95 = __objc_msgSend_95Ptr.asFunction<
       ffi.Pointer<ObjCObject> Function(
-          ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, double)>();
+          ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, int)>();
 
-  late final ffi.Pointer<ObjCSel> _sel_initWithDouble_1 =
-      _registerName1("initWithDouble:");
+  late final ffi.Pointer<ObjCSel> _sel_initWithFloat_1 =
+      _registerName1("initWithFloat:");
   ffi.Pointer<ObjCObject> _objc_msgSend_96(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
@@ -2771,31 +2786,53 @@
   late final __objc_msgSend_96Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
-              ffi.Pointer<ObjCSel>, ffi.Double)>>('objc_msgSend');
+              ffi.Pointer<ObjCSel>, ffi.Float)>>('objc_msgSend');
   late final __objc_msgSend_96 = __objc_msgSend_96Ptr.asFunction<
       ffi.Pointer<ObjCObject> Function(
           ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, double)>();
 
-  late final ffi.Pointer<ObjCSel> _sel_initWithBool_1 =
-      _registerName1("initWithBool:");
+  late final ffi.Pointer<ObjCSel> _sel_initWithDouble_1 =
+      _registerName1("initWithDouble:");
   ffi.Pointer<ObjCObject> _objc_msgSend_97(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
-    bool value,
+    double value,
   ) {
     return __objc_msgSend_97(
       obj,
       sel,
-      value ? 1 : 0,
+      value,
     );
   }
 
   late final __objc_msgSend_97Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
-              ffi.Pointer<ObjCSel>, ffi.Uint8)>>('objc_msgSend');
+              ffi.Pointer<ObjCSel>, ffi.Double)>>('objc_msgSend');
   late final __objc_msgSend_97 = __objc_msgSend_97Ptr.asFunction<
       ffi.Pointer<ObjCObject> Function(
+          ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, double)>();
+
+  late final ffi.Pointer<ObjCSel> _sel_initWithBool_1 =
+      _registerName1("initWithBool:");
+  ffi.Pointer<ObjCObject> _objc_msgSend_98(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    bool value,
+  ) {
+    return __objc_msgSend_98(
+      obj,
+      sel,
+      value ? 1 : 0,
+    );
+  }
+
+  late final __objc_msgSend_98Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
+              ffi.Pointer<ObjCSel>, ffi.Uint8)>>('objc_msgSend');
+  late final __objc_msgSend_98 = __objc_msgSend_98Ptr.asFunction<
+      ffi.Pointer<ObjCObject> Function(
           ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, int)>();
 
   late final ffi.Pointer<ObjCSel> _sel_initWithInteger_1 =
@@ -2803,25 +2840,6 @@
   late final ffi.Pointer<ObjCSel> _sel_initWithUnsignedInteger_1 =
       _registerName1("initWithUnsignedInteger:");
   late final ffi.Pointer<ObjCSel> _sel_charValue1 = _registerName1("charValue");
-  int _objc_msgSend_98(
-    ffi.Pointer<ObjCObject> obj,
-    ffi.Pointer<ObjCSel> sel,
-  ) {
-    return __objc_msgSend_98(
-      obj,
-      sel,
-    );
-  }
-
-  late final __objc_msgSend_98Ptr = _lookup<
-      ffi.NativeFunction<
-          pkg_ffi.Char Function(
-              ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>>('objc_msgSend');
-  late final __objc_msgSend_98 = __objc_msgSend_98Ptr.asFunction<
-      int Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>();
-
-  late final ffi.Pointer<ObjCSel> _sel_unsignedCharValue1 =
-      _registerName1("unsignedCharValue");
   int _objc_msgSend_99(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
@@ -2834,13 +2852,13 @@
 
   late final __objc_msgSend_99Ptr = _lookup<
       ffi.NativeFunction<
-          pkg_ffi.UnsignedChar Function(
+          pkg_ffi.Char Function(
               ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>>('objc_msgSend');
   late final __objc_msgSend_99 = __objc_msgSend_99Ptr.asFunction<
       int Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>();
 
-  late final ffi.Pointer<ObjCSel> _sel_shortValue1 =
-      _registerName1("shortValue");
+  late final ffi.Pointer<ObjCSel> _sel_unsignedCharValue1 =
+      _registerName1("unsignedCharValue");
   int _objc_msgSend_100(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
@@ -2853,13 +2871,13 @@
 
   late final __objc_msgSend_100Ptr = _lookup<
       ffi.NativeFunction<
-          pkg_ffi.Short Function(
+          pkg_ffi.UnsignedChar Function(
               ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>>('objc_msgSend');
   late final __objc_msgSend_100 = __objc_msgSend_100Ptr.asFunction<
       int Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>();
 
-  late final ffi.Pointer<ObjCSel> _sel_unsignedShortValue1 =
-      _registerName1("unsignedShortValue");
+  late final ffi.Pointer<ObjCSel> _sel_shortValue1 =
+      _registerName1("shortValue");
   int _objc_msgSend_101(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
@@ -2872,13 +2890,13 @@
 
   late final __objc_msgSend_101Ptr = _lookup<
       ffi.NativeFunction<
-          pkg_ffi.UnsignedShort Function(
+          pkg_ffi.Short Function(
               ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>>('objc_msgSend');
   late final __objc_msgSend_101 = __objc_msgSend_101Ptr.asFunction<
       int Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>();
 
-  late final ffi.Pointer<ObjCSel> _sel_unsignedIntValue1 =
-      _registerName1("unsignedIntValue");
+  late final ffi.Pointer<ObjCSel> _sel_unsignedShortValue1 =
+      _registerName1("unsignedShortValue");
   int _objc_msgSend_102(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
@@ -2891,16 +2909,13 @@
 
   late final __objc_msgSend_102Ptr = _lookup<
       ffi.NativeFunction<
-          pkg_ffi.UnsignedInt Function(
+          pkg_ffi.UnsignedShort Function(
               ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>>('objc_msgSend');
   late final __objc_msgSend_102 = __objc_msgSend_102Ptr.asFunction<
       int Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>();
 
-  late final ffi.Pointer<ObjCSel> _sel_longValue1 = _registerName1("longValue");
-  late final ffi.Pointer<ObjCSel> _sel_unsignedLongValue1 =
-      _registerName1("unsignedLongValue");
-  late final ffi.Pointer<ObjCSel> _sel_unsignedLongLongValue1 =
-      _registerName1("unsignedLongLongValue");
+  late final ffi.Pointer<ObjCSel> _sel_unsignedIntValue1 =
+      _registerName1("unsignedIntValue");
   int _objc_msgSend_103(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
@@ -2913,11 +2928,33 @@
 
   late final __objc_msgSend_103Ptr = _lookup<
       ffi.NativeFunction<
-          pkg_ffi.UnsignedLongLong Function(
+          pkg_ffi.UnsignedInt Function(
               ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>>('objc_msgSend');
   late final __objc_msgSend_103 = __objc_msgSend_103Ptr.asFunction<
       int Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>();
 
+  late final ffi.Pointer<ObjCSel> _sel_longValue1 = _registerName1("longValue");
+  late final ffi.Pointer<ObjCSel> _sel_unsignedLongValue1 =
+      _registerName1("unsignedLongValue");
+  late final ffi.Pointer<ObjCSel> _sel_unsignedLongLongValue1 =
+      _registerName1("unsignedLongLongValue");
+  int _objc_msgSend_104(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+  ) {
+    return __objc_msgSend_104(
+      obj,
+      sel,
+    );
+  }
+
+  late final __objc_msgSend_104Ptr = _lookup<
+      ffi.NativeFunction<
+          pkg_ffi.UnsignedLongLong Function(
+              ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>>('objc_msgSend');
+  late final __objc_msgSend_104 = __objc_msgSend_104Ptr.asFunction<
+      int Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>();
+
   late final ffi.Pointer<ObjCSel> _sel_unsignedIntegerValue1 =
       _registerName1("unsignedIntegerValue");
   late final ffi.Pointer<ObjCSel> _sel_stringValue1 =
@@ -2967,21 +3004,21 @@
   late final ffi.Pointer<ObjCSel> _sel_object1 = _registerName1("object");
   late final ffi.Pointer<ObjCSel> _sel_changeType1 =
       _registerName1("changeType");
-  int _objc_msgSend_104(
+  int _objc_msgSend_105(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
   ) {
-    return __objc_msgSend_104(
+    return __objc_msgSend_105(
       obj,
       sel,
     );
   }
 
-  late final __objc_msgSend_104Ptr = _lookup<
+  late final __objc_msgSend_105Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Int32 Function(
               ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>>('objc_msgSend');
-  late final __objc_msgSend_104 = __objc_msgSend_104Ptr.asFunction<
+  late final __objc_msgSend_105 = __objc_msgSend_105Ptr.asFunction<
       int Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>();
 
   late final ffi.Pointer<ObjCSel> _sel_index1 = _registerName1("index");
@@ -2989,14 +3026,14 @@
       _registerName1("associatedIndex");
   late final ffi.Pointer<ObjCSel> _sel_initWithObject_type_index_1 =
       _registerName1("initWithObject:type:index:");
-  instancetype _objc_msgSend_105(
+  instancetype _objc_msgSend_106(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     ffi.Pointer<ObjCObject> anObject,
     int type,
     int index,
   ) {
-    return __objc_msgSend_105(
+    return __objc_msgSend_106(
       obj,
       sel,
       anObject,
@@ -3005,18 +3042,18 @@
     );
   }
 
-  late final __objc_msgSend_105Ptr = _lookup<
+  late final __objc_msgSend_106Ptr = _lookup<
       ffi.NativeFunction<
           instancetype Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
               ffi.Pointer<ObjCObject>, ffi.Int32, NSUInteger)>>('objc_msgSend');
-  late final __objc_msgSend_105 = __objc_msgSend_105Ptr.asFunction<
+  late final __objc_msgSend_106 = __objc_msgSend_106Ptr.asFunction<
       instancetype Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
           ffi.Pointer<ObjCObject>, int, int)>();
 
   late final ffi.Pointer<ObjCSel>
       _sel_initWithObject_type_index_associatedIndex_1 =
       _registerName1("initWithObject:type:index:associatedIndex:");
-  instancetype _objc_msgSend_106(
+  instancetype _objc_msgSend_107(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     ffi.Pointer<ObjCObject> anObject,
@@ -3024,7 +3061,7 @@
     int index,
     int associatedIndex,
   ) {
-    return __objc_msgSend_106(
+    return __objc_msgSend_107(
       obj,
       sel,
       anObject,
@@ -3034,7 +3071,7 @@
     );
   }
 
-  late final __objc_msgSend_106Ptr = _lookup<
+  late final __objc_msgSend_107Ptr = _lookup<
       ffi.NativeFunction<
           instancetype Function(
               ffi.Pointer<ObjCObject>,
@@ -3043,7 +3080,7 @@
               ffi.Int32,
               NSUInteger,
               NSUInteger)>>('objc_msgSend');
-  late final __objc_msgSend_106 = __objc_msgSend_106Ptr.asFunction<
+  late final __objc_msgSend_107 = __objc_msgSend_107Ptr.asFunction<
       instancetype Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
           ffi.Pointer<ObjCObject>, int, int, int)>();
 
@@ -3052,45 +3089,45 @@
   late final ffi.Pointer<ObjCSel> _sel_indexSet1 = _registerName1("indexSet");
   late final ffi.Pointer<ObjCSel> _sel_indexSetWithIndex_1 =
       _registerName1("indexSetWithIndex:");
-  instancetype _objc_msgSend_107(
+  instancetype _objc_msgSend_108(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     int value,
   ) {
-    return __objc_msgSend_107(
+    return __objc_msgSend_108(
       obj,
       sel,
       value,
     );
   }
 
-  late final __objc_msgSend_107Ptr = _lookup<
+  late final __objc_msgSend_108Ptr = _lookup<
       ffi.NativeFunction<
           instancetype Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
               NSUInteger)>>('objc_msgSend');
-  late final __objc_msgSend_107 = __objc_msgSend_107Ptr.asFunction<
+  late final __objc_msgSend_108 = __objc_msgSend_108Ptr.asFunction<
       instancetype Function(
           ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, int)>();
 
   late final ffi.Pointer<ObjCSel> _sel_indexSetWithIndexesInRange_1 =
       _registerName1("indexSetWithIndexesInRange:");
-  instancetype _objc_msgSend_108(
+  instancetype _objc_msgSend_109(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     NSRange range,
   ) {
-    return __objc_msgSend_108(
+    return __objc_msgSend_109(
       obj,
       sel,
       range,
     );
   }
 
-  late final __objc_msgSend_108Ptr = _lookup<
+  late final __objc_msgSend_109Ptr = _lookup<
       ffi.NativeFunction<
           instancetype Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
               NSRange)>>('objc_msgSend');
-  late final __objc_msgSend_108 = __objc_msgSend_108Ptr.asFunction<
+  late final __objc_msgSend_109 = __objc_msgSend_109Ptr.asFunction<
       instancetype Function(
           ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, NSRange)>();
 
@@ -3116,14 +3153,14 @@
       _registerName1("indexLessThanOrEqualToIndex:");
   late final ffi.Pointer<ObjCSel> _sel_getIndexes_maxCount_inIndexRange_1 =
       _registerName1("getIndexes:maxCount:inIndexRange:");
-  int _objc_msgSend_109(
+  int _objc_msgSend_110(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     ffi.Pointer<NSUInteger> indexBuffer,
     int bufferSize,
     NSRangePointer range,
   ) {
-    return __objc_msgSend_109(
+    return __objc_msgSend_110(
       obj,
       sel,
       indexBuffer,
@@ -3132,7 +3169,7 @@
     );
   }
 
-  late final __objc_msgSend_109Ptr = _lookup<
+  late final __objc_msgSend_110Ptr = _lookup<
       ffi.NativeFunction<
           NSUInteger Function(
               ffi.Pointer<ObjCObject>,
@@ -3140,41 +3177,41 @@
               ffi.Pointer<NSUInteger>,
               NSUInteger,
               NSRangePointer)>>('objc_msgSend');
-  late final __objc_msgSend_109 = __objc_msgSend_109Ptr.asFunction<
+  late final __objc_msgSend_110 = __objc_msgSend_110Ptr.asFunction<
       int Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
           ffi.Pointer<NSUInteger>, int, NSRangePointer)>();
 
   late final ffi.Pointer<ObjCSel> _sel_countOfIndexesInRange_1 =
       _registerName1("countOfIndexesInRange:");
-  int _objc_msgSend_110(
+  int _objc_msgSend_111(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     NSRange range,
   ) {
-    return __objc_msgSend_110(
+    return __objc_msgSend_111(
       obj,
       sel,
       range,
     );
   }
 
-  late final __objc_msgSend_110Ptr = _lookup<
+  late final __objc_msgSend_111Ptr = _lookup<
       ffi.NativeFunction<
           NSUInteger Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
               NSRange)>>('objc_msgSend');
-  late final __objc_msgSend_110 = __objc_msgSend_110Ptr.asFunction<
+  late final __objc_msgSend_111 = __objc_msgSend_111Ptr.asFunction<
       int Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, NSRange)>();
 
   late final ffi.Pointer<ObjCSel> _sel_containsIndex_1 =
       _registerName1("containsIndex:");
   late final ffi.Pointer<ObjCSel> _sel_containsIndexesInRange_1 =
       _registerName1("containsIndexesInRange:");
-  bool _objc_msgSend_111(
+  bool _objc_msgSend_112(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     NSRange range,
   ) {
-    return __objc_msgSend_111(
+    return __objc_msgSend_112(
           obj,
           sel,
           range,
@@ -3182,11 +3219,11 @@
         0;
   }
 
-  late final __objc_msgSend_111Ptr = _lookup<
+  late final __objc_msgSend_112Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Uint8 Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
               NSRange)>>('objc_msgSend');
-  late final __objc_msgSend_111 = __objc_msgSend_111Ptr.asFunction<
+  late final __objc_msgSend_112 = __objc_msgSend_112Ptr.asFunction<
       int Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, NSRange)>();
 
   late final ffi.Pointer<ObjCSel> _sel_containsIndexes_1 =
@@ -3195,46 +3232,14 @@
       _registerName1("intersectsIndexesInRange:");
   late final ffi.Pointer<ObjCSel> _sel_enumerateIndexesUsingBlock_1 =
       _registerName1("enumerateIndexesUsingBlock:");
-  late final ffi.Pointer<ObjCSel>
-      _sel_enumerateIndexesWithOptions_usingBlock_1 =
-      _registerName1("enumerateIndexesWithOptions:usingBlock:");
-  void _objc_msgSend_112(
-    ffi.Pointer<ObjCObject> obj,
-    ffi.Pointer<ObjCSel> sel,
-    int opts,
-    ffi.Pointer<ObjCObject> block,
-  ) {
-    return __objc_msgSend_112(
-      obj,
-      sel,
-      opts,
-      block,
-    );
-  }
-
-  late final __objc_msgSend_112Ptr = _lookup<
-      ffi.NativeFunction<
-          ffi.Void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
-              ffi.Int32, ffi.Pointer<ObjCObject>)>>('objc_msgSend');
-  late final __objc_msgSend_112 = __objc_msgSend_112Ptr.asFunction<
-      void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, int,
-          ffi.Pointer<ObjCObject>)>();
-
-  late final ffi.Pointer<ObjCSel>
-      _sel_enumerateIndexesInRange_options_usingBlock_1 =
-      _registerName1("enumerateIndexesInRange:options:usingBlock:");
   void _objc_msgSend_113(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
-    NSRange range,
-    int opts,
-    ffi.Pointer<ObjCObject> block,
+    ffi.Pointer<_ObjCBlock> block,
   ) {
     return __objc_msgSend_113(
       obj,
       sel,
-      range,
-      opts,
       block,
     );
   }
@@ -3242,71 +3247,73 @@
   late final __objc_msgSend_113Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
-              NSRange, ffi.Int32, ffi.Pointer<ObjCObject>)>>('objc_msgSend');
+              ffi.Pointer<_ObjCBlock>)>>('objc_msgSend');
   late final __objc_msgSend_113 = __objc_msgSend_113Ptr.asFunction<
-      void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, NSRange, int,
-          ffi.Pointer<ObjCObject>)>();
+      void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+          ffi.Pointer<_ObjCBlock>)>();
 
-  late final ffi.Pointer<ObjCSel> _sel_indexPassingTest_1 =
-      _registerName1("indexPassingTest:");
-  int _objc_msgSend_114(
+  late final ffi.Pointer<ObjCSel>
+      _sel_enumerateIndexesWithOptions_usingBlock_1 =
+      _registerName1("enumerateIndexesWithOptions:usingBlock:");
+  void _objc_msgSend_114(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
-    ffi.Pointer<ObjCObject> predicate,
+    int opts,
+    ffi.Pointer<_ObjCBlock> block,
   ) {
     return __objc_msgSend_114(
       obj,
       sel,
-      predicate,
+      opts,
+      block,
     );
   }
 
   late final __objc_msgSend_114Ptr = _lookup<
       ffi.NativeFunction<
-          NSUInteger Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
-              ffi.Pointer<ObjCObject>)>>('objc_msgSend');
+          ffi.Void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+              ffi.Int32, ffi.Pointer<_ObjCBlock>)>>('objc_msgSend');
   late final __objc_msgSend_114 = __objc_msgSend_114Ptr.asFunction<
-      int Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
-          ffi.Pointer<ObjCObject>)>();
+      void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, int,
+          ffi.Pointer<_ObjCBlock>)>();
 
-  late final ffi.Pointer<ObjCSel> _sel_indexWithOptions_passingTest_1 =
-      _registerName1("indexWithOptions:passingTest:");
-  int _objc_msgSend_115(
+  late final ffi.Pointer<ObjCSel>
+      _sel_enumerateIndexesInRange_options_usingBlock_1 =
+      _registerName1("enumerateIndexesInRange:options:usingBlock:");
+  void _objc_msgSend_115(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
+    NSRange range,
     int opts,
-    ffi.Pointer<ObjCObject> predicate,
+    ffi.Pointer<_ObjCBlock> block,
   ) {
     return __objc_msgSend_115(
       obj,
       sel,
+      range,
       opts,
-      predicate,
+      block,
     );
   }
 
   late final __objc_msgSend_115Ptr = _lookup<
       ffi.NativeFunction<
-          NSUInteger Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
-              ffi.Int32, ffi.Pointer<ObjCObject>)>>('objc_msgSend');
+          ffi.Void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+              NSRange, ffi.Int32, ffi.Pointer<_ObjCBlock>)>>('objc_msgSend');
   late final __objc_msgSend_115 = __objc_msgSend_115Ptr.asFunction<
-      int Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, int,
-          ffi.Pointer<ObjCObject>)>();
+      void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, NSRange, int,
+          ffi.Pointer<_ObjCBlock>)>();
 
-  late final ffi.Pointer<ObjCSel> _sel_indexInRange_options_passingTest_1 =
-      _registerName1("indexInRange:options:passingTest:");
+  late final ffi.Pointer<ObjCSel> _sel_indexPassingTest_1 =
+      _registerName1("indexPassingTest:");
   int _objc_msgSend_116(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
-    NSRange range,
-    int opts,
-    ffi.Pointer<ObjCObject> predicate,
+    ffi.Pointer<_ObjCBlock> predicate,
   ) {
     return __objc_msgSend_116(
       obj,
       sel,
-      range,
-      opts,
       predicate,
     );
   }
@@ -3314,42 +3321,20 @@
   late final __objc_msgSend_116Ptr = _lookup<
       ffi.NativeFunction<
           NSUInteger Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
-              NSRange, ffi.Int32, ffi.Pointer<ObjCObject>)>>('objc_msgSend');
+              ffi.Pointer<_ObjCBlock>)>>('objc_msgSend');
   late final __objc_msgSend_116 = __objc_msgSend_116Ptr.asFunction<
-      int Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, NSRange, int,
-          ffi.Pointer<ObjCObject>)>();
+      int Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+          ffi.Pointer<_ObjCBlock>)>();
 
-  late final ffi.Pointer<ObjCSel> _sel_indexesPassingTest_1 =
-      _registerName1("indexesPassingTest:");
-  ffi.Pointer<ObjCObject> _objc_msgSend_117(
-    ffi.Pointer<ObjCObject> obj,
-    ffi.Pointer<ObjCSel> sel,
-    ffi.Pointer<ObjCObject> predicate,
-  ) {
-    return __objc_msgSend_117(
-      obj,
-      sel,
-      predicate,
-    );
-  }
-
-  late final __objc_msgSend_117Ptr = _lookup<
-      ffi.NativeFunction<
-          ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
-              ffi.Pointer<ObjCSel>, ffi.Pointer<ObjCObject>)>>('objc_msgSend');
-  late final __objc_msgSend_117 = __objc_msgSend_117Ptr.asFunction<
-      ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
-          ffi.Pointer<ObjCSel>, ffi.Pointer<ObjCObject>)>();
-
-  late final ffi.Pointer<ObjCSel> _sel_indexesWithOptions_passingTest_1 =
-      _registerName1("indexesWithOptions:passingTest:");
-  ffi.Pointer<ObjCObject> _objc_msgSend_118(
+  late final ffi.Pointer<ObjCSel> _sel_indexWithOptions_passingTest_1 =
+      _registerName1("indexWithOptions:passingTest:");
+  int _objc_msgSend_117(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     int opts,
-    ffi.Pointer<ObjCObject> predicate,
+    ffi.Pointer<_ObjCBlock> predicate,
   ) {
-    return __objc_msgSend_118(
+    return __objc_msgSend_117(
       obj,
       sel,
       opts,
@@ -3357,27 +3342,24 @@
     );
   }
 
-  late final __objc_msgSend_118Ptr = _lookup<
+  late final __objc_msgSend_117Ptr = _lookup<
       ffi.NativeFunction<
-          ffi.Pointer<ObjCObject> Function(
-              ffi.Pointer<ObjCObject>,
-              ffi.Pointer<ObjCSel>,
-              ffi.Int32,
-              ffi.Pointer<ObjCObject>)>>('objc_msgSend');
-  late final __objc_msgSend_118 = __objc_msgSend_118Ptr.asFunction<
-      ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
-          ffi.Pointer<ObjCSel>, int, ffi.Pointer<ObjCObject>)>();
+          NSUInteger Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+              ffi.Int32, ffi.Pointer<_ObjCBlock>)>>('objc_msgSend');
+  late final __objc_msgSend_117 = __objc_msgSend_117Ptr.asFunction<
+      int Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, int,
+          ffi.Pointer<_ObjCBlock>)>();
 
-  late final ffi.Pointer<ObjCSel> _sel_indexesInRange_options_passingTest_1 =
-      _registerName1("indexesInRange:options:passingTest:");
-  ffi.Pointer<ObjCObject> _objc_msgSend_119(
+  late final ffi.Pointer<ObjCSel> _sel_indexInRange_options_passingTest_1 =
+      _registerName1("indexInRange:options:passingTest:");
+  int _objc_msgSend_118(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     NSRange range,
     int opts,
-    ffi.Pointer<ObjCObject> predicate,
+    ffi.Pointer<_ObjCBlock> predicate,
   ) {
-    return __objc_msgSend_119(
+    return __objc_msgSend_118(
       obj,
       sel,
       range,
@@ -3386,25 +3368,166 @@
     );
   }
 
+  late final __objc_msgSend_118Ptr = _lookup<
+      ffi.NativeFunction<
+          NSUInteger Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+              NSRange, ffi.Int32, ffi.Pointer<_ObjCBlock>)>>('objc_msgSend');
+  late final __objc_msgSend_118 = __objc_msgSend_118Ptr.asFunction<
+      int Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, NSRange, int,
+          ffi.Pointer<_ObjCBlock>)>();
+
+  late final ffi.Pointer<ObjCSel> _sel_indexesPassingTest_1 =
+      _registerName1("indexesPassingTest:");
+  ffi.Pointer<ObjCObject> _objc_msgSend_119(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    ffi.Pointer<_ObjCBlock> predicate,
+  ) {
+    return __objc_msgSend_119(
+      obj,
+      sel,
+      predicate,
+    );
+  }
+
   late final __objc_msgSend_119Ptr = _lookup<
       ffi.NativeFunction<
+          ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
+              ffi.Pointer<ObjCSel>, ffi.Pointer<_ObjCBlock>)>>('objc_msgSend');
+  late final __objc_msgSend_119 = __objc_msgSend_119Ptr.asFunction<
+      ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
+          ffi.Pointer<ObjCSel>, ffi.Pointer<_ObjCBlock>)>();
+
+  late final ffi.Pointer<ObjCSel> _sel_indexesWithOptions_passingTest_1 =
+      _registerName1("indexesWithOptions:passingTest:");
+  ffi.Pointer<ObjCObject> _objc_msgSend_120(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    int opts,
+    ffi.Pointer<_ObjCBlock> predicate,
+  ) {
+    return __objc_msgSend_120(
+      obj,
+      sel,
+      opts,
+      predicate,
+    );
+  }
+
+  late final __objc_msgSend_120Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ObjCObject> Function(
+              ffi.Pointer<ObjCObject>,
+              ffi.Pointer<ObjCSel>,
+              ffi.Int32,
+              ffi.Pointer<_ObjCBlock>)>>('objc_msgSend');
+  late final __objc_msgSend_120 = __objc_msgSend_120Ptr.asFunction<
+      ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
+          ffi.Pointer<ObjCSel>, int, ffi.Pointer<_ObjCBlock>)>();
+
+  late final ffi.Pointer<ObjCSel> _sel_indexesInRange_options_passingTest_1 =
+      _registerName1("indexesInRange:options:passingTest:");
+  ffi.Pointer<ObjCObject> _objc_msgSend_121(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    NSRange range,
+    int opts,
+    ffi.Pointer<_ObjCBlock> predicate,
+  ) {
+    return __objc_msgSend_121(
+      obj,
+      sel,
+      range,
+      opts,
+      predicate,
+    );
+  }
+
+  late final __objc_msgSend_121Ptr = _lookup<
+      ffi.NativeFunction<
           ffi.Pointer<ObjCObject> Function(
               ffi.Pointer<ObjCObject>,
               ffi.Pointer<ObjCSel>,
               NSRange,
               ffi.Int32,
-              ffi.Pointer<ObjCObject>)>>('objc_msgSend');
-  late final __objc_msgSend_119 = __objc_msgSend_119Ptr.asFunction<
+              ffi.Pointer<_ObjCBlock>)>>('objc_msgSend');
+  late final __objc_msgSend_121 = __objc_msgSend_121Ptr.asFunction<
       ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
-          ffi.Pointer<ObjCSel>, NSRange, int, ffi.Pointer<ObjCObject>)>();
+          ffi.Pointer<ObjCSel>, NSRange, int, ffi.Pointer<_ObjCBlock>)>();
 
   late final ffi.Pointer<ObjCSel> _sel_enumerateRangesUsingBlock_1 =
       _registerName1("enumerateRangesUsingBlock:");
+  void _objc_msgSend_122(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    ffi.Pointer<_ObjCBlock> block,
+  ) {
+    return __objc_msgSend_122(
+      obj,
+      sel,
+      block,
+    );
+  }
+
+  late final __objc_msgSend_122Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+              ffi.Pointer<_ObjCBlock>)>>('objc_msgSend');
+  late final __objc_msgSend_122 = __objc_msgSend_122Ptr.asFunction<
+      void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+          ffi.Pointer<_ObjCBlock>)>();
+
   late final ffi.Pointer<ObjCSel> _sel_enumerateRangesWithOptions_usingBlock_1 =
       _registerName1("enumerateRangesWithOptions:usingBlock:");
+  void _objc_msgSend_123(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    int opts,
+    ffi.Pointer<_ObjCBlock> block,
+  ) {
+    return __objc_msgSend_123(
+      obj,
+      sel,
+      opts,
+      block,
+    );
+  }
+
+  late final __objc_msgSend_123Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+              ffi.Int32, ffi.Pointer<_ObjCBlock>)>>('objc_msgSend');
+  late final __objc_msgSend_123 = __objc_msgSend_123Ptr.asFunction<
+      void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, int,
+          ffi.Pointer<_ObjCBlock>)>();
+
   late final ffi.Pointer<ObjCSel>
       _sel_enumerateRangesInRange_options_usingBlock_1 =
       _registerName1("enumerateRangesInRange:options:usingBlock:");
+  void _objc_msgSend_124(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    NSRange range,
+    int opts,
+    ffi.Pointer<_ObjCBlock> block,
+  ) {
+    return __objc_msgSend_124(
+      obj,
+      sel,
+      range,
+      opts,
+      block,
+    );
+  }
+
+  late final __objc_msgSend_124Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+              NSRange, ffi.Int32, ffi.Pointer<_ObjCBlock>)>>('objc_msgSend');
+  late final __objc_msgSend_124 = __objc_msgSend_124Ptr.asFunction<
+      void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, NSRange, int,
+          ffi.Pointer<_ObjCBlock>)>();
+
   late final ffi.Pointer<ObjCObject> _class_NSMutableIndexSet1 =
       _getClass1("NSMutableIndexSet");
   late final ffi.Pointer<ObjCSel> _sel_addIndexes_1 =
@@ -3418,36 +3541,36 @@
       _registerName1("removeIndex:");
   late final ffi.Pointer<ObjCSel> _sel_addIndexesInRange_1 =
       _registerName1("addIndexesInRange:");
-  void _objc_msgSend_120(
+  void _objc_msgSend_125(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     NSRange range,
   ) {
-    return __objc_msgSend_120(
+    return __objc_msgSend_125(
       obj,
       sel,
       range,
     );
   }
 
-  late final __objc_msgSend_120Ptr = _lookup<
+  late final __objc_msgSend_125Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
               NSRange)>>('objc_msgSend');
-  late final __objc_msgSend_120 = __objc_msgSend_120Ptr.asFunction<
+  late final __objc_msgSend_125 = __objc_msgSend_125Ptr.asFunction<
       void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, NSRange)>();
 
   late final ffi.Pointer<ObjCSel> _sel_removeIndexesInRange_1 =
       _registerName1("removeIndexesInRange:");
   late final ffi.Pointer<ObjCSel> _sel_shiftIndexesStartingAtIndex_by_1 =
       _registerName1("shiftIndexesStartingAtIndex:by:");
-  void _objc_msgSend_121(
+  void _objc_msgSend_126(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     int index,
     int delta,
   ) {
-    return __objc_msgSend_121(
+    return __objc_msgSend_126(
       obj,
       sel,
       index,
@@ -3455,11 +3578,11 @@
     );
   }
 
-  late final __objc_msgSend_121Ptr = _lookup<
+  late final __objc_msgSend_126Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
               NSUInteger, NSInteger)>>('objc_msgSend');
-  late final __objc_msgSend_121 = __objc_msgSend_121Ptr.asFunction<
+  late final __objc_msgSend_126 = __objc_msgSend_126Ptr.asFunction<
       void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, int, int)>();
 
   late final ffi.Pointer<ObjCObject> _class_NSOrderedCollectionDifference1 =
@@ -3470,7 +3593,7 @@
       _sel_initWithInsertIndexes_insertedObjects_removeIndexes_removedObjects_additionalChanges_1 =
       _registerName1(
           "initWithInsertIndexes:insertedObjects:removeIndexes:removedObjects:additionalChanges:");
-  instancetype _objc_msgSend_122(
+  instancetype _objc_msgSend_127(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     ffi.Pointer<ObjCObject> inserts,
@@ -3479,7 +3602,7 @@
     ffi.Pointer<ObjCObject> removedObjects,
     ffi.Pointer<ObjCObject> changes,
   ) {
-    return __objc_msgSend_122(
+    return __objc_msgSend_127(
       obj,
       sel,
       inserts,
@@ -3490,7 +3613,7 @@
     );
   }
 
-  late final __objc_msgSend_122Ptr = _lookup<
+  late final __objc_msgSend_127Ptr = _lookup<
       ffi.NativeFunction<
           instancetype Function(
               ffi.Pointer<ObjCObject>,
@@ -3500,7 +3623,7 @@
               ffi.Pointer<ObjCObject>,
               ffi.Pointer<ObjCObject>,
               ffi.Pointer<ObjCObject>)>>('objc_msgSend');
-  late final __objc_msgSend_122 = __objc_msgSend_122Ptr.asFunction<
+  late final __objc_msgSend_127 = __objc_msgSend_127Ptr.asFunction<
       instancetype Function(
           ffi.Pointer<ObjCObject>,
           ffi.Pointer<ObjCSel>,
@@ -3514,7 +3637,7 @@
       _sel_initWithInsertIndexes_insertedObjects_removeIndexes_removedObjects_1 =
       _registerName1(
           "initWithInsertIndexes:insertedObjects:removeIndexes:removedObjects:");
-  instancetype _objc_msgSend_123(
+  instancetype _objc_msgSend_128(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     ffi.Pointer<ObjCObject> inserts,
@@ -3522,7 +3645,7 @@
     ffi.Pointer<ObjCObject> removes,
     ffi.Pointer<ObjCObject> removedObjects,
   ) {
-    return __objc_msgSend_123(
+    return __objc_msgSend_128(
       obj,
       sel,
       inserts,
@@ -3532,7 +3655,7 @@
     );
   }
 
-  late final __objc_msgSend_123Ptr = _lookup<
+  late final __objc_msgSend_128Ptr = _lookup<
       ffi.NativeFunction<
           instancetype Function(
               ffi.Pointer<ObjCObject>,
@@ -3541,7 +3664,7 @@
               ffi.Pointer<ObjCObject>,
               ffi.Pointer<ObjCObject>,
               ffi.Pointer<ObjCObject>)>>('objc_msgSend');
-  late final __objc_msgSend_123 = __objc_msgSend_123Ptr.asFunction<
+  late final __objc_msgSend_128 = __objc_msgSend_128Ptr.asFunction<
       instancetype Function(
           ffi.Pointer<ObjCObject>,
           ffi.Pointer<ObjCSel>,
@@ -3562,13 +3685,13 @@
       _registerName1("objectAtIndex:");
   late final ffi.Pointer<ObjCSel> _sel_initWithObjects_count_1 =
       _registerName1("initWithObjects:count:");
-  instancetype _objc_msgSend_124(
+  instancetype _objc_msgSend_129(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     ffi.Pointer<ffi.Pointer<ObjCObject>> objects,
     int cnt,
   ) {
-    return __objc_msgSend_124(
+    return __objc_msgSend_129(
       obj,
       sel,
       objects,
@@ -3576,14 +3699,14 @@
     );
   }
 
-  late final __objc_msgSend_124Ptr = _lookup<
+  late final __objc_msgSend_129Ptr = _lookup<
       ffi.NativeFunction<
           instancetype Function(
               ffi.Pointer<ObjCObject>,
               ffi.Pointer<ObjCSel>,
               ffi.Pointer<ffi.Pointer<ObjCObject>>,
               NSUInteger)>>('objc_msgSend');
-  late final __objc_msgSend_124 = __objc_msgSend_124Ptr.asFunction<
+  late final __objc_msgSend_129 = __objc_msgSend_129Ptr.asFunction<
       instancetype Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
           ffi.Pointer<ffi.Pointer<ObjCObject>>, int)>();
 
@@ -3593,13 +3716,13 @@
       _registerName1("containsObject:");
   late final ffi.Pointer<ObjCSel> _sel_descriptionWithLocale_indent_1 =
       _registerName1("descriptionWithLocale:indent:");
-  ffi.Pointer<ObjCObject> _objc_msgSend_125(
+  ffi.Pointer<ObjCObject> _objc_msgSend_130(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     ffi.Pointer<ObjCObject> locale,
     int level,
   ) {
-    return __objc_msgSend_125(
+    return __objc_msgSend_130(
       obj,
       sel,
       locale,
@@ -3607,14 +3730,14 @@
     );
   }
 
-  late final __objc_msgSend_125Ptr = _lookup<
+  late final __objc_msgSend_130Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Pointer<ObjCObject> Function(
               ffi.Pointer<ObjCObject>,
               ffi.Pointer<ObjCSel>,
               ffi.Pointer<ObjCObject>,
               NSUInteger)>>('objc_msgSend');
-  late final __objc_msgSend_125 = __objc_msgSend_125Ptr.asFunction<
+  late final __objc_msgSend_130 = __objc_msgSend_130Ptr.asFunction<
       ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
           ffi.Pointer<ObjCSel>, ffi.Pointer<ObjCObject>, int)>();
 
@@ -3622,13 +3745,13 @@
       _registerName1("firstObjectCommonWithArray:");
   late final ffi.Pointer<ObjCSel> _sel_getObjects_range_1 =
       _registerName1("getObjects:range:");
-  void _objc_msgSend_126(
+  void _objc_msgSend_131(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     ffi.Pointer<ffi.Pointer<ObjCObject>> objects,
     NSRange range,
   ) {
-    return __objc_msgSend_126(
+    return __objc_msgSend_131(
       obj,
       sel,
       objects,
@@ -3636,25 +3759,45 @@
     );
   }
 
-  late final __objc_msgSend_126Ptr = _lookup<
+  late final __objc_msgSend_131Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
               ffi.Pointer<ffi.Pointer<ObjCObject>>, NSRange)>>('objc_msgSend');
-  late final __objc_msgSend_126 = __objc_msgSend_126Ptr.asFunction<
+  late final __objc_msgSend_131 = __objc_msgSend_131Ptr.asFunction<
       void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
           ffi.Pointer<ffi.Pointer<ObjCObject>>, NSRange)>();
 
   late final ffi.Pointer<ObjCSel> _sel_indexOfObject_1 =
       _registerName1("indexOfObject:");
+  int _objc_msgSend_132(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    ffi.Pointer<ObjCObject> anObject,
+  ) {
+    return __objc_msgSend_132(
+      obj,
+      sel,
+      anObject,
+    );
+  }
+
+  late final __objc_msgSend_132Ptr = _lookup<
+      ffi.NativeFunction<
+          NSUInteger Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+              ffi.Pointer<ObjCObject>)>>('objc_msgSend');
+  late final __objc_msgSend_132 = __objc_msgSend_132Ptr.asFunction<
+      int Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+          ffi.Pointer<ObjCObject>)>();
+
   late final ffi.Pointer<ObjCSel> _sel_indexOfObject_inRange_1 =
       _registerName1("indexOfObject:inRange:");
-  int _objc_msgSend_127(
+  int _objc_msgSend_133(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     ffi.Pointer<ObjCObject> anObject,
     NSRange range,
   ) {
-    return __objc_msgSend_127(
+    return __objc_msgSend_133(
       obj,
       sel,
       anObject,
@@ -3662,11 +3805,11 @@
     );
   }
 
-  late final __objc_msgSend_127Ptr = _lookup<
+  late final __objc_msgSend_133Ptr = _lookup<
       ffi.NativeFunction<
           NSUInteger Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
               ffi.Pointer<ObjCObject>, NSRange)>>('objc_msgSend');
-  late final __objc_msgSend_127 = __objc_msgSend_127Ptr.asFunction<
+  late final __objc_msgSend_133 = __objc_msgSend_133Ptr.asFunction<
       int Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
           ffi.Pointer<ObjCObject>, NSRange)>();
 
@@ -3684,13 +3827,13 @@
       _registerName1("sortedArrayHint");
   late final ffi.Pointer<ObjCSel> _sel_writeToURL_error_1 =
       _registerName1("writeToURL:error:");
-  bool _objc_msgSend_128(
+  bool _objc_msgSend_134(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     ffi.Pointer<ObjCObject> url,
     ffi.Pointer<ffi.Pointer<ObjCObject>> error,
   ) {
-    return __objc_msgSend_128(
+    return __objc_msgSend_134(
           obj,
           sel,
           url,
@@ -3699,14 +3842,14 @@
         0;
   }
 
-  late final __objc_msgSend_128Ptr = _lookup<
+  late final __objc_msgSend_134Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Uint8 Function(
               ffi.Pointer<ObjCObject>,
               ffi.Pointer<ObjCSel>,
               ffi.Pointer<ObjCObject>,
               ffi.Pointer<ffi.Pointer<ObjCObject>>)>>('objc_msgSend');
-  late final __objc_msgSend_128 = __objc_msgSend_128Ptr.asFunction<
+  late final __objc_msgSend_134 = __objc_msgSend_134Ptr.asFunction<
       int Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
           ffi.Pointer<ObjCObject>, ffi.Pointer<ffi.Pointer<ObjCObject>>)>();
 
@@ -3714,13 +3857,13 @@
       _registerName1("makeObjectsPerformSelector:");
   late final ffi.Pointer<ObjCSel> _sel_makeObjectsPerformSelector_withObject_1 =
       _registerName1("makeObjectsPerformSelector:withObject:");
-  void _objc_msgSend_129(
+  void _objc_msgSend_135(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     ffi.Pointer<ObjCSel> aSelector,
     ffi.Pointer<ObjCObject> argument,
   ) {
-    return __objc_msgSend_129(
+    return __objc_msgSend_135(
       obj,
       sel,
       aSelector,
@@ -3728,11 +3871,11 @@
     );
   }
 
-  late final __objc_msgSend_129Ptr = _lookup<
+  late final __objc_msgSend_135Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
               ffi.Pointer<ObjCSel>, ffi.Pointer<ObjCObject>)>>('objc_msgSend');
-  late final __objc_msgSend_129 = __objc_msgSend_129Ptr.asFunction<
+  late final __objc_msgSend_135 = __objc_msgSend_135Ptr.asFunction<
       void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
           ffi.Pointer<ObjCSel>, ffi.Pointer<ObjCObject>)>();
 
@@ -3740,20 +3883,62 @@
       _registerName1("objectAtIndexedSubscript:");
   late final ffi.Pointer<ObjCSel> _sel_enumerateObjectsUsingBlock_1 =
       _registerName1("enumerateObjectsUsingBlock:");
+  void _objc_msgSend_136(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    ffi.Pointer<_ObjCBlock> block,
+  ) {
+    return __objc_msgSend_136(
+      obj,
+      sel,
+      block,
+    );
+  }
+
+  late final __objc_msgSend_136Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+              ffi.Pointer<_ObjCBlock>)>>('objc_msgSend');
+  late final __objc_msgSend_136 = __objc_msgSend_136Ptr.asFunction<
+      void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+          ffi.Pointer<_ObjCBlock>)>();
+
   late final ffi.Pointer<ObjCSel>
       _sel_enumerateObjectsWithOptions_usingBlock_1 =
       _registerName1("enumerateObjectsWithOptions:usingBlock:");
+  void _objc_msgSend_137(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    int opts,
+    ffi.Pointer<_ObjCBlock> block,
+  ) {
+    return __objc_msgSend_137(
+      obj,
+      sel,
+      opts,
+      block,
+    );
+  }
+
+  late final __objc_msgSend_137Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+              ffi.Int32, ffi.Pointer<_ObjCBlock>)>>('objc_msgSend');
+  late final __objc_msgSend_137 = __objc_msgSend_137Ptr.asFunction<
+      void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, int,
+          ffi.Pointer<_ObjCBlock>)>();
+
   late final ffi.Pointer<ObjCSel>
       _sel_enumerateObjectsAtIndexes_options_usingBlock_1 =
       _registerName1("enumerateObjectsAtIndexes:options:usingBlock:");
-  void _objc_msgSend_130(
+  void _objc_msgSend_138(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     ffi.Pointer<ObjCObject> s,
     int opts,
-    ffi.Pointer<ObjCObject> block,
+    ffi.Pointer<_ObjCBlock> block,
   ) {
-    return __objc_msgSend_130(
+    return __objc_msgSend_138(
       obj,
       sel,
       s,
@@ -3762,33 +3947,75 @@
     );
   }
 
-  late final __objc_msgSend_130Ptr = _lookup<
+  late final __objc_msgSend_138Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Void Function(
               ffi.Pointer<ObjCObject>,
               ffi.Pointer<ObjCSel>,
               ffi.Pointer<ObjCObject>,
               ffi.Int32,
-              ffi.Pointer<ObjCObject>)>>('objc_msgSend');
-  late final __objc_msgSend_130 = __objc_msgSend_130Ptr.asFunction<
+              ffi.Pointer<_ObjCBlock>)>>('objc_msgSend');
+  late final __objc_msgSend_138 = __objc_msgSend_138Ptr.asFunction<
       void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
-          ffi.Pointer<ObjCObject>, int, ffi.Pointer<ObjCObject>)>();
+          ffi.Pointer<ObjCObject>, int, ffi.Pointer<_ObjCBlock>)>();
 
   late final ffi.Pointer<ObjCSel> _sel_indexOfObjectPassingTest_1 =
       _registerName1("indexOfObjectPassingTest:");
+  int _objc_msgSend_139(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    ffi.Pointer<_ObjCBlock> predicate,
+  ) {
+    return __objc_msgSend_139(
+      obj,
+      sel,
+      predicate,
+    );
+  }
+
+  late final __objc_msgSend_139Ptr = _lookup<
+      ffi.NativeFunction<
+          NSUInteger Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+              ffi.Pointer<_ObjCBlock>)>>('objc_msgSend');
+  late final __objc_msgSend_139 = __objc_msgSend_139Ptr.asFunction<
+      int Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+          ffi.Pointer<_ObjCBlock>)>();
+
   late final ffi.Pointer<ObjCSel> _sel_indexOfObjectWithOptions_passingTest_1 =
       _registerName1("indexOfObjectWithOptions:passingTest:");
+  int _objc_msgSend_140(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    int opts,
+    ffi.Pointer<_ObjCBlock> predicate,
+  ) {
+    return __objc_msgSend_140(
+      obj,
+      sel,
+      opts,
+      predicate,
+    );
+  }
+
+  late final __objc_msgSend_140Ptr = _lookup<
+      ffi.NativeFunction<
+          NSUInteger Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+              ffi.Int32, ffi.Pointer<_ObjCBlock>)>>('objc_msgSend');
+  late final __objc_msgSend_140 = __objc_msgSend_140Ptr.asFunction<
+      int Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, int,
+          ffi.Pointer<_ObjCBlock>)>();
+
   late final ffi.Pointer<ObjCSel>
       _sel_indexOfObjectAtIndexes_options_passingTest_1 =
       _registerName1("indexOfObjectAtIndexes:options:passingTest:");
-  int _objc_msgSend_131(
+  int _objc_msgSend_141(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     ffi.Pointer<ObjCObject> s,
     int opts,
-    ffi.Pointer<ObjCObject> predicate,
+    ffi.Pointer<_ObjCBlock> predicate,
   ) {
-    return __objc_msgSend_131(
+    return __objc_msgSend_141(
       obj,
       sel,
       s,
@@ -3797,34 +4024,79 @@
     );
   }
 
-  late final __objc_msgSend_131Ptr = _lookup<
+  late final __objc_msgSend_141Ptr = _lookup<
       ffi.NativeFunction<
           NSUInteger Function(
               ffi.Pointer<ObjCObject>,
               ffi.Pointer<ObjCSel>,
               ffi.Pointer<ObjCObject>,
               ffi.Int32,
-              ffi.Pointer<ObjCObject>)>>('objc_msgSend');
-  late final __objc_msgSend_131 = __objc_msgSend_131Ptr.asFunction<
+              ffi.Pointer<_ObjCBlock>)>>('objc_msgSend');
+  late final __objc_msgSend_141 = __objc_msgSend_141Ptr.asFunction<
       int Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
-          ffi.Pointer<ObjCObject>, int, ffi.Pointer<ObjCObject>)>();
+          ffi.Pointer<ObjCObject>, int, ffi.Pointer<_ObjCBlock>)>();
 
   late final ffi.Pointer<ObjCSel> _sel_indexesOfObjectsPassingTest_1 =
       _registerName1("indexesOfObjectsPassingTest:");
+  ffi.Pointer<ObjCObject> _objc_msgSend_142(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    ffi.Pointer<_ObjCBlock> predicate,
+  ) {
+    return __objc_msgSend_142(
+      obj,
+      sel,
+      predicate,
+    );
+  }
+
+  late final __objc_msgSend_142Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
+              ffi.Pointer<ObjCSel>, ffi.Pointer<_ObjCBlock>)>>('objc_msgSend');
+  late final __objc_msgSend_142 = __objc_msgSend_142Ptr.asFunction<
+      ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
+          ffi.Pointer<ObjCSel>, ffi.Pointer<_ObjCBlock>)>();
+
   late final ffi.Pointer<ObjCSel>
       _sel_indexesOfObjectsWithOptions_passingTest_1 =
       _registerName1("indexesOfObjectsWithOptions:passingTest:");
+  ffi.Pointer<ObjCObject> _objc_msgSend_143(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    int opts,
+    ffi.Pointer<_ObjCBlock> predicate,
+  ) {
+    return __objc_msgSend_143(
+      obj,
+      sel,
+      opts,
+      predicate,
+    );
+  }
+
+  late final __objc_msgSend_143Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ObjCObject> Function(
+              ffi.Pointer<ObjCObject>,
+              ffi.Pointer<ObjCSel>,
+              ffi.Int32,
+              ffi.Pointer<_ObjCBlock>)>>('objc_msgSend');
+  late final __objc_msgSend_143 = __objc_msgSend_143Ptr.asFunction<
+      ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
+          ffi.Pointer<ObjCSel>, int, ffi.Pointer<_ObjCBlock>)>();
+
   late final ffi.Pointer<ObjCSel>
       _sel_indexesOfObjectsAtIndexes_options_passingTest_1 =
       _registerName1("indexesOfObjectsAtIndexes:options:passingTest:");
-  ffi.Pointer<ObjCObject> _objc_msgSend_132(
+  ffi.Pointer<ObjCObject> _objc_msgSend_144(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     ffi.Pointer<ObjCObject> s,
     int opts,
-    ffi.Pointer<ObjCObject> predicate,
+    ffi.Pointer<_ObjCBlock> predicate,
   ) {
-    return __objc_msgSend_132(
+    return __objc_msgSend_144(
       obj,
       sel,
       s,
@@ -3833,26 +4105,26 @@
     );
   }
 
-  late final __objc_msgSend_132Ptr = _lookup<
+  late final __objc_msgSend_144Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Pointer<ObjCObject> Function(
               ffi.Pointer<ObjCObject>,
               ffi.Pointer<ObjCSel>,
               ffi.Pointer<ObjCObject>,
               ffi.Int32,
-              ffi.Pointer<ObjCObject>)>>('objc_msgSend');
-  late final __objc_msgSend_132 = __objc_msgSend_132Ptr.asFunction<
+              ffi.Pointer<_ObjCBlock>)>>('objc_msgSend');
+  late final __objc_msgSend_144 = __objc_msgSend_144Ptr.asFunction<
       ffi.Pointer<ObjCObject> Function(
           ffi.Pointer<ObjCObject>,
           ffi.Pointer<ObjCSel>,
           ffi.Pointer<ObjCObject>,
           int,
-          ffi.Pointer<ObjCObject>)>();
+          ffi.Pointer<_ObjCBlock>)>();
 
   late final ffi.Pointer<ObjCSel>
       _sel_indexOfObject_inSortedRange_options_usingComparator_1 =
       _registerName1("indexOfObject:inSortedRange:options:usingComparator:");
-  int _objc_msgSend_133(
+  int _objc_msgSend_145(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     ffi.Pointer<ObjCObject> obj1,
@@ -3860,7 +4132,7 @@
     int opts,
     NSComparator cmp,
   ) {
-    return __objc_msgSend_133(
+    return __objc_msgSend_145(
       obj,
       sel,
       obj1,
@@ -3870,7 +4142,7 @@
     );
   }
 
-  late final __objc_msgSend_133Ptr = _lookup<
+  late final __objc_msgSend_145Ptr = _lookup<
       ffi.NativeFunction<
           NSUInteger Function(
               ffi.Pointer<ObjCObject>,
@@ -3879,7 +4151,7 @@
               NSRange,
               ffi.Int32,
               NSComparator)>>('objc_msgSend');
-  late final __objc_msgSend_133 = __objc_msgSend_133Ptr.asFunction<
+  late final __objc_msgSend_145 = __objc_msgSend_145Ptr.asFunction<
       int Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
           ffi.Pointer<ObjCObject>, NSRange, int, NSComparator)>();
 
@@ -3898,13 +4170,13 @@
       _registerName1("initWithArray:");
   late final ffi.Pointer<ObjCSel> _sel_initWithArray_copyItems_1 =
       _registerName1("initWithArray:copyItems:");
-  instancetype _objc_msgSend_134(
+  instancetype _objc_msgSend_146(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     ffi.Pointer<ObjCObject> array,
     bool flag,
   ) {
-    return __objc_msgSend_134(
+    return __objc_msgSend_146(
       obj,
       sel,
       array,
@@ -3912,33 +4184,33 @@
     );
   }
 
-  late final __objc_msgSend_134Ptr = _lookup<
+  late final __objc_msgSend_146Ptr = _lookup<
       ffi.NativeFunction<
           instancetype Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
               ffi.Pointer<ObjCObject>, ffi.Uint8)>>('objc_msgSend');
-  late final __objc_msgSend_134 = __objc_msgSend_134Ptr.asFunction<
+  late final __objc_msgSend_146 = __objc_msgSend_146Ptr.asFunction<
       instancetype Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
           ffi.Pointer<ObjCObject>, int)>();
 
   late final ffi.Pointer<ObjCSel> _sel_getObjects_1 =
       _registerName1("getObjects:");
-  void _objc_msgSend_135(
+  void _objc_msgSend_147(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     ffi.Pointer<ffi.Pointer<ObjCObject>> objects,
   ) {
-    return __objc_msgSend_135(
+    return __objc_msgSend_147(
       obj,
       sel,
       objects,
     );
   }
 
-  late final __objc_msgSend_135Ptr = _lookup<
+  late final __objc_msgSend_147Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
               ffi.Pointer<ffi.Pointer<ObjCObject>>)>>('objc_msgSend');
-  late final __objc_msgSend_135 = __objc_msgSend_135Ptr.asFunction<
+  late final __objc_msgSend_147 = __objc_msgSend_147Ptr.asFunction<
       void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
           ffi.Pointer<ffi.Pointer<ObjCObject>>)>();
 
@@ -3948,13 +4220,13 @@
       _registerName1("addObject:");
   late final ffi.Pointer<ObjCSel> _sel_insertObject_atIndex_1 =
       _registerName1("insertObject:atIndex:");
-  void _objc_msgSend_136(
+  void _objc_msgSend_148(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     ffi.Pointer<ObjCObject> anObject,
     int index,
   ) {
-    return __objc_msgSend_136(
+    return __objc_msgSend_148(
       obj,
       sel,
       anObject,
@@ -3962,11 +4234,11 @@
     );
   }
 
-  late final __objc_msgSend_136Ptr = _lookup<
+  late final __objc_msgSend_148Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
               ffi.Pointer<ObjCObject>, NSUInteger)>>('objc_msgSend');
-  late final __objc_msgSend_136 = __objc_msgSend_136Ptr.asFunction<
+  late final __objc_msgSend_148 = __objc_msgSend_148Ptr.asFunction<
       void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
           ffi.Pointer<ObjCObject>, int)>();
 
@@ -3976,13 +4248,13 @@
       _registerName1("removeObjectAtIndex:");
   late final ffi.Pointer<ObjCSel> _sel_replaceObjectAtIndex_withObject_1 =
       _registerName1("replaceObjectAtIndex:withObject:");
-  void _objc_msgSend_137(
+  void _objc_msgSend_149(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     int index,
     ffi.Pointer<ObjCObject> anObject,
   ) {
-    return __objc_msgSend_137(
+    return __objc_msgSend_149(
       obj,
       sel,
       index,
@@ -3990,11 +4262,11 @@
     );
   }
 
-  late final __objc_msgSend_137Ptr = _lookup<
+  late final __objc_msgSend_149Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
               NSUInteger, ffi.Pointer<ObjCObject>)>>('objc_msgSend');
-  late final __objc_msgSend_137 = __objc_msgSend_137Ptr.asFunction<
+  late final __objc_msgSend_149 = __objc_msgSend_149Ptr.asFunction<
       void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, int,
           ffi.Pointer<ObjCObject>)>();
 
@@ -4005,13 +4277,13 @@
   late final ffi.Pointer<ObjCSel>
       _sel_exchangeObjectAtIndex_withObjectAtIndex_1 =
       _registerName1("exchangeObjectAtIndex:withObjectAtIndex:");
-  void _objc_msgSend_138(
+  void _objc_msgSend_150(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     int idx1,
     int idx2,
   ) {
-    return __objc_msgSend_138(
+    return __objc_msgSend_150(
       obj,
       sel,
       idx1,
@@ -4019,24 +4291,24 @@
     );
   }
 
-  late final __objc_msgSend_138Ptr = _lookup<
+  late final __objc_msgSend_150Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
               NSUInteger, NSUInteger)>>('objc_msgSend');
-  late final __objc_msgSend_138 = __objc_msgSend_138Ptr.asFunction<
+  late final __objc_msgSend_150 = __objc_msgSend_150Ptr.asFunction<
       void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, int, int)>();
 
   late final ffi.Pointer<ObjCSel> _sel_removeAllObjects1 =
       _registerName1("removeAllObjects");
   late final ffi.Pointer<ObjCSel> _sel_removeObject_inRange_1 =
       _registerName1("removeObject:inRange:");
-  void _objc_msgSend_139(
+  void _objc_msgSend_151(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     ffi.Pointer<ObjCObject> anObject,
     NSRange range,
   ) {
-    return __objc_msgSend_139(
+    return __objc_msgSend_151(
       obj,
       sel,
       anObject,
@@ -4044,11 +4316,11 @@
     );
   }
 
-  late final __objc_msgSend_139Ptr = _lookup<
+  late final __objc_msgSend_151Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
               ffi.Pointer<ObjCObject>, NSRange)>>('objc_msgSend');
-  late final __objc_msgSend_139 = __objc_msgSend_139Ptr.asFunction<
+  late final __objc_msgSend_151 = __objc_msgSend_151Ptr.asFunction<
       void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
           ffi.Pointer<ObjCObject>, NSRange)>();
 
@@ -4060,13 +4332,13 @@
       _registerName1("removeObjectIdenticalTo:");
   late final ffi.Pointer<ObjCSel> _sel_removeObjectsFromIndices_numIndices_1 =
       _registerName1("removeObjectsFromIndices:numIndices:");
-  void _objc_msgSend_140(
+  void _objc_msgSend_152(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     ffi.Pointer<NSUInteger> indices,
     int cnt,
   ) {
-    return __objc_msgSend_140(
+    return __objc_msgSend_152(
       obj,
       sel,
       indices,
@@ -4074,11 +4346,11 @@
     );
   }
 
-  late final __objc_msgSend_140Ptr = _lookup<
+  late final __objc_msgSend_152Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
               ffi.Pointer<NSUInteger>, NSUInteger)>>('objc_msgSend');
-  late final __objc_msgSend_140 = __objc_msgSend_140Ptr.asFunction<
+  late final __objc_msgSend_152 = __objc_msgSend_152Ptr.asFunction<
       void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
           ffi.Pointer<NSUInteger>, int)>();
 
@@ -4089,14 +4361,14 @@
   late final ffi.Pointer<ObjCSel>
       _sel_replaceObjectsInRange_withObjectsFromArray_range_1 =
       _registerName1("replaceObjectsInRange:withObjectsFromArray:range:");
-  void _objc_msgSend_141(
+  void _objc_msgSend_153(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     NSRange range,
     ffi.Pointer<ObjCObject> otherArray,
     NSRange otherRange,
   ) {
-    return __objc_msgSend_141(
+    return __objc_msgSend_153(
       obj,
       sel,
       range,
@@ -4105,24 +4377,24 @@
     );
   }
 
-  late final __objc_msgSend_141Ptr = _lookup<
+  late final __objc_msgSend_153Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
               NSRange, ffi.Pointer<ObjCObject>, NSRange)>>('objc_msgSend');
-  late final __objc_msgSend_141 = __objc_msgSend_141Ptr.asFunction<
+  late final __objc_msgSend_153 = __objc_msgSend_153Ptr.asFunction<
       void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, NSRange,
           ffi.Pointer<ObjCObject>, NSRange)>();
 
   late final ffi.Pointer<ObjCSel>
       _sel_replaceObjectsInRange_withObjectsFromArray_1 =
       _registerName1("replaceObjectsInRange:withObjectsFromArray:");
-  void _objc_msgSend_142(
+  void _objc_msgSend_154(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     NSRange range,
     ffi.Pointer<ObjCObject> otherArray,
   ) {
-    return __objc_msgSend_142(
+    return __objc_msgSend_154(
       obj,
       sel,
       range,
@@ -4130,18 +4402,18 @@
     );
   }
 
-  late final __objc_msgSend_142Ptr = _lookup<
+  late final __objc_msgSend_154Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
               NSRange, ffi.Pointer<ObjCObject>)>>('objc_msgSend');
-  late final __objc_msgSend_142 = __objc_msgSend_142Ptr.asFunction<
+  late final __objc_msgSend_154 = __objc_msgSend_154Ptr.asFunction<
       void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, NSRange,
           ffi.Pointer<ObjCObject>)>();
 
   late final ffi.Pointer<ObjCSel> _sel_setArray_1 = _registerName1("setArray:");
   late final ffi.Pointer<ObjCSel> _sel_sortUsingFunction_context_1 =
       _registerName1("sortUsingFunction:context:");
-  void _objc_msgSend_143(
+  void _objc_msgSend_155(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     ffi.Pointer<
@@ -4151,7 +4423,7 @@
         compare,
     ffi.Pointer<ffi.Void> context,
   ) {
-    return __objc_msgSend_143(
+    return __objc_msgSend_155(
       obj,
       sel,
       compare,
@@ -4159,7 +4431,7 @@
     );
   }
 
-  late final __objc_msgSend_143Ptr = _lookup<
+  late final __objc_msgSend_155Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Void Function(
               ffi.Pointer<ObjCObject>,
@@ -4169,7 +4441,7 @@
                       NSInteger Function(ffi.Pointer<ObjCObject>,
                           ffi.Pointer<ObjCObject>, ffi.Pointer<ffi.Void>)>>,
               ffi.Pointer<ffi.Void>)>>('objc_msgSend');
-  late final __objc_msgSend_143 = __objc_msgSend_143Ptr.asFunction<
+  late final __objc_msgSend_155 = __objc_msgSend_155Ptr.asFunction<
       void Function(
           ffi.Pointer<ObjCObject>,
           ffi.Pointer<ObjCSel>,
@@ -4183,13 +4455,13 @@
       _registerName1("sortUsingSelector:");
   late final ffi.Pointer<ObjCSel> _sel_insertObjects_atIndexes_1 =
       _registerName1("insertObjects:atIndexes:");
-  void _objc_msgSend_144(
+  void _objc_msgSend_156(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     ffi.Pointer<ObjCObject> objects,
     ffi.Pointer<ObjCObject> indexes,
   ) {
-    return __objc_msgSend_144(
+    return __objc_msgSend_156(
       obj,
       sel,
       objects,
@@ -4197,14 +4469,14 @@
     );
   }
 
-  late final __objc_msgSend_144Ptr = _lookup<
+  late final __objc_msgSend_156Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Void Function(
               ffi.Pointer<ObjCObject>,
               ffi.Pointer<ObjCSel>,
               ffi.Pointer<ObjCObject>,
               ffi.Pointer<ObjCObject>)>>('objc_msgSend');
-  late final __objc_msgSend_144 = __objc_msgSend_144Ptr.asFunction<
+  late final __objc_msgSend_156 = __objc_msgSend_156Ptr.asFunction<
       void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
           ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCObject>)>();
 
@@ -4216,15 +4488,35 @@
       _registerName1("setObject:atIndexedSubscript:");
   late final ffi.Pointer<ObjCSel> _sel_sortUsingComparator_1 =
       _registerName1("sortUsingComparator:");
+  void _objc_msgSend_157(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    NSComparator cmptr,
+  ) {
+    return __objc_msgSend_157(
+      obj,
+      sel,
+      cmptr,
+    );
+  }
+
+  late final __objc_msgSend_157Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+              NSComparator)>>('objc_msgSend');
+  late final __objc_msgSend_157 = __objc_msgSend_157Ptr.asFunction<
+      void Function(
+          ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, NSComparator)>();
+
   late final ffi.Pointer<ObjCSel> _sel_sortWithOptions_usingComparator_1 =
       _registerName1("sortWithOptions:usingComparator:");
-  void _objc_msgSend_145(
+  void _objc_msgSend_158(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     int opts,
     NSComparator cmptr,
   ) {
-    return __objc_msgSend_145(
+    return __objc_msgSend_158(
       obj,
       sel,
       opts,
@@ -4232,11 +4524,11 @@
     );
   }
 
-  late final __objc_msgSend_145Ptr = _lookup<
+  late final __objc_msgSend_158Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
               ffi.Int32, NSComparator)>>('objc_msgSend');
-  late final __objc_msgSend_145 = __objc_msgSend_145Ptr.asFunction<
+  late final __objc_msgSend_158 = __objc_msgSend_158Ptr.asFunction<
       void Function(
           ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, int, NSComparator)>();
 
@@ -4250,14 +4542,14 @@
       _sel_registerDataRepresentationForTypeIdentifier_visibility_loadHandler_1 =
       _registerName1(
           "registerDataRepresentationForTypeIdentifier:visibility:loadHandler:");
-  void _objc_msgSend_146(
+  void _objc_msgSend_159(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     ffi.Pointer<ObjCObject> typeIdentifier,
     int visibility,
-    ffi.Pointer<ObjCObject> loadHandler,
+    ffi.Pointer<_ObjCBlock> loadHandler,
   ) {
-    return __objc_msgSend_146(
+    return __objc_msgSend_159(
       obj,
       sel,
       typeIdentifier,
@@ -4266,31 +4558,31 @@
     );
   }
 
-  late final __objc_msgSend_146Ptr = _lookup<
+  late final __objc_msgSend_159Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Void Function(
               ffi.Pointer<ObjCObject>,
               ffi.Pointer<ObjCSel>,
               ffi.Pointer<ObjCObject>,
               ffi.Int32,
-              ffi.Pointer<ObjCObject>)>>('objc_msgSend');
-  late final __objc_msgSend_146 = __objc_msgSend_146Ptr.asFunction<
+              ffi.Pointer<_ObjCBlock>)>>('objc_msgSend');
+  late final __objc_msgSend_159 = __objc_msgSend_159Ptr.asFunction<
       void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
-          ffi.Pointer<ObjCObject>, int, ffi.Pointer<ObjCObject>)>();
+          ffi.Pointer<ObjCObject>, int, ffi.Pointer<_ObjCBlock>)>();
 
   late final ffi.Pointer<ObjCSel>
       _sel_registerFileRepresentationForTypeIdentifier_fileOptions_visibility_loadHandler_1 =
       _registerName1(
           "registerFileRepresentationForTypeIdentifier:fileOptions:visibility:loadHandler:");
-  void _objc_msgSend_147(
+  void _objc_msgSend_160(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     ffi.Pointer<ObjCObject> typeIdentifier,
     int fileOptions,
     int visibility,
-    ffi.Pointer<ObjCObject> loadHandler,
+    ffi.Pointer<_ObjCBlock> loadHandler,
   ) {
-    return __objc_msgSend_147(
+    return __objc_msgSend_160(
       obj,
       sel,
       typeIdentifier,
@@ -4300,7 +4592,7 @@
     );
   }
 
-  late final __objc_msgSend_147Ptr = _lookup<
+  late final __objc_msgSend_160Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Void Function(
               ffi.Pointer<ObjCObject>,
@@ -4308,10 +4600,10 @@
               ffi.Pointer<ObjCObject>,
               ffi.Int32,
               ffi.Int32,
-              ffi.Pointer<ObjCObject>)>>('objc_msgSend');
-  late final __objc_msgSend_147 = __objc_msgSend_147Ptr.asFunction<
+              ffi.Pointer<_ObjCBlock>)>>('objc_msgSend');
+  late final __objc_msgSend_160 = __objc_msgSend_160Ptr.asFunction<
       void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
-          ffi.Pointer<ObjCObject>, int, int, ffi.Pointer<ObjCObject>)>();
+          ffi.Pointer<ObjCObject>, int, int, ffi.Pointer<_ObjCBlock>)>();
 
   late final ffi.Pointer<ObjCSel> _sel_registeredTypeIdentifiers1 =
       _registerName1("registeredTypeIdentifiers");
@@ -4321,13 +4613,13 @@
       _sel_hasRepresentationConformingToTypeIdentifier_fileOptions_1 =
       _registerName1(
           "hasRepresentationConformingToTypeIdentifier:fileOptions:");
-  bool _objc_msgSend_148(
+  bool _objc_msgSend_161(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     ffi.Pointer<ObjCObject> typeIdentifier,
     int fileOptions,
   ) {
-    return __objc_msgSend_148(
+    return __objc_msgSend_161(
           obj,
           sel,
           typeIdentifier,
@@ -4336,11 +4628,11 @@
         0;
   }
 
-  late final __objc_msgSend_148Ptr = _lookup<
+  late final __objc_msgSend_161Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Uint8 Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
               ffi.Pointer<ObjCObject>, ffi.Int32)>>('objc_msgSend');
-  late final __objc_msgSend_148 = __objc_msgSend_148Ptr.asFunction<
+  late final __objc_msgSend_161 = __objc_msgSend_161Ptr.asFunction<
       int Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
           ffi.Pointer<ObjCObject>, int)>();
 
@@ -4350,13 +4642,13 @@
       _sel_loadDataRepresentationForTypeIdentifier_completionHandler_1 =
       _registerName1(
           "loadDataRepresentationForTypeIdentifier:completionHandler:");
-  ffi.Pointer<ObjCObject> _objc_msgSend_149(
+  ffi.Pointer<ObjCObject> _objc_msgSend_162(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     ffi.Pointer<ObjCObject> typeIdentifier,
-    ffi.Pointer<ObjCObject> completionHandler,
+    ffi.Pointer<_ObjCBlock> completionHandler,
   ) {
-    return __objc_msgSend_149(
+    return __objc_msgSend_162(
       obj,
       sel,
       typeIdentifier,
@@ -4364,19 +4656,19 @@
     );
   }
 
-  late final __objc_msgSend_149Ptr = _lookup<
+  late final __objc_msgSend_162Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Pointer<ObjCObject> Function(
               ffi.Pointer<ObjCObject>,
               ffi.Pointer<ObjCSel>,
               ffi.Pointer<ObjCObject>,
-              ffi.Pointer<ObjCObject>)>>('objc_msgSend');
-  late final __objc_msgSend_149 = __objc_msgSend_149Ptr.asFunction<
+              ffi.Pointer<_ObjCBlock>)>>('objc_msgSend');
+  late final __objc_msgSend_162 = __objc_msgSend_162Ptr.asFunction<
       ffi.Pointer<ObjCObject> Function(
           ffi.Pointer<ObjCObject>,
           ffi.Pointer<ObjCSel>,
           ffi.Pointer<ObjCObject>,
-          ffi.Pointer<ObjCObject>)>();
+          ffi.Pointer<_ObjCBlock>)>();
 
   late final ffi.Pointer<ObjCSel>
       _sel_loadFileRepresentationForTypeIdentifier_completionHandler_1 =
@@ -4386,6 +4678,34 @@
       _sel_loadInPlaceFileRepresentationForTypeIdentifier_completionHandler_1 =
       _registerName1(
           "loadInPlaceFileRepresentationForTypeIdentifier:completionHandler:");
+  ffi.Pointer<ObjCObject> _objc_msgSend_163(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    ffi.Pointer<ObjCObject> typeIdentifier,
+    ffi.Pointer<_ObjCBlock> completionHandler,
+  ) {
+    return __objc_msgSend_163(
+      obj,
+      sel,
+      typeIdentifier,
+      completionHandler,
+    );
+  }
+
+  late final __objc_msgSend_163Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ObjCObject> Function(
+              ffi.Pointer<ObjCObject>,
+              ffi.Pointer<ObjCSel>,
+              ffi.Pointer<ObjCObject>,
+              ffi.Pointer<_ObjCBlock>)>>('objc_msgSend');
+  late final __objc_msgSend_163 = __objc_msgSend_163Ptr.asFunction<
+      ffi.Pointer<ObjCObject> Function(
+          ffi.Pointer<ObjCObject>,
+          ffi.Pointer<ObjCSel>,
+          ffi.Pointer<ObjCObject>,
+          ffi.Pointer<_ObjCBlock>)>();
+
   late final ffi.Pointer<ObjCSel> _sel_suggestedName1 =
       _registerName1("suggestedName");
   late final ffi.Pointer<ObjCSel> _sel_setSuggestedName_1 =
@@ -4394,13 +4714,13 @@
       _registerName1("initWithObject:");
   late final ffi.Pointer<ObjCSel> _sel_registerObject_visibility_1 =
       _registerName1("registerObject:visibility:");
-  void _objc_msgSend_150(
+  void _objc_msgSend_164(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     ffi.Pointer<ObjCObject> object,
     int visibility,
   ) {
-    return __objc_msgSend_150(
+    return __objc_msgSend_164(
       obj,
       sel,
       object,
@@ -4408,11 +4728,11 @@
     );
   }
 
-  late final __objc_msgSend_150Ptr = _lookup<
+  late final __objc_msgSend_164Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
               ffi.Pointer<ObjCObject>, ffi.Int32)>>('objc_msgSend');
-  late final __objc_msgSend_150 = __objc_msgSend_150Ptr.asFunction<
+  late final __objc_msgSend_164 = __objc_msgSend_164Ptr.asFunction<
       void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
           ffi.Pointer<ObjCObject>, int)>();
 
@@ -4428,17 +4748,42 @@
   late final ffi.Pointer<ObjCSel>
       _sel_registerItemForTypeIdentifier_loadHandler_1 =
       _registerName1("registerItemForTypeIdentifier:loadHandler:");
+  void _objc_msgSend_165(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    ffi.Pointer<ObjCObject> typeIdentifier,
+    NSItemProviderLoadHandler loadHandler,
+  ) {
+    return __objc_msgSend_165(
+      obj,
+      sel,
+      typeIdentifier,
+      loadHandler,
+    );
+  }
+
+  late final __objc_msgSend_165Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Void Function(
+              ffi.Pointer<ObjCObject>,
+              ffi.Pointer<ObjCSel>,
+              ffi.Pointer<ObjCObject>,
+              NSItemProviderLoadHandler)>>('objc_msgSend');
+  late final __objc_msgSend_165 = __objc_msgSend_165Ptr.asFunction<
+      void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+          ffi.Pointer<ObjCObject>, NSItemProviderLoadHandler)>();
+
   late final ffi.Pointer<ObjCSel>
       _sel_loadItemForTypeIdentifier_options_completionHandler_1 =
       _registerName1("loadItemForTypeIdentifier:options:completionHandler:");
-  void _objc_msgSend_151(
+  void _objc_msgSend_166(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     ffi.Pointer<ObjCObject> typeIdentifier,
     ffi.Pointer<ObjCObject> options,
     NSItemProviderCompletionHandler completionHandler,
   ) {
-    return __objc_msgSend_151(
+    return __objc_msgSend_166(
       obj,
       sel,
       typeIdentifier,
@@ -4447,7 +4792,7 @@
     );
   }
 
-  late final __objc_msgSend_151Ptr = _lookup<
+  late final __objc_msgSend_166Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Void Function(
               ffi.Pointer<ObjCObject>,
@@ -4455,7 +4800,7 @@
               ffi.Pointer<ObjCObject>,
               ffi.Pointer<ObjCObject>,
               NSItemProviderCompletionHandler)>>('objc_msgSend');
-  late final __objc_msgSend_151 = __objc_msgSend_151Ptr.asFunction<
+  late final __objc_msgSend_166 = __objc_msgSend_166Ptr.asFunction<
       void Function(
           ffi.Pointer<ObjCObject>,
           ffi.Pointer<ObjCSel>,
@@ -4465,11 +4810,74 @@
 
   late final ffi.Pointer<ObjCSel> _sel_previewImageHandler1 =
       _registerName1("previewImageHandler");
+  NSItemProviderLoadHandler _objc_msgSend_167(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+  ) {
+    return __objc_msgSend_167(
+      obj,
+      sel,
+    );
+  }
+
+  late final __objc_msgSend_167Ptr = _lookup<
+      ffi.NativeFunction<
+          NSItemProviderLoadHandler Function(
+              ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>>('objc_msgSend');
+  late final __objc_msgSend_167 = __objc_msgSend_167Ptr.asFunction<
+      NSItemProviderLoadHandler Function(
+          ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>();
+
   late final ffi.Pointer<ObjCSel> _sel_setPreviewImageHandler_1 =
       _registerName1("setPreviewImageHandler:");
+  void _objc_msgSend_168(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    NSItemProviderLoadHandler value,
+  ) {
+    return __objc_msgSend_168(
+      obj,
+      sel,
+      value,
+    );
+  }
+
+  late final __objc_msgSend_168Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+              NSItemProviderLoadHandler)>>('objc_msgSend');
+  late final __objc_msgSend_168 = __objc_msgSend_168Ptr.asFunction<
+      void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+          NSItemProviderLoadHandler)>();
+
   late final ffi.Pointer<ObjCSel>
       _sel_loadPreviewImageWithOptions_completionHandler_1 =
       _registerName1("loadPreviewImageWithOptions:completionHandler:");
+  void _objc_msgSend_169(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    ffi.Pointer<ObjCObject> options,
+    NSItemProviderCompletionHandler completionHandler,
+  ) {
+    return __objc_msgSend_169(
+      obj,
+      sel,
+      options,
+      completionHandler,
+    );
+  }
+
+  late final __objc_msgSend_169Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Void Function(
+              ffi.Pointer<ObjCObject>,
+              ffi.Pointer<ObjCSel>,
+              ffi.Pointer<ObjCObject>,
+              NSItemProviderCompletionHandler)>>('objc_msgSend');
+  late final __objc_msgSend_169 = __objc_msgSend_169Ptr.asFunction<
+      void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+          ffi.Pointer<ObjCObject>, NSItemProviderCompletionHandler)>();
+
   late final ffi.Pointer<ffi.Pointer<ObjCObject>>
       _NSItemProviderPreferredImageSizeKey =
       _lookup<ffi.Pointer<ObjCObject>>('NSItemProviderPreferredImageSizeKey');
@@ -4767,7 +5175,7 @@
   late final ffi.Pointer<ObjCSel>
       _sel_replaceOccurrencesOfString_withString_options_range_1 =
       _registerName1("replaceOccurrencesOfString:withString:options:range:");
-  int _objc_msgSend_152(
+  int _objc_msgSend_170(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     ffi.Pointer<ObjCObject> target,
@@ -4775,7 +5183,7 @@
     int options,
     NSRange searchRange,
   ) {
-    return __objc_msgSend_152(
+    return __objc_msgSend_170(
       obj,
       sel,
       target,
@@ -4785,7 +5193,7 @@
     );
   }
 
-  late final __objc_msgSend_152Ptr = _lookup<
+  late final __objc_msgSend_170Ptr = _lookup<
       ffi.NativeFunction<
           NSUInteger Function(
               ffi.Pointer<ObjCObject>,
@@ -4794,14 +5202,14 @@
               ffi.Pointer<ObjCObject>,
               ffi.Int32,
               NSRange)>>('objc_msgSend');
-  late final __objc_msgSend_152 = __objc_msgSend_152Ptr.asFunction<
+  late final __objc_msgSend_170 = __objc_msgSend_170Ptr.asFunction<
       int Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
           ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCObject>, int, NSRange)>();
 
   late final ffi.Pointer<ObjCSel>
       _sel_applyTransform_reverse_range_updatedRange_1 =
       _registerName1("applyTransform:reverse:range:updatedRange:");
-  bool _objc_msgSend_153(
+  bool _objc_msgSend_171(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     NSStringTransform transform,
@@ -4809,7 +5217,7 @@
     NSRange range,
     NSRangePointer resultingRange,
   ) {
-    return __objc_msgSend_153(
+    return __objc_msgSend_171(
           obj,
           sel,
           transform,
@@ -4820,7 +5228,7 @@
         0;
   }
 
-  late final __objc_msgSend_153Ptr = _lookup<
+  late final __objc_msgSend_171Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Uint8 Function(
               ffi.Pointer<ObjCObject>,
@@ -4829,27 +5237,27 @@
               ffi.Uint8,
               NSRange,
               NSRangePointer)>>('objc_msgSend');
-  late final __objc_msgSend_153 = __objc_msgSend_153Ptr.asFunction<
+  late final __objc_msgSend_171 = __objc_msgSend_171Ptr.asFunction<
       int Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
           NSStringTransform, int, NSRange, NSRangePointer)>();
 
-  ffi.Pointer<ObjCObject> _objc_msgSend_154(
+  ffi.Pointer<ObjCObject> _objc_msgSend_172(
     ffi.Pointer<ObjCObject> obj,
     ffi.Pointer<ObjCSel> sel,
     int capacity,
   ) {
-    return __objc_msgSend_154(
+    return __objc_msgSend_172(
       obj,
       sel,
       capacity,
     );
   }
 
-  late final __objc_msgSend_154Ptr = _lookup<
+  late final __objc_msgSend_172Ptr = _lookup<
       ffi.NativeFunction<
           ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
               ffi.Pointer<ObjCSel>, NSUInteger)>>('objc_msgSend');
-  late final __objc_msgSend_154 = __objc_msgSend_154Ptr.asFunction<
+  late final __objc_msgSend_172 = __objc_msgSend_172Ptr.asFunction<
       ffi.Pointer<ObjCObject> Function(
           ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, int)>();
 
@@ -5160,12 +5568,12 @@
 
   static NSString description(StringTestObjCLibrary _lib) {
     final _ret =
-        _lib._objc_msgSend_74(_lib._class_NSObject1, _lib._sel_description1);
+        _lib._objc_msgSend_75(_lib._class_NSObject1, _lib._sel_description1);
     return NSString._(_ret, _lib);
   }
 
   static NSString debugDescription(StringTestObjCLibrary _lib) {
-    final _ret = _lib._objc_msgSend_74(
+    final _ret = _lib._objc_msgSend_75(
         _lib._class_NSObject1, _lib._sel_debugDescription1);
     return NSString._(_ret, _lib);
   }
@@ -5175,7 +5583,7 @@
   }
 
   static void setVersion(StringTestObjCLibrary _lib, int aVersion) {
-    _lib._objc_msgSend_75(
+    _lib._objc_msgSend_76(
         _lib._class_NSObject1, _lib._sel_setVersion_1, aVersion);
   }
 
@@ -5571,21 +5979,22 @@
   }
 
   void enumerateSubstringsInRange_options_usingBlock(
-      NSRange range, int opts, NSObject block) {
+      NSRange range, int opts, ObjCBlock block) {
     _lib._objc_msgSend_35(
         _id,
         _lib._sel_enumerateSubstringsInRange_options_usingBlock_1,
         range,
         opts,
-        block._id);
+        block._impl);
   }
 
-  void enumerateLinesUsingBlock(NSObject block) {
-    _lib._objc_msgSend_8(_id, _lib._sel_enumerateLinesUsingBlock_1, block._id);
+  void enumerateLinesUsingBlock(ObjCBlock1 block) {
+    _lib._objc_msgSend_36(
+        _id, _lib._sel_enumerateLinesUsingBlock_1, block._impl);
   }
 
   ffi.Pointer<pkg_ffi.Char> get UTF8String {
-    return _lib._objc_msgSend_36(_id, _lib._sel_UTF8String1);
+    return _lib._objc_msgSend_37(_id, _lib._sel_UTF8String1);
   }
 
   int get fastestEncoding {
@@ -5597,29 +6006,29 @@
   }
 
   NSData dataUsingEncoding_allowLossyConversion(int encoding, bool lossy) {
-    final _ret = _lib._objc_msgSend_37(_id,
+    final _ret = _lib._objc_msgSend_38(_id,
         _lib._sel_dataUsingEncoding_allowLossyConversion_1, encoding, lossy);
     return NSData._(_ret, _lib);
   }
 
   NSData dataUsingEncoding(int encoding) {
     final _ret =
-        _lib._objc_msgSend_38(_id, _lib._sel_dataUsingEncoding_1, encoding);
+        _lib._objc_msgSend_39(_id, _lib._sel_dataUsingEncoding_1, encoding);
     return NSData._(_ret, _lib);
   }
 
   bool canBeConvertedToEncoding(int encoding) {
-    return _lib._objc_msgSend_39(
+    return _lib._objc_msgSend_40(
         _id, _lib._sel_canBeConvertedToEncoding_1, encoding);
   }
 
   void cStringUsingEncoding(int encoding) {
-    _lib._objc_msgSend_40(_id, _lib._sel_cStringUsingEncoding_1, encoding);
+    _lib._objc_msgSend_41(_id, _lib._sel_cStringUsingEncoding_1, encoding);
   }
 
   bool getCString_maxLength_encoding(
       ffi.Pointer<pkg_ffi.Char> buffer, int maxBufferCount, int encoding) {
-    return _lib._objc_msgSend_41(_id, _lib._sel_getCString_maxLength_encoding_1,
+    return _lib._objc_msgSend_42(_id, _lib._sel_getCString_maxLength_encoding_1,
         buffer, maxBufferCount, encoding);
   }
 
@@ -5631,7 +6040,7 @@
       int options,
       NSRange range,
       NSRangePointer leftover) {
-    return _lib._objc_msgSend_42(
+    return _lib._objc_msgSend_43(
         _id,
         _lib._sel_getBytes_maxLength_usedLength_encoding_options_range_remainingRange_1,
         buffer,
@@ -5644,18 +6053,18 @@
   }
 
   int maximumLengthOfBytesUsingEncoding(int enc) {
-    return _lib._objc_msgSend_43(
+    return _lib._objc_msgSend_44(
         _id, _lib._sel_maximumLengthOfBytesUsingEncoding_1, enc);
   }
 
   int lengthOfBytesUsingEncoding(int enc) {
-    return _lib._objc_msgSend_43(
+    return _lib._objc_msgSend_44(
         _id, _lib._sel_lengthOfBytesUsingEncoding_1, enc);
   }
 
   static ffi.Pointer<NSStringEncoding> getAvailableStringEncodings(
       StringTestObjCLibrary _lib) {
-    return _lib._objc_msgSend_44(
+    return _lib._objc_msgSend_45(
         _lib._class_NSString1, _lib._sel_availableStringEncodings1);
   }
 
@@ -5703,7 +6112,7 @@
 
   NSString stringByPaddingToLength_withString_startingAtIndex(
       int newLength, NSObject? padString, int padIndex) {
-    final _ret = _lib._objc_msgSend_45(
+    final _ret = _lib._objc_msgSend_46(
         _id,
         _lib._sel_stringByPaddingToLength_withString_startingAtIndex_1,
         newLength,
@@ -5713,7 +6122,7 @@
   }
 
   NSString stringByFoldingWithOptions_locale(int options, NSObject? locale) {
-    final _ret = _lib._objc_msgSend_46(
+    final _ret = _lib._objc_msgSend_47(
         _id,
         _lib._sel_stringByFoldingWithOptions_locale_1,
         options,
@@ -5726,7 +6135,7 @@
       NSObject? replacement,
       int options,
       NSRange searchRange) {
-    final _ret = _lib._objc_msgSend_47(
+    final _ret = _lib._objc_msgSend_48(
         _id,
         _lib._sel_stringByReplacingOccurrencesOfString_withString_options_range_1,
         target?._id ?? ffi.nullptr,
@@ -5738,7 +6147,7 @@
 
   NSString stringByReplacingOccurrencesOfString_withString(
       NSObject? target, NSObject? replacement) {
-    final _ret = _lib._objc_msgSend_48(
+    final _ret = _lib._objc_msgSend_49(
         _id,
         _lib._sel_stringByReplacingOccurrencesOfString_withString_1,
         target?._id ?? ffi.nullptr,
@@ -5748,7 +6157,7 @@
 
   NSString stringByReplacingCharactersInRange_withString(
       NSRange range, NSObject? replacement) {
-    final _ret = _lib._objc_msgSend_49(
+    final _ret = _lib._objc_msgSend_50(
         _id,
         _lib._sel_stringByReplacingCharactersInRange_withString_1,
         range,
@@ -5758,7 +6167,7 @@
 
   NSString stringByApplyingTransform_reverse(
       NSStringTransform transform, bool reverse) {
-    final _ret = _lib._objc_msgSend_50(
+    final _ret = _lib._objc_msgSend_51(
         _id, _lib._sel_stringByApplyingTransform_reverse_1, transform, reverse);
     return NSString._(_ret, _lib);
   }
@@ -5768,7 +6177,7 @@
       bool useAuxiliaryFile,
       int enc,
       ffi.Pointer<ffi.Pointer<ObjCObject>> error) {
-    return _lib._objc_msgSend_51(
+    return _lib._objc_msgSend_52(
         _id,
         _lib._sel_writeToURL_atomically_encoding_error_1,
         url?._id ?? ffi.nullptr,
@@ -5782,7 +6191,7 @@
       bool useAuxiliaryFile,
       int enc,
       ffi.Pointer<ffi.Pointer<ObjCObject>> error) {
-    return _lib._objc_msgSend_51(
+    return _lib._objc_msgSend_52(
         _id,
         _lib._sel_writeToFile_atomically_encoding_error_1,
         path?._id ?? ffi.nullptr,
@@ -5802,7 +6211,7 @@
 
   NSString initWithCharactersNoCopy_length_freeWhenDone(
       ffi.Pointer<unichar> characters, int length, bool freeBuffer) {
-    final _ret = _lib._objc_msgSend_52(
+    final _ret = _lib._objc_msgSend_53(
         _id,
         _lib._sel_initWithCharactersNoCopy_length_freeWhenDone_1,
         characters,
@@ -5812,25 +6221,25 @@
   }
 
   NSString initWithCharactersNoCopy_length_deallocator(
-      ffi.Pointer<unichar> chars, int len, NSObject deallocator) {
-    final _ret = _lib._objc_msgSend_53(
+      ffi.Pointer<unichar> chars, int len, ObjCBlock2 deallocator) {
+    final _ret = _lib._objc_msgSend_54(
         _id,
         _lib._sel_initWithCharactersNoCopy_length_deallocator_1,
         chars,
         len,
-        deallocator._id);
+        deallocator._impl);
     return NSString._(_ret, _lib);
   }
 
   NSString initWithCharacters_length(
       ffi.Pointer<unichar> characters, int length) {
-    final _ret = _lib._objc_msgSend_54(
+    final _ret = _lib._objc_msgSend_55(
         _id, _lib._sel_initWithCharacters_length_1, characters, length);
     return NSString._(_ret, _lib);
   }
 
   NSString initWithUTF8String(ffi.Pointer<pkg_ffi.Char> nullTerminatedCString) {
-    final _ret = _lib._objc_msgSend_55(
+    final _ret = _lib._objc_msgSend_56(
         _id, _lib._sel_initWithUTF8String_1, nullTerminatedCString);
     return NSString._(_ret, _lib);
   }
@@ -5849,7 +6258,7 @@
 
   NSString initWithFormat_arguments(
       NSObject? format, ffi.Pointer<__va_list_tag> argList) {
-    final _ret = _lib._objc_msgSend_56(
+    final _ret = _lib._objc_msgSend_57(
         _id,
         _lib._sel_initWithFormat_arguments_1,
         format?._id ?? ffi.nullptr,
@@ -5858,14 +6267,14 @@
   }
 
   NSString initWithFormat_locale(NSObject? format, NSObject locale) {
-    final _ret = _lib._objc_msgSend_57(_id, _lib._sel_initWithFormat_locale_1,
+    final _ret = _lib._objc_msgSend_58(_id, _lib._sel_initWithFormat_locale_1,
         format?._id ?? ffi.nullptr, locale._id);
     return NSString._(_ret, _lib);
   }
 
   NSString initWithFormat_locale_arguments(
       NSObject? format, NSObject locale, ffi.Pointer<__va_list_tag> argList) {
-    final _ret = _lib._objc_msgSend_58(
+    final _ret = _lib._objc_msgSend_59(
         _id,
         _lib._sel_initWithFormat_locale_arguments_1,
         format?._id ?? ffi.nullptr,
@@ -5875,21 +6284,21 @@
   }
 
   NSString initWithData_encoding(NSObject? data, int encoding) {
-    final _ret = _lib._objc_msgSend_59(_id, _lib._sel_initWithData_encoding_1,
+    final _ret = _lib._objc_msgSend_60(_id, _lib._sel_initWithData_encoding_1,
         data?._id ?? ffi.nullptr, encoding);
     return NSString._(_ret, _lib);
   }
 
   NSString initWithBytes_length_encoding(
       ffi.Pointer<ffi.Void> bytes, int len, int encoding) {
-    final _ret = _lib._objc_msgSend_60(
+    final _ret = _lib._objc_msgSend_61(
         _id, _lib._sel_initWithBytes_length_encoding_1, bytes, len, encoding);
     return NSString._(_ret, _lib);
   }
 
   NSString initWithBytesNoCopy_length_encoding_freeWhenDone(
       ffi.Pointer<ffi.Void> bytes, int len, int encoding, bool freeBuffer) {
-    final _ret = _lib._objc_msgSend_61(
+    final _ret = _lib._objc_msgSend_62(
         _id,
         _lib._sel_initWithBytesNoCopy_length_encoding_freeWhenDone_1,
         bytes,
@@ -5903,14 +6312,14 @@
       ffi.Pointer<ffi.Void> bytes,
       int len,
       int encoding,
-      NSObject deallocator) {
-    final _ret = _lib._objc_msgSend_62(
+      ObjCBlock3 deallocator) {
+    final _ret = _lib._objc_msgSend_63(
         _id,
         _lib._sel_initWithBytesNoCopy_length_encoding_deallocator_1,
         bytes,
         len,
         encoding,
-        deallocator._id);
+        deallocator._impl);
     return NSString._(_ret, _lib);
   }
 
@@ -5928,14 +6337,14 @@
 
   static NSString stringWithCharacters_length(
       StringTestObjCLibrary _lib, ffi.Pointer<unichar> characters, int length) {
-    final _ret = _lib._objc_msgSend_54(_lib._class_NSString1,
+    final _ret = _lib._objc_msgSend_55(_lib._class_NSString1,
         _lib._sel_stringWithCharacters_length_1, characters, length);
     return NSString._(_ret, _lib);
   }
 
   static NSString stringWithUTF8String(StringTestObjCLibrary _lib,
       ffi.Pointer<pkg_ffi.Char> nullTerminatedCString) {
-    final _ret = _lib._objc_msgSend_55(_lib._class_NSString1,
+    final _ret = _lib._objc_msgSend_56(_lib._class_NSString1,
         _lib._sel_stringWithUTF8String_1, nullTerminatedCString);
     return NSString._(_ret, _lib);
   }
@@ -5956,21 +6365,21 @@
 
   NSString initWithCString_encoding(
       ffi.Pointer<pkg_ffi.Char> nullTerminatedCString, int encoding) {
-    final _ret = _lib._objc_msgSend_63(_id,
+    final _ret = _lib._objc_msgSend_64(_id,
         _lib._sel_initWithCString_encoding_1, nullTerminatedCString, encoding);
     return NSString._(_ret, _lib);
   }
 
   static NSString stringWithCString_encoding(
       StringTestObjCLibrary _lib, ffi.Pointer<pkg_ffi.Char> cString, int enc) {
-    final _ret = _lib._objc_msgSend_63(_lib._class_NSString1,
+    final _ret = _lib._objc_msgSend_64(_lib._class_NSString1,
         _lib._sel_stringWithCString_encoding_1, cString, enc);
     return NSString._(_ret, _lib);
   }
 
   NSString initWithContentsOfURL_encoding_error(
       NSObject? url, int enc, ffi.Pointer<ffi.Pointer<ObjCObject>> error) {
-    final _ret = _lib._objc_msgSend_64(
+    final _ret = _lib._objc_msgSend_65(
         _id,
         _lib._sel_initWithContentsOfURL_encoding_error_1,
         url?._id ?? ffi.nullptr,
@@ -5981,7 +6390,7 @@
 
   NSString initWithContentsOfFile_encoding_error(
       NSObject? path, int enc, ffi.Pointer<ffi.Pointer<ObjCObject>> error) {
-    final _ret = _lib._objc_msgSend_64(
+    final _ret = _lib._objc_msgSend_65(
         _id,
         _lib._sel_initWithContentsOfFile_encoding_error_1,
         path?._id ?? ffi.nullptr,
@@ -5995,7 +6404,7 @@
       NSObject? url,
       int enc,
       ffi.Pointer<ffi.Pointer<ObjCObject>> error) {
-    final _ret = _lib._objc_msgSend_64(
+    final _ret = _lib._objc_msgSend_65(
         _lib._class_NSString1,
         _lib._sel_stringWithContentsOfURL_encoding_error_1,
         url?._id ?? ffi.nullptr,
@@ -6009,7 +6418,7 @@
       NSObject? path,
       int enc,
       ffi.Pointer<ffi.Pointer<ObjCObject>> error) {
-    final _ret = _lib._objc_msgSend_64(
+    final _ret = _lib._objc_msgSend_65(
         _lib._class_NSString1,
         _lib._sel_stringWithContentsOfFile_encoding_error_1,
         path?._id ?? ffi.nullptr,
@@ -6022,7 +6431,7 @@
       NSObject? url,
       ffi.Pointer<NSStringEncoding> enc,
       ffi.Pointer<ffi.Pointer<ObjCObject>> error) {
-    final _ret = _lib._objc_msgSend_65(
+    final _ret = _lib._objc_msgSend_66(
         _id,
         _lib._sel_initWithContentsOfURL_usedEncoding_error_1,
         url?._id ?? ffi.nullptr,
@@ -6035,7 +6444,7 @@
       NSObject? path,
       ffi.Pointer<NSStringEncoding> enc,
       ffi.Pointer<ffi.Pointer<ObjCObject>> error) {
-    final _ret = _lib._objc_msgSend_65(
+    final _ret = _lib._objc_msgSend_66(
         _id,
         _lib._sel_initWithContentsOfFile_usedEncoding_error_1,
         path?._id ?? ffi.nullptr,
@@ -6049,7 +6458,7 @@
       NSObject? url,
       ffi.Pointer<NSStringEncoding> enc,
       ffi.Pointer<ffi.Pointer<ObjCObject>> error) {
-    final _ret = _lib._objc_msgSend_65(
+    final _ret = _lib._objc_msgSend_66(
         _lib._class_NSString1,
         _lib._sel_stringWithContentsOfURL_usedEncoding_error_1,
         url?._id ?? ffi.nullptr,
@@ -6063,7 +6472,7 @@
       NSObject? path,
       ffi.Pointer<NSStringEncoding> enc,
       ffi.Pointer<ffi.Pointer<ObjCObject>> error) {
-    final _ret = _lib._objc_msgSend_65(
+    final _ret = _lib._objc_msgSend_66(
         _lib._class_NSString1,
         _lib._sel_stringWithContentsOfFile_usedEncoding_error_1,
         path?._id ?? ffi.nullptr,
@@ -6079,7 +6488,7 @@
           NSObject? opts,
           ffi.Pointer<ffi.Pointer<ObjCObject>> string,
           ffi.Pointer<ffi.Uint8> usedLossyConversion) {
-    return _lib._objc_msgSend_66(
+    return _lib._objc_msgSend_67(
         _lib._class_NSString1,
         _lib._sel_stringEncodingForData_encodingOptions_convertedString_usedLossyConversion_1,
         data?._id ?? ffi.nullptr,
@@ -6094,7 +6503,7 @@
   }
 
   NSDictionary propertyListFromStringsFileFormat() {
-    final _ret = _lib._objc_msgSend_67(
+    final _ret = _lib._objc_msgSend_68(
         _id, _lib._sel_propertyListFromStringsFileFormat1);
     return NSDictionary._(_ret, _lib);
   }
@@ -6112,11 +6521,11 @@
   }
 
   void getCString(ffi.Pointer<pkg_ffi.Char> bytes) {
-    _lib._objc_msgSend_68(_id, _lib._sel_getCString_1, bytes);
+    _lib._objc_msgSend_69(_id, _lib._sel_getCString_1, bytes);
   }
 
   void getCString_maxLength(ffi.Pointer<pkg_ffi.Char> bytes, int maxLength) {
-    _lib._objc_msgSend_69(
+    _lib._objc_msgSend_70(
         _id, _lib._sel_getCString_maxLength_1, bytes, maxLength);
   }
 
@@ -6125,7 +6534,7 @@
       int maxLength,
       NSRange aRange,
       NSRangePointer leftoverRange) {
-    _lib._objc_msgSend_70(
+    _lib._objc_msgSend_71(
         _id,
         _lib._sel_getCString_maxLength_range_remainingRange_1,
         bytes,
@@ -6135,12 +6544,12 @@
   }
 
   bool writeToFile_atomically(NSObject? path, bool useAuxiliaryFile) {
-    return _lib._objc_msgSend_71(_id, _lib._sel_writeToFile_atomically_1,
+    return _lib._objc_msgSend_72(_id, _lib._sel_writeToFile_atomically_1,
         path?._id ?? ffi.nullptr, useAuxiliaryFile);
   }
 
   bool writeToURL_atomically(NSObject? url, bool atomically) {
-    return _lib._objc_msgSend_71(_id, _lib._sel_writeToURL_atomically_1,
+    return _lib._objc_msgSend_72(_id, _lib._sel_writeToURL_atomically_1,
         url?._id ?? ffi.nullptr, atomically);
   }
 
@@ -6172,7 +6581,7 @@
 
   NSObject initWithCStringNoCopy_length_freeWhenDone(
       ffi.Pointer<pkg_ffi.Char> bytes, int length, bool freeBuffer) {
-    final _ret = _lib._objc_msgSend_72(
+    final _ret = _lib._objc_msgSend_73(
         _id,
         _lib._sel_initWithCStringNoCopy_length_freeWhenDone_1,
         bytes,
@@ -6182,32 +6591,32 @@
   }
 
   NSObject initWithCString_length(ffi.Pointer<pkg_ffi.Char> bytes, int length) {
-    final _ret = _lib._objc_msgSend_63(
+    final _ret = _lib._objc_msgSend_64(
         _id, _lib._sel_initWithCString_length_1, bytes, length);
     return NSObject._(_ret, _lib);
   }
 
   NSObject initWithCString(ffi.Pointer<pkg_ffi.Char> bytes) {
-    final _ret = _lib._objc_msgSend_55(_id, _lib._sel_initWithCString_1, bytes);
+    final _ret = _lib._objc_msgSend_56(_id, _lib._sel_initWithCString_1, bytes);
     return NSObject._(_ret, _lib);
   }
 
   static NSObject stringWithCString_length(
       StringTestObjCLibrary _lib, ffi.Pointer<pkg_ffi.Char> bytes, int length) {
-    final _ret = _lib._objc_msgSend_63(_lib._class_NSString1,
+    final _ret = _lib._objc_msgSend_64(_lib._class_NSString1,
         _lib._sel_stringWithCString_length_1, bytes, length);
     return NSObject._(_ret, _lib);
   }
 
   static NSObject stringWithCString(
       StringTestObjCLibrary _lib, ffi.Pointer<pkg_ffi.Char> bytes) {
-    final _ret = _lib._objc_msgSend_55(
+    final _ret = _lib._objc_msgSend_56(
         _lib._class_NSString1, _lib._sel_stringWithCString_1, bytes);
     return NSObject._(_ret, _lib);
   }
 
   void getCharacters(ffi.Pointer<unichar> buffer) {
-    _lib._objc_msgSend_73(_id, _lib._sel_getCharacters_1, buffer);
+    _lib._objc_msgSend_74(_id, _lib._sel_getCharacters_1, buffer);
   }
 
   static NSString new1(StringTestObjCLibrary _lib) {
@@ -6261,6 +6670,118 @@
   static const int NSStringEnumerationLocalized = 1024;
 }
 
+void _ObjCBlock_fnPtrTrampoline(
+    ffi.Pointer<_ObjCBlock> block,
+    ffi.Pointer<ObjCObject> arg0,
+    NSRange arg1,
+    NSRange arg2,
+    ffi.Pointer<ffi.Uint8> arg3) {
+  return block.ref.target
+      .cast<
+          ffi.NativeFunction<
+              ffi.Void Function(ffi.Pointer<ObjCObject> arg0, NSRange arg1,
+                  NSRange arg2, ffi.Pointer<ffi.Uint8> arg3)>>()
+      .asFunction<
+          void Function(
+              ffi.Pointer<ObjCObject> arg0,
+              NSRange arg1,
+              NSRange arg2,
+              ffi.Pointer<ffi.Uint8> arg3)>()(arg0, arg1, arg2, arg3);
+}
+
+class ObjCBlock {
+  final ffi.Pointer<_ObjCBlock> _impl;
+  final StringTestObjCLibrary _lib;
+  ObjCBlock._(this._impl, this._lib);
+
+  ObjCBlock.fromFunctionPointer(
+      this._lib,
+      ffi.Pointer<
+              ffi.NativeFunction<
+                  ffi.Void Function(ffi.Pointer<ObjCObject> arg0, NSRange arg1,
+                      NSRange arg2, ffi.Pointer<ffi.Uint8> arg3)>>
+          ptr)
+      : _impl = _lib._newBlock1(
+            ffi.Pointer.fromFunction<
+                        ffi.Void Function(
+                            ffi.Pointer<_ObjCBlock> block,
+                            ffi.Pointer<ObjCObject> arg0,
+                            NSRange arg1,
+                            NSRange arg2,
+                            ffi.Pointer<ffi.Uint8> arg3)>(
+                    _ObjCBlock_fnPtrTrampoline)
+                .cast(),
+            ptr.cast());
+  ffi.Pointer<_ObjCBlock> get pointer => _impl;
+}
+
+class _ObjCBlockDesc extends ffi.Struct {
+  @pkg_ffi.UnsignedLong()
+  external int reserved;
+
+  @pkg_ffi.UnsignedLong()
+  external int size;
+
+  external ffi.Pointer<ffi.Void> copy_helper;
+
+  external ffi.Pointer<ffi.Void> dispose_helper;
+
+  external ffi.Pointer<pkg_ffi.Char> signature;
+}
+
+class _ObjCBlock extends ffi.Struct {
+  external ffi.Pointer<ffi.Void> isa;
+
+  @pkg_ffi.Int()
+  external int flags;
+
+  @pkg_ffi.Int()
+  external int reserved;
+
+  external ffi.Pointer<ffi.Void> invoke;
+
+  external ffi.Pointer<_ObjCBlockDesc> descriptor;
+
+  external ffi.Pointer<ffi.Void> target;
+}
+
+void _ObjCBlock1_fnPtrTrampoline(ffi.Pointer<_ObjCBlock> block,
+    ffi.Pointer<ObjCObject> arg0, ffi.Pointer<ffi.Uint8> arg1) {
+  return block.ref.target
+      .cast<
+          ffi.NativeFunction<
+              ffi.Void Function(
+                  ffi.Pointer<ObjCObject> arg0, ffi.Pointer<ffi.Uint8> arg1)>>()
+      .asFunction<
+          void Function(ffi.Pointer<ObjCObject> arg0,
+              ffi.Pointer<ffi.Uint8> arg1)>()(arg0, arg1);
+}
+
+class ObjCBlock1 {
+  final ffi.Pointer<_ObjCBlock> _impl;
+  final StringTestObjCLibrary _lib;
+  ObjCBlock1._(this._impl, this._lib);
+
+  ObjCBlock1.fromFunctionPointer(
+      this._lib,
+      ffi.Pointer<
+              ffi.NativeFunction<
+                  ffi.Void Function(ffi.Pointer<ObjCObject> arg0,
+                      ffi.Pointer<ffi.Uint8> arg1)>>
+          ptr)
+      : _impl =
+            _lib._newBlock1(
+                ffi.Pointer.fromFunction<
+                            ffi.Void Function(
+                                ffi.Pointer<_ObjCBlock> block,
+                                ffi.Pointer<ObjCObject> arg0,
+                                ffi.Pointer<ffi.Uint8> arg1)>(
+                        _ObjCBlock1_fnPtrTrampoline)
+                    .cast(),
+                ptr.cast());
+  ffi.Pointer<_ObjCBlock> get pointer => _impl;
+}
+
 typedef NSStringEncoding = NSUInteger;
 
 class NSData extends _ObjCWrapper {
@@ -6284,6 +6805,38 @@
 
 typedef NSRangePointer = ffi.Pointer<NSRange>;
 typedef NSStringTransform = ffi.Pointer<ObjCObject>;
+void _ObjCBlock2_fnPtrTrampoline(
+    ffi.Pointer<_ObjCBlock> block, ffi.Pointer<unichar> arg0, int arg1) {
+  return block.ref.target
+      .cast<
+          ffi.NativeFunction<
+              ffi.Void Function(ffi.Pointer<unichar> arg0, NSUInteger arg1)>>()
+      .asFunction<
+          void Function(ffi.Pointer<unichar> arg0, int arg1)>()(arg0, arg1);
+}
+
+class ObjCBlock2 {
+  final ffi.Pointer<_ObjCBlock> _impl;
+  final StringTestObjCLibrary _lib;
+  ObjCBlock2._(this._impl, this._lib);
+
+  ObjCBlock2.fromFunctionPointer(
+      this._lib,
+      ffi.Pointer<
+              ffi.NativeFunction<
+                  ffi.Void Function(
+                      ffi.Pointer<unichar> arg0, NSUInteger arg1)>>
+          ptr)
+      : _impl = _lib._newBlock1(
+            ffi.Pointer.fromFunction<
+                    ffi.Void Function(
+                        ffi.Pointer<_ObjCBlock> block,
+                        ffi.Pointer<unichar> arg0,
+                        NSUInteger arg1)>(_ObjCBlock2_fnPtrTrampoline)
+                .cast(),
+            ptr.cast());
+  ffi.Pointer<_ObjCBlock> get pointer => _impl;
+}
 
 class __va_list_tag extends ffi.Struct {
   @pkg_ffi.UnsignedInt()
@@ -6297,6 +6850,39 @@
   external ffi.Pointer<ffi.Void> reg_save_area;
 }
 
+void _ObjCBlock3_fnPtrTrampoline(
+    ffi.Pointer<_ObjCBlock> block, ffi.Pointer<ffi.Void> arg0, int arg1) {
+  return block.ref.target
+      .cast<
+          ffi.NativeFunction<
+              ffi.Void Function(ffi.Pointer<ffi.Void> arg0, NSUInteger arg1)>>()
+      .asFunction<
+          void Function(ffi.Pointer<ffi.Void> arg0, int arg1)>()(arg0, arg1);
+}
+
+class ObjCBlock3 {
+  final ffi.Pointer<_ObjCBlock> _impl;
+  final StringTestObjCLibrary _lib;
+  ObjCBlock3._(this._impl, this._lib);
+
+  ObjCBlock3.fromFunctionPointer(
+      this._lib,
+      ffi.Pointer<
+              ffi.NativeFunction<
+                  ffi.Void Function(
+                      ffi.Pointer<ffi.Void> arg0, NSUInteger arg1)>>
+          ptr)
+      : _impl = _lib._newBlock1(
+            ffi.Pointer.fromFunction<
+                    ffi.Void Function(
+                        ffi.Pointer<_ObjCBlock> block,
+                        ffi.Pointer<ffi.Void> arg0,
+                        NSUInteger arg1)>(_ObjCBlock3_fnPtrTrampoline)
+                .cast(),
+            ptr.cast());
+  ffi.Pointer<_ObjCBlock> get pointer => _impl;
+}
+
 class NSDictionary extends _ObjCWrapper {
   NSDictionary._(ffi.Pointer<ObjCObject> id, StringTestObjCLibrary lib)
       : super._(id, lib);
@@ -6325,16 +6911,16 @@
   }
 
   void getValue_size(ffi.Pointer<ffi.Void> value, int size) {
-    _lib._objc_msgSend_76(_id, _lib._sel_getValue_size_1, value, size);
+    _lib._objc_msgSend_77(_id, _lib._sel_getValue_size_1, value, size);
   }
 
   ffi.Pointer<pkg_ffi.Char> get objCType {
-    return _lib._objc_msgSend_36(_id, _lib._sel_objCType1);
+    return _lib._objc_msgSend_37(_id, _lib._sel_objCType1);
   }
 
   NSValue initWithBytes_objCType(
       ffi.Pointer<ffi.Void> value, ffi.Pointer<pkg_ffi.Char> type) {
-    final _ret = _lib._objc_msgSend_77(
+    final _ret = _lib._objc_msgSend_78(
         _id, _lib._sel_initWithBytes_objCType_1, value, type);
     return NSValue._(_ret, _lib);
   }
@@ -6347,21 +6933,21 @@
 
   static NSValue valueWithBytes_objCType(StringTestObjCLibrary _lib,
       ffi.Pointer<ffi.Void> value, ffi.Pointer<pkg_ffi.Char> type) {
-    final _ret = _lib._objc_msgSend_78(
+    final _ret = _lib._objc_msgSend_79(
         _lib._class_NSValue1, _lib._sel_valueWithBytes_objCType_1, value, type);
     return NSValue._(_ret, _lib);
   }
 
   static NSValue value_withObjCType(StringTestObjCLibrary _lib,
       ffi.Pointer<ffi.Void> value, ffi.Pointer<pkg_ffi.Char> type) {
-    final _ret = _lib._objc_msgSend_78(
+    final _ret = _lib._objc_msgSend_79(
         _lib._class_NSValue1, _lib._sel_value_withObjCType_1, value, type);
     return NSValue._(_ret, _lib);
   }
 
   static NSValue valueWithNonretainedObject(
       StringTestObjCLibrary _lib, NSObject anObject) {
-    final _ret = _lib._objc_msgSend_79(_lib._class_NSValue1,
+    final _ret = _lib._objc_msgSend_80(_lib._class_NSValue1,
         _lib._sel_valueWithNonretainedObject_1, anObject._id);
     return NSValue._(_ret, _lib);
   }
@@ -6373,13 +6959,13 @@
 
   static NSValue valueWithPointer(
       StringTestObjCLibrary _lib, ffi.Pointer<ffi.Void> pointer) {
-    final _ret = _lib._objc_msgSend_80(
+    final _ret = _lib._objc_msgSend_81(
         _lib._class_NSValue1, _lib._sel_valueWithPointer_1, pointer);
     return NSValue._(_ret, _lib);
   }
 
   ffi.Pointer<ffi.Void> get pointerValue {
-    return _lib._objc_msgSend_81(_id, _lib._sel_pointerValue1);
+    return _lib._objc_msgSend_82(_id, _lib._sel_pointerValue1);
   }
 
   bool isEqualToValue(NSObject? value) {
@@ -6388,17 +6974,17 @@
   }
 
   void getValue(ffi.Pointer<ffi.Void> value) {
-    _lib._objc_msgSend_82(_id, _lib._sel_getValue_1, value);
+    _lib._objc_msgSend_83(_id, _lib._sel_getValue_1, value);
   }
 
   static NSValue valueWithRange(StringTestObjCLibrary _lib, NSRange range) {
-    final _ret = _lib._objc_msgSend_83(
+    final _ret = _lib._objc_msgSend_84(
         _lib._class_NSValue1, _lib._sel_valueWithRange_1, range);
     return NSValue._(_ret, _lib);
   }
 
   NSRange get rangeValue {
-    return _lib._objc_msgSend_84(_id, _lib._sel_rangeValue1);
+    return _lib._objc_msgSend_85(_id, _lib._sel_rangeValue1);
   }
 
   static NSValue new1(StringTestObjCLibrary _lib) {
@@ -6433,101 +7019,101 @@
   }
 
   NSNumber initWithChar(int value) {
-    final _ret = _lib._objc_msgSend_85(_id, _lib._sel_initWithChar_1, value);
+    final _ret = _lib._objc_msgSend_86(_id, _lib._sel_initWithChar_1, value);
     return NSNumber._(_ret, _lib);
   }
 
   NSNumber initWithUnsignedChar(int value) {
     final _ret =
-        _lib._objc_msgSend_86(_id, _lib._sel_initWithUnsignedChar_1, value);
+        _lib._objc_msgSend_87(_id, _lib._sel_initWithUnsignedChar_1, value);
     return NSNumber._(_ret, _lib);
   }
 
   NSNumber initWithShort(int value) {
-    final _ret = _lib._objc_msgSend_87(_id, _lib._sel_initWithShort_1, value);
+    final _ret = _lib._objc_msgSend_88(_id, _lib._sel_initWithShort_1, value);
     return NSNumber._(_ret, _lib);
   }
 
   NSNumber initWithUnsignedShort(int value) {
     final _ret =
-        _lib._objc_msgSend_88(_id, _lib._sel_initWithUnsignedShort_1, value);
+        _lib._objc_msgSend_89(_id, _lib._sel_initWithUnsignedShort_1, value);
     return NSNumber._(_ret, _lib);
   }
 
   NSNumber initWithInt(int value) {
-    final _ret = _lib._objc_msgSend_89(_id, _lib._sel_initWithInt_1, value);
+    final _ret = _lib._objc_msgSend_90(_id, _lib._sel_initWithInt_1, value);
     return NSNumber._(_ret, _lib);
   }
 
   NSNumber initWithUnsignedInt(int value) {
     final _ret =
-        _lib._objc_msgSend_90(_id, _lib._sel_initWithUnsignedInt_1, value);
+        _lib._objc_msgSend_91(_id, _lib._sel_initWithUnsignedInt_1, value);
     return NSNumber._(_ret, _lib);
   }
 
   NSNumber initWithLong(int value) {
-    final _ret = _lib._objc_msgSend_91(_id, _lib._sel_initWithLong_1, value);
+    final _ret = _lib._objc_msgSend_92(_id, _lib._sel_initWithLong_1, value);
     return NSNumber._(_ret, _lib);
   }
 
   NSNumber initWithUnsignedLong(int value) {
     final _ret =
-        _lib._objc_msgSend_92(_id, _lib._sel_initWithUnsignedLong_1, value);
+        _lib._objc_msgSend_93(_id, _lib._sel_initWithUnsignedLong_1, value);
     return NSNumber._(_ret, _lib);
   }
 
   NSNumber initWithLongLong(int value) {
     final _ret =
-        _lib._objc_msgSend_93(_id, _lib._sel_initWithLongLong_1, value);
+        _lib._objc_msgSend_94(_id, _lib._sel_initWithLongLong_1, value);
     return NSNumber._(_ret, _lib);
   }
 
   NSNumber initWithUnsignedLongLong(int value) {
     final _ret =
-        _lib._objc_msgSend_94(_id, _lib._sel_initWithUnsignedLongLong_1, value);
+        _lib._objc_msgSend_95(_id, _lib._sel_initWithUnsignedLongLong_1, value);
     return NSNumber._(_ret, _lib);
   }
 
   NSNumber initWithFloat(double value) {
-    final _ret = _lib._objc_msgSend_95(_id, _lib._sel_initWithFloat_1, value);
+    final _ret = _lib._objc_msgSend_96(_id, _lib._sel_initWithFloat_1, value);
     return NSNumber._(_ret, _lib);
   }
 
   NSNumber initWithDouble(double value) {
-    final _ret = _lib._objc_msgSend_96(_id, _lib._sel_initWithDouble_1, value);
+    final _ret = _lib._objc_msgSend_97(_id, _lib._sel_initWithDouble_1, value);
     return NSNumber._(_ret, _lib);
   }
 
   NSNumber initWithBool(bool value) {
-    final _ret = _lib._objc_msgSend_97(_id, _lib._sel_initWithBool_1, value);
+    final _ret = _lib._objc_msgSend_98(_id, _lib._sel_initWithBool_1, value);
     return NSNumber._(_ret, _lib);
   }
 
   NSNumber initWithInteger(int value) {
-    final _ret = _lib._objc_msgSend_91(_id, _lib._sel_initWithInteger_1, value);
+    final _ret = _lib._objc_msgSend_92(_id, _lib._sel_initWithInteger_1, value);
     return NSNumber._(_ret, _lib);
   }
 
   NSNumber initWithUnsignedInteger(int value) {
     final _ret =
-        _lib._objc_msgSend_92(_id, _lib._sel_initWithUnsignedInteger_1, value);
+        _lib._objc_msgSend_93(_id, _lib._sel_initWithUnsignedInteger_1, value);
     return NSNumber._(_ret, _lib);
   }
 
   int get charValue {
-    return _lib._objc_msgSend_98(_id, _lib._sel_charValue1);
+    return _lib._objc_msgSend_99(_id, _lib._sel_charValue1);
   }
 
   int get unsignedCharValue {
-    return _lib._objc_msgSend_99(_id, _lib._sel_unsignedCharValue1);
+    return _lib._objc_msgSend_100(_id, _lib._sel_unsignedCharValue1);
   }
 
   int get shortValue {
-    return _lib._objc_msgSend_100(_id, _lib._sel_shortValue1);
+    return _lib._objc_msgSend_101(_id, _lib._sel_shortValue1);
   }
 
   int get unsignedShortValue {
-    return _lib._objc_msgSend_101(_id, _lib._sel_unsignedShortValue1);
+    return _lib._objc_msgSend_102(_id, _lib._sel_unsignedShortValue1);
   }
 
   int get intValue {
@@ -6535,7 +7121,7 @@
   }
 
   int get unsignedIntValue {
-    return _lib._objc_msgSend_102(_id, _lib._sel_unsignedIntValue1);
+    return _lib._objc_msgSend_103(_id, _lib._sel_unsignedIntValue1);
   }
 
   int get longValue {
@@ -6551,7 +7137,7 @@
   }
 
   int get unsignedLongLongValue {
-    return _lib._objc_msgSend_103(_id, _lib._sel_unsignedLongLongValue1);
+    return _lib._objc_msgSend_104(_id, _lib._sel_unsignedLongLongValue1);
   }
 
   double get floatValue {
@@ -6596,130 +7182,130 @@
   }
 
   static NSNumber numberWithChar(StringTestObjCLibrary _lib, int value) {
-    final _ret = _lib._objc_msgSend_85(
+    final _ret = _lib._objc_msgSend_86(
         _lib._class_NSNumber1, _lib._sel_numberWithChar_1, value);
     return NSNumber._(_ret, _lib);
   }
 
   static NSNumber numberWithUnsignedChar(
       StringTestObjCLibrary _lib, int value) {
-    final _ret = _lib._objc_msgSend_86(
+    final _ret = _lib._objc_msgSend_87(
         _lib._class_NSNumber1, _lib._sel_numberWithUnsignedChar_1, value);
     return NSNumber._(_ret, _lib);
   }
 
   static NSNumber numberWithShort(StringTestObjCLibrary _lib, int value) {
-    final _ret = _lib._objc_msgSend_87(
+    final _ret = _lib._objc_msgSend_88(
         _lib._class_NSNumber1, _lib._sel_numberWithShort_1, value);
     return NSNumber._(_ret, _lib);
   }
 
   static NSNumber numberWithUnsignedShort(
       StringTestObjCLibrary _lib, int value) {
-    final _ret = _lib._objc_msgSend_88(
+    final _ret = _lib._objc_msgSend_89(
         _lib._class_NSNumber1, _lib._sel_numberWithUnsignedShort_1, value);
     return NSNumber._(_ret, _lib);
   }
 
   static NSNumber numberWithInt(StringTestObjCLibrary _lib, int value) {
-    final _ret = _lib._objc_msgSend_89(
+    final _ret = _lib._objc_msgSend_90(
         _lib._class_NSNumber1, _lib._sel_numberWithInt_1, value);
     return NSNumber._(_ret, _lib);
   }
 
   static NSNumber numberWithUnsignedInt(StringTestObjCLibrary _lib, int value) {
-    final _ret = _lib._objc_msgSend_90(
+    final _ret = _lib._objc_msgSend_91(
         _lib._class_NSNumber1, _lib._sel_numberWithUnsignedInt_1, value);
     return NSNumber._(_ret, _lib);
   }
 
   static NSNumber numberWithLong(StringTestObjCLibrary _lib, int value) {
-    final _ret = _lib._objc_msgSend_91(
+    final _ret = _lib._objc_msgSend_92(
         _lib._class_NSNumber1, _lib._sel_numberWithLong_1, value);
     return NSNumber._(_ret, _lib);
   }
 
   static NSNumber numberWithUnsignedLong(
       StringTestObjCLibrary _lib, int value) {
-    final _ret = _lib._objc_msgSend_92(
+    final _ret = _lib._objc_msgSend_93(
         _lib._class_NSNumber1, _lib._sel_numberWithUnsignedLong_1, value);
     return NSNumber._(_ret, _lib);
   }
 
   static NSNumber numberWithLongLong(StringTestObjCLibrary _lib, int value) {
-    final _ret = _lib._objc_msgSend_93(
+    final _ret = _lib._objc_msgSend_94(
         _lib._class_NSNumber1, _lib._sel_numberWithLongLong_1, value);
     return NSNumber._(_ret, _lib);
   }
 
   static NSNumber numberWithUnsignedLongLong(
       StringTestObjCLibrary _lib, int value) {
-    final _ret = _lib._objc_msgSend_94(
+    final _ret = _lib._objc_msgSend_95(
         _lib._class_NSNumber1, _lib._sel_numberWithUnsignedLongLong_1, value);
     return NSNumber._(_ret, _lib);
   }
 
   static NSNumber numberWithFloat(StringTestObjCLibrary _lib, double value) {
-    final _ret = _lib._objc_msgSend_95(
+    final _ret = _lib._objc_msgSend_96(
         _lib._class_NSNumber1, _lib._sel_numberWithFloat_1, value);
     return NSNumber._(_ret, _lib);
   }
 
   static NSNumber numberWithDouble(StringTestObjCLibrary _lib, double value) {
-    final _ret = _lib._objc_msgSend_96(
+    final _ret = _lib._objc_msgSend_97(
         _lib._class_NSNumber1, _lib._sel_numberWithDouble_1, value);
     return NSNumber._(_ret, _lib);
   }
 
   static NSNumber numberWithBool(StringTestObjCLibrary _lib, bool value) {
-    final _ret = _lib._objc_msgSend_97(
+    final _ret = _lib._objc_msgSend_98(
         _lib._class_NSNumber1, _lib._sel_numberWithBool_1, value);
     return NSNumber._(_ret, _lib);
   }
 
   static NSNumber numberWithInteger(StringTestObjCLibrary _lib, int value) {
-    final _ret = _lib._objc_msgSend_91(
+    final _ret = _lib._objc_msgSend_92(
         _lib._class_NSNumber1, _lib._sel_numberWithInteger_1, value);
     return NSNumber._(_ret, _lib);
   }
 
   static NSNumber numberWithUnsignedInteger(
       StringTestObjCLibrary _lib, int value) {
-    final _ret = _lib._objc_msgSend_92(
+    final _ret = _lib._objc_msgSend_93(
         _lib._class_NSNumber1, _lib._sel_numberWithUnsignedInteger_1, value);
     return NSNumber._(_ret, _lib);
   }
 
   static NSValue valueWithBytes_objCType(StringTestObjCLibrary _lib,
       ffi.Pointer<ffi.Void> value, ffi.Pointer<pkg_ffi.Char> type) {
-    final _ret = _lib._objc_msgSend_78(_lib._class_NSNumber1,
+    final _ret = _lib._objc_msgSend_79(_lib._class_NSNumber1,
         _lib._sel_valueWithBytes_objCType_1, value, type);
     return NSValue._(_ret, _lib);
   }
 
   static NSValue value_withObjCType(StringTestObjCLibrary _lib,
       ffi.Pointer<ffi.Void> value, ffi.Pointer<pkg_ffi.Char> type) {
-    final _ret = _lib._objc_msgSend_78(
+    final _ret = _lib._objc_msgSend_79(
         _lib._class_NSNumber1, _lib._sel_value_withObjCType_1, value, type);
     return NSValue._(_ret, _lib);
   }
 
   static NSValue valueWithNonretainedObject(
       StringTestObjCLibrary _lib, NSObject anObject) {
-    final _ret = _lib._objc_msgSend_79(_lib._class_NSNumber1,
+    final _ret = _lib._objc_msgSend_80(_lib._class_NSNumber1,
         _lib._sel_valueWithNonretainedObject_1, anObject._id);
     return NSValue._(_ret, _lib);
   }
 
   static NSValue valueWithPointer(
       StringTestObjCLibrary _lib, ffi.Pointer<ffi.Void> pointer) {
-    final _ret = _lib._objc_msgSend_80(
+    final _ret = _lib._objc_msgSend_81(
         _lib._class_NSNumber1, _lib._sel_valueWithPointer_1, pointer);
     return NSValue._(_ret, _lib);
   }
 
   static NSValue valueWithRange(StringTestObjCLibrary _lib, NSRange range) {
-    final _ret = _lib._objc_msgSend_83(
+    final _ret = _lib._objc_msgSend_84(
         _lib._class_NSNumber1, _lib._sel_valueWithRange_1, range);
     return NSValue._(_ret, _lib);
   }
@@ -6808,7 +7394,7 @@
   }
 
   int get changeType {
-    return _lib._objc_msgSend_104(_id, _lib._sel_changeType1);
+    return _lib._objc_msgSend_105(_id, _lib._sel_changeType1);
   }
 
   int get index {
@@ -6827,14 +7413,14 @@
 
   NSOrderedCollectionChange initWithObject_type_index(
       NSObject anObject, int type, int index) {
-    final _ret = _lib._objc_msgSend_105(
+    final _ret = _lib._objc_msgSend_106(
         _id, _lib._sel_initWithObject_type_index_1, anObject._id, type, index);
     return NSOrderedCollectionChange._(_ret, _lib);
   }
 
   NSOrderedCollectionChange initWithObject_type_index_associatedIndex(
       NSObject anObject, int type, int index, int associatedIndex) {
-    final _ret = _lib._objc_msgSend_106(
+    final _ret = _lib._objc_msgSend_107(
         _id,
         _lib._sel_initWithObject_type_index_associatedIndex_1,
         anObject._id,
@@ -6877,21 +7463,21 @@
   }
 
   static NSIndexSet indexSetWithIndex(StringTestObjCLibrary _lib, int value) {
-    final _ret = _lib._objc_msgSend_107(
+    final _ret = _lib._objc_msgSend_108(
         _lib._class_NSIndexSet1, _lib._sel_indexSetWithIndex_1, value);
     return NSIndexSet._(_ret, _lib);
   }
 
   static NSIndexSet indexSetWithIndexesInRange(
       StringTestObjCLibrary _lib, NSRange range) {
-    final _ret = _lib._objc_msgSend_108(
+    final _ret = _lib._objc_msgSend_109(
         _lib._class_NSIndexSet1, _lib._sel_indexSetWithIndexesInRange_1, range);
     return NSIndexSet._(_ret, _lib);
   }
 
   NSIndexSet initWithIndexesInRange(NSRange range) {
     final _ret =
-        _lib._objc_msgSend_108(_id, _lib._sel_initWithIndexesInRange_1, range);
+        _lib._objc_msgSend_109(_id, _lib._sel_initWithIndexesInRange_1, range);
     return NSIndexSet._(_ret, _lib);
   }
 
@@ -6902,7 +7488,7 @@
   }
 
   NSIndexSet initWithIndex(int value) {
-    final _ret = _lib._objc_msgSend_107(_id, _lib._sel_initWithIndex_1, value);
+    final _ret = _lib._objc_msgSend_108(_id, _lib._sel_initWithIndex_1, value);
     return NSIndexSet._(_ret, _lib);
   }
 
@@ -6924,26 +7510,26 @@
   }
 
   int indexGreaterThanIndex(int value) {
-    return _lib._objc_msgSend_43(_id, _lib._sel_indexGreaterThanIndex_1, value);
+    return _lib._objc_msgSend_44(_id, _lib._sel_indexGreaterThanIndex_1, value);
   }
 
   int indexLessThanIndex(int value) {
-    return _lib._objc_msgSend_43(_id, _lib._sel_indexLessThanIndex_1, value);
+    return _lib._objc_msgSend_44(_id, _lib._sel_indexLessThanIndex_1, value);
   }
 
   int indexGreaterThanOrEqualToIndex(int value) {
-    return _lib._objc_msgSend_43(
+    return _lib._objc_msgSend_44(
         _id, _lib._sel_indexGreaterThanOrEqualToIndex_1, value);
   }
 
   int indexLessThanOrEqualToIndex(int value) {
-    return _lib._objc_msgSend_43(
+    return _lib._objc_msgSend_44(
         _id, _lib._sel_indexLessThanOrEqualToIndex_1, value);
   }
 
   int getIndexes_maxCount_inIndexRange(ffi.Pointer<NSUInteger> indexBuffer,
       int bufferSize, NSRangePointer range) {
-    return _lib._objc_msgSend_109(
+    return _lib._objc_msgSend_110(
         _id,
         _lib._sel_getIndexes_maxCount_inIndexRange_1,
         indexBuffer,
@@ -6952,16 +7538,16 @@
   }
 
   int countOfIndexesInRange(NSRange range) {
-    return _lib._objc_msgSend_110(
+    return _lib._objc_msgSend_111(
         _id, _lib._sel_countOfIndexesInRange_1, range);
   }
 
   bool containsIndex(int value) {
-    return _lib._objc_msgSend_39(_id, _lib._sel_containsIndex_1, value);
+    return _lib._objc_msgSend_40(_id, _lib._sel_containsIndex_1, value);
   }
 
   bool containsIndexesInRange(NSRange range) {
-    return _lib._objc_msgSend_111(
+    return _lib._objc_msgSend_112(
         _id, _lib._sel_containsIndexesInRange_1, range);
   }
 
@@ -6971,90 +7557,91 @@
   }
 
   bool intersectsIndexesInRange(NSRange range) {
-    return _lib._objc_msgSend_111(
+    return _lib._objc_msgSend_112(
         _id, _lib._sel_intersectsIndexesInRange_1, range);
   }
 
-  void enumerateIndexesUsingBlock(NSObject block) {
-    _lib._objc_msgSend_8(
-        _id, _lib._sel_enumerateIndexesUsingBlock_1, block._id);
+  void enumerateIndexesUsingBlock(ObjCBlock4 block) {
+    _lib._objc_msgSend_113(
+        _id, _lib._sel_enumerateIndexesUsingBlock_1, block._impl);
   }
 
-  void enumerateIndexesWithOptions_usingBlock(int opts, NSObject block) {
-    _lib._objc_msgSend_112(_id,
-        _lib._sel_enumerateIndexesWithOptions_usingBlock_1, opts, block._id);
+  void enumerateIndexesWithOptions_usingBlock(int opts, ObjCBlock4 block) {
+    _lib._objc_msgSend_114(_id,
+        _lib._sel_enumerateIndexesWithOptions_usingBlock_1, opts, block._impl);
   }
 
   void enumerateIndexesInRange_options_usingBlock(
-      NSRange range, int opts, NSObject block) {
-    _lib._objc_msgSend_113(
+      NSRange range, int opts, ObjCBlock4 block) {
+    _lib._objc_msgSend_115(
         _id,
         _lib._sel_enumerateIndexesInRange_options_usingBlock_1,
         range,
         opts,
-        block._id);
+        block._impl);
   }
 
-  int indexPassingTest(NSObject predicate) {
-    return _lib._objc_msgSend_114(
-        _id, _lib._sel_indexPassingTest_1, predicate._id);
+  int indexPassingTest(ObjCBlock5 predicate) {
+    return _lib._objc_msgSend_116(
+        _id, _lib._sel_indexPassingTest_1, predicate._impl);
   }
 
-  int indexWithOptions_passingTest(int opts, NSObject predicate) {
-    return _lib._objc_msgSend_115(
-        _id, _lib._sel_indexWithOptions_passingTest_1, opts, predicate._id);
+  int indexWithOptions_passingTest(int opts, ObjCBlock5 predicate) {
+    return _lib._objc_msgSend_117(
+        _id, _lib._sel_indexWithOptions_passingTest_1, opts, predicate._impl);
   }
 
   int indexInRange_options_passingTest(
-      NSRange range, int opts, NSObject predicate) {
-    return _lib._objc_msgSend_116(
+      NSRange range, int opts, ObjCBlock5 predicate) {
+    return _lib._objc_msgSend_118(
         _id,
         _lib._sel_indexInRange_options_passingTest_1,
         range,
         opts,
-        predicate._id);
+        predicate._impl);
   }
 
-  NSIndexSet indexesPassingTest(NSObject predicate) {
-    final _ret = _lib._objc_msgSend_117(
-        _id, _lib._sel_indexesPassingTest_1, predicate._id);
+  NSIndexSet indexesPassingTest(ObjCBlock5 predicate) {
+    final _ret = _lib._objc_msgSend_119(
+        _id, _lib._sel_indexesPassingTest_1, predicate._impl);
     return NSIndexSet._(_ret, _lib);
   }
 
-  NSIndexSet indexesWithOptions_passingTest(int opts, NSObject predicate) {
-    final _ret = _lib._objc_msgSend_118(
-        _id, _lib._sel_indexesWithOptions_passingTest_1, opts, predicate._id);
+  NSIndexSet indexesWithOptions_passingTest(int opts, ObjCBlock5 predicate) {
+    final _ret = _lib._objc_msgSend_120(
+        _id, _lib._sel_indexesWithOptions_passingTest_1, opts, predicate._impl);
     return NSIndexSet._(_ret, _lib);
   }
 
   NSIndexSet indexesInRange_options_passingTest(
-      NSRange range, int opts, NSObject predicate) {
-    final _ret = _lib._objc_msgSend_119(
+      NSRange range, int opts, ObjCBlock5 predicate) {
+    final _ret = _lib._objc_msgSend_121(
         _id,
         _lib._sel_indexesInRange_options_passingTest_1,
         range,
         opts,
-        predicate._id);
+        predicate._impl);
     return NSIndexSet._(_ret, _lib);
   }
 
-  void enumerateRangesUsingBlock(NSObject block) {
-    _lib._objc_msgSend_8(_id, _lib._sel_enumerateRangesUsingBlock_1, block._id);
+  void enumerateRangesUsingBlock(ObjCBlock6 block) {
+    _lib._objc_msgSend_122(
+        _id, _lib._sel_enumerateRangesUsingBlock_1, block._impl);
   }
 
-  void enumerateRangesWithOptions_usingBlock(int opts, NSObject block) {
-    _lib._objc_msgSend_112(_id,
-        _lib._sel_enumerateRangesWithOptions_usingBlock_1, opts, block._id);
+  void enumerateRangesWithOptions_usingBlock(int opts, ObjCBlock6 block) {
+    _lib._objc_msgSend_123(_id,
+        _lib._sel_enumerateRangesWithOptions_usingBlock_1, opts, block._impl);
   }
 
   void enumerateRangesInRange_options_usingBlock(
-      NSRange range, int opts, NSObject block) {
-    _lib._objc_msgSend_113(
+      NSRange range, int opts, ObjCBlock6 block) {
+    _lib._objc_msgSend_124(
         _id,
         _lib._sel_enumerateRangesInRange_options_usingBlock_1,
         range,
         opts,
-        block._id);
+        block._impl);
   }
 
   static NSIndexSet new1(StringTestObjCLibrary _lib) {
@@ -7069,6 +7656,104 @@
   }
 }
 
+void _ObjCBlock4_fnPtrTrampoline(
+    ffi.Pointer<_ObjCBlock> block, int arg0, ffi.Pointer<ffi.Uint8> arg1) {
+  return block.ref.target
+          .cast<
+              ffi.NativeFunction<
+                  ffi.Void Function(
+                      NSUInteger arg0, ffi.Pointer<ffi.Uint8> arg1)>>()
+          .asFunction<void Function(int arg0, ffi.Pointer<ffi.Uint8> arg1)>()(
+      arg0, arg1);
+}
+
+class ObjCBlock4 {
+  final ffi.Pointer<_ObjCBlock> _impl;
+  final StringTestObjCLibrary _lib;
+  ObjCBlock4._(this._impl, this._lib);
+
+  ObjCBlock4.fromFunctionPointer(
+      this._lib,
+      ffi.Pointer<
+              ffi.NativeFunction<
+                  ffi.Void Function(
+                      NSUInteger arg0, ffi.Pointer<ffi.Uint8> arg1)>>
+          ptr)
+      : _impl = _lib._newBlock1(
+            ffi.Pointer.fromFunction<
+                        ffi.Void Function(ffi.Pointer<_ObjCBlock> block,
+                            NSUInteger arg0, ffi.Pointer<ffi.Uint8> arg1)>(
+                    _ObjCBlock4_fnPtrTrampoline)
+                .cast(),
+            ptr.cast());
+  ffi.Pointer<_ObjCBlock> get pointer => _impl;
+}
+
+int _ObjCBlock5_fnPtrTrampoline(
+    ffi.Pointer<_ObjCBlock> block, int arg0, ffi.Pointer<ffi.Uint8> arg1) {
+  return block.ref.target
+          .cast<
+              ffi.NativeFunction<
+                  ffi.Uint8 Function(
+                      NSUInteger arg0, ffi.Pointer<ffi.Uint8> arg1)>>()
+          .asFunction<int Function(int arg0, ffi.Pointer<ffi.Uint8> arg1)>()(
+      arg0, arg1);
+}
+
+class ObjCBlock5 {
+  final ffi.Pointer<_ObjCBlock> _impl;
+  final StringTestObjCLibrary _lib;
+  ObjCBlock5._(this._impl, this._lib);
+
+  ObjCBlock5.fromFunctionPointer(
+      this._lib,
+      ffi.Pointer<
+              ffi.NativeFunction<
+                  ffi.Uint8 Function(
+                      NSUInteger arg0, ffi.Pointer<ffi.Uint8> arg1)>>
+          ptr)
+      : _impl = _lib._newBlock1(
+            ffi.Pointer.fromFunction<
+                        ffi.Uint8 Function(ffi.Pointer<_ObjCBlock> block,
+                            NSUInteger arg0, ffi.Pointer<ffi.Uint8> arg1)>(
+                    _ObjCBlock5_fnPtrTrampoline, 0)
+                .cast(),
+            ptr.cast());
+  ffi.Pointer<_ObjCBlock> get pointer => _impl;
+}
+
+void _ObjCBlock6_fnPtrTrampoline(
+    ffi.Pointer<_ObjCBlock> block, NSRange arg0, ffi.Pointer<ffi.Uint8> arg1) {
+  return block.ref.target
+      .cast<
+          ffi.NativeFunction<
+              ffi.Void Function(NSRange arg0, ffi.Pointer<ffi.Uint8> arg1)>>()
+      .asFunction<
+          void Function(
+              NSRange arg0, ffi.Pointer<ffi.Uint8> arg1)>()(arg0, arg1);
+}
+
+class ObjCBlock6 {
+  final ffi.Pointer<_ObjCBlock> _impl;
+  final StringTestObjCLibrary _lib;
+  ObjCBlock6._(this._impl, this._lib);
+
+  ObjCBlock6.fromFunctionPointer(
+      this._lib,
+      ffi.Pointer<
+              ffi.NativeFunction<
+                  ffi.Void Function(NSRange arg0, ffi.Pointer<ffi.Uint8> arg1)>>
+          ptr)
+      : _impl = _lib._newBlock1(
+            ffi.Pointer.fromFunction<
+                        ffi.Void Function(ffi.Pointer<_ObjCBlock> block,
+                            NSRange arg0, ffi.Pointer<ffi.Uint8> arg1)>(
+                    _ObjCBlock6_fnPtrTrampoline)
+                .cast(),
+            ptr.cast());
+  ffi.Pointer<_ObjCBlock> get pointer => _impl;
+}
+
 class NSMutableIndexSet extends NSIndexSet {
   NSMutableIndexSet._(ffi.Pointer<ObjCObject> id, StringTestObjCLibrary lib)
       : super._(id, lib);
@@ -7097,23 +7782,23 @@
   }
 
   void addIndex(int value) {
-    _lib._objc_msgSend_40(_id, _lib._sel_addIndex_1, value);
+    _lib._objc_msgSend_41(_id, _lib._sel_addIndex_1, value);
   }
 
   void removeIndex(int value) {
-    _lib._objc_msgSend_40(_id, _lib._sel_removeIndex_1, value);
+    _lib._objc_msgSend_41(_id, _lib._sel_removeIndex_1, value);
   }
 
   void addIndexesInRange(NSRange range) {
-    _lib._objc_msgSend_120(_id, _lib._sel_addIndexesInRange_1, range);
+    _lib._objc_msgSend_125(_id, _lib._sel_addIndexesInRange_1, range);
   }
 
   void removeIndexesInRange(NSRange range) {
-    _lib._objc_msgSend_120(_id, _lib._sel_removeIndexesInRange_1, range);
+    _lib._objc_msgSend_125(_id, _lib._sel_removeIndexesInRange_1, range);
   }
 
   void shiftIndexesStartingAtIndex_by(int index, int delta) {
-    _lib._objc_msgSend_121(
+    _lib._objc_msgSend_126(
         _id, _lib._sel_shiftIndexesStartingAtIndex_by_1, index, delta);
   }
 
@@ -7125,14 +7810,14 @@
 
   static NSMutableIndexSet indexSetWithIndex(
       StringTestObjCLibrary _lib, int value) {
-    final _ret = _lib._objc_msgSend_107(
+    final _ret = _lib._objc_msgSend_108(
         _lib._class_NSMutableIndexSet1, _lib._sel_indexSetWithIndex_1, value);
     return NSMutableIndexSet._(_ret, _lib);
   }
 
   static NSMutableIndexSet indexSetWithIndexesInRange(
       StringTestObjCLibrary _lib, NSRange range) {
-    final _ret = _lib._objc_msgSend_108(_lib._class_NSMutableIndexSet1,
+    final _ret = _lib._objc_msgSend_109(_lib._class_NSMutableIndexSet1,
         _lib._sel_indexSetWithIndexesInRange_1, range);
     return NSMutableIndexSet._(_ret, _lib);
   }
@@ -7186,7 +7871,7 @@
           NSObject? removes,
           NSObject? removedObjects,
           NSObject? changes) {
-    final _ret = _lib._objc_msgSend_122(
+    final _ret = _lib._objc_msgSend_127(
         _id,
         _lib._sel_initWithInsertIndexes_insertedObjects_removeIndexes_removedObjects_additionalChanges_1,
         inserts?._id ?? ffi.nullptr,
@@ -7203,7 +7888,7 @@
           NSObject? insertedObjects,
           NSObject? removes,
           NSObject? removedObjects) {
-    final _ret = _lib._objc_msgSend_123(
+    final _ret = _lib._objc_msgSend_128(
         _id,
         _lib._sel_initWithInsertIndexes_insertedObjects_removeIndexes_removedObjects_1,
         inserts?._id ?? ffi.nullptr,
@@ -7263,7 +7948,7 @@
   }
 
   NSObject objectAtIndex(int index) {
-    final _ret = _lib._objc_msgSend_107(_id, _lib._sel_objectAtIndex_1, index);
+    final _ret = _lib._objc_msgSend_108(_id, _lib._sel_objectAtIndex_1, index);
     return NSObject._(_ret, _lib);
   }
 
@@ -7275,7 +7960,7 @@
 
   NSArray initWithObjects_count(
       ffi.Pointer<ffi.Pointer<ObjCObject>> objects, int cnt) {
-    final _ret = _lib._objc_msgSend_124(
+    final _ret = _lib._objc_msgSend_129(
         _id, _lib._sel_initWithObjects_count_1, objects, cnt);
     return NSArray._(_ret, _lib);
   }
@@ -7308,7 +7993,7 @@
   }
 
   NSString descriptionWithLocale_indent(NSObject locale, int level) {
-    final _ret = _lib._objc_msgSend_125(
+    final _ret = _lib._objc_msgSend_130(
         _id, _lib._sel_descriptionWithLocale_indent_1, locale._id, level);
     return NSString._(_ret, _lib);
   }
@@ -7321,25 +8006,25 @@
 
   void getObjects_range(
       ffi.Pointer<ffi.Pointer<ObjCObject>> objects, NSRange range) {
-    _lib._objc_msgSend_126(_id, _lib._sel_getObjects_range_1, objects, range);
+    _lib._objc_msgSend_131(_id, _lib._sel_getObjects_range_1, objects, range);
   }
 
   int indexOfObject(NSObject anObject) {
-    return _lib._objc_msgSend_114(_id, _lib._sel_indexOfObject_1, anObject._id);
+    return _lib._objc_msgSend_132(_id, _lib._sel_indexOfObject_1, anObject._id);
   }
 
   int indexOfObject_inRange(NSObject anObject, NSRange range) {
-    return _lib._objc_msgSend_127(
+    return _lib._objc_msgSend_133(
         _id, _lib._sel_indexOfObject_inRange_1, anObject._id, range);
   }
 
   int indexOfObjectIdenticalTo(NSObject anObject) {
-    return _lib._objc_msgSend_114(
+    return _lib._objc_msgSend_132(
         _id, _lib._sel_indexOfObjectIdenticalTo_1, anObject._id);
   }
 
   int indexOfObjectIdenticalTo_inRange(NSObject anObject, NSRange range) {
-    return _lib._objc_msgSend_127(
+    return _lib._objc_msgSend_133(
         _id, _lib._sel_indexOfObjectIdenticalTo_inRange_1, anObject._id, range);
   }
 
@@ -7365,7 +8050,7 @@
 
   bool writeToURL_error(
       NSObject? url, ffi.Pointer<ffi.Pointer<ObjCObject>> error) {
-    return _lib._objc_msgSend_128(
+    return _lib._objc_msgSend_134(
         _id, _lib._sel_writeToURL_error_1, url?._id ?? ffi.nullptr, error);
   }
 
@@ -7376,7 +8061,7 @@
 
   void makeObjectsPerformSelector_withObject(
       ffi.Pointer<ObjCSel> aSelector, NSObject argument) {
-    _lib._objc_msgSend_129(
+    _lib._objc_msgSend_135(
         _id,
         _lib._sel_makeObjectsPerformSelector_withObject_1,
         aSelector,
@@ -7385,80 +8070,83 @@
 
   NSObject objectAtIndexedSubscript(int idx) {
     final _ret =
-        _lib._objc_msgSend_107(_id, _lib._sel_objectAtIndexedSubscript_1, idx);
+        _lib._objc_msgSend_108(_id, _lib._sel_objectAtIndexedSubscript_1, idx);
     return NSObject._(_ret, _lib);
   }
 
-  void enumerateObjectsUsingBlock(NSObject block) {
-    _lib._objc_msgSend_8(
-        _id, _lib._sel_enumerateObjectsUsingBlock_1, block._id);
+  void enumerateObjectsUsingBlock(ObjCBlock7 block) {
+    _lib._objc_msgSend_136(
+        _id, _lib._sel_enumerateObjectsUsingBlock_1, block._impl);
   }
 
-  void enumerateObjectsWithOptions_usingBlock(int opts, NSObject block) {
-    _lib._objc_msgSend_112(_id,
-        _lib._sel_enumerateObjectsWithOptions_usingBlock_1, opts, block._id);
+  void enumerateObjectsWithOptions_usingBlock(int opts, ObjCBlock7 block) {
+    _lib._objc_msgSend_137(_id,
+        _lib._sel_enumerateObjectsWithOptions_usingBlock_1, opts, block._impl);
   }
 
   void enumerateObjectsAtIndexes_options_usingBlock(
-      NSObject? s, int opts, NSObject block) {
-    _lib._objc_msgSend_130(
+      NSObject? s, int opts, ObjCBlock7 block) {
+    _lib._objc_msgSend_138(
         _id,
         _lib._sel_enumerateObjectsAtIndexes_options_usingBlock_1,
         s?._id ?? ffi.nullptr,
         opts,
-        block._id);
+        block._impl);
   }
 
-  int indexOfObjectPassingTest(NSObject predicate) {
-    return _lib._objc_msgSend_114(
-        _id, _lib._sel_indexOfObjectPassingTest_1, predicate._id);
+  int indexOfObjectPassingTest(ObjCBlock8 predicate) {
+    return _lib._objc_msgSend_139(
+        _id, _lib._sel_indexOfObjectPassingTest_1, predicate._impl);
   }
 
-  int indexOfObjectWithOptions_passingTest(int opts, NSObject predicate) {
-    return _lib._objc_msgSend_115(_id,
-        _lib._sel_indexOfObjectWithOptions_passingTest_1, opts, predicate._id);
+  int indexOfObjectWithOptions_passingTest(int opts, ObjCBlock8 predicate) {
+    return _lib._objc_msgSend_140(
+        _id,
+        _lib._sel_indexOfObjectWithOptions_passingTest_1,
+        opts,
+        predicate._impl);
   }
 
   int indexOfObjectAtIndexes_options_passingTest(
-      NSObject? s, int opts, NSObject predicate) {
-    return _lib._objc_msgSend_131(
+      NSObject? s, int opts, ObjCBlock8 predicate) {
+    return _lib._objc_msgSend_141(
         _id,
         _lib._sel_indexOfObjectAtIndexes_options_passingTest_1,
         s?._id ?? ffi.nullptr,
         opts,
-        predicate._id);
+        predicate._impl);
   }
 
-  NSIndexSet indexesOfObjectsPassingTest(NSObject predicate) {
-    final _ret = _lib._objc_msgSend_117(
-        _id, _lib._sel_indexesOfObjectsPassingTest_1, predicate._id);
+  NSIndexSet indexesOfObjectsPassingTest(ObjCBlock8 predicate) {
+    final _ret = _lib._objc_msgSend_142(
+        _id, _lib._sel_indexesOfObjectsPassingTest_1, predicate._impl);
     return NSIndexSet._(_ret, _lib);
   }
 
   NSIndexSet indexesOfObjectsWithOptions_passingTest(
-      int opts, NSObject predicate) {
-    final _ret = _lib._objc_msgSend_118(
+      int opts, ObjCBlock8 predicate) {
+    final _ret = _lib._objc_msgSend_143(
         _id,
         _lib._sel_indexesOfObjectsWithOptions_passingTest_1,
         opts,
-        predicate._id);
+        predicate._impl);
     return NSIndexSet._(_ret, _lib);
   }
 
   NSIndexSet indexesOfObjectsAtIndexes_options_passingTest(
-      NSObject? s, int opts, NSObject predicate) {
-    final _ret = _lib._objc_msgSend_132(
+      NSObject? s, int opts, ObjCBlock8 predicate) {
+    final _ret = _lib._objc_msgSend_144(
         _id,
         _lib._sel_indexesOfObjectsAtIndexes_options_passingTest_1,
         s?._id ?? ffi.nullptr,
         opts,
-        predicate._id);
+        predicate._impl);
     return NSIndexSet._(_ret, _lib);
   }
 
   int indexOfObject_inSortedRange_options_usingComparator(
       NSObject obj, NSRange r, int opts, NSComparator cmp) {
-    return _lib._objc_msgSend_133(
+    return _lib._objc_msgSend_145(
         _id,
         _lib._sel_indexOfObject_inSortedRange_options_usingComparator_1,
         obj._id,
@@ -7481,7 +8169,7 @@
 
   static NSArray arrayWithObjects_count(StringTestObjCLibrary _lib,
       ffi.Pointer<ffi.Pointer<ObjCObject>> objects, int cnt) {
-    final _ret = _lib._objc_msgSend_124(
+    final _ret = _lib._objc_msgSend_129(
         _lib._class_NSArray1, _lib._sel_arrayWithObjects_count_1, objects, cnt);
     return NSArray._(_ret, _lib);
   }
@@ -7512,22 +8200,22 @@
   }
 
   NSArray initWithArray_copyItems(NSObject? array, bool flag) {
-    final _ret = _lib._objc_msgSend_134(_id,
+    final _ret = _lib._objc_msgSend_146(_id,
         _lib._sel_initWithArray_copyItems_1, array?._id ?? ffi.nullptr, flag);
     return NSArray._(_ret, _lib);
   }
 
   void getObjects(ffi.Pointer<ffi.Pointer<ObjCObject>> objects) {
-    _lib._objc_msgSend_135(_id, _lib._sel_getObjects_1, objects);
+    _lib._objc_msgSend_147(_id, _lib._sel_getObjects_1, objects);
   }
 
   bool writeToFile_atomically(NSObject? path, bool useAuxiliaryFile) {
-    return _lib._objc_msgSend_71(_id, _lib._sel_writeToFile_atomically_1,
+    return _lib._objc_msgSend_72(_id, _lib._sel_writeToFile_atomically_1,
         path?._id ?? ffi.nullptr, useAuxiliaryFile);
   }
 
   bool writeToURL_atomically(NSObject? url, bool atomically) {
-    return _lib._objc_msgSend_71(_id, _lib._sel_writeToURL_atomically_1,
+    return _lib._objc_msgSend_72(_id, _lib._sel_writeToURL_atomically_1,
         url?._id ?? ffi.nullptr, atomically);
   }
 
@@ -7542,13 +8230,122 @@
   }
 }
 
+void _ObjCBlock7_fnPtrTrampoline(ffi.Pointer<_ObjCBlock> block,
+    ffi.Pointer<ObjCObject> arg0, int arg1, ffi.Pointer<ffi.Uint8> arg2) {
+  return block.ref.target
+      .cast<
+          ffi.NativeFunction<
+              ffi.Void Function(ffi.Pointer<ObjCObject> arg0, NSUInteger arg1,
+                  ffi.Pointer<ffi.Uint8> arg2)>>()
+      .asFunction<
+          void Function(ffi.Pointer<ObjCObject> arg0, int arg1,
+              ffi.Pointer<ffi.Uint8> arg2)>()(arg0, arg1, arg2);
+}
+
+class ObjCBlock7 {
+  final ffi.Pointer<_ObjCBlock> _impl;
+  final StringTestObjCLibrary _lib;
+  ObjCBlock7._(this._impl, this._lib);
+
+  ObjCBlock7.fromFunctionPointer(
+      this._lib,
+      ffi.Pointer<
+              ffi.NativeFunction<
+                  ffi.Void Function(ffi.Pointer<ObjCObject> arg0,
+                      NSUInteger arg1, ffi.Pointer<ffi.Uint8> arg2)>>
+          ptr)
+      : _impl = _lib._newBlock1(
+            ffi.Pointer.fromFunction<
+                        ffi.Void Function(
+                            ffi.Pointer<_ObjCBlock> block,
+                            ffi.Pointer<ObjCObject> arg0,
+                            NSUInteger arg1,
+                            ffi.Pointer<ffi.Uint8> arg2)>(
+                    _ObjCBlock7_fnPtrTrampoline)
+                .cast(),
+            ptr.cast());
+  ffi.Pointer<_ObjCBlock> get pointer => _impl;
+}
+
+int _ObjCBlock8_fnPtrTrampoline(ffi.Pointer<_ObjCBlock> block,
+    ffi.Pointer<ObjCObject> arg0, int arg1, ffi.Pointer<ffi.Uint8> arg2) {
+  return block.ref.target
+      .cast<
+          ffi.NativeFunction<
+              ffi.Uint8 Function(ffi.Pointer<ObjCObject> arg0, NSUInteger arg1,
+                  ffi.Pointer<ffi.Uint8> arg2)>>()
+      .asFunction<
+          int Function(ffi.Pointer<ObjCObject> arg0, int arg1,
+              ffi.Pointer<ffi.Uint8> arg2)>()(arg0, arg1, arg2);
+}
+
+class ObjCBlock8 {
+  final ffi.Pointer<_ObjCBlock> _impl;
+  final StringTestObjCLibrary _lib;
+  ObjCBlock8._(this._impl, this._lib);
+
+  ObjCBlock8.fromFunctionPointer(
+      this._lib,
+      ffi.Pointer<
+              ffi.NativeFunction<
+                  ffi.Uint8 Function(ffi.Pointer<ObjCObject> arg0,
+                      NSUInteger arg1, ffi.Pointer<ffi.Uint8> arg2)>>
+          ptr)
+      : _impl = _lib._newBlock1(
+            ffi.Pointer.fromFunction<
+                        ffi.Uint8 Function(
+                            ffi.Pointer<_ObjCBlock> block,
+                            ffi.Pointer<ObjCObject> arg0,
+                            NSUInteger arg1,
+                            ffi.Pointer<ffi.Uint8> arg2)>(
+                    _ObjCBlock8_fnPtrTrampoline, 0)
+                .cast(),
+            ptr.cast());
+  ffi.Pointer<_ObjCBlock> get pointer => _impl;
+}
+
 abstract class NSBinarySearchingOptions {
   static const int NSBinarySearchingFirstEqual = 256;
   static const int NSBinarySearchingLastEqual = 512;
   static const int NSBinarySearchingInsertionIndex = 1024;
 }
 
-typedef NSComparator = ffi.Pointer<ObjCObject>;
+typedef NSComparator = ffi.Pointer<_ObjCBlock>;
+int _ObjCBlock9_fnPtrTrampoline(ffi.Pointer<_ObjCBlock> block,
+    ffi.Pointer<ObjCObject> arg0, ffi.Pointer<ObjCObject> arg1) {
+  return block.ref.target
+      .cast<
+          ffi.NativeFunction<
+              ffi.Int32 Function(ffi.Pointer<ObjCObject> arg0,
+                  ffi.Pointer<ObjCObject> arg1)>>()
+      .asFunction<
+          int Function(ffi.Pointer<ObjCObject> arg0,
+              ffi.Pointer<ObjCObject> arg1)>()(arg0, arg1);
+}
+
+class ObjCBlock9 {
+  final ffi.Pointer<_ObjCBlock> _impl;
+  final StringTestObjCLibrary _lib;
+  ObjCBlock9._(this._impl, this._lib);
+
+  ObjCBlock9.fromFunctionPointer(
+      this._lib,
+      ffi.Pointer<
+              ffi.NativeFunction<
+                  ffi.Int32 Function(ffi.Pointer<ObjCObject> arg0,
+                      ffi.Pointer<ObjCObject> arg1)>>
+          ptr)
+      : _impl = _lib._newBlock1(
+            ffi.Pointer.fromFunction<
+                        ffi.Int32 Function(
+                            ffi.Pointer<_ObjCBlock> block,
+                            ffi.Pointer<ObjCObject> arg0,
+                            ffi.Pointer<ObjCObject> arg1)>(
+                    _ObjCBlock9_fnPtrTrampoline, 0)
+                .cast(),
+            ptr.cast());
+  ffi.Pointer<_ObjCBlock> get pointer => _impl;
+}
 
 class NSMutableArray extends NSArray {
   NSMutableArray._(ffi.Pointer<ObjCObject> id, StringTestObjCLibrary lib)
@@ -7568,7 +8365,7 @@
   }
 
   void insertObject_atIndex(NSObject anObject, int index) {
-    _lib._objc_msgSend_136(
+    _lib._objc_msgSend_148(
         _id, _lib._sel_insertObject_atIndex_1, anObject._id, index);
   }
 
@@ -7577,11 +8374,11 @@
   }
 
   void removeObjectAtIndex(int index) {
-    _lib._objc_msgSend_40(_id, _lib._sel_removeObjectAtIndex_1, index);
+    _lib._objc_msgSend_41(_id, _lib._sel_removeObjectAtIndex_1, index);
   }
 
   void replaceObjectAtIndex_withObject(int index, NSObject anObject) {
-    _lib._objc_msgSend_137(
+    _lib._objc_msgSend_149(
         _id, _lib._sel_replaceObjectAtIndex_withObject_1, index, anObject._id);
   }
 
@@ -7593,7 +8390,7 @@
 
   NSMutableArray initWithCapacity(int numItems) {
     final _ret =
-        _lib._objc_msgSend_107(_id, _lib._sel_initWithCapacity_1, numItems);
+        _lib._objc_msgSend_108(_id, _lib._sel_initWithCapacity_1, numItems);
     return NSMutableArray._(_ret, _lib);
   }
 
@@ -7610,7 +8407,7 @@
   }
 
   void exchangeObjectAtIndex_withObjectAtIndex(int idx1, int idx2) {
-    _lib._objc_msgSend_138(
+    _lib._objc_msgSend_150(
         _id, _lib._sel_exchangeObjectAtIndex_withObjectAtIndex_1, idx1, idx2);
   }
 
@@ -7619,7 +8416,7 @@
   }
 
   void removeObject_inRange(NSObject anObject, NSRange range) {
-    _lib._objc_msgSend_139(
+    _lib._objc_msgSend_151(
         _id, _lib._sel_removeObject_inRange_1, anObject._id, range);
   }
 
@@ -7628,7 +8425,7 @@
   }
 
   void removeObjectIdenticalTo_inRange(NSObject anObject, NSRange range) {
-    _lib._objc_msgSend_139(
+    _lib._objc_msgSend_151(
         _id, _lib._sel_removeObjectIdenticalTo_inRange_1, anObject._id, range);
   }
 
@@ -7639,7 +8436,7 @@
 
   void removeObjectsFromIndices_numIndices(
       ffi.Pointer<NSUInteger> indices, int cnt) {
-    _lib._objc_msgSend_140(
+    _lib._objc_msgSend_152(
         _id, _lib._sel_removeObjectsFromIndices_numIndices_1, indices, cnt);
   }
 
@@ -7649,12 +8446,12 @@
   }
 
   void removeObjectsInRange(NSRange range) {
-    _lib._objc_msgSend_120(_id, _lib._sel_removeObjectsInRange_1, range);
+    _lib._objc_msgSend_125(_id, _lib._sel_removeObjectsInRange_1, range);
   }
 
   void replaceObjectsInRange_withObjectsFromArray_range(
       NSRange range, NSObject? otherArray, NSRange otherRange) {
-    _lib._objc_msgSend_141(
+    _lib._objc_msgSend_153(
         _id,
         _lib._sel_replaceObjectsInRange_withObjectsFromArray_range_1,
         range,
@@ -7664,7 +8461,7 @@
 
   void replaceObjectsInRange_withObjectsFromArray(
       NSRange range, NSObject? otherArray) {
-    _lib._objc_msgSend_142(
+    _lib._objc_msgSend_154(
         _id,
         _lib._sel_replaceObjectsInRange_withObjectsFromArray_1,
         range,
@@ -7683,7 +8480,7 @@
                       ffi.Pointer<ObjCObject>, ffi.Pointer<ffi.Void>)>>
           compare,
       ffi.Pointer<ffi.Void> context) {
-    _lib._objc_msgSend_143(
+    _lib._objc_msgSend_155(
         _id, _lib._sel_sortUsingFunction_context_1, compare, context);
   }
 
@@ -7692,7 +8489,7 @@
   }
 
   void insertObjects_atIndexes(NSObject? objects, NSObject? indexes) {
-    _lib._objc_msgSend_144(_id, _lib._sel_insertObjects_atIndexes_1,
+    _lib._objc_msgSend_156(_id, _lib._sel_insertObjects_atIndexes_1,
         objects?._id ?? ffi.nullptr, indexes?._id ?? ffi.nullptr);
   }
 
@@ -7703,27 +8500,27 @@
 
   void replaceObjectsAtIndexes_withObjects(
       NSObject? indexes, NSObject? objects) {
-    _lib._objc_msgSend_144(_id, _lib._sel_replaceObjectsAtIndexes_withObjects_1,
+    _lib._objc_msgSend_156(_id, _lib._sel_replaceObjectsAtIndexes_withObjects_1,
         indexes?._id ?? ffi.nullptr, objects?._id ?? ffi.nullptr);
   }
 
   void setObject_atIndexedSubscript(NSObject obj, int idx) {
-    _lib._objc_msgSend_136(
+    _lib._objc_msgSend_148(
         _id, _lib._sel_setObject_atIndexedSubscript_1, obj._id, idx);
   }
 
   void sortUsingComparator(NSComparator cmptr) {
-    _lib._objc_msgSend_8(_id, _lib._sel_sortUsingComparator_1, cmptr);
+    _lib._objc_msgSend_157(_id, _lib._sel_sortUsingComparator_1, cmptr);
   }
 
   void sortWithOptions_usingComparator(int opts, NSComparator cmptr) {
-    _lib._objc_msgSend_145(
+    _lib._objc_msgSend_158(
         _id, _lib._sel_sortWithOptions_usingComparator_1, opts, cmptr);
   }
 
   static NSMutableArray arrayWithCapacity(
       StringTestObjCLibrary _lib, int numItems) {
-    final _ret = _lib._objc_msgSend_107(
+    final _ret = _lib._objc_msgSend_108(
         _lib._class_NSMutableArray1, _lib._sel_arrayWithCapacity_1, numItems);
     return NSMutableArray._(_ret, _lib);
   }
@@ -7748,7 +8545,7 @@
 
   static NSMutableArray arrayWithObjects_count(StringTestObjCLibrary _lib,
       ffi.Pointer<ffi.Pointer<ObjCObject>> objects, int cnt) {
-    final _ret = _lib._objc_msgSend_124(_lib._class_NSMutableArray1,
+    final _ret = _lib._objc_msgSend_129(_lib._class_NSMutableArray1,
         _lib._sel_arrayWithObjects_count_1, objects, cnt);
     return NSMutableArray._(_ret, _lib);
   }
@@ -7811,13 +8608,13 @@
   }
 
   void registerDataRepresentationForTypeIdentifier_visibility_loadHandler(
-      NSObject? typeIdentifier, int visibility, NSObject loadHandler) {
-    _lib._objc_msgSend_146(
+      NSObject? typeIdentifier, int visibility, ObjCBlock10 loadHandler) {
+    _lib._objc_msgSend_159(
         _id,
         _lib._sel_registerDataRepresentationForTypeIdentifier_visibility_loadHandler_1,
         typeIdentifier?._id ?? ffi.nullptr,
         visibility,
-        loadHandler._id);
+        loadHandler._impl);
   }
 
   void
@@ -7825,14 +8622,14 @@
           NSObject? typeIdentifier,
           int fileOptions,
           int visibility,
-          NSObject loadHandler) {
-    _lib._objc_msgSend_147(
+          ObjCBlock12 loadHandler) {
+    _lib._objc_msgSend_160(
         _id,
         _lib._sel_registerFileRepresentationForTypeIdentifier_fileOptions_visibility_loadHandler_1,
         typeIdentifier?._id ?? ffi.nullptr,
         fileOptions,
         visibility,
-        loadHandler._id);
+        loadHandler._impl);
   }
 
   NSObject? get registeredTypeIdentifiers {
@@ -7850,7 +8647,7 @@
 
   bool hasRepresentationConformingToTypeIdentifier_fileOptions(
       NSObject? typeIdentifier, int fileOptions) {
-    return _lib._objc_msgSend_148(
+    return _lib._objc_msgSend_161(
         _id,
         _lib._sel_hasRepresentationConformingToTypeIdentifier_fileOptions_1,
         typeIdentifier?._id ?? ffi.nullptr,
@@ -7858,32 +8655,32 @@
   }
 
   NSProgress loadDataRepresentationForTypeIdentifier_completionHandler(
-      NSObject? typeIdentifier, NSObject completionHandler) {
-    final _ret = _lib._objc_msgSend_149(
+      NSObject? typeIdentifier, ObjCBlock11 completionHandler) {
+    final _ret = _lib._objc_msgSend_162(
         _id,
         _lib._sel_loadDataRepresentationForTypeIdentifier_completionHandler_1,
         typeIdentifier?._id ?? ffi.nullptr,
-        completionHandler._id);
+        completionHandler._impl);
     return NSProgress._(_ret, _lib);
   }
 
   NSProgress loadFileRepresentationForTypeIdentifier_completionHandler(
-      NSObject? typeIdentifier, NSObject completionHandler) {
-    final _ret = _lib._objc_msgSend_149(
+      NSObject? typeIdentifier, ObjCBlock11 completionHandler) {
+    final _ret = _lib._objc_msgSend_162(
         _id,
         _lib._sel_loadFileRepresentationForTypeIdentifier_completionHandler_1,
         typeIdentifier?._id ?? ffi.nullptr,
-        completionHandler._id);
+        completionHandler._impl);
     return NSProgress._(_ret, _lib);
   }
 
   NSProgress loadInPlaceFileRepresentationForTypeIdentifier_completionHandler(
-      NSObject? typeIdentifier, NSObject completionHandler) {
-    final _ret = _lib._objc_msgSend_149(
+      NSObject? typeIdentifier, ObjCBlock13 completionHandler) {
+    final _ret = _lib._objc_msgSend_163(
         _id,
         _lib._sel_loadInPlaceFileRepresentationForTypeIdentifier_completionHandler_1,
         typeIdentifier?._id ?? ffi.nullptr,
-        completionHandler._id);
+        completionHandler._impl);
     return NSProgress._(_ret, _lib);
   }
 
@@ -7904,18 +8701,18 @@
   }
 
   void registerObject_visibility(NSObject? object, int visibility) {
-    _lib._objc_msgSend_150(_id, _lib._sel_registerObject_visibility_1,
+    _lib._objc_msgSend_164(_id, _lib._sel_registerObject_visibility_1,
         object?._id ?? ffi.nullptr, visibility);
   }
 
   void registerObjectOfClass_visibility_loadHandler(
-      NSObject? aClass, int visibility, NSObject loadHandler) {
-    _lib._objc_msgSend_146(
+      NSObject? aClass, int visibility, ObjCBlock10 loadHandler) {
+    _lib._objc_msgSend_159(
         _id,
         _lib._sel_registerObjectOfClass_visibility_loadHandler_1,
         aClass?._id ?? ffi.nullptr,
         visibility,
-        loadHandler._id);
+        loadHandler._impl);
   }
 
   bool canLoadObjectOfClass(NSObject? aClass) {
@@ -7924,18 +8721,18 @@
   }
 
   NSProgress loadObjectOfClass_completionHandler(
-      NSObject? aClass, NSObject completionHandler) {
-    final _ret = _lib._objc_msgSend_149(
+      NSObject? aClass, ObjCBlock11 completionHandler) {
+    final _ret = _lib._objc_msgSend_162(
         _id,
         _lib._sel_loadObjectOfClass_completionHandler_1,
         aClass?._id ?? ffi.nullptr,
-        completionHandler._id);
+        completionHandler._impl);
     return NSProgress._(_ret, _lib);
   }
 
   NSItemProvider initWithItem_typeIdentifier(
       NSObject? item, NSObject? typeIdentifier) {
-    final _ret = _lib._objc_msgSend_57(
+    final _ret = _lib._objc_msgSend_58(
         _id,
         _lib._sel_initWithItem_typeIdentifier_1,
         item?._id ?? ffi.nullptr,
@@ -7951,7 +8748,7 @@
 
   void registerItemForTypeIdentifier_loadHandler(
       NSObject? typeIdentifier, NSItemProviderLoadHandler loadHandler) {
-    _lib._objc_msgSend_144(
+    _lib._objc_msgSend_165(
         _id,
         _lib._sel_registerItemForTypeIdentifier_loadHandler_1,
         typeIdentifier?._id ?? ffi.nullptr,
@@ -7962,7 +8759,7 @@
       NSObject? typeIdentifier,
       NSObject? options,
       NSItemProviderCompletionHandler completionHandler) {
-    _lib._objc_msgSend_151(
+    _lib._objc_msgSend_166(
         _id,
         _lib._sel_loadItemForTypeIdentifier_options_completionHandler_1,
         typeIdentifier?._id ?? ffi.nullptr,
@@ -7971,16 +8768,16 @@
   }
 
   NSItemProviderLoadHandler get previewImageHandler {
-    return _lib._objc_msgSend_1(_id, _lib._sel_previewImageHandler1);
+    return _lib._objc_msgSend_167(_id, _lib._sel_previewImageHandler1);
   }
 
   set previewImageHandler(NSItemProviderLoadHandler value) {
-    _lib._objc_msgSend_8(_id, _lib._sel_setPreviewImageHandler_1, value);
+    _lib._objc_msgSend_168(_id, _lib._sel_setPreviewImageHandler_1, value);
   }
 
   void loadPreviewImageWithOptions_completionHandler(
       NSObject? options, NSItemProviderCompletionHandler completionHandler) {
-    _lib._objc_msgSend_144(
+    _lib._objc_msgSend_169(
         _id,
         _lib._sel_loadPreviewImageWithOptions_completionHandler_1,
         options?._id ?? ffi.nullptr,
@@ -8000,6 +8797,148 @@
   }
 }
 
+ffi.Pointer<ObjCObject> _ObjCBlock10_fnPtrTrampoline(
+    ffi.Pointer<_ObjCBlock> block, ffi.Pointer<_ObjCBlock> arg0) {
+  return block.ref.target
+      .cast<
+          ffi.NativeFunction<
+              ffi.Pointer<ObjCObject> Function(ffi.Pointer<_ObjCBlock> arg0)>>()
+      .asFunction<
+          ffi.Pointer<ObjCObject> Function(
+              ffi.Pointer<_ObjCBlock> arg0)>()(arg0);
+}
+
+class ObjCBlock10 {
+  final ffi.Pointer<_ObjCBlock> _impl;
+  final StringTestObjCLibrary _lib;
+  ObjCBlock10._(this._impl, this._lib);
+
+  ObjCBlock10.fromFunctionPointer(
+      this._lib,
+      ffi.Pointer<
+              ffi.NativeFunction<
+                  ffi.Pointer<ObjCObject> Function(
+                      ffi.Pointer<_ObjCBlock> arg0)>>
+          ptr)
+      : _impl = _lib._newBlock1(
+            ffi.Pointer.fromFunction<
+                        ffi.Pointer<ObjCObject> Function(
+                            ffi.Pointer<_ObjCBlock> block,
+                            ffi.Pointer<_ObjCBlock> arg0)>(
+                    _ObjCBlock10_fnPtrTrampoline)
+                .cast(),
+            ptr.cast());
+  ffi.Pointer<_ObjCBlock> get pointer => _impl;
+}
+
+void _ObjCBlock11_fnPtrTrampoline(ffi.Pointer<_ObjCBlock> block,
+    ffi.Pointer<ObjCObject> arg0, ffi.Pointer<ObjCObject> arg1) {
+  return block.ref.target
+      .cast<
+          ffi.NativeFunction<
+              ffi.Void Function(ffi.Pointer<ObjCObject> arg0,
+                  ffi.Pointer<ObjCObject> arg1)>>()
+      .asFunction<
+          void Function(ffi.Pointer<ObjCObject> arg0,
+              ffi.Pointer<ObjCObject> arg1)>()(arg0, arg1);
+}
+
+class ObjCBlock11 {
+  final ffi.Pointer<_ObjCBlock> _impl;
+  final StringTestObjCLibrary _lib;
+  ObjCBlock11._(this._impl, this._lib);
+
+  ObjCBlock11.fromFunctionPointer(
+      this._lib,
+      ffi.Pointer<
+              ffi.NativeFunction<
+                  ffi.Void Function(ffi.Pointer<ObjCObject> arg0,
+                      ffi.Pointer<ObjCObject> arg1)>>
+          ptr)
+      : _impl =
+            _lib._newBlock1(
+                ffi.Pointer.fromFunction<
+                            ffi.Void Function(
+                                ffi.Pointer<_ObjCBlock> block,
+                                ffi.Pointer<ObjCObject> arg0,
+                                ffi.Pointer<ObjCObject> arg1)>(
+                        _ObjCBlock11_fnPtrTrampoline)
+                    .cast(),
+                ptr.cast());
+  ffi.Pointer<_ObjCBlock> get pointer => _impl;
+}
+
+ffi.Pointer<ObjCObject> _ObjCBlock12_fnPtrTrampoline(
+    ffi.Pointer<_ObjCBlock> block, ffi.Pointer<_ObjCBlock> arg0) {
+  return block.ref.target
+      .cast<
+          ffi.NativeFunction<
+              ffi.Pointer<ObjCObject> Function(ffi.Pointer<_ObjCBlock> arg0)>>()
+      .asFunction<
+          ffi.Pointer<ObjCObject> Function(
+              ffi.Pointer<_ObjCBlock> arg0)>()(arg0);
+}
+
+class ObjCBlock12 {
+  final ffi.Pointer<_ObjCBlock> _impl;
+  final StringTestObjCLibrary _lib;
+  ObjCBlock12._(this._impl, this._lib);
+
+  ObjCBlock12.fromFunctionPointer(
+      this._lib,
+      ffi.Pointer<
+              ffi.NativeFunction<
+                  ffi.Pointer<ObjCObject> Function(
+                      ffi.Pointer<_ObjCBlock> arg0)>>
+          ptr)
+      : _impl = _lib._newBlock1(
+            ffi.Pointer.fromFunction<
+                        ffi.Pointer<ObjCObject> Function(
+                            ffi.Pointer<_ObjCBlock> block,
+                            ffi.Pointer<_ObjCBlock> arg0)>(
+                    _ObjCBlock12_fnPtrTrampoline)
+                .cast(),
+            ptr.cast());
+  ffi.Pointer<_ObjCBlock> get pointer => _impl;
+}
+
+void _ObjCBlock13_fnPtrTrampoline(ffi.Pointer<_ObjCBlock> block,
+    ffi.Pointer<ObjCObject> arg0, int arg1, ffi.Pointer<ObjCObject> arg2) {
+  return block.ref.target
+      .cast<
+          ffi.NativeFunction<
+              ffi.Void Function(ffi.Pointer<ObjCObject> arg0, ffi.Uint8 arg1,
+                  ffi.Pointer<ObjCObject> arg2)>>()
+      .asFunction<
+          void Function(ffi.Pointer<ObjCObject> arg0, int arg1,
+              ffi.Pointer<ObjCObject> arg2)>()(arg0, arg1, arg2);
+}
+
+class ObjCBlock13 {
+  final ffi.Pointer<_ObjCBlock> _impl;
+  final StringTestObjCLibrary _lib;
+  ObjCBlock13._(this._impl, this._lib);
+
+  ObjCBlock13.fromFunctionPointer(
+      this._lib,
+      ffi.Pointer<
+              ffi.NativeFunction<
+                  ffi.Void Function(ffi.Pointer<ObjCObject> arg0,
+                      ffi.Uint8 arg1, ffi.Pointer<ObjCObject> arg2)>>
+          ptr)
+      : _impl = _lib._newBlock1(
+            ffi.Pointer.fromFunction<
+                        ffi.Void Function(
+                            ffi.Pointer<_ObjCBlock> block,
+                            ffi.Pointer<ObjCObject> arg0,
+                            ffi.Uint8 arg1,
+                            ffi.Pointer<ObjCObject> arg2)>(
+                    _ObjCBlock13_fnPtrTrampoline)
+                .cast(),
+            ptr.cast());
+  ffi.Pointer<_ObjCBlock> get pointer => _impl;
+}
+
 class NSProgress extends _ObjCWrapper {
   NSProgress._(ffi.Pointer<ObjCObject> id, StringTestObjCLibrary lib)
       : super._(id, lib);
@@ -8014,8 +8953,54 @@
   }
 }
 
-typedef NSItemProviderLoadHandler = ffi.Pointer<ObjCObject>;
-typedef NSItemProviderCompletionHandler = ffi.Pointer<ObjCObject>;
+typedef NSItemProviderLoadHandler = ffi.Pointer<_ObjCBlock>;
+void _ObjCBlock14_fnPtrTrampoline(
+    ffi.Pointer<_ObjCBlock> block,
+    NSItemProviderCompletionHandler arg0,
+    ffi.Pointer<ObjCObject> arg1,
+    ffi.Pointer<ObjCObject> arg2) {
+  return block.ref.target
+      .cast<
+          ffi.NativeFunction<
+              ffi.Void Function(
+                  NSItemProviderCompletionHandler arg0,
+                  ffi.Pointer<ObjCObject> arg1,
+                  ffi.Pointer<ObjCObject> arg2)>>()
+      .asFunction<
+          void Function(
+              NSItemProviderCompletionHandler arg0,
+              ffi.Pointer<ObjCObject> arg1,
+              ffi.Pointer<ObjCObject> arg2)>()(arg0, arg1, arg2);
+}
+
+class ObjCBlock14 {
+  final ffi.Pointer<_ObjCBlock> _impl;
+  final StringTestObjCLibrary _lib;
+  ObjCBlock14._(this._impl, this._lib);
+
+  ObjCBlock14.fromFunctionPointer(
+      this._lib,
+      ffi.Pointer<
+              ffi.NativeFunction<
+                  ffi.Void Function(
+                      NSItemProviderCompletionHandler arg0,
+                      ffi.Pointer<ObjCObject> arg1,
+                      ffi.Pointer<ObjCObject> arg2)>>
+          ptr)
+      : _impl = _lib._newBlock1(
+            ffi.Pointer.fromFunction<
+                        ffi.Void Function(
+                            ffi.Pointer<_ObjCBlock> block,
+                            NSItemProviderCompletionHandler arg0,
+                            ffi.Pointer<ObjCObject> arg1,
+                            ffi.Pointer<ObjCObject> arg2)>(
+                    _ObjCBlock14_fnPtrTrampoline)
+                .cast(),
+            ptr.cast());
+  ffi.Pointer<_ObjCBlock> get pointer => _impl;
+}
+
+typedef NSItemProviderCompletionHandler = ffi.Pointer<_ObjCBlock>;
 
 abstract class NSItemProviderErrorCode {
   static const int NSItemProviderUnknownError = -1;
@@ -8040,17 +9025,17 @@
   }
 
   void replaceCharactersInRange_withString(NSRange range, NSObject? aString) {
-    _lib._objc_msgSend_142(_id, _lib._sel_replaceCharactersInRange_withString_1,
+    _lib._objc_msgSend_154(_id, _lib._sel_replaceCharactersInRange_withString_1,
         range, aString?._id ?? ffi.nullptr);
   }
 
   void insertString_atIndex(NSObject? aString, int loc) {
-    _lib._objc_msgSend_136(_id, _lib._sel_insertString_atIndex_1,
+    _lib._objc_msgSend_148(_id, _lib._sel_insertString_atIndex_1,
         aString?._id ?? ffi.nullptr, loc);
   }
 
   void deleteCharactersInRange(NSRange range) {
-    _lib._objc_msgSend_120(_id, _lib._sel_deleteCharactersInRange_1, range);
+    _lib._objc_msgSend_125(_id, _lib._sel_deleteCharactersInRange_1, range);
   }
 
   void appendString(NSObject? aString) {
@@ -8070,7 +9055,7 @@
 
   int replaceOccurrencesOfString_withString_options_range(NSObject? target,
       NSObject? replacement, int options, NSRange searchRange) {
-    return _lib._objc_msgSend_152(
+    return _lib._objc_msgSend_170(
         _id,
         _lib._sel_replaceOccurrencesOfString_withString_options_range_1,
         target?._id ?? ffi.nullptr,
@@ -8081,7 +9066,7 @@
 
   bool applyTransform_reverse_range_updatedRange(NSStringTransform transform,
       bool reverse, NSRange range, NSRangePointer resultingRange) {
-    return _lib._objc_msgSend_153(
+    return _lib._objc_msgSend_171(
         _id,
         _lib._sel_applyTransform_reverse_range_updatedRange_1,
         transform,
@@ -8092,13 +9077,13 @@
 
   NSMutableString initWithCapacity(int capacity) {
     final _ret =
-        _lib._objc_msgSend_154(_id, _lib._sel_initWithCapacity_1, capacity);
+        _lib._objc_msgSend_172(_id, _lib._sel_initWithCapacity_1, capacity);
     return NSMutableString._(_ret, _lib);
   }
 
   static NSMutableString stringWithCapacity(
       StringTestObjCLibrary _lib, int capacity) {
-    final _ret = _lib._objc_msgSend_154(
+    final _ret = _lib._objc_msgSend_172(
         _lib._class_NSMutableString1, _lib._sel_stringWithCapacity_1, capacity);
     return NSMutableString._(_ret, _lib);
   }
@@ -8125,14 +9110,14 @@
 
   static NSMutableString stringWithCharacters_length(
       StringTestObjCLibrary _lib, ffi.Pointer<unichar> characters, int length) {
-    final _ret = _lib._objc_msgSend_54(_lib._class_NSMutableString1,
+    final _ret = _lib._objc_msgSend_55(_lib._class_NSMutableString1,
         _lib._sel_stringWithCharacters_length_1, characters, length);
     return NSMutableString._(_ret, _lib);
   }
 
   static NSMutableString stringWithUTF8String(StringTestObjCLibrary _lib,
       ffi.Pointer<pkg_ffi.Char> nullTerminatedCString) {
-    final _ret = _lib._objc_msgSend_55(_lib._class_NSMutableString1,
+    final _ret = _lib._objc_msgSend_56(_lib._class_NSMutableString1,
         _lib._sel_stringWithUTF8String_1, nullTerminatedCString);
     return NSMutableString._(_ret, _lib);
   }
@@ -8153,7 +9138,7 @@
 
   static NSMutableString stringWithCString_encoding(
       StringTestObjCLibrary _lib, ffi.Pointer<pkg_ffi.Char> cString, int enc) {
-    final _ret = _lib._objc_msgSend_63(_lib._class_NSMutableString1,
+    final _ret = _lib._objc_msgSend_64(_lib._class_NSMutableString1,
         _lib._sel_stringWithCString_encoding_1, cString, enc);
     return NSMutableString._(_ret, _lib);
   }
@@ -8163,7 +9148,7 @@
       NSObject? url,
       int enc,
       ffi.Pointer<ffi.Pointer<ObjCObject>> error) {
-    final _ret = _lib._objc_msgSend_64(
+    final _ret = _lib._objc_msgSend_65(
         _lib._class_NSMutableString1,
         _lib._sel_stringWithContentsOfURL_encoding_error_1,
         url?._id ?? ffi.nullptr,
@@ -8177,7 +9162,7 @@
       NSObject? path,
       int enc,
       ffi.Pointer<ffi.Pointer<ObjCObject>> error) {
-    final _ret = _lib._objc_msgSend_64(
+    final _ret = _lib._objc_msgSend_65(
         _lib._class_NSMutableString1,
         _lib._sel_stringWithContentsOfFile_encoding_error_1,
         path?._id ?? ffi.nullptr,
@@ -8191,7 +9176,7 @@
       NSObject? url,
       ffi.Pointer<NSStringEncoding> enc,
       ffi.Pointer<ffi.Pointer<ObjCObject>> error) {
-    final _ret = _lib._objc_msgSend_65(
+    final _ret = _lib._objc_msgSend_66(
         _lib._class_NSMutableString1,
         _lib._sel_stringWithContentsOfURL_usedEncoding_error_1,
         url?._id ?? ffi.nullptr,
@@ -8205,7 +9190,7 @@
       NSObject? path,
       ffi.Pointer<NSStringEncoding> enc,
       ffi.Pointer<ffi.Pointer<ObjCObject>> error) {
-    final _ret = _lib._objc_msgSend_65(
+    final _ret = _lib._objc_msgSend_66(
         _lib._class_NSMutableString1,
         _lib._sel_stringWithContentsOfFile_usedEncoding_error_1,
         path?._id ?? ffi.nullptr,
@@ -8231,7 +9216,7 @@
           NSObject? opts,
           ffi.Pointer<ffi.Pointer<ObjCObject>> string,
           ffi.Pointer<ffi.Uint8> usedLossyConversion) {
-    return _lib._objc_msgSend_66(
+    return _lib._objc_msgSend_67(
         _lib._class_NSMutableString1,
         _lib._sel_stringEncodingForData_encodingOptions_convertedString_usedLossyConversion_1,
         data?._id ?? ffi.nullptr,
@@ -8256,14 +9241,14 @@
 
   static NSObject stringWithCString_length(
       StringTestObjCLibrary _lib, ffi.Pointer<pkg_ffi.Char> bytes, int length) {
-    final _ret = _lib._objc_msgSend_63(_lib._class_NSMutableString1,
+    final _ret = _lib._objc_msgSend_64(_lib._class_NSMutableString1,
         _lib._sel_stringWithCString_length_1, bytes, length);
     return NSObject._(_ret, _lib);
   }
 
   static NSObject stringWithCString(
       StringTestObjCLibrary _lib, ffi.Pointer<pkg_ffi.Char> bytes) {
-    final _ret = _lib._objc_msgSend_55(
+    final _ret = _lib._objc_msgSend_56(
         _lib._class_NSMutableString1, _lib._sel_stringWithCString_1, bytes);
     return NSObject._(_ret, _lib);
   }
@@ -8318,14 +9303,14 @@
 
   static NSSimpleCString stringWithCharacters_length(
       StringTestObjCLibrary _lib, ffi.Pointer<unichar> characters, int length) {
-    final _ret = _lib._objc_msgSend_54(_lib._class_NSSimpleCString1,
+    final _ret = _lib._objc_msgSend_55(_lib._class_NSSimpleCString1,
         _lib._sel_stringWithCharacters_length_1, characters, length);
     return NSSimpleCString._(_ret, _lib);
   }
 
   static NSSimpleCString stringWithUTF8String(StringTestObjCLibrary _lib,
       ffi.Pointer<pkg_ffi.Char> nullTerminatedCString) {
-    final _ret = _lib._objc_msgSend_55(_lib._class_NSSimpleCString1,
+    final _ret = _lib._objc_msgSend_56(_lib._class_NSSimpleCString1,
         _lib._sel_stringWithUTF8String_1, nullTerminatedCString);
     return NSSimpleCString._(_ret, _lib);
   }
@@ -8346,7 +9331,7 @@
 
   static NSSimpleCString stringWithCString_encoding(
       StringTestObjCLibrary _lib, ffi.Pointer<pkg_ffi.Char> cString, int enc) {
-    final _ret = _lib._objc_msgSend_63(_lib._class_NSSimpleCString1,
+    final _ret = _lib._objc_msgSend_64(_lib._class_NSSimpleCString1,
         _lib._sel_stringWithCString_encoding_1, cString, enc);
     return NSSimpleCString._(_ret, _lib);
   }
@@ -8356,7 +9341,7 @@
       NSObject? url,
       int enc,
       ffi.Pointer<ffi.Pointer<ObjCObject>> error) {
-    final _ret = _lib._objc_msgSend_64(
+    final _ret = _lib._objc_msgSend_65(
         _lib._class_NSSimpleCString1,
         _lib._sel_stringWithContentsOfURL_encoding_error_1,
         url?._id ?? ffi.nullptr,
@@ -8370,7 +9355,7 @@
       NSObject? path,
       int enc,
       ffi.Pointer<ffi.Pointer<ObjCObject>> error) {
-    final _ret = _lib._objc_msgSend_64(
+    final _ret = _lib._objc_msgSend_65(
         _lib._class_NSSimpleCString1,
         _lib._sel_stringWithContentsOfFile_encoding_error_1,
         path?._id ?? ffi.nullptr,
@@ -8384,7 +9369,7 @@
       NSObject? url,
       ffi.Pointer<NSStringEncoding> enc,
       ffi.Pointer<ffi.Pointer<ObjCObject>> error) {
-    final _ret = _lib._objc_msgSend_65(
+    final _ret = _lib._objc_msgSend_66(
         _lib._class_NSSimpleCString1,
         _lib._sel_stringWithContentsOfURL_usedEncoding_error_1,
         url?._id ?? ffi.nullptr,
@@ -8398,7 +9383,7 @@
       NSObject? path,
       ffi.Pointer<NSStringEncoding> enc,
       ffi.Pointer<ffi.Pointer<ObjCObject>> error) {
-    final _ret = _lib._objc_msgSend_65(
+    final _ret = _lib._objc_msgSend_66(
         _lib._class_NSSimpleCString1,
         _lib._sel_stringWithContentsOfFile_usedEncoding_error_1,
         path?._id ?? ffi.nullptr,
@@ -8424,7 +9409,7 @@
           NSObject? opts,
           ffi.Pointer<ffi.Pointer<ObjCObject>> string,
           ffi.Pointer<ffi.Uint8> usedLossyConversion) {
-    return _lib._objc_msgSend_66(
+    return _lib._objc_msgSend_67(
         _lib._class_NSSimpleCString1,
         _lib._sel_stringEncodingForData_encodingOptions_convertedString_usedLossyConversion_1,
         data?._id ?? ffi.nullptr,
@@ -8449,14 +9434,14 @@
 
   static NSObject stringWithCString_length(
       StringTestObjCLibrary _lib, ffi.Pointer<pkg_ffi.Char> bytes, int length) {
-    final _ret = _lib._objc_msgSend_63(_lib._class_NSSimpleCString1,
+    final _ret = _lib._objc_msgSend_64(_lib._class_NSSimpleCString1,
         _lib._sel_stringWithCString_length_1, bytes, length);
     return NSObject._(_ret, _lib);
   }
 
   static NSObject stringWithCString(
       StringTestObjCLibrary _lib, ffi.Pointer<pkg_ffi.Char> bytes) {
-    final _ret = _lib._objc_msgSend_55(
+    final _ret = _lib._objc_msgSend_56(
         _lib._class_NSSimpleCString1, _lib._sel_stringWithCString_1, bytes);
     return NSObject._(_ret, _lib);
   }
@@ -8509,14 +9494,14 @@
 
   static NSConstantString stringWithCharacters_length(
       StringTestObjCLibrary _lib, ffi.Pointer<unichar> characters, int length) {
-    final _ret = _lib._objc_msgSend_54(_lib._class_NSConstantString1,
+    final _ret = _lib._objc_msgSend_55(_lib._class_NSConstantString1,
         _lib._sel_stringWithCharacters_length_1, characters, length);
     return NSConstantString._(_ret, _lib);
   }
 
   static NSConstantString stringWithUTF8String(StringTestObjCLibrary _lib,
       ffi.Pointer<pkg_ffi.Char> nullTerminatedCString) {
-    final _ret = _lib._objc_msgSend_55(_lib._class_NSConstantString1,
+    final _ret = _lib._objc_msgSend_56(_lib._class_NSConstantString1,
         _lib._sel_stringWithUTF8String_1, nullTerminatedCString);
     return NSConstantString._(_ret, _lib);
   }
@@ -8537,7 +9522,7 @@
 
   static NSConstantString stringWithCString_encoding(
       StringTestObjCLibrary _lib, ffi.Pointer<pkg_ffi.Char> cString, int enc) {
-    final _ret = _lib._objc_msgSend_63(_lib._class_NSConstantString1,
+    final _ret = _lib._objc_msgSend_64(_lib._class_NSConstantString1,
         _lib._sel_stringWithCString_encoding_1, cString, enc);
     return NSConstantString._(_ret, _lib);
   }
@@ -8547,7 +9532,7 @@
       NSObject? url,
       int enc,
       ffi.Pointer<ffi.Pointer<ObjCObject>> error) {
-    final _ret = _lib._objc_msgSend_64(
+    final _ret = _lib._objc_msgSend_65(
         _lib._class_NSConstantString1,
         _lib._sel_stringWithContentsOfURL_encoding_error_1,
         url?._id ?? ffi.nullptr,
@@ -8561,7 +9546,7 @@
       NSObject? path,
       int enc,
       ffi.Pointer<ffi.Pointer<ObjCObject>> error) {
-    final _ret = _lib._objc_msgSend_64(
+    final _ret = _lib._objc_msgSend_65(
         _lib._class_NSConstantString1,
         _lib._sel_stringWithContentsOfFile_encoding_error_1,
         path?._id ?? ffi.nullptr,
@@ -8575,7 +9560,7 @@
       NSObject? url,
       ffi.Pointer<NSStringEncoding> enc,
       ffi.Pointer<ffi.Pointer<ObjCObject>> error) {
-    final _ret = _lib._objc_msgSend_65(
+    final _ret = _lib._objc_msgSend_66(
         _lib._class_NSConstantString1,
         _lib._sel_stringWithContentsOfURL_usedEncoding_error_1,
         url?._id ?? ffi.nullptr,
@@ -8589,7 +9574,7 @@
       NSObject? path,
       ffi.Pointer<NSStringEncoding> enc,
       ffi.Pointer<ffi.Pointer<ObjCObject>> error) {
-    final _ret = _lib._objc_msgSend_65(
+    final _ret = _lib._objc_msgSend_66(
         _lib._class_NSConstantString1,
         _lib._sel_stringWithContentsOfFile_usedEncoding_error_1,
         path?._id ?? ffi.nullptr,
@@ -8615,7 +9600,7 @@
           NSObject? opts,
           ffi.Pointer<ffi.Pointer<ObjCObject>> string,
           ffi.Pointer<ffi.Uint8> usedLossyConversion) {
-    return _lib._objc_msgSend_66(
+    return _lib._objc_msgSend_67(
         _lib._class_NSConstantString1,
         _lib._sel_stringEncodingForData_encodingOptions_convertedString_usedLossyConversion_1,
         data?._id ?? ffi.nullptr,
@@ -8640,14 +9625,14 @@
 
   static NSObject stringWithCString_length(
       StringTestObjCLibrary _lib, ffi.Pointer<pkg_ffi.Char> bytes, int length) {
-    final _ret = _lib._objc_msgSend_63(_lib._class_NSConstantString1,
+    final _ret = _lib._objc_msgSend_64(_lib._class_NSConstantString1,
         _lib._sel_stringWithCString_length_1, bytes, length);
     return NSObject._(_ret, _lib);
   }
 
   static NSObject stringWithCString(
       StringTestObjCLibrary _lib, ffi.Pointer<pkg_ffi.Char> bytes) {
-    final _ret = _lib._objc_msgSend_55(
+    final _ret = _lib._objc_msgSend_56(
         _lib._class_NSConstantString1, _lib._sel_stringWithCString_1, bytes);
     return NSObject._(_ret, _lib);
   }
@@ -8680,7 +9665,7 @@
 
   static NSString strConcat_with(
       StringTestObjCLibrary _lib, NSObject? a, NSObject? b) {
-    final _ret = _lib._objc_msgSend_48(
+    final _ret = _lib._objc_msgSend_49(
         _lib._class_StringUtil1,
         _lib._sel_strConcat_with_1,
         a?._id ?? ffi.nullptr,
diff --git a/pkgs/ffigen/test/regen.dart b/pkgs/ffigen/test/regen.dart
index d0a6a4f..d77d3ca 100644
--- a/pkgs/ffigen/test/regen.dart
+++ b/pkgs/ffigen/test/regen.dart
@@ -104,6 +104,11 @@
     File('test/native_objc_test/string_bindings.dart'),
   );
 
+  await _regenConfig(
+    File('test/native_objc_test/block_config.yaml'),
+    File('test/native_objc_test/block_bindings.dart'),
+  );
+
   await _regenConfig(File('test/native_test/config.yaml'),
       File('test/native_test/native_test_bindings.dart'));