[ffigen] Create more tests and move them to separate files. (#330)

diff --git a/pkgs/ffigen/test/native_objc_test/method_bindings.dart b/pkgs/ffigen/test/native_objc_test/method_bindings.dart
new file mode 100644
index 0000000..4c74d24
--- /dev/null
+++ b/pkgs/ffigen/test/native_objc_test/method_bindings.dart
@@ -0,0 +1,1594 @@
+// 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 methods
+class MethodTestObjCLibrary {
+  /// Holds the symbol lookup function.
+  final ffi.Pointer<T> Function<T extends ffi.NativeType>(String symbolName)
+      _lookup;
+
+  /// The symbols are looked up in [dynamicLibrary].
+  MethodTestObjCLibrary(ffi.DynamicLibrary dynamicLibrary)
+      : _lookup = dynamicLibrary.lookup;
+
+  /// The symbols are looked up with [lookup].
+  MethodTestObjCLibrary.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> _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> _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>)>();
+
+  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>)>();
+
+  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>)>();
+
+  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>)>();
+
+  ffi.Pointer<ObjCObject> _objc_msgSend_3(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+  ) {
+    return __objc_msgSend_3(
+      obj,
+      sel,
+    );
+  }
+
+  late final __objc_msgSend_3Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ObjCObject> Function(
+              ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>>('objc_msgSend');
+  late final __objc_msgSend_3 = __objc_msgSend_3Ptr.asFunction<
+      ffi.Pointer<ObjCObject> Function(
+          ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>();
+
+  ffi.Pointer<ObjCObject> _objc_msgSend_4(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+  ) {
+    return __objc_msgSend_4(
+      obj,
+      sel,
+    );
+  }
+
+  late final __objc_msgSend_4Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ObjCObject> Function(
+              ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>>('objc_msgSend');
+  late final __objc_msgSend_4 = __objc_msgSend_4Ptr.asFunction<
+      ffi.Pointer<ObjCObject> Function(
+          ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>();
+
+  ffi.Pointer<ObjCObject> _objc_msgSend_5(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    ffi.Pointer<_NSZone> zone,
+  ) {
+    return __objc_msgSend_5(
+      obj,
+      sel,
+      zone,
+    );
+  }
+
+  late final __objc_msgSend_5Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
+              ffi.Pointer<ObjCSel>, ffi.Pointer<_NSZone>)>>('objc_msgSend');
+  late final __objc_msgSend_5 = __objc_msgSend_5Ptr.asFunction<
+      ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
+          ffi.Pointer<ObjCSel>, ffi.Pointer<_NSZone>)>();
+
+  ffi.Pointer<ObjCObject> _objc_msgSend_6(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    ffi.Pointer<_NSZone> zone,
+  ) {
+    return __objc_msgSend_6(
+      obj,
+      sel,
+      zone,
+    );
+  }
+
+  late final __objc_msgSend_6Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
+              ffi.Pointer<ObjCSel>, ffi.Pointer<_NSZone>)>>('objc_msgSend');
+  late final __objc_msgSend_6 = __objc_msgSend_6Ptr.asFunction<
+      ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
+          ffi.Pointer<ObjCSel>, ffi.Pointer<_NSZone>)>();
+
+  bool _objc_msgSend_7(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    ffi.Pointer<ObjCSel> aSelector,
+  ) {
+    return __objc_msgSend_7(
+          obj,
+          sel,
+          aSelector,
+        ) !=
+        0;
+  }
+
+  late final __objc_msgSend_7Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Uint8 Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+              ffi.Pointer<ObjCSel>)>>('objc_msgSend');
+  late final __objc_msgSend_7 = __objc_msgSend_7Ptr.asFunction<
+      int Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+          ffi.Pointer<ObjCSel>)>();
+
+  bool _objc_msgSend_8(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    ffi.Pointer<ObjCObject> protocol,
+  ) {
+    return __objc_msgSend_8(
+          obj,
+          sel,
+          protocol,
+        ) !=
+        0;
+  }
+
+  late final __objc_msgSend_8Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Uint8 Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+              ffi.Pointer<ObjCObject>)>>('objc_msgSend');
+  late final __objc_msgSend_8 = __objc_msgSend_8Ptr.asFunction<
+      int Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+          ffi.Pointer<ObjCObject>)>();
+
+  IMP _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<
+          IMP Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+              ffi.Pointer<ObjCSel>)>>('objc_msgSend');
+  late final __objc_msgSend_9 = __objc_msgSend_9Ptr.asFunction<
+      IMP Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+          ffi.Pointer<ObjCSel>)>();
+
+  IMP _objc_msgSend_10(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    ffi.Pointer<ObjCSel> aSelector,
+  ) {
+    return __objc_msgSend_10(
+      obj,
+      sel,
+      aSelector,
+    );
+  }
+
+  late final __objc_msgSend_10Ptr = _lookup<
+      ffi.NativeFunction<
+          IMP Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+              ffi.Pointer<ObjCSel>)>>('objc_msgSend');
+  late final __objc_msgSend_10 = __objc_msgSend_10Ptr.asFunction<
+      IMP Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+          ffi.Pointer<ObjCSel>)>();
+
+  void _objc_msgSend_11(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    ffi.Pointer<ObjCSel> aSelector,
+  ) {
+    return __objc_msgSend_11(
+      obj,
+      sel,
+      aSelector,
+    );
+  }
+
+  late final __objc_msgSend_11Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+              ffi.Pointer<ObjCSel>)>>('objc_msgSend');
+  late final __objc_msgSend_11 = __objc_msgSend_11Ptr.asFunction<
+      void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+          ffi.Pointer<ObjCSel>)>();
+
+  ffi.Pointer<ObjCObject> _objc_msgSend_12(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    ffi.Pointer<ObjCSel> aSelector,
+  ) {
+    return __objc_msgSend_12(
+      obj,
+      sel,
+      aSelector,
+    );
+  }
+
+  late final __objc_msgSend_12Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
+              ffi.Pointer<ObjCSel>, ffi.Pointer<ObjCSel>)>>('objc_msgSend');
+  late final __objc_msgSend_12 = __objc_msgSend_12Ptr.asFunction<
+      ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
+          ffi.Pointer<ObjCSel>, ffi.Pointer<ObjCSel>)>();
+
+  void _objc_msgSend_13(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    ffi.Pointer<ObjCObject> anInvocation,
+  ) {
+    return __objc_msgSend_13(
+      obj,
+      sel,
+      anInvocation,
+    );
+  }
+
+  late final __objc_msgSend_13Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+              ffi.Pointer<ObjCObject>)>>('objc_msgSend');
+  late final __objc_msgSend_13 = __objc_msgSend_13Ptr.asFunction<
+      void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+          ffi.Pointer<ObjCObject>)>();
+
+  ffi.Pointer<ObjCObject> _objc_msgSend_14(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    ffi.Pointer<ObjCSel> aSelector,
+  ) {
+    return __objc_msgSend_14(
+      obj,
+      sel,
+      aSelector,
+    );
+  }
+
+  late final __objc_msgSend_14Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
+              ffi.Pointer<ObjCSel>, ffi.Pointer<ObjCSel>)>>('objc_msgSend');
+  late final __objc_msgSend_14 = __objc_msgSend_14Ptr.asFunction<
+      ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
+          ffi.Pointer<ObjCSel>, ffi.Pointer<ObjCSel>)>();
+
+  ffi.Pointer<ObjCObject> _objc_msgSend_15(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    ffi.Pointer<ObjCSel> aSelector,
+  ) {
+    return __objc_msgSend_15(
+      obj,
+      sel,
+      aSelector,
+    );
+  }
+
+  late final __objc_msgSend_15Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
+              ffi.Pointer<ObjCSel>, ffi.Pointer<ObjCSel>)>>('objc_msgSend');
+  late final __objc_msgSend_15 = __objc_msgSend_15Ptr.asFunction<
+      ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
+          ffi.Pointer<ObjCSel>, ffi.Pointer<ObjCSel>)>();
+
+  bool _objc_msgSend_16(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+  ) {
+    return __objc_msgSend_16(
+          obj,
+          sel,
+        ) !=
+        0;
+  }
+
+  late final __objc_msgSend_16Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Uint8 Function(
+              ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>>('objc_msgSend');
+  late final __objc_msgSend_16 = __objc_msgSend_16Ptr.asFunction<
+      int Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>();
+
+  bool _objc_msgSend_17(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    ffi.Pointer<ObjCObject> aClass,
+  ) {
+    return __objc_msgSend_17(
+          obj,
+          sel,
+          aClass,
+        ) !=
+        0;
+  }
+
+  late final __objc_msgSend_17Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Uint8 Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+              ffi.Pointer<ObjCObject>)>>('objc_msgSend');
+  late final __objc_msgSend_17 = __objc_msgSend_17Ptr.asFunction<
+      int Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+          ffi.Pointer<ObjCObject>)>();
+
+  bool _objc_msgSend_18(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    ffi.Pointer<ObjCSel> sel1,
+  ) {
+    return __objc_msgSend_18(
+          obj,
+          sel,
+          sel1,
+        ) !=
+        0;
+  }
+
+  late final __objc_msgSend_18Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Uint8 Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+              ffi.Pointer<ObjCSel>)>>('objc_msgSend');
+  late final __objc_msgSend_18 = __objc_msgSend_18Ptr.asFunction<
+      int Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+          ffi.Pointer<ObjCSel>)>();
+
+  bool _objc_msgSend_19(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    ffi.Pointer<ObjCSel> sel1,
+  ) {
+    return __objc_msgSend_19(
+          obj,
+          sel,
+          sel1,
+        ) !=
+        0;
+  }
+
+  late final __objc_msgSend_19Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Uint8 Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+              ffi.Pointer<ObjCSel>)>>('objc_msgSend');
+  late final __objc_msgSend_19 = __objc_msgSend_19Ptr.asFunction<
+      int Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+          ffi.Pointer<ObjCSel>)>();
+
+  int _objc_msgSend_20(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+  ) {
+    return __objc_msgSend_20(
+      obj,
+      sel,
+    );
+  }
+
+  late final __objc_msgSend_20Ptr = _lookup<
+      ffi.NativeFunction<
+          NSUInteger Function(
+              ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>>('objc_msgSend');
+  late final __objc_msgSend_20 = __objc_msgSend_20Ptr.asFunction<
+      int Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>();
+
+  ffi.Pointer<ObjCObject> _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<
+          ffi.Pointer<ObjCObject> Function(
+              ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>>('objc_msgSend');
+  late final __objc_msgSend_21 = __objc_msgSend_21Ptr.asFunction<
+      ffi.Pointer<ObjCObject> Function(
+          ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>();
+
+  ffi.Pointer<ObjCObject> _objc_msgSend_22(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+  ) {
+    return __objc_msgSend_22(
+      obj,
+      sel,
+    );
+  }
+
+  late final __objc_msgSend_22Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ObjCObject> Function(
+              ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>>('objc_msgSend');
+  late final __objc_msgSend_22 = __objc_msgSend_22Ptr.asFunction<
+      ffi.Pointer<ObjCObject> Function(
+          ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>();
+
+  ffi.Pointer<ObjCObject> _objc_msgSend_23(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    ffi.Pointer<pkg_ffi.Char> cString,
+    int enc,
+  ) {
+    return __objc_msgSend_23(
+      obj,
+      sel,
+      cString,
+      enc,
+    );
+  }
+
+  late final __objc_msgSend_23Ptr = _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_23 = __objc_msgSend_23Ptr.asFunction<
+      ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
+          ffi.Pointer<ObjCSel>, ffi.Pointer<pkg_ffi.Char>, int)>();
+
+  ffi.Pointer<pkg_ffi.Char> _objc_msgSend_24(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+  ) {
+    return __objc_msgSend_24(
+      obj,
+      sel,
+    );
+  }
+
+  late final __objc_msgSend_24Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<pkg_ffi.Char> Function(
+              ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>>('objc_msgSend');
+  late final __objc_msgSend_24 = __objc_msgSend_24Ptr.asFunction<
+      ffi.Pointer<pkg_ffi.Char> Function(
+          ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>();
+
+  ffi.Pointer<ObjCObject> _objc_msgSend_25(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+  ) {
+    return __objc_msgSend_25(
+      obj,
+      sel,
+    );
+  }
+
+  late final __objc_msgSend_25Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ObjCObject> Function(
+              ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>>('objc_msgSend');
+  late final __objc_msgSend_25 = __objc_msgSend_25Ptr.asFunction<
+      ffi.Pointer<ObjCObject> Function(
+          ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>();
+
+  int _objc_msgSend_26(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+  ) {
+    return __objc_msgSend_26(
+      obj,
+      sel,
+    );
+  }
+
+  late final __objc_msgSend_26Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Int32 Function(
+              ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>>('objc_msgSend');
+  late final __objc_msgSend_26 = __objc_msgSend_26Ptr.asFunction<
+      int Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>();
+
+  int _objc_msgSend_27(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    int x,
+  ) {
+    return __objc_msgSend_27(
+      obj,
+      sel,
+      x,
+    );
+  }
+
+  late final __objc_msgSend_27Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Int32 Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+              ffi.Int32)>>('objc_msgSend');
+  late final __objc_msgSend_27 = __objc_msgSend_27Ptr.asFunction<
+      int Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, int)>();
+
+  int _objc_msgSend_28(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    int x,
+    int y,
+  ) {
+    return __objc_msgSend_28(
+      obj,
+      sel,
+      x,
+      y,
+    );
+  }
+
+  late final __objc_msgSend_28Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Int32 Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+              ffi.Int32, ffi.Int32)>>('objc_msgSend');
+  late final __objc_msgSend_28 = __objc_msgSend_28Ptr.asFunction<
+      int Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, int, int)>();
+
+  int _objc_msgSend_29(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    int x,
+    int y,
+    int z,
+  ) {
+    return __objc_msgSend_29(
+      obj,
+      sel,
+      x,
+      y,
+      z,
+    );
+  }
+
+  late final __objc_msgSend_29Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Int32 Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+              ffi.Int32, ffi.Int32, ffi.Int32)>>('objc_msgSend');
+  late final __objc_msgSend_29 = __objc_msgSend_29Ptr.asFunction<
+      int Function(
+          ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, int, int, int)>();
+}
+
+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>)>>;
+
+ffi.Pointer<ObjCSel> _registerName(MethodTestObjCLibrary _lib, String name) {
+  final cstr = name.toNativeUtf8();
+  final sel = _lib._sel_registerName(cstr.cast());
+  pkg_ffi.calloc.free(cstr);
+  return sel;
+}
+
+ffi.Pointer<ObjCObject> _getClass(MethodTestObjCLibrary _lib, String name) {
+  final cstr = name.toNativeUtf8();
+  final clazz = _lib._objc_getClass(cstr.cast());
+  pkg_ffi.calloc.free(cstr);
+  return clazz;
+}
+
+class _ObjCWrapper {
+  final ffi.Pointer<ObjCObject> _id;
+  final MethodTestObjCLibrary _lib;
+  _ObjCWrapper._(this._id, this._lib);
+}
+
+class MethodInterface extends NSObject {
+  MethodInterface._(ffi.Pointer<ObjCObject> id, MethodTestObjCLibrary lib)
+      : super._(id, lib);
+
+  static ffi.Pointer<ObjCObject>? _class;
+
+  static MethodInterface castFrom<T extends _ObjCWrapper>(T other) {
+    return MethodInterface._(other._id, other._lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_add;
+  int add() {
+    _sel_add ??= _registerName(_lib, "add");
+    return _lib._objc_msgSend_26(_id, _sel_add!);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_add1;
+  int add1(int x) {
+    _sel_add1 ??= _registerName(_lib, "add:");
+    return _lib._objc_msgSend_27(_id, _sel_add1!, x);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_add_Y;
+  int add_Y(int x, int y) {
+    _sel_add_Y ??= _registerName(_lib, "add:Y:");
+    return _lib._objc_msgSend_28(_id, _sel_add_Y!, x, y);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_add_Y_Z;
+  int add_Y_Z(int x, int y, int z) {
+    _sel_add_Y_Z ??= _registerName(_lib, "add:Y:Z:");
+    return _lib._objc_msgSend_29(_id, _sel_add_Y_Z!, x, y, z);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_sub;
+  static int sub(MethodTestObjCLibrary _lib) {
+    _class ??= _getClass(_lib, "MethodInterface");
+    _sel_sub ??= _registerName(_lib, "sub");
+    return _lib._objc_msgSend_26(_class!, _sel_sub!);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_sub1;
+  static int sub1(MethodTestObjCLibrary _lib, int x) {
+    _class ??= _getClass(_lib, "MethodInterface");
+    _sel_sub1 ??= _registerName(_lib, "sub:");
+    return _lib._objc_msgSend_27(_class!, _sel_sub1!, x);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_sub_Y;
+  static int sub_Y(MethodTestObjCLibrary _lib, int x, int y) {
+    _class ??= _getClass(_lib, "MethodInterface");
+    _sel_sub_Y ??= _registerName(_lib, "sub:Y:");
+    return _lib._objc_msgSend_28(_class!, _sel_sub_Y!, x, y);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_sub_Y_Z;
+  static int sub_Y_Z(MethodTestObjCLibrary _lib, int x, int y, int z) {
+    _class ??= _getClass(_lib, "MethodInterface");
+    _sel_sub_Y_Z ??= _registerName(_lib, "sub:Y:Z:");
+    return _lib._objc_msgSend_29(_class!, _sel_sub_Y_Z!, x, y, z);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_new1;
+  static MethodInterface new1(MethodTestObjCLibrary _lib) {
+    _class ??= _getClass(_lib, "MethodInterface");
+    _sel_new1 ??= _registerName(_lib, "new");
+    final _ret = _lib._objc_msgSend_1(_class!, _sel_new1!);
+    return MethodInterface._(_ret, _lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_alloc;
+  static MethodInterface alloc(MethodTestObjCLibrary _lib) {
+    _class ??= _getClass(_lib, "MethodInterface");
+    _sel_alloc ??= _registerName(_lib, "alloc");
+    final _ret = _lib._objc_msgSend_1(_class!, _sel_alloc!);
+    return MethodInterface._(_ret, _lib);
+  }
+}
+
+class NSObject extends _ObjCWrapper {
+  NSObject._(ffi.Pointer<ObjCObject> id, MethodTestObjCLibrary lib)
+      : super._(id, lib);
+
+  static ffi.Pointer<ObjCObject>? _class;
+
+  static NSObject castFrom<T extends _ObjCWrapper>(T other) {
+    return NSObject._(other._id, other._lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_load;
+  static void load(MethodTestObjCLibrary _lib) {
+    _class ??= _getClass(_lib, "NSObject");
+    _sel_load ??= _registerName(_lib, "load");
+    _lib._objc_msgSend_0(_class!, _sel_load!);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_initialize;
+  static void initialize(MethodTestObjCLibrary _lib) {
+    _class ??= _getClass(_lib, "NSObject");
+    _sel_initialize ??= _registerName(_lib, "initialize");
+    _lib._objc_msgSend_0(_class!, _sel_initialize!);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_init;
+  NSObject init() {
+    _sel_init ??= _registerName(_lib, "init");
+    final _ret = _lib._objc_msgSend_1(_id, _sel_init!);
+    return NSObject._(_ret, _lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_new1;
+  static NSObject new1(MethodTestObjCLibrary _lib) {
+    _class ??= _getClass(_lib, "NSObject");
+    _sel_new1 ??= _registerName(_lib, "new");
+    final _ret = _lib._objc_msgSend_1(_class!, _sel_new1!);
+    return NSObject._(_ret, _lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_allocWithZone;
+  static NSObject allocWithZone(
+      MethodTestObjCLibrary _lib, ffi.Pointer<_NSZone> zone) {
+    _class ??= _getClass(_lib, "NSObject");
+    _sel_allocWithZone ??= _registerName(_lib, "allocWithZone:");
+    final _ret = _lib._objc_msgSend_2(_class!, _sel_allocWithZone!, zone);
+    return NSObject._(_ret, _lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_alloc;
+  static NSObject alloc(MethodTestObjCLibrary _lib) {
+    _class ??= _getClass(_lib, "NSObject");
+    _sel_alloc ??= _registerName(_lib, "alloc");
+    final _ret = _lib._objc_msgSend_1(_class!, _sel_alloc!);
+    return NSObject._(_ret, _lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_dealloc;
+  void dealloc() {
+    _sel_dealloc ??= _registerName(_lib, "dealloc");
+    _lib._objc_msgSend_0(_id, _sel_dealloc!);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_finalize;
+  void finalize() {
+    _sel_finalize ??= _registerName(_lib, "finalize");
+    _lib._objc_msgSend_0(_id, _sel_finalize!);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_copy;
+  NSObject copy() {
+    _sel_copy ??= _registerName(_lib, "copy");
+    final _ret = _lib._objc_msgSend_3(_id, _sel_copy!);
+    return NSObject._(_ret, _lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_mutableCopy;
+  NSObject mutableCopy() {
+    _sel_mutableCopy ??= _registerName(_lib, "mutableCopy");
+    final _ret = _lib._objc_msgSend_4(_id, _sel_mutableCopy!);
+    return NSObject._(_ret, _lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_copyWithZone;
+  static NSObject copyWithZone(
+      MethodTestObjCLibrary _lib, ffi.Pointer<_NSZone> zone) {
+    _class ??= _getClass(_lib, "NSObject");
+    _sel_copyWithZone ??= _registerName(_lib, "copyWithZone:");
+    final _ret = _lib._objc_msgSend_5(_class!, _sel_copyWithZone!, zone);
+    return NSObject._(_ret, _lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_mutableCopyWithZone;
+  static NSObject mutableCopyWithZone(
+      MethodTestObjCLibrary _lib, ffi.Pointer<_NSZone> zone) {
+    _class ??= _getClass(_lib, "NSObject");
+    _sel_mutableCopyWithZone ??= _registerName(_lib, "mutableCopyWithZone:");
+    final _ret = _lib._objc_msgSend_6(_class!, _sel_mutableCopyWithZone!, zone);
+    return NSObject._(_ret, _lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_instancesRespondToSelector;
+  static bool instancesRespondToSelector(
+      MethodTestObjCLibrary _lib, ffi.Pointer<ObjCSel> aSelector) {
+    _class ??= _getClass(_lib, "NSObject");
+    _sel_instancesRespondToSelector ??=
+        _registerName(_lib, "instancesRespondToSelector:");
+    return _lib._objc_msgSend_7(
+        _class!, _sel_instancesRespondToSelector!, aSelector);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_conformsToProtocol;
+  static bool conformsToProtocol(
+      MethodTestObjCLibrary _lib, NSObject protocol) {
+    _class ??= _getClass(_lib, "NSObject");
+    _sel_conformsToProtocol ??= _registerName(_lib, "conformsToProtocol:");
+    return _lib._objc_msgSend_8(
+        _class!, _sel_conformsToProtocol!, protocol._id);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_methodForSelector;
+  IMP methodForSelector(ffi.Pointer<ObjCSel> aSelector) {
+    _sel_methodForSelector ??= _registerName(_lib, "methodForSelector:");
+    return _lib._objc_msgSend_9(_id, _sel_methodForSelector!, aSelector);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_instanceMethodForSelector;
+  static IMP instanceMethodForSelector(
+      MethodTestObjCLibrary _lib, ffi.Pointer<ObjCSel> aSelector) {
+    _class ??= _getClass(_lib, "NSObject");
+    _sel_instanceMethodForSelector ??=
+        _registerName(_lib, "instanceMethodForSelector:");
+    return _lib._objc_msgSend_10(
+        _class!, _sel_instanceMethodForSelector!, aSelector);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_doesNotRecognizeSelector;
+  void doesNotRecognizeSelector(ffi.Pointer<ObjCSel> aSelector) {
+    _sel_doesNotRecognizeSelector ??=
+        _registerName(_lib, "doesNotRecognizeSelector:");
+    _lib._objc_msgSend_11(_id, _sel_doesNotRecognizeSelector!, aSelector);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_forwardingTargetForSelector;
+  NSObject forwardingTargetForSelector(ffi.Pointer<ObjCSel> aSelector) {
+    _sel_forwardingTargetForSelector ??=
+        _registerName(_lib, "forwardingTargetForSelector:");
+    final _ret = _lib._objc_msgSend_12(
+        _id, _sel_forwardingTargetForSelector!, aSelector);
+    return NSObject._(_ret, _lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_forwardInvocation;
+  void forwardInvocation(NSObject anInvocation) {
+    _sel_forwardInvocation ??= _registerName(_lib, "forwardInvocation:");
+    _lib._objc_msgSend_13(_id, _sel_forwardInvocation!, anInvocation._id);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_methodSignatureForSelector;
+  NSMethodSignature methodSignatureForSelector(ffi.Pointer<ObjCSel> aSelector) {
+    _sel_methodSignatureForSelector ??=
+        _registerName(_lib, "methodSignatureForSelector:");
+    final _ret =
+        _lib._objc_msgSend_14(_id, _sel_methodSignatureForSelector!, aSelector);
+    return NSMethodSignature._(_ret, _lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_instanceMethodSignatureForSelector;
+  static NSMethodSignature instanceMethodSignatureForSelector(
+      MethodTestObjCLibrary _lib, ffi.Pointer<ObjCSel> aSelector) {
+    _class ??= _getClass(_lib, "NSObject");
+    _sel_instanceMethodSignatureForSelector ??=
+        _registerName(_lib, "instanceMethodSignatureForSelector:");
+    final _ret = _lib._objc_msgSend_15(
+        _class!, _sel_instanceMethodSignatureForSelector!, aSelector);
+    return NSMethodSignature._(_ret, _lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_allowsWeakReference;
+  bool allowsWeakReference() {
+    _sel_allowsWeakReference ??= _registerName(_lib, "allowsWeakReference");
+    return _lib._objc_msgSend_16(_id, _sel_allowsWeakReference!);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_retainWeakReference;
+  bool retainWeakReference() {
+    _sel_retainWeakReference ??= _registerName(_lib, "retainWeakReference");
+    return _lib._objc_msgSend_16(_id, _sel_retainWeakReference!);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_isSubclassOfClass;
+  static bool isSubclassOfClass(MethodTestObjCLibrary _lib, NSObject aClass) {
+    _class ??= _getClass(_lib, "NSObject");
+    _sel_isSubclassOfClass ??= _registerName(_lib, "isSubclassOfClass:");
+    return _lib._objc_msgSend_17(_class!, _sel_isSubclassOfClass!, aClass._id);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_resolveClassMethod;
+  static bool resolveClassMethod(
+      MethodTestObjCLibrary _lib, ffi.Pointer<ObjCSel> sel) {
+    _class ??= _getClass(_lib, "NSObject");
+    _sel_resolveClassMethod ??= _registerName(_lib, "resolveClassMethod:");
+    return _lib._objc_msgSend_18(_class!, _sel_resolveClassMethod!, sel);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_resolveInstanceMethod;
+  static bool resolveInstanceMethod(
+      MethodTestObjCLibrary _lib, ffi.Pointer<ObjCSel> sel) {
+    _class ??= _getClass(_lib, "NSObject");
+    _sel_resolveInstanceMethod ??=
+        _registerName(_lib, "resolveInstanceMethod:");
+    return _lib._objc_msgSend_19(_class!, _sel_resolveInstanceMethod!, sel);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_hash;
+  static int hash(MethodTestObjCLibrary _lib) {
+    _class ??= _getClass(_lib, "NSObject");
+    _sel_hash ??= _registerName(_lib, "hash");
+    return _lib._objc_msgSend_20(_class!, _sel_hash!);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_superclass;
+  static NSObject superclass(MethodTestObjCLibrary _lib) {
+    _class ??= _getClass(_lib, "NSObject");
+    _sel_superclass ??= _registerName(_lib, "superclass");
+    final _ret = _lib._objc_msgSend_21(_class!, _sel_superclass!);
+    return NSObject._(_ret, _lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_class1;
+  static NSObject class1(MethodTestObjCLibrary _lib) {
+    _class ??= _getClass(_lib, "NSObject");
+    _sel_class1 ??= _registerName(_lib, "class");
+    final _ret = _lib._objc_msgSend_22(_class!, _sel_class1!);
+    return NSObject._(_ret, _lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_description;
+  static NSString description(MethodTestObjCLibrary _lib) {
+    _class ??= _getClass(_lib, "NSObject");
+    _sel_description ??= _registerName(_lib, "description");
+    final _ret = _lib._objc_msgSend_25(_class!, _sel_description!);
+    return NSString._(_ret, _lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_debugDescription;
+  static NSString debugDescription(MethodTestObjCLibrary _lib) {
+    _class ??= _getClass(_lib, "NSObject");
+    _sel_debugDescription ??= _registerName(_lib, "debugDescription");
+    final _ret = _lib._objc_msgSend_25(_class!, _sel_debugDescription!);
+    return NSString._(_ret, _lib);
+  }
+}
+
+typedef instancetype = ffi.Pointer<ObjCObject>;
+
+class ObjCObject extends ffi.Opaque {}
+
+class _NSZone extends ffi.Opaque {}
+
+class ObjCSel extends ffi.Opaque {}
+
+typedef IMP = ffi.Pointer<ffi.NativeFunction<ffi.Void Function()>>;
+
+class NSMethodSignature extends _ObjCWrapper {
+  NSMethodSignature._(ffi.Pointer<ObjCObject> id, MethodTestObjCLibrary lib)
+      : super._(id, lib);
+
+  static ffi.Pointer<ObjCObject>? _class;
+
+  static NSMethodSignature castFrom<T extends _ObjCWrapper>(T other) {
+    return NSMethodSignature._(other._id, other._lib);
+  }
+}
+
+typedef NSUInteger = pkg_ffi.UnsignedLong;
+
+class NSString extends _ObjCWrapper {
+  NSString._(ffi.Pointer<ObjCObject> id, MethodTestObjCLibrary lib)
+      : super._(id, lib);
+
+  static ffi.Pointer<ObjCObject>? _class;
+
+  static NSString castFrom<T extends _ObjCWrapper>(T other) {
+    return NSString._(other._id, other._lib);
+  }
+
+  factory NSString(MethodTestObjCLibrary _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 ffi.Pointer<ObjCSel>? _sel_stringWithCString_encoding;
+  static NSString stringWithCString_encoding(
+      MethodTestObjCLibrary _lib, ffi.Pointer<pkg_ffi.Char> cString, int enc) {
+    _class ??= _getClass(_lib, "NSString");
+    _sel_stringWithCString_encoding ??=
+        _registerName(_lib, "stringWithCString:encoding:");
+    final _ret = _lib._objc_msgSend_23(
+        _class!, _sel_stringWithCString_encoding!, cString, enc);
+    return NSString._(_ret, _lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_UTF8String;
+  ffi.Pointer<pkg_ffi.Char> UTF8String() {
+    _sel_UTF8String ??= _registerName(_lib, "UTF8String");
+    return _lib._objc_msgSend_24(_id, _sel_UTF8String!);
+  }
+}
+
+extension StringToNSString on String {
+  NSString toNSString(MethodTestObjCLibrary lib) => NSString(lib, this);
+}
+
+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/method_config.yaml b/pkgs/ffigen/test/native_objc_test/method_config.yaml
new file mode 100644
index 0000000..0f68e59
--- /dev/null
+++ b/pkgs/ffigen/test/native_objc_test/method_config.yaml
@@ -0,0 +1,12 @@
+name: MethodTestObjCLibrary
+description: 'Tests calling Objective-C methods'
+language: objc
+output: 'test/native_objc_test/method_bindings.dart'
+functions:
+  exclude:
+    - '.*'
+headers:
+  entry-points:
+    - 'test/native_objc_test/method_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/method_test.dart b/pkgs/ffigen/test/native_objc_test/method_test.dart
new file mode 100644
index 0000000..d6c2990
--- /dev/null
+++ b/pkgs/ffigen/test/native_objc_test/method_test.dart
@@ -0,0 +1,90 @@
+// 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 'method_bindings.dart';
+
+void main() {
+  late MethodInterface testInstance;
+  late MethodTestObjCLibrary lib;
+
+  group('method calls', () {
+    setUpAll(() {
+      logWarnings();
+      final dylib = File('test/native_objc_test/method_test.dylib');
+      verifySetupFile(dylib);
+      lib = MethodTestObjCLibrary(DynamicLibrary.open(dylib.absolute.path));
+      testInstance = MethodInterface.new1(lib);
+    });
+
+    test('generate_bindings', () {
+      final config = Config.fromYaml(loadYaml(
+          File(path.join('test', 'native_objc_test', 'method_config.yaml'))
+              .readAsStringSync()) as YamlMap);
+      final library = parse(config);
+      final file = File(
+        path.join('test', 'debug_generated', 'method_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;
+      }
+    });
+
+    group('Instance methods', () {
+      test('No arguments', () {
+        expect(testInstance.add(), 5);
+      });
+
+      test('One argument', () {
+        expect(testInstance.add1(23), 23);
+      });
+
+      test('Two arguments', () {
+        expect(testInstance.add_Y(23, 17), 40);
+      });
+
+      test('Three arguments', () {
+        expect(testInstance.add_Y_Z(23, 17, 60), 100);
+      });
+    });
+
+    group('Class methods', () {
+      test('No arguments', () {
+        expect(MethodInterface.sub(lib), -5);
+      });
+
+      test('One argument', () {
+        expect(MethodInterface.sub1(lib, 7), -7);
+      });
+
+      test('Two arguments', () {
+        expect(MethodInterface.sub_Y(lib, 7, 3), -10);
+      });
+
+      test('Three arguments', () {
+        expect(MethodInterface.sub_Y_Z(lib, 10, 7, 3), -20);
+      });
+    });
+  });
+}
diff --git a/pkgs/ffigen/test/native_objc_test/method_test.m b/pkgs/ffigen/test/native_objc_test/method_test.m
new file mode 100644
index 0000000..86ea090
--- /dev/null
+++ b/pkgs/ffigen/test/native_objc_test/method_test.m
@@ -0,0 +1,53 @@
+#import <Foundation/NSObject.h>
+
+@interface MethodInterface : NSObject {
+}
+
+
+-(int32_t)add;
+-(int32_t)add:(int32_t)x;
+-(int32_t)add:(int32_t)x Y:(int32_t) y;
+-(int32_t)add:(int32_t)x Y:(int32_t) y Z:(int32_t) z;
+
++(int32_t)sub;
++(int32_t)sub:(int32_t)x;
++(int32_t)sub:(int32_t)x Y:(int32_t) y;
++(int32_t)sub:(int32_t)x Y:(int32_t) y Z:(int32_t) z;
+
+@end
+
+@implementation MethodInterface
+
+-(int32_t)add {
+  return 5;
+}
+
+-(int32_t)add:(int32_t)x {
+    return x;
+}
+
+-(int32_t)add:(int32_t)x Y:(int32_t) y {
+    return x + y;
+}
+
+-(int32_t)add:(int32_t)x Y:(int32_t) y Z:(int32_t) z {
+    return x + y + z;
+}
+
++(int32_t)sub {
+  return -5;
+}
+
++(int32_t)sub:(int32_t)x {
+    return -x;
+}
+
++(int32_t)sub:(int32_t)x Y:(int32_t) y {
+    return -x - y;
+}
+
++(int32_t)sub:(int32_t)x Y:(int32_t) y Z:(int32_t) z {
+    return - x - y - z;
+}
+
+@end
diff --git a/pkgs/ffigen/test/native_objc_test/native_objc_test.dart b/pkgs/ffigen/test/native_objc_test/native_objc_test.dart
index 8b23c2d..b1b9eed 100644
--- a/pkgs/ffigen/test/native_objc_test/native_objc_test.dart
+++ b/pkgs/ffigen/test/native_objc_test/native_objc_test.dart
@@ -66,33 +66,5 @@
       expect(foo1.multiply_withOtherFoo(false, foo2), 5);
       expect(foo1.multiply_withOtherFoo(true, foo2), 200);
     });
-
-    test('NSString manipulations', () {
-      final str1 = NSString(lib, "Hello");
-      final str2 = "World!".toNSString(lib);
-
-      expect(str1.length, 5);
-      expect(str2.length, 6);
-
-      expect(str1.toString(), "Hello");
-      expect(str2.toString(), "World!");
-
-      final str3 = StringUtil.strConcat_with(lib, str1, str2);
-      expect(str3.length, 11);
-      expect(str3.toString(), "HelloWorld!");
-    });
-
-    test('Instance read-only property', () {
-      expect(Foo.makeFoo(lib, 42).readOnlyProperty, 7);
-    });
-
-    test('Class read-only property', () {
-      expect(Foo.getClassReadOnlyProperty(lib), 42);
-    });
-
-    test('Class read-write property', () {
-      Foo.setClassReadWriteProperty(lib, 101);
-      expect(Foo.getClassReadWriteProperty(lib), 101);
-    });
   });
 }
diff --git a/pkgs/ffigen/test/native_objc_test/native_objc_test.m b/pkgs/ffigen/test/native_objc_test/native_objc_test.m
index 549cf35..ab7018e 100644
--- a/pkgs/ffigen/test/native_objc_test/native_objc_test.m
+++ b/pkgs/ffigen/test/native_objc_test/native_objc_test.m
@@ -6,9 +6,6 @@
 }
 
 @property int32_t intVal;
-@property (readonly) int32_t readOnlyProperty;
-@property (class, readonly) int32_t classReadOnlyProperty;
-@property (class) int32_t classReadWriteProperty;
 
 + (Foo*)makeFoo:(double)x;
 
@@ -20,24 +17,6 @@
 
 @implementation Foo
 
-static int32_t _classReadWriteProperty = 0;
-
-- (int32_t)readOnlyProperty {
-  return 7;
-}
-
-+ (int32_t)classReadOnlyProperty {
-  return 42;
-}
-
-+ (int32_t)classReadWriteProperty {
-  return _classReadWriteProperty;
-}
-
-+ (void)setClassReadWriteProperty:(int32_t)x {
-  _classReadWriteProperty = x;
-}
-
 + (Foo*)makeFoo:(double)x {
   Foo* foo = [Foo new];
   foo->doubleVal = x;
@@ -58,14 +37,3 @@
 }
 
 @end
-
-// TODO(#309): strConcat should just be a static function.
-@interface StringUtil : NSObject {}
-+ (NSString*)strConcat:(NSString*)a with:(NSString*)b;
-@end
-
-@implementation StringUtil
-+ (NSString*)strConcat:(NSString*)a with:(NSString*)b {
-  return [a stringByAppendingString:b];
-}
-@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 25c41cf..ebcd7c6 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
@@ -3252,42 +3252,6 @@
               ffi.Double)>>('objc_msgSend');
   late final __objc_msgSend_134 = __objc_msgSend_134Ptr.asFunction<
       void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, double)>();
-
-  late final ffi.Pointer<ffi.Int32> __classReadWriteProperty =
-      _lookup<ffi.Int32>('_classReadWriteProperty');
-
-  int get _classReadWriteProperty => __classReadWriteProperty.value;
-
-  set _classReadWriteProperty(int value) =>
-      __classReadWriteProperty.value = value;
-
-  ffi.Pointer<ObjCObject> _objc_msgSend_135(
-    ffi.Pointer<ObjCObject> obj,
-    ffi.Pointer<ObjCSel> sel,
-    ffi.Pointer<ObjCObject> a,
-    ffi.Pointer<ObjCObject> b,
-  ) {
-    return __objc_msgSend_135(
-      obj,
-      sel,
-      a,
-      b,
-    );
-  }
-
-  late final __objc_msgSend_135Ptr = _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_135 = __objc_msgSend_135Ptr.asFunction<
-      ffi.Pointer<ObjCObject> Function(
-          ffi.Pointer<ObjCObject>,
-          ffi.Pointer<ObjCSel>,
-          ffi.Pointer<ObjCObject>,
-          ffi.Pointer<ObjCObject>)>();
 }
 
 abstract class NSComparisonResult {
@@ -5338,35 +5302,6 @@
     _lib._objc_msgSend_131(_id, _sel_intVal1!, value);
   }
 
-  static ffi.Pointer<ObjCSel>? _sel_readOnlyProperty;
-  int get readOnlyProperty {
-    _sel_readOnlyProperty ??= _registerName(_lib, "readOnlyProperty");
-    return _lib._objc_msgSend_130(_id, _sel_readOnlyProperty!);
-  }
-
-  static ffi.Pointer<ObjCSel>? _sel_classReadOnlyProperty;
-  static int getClassReadOnlyProperty(NativeObjCLibrary _lib) {
-    _class ??= _getClass(_lib, "Foo");
-    _sel_classReadOnlyProperty ??= _registerName(_lib, "classReadOnlyProperty");
-    return _lib._objc_msgSend_130(_class!, _sel_classReadOnlyProperty!);
-  }
-
-  static ffi.Pointer<ObjCSel>? _sel_classReadWriteProperty;
-  static int getClassReadWriteProperty(NativeObjCLibrary _lib) {
-    _class ??= _getClass(_lib, "Foo");
-    _sel_classReadWriteProperty ??=
-        _registerName(_lib, "classReadWriteProperty");
-    return _lib._objc_msgSend_130(_class!, _sel_classReadWriteProperty!);
-  }
-
-  static ffi.Pointer<ObjCSel>? _sel_classReadWriteProperty1;
-  static void setClassReadWriteProperty(NativeObjCLibrary _lib, int value) {
-    _class ??= _getClass(_lib, "Foo");
-    _sel_classReadWriteProperty1 ??=
-        _registerName(_lib, "setClassReadWriteProperty:");
-    _lib._objc_msgSend_131(_class!, _sel_classReadWriteProperty1!, value);
-  }
-
   static ffi.Pointer<ObjCSel>? _sel_makeFoo;
   static Foo makeFoo(NativeObjCLibrary _lib, double x) {
     _class ??= _getClass(_lib, "Foo");
@@ -5406,43 +5341,6 @@
   }
 }
 
-class StringUtil extends NSObject {
-  StringUtil._(ffi.Pointer<ObjCObject> id, NativeObjCLibrary lib)
-      : super._(id, lib);
-
-  static ffi.Pointer<ObjCObject>? _class;
-
-  static StringUtil castFrom<T extends _ObjCWrapper>(T other) {
-    return StringUtil._(other._id, other._lib);
-  }
-
-  static ffi.Pointer<ObjCSel>? _sel_strConcat_with;
-  static NSString strConcat_with(
-      NativeObjCLibrary _lib, NSObject a, NSObject b) {
-    _class ??= _getClass(_lib, "StringUtil");
-    _sel_strConcat_with ??= _registerName(_lib, "strConcat:with:");
-    final _ret =
-        _lib._objc_msgSend_135(_class!, _sel_strConcat_with!, a._id, b._id);
-    return NSString._(_ret, _lib);
-  }
-
-  static ffi.Pointer<ObjCSel>? _sel_new1;
-  static StringUtil new1(NativeObjCLibrary _lib) {
-    _class ??= _getClass(_lib, "StringUtil");
-    _sel_new1 ??= _registerName(_lib, "new");
-    final _ret = _lib._objc_msgSend_1(_class!, _sel_new1!);
-    return StringUtil._(_ret, _lib);
-  }
-
-  static ffi.Pointer<ObjCSel>? _sel_alloc;
-  static StringUtil alloc(NativeObjCLibrary _lib) {
-    _class ??= _getClass(_lib, "StringUtil");
-    _sel_alloc ??= _registerName(_lib, "alloc");
-    final _ret = _lib._objc_msgSend_1(_class!, _sel_alloc!);
-    return StringUtil._(_ret, _lib);
-  }
-}
-
 const int NSScannedOption = 1;
 
 const int NSCollectorDisabledOption = 2;
diff --git a/pkgs/ffigen/test/native_objc_test/property_bindings.dart b/pkgs/ffigen/test/native_objc_test/property_bindings.dart
new file mode 100644
index 0000000..85485e7
--- /dev/null
+++ b/pkgs/ffigen/test/native_objc_test/property_bindings.dart
@@ -0,0 +1,1547 @@
+// 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 properties i.e. getters and setters
+class PropertyTestObjCLibrary {
+  /// Holds the symbol lookup function.
+  final ffi.Pointer<T> Function<T extends ffi.NativeType>(String symbolName)
+      _lookup;
+
+  /// The symbols are looked up in [dynamicLibrary].
+  PropertyTestObjCLibrary(ffi.DynamicLibrary dynamicLibrary)
+      : _lookup = dynamicLibrary.lookup;
+
+  /// The symbols are looked up with [lookup].
+  PropertyTestObjCLibrary.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> _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> _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>)>();
+
+  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>)>();
+
+  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>)>();
+
+  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>)>();
+
+  ffi.Pointer<ObjCObject> _objc_msgSend_3(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+  ) {
+    return __objc_msgSend_3(
+      obj,
+      sel,
+    );
+  }
+
+  late final __objc_msgSend_3Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ObjCObject> Function(
+              ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>>('objc_msgSend');
+  late final __objc_msgSend_3 = __objc_msgSend_3Ptr.asFunction<
+      ffi.Pointer<ObjCObject> Function(
+          ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>();
+
+  ffi.Pointer<ObjCObject> _objc_msgSend_4(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+  ) {
+    return __objc_msgSend_4(
+      obj,
+      sel,
+    );
+  }
+
+  late final __objc_msgSend_4Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ObjCObject> Function(
+              ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>>('objc_msgSend');
+  late final __objc_msgSend_4 = __objc_msgSend_4Ptr.asFunction<
+      ffi.Pointer<ObjCObject> Function(
+          ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>();
+
+  ffi.Pointer<ObjCObject> _objc_msgSend_5(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    ffi.Pointer<_NSZone> zone,
+  ) {
+    return __objc_msgSend_5(
+      obj,
+      sel,
+      zone,
+    );
+  }
+
+  late final __objc_msgSend_5Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
+              ffi.Pointer<ObjCSel>, ffi.Pointer<_NSZone>)>>('objc_msgSend');
+  late final __objc_msgSend_5 = __objc_msgSend_5Ptr.asFunction<
+      ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
+          ffi.Pointer<ObjCSel>, ffi.Pointer<_NSZone>)>();
+
+  ffi.Pointer<ObjCObject> _objc_msgSend_6(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    ffi.Pointer<_NSZone> zone,
+  ) {
+    return __objc_msgSend_6(
+      obj,
+      sel,
+      zone,
+    );
+  }
+
+  late final __objc_msgSend_6Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
+              ffi.Pointer<ObjCSel>, ffi.Pointer<_NSZone>)>>('objc_msgSend');
+  late final __objc_msgSend_6 = __objc_msgSend_6Ptr.asFunction<
+      ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
+          ffi.Pointer<ObjCSel>, ffi.Pointer<_NSZone>)>();
+
+  bool _objc_msgSend_7(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    ffi.Pointer<ObjCSel> aSelector,
+  ) {
+    return __objc_msgSend_7(
+          obj,
+          sel,
+          aSelector,
+        ) !=
+        0;
+  }
+
+  late final __objc_msgSend_7Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Uint8 Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+              ffi.Pointer<ObjCSel>)>>('objc_msgSend');
+  late final __objc_msgSend_7 = __objc_msgSend_7Ptr.asFunction<
+      int Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+          ffi.Pointer<ObjCSel>)>();
+
+  bool _objc_msgSend_8(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    ffi.Pointer<ObjCObject> protocol,
+  ) {
+    return __objc_msgSend_8(
+          obj,
+          sel,
+          protocol,
+        ) !=
+        0;
+  }
+
+  late final __objc_msgSend_8Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Uint8 Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+              ffi.Pointer<ObjCObject>)>>('objc_msgSend');
+  late final __objc_msgSend_8 = __objc_msgSend_8Ptr.asFunction<
+      int Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+          ffi.Pointer<ObjCObject>)>();
+
+  IMP _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<
+          IMP Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+              ffi.Pointer<ObjCSel>)>>('objc_msgSend');
+  late final __objc_msgSend_9 = __objc_msgSend_9Ptr.asFunction<
+      IMP Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+          ffi.Pointer<ObjCSel>)>();
+
+  IMP _objc_msgSend_10(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    ffi.Pointer<ObjCSel> aSelector,
+  ) {
+    return __objc_msgSend_10(
+      obj,
+      sel,
+      aSelector,
+    );
+  }
+
+  late final __objc_msgSend_10Ptr = _lookup<
+      ffi.NativeFunction<
+          IMP Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+              ffi.Pointer<ObjCSel>)>>('objc_msgSend');
+  late final __objc_msgSend_10 = __objc_msgSend_10Ptr.asFunction<
+      IMP Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+          ffi.Pointer<ObjCSel>)>();
+
+  void _objc_msgSend_11(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    ffi.Pointer<ObjCSel> aSelector,
+  ) {
+    return __objc_msgSend_11(
+      obj,
+      sel,
+      aSelector,
+    );
+  }
+
+  late final __objc_msgSend_11Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+              ffi.Pointer<ObjCSel>)>>('objc_msgSend');
+  late final __objc_msgSend_11 = __objc_msgSend_11Ptr.asFunction<
+      void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+          ffi.Pointer<ObjCSel>)>();
+
+  ffi.Pointer<ObjCObject> _objc_msgSend_12(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    ffi.Pointer<ObjCSel> aSelector,
+  ) {
+    return __objc_msgSend_12(
+      obj,
+      sel,
+      aSelector,
+    );
+  }
+
+  late final __objc_msgSend_12Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
+              ffi.Pointer<ObjCSel>, ffi.Pointer<ObjCSel>)>>('objc_msgSend');
+  late final __objc_msgSend_12 = __objc_msgSend_12Ptr.asFunction<
+      ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
+          ffi.Pointer<ObjCSel>, ffi.Pointer<ObjCSel>)>();
+
+  void _objc_msgSend_13(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    ffi.Pointer<ObjCObject> anInvocation,
+  ) {
+    return __objc_msgSend_13(
+      obj,
+      sel,
+      anInvocation,
+    );
+  }
+
+  late final __objc_msgSend_13Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+              ffi.Pointer<ObjCObject>)>>('objc_msgSend');
+  late final __objc_msgSend_13 = __objc_msgSend_13Ptr.asFunction<
+      void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+          ffi.Pointer<ObjCObject>)>();
+
+  ffi.Pointer<ObjCObject> _objc_msgSend_14(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    ffi.Pointer<ObjCSel> aSelector,
+  ) {
+    return __objc_msgSend_14(
+      obj,
+      sel,
+      aSelector,
+    );
+  }
+
+  late final __objc_msgSend_14Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
+              ffi.Pointer<ObjCSel>, ffi.Pointer<ObjCSel>)>>('objc_msgSend');
+  late final __objc_msgSend_14 = __objc_msgSend_14Ptr.asFunction<
+      ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
+          ffi.Pointer<ObjCSel>, ffi.Pointer<ObjCSel>)>();
+
+  ffi.Pointer<ObjCObject> _objc_msgSend_15(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    ffi.Pointer<ObjCSel> aSelector,
+  ) {
+    return __objc_msgSend_15(
+      obj,
+      sel,
+      aSelector,
+    );
+  }
+
+  late final __objc_msgSend_15Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
+              ffi.Pointer<ObjCSel>, ffi.Pointer<ObjCSel>)>>('objc_msgSend');
+  late final __objc_msgSend_15 = __objc_msgSend_15Ptr.asFunction<
+      ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
+          ffi.Pointer<ObjCSel>, ffi.Pointer<ObjCSel>)>();
+
+  bool _objc_msgSend_16(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+  ) {
+    return __objc_msgSend_16(
+          obj,
+          sel,
+        ) !=
+        0;
+  }
+
+  late final __objc_msgSend_16Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Uint8 Function(
+              ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>>('objc_msgSend');
+  late final __objc_msgSend_16 = __objc_msgSend_16Ptr.asFunction<
+      int Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>();
+
+  bool _objc_msgSend_17(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    ffi.Pointer<ObjCObject> aClass,
+  ) {
+    return __objc_msgSend_17(
+          obj,
+          sel,
+          aClass,
+        ) !=
+        0;
+  }
+
+  late final __objc_msgSend_17Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Uint8 Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+              ffi.Pointer<ObjCObject>)>>('objc_msgSend');
+  late final __objc_msgSend_17 = __objc_msgSend_17Ptr.asFunction<
+      int Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+          ffi.Pointer<ObjCObject>)>();
+
+  bool _objc_msgSend_18(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    ffi.Pointer<ObjCSel> sel1,
+  ) {
+    return __objc_msgSend_18(
+          obj,
+          sel,
+          sel1,
+        ) !=
+        0;
+  }
+
+  late final __objc_msgSend_18Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Uint8 Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+              ffi.Pointer<ObjCSel>)>>('objc_msgSend');
+  late final __objc_msgSend_18 = __objc_msgSend_18Ptr.asFunction<
+      int Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+          ffi.Pointer<ObjCSel>)>();
+
+  bool _objc_msgSend_19(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    ffi.Pointer<ObjCSel> sel1,
+  ) {
+    return __objc_msgSend_19(
+          obj,
+          sel,
+          sel1,
+        ) !=
+        0;
+  }
+
+  late final __objc_msgSend_19Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Uint8 Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+              ffi.Pointer<ObjCSel>)>>('objc_msgSend');
+  late final __objc_msgSend_19 = __objc_msgSend_19Ptr.asFunction<
+      int Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+          ffi.Pointer<ObjCSel>)>();
+
+  int _objc_msgSend_20(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+  ) {
+    return __objc_msgSend_20(
+      obj,
+      sel,
+    );
+  }
+
+  late final __objc_msgSend_20Ptr = _lookup<
+      ffi.NativeFunction<
+          NSUInteger Function(
+              ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>>('objc_msgSend');
+  late final __objc_msgSend_20 = __objc_msgSend_20Ptr.asFunction<
+      int Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>();
+
+  ffi.Pointer<ObjCObject> _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<
+          ffi.Pointer<ObjCObject> Function(
+              ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>>('objc_msgSend');
+  late final __objc_msgSend_21 = __objc_msgSend_21Ptr.asFunction<
+      ffi.Pointer<ObjCObject> Function(
+          ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>();
+
+  ffi.Pointer<ObjCObject> _objc_msgSend_22(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+  ) {
+    return __objc_msgSend_22(
+      obj,
+      sel,
+    );
+  }
+
+  late final __objc_msgSend_22Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ObjCObject> Function(
+              ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>>('objc_msgSend');
+  late final __objc_msgSend_22 = __objc_msgSend_22Ptr.asFunction<
+      ffi.Pointer<ObjCObject> Function(
+          ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>();
+
+  ffi.Pointer<ObjCObject> _objc_msgSend_23(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    ffi.Pointer<pkg_ffi.Char> cString,
+    int enc,
+  ) {
+    return __objc_msgSend_23(
+      obj,
+      sel,
+      cString,
+      enc,
+    );
+  }
+
+  late final __objc_msgSend_23Ptr = _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_23 = __objc_msgSend_23Ptr.asFunction<
+      ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
+          ffi.Pointer<ObjCSel>, ffi.Pointer<pkg_ffi.Char>, int)>();
+
+  ffi.Pointer<pkg_ffi.Char> _objc_msgSend_24(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+  ) {
+    return __objc_msgSend_24(
+      obj,
+      sel,
+    );
+  }
+
+  late final __objc_msgSend_24Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<pkg_ffi.Char> Function(
+              ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>>('objc_msgSend');
+  late final __objc_msgSend_24 = __objc_msgSend_24Ptr.asFunction<
+      ffi.Pointer<pkg_ffi.Char> Function(
+          ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>();
+
+  ffi.Pointer<ObjCObject> _objc_msgSend_25(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+  ) {
+    return __objc_msgSend_25(
+      obj,
+      sel,
+    );
+  }
+
+  late final __objc_msgSend_25Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ObjCObject> Function(
+              ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>>('objc_msgSend');
+  late final __objc_msgSend_25 = __objc_msgSend_25Ptr.asFunction<
+      ffi.Pointer<ObjCObject> Function(
+          ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>();
+
+  int _objc_msgSend_26(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+  ) {
+    return __objc_msgSend_26(
+      obj,
+      sel,
+    );
+  }
+
+  late final __objc_msgSend_26Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Int32 Function(
+              ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>>('objc_msgSend');
+  late final __objc_msgSend_26 = __objc_msgSend_26Ptr.asFunction<
+      int Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>();
+
+  void _objc_msgSend_27(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    int value,
+  ) {
+    return __objc_msgSend_27(
+      obj,
+      sel,
+      value,
+    );
+  }
+
+  late final __objc_msgSend_27Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+              ffi.Int32)>>('objc_msgSend');
+  late final __objc_msgSend_27 = __objc_msgSend_27Ptr.asFunction<
+      void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, int)>();
+
+  late final ffi.Pointer<ffi.Int32> __classReadWriteProperty =
+      _lookup<ffi.Int32>('_classReadWriteProperty');
+
+  int get _classReadWriteProperty => __classReadWriteProperty.value;
+
+  set _classReadWriteProperty(int value) =>
+      __classReadWriteProperty.value = value;
+}
+
+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>)>>;
+
+ffi.Pointer<ObjCSel> _registerName(PropertyTestObjCLibrary _lib, String name) {
+  final cstr = name.toNativeUtf8();
+  final sel = _lib._sel_registerName(cstr.cast());
+  pkg_ffi.calloc.free(cstr);
+  return sel;
+}
+
+ffi.Pointer<ObjCObject> _getClass(PropertyTestObjCLibrary _lib, String name) {
+  final cstr = name.toNativeUtf8();
+  final clazz = _lib._objc_getClass(cstr.cast());
+  pkg_ffi.calloc.free(cstr);
+  return clazz;
+}
+
+class _ObjCWrapper {
+  final ffi.Pointer<ObjCObject> _id;
+  final PropertyTestObjCLibrary _lib;
+  _ObjCWrapper._(this._id, this._lib);
+}
+
+class PropertyInterface extends NSObject {
+  PropertyInterface._(ffi.Pointer<ObjCObject> id, PropertyTestObjCLibrary lib)
+      : super._(id, lib);
+
+  static ffi.Pointer<ObjCObject>? _class;
+
+  static PropertyInterface castFrom<T extends _ObjCWrapper>(T other) {
+    return PropertyInterface._(other._id, other._lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_readOnlyProperty;
+  int get readOnlyProperty {
+    _sel_readOnlyProperty ??= _registerName(_lib, "readOnlyProperty");
+    return _lib._objc_msgSend_26(_id, _sel_readOnlyProperty!);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_readWriteProperty;
+  int get readWriteProperty {
+    _sel_readWriteProperty ??= _registerName(_lib, "readWriteProperty");
+    return _lib._objc_msgSend_26(_id, _sel_readWriteProperty!);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_readWriteProperty1;
+  set readWriteProperty(int value) {
+    _sel_readWriteProperty1 ??= _registerName(_lib, "setReadWriteProperty:");
+    _lib._objc_msgSend_27(_id, _sel_readWriteProperty1!, value);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_classReadOnlyProperty;
+  static int getClassReadOnlyProperty(PropertyTestObjCLibrary _lib) {
+    _class ??= _getClass(_lib, "PropertyInterface");
+    _sel_classReadOnlyProperty ??= _registerName(_lib, "classReadOnlyProperty");
+    return _lib._objc_msgSend_26(_class!, _sel_classReadOnlyProperty!);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_classReadWriteProperty;
+  static int getClassReadWriteProperty(PropertyTestObjCLibrary _lib) {
+    _class ??= _getClass(_lib, "PropertyInterface");
+    _sel_classReadWriteProperty ??=
+        _registerName(_lib, "classReadWriteProperty");
+    return _lib._objc_msgSend_26(_class!, _sel_classReadWriteProperty!);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_classReadWriteProperty1;
+  static void setClassReadWriteProperty(
+      PropertyTestObjCLibrary _lib, int value) {
+    _class ??= _getClass(_lib, "PropertyInterface");
+    _sel_classReadWriteProperty1 ??=
+        _registerName(_lib, "setClassReadWriteProperty:");
+    _lib._objc_msgSend_27(_class!, _sel_classReadWriteProperty1!, value);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_new1;
+  static PropertyInterface new1(PropertyTestObjCLibrary _lib) {
+    _class ??= _getClass(_lib, "PropertyInterface");
+    _sel_new1 ??= _registerName(_lib, "new");
+    final _ret = _lib._objc_msgSend_1(_class!, _sel_new1!);
+    return PropertyInterface._(_ret, _lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_alloc;
+  static PropertyInterface alloc(PropertyTestObjCLibrary _lib) {
+    _class ??= _getClass(_lib, "PropertyInterface");
+    _sel_alloc ??= _registerName(_lib, "alloc");
+    final _ret = _lib._objc_msgSend_1(_class!, _sel_alloc!);
+    return PropertyInterface._(_ret, _lib);
+  }
+}
+
+class NSObject extends _ObjCWrapper {
+  NSObject._(ffi.Pointer<ObjCObject> id, PropertyTestObjCLibrary lib)
+      : super._(id, lib);
+
+  static ffi.Pointer<ObjCObject>? _class;
+
+  static NSObject castFrom<T extends _ObjCWrapper>(T other) {
+    return NSObject._(other._id, other._lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_load;
+  static void load(PropertyTestObjCLibrary _lib) {
+    _class ??= _getClass(_lib, "NSObject");
+    _sel_load ??= _registerName(_lib, "load");
+    _lib._objc_msgSend_0(_class!, _sel_load!);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_initialize;
+  static void initialize(PropertyTestObjCLibrary _lib) {
+    _class ??= _getClass(_lib, "NSObject");
+    _sel_initialize ??= _registerName(_lib, "initialize");
+    _lib._objc_msgSend_0(_class!, _sel_initialize!);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_init;
+  NSObject init() {
+    _sel_init ??= _registerName(_lib, "init");
+    final _ret = _lib._objc_msgSend_1(_id, _sel_init!);
+    return NSObject._(_ret, _lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_new1;
+  static NSObject new1(PropertyTestObjCLibrary _lib) {
+    _class ??= _getClass(_lib, "NSObject");
+    _sel_new1 ??= _registerName(_lib, "new");
+    final _ret = _lib._objc_msgSend_1(_class!, _sel_new1!);
+    return NSObject._(_ret, _lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_allocWithZone;
+  static NSObject allocWithZone(
+      PropertyTestObjCLibrary _lib, ffi.Pointer<_NSZone> zone) {
+    _class ??= _getClass(_lib, "NSObject");
+    _sel_allocWithZone ??= _registerName(_lib, "allocWithZone:");
+    final _ret = _lib._objc_msgSend_2(_class!, _sel_allocWithZone!, zone);
+    return NSObject._(_ret, _lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_alloc;
+  static NSObject alloc(PropertyTestObjCLibrary _lib) {
+    _class ??= _getClass(_lib, "NSObject");
+    _sel_alloc ??= _registerName(_lib, "alloc");
+    final _ret = _lib._objc_msgSend_1(_class!, _sel_alloc!);
+    return NSObject._(_ret, _lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_dealloc;
+  void dealloc() {
+    _sel_dealloc ??= _registerName(_lib, "dealloc");
+    _lib._objc_msgSend_0(_id, _sel_dealloc!);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_finalize;
+  void finalize() {
+    _sel_finalize ??= _registerName(_lib, "finalize");
+    _lib._objc_msgSend_0(_id, _sel_finalize!);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_copy;
+  NSObject copy() {
+    _sel_copy ??= _registerName(_lib, "copy");
+    final _ret = _lib._objc_msgSend_3(_id, _sel_copy!);
+    return NSObject._(_ret, _lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_mutableCopy;
+  NSObject mutableCopy() {
+    _sel_mutableCopy ??= _registerName(_lib, "mutableCopy");
+    final _ret = _lib._objc_msgSend_4(_id, _sel_mutableCopy!);
+    return NSObject._(_ret, _lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_copyWithZone;
+  static NSObject copyWithZone(
+      PropertyTestObjCLibrary _lib, ffi.Pointer<_NSZone> zone) {
+    _class ??= _getClass(_lib, "NSObject");
+    _sel_copyWithZone ??= _registerName(_lib, "copyWithZone:");
+    final _ret = _lib._objc_msgSend_5(_class!, _sel_copyWithZone!, zone);
+    return NSObject._(_ret, _lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_mutableCopyWithZone;
+  static NSObject mutableCopyWithZone(
+      PropertyTestObjCLibrary _lib, ffi.Pointer<_NSZone> zone) {
+    _class ??= _getClass(_lib, "NSObject");
+    _sel_mutableCopyWithZone ??= _registerName(_lib, "mutableCopyWithZone:");
+    final _ret = _lib._objc_msgSend_6(_class!, _sel_mutableCopyWithZone!, zone);
+    return NSObject._(_ret, _lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_instancesRespondToSelector;
+  static bool instancesRespondToSelector(
+      PropertyTestObjCLibrary _lib, ffi.Pointer<ObjCSel> aSelector) {
+    _class ??= _getClass(_lib, "NSObject");
+    _sel_instancesRespondToSelector ??=
+        _registerName(_lib, "instancesRespondToSelector:");
+    return _lib._objc_msgSend_7(
+        _class!, _sel_instancesRespondToSelector!, aSelector);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_conformsToProtocol;
+  static bool conformsToProtocol(
+      PropertyTestObjCLibrary _lib, NSObject protocol) {
+    _class ??= _getClass(_lib, "NSObject");
+    _sel_conformsToProtocol ??= _registerName(_lib, "conformsToProtocol:");
+    return _lib._objc_msgSend_8(
+        _class!, _sel_conformsToProtocol!, protocol._id);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_methodForSelector;
+  IMP methodForSelector(ffi.Pointer<ObjCSel> aSelector) {
+    _sel_methodForSelector ??= _registerName(_lib, "methodForSelector:");
+    return _lib._objc_msgSend_9(_id, _sel_methodForSelector!, aSelector);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_instanceMethodForSelector;
+  static IMP instanceMethodForSelector(
+      PropertyTestObjCLibrary _lib, ffi.Pointer<ObjCSel> aSelector) {
+    _class ??= _getClass(_lib, "NSObject");
+    _sel_instanceMethodForSelector ??=
+        _registerName(_lib, "instanceMethodForSelector:");
+    return _lib._objc_msgSend_10(
+        _class!, _sel_instanceMethodForSelector!, aSelector);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_doesNotRecognizeSelector;
+  void doesNotRecognizeSelector(ffi.Pointer<ObjCSel> aSelector) {
+    _sel_doesNotRecognizeSelector ??=
+        _registerName(_lib, "doesNotRecognizeSelector:");
+    _lib._objc_msgSend_11(_id, _sel_doesNotRecognizeSelector!, aSelector);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_forwardingTargetForSelector;
+  NSObject forwardingTargetForSelector(ffi.Pointer<ObjCSel> aSelector) {
+    _sel_forwardingTargetForSelector ??=
+        _registerName(_lib, "forwardingTargetForSelector:");
+    final _ret = _lib._objc_msgSend_12(
+        _id, _sel_forwardingTargetForSelector!, aSelector);
+    return NSObject._(_ret, _lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_forwardInvocation;
+  void forwardInvocation(NSObject anInvocation) {
+    _sel_forwardInvocation ??= _registerName(_lib, "forwardInvocation:");
+    _lib._objc_msgSend_13(_id, _sel_forwardInvocation!, anInvocation._id);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_methodSignatureForSelector;
+  NSMethodSignature methodSignatureForSelector(ffi.Pointer<ObjCSel> aSelector) {
+    _sel_methodSignatureForSelector ??=
+        _registerName(_lib, "methodSignatureForSelector:");
+    final _ret =
+        _lib._objc_msgSend_14(_id, _sel_methodSignatureForSelector!, aSelector);
+    return NSMethodSignature._(_ret, _lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_instanceMethodSignatureForSelector;
+  static NSMethodSignature instanceMethodSignatureForSelector(
+      PropertyTestObjCLibrary _lib, ffi.Pointer<ObjCSel> aSelector) {
+    _class ??= _getClass(_lib, "NSObject");
+    _sel_instanceMethodSignatureForSelector ??=
+        _registerName(_lib, "instanceMethodSignatureForSelector:");
+    final _ret = _lib._objc_msgSend_15(
+        _class!, _sel_instanceMethodSignatureForSelector!, aSelector);
+    return NSMethodSignature._(_ret, _lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_allowsWeakReference;
+  bool allowsWeakReference() {
+    _sel_allowsWeakReference ??= _registerName(_lib, "allowsWeakReference");
+    return _lib._objc_msgSend_16(_id, _sel_allowsWeakReference!);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_retainWeakReference;
+  bool retainWeakReference() {
+    _sel_retainWeakReference ??= _registerName(_lib, "retainWeakReference");
+    return _lib._objc_msgSend_16(_id, _sel_retainWeakReference!);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_isSubclassOfClass;
+  static bool isSubclassOfClass(PropertyTestObjCLibrary _lib, NSObject aClass) {
+    _class ??= _getClass(_lib, "NSObject");
+    _sel_isSubclassOfClass ??= _registerName(_lib, "isSubclassOfClass:");
+    return _lib._objc_msgSend_17(_class!, _sel_isSubclassOfClass!, aClass._id);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_resolveClassMethod;
+  static bool resolveClassMethod(
+      PropertyTestObjCLibrary _lib, ffi.Pointer<ObjCSel> sel) {
+    _class ??= _getClass(_lib, "NSObject");
+    _sel_resolveClassMethod ??= _registerName(_lib, "resolveClassMethod:");
+    return _lib._objc_msgSend_18(_class!, _sel_resolveClassMethod!, sel);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_resolveInstanceMethod;
+  static bool resolveInstanceMethod(
+      PropertyTestObjCLibrary _lib, ffi.Pointer<ObjCSel> sel) {
+    _class ??= _getClass(_lib, "NSObject");
+    _sel_resolveInstanceMethod ??=
+        _registerName(_lib, "resolveInstanceMethod:");
+    return _lib._objc_msgSend_19(_class!, _sel_resolveInstanceMethod!, sel);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_hash;
+  static int hash(PropertyTestObjCLibrary _lib) {
+    _class ??= _getClass(_lib, "NSObject");
+    _sel_hash ??= _registerName(_lib, "hash");
+    return _lib._objc_msgSend_20(_class!, _sel_hash!);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_superclass;
+  static NSObject superclass(PropertyTestObjCLibrary _lib) {
+    _class ??= _getClass(_lib, "NSObject");
+    _sel_superclass ??= _registerName(_lib, "superclass");
+    final _ret = _lib._objc_msgSend_21(_class!, _sel_superclass!);
+    return NSObject._(_ret, _lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_class1;
+  static NSObject class1(PropertyTestObjCLibrary _lib) {
+    _class ??= _getClass(_lib, "NSObject");
+    _sel_class1 ??= _registerName(_lib, "class");
+    final _ret = _lib._objc_msgSend_22(_class!, _sel_class1!);
+    return NSObject._(_ret, _lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_description;
+  static NSString description(PropertyTestObjCLibrary _lib) {
+    _class ??= _getClass(_lib, "NSObject");
+    _sel_description ??= _registerName(_lib, "description");
+    final _ret = _lib._objc_msgSend_25(_class!, _sel_description!);
+    return NSString._(_ret, _lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_debugDescription;
+  static NSString debugDescription(PropertyTestObjCLibrary _lib) {
+    _class ??= _getClass(_lib, "NSObject");
+    _sel_debugDescription ??= _registerName(_lib, "debugDescription");
+    final _ret = _lib._objc_msgSend_25(_class!, _sel_debugDescription!);
+    return NSString._(_ret, _lib);
+  }
+}
+
+typedef instancetype = ffi.Pointer<ObjCObject>;
+
+class ObjCObject extends ffi.Opaque {}
+
+class _NSZone extends ffi.Opaque {}
+
+class ObjCSel extends ffi.Opaque {}
+
+typedef IMP = ffi.Pointer<ffi.NativeFunction<ffi.Void Function()>>;
+
+class NSMethodSignature extends _ObjCWrapper {
+  NSMethodSignature._(ffi.Pointer<ObjCObject> id, PropertyTestObjCLibrary lib)
+      : super._(id, lib);
+
+  static ffi.Pointer<ObjCObject>? _class;
+
+  static NSMethodSignature castFrom<T extends _ObjCWrapper>(T other) {
+    return NSMethodSignature._(other._id, other._lib);
+  }
+}
+
+typedef NSUInteger = pkg_ffi.UnsignedLong;
+
+class NSString extends _ObjCWrapper {
+  NSString._(ffi.Pointer<ObjCObject> id, PropertyTestObjCLibrary lib)
+      : super._(id, lib);
+
+  static ffi.Pointer<ObjCObject>? _class;
+
+  static NSString castFrom<T extends _ObjCWrapper>(T other) {
+    return NSString._(other._id, other._lib);
+  }
+
+  factory NSString(PropertyTestObjCLibrary _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 ffi.Pointer<ObjCSel>? _sel_stringWithCString_encoding;
+  static NSString stringWithCString_encoding(PropertyTestObjCLibrary _lib,
+      ffi.Pointer<pkg_ffi.Char> cString, int enc) {
+    _class ??= _getClass(_lib, "NSString");
+    _sel_stringWithCString_encoding ??=
+        _registerName(_lib, "stringWithCString:encoding:");
+    final _ret = _lib._objc_msgSend_23(
+        _class!, _sel_stringWithCString_encoding!, cString, enc);
+    return NSString._(_ret, _lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_UTF8String;
+  ffi.Pointer<pkg_ffi.Char> UTF8String() {
+    _sel_UTF8String ??= _registerName(_lib, "UTF8String");
+    return _lib._objc_msgSend_24(_id, _sel_UTF8String!);
+  }
+}
+
+extension StringToNSString on String {
+  NSString toNSString(PropertyTestObjCLibrary lib) => NSString(lib, this);
+}
+
+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/property_config.yaml b/pkgs/ffigen/test/native_objc_test/property_config.yaml
new file mode 100644
index 0000000..5caaad2
--- /dev/null
+++ b/pkgs/ffigen/test/native_objc_test/property_config.yaml
@@ -0,0 +1,12 @@
+name: PropertyTestObjCLibrary
+description: 'Tests calling Objective-C properties i.e. getters and setters'
+language: objc
+output: 'test/native_objc_test/property_bindings.dart'
+functions:
+  exclude:
+    - '.*'
+headers:
+  entry-points:
+    - 'test/native_objc_test/property_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/property_test.dart b/pkgs/ffigen/test/native_objc_test/property_test.dart
new file mode 100644
index 0000000..ada0cdf
--- /dev/null
+++ b/pkgs/ffigen/test/native_objc_test/property_test.dart
@@ -0,0 +1,76 @@
+// 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 'property_bindings.dart';
+
+void main() {
+  late PropertyInterface testInstance;
+  late PropertyTestObjCLibrary lib;
+
+  group('properties', () {
+    setUpAll(() {
+      logWarnings();
+      final dylib = File('test/native_objc_test/property_test.dylib');
+      verifySetupFile(dylib);
+      lib = PropertyTestObjCLibrary(DynamicLibrary.open(dylib.absolute.path));
+      testInstance = PropertyInterface.new1(lib);
+    });
+
+    test('generate_bindings', () {
+      final config = Config.fromYaml(loadYaml(
+          File(path.join('test', 'native_objc_test', 'property_config.yaml'))
+              .readAsStringSync()) as YamlMap);
+      final library = parse(config);
+      final file = File(
+        path.join('test', 'debug_generated', 'property_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;
+      }
+    });
+
+    group('instance properties', () {
+      test('read-only property', () {
+        expect(testInstance.readOnlyProperty, 7);
+      });
+
+      test('read-write property', () {
+        testInstance.readWriteProperty = 23;
+        expect(testInstance.readWriteProperty, 23);
+      });
+    });
+
+    group('class properties', () {
+      test('read-only property', () {
+        expect(PropertyInterface.getClassReadOnlyProperty(lib), 42);
+      });
+
+      test('read-write property', () {
+        PropertyInterface.setClassReadWriteProperty(lib, 101);
+        expect(PropertyInterface.getClassReadWriteProperty(lib), 101);
+      });
+    });
+  });
+}
diff --git a/pkgs/ffigen/test/native_objc_test/property_test.m b/pkgs/ffigen/test/native_objc_test/property_test.m
new file mode 100644
index 0000000..74728e5
--- /dev/null
+++ b/pkgs/ffigen/test/native_objc_test/property_test.m
@@ -0,0 +1,33 @@
+#import <Foundation/NSObject.h>
+
+@interface PropertyInterface : NSObject {
+}
+
+@property (readonly) int32_t readOnlyProperty;
+@property int32_t readWriteProperty;
+@property (class, readonly) int32_t classReadOnlyProperty;
+@property (class) int32_t classReadWriteProperty;
+
+@end
+
+@implementation PropertyInterface
+
+static int32_t _classReadWriteProperty = 0;
+
+- (int32_t)readOnlyProperty {
+  return 7;
+}
+
++ (int32_t)classReadOnlyProperty {
+  return 42;
+}
+
++ (int32_t)classReadWriteProperty {
+  return _classReadWriteProperty;
+}
+
++ (void)setClassReadWriteProperty:(int32_t)x {
+  _classReadWriteProperty = x;
+}
+
+@end
\ No newline at end of file
diff --git a/pkgs/ffigen/test/native_objc_test/setup.dart b/pkgs/ffigen/test/native_objc_test/setup.dart
index c9dbf05..86368a1 100644
--- a/pkgs/ffigen/test/native_objc_test/setup.dart
+++ b/pkgs/ffigen/test/native_objc_test/setup.dart
@@ -33,4 +33,7 @@
   }
   print('Building Dynamic Library for Objective C Native Tests...');
   await _buildLib('native_objc_test.m', 'native_objc_test.dylib');
+  await _buildLib('method_test.m', 'method_test.dylib');
+  await _buildLib('property_test.m', 'property_test.dylib');
+  await _buildLib('string_test.m', 'string_test.dylib');
 }
diff --git a/pkgs/ffigen/test/native_objc_test/string_bindings.dart b/pkgs/ffigen/test/native_objc_test/string_bindings.dart
new file mode 100644
index 0000000..fc45dec
--- /dev/null
+++ b/pkgs/ffigen/test/native_objc_test/string_bindings.dart
@@ -0,0 +1,5658 @@
+// 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 string methods
+class StringTestObjCLibrary {
+  /// Holds the symbol lookup function.
+  final ffi.Pointer<T> Function<T extends ffi.NativeType>(String symbolName)
+      _lookup;
+
+  /// The symbols are looked up in [dynamicLibrary].
+  StringTestObjCLibrary(ffi.DynamicLibrary dynamicLibrary)
+      : _lookup = dynamicLibrary.lookup;
+
+  /// The symbols are looked up with [lookup].
+  StringTestObjCLibrary.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> _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> _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>)>();
+
+  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>)>();
+
+  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>)>();
+
+  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>)>();
+
+  ffi.Pointer<ObjCObject> _objc_msgSend_3(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+  ) {
+    return __objc_msgSend_3(
+      obj,
+      sel,
+    );
+  }
+
+  late final __objc_msgSend_3Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ObjCObject> Function(
+              ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>>('objc_msgSend');
+  late final __objc_msgSend_3 = __objc_msgSend_3Ptr.asFunction<
+      ffi.Pointer<ObjCObject> Function(
+          ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>();
+
+  ffi.Pointer<ObjCObject> _objc_msgSend_4(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+  ) {
+    return __objc_msgSend_4(
+      obj,
+      sel,
+    );
+  }
+
+  late final __objc_msgSend_4Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ObjCObject> Function(
+              ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>>('objc_msgSend');
+  late final __objc_msgSend_4 = __objc_msgSend_4Ptr.asFunction<
+      ffi.Pointer<ObjCObject> Function(
+          ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>();
+
+  ffi.Pointer<ObjCObject> _objc_msgSend_5(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    ffi.Pointer<_NSZone> zone,
+  ) {
+    return __objc_msgSend_5(
+      obj,
+      sel,
+      zone,
+    );
+  }
+
+  late final __objc_msgSend_5Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
+              ffi.Pointer<ObjCSel>, ffi.Pointer<_NSZone>)>>('objc_msgSend');
+  late final __objc_msgSend_5 = __objc_msgSend_5Ptr.asFunction<
+      ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
+          ffi.Pointer<ObjCSel>, ffi.Pointer<_NSZone>)>();
+
+  ffi.Pointer<ObjCObject> _objc_msgSend_6(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    ffi.Pointer<_NSZone> zone,
+  ) {
+    return __objc_msgSend_6(
+      obj,
+      sel,
+      zone,
+    );
+  }
+
+  late final __objc_msgSend_6Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
+              ffi.Pointer<ObjCSel>, ffi.Pointer<_NSZone>)>>('objc_msgSend');
+  late final __objc_msgSend_6 = __objc_msgSend_6Ptr.asFunction<
+      ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
+          ffi.Pointer<ObjCSel>, ffi.Pointer<_NSZone>)>();
+
+  bool _objc_msgSend_7(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    ffi.Pointer<ObjCSel> aSelector,
+  ) {
+    return __objc_msgSend_7(
+          obj,
+          sel,
+          aSelector,
+        ) !=
+        0;
+  }
+
+  late final __objc_msgSend_7Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Uint8 Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+              ffi.Pointer<ObjCSel>)>>('objc_msgSend');
+  late final __objc_msgSend_7 = __objc_msgSend_7Ptr.asFunction<
+      int Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+          ffi.Pointer<ObjCSel>)>();
+
+  bool _objc_msgSend_8(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    ffi.Pointer<ObjCObject> protocol,
+  ) {
+    return __objc_msgSend_8(
+          obj,
+          sel,
+          protocol,
+        ) !=
+        0;
+  }
+
+  late final __objc_msgSend_8Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Uint8 Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+              ffi.Pointer<ObjCObject>)>>('objc_msgSend');
+  late final __objc_msgSend_8 = __objc_msgSend_8Ptr.asFunction<
+      int Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+          ffi.Pointer<ObjCObject>)>();
+
+  IMP _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<
+          IMP Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+              ffi.Pointer<ObjCSel>)>>('objc_msgSend');
+  late final __objc_msgSend_9 = __objc_msgSend_9Ptr.asFunction<
+      IMP Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+          ffi.Pointer<ObjCSel>)>();
+
+  IMP _objc_msgSend_10(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    ffi.Pointer<ObjCSel> aSelector,
+  ) {
+    return __objc_msgSend_10(
+      obj,
+      sel,
+      aSelector,
+    );
+  }
+
+  late final __objc_msgSend_10Ptr = _lookup<
+      ffi.NativeFunction<
+          IMP Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+              ffi.Pointer<ObjCSel>)>>('objc_msgSend');
+  late final __objc_msgSend_10 = __objc_msgSend_10Ptr.asFunction<
+      IMP Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+          ffi.Pointer<ObjCSel>)>();
+
+  void _objc_msgSend_11(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    ffi.Pointer<ObjCSel> aSelector,
+  ) {
+    return __objc_msgSend_11(
+      obj,
+      sel,
+      aSelector,
+    );
+  }
+
+  late final __objc_msgSend_11Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+              ffi.Pointer<ObjCSel>)>>('objc_msgSend');
+  late final __objc_msgSend_11 = __objc_msgSend_11Ptr.asFunction<
+      void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+          ffi.Pointer<ObjCSel>)>();
+
+  ffi.Pointer<ObjCObject> _objc_msgSend_12(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    ffi.Pointer<ObjCSel> aSelector,
+  ) {
+    return __objc_msgSend_12(
+      obj,
+      sel,
+      aSelector,
+    );
+  }
+
+  late final __objc_msgSend_12Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
+              ffi.Pointer<ObjCSel>, ffi.Pointer<ObjCSel>)>>('objc_msgSend');
+  late final __objc_msgSend_12 = __objc_msgSend_12Ptr.asFunction<
+      ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
+          ffi.Pointer<ObjCSel>, ffi.Pointer<ObjCSel>)>();
+
+  void _objc_msgSend_13(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    ffi.Pointer<ObjCObject> anInvocation,
+  ) {
+    return __objc_msgSend_13(
+      obj,
+      sel,
+      anInvocation,
+    );
+  }
+
+  late final __objc_msgSend_13Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+              ffi.Pointer<ObjCObject>)>>('objc_msgSend');
+  late final __objc_msgSend_13 = __objc_msgSend_13Ptr.asFunction<
+      void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+          ffi.Pointer<ObjCObject>)>();
+
+  ffi.Pointer<ObjCObject> _objc_msgSend_14(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    ffi.Pointer<ObjCSel> aSelector,
+  ) {
+    return __objc_msgSend_14(
+      obj,
+      sel,
+      aSelector,
+    );
+  }
+
+  late final __objc_msgSend_14Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
+              ffi.Pointer<ObjCSel>, ffi.Pointer<ObjCSel>)>>('objc_msgSend');
+  late final __objc_msgSend_14 = __objc_msgSend_14Ptr.asFunction<
+      ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
+          ffi.Pointer<ObjCSel>, ffi.Pointer<ObjCSel>)>();
+
+  ffi.Pointer<ObjCObject> _objc_msgSend_15(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    ffi.Pointer<ObjCSel> aSelector,
+  ) {
+    return __objc_msgSend_15(
+      obj,
+      sel,
+      aSelector,
+    );
+  }
+
+  late final __objc_msgSend_15Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
+              ffi.Pointer<ObjCSel>, ffi.Pointer<ObjCSel>)>>('objc_msgSend');
+  late final __objc_msgSend_15 = __objc_msgSend_15Ptr.asFunction<
+      ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
+          ffi.Pointer<ObjCSel>, ffi.Pointer<ObjCSel>)>();
+
+  bool _objc_msgSend_16(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+  ) {
+    return __objc_msgSend_16(
+          obj,
+          sel,
+        ) !=
+        0;
+  }
+
+  late final __objc_msgSend_16Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Uint8 Function(
+              ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>>('objc_msgSend');
+  late final __objc_msgSend_16 = __objc_msgSend_16Ptr.asFunction<
+      int Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>();
+
+  bool _objc_msgSend_17(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    ffi.Pointer<ObjCObject> aClass,
+  ) {
+    return __objc_msgSend_17(
+          obj,
+          sel,
+          aClass,
+        ) !=
+        0;
+  }
+
+  late final __objc_msgSend_17Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Uint8 Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+              ffi.Pointer<ObjCObject>)>>('objc_msgSend');
+  late final __objc_msgSend_17 = __objc_msgSend_17Ptr.asFunction<
+      int Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+          ffi.Pointer<ObjCObject>)>();
+
+  bool _objc_msgSend_18(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    ffi.Pointer<ObjCSel> sel1,
+  ) {
+    return __objc_msgSend_18(
+          obj,
+          sel,
+          sel1,
+        ) !=
+        0;
+  }
+
+  late final __objc_msgSend_18Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Uint8 Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+              ffi.Pointer<ObjCSel>)>>('objc_msgSend');
+  late final __objc_msgSend_18 = __objc_msgSend_18Ptr.asFunction<
+      int Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+          ffi.Pointer<ObjCSel>)>();
+
+  bool _objc_msgSend_19(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    ffi.Pointer<ObjCSel> sel1,
+  ) {
+    return __objc_msgSend_19(
+          obj,
+          sel,
+          sel1,
+        ) !=
+        0;
+  }
+
+  late final __objc_msgSend_19Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Uint8 Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+              ffi.Pointer<ObjCSel>)>>('objc_msgSend');
+  late final __objc_msgSend_19 = __objc_msgSend_19Ptr.asFunction<
+      int Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+          ffi.Pointer<ObjCSel>)>();
+
+  int _objc_msgSend_20(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+  ) {
+    return __objc_msgSend_20(
+      obj,
+      sel,
+    );
+  }
+
+  late final __objc_msgSend_20Ptr = _lookup<
+      ffi.NativeFunction<
+          NSUInteger Function(
+              ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>>('objc_msgSend');
+  late final __objc_msgSend_20 = __objc_msgSend_20Ptr.asFunction<
+      int Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>();
+
+  ffi.Pointer<ObjCObject> _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<
+          ffi.Pointer<ObjCObject> Function(
+              ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>>('objc_msgSend');
+  late final __objc_msgSend_21 = __objc_msgSend_21Ptr.asFunction<
+      ffi.Pointer<ObjCObject> Function(
+          ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>();
+
+  ffi.Pointer<ObjCObject> _objc_msgSend_22(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+  ) {
+    return __objc_msgSend_22(
+      obj,
+      sel,
+    );
+  }
+
+  late final __objc_msgSend_22Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ObjCObject> Function(
+              ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>>('objc_msgSend');
+  late final __objc_msgSend_22 = __objc_msgSend_22Ptr.asFunction<
+      ffi.Pointer<ObjCObject> Function(
+          ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>();
+
+  int _objc_msgSend_23(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    int index,
+  ) {
+    return __objc_msgSend_23(
+      obj,
+      sel,
+      index,
+    );
+  }
+
+  late final __objc_msgSend_23Ptr = _lookup<
+      ffi.NativeFunction<
+          unichar Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+              NSUInteger)>>('objc_msgSend');
+  late final __objc_msgSend_23 = __objc_msgSend_23Ptr.asFunction<
+      int Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, int)>();
+
+  instancetype _objc_msgSend_24(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    ffi.Pointer<ObjCObject> coder,
+  ) {
+    return __objc_msgSend_24(
+      obj,
+      sel,
+      coder,
+    );
+  }
+
+  late final __objc_msgSend_24Ptr = _lookup<
+      ffi.NativeFunction<
+          instancetype Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+              ffi.Pointer<ObjCObject>)>>('objc_msgSend');
+  late final __objc_msgSend_24 = __objc_msgSend_24Ptr.asFunction<
+      instancetype Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+          ffi.Pointer<ObjCObject>)>();
+
+  ffi.Pointer<ObjCObject> _objc_msgSend_25(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    ffi.Pointer<pkg_ffi.Char> cString,
+    int enc,
+  ) {
+    return __objc_msgSend_25(
+      obj,
+      sel,
+      cString,
+      enc,
+    );
+  }
+
+  late final __objc_msgSend_25Ptr = _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_25 = __objc_msgSend_25Ptr.asFunction<
+      ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
+          ffi.Pointer<ObjCSel>, ffi.Pointer<pkg_ffi.Char>, int)>();
+
+  ffi.Pointer<pkg_ffi.Char> _objc_msgSend_26(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+  ) {
+    return __objc_msgSend_26(
+      obj,
+      sel,
+    );
+  }
+
+  late final __objc_msgSend_26Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<pkg_ffi.Char> Function(
+              ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>>('objc_msgSend');
+  late final __objc_msgSend_26 = __objc_msgSend_26Ptr.asFunction<
+      ffi.Pointer<pkg_ffi.Char> Function(
+          ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>();
+
+  ffi.Pointer<ObjCObject> _objc_msgSend_27(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+  ) {
+    return __objc_msgSend_27(
+      obj,
+      sel,
+    );
+  }
+
+  late final __objc_msgSend_27Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ObjCObject> Function(
+              ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>>('objc_msgSend');
+  late final __objc_msgSend_27 = __objc_msgSend_27Ptr.asFunction<
+      ffi.Pointer<ObjCObject> Function(
+          ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>();
+
+  void _objc_msgSend_28(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    ffi.Pointer<ffi.Void> value,
+    int size,
+  ) {
+    return __objc_msgSend_28(
+      obj,
+      sel,
+      value,
+      size,
+    );
+  }
+
+  late final __objc_msgSend_28Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+              ffi.Pointer<ffi.Void>, NSUInteger)>>('objc_msgSend');
+  late final __objc_msgSend_28 = __objc_msgSend_28Ptr.asFunction<
+      void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+          ffi.Pointer<ffi.Void>, int)>();
+
+  ffi.Pointer<pkg_ffi.Char> _objc_msgSend_29(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+  ) {
+    return __objc_msgSend_29(
+      obj,
+      sel,
+    );
+  }
+
+  late final __objc_msgSend_29Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<pkg_ffi.Char> Function(
+              ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>>('objc_msgSend');
+  late final __objc_msgSend_29 = __objc_msgSend_29Ptr.asFunction<
+      ffi.Pointer<pkg_ffi.Char> Function(
+          ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>();
+
+  instancetype _objc_msgSend_30(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    ffi.Pointer<ffi.Void> value,
+    ffi.Pointer<pkg_ffi.Char> type,
+  ) {
+    return __objc_msgSend_30(
+      obj,
+      sel,
+      value,
+      type,
+    );
+  }
+
+  late final __objc_msgSend_30Ptr = _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_30 = __objc_msgSend_30Ptr.asFunction<
+      instancetype Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+          ffi.Pointer<ffi.Void>, ffi.Pointer<pkg_ffi.Char>)>();
+
+  instancetype _objc_msgSend_31(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    ffi.Pointer<ObjCObject> coder,
+  ) {
+    return __objc_msgSend_31(
+      obj,
+      sel,
+      coder,
+    );
+  }
+
+  late final __objc_msgSend_31Ptr = _lookup<
+      ffi.NativeFunction<
+          instancetype Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+              ffi.Pointer<ObjCObject>)>>('objc_msgSend');
+  late final __objc_msgSend_31 = __objc_msgSend_31Ptr.asFunction<
+      instancetype Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+          ffi.Pointer<ObjCObject>)>();
+
+  instancetype _objc_msgSend_32(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    ffi.Pointer<ObjCObject> coder,
+  ) {
+    return __objc_msgSend_32(
+      obj,
+      sel,
+      coder,
+    );
+  }
+
+  late final __objc_msgSend_32Ptr = _lookup<
+      ffi.NativeFunction<
+          instancetype Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+              ffi.Pointer<ObjCObject>)>>('objc_msgSend');
+  late final __objc_msgSend_32 = __objc_msgSend_32Ptr.asFunction<
+      instancetype Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+          ffi.Pointer<ObjCObject>)>();
+
+  ffi.Pointer<ObjCObject> _objc_msgSend_33(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    int value,
+  ) {
+    return __objc_msgSend_33(
+      obj,
+      sel,
+      value,
+    );
+  }
+
+  late final __objc_msgSend_33Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
+              ffi.Pointer<ObjCSel>, pkg_ffi.Char)>>('objc_msgSend');
+  late final __objc_msgSend_33 = __objc_msgSend_33Ptr.asFunction<
+      ffi.Pointer<ObjCObject> Function(
+          ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, int)>();
+
+  ffi.Pointer<ObjCObject> _objc_msgSend_34(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    int value,
+  ) {
+    return __objc_msgSend_34(
+      obj,
+      sel,
+      value,
+    );
+  }
+
+  late final __objc_msgSend_34Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
+              ffi.Pointer<ObjCSel>, pkg_ffi.UnsignedChar)>>('objc_msgSend');
+  late final __objc_msgSend_34 = __objc_msgSend_34Ptr.asFunction<
+      ffi.Pointer<ObjCObject> Function(
+          ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, int)>();
+
+  ffi.Pointer<ObjCObject> _objc_msgSend_35(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    int value,
+  ) {
+    return __objc_msgSend_35(
+      obj,
+      sel,
+      value,
+    );
+  }
+
+  late final __objc_msgSend_35Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
+              ffi.Pointer<ObjCSel>, pkg_ffi.Short)>>('objc_msgSend');
+  late final __objc_msgSend_35 = __objc_msgSend_35Ptr.asFunction<
+      ffi.Pointer<ObjCObject> Function(
+          ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, int)>();
+
+  ffi.Pointer<ObjCObject> _objc_msgSend_36(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    int value,
+  ) {
+    return __objc_msgSend_36(
+      obj,
+      sel,
+      value,
+    );
+  }
+
+  late final __objc_msgSend_36Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
+              ffi.Pointer<ObjCSel>, pkg_ffi.UnsignedShort)>>('objc_msgSend');
+  late final __objc_msgSend_36 = __objc_msgSend_36Ptr.asFunction<
+      ffi.Pointer<ObjCObject> Function(
+          ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, int)>();
+
+  ffi.Pointer<ObjCObject> _objc_msgSend_37(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    int value,
+  ) {
+    return __objc_msgSend_37(
+      obj,
+      sel,
+      value,
+    );
+  }
+
+  late final __objc_msgSend_37Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
+              ffi.Pointer<ObjCSel>, pkg_ffi.Int)>>('objc_msgSend');
+  late final __objc_msgSend_37 = __objc_msgSend_37Ptr.asFunction<
+      ffi.Pointer<ObjCObject> Function(
+          ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, int)>();
+
+  ffi.Pointer<ObjCObject> _objc_msgSend_38(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    int value,
+  ) {
+    return __objc_msgSend_38(
+      obj,
+      sel,
+      value,
+    );
+  }
+
+  late final __objc_msgSend_38Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
+              ffi.Pointer<ObjCSel>, pkg_ffi.UnsignedInt)>>('objc_msgSend');
+  late final __objc_msgSend_38 = __objc_msgSend_38Ptr.asFunction<
+      ffi.Pointer<ObjCObject> Function(
+          ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, int)>();
+
+  ffi.Pointer<ObjCObject> _objc_msgSend_39(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    int value,
+  ) {
+    return __objc_msgSend_39(
+      obj,
+      sel,
+      value,
+    );
+  }
+
+  late final __objc_msgSend_39Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
+              ffi.Pointer<ObjCSel>, pkg_ffi.Long)>>('objc_msgSend');
+  late final __objc_msgSend_39 = __objc_msgSend_39Ptr.asFunction<
+      ffi.Pointer<ObjCObject> Function(
+          ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, int)>();
+
+  ffi.Pointer<ObjCObject> _objc_msgSend_40(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    int value,
+  ) {
+    return __objc_msgSend_40(
+      obj,
+      sel,
+      value,
+    );
+  }
+
+  late final __objc_msgSend_40Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
+              ffi.Pointer<ObjCSel>, pkg_ffi.UnsignedLong)>>('objc_msgSend');
+  late final __objc_msgSend_40 = __objc_msgSend_40Ptr.asFunction<
+      ffi.Pointer<ObjCObject> Function(
+          ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, int)>();
+
+  ffi.Pointer<ObjCObject> _objc_msgSend_41(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    int value,
+  ) {
+    return __objc_msgSend_41(
+      obj,
+      sel,
+      value,
+    );
+  }
+
+  late final __objc_msgSend_41Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
+              ffi.Pointer<ObjCSel>, pkg_ffi.LongLong)>>('objc_msgSend');
+  late final __objc_msgSend_41 = __objc_msgSend_41Ptr.asFunction<
+      ffi.Pointer<ObjCObject> Function(
+          ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, int)>();
+
+  ffi.Pointer<ObjCObject> _objc_msgSend_42(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    int value,
+  ) {
+    return __objc_msgSend_42(
+      obj,
+      sel,
+      value,
+    );
+  }
+
+  late final __objc_msgSend_42Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
+              ffi.Pointer<ObjCSel>, pkg_ffi.UnsignedLongLong)>>('objc_msgSend');
+  late final __objc_msgSend_42 = __objc_msgSend_42Ptr.asFunction<
+      ffi.Pointer<ObjCObject> Function(
+          ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, int)>();
+
+  ffi.Pointer<ObjCObject> _objc_msgSend_43(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    double value,
+  ) {
+    return __objc_msgSend_43(
+      obj,
+      sel,
+      value,
+    );
+  }
+
+  late final __objc_msgSend_43Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
+              ffi.Pointer<ObjCSel>, ffi.Float)>>('objc_msgSend');
+  late final __objc_msgSend_43 = __objc_msgSend_43Ptr.asFunction<
+      ffi.Pointer<ObjCObject> Function(
+          ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, double)>();
+
+  ffi.Pointer<ObjCObject> _objc_msgSend_44(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    double value,
+  ) {
+    return __objc_msgSend_44(
+      obj,
+      sel,
+      value,
+    );
+  }
+
+  late final __objc_msgSend_44Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
+              ffi.Pointer<ObjCSel>, ffi.Double)>>('objc_msgSend');
+  late final __objc_msgSend_44 = __objc_msgSend_44Ptr.asFunction<
+      ffi.Pointer<ObjCObject> Function(
+          ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, double)>();
+
+  ffi.Pointer<ObjCObject> _objc_msgSend_45(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    bool value,
+  ) {
+    return __objc_msgSend_45(
+      obj,
+      sel,
+      value ? 1 : 0,
+    );
+  }
+
+  late final __objc_msgSend_45Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
+              ffi.Pointer<ObjCSel>, ffi.Uint8)>>('objc_msgSend');
+  late final __objc_msgSend_45 = __objc_msgSend_45Ptr.asFunction<
+      ffi.Pointer<ObjCObject> Function(
+          ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, int)>();
+
+  ffi.Pointer<ObjCObject> _objc_msgSend_46(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    int value,
+  ) {
+    return __objc_msgSend_46(
+      obj,
+      sel,
+      value,
+    );
+  }
+
+  late final __objc_msgSend_46Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
+              ffi.Pointer<ObjCSel>, NSInteger)>>('objc_msgSend');
+  late final __objc_msgSend_46 = __objc_msgSend_46Ptr.asFunction<
+      ffi.Pointer<ObjCObject> Function(
+          ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, int)>();
+
+  ffi.Pointer<ObjCObject> _objc_msgSend_47(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    int value,
+  ) {
+    return __objc_msgSend_47(
+      obj,
+      sel,
+      value,
+    );
+  }
+
+  late final __objc_msgSend_47Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
+              ffi.Pointer<ObjCSel>, NSUInteger)>>('objc_msgSend');
+  late final __objc_msgSend_47 = __objc_msgSend_47Ptr.asFunction<
+      ffi.Pointer<ObjCObject> Function(
+          ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, int)>();
+
+  int _objc_msgSend_48(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+  ) {
+    return __objc_msgSend_48(
+      obj,
+      sel,
+    );
+  }
+
+  late final __objc_msgSend_48Ptr = _lookup<
+      ffi.NativeFunction<
+          pkg_ffi.Char Function(
+              ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>>('objc_msgSend');
+  late final __objc_msgSend_48 = __objc_msgSend_48Ptr.asFunction<
+      int Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>();
+
+  int _objc_msgSend_49(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+  ) {
+    return __objc_msgSend_49(
+      obj,
+      sel,
+    );
+  }
+
+  late final __objc_msgSend_49Ptr = _lookup<
+      ffi.NativeFunction<
+          pkg_ffi.UnsignedChar Function(
+              ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>>('objc_msgSend');
+  late final __objc_msgSend_49 = __objc_msgSend_49Ptr.asFunction<
+      int Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>();
+
+  int _objc_msgSend_50(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+  ) {
+    return __objc_msgSend_50(
+      obj,
+      sel,
+    );
+  }
+
+  late final __objc_msgSend_50Ptr = _lookup<
+      ffi.NativeFunction<
+          pkg_ffi.Short Function(
+              ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>>('objc_msgSend');
+  late final __objc_msgSend_50 = __objc_msgSend_50Ptr.asFunction<
+      int Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>();
+
+  int _objc_msgSend_51(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+  ) {
+    return __objc_msgSend_51(
+      obj,
+      sel,
+    );
+  }
+
+  late final __objc_msgSend_51Ptr = _lookup<
+      ffi.NativeFunction<
+          pkg_ffi.UnsignedShort Function(
+              ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>>('objc_msgSend');
+  late final __objc_msgSend_51 = __objc_msgSend_51Ptr.asFunction<
+      int Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>();
+
+  int _objc_msgSend_52(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+  ) {
+    return __objc_msgSend_52(
+      obj,
+      sel,
+    );
+  }
+
+  late final __objc_msgSend_52Ptr = _lookup<
+      ffi.NativeFunction<
+          pkg_ffi.Int Function(
+              ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>>('objc_msgSend');
+  late final __objc_msgSend_52 = __objc_msgSend_52Ptr.asFunction<
+      int Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>();
+
+  int _objc_msgSend_53(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+  ) {
+    return __objc_msgSend_53(
+      obj,
+      sel,
+    );
+  }
+
+  late final __objc_msgSend_53Ptr = _lookup<
+      ffi.NativeFunction<
+          pkg_ffi.UnsignedInt Function(
+              ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>>('objc_msgSend');
+  late final __objc_msgSend_53 = __objc_msgSend_53Ptr.asFunction<
+      int Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>();
+
+  int _objc_msgSend_54(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+  ) {
+    return __objc_msgSend_54(
+      obj,
+      sel,
+    );
+  }
+
+  late final __objc_msgSend_54Ptr = _lookup<
+      ffi.NativeFunction<
+          pkg_ffi.Long Function(
+              ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>>('objc_msgSend');
+  late final __objc_msgSend_54 = __objc_msgSend_54Ptr.asFunction<
+      int Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>();
+
+  int _objc_msgSend_55(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+  ) {
+    return __objc_msgSend_55(
+      obj,
+      sel,
+    );
+  }
+
+  late final __objc_msgSend_55Ptr = _lookup<
+      ffi.NativeFunction<
+          pkg_ffi.UnsignedLong Function(
+              ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>>('objc_msgSend');
+  late final __objc_msgSend_55 = __objc_msgSend_55Ptr.asFunction<
+      int Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>();
+
+  int _objc_msgSend_56(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+  ) {
+    return __objc_msgSend_56(
+      obj,
+      sel,
+    );
+  }
+
+  late final __objc_msgSend_56Ptr = _lookup<
+      ffi.NativeFunction<
+          pkg_ffi.LongLong Function(
+              ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>>('objc_msgSend');
+  late final __objc_msgSend_56 = __objc_msgSend_56Ptr.asFunction<
+      int Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>();
+
+  int _objc_msgSend_57(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+  ) {
+    return __objc_msgSend_57(
+      obj,
+      sel,
+    );
+  }
+
+  late final __objc_msgSend_57Ptr = _lookup<
+      ffi.NativeFunction<
+          pkg_ffi.UnsignedLongLong Function(
+              ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>>('objc_msgSend');
+  late final __objc_msgSend_57 = __objc_msgSend_57Ptr.asFunction<
+      int Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>();
+
+  double _objc_msgSend_58(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+  ) {
+    return __objc_msgSend_58(
+      obj,
+      sel,
+    );
+  }
+
+  late final __objc_msgSend_58Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Float Function(
+              ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>>('objc_msgSend');
+  late final __objc_msgSend_58 = __objc_msgSend_58Ptr.asFunction<
+      double Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>();
+
+  double _objc_msgSend_59(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+  ) {
+    return __objc_msgSend_59(
+      obj,
+      sel,
+    );
+  }
+
+  late final __objc_msgSend_59Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Double Function(
+              ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>>('objc_msgSend');
+  late final __objc_msgSend_59 = __objc_msgSend_59Ptr.asFunction<
+      double Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>();
+
+  int _objc_msgSend_60(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+  ) {
+    return __objc_msgSend_60(
+      obj,
+      sel,
+    );
+  }
+
+  late final __objc_msgSend_60Ptr = _lookup<
+      ffi.NativeFunction<
+          NSInteger Function(
+              ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>>('objc_msgSend');
+  late final __objc_msgSend_60 = __objc_msgSend_60Ptr.asFunction<
+      int Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>();
+
+  ffi.Pointer<ObjCObject> _objc_msgSend_61(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+  ) {
+    return __objc_msgSend_61(
+      obj,
+      sel,
+    );
+  }
+
+  late final __objc_msgSend_61Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ObjCObject> Function(
+              ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>>('objc_msgSend');
+  late final __objc_msgSend_61 = __objc_msgSend_61Ptr.asFunction<
+      ffi.Pointer<ObjCObject> Function(
+          ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>();
+
+  int _objc_msgSend_62(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    ffi.Pointer<ObjCObject> otherNumber,
+  ) {
+    return __objc_msgSend_62(
+      obj,
+      sel,
+      otherNumber,
+    );
+  }
+
+  late final __objc_msgSend_62Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Int32 Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+              ffi.Pointer<ObjCObject>)>>('objc_msgSend');
+  late final __objc_msgSend_62 = __objc_msgSend_62Ptr.asFunction<
+      int Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+          ffi.Pointer<ObjCObject>)>();
+
+  bool _objc_msgSend_63(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    ffi.Pointer<ObjCObject> number,
+  ) {
+    return __objc_msgSend_63(
+          obj,
+          sel,
+          number,
+        ) !=
+        0;
+  }
+
+  late final __objc_msgSend_63Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Uint8 Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+              ffi.Pointer<ObjCObject>)>>('objc_msgSend');
+  late final __objc_msgSend_63 = __objc_msgSend_63Ptr.asFunction<
+      int Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+          ffi.Pointer<ObjCObject>)>();
+
+  ffi.Pointer<ObjCObject> _objc_msgSend_64(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    ffi.Pointer<ObjCObject> locale,
+  ) {
+    return __objc_msgSend_64(
+      obj,
+      sel,
+      locale,
+    );
+  }
+
+  late final __objc_msgSend_64Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
+              ffi.Pointer<ObjCSel>, ffi.Pointer<ObjCObject>)>>('objc_msgSend');
+  late final __objc_msgSend_64 = __objc_msgSend_64Ptr.asFunction<
+      ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
+          ffi.Pointer<ObjCSel>, ffi.Pointer<ObjCObject>)>();
+
+  ffi.Pointer<ObjCObject> _objc_msgSend_65(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+  ) {
+    return __objc_msgSend_65(
+      obj,
+      sel,
+    );
+  }
+
+  late final __objc_msgSend_65Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ObjCObject> Function(
+              ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>>('objc_msgSend');
+  late final __objc_msgSend_65 = __objc_msgSend_65Ptr.asFunction<
+      ffi.Pointer<ObjCObject> Function(
+          ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>();
+
+  ffi.Pointer<ObjCObject> _objc_msgSend_66(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+  ) {
+    return __objc_msgSend_66(
+      obj,
+      sel,
+    );
+  }
+
+  late final __objc_msgSend_66Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ObjCObject> Function(
+              ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>>('objc_msgSend');
+  late final __objc_msgSend_66 = __objc_msgSend_66Ptr.asFunction<
+      ffi.Pointer<ObjCObject> Function(
+          ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>();
+
+  int _objc_msgSend_67(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+  ) {
+    return __objc_msgSend_67(
+      obj,
+      sel,
+    );
+  }
+
+  late final __objc_msgSend_67Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Int32 Function(
+              ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>>('objc_msgSend');
+  late final __objc_msgSend_67 = __objc_msgSend_67Ptr.asFunction<
+      int Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>();
+
+  ffi.Pointer<ObjCObject> _objc_msgSend_68(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+  ) {
+    return __objc_msgSend_68(
+      obj,
+      sel,
+    );
+  }
+
+  late final __objc_msgSend_68Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ObjCObject> Function(
+              ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>>('objc_msgSend');
+  late final __objc_msgSend_68 = __objc_msgSend_68Ptr.asFunction<
+      ffi.Pointer<ObjCObject> Function(
+          ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>();
+
+  instancetype _objc_msgSend_69(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    ffi.Pointer<ObjCObject> anObject,
+    int type,
+    int index,
+  ) {
+    return __objc_msgSend_69(
+      obj,
+      sel,
+      anObject,
+      type,
+      index,
+    );
+  }
+
+  late final __objc_msgSend_69Ptr = _lookup<
+      ffi.NativeFunction<
+          instancetype Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+              ffi.Pointer<ObjCObject>, ffi.Int32, NSUInteger)>>('objc_msgSend');
+  late final __objc_msgSend_69 = __objc_msgSend_69Ptr.asFunction<
+      instancetype Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+          ffi.Pointer<ObjCObject>, int, int)>();
+
+  instancetype _objc_msgSend_70(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    ffi.Pointer<ObjCObject> anObject,
+    int type,
+    int index,
+    int associatedIndex,
+  ) {
+    return __objc_msgSend_70(
+      obj,
+      sel,
+      anObject,
+      type,
+      index,
+      associatedIndex,
+    );
+  }
+
+  late final __objc_msgSend_70Ptr = _lookup<
+      ffi.NativeFunction<
+          instancetype Function(
+              ffi.Pointer<ObjCObject>,
+              ffi.Pointer<ObjCSel>,
+              ffi.Pointer<ObjCObject>,
+              ffi.Int32,
+              NSUInteger,
+              NSUInteger)>>('objc_msgSend');
+  late final __objc_msgSend_70 = __objc_msgSend_70Ptr.asFunction<
+      instancetype Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+          ffi.Pointer<ObjCObject>, int, int, int)>();
+
+  instancetype _objc_msgSend_71(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    int value,
+  ) {
+    return __objc_msgSend_71(
+      obj,
+      sel,
+      value,
+    );
+  }
+
+  late final __objc_msgSend_71Ptr = _lookup<
+      ffi.NativeFunction<
+          instancetype Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+              NSUInteger)>>('objc_msgSend');
+  late final __objc_msgSend_71 = __objc_msgSend_71Ptr.asFunction<
+      instancetype Function(
+          ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, int)>();
+
+  instancetype _objc_msgSend_72(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    NSRange range,
+  ) {
+    return __objc_msgSend_72(
+      obj,
+      sel,
+      range,
+    );
+  }
+
+  late final __objc_msgSend_72Ptr = _lookup<
+      ffi.NativeFunction<
+          instancetype Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+              NSRange)>>('objc_msgSend');
+  late final __objc_msgSend_72 = __objc_msgSend_72Ptr.asFunction<
+      instancetype Function(
+          ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, NSRange)>();
+
+  instancetype _objc_msgSend_73(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    ffi.Pointer<ObjCObject> indexSet,
+  ) {
+    return __objc_msgSend_73(
+      obj,
+      sel,
+      indexSet,
+    );
+  }
+
+  late final __objc_msgSend_73Ptr = _lookup<
+      ffi.NativeFunction<
+          instancetype Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+              ffi.Pointer<ObjCObject>)>>('objc_msgSend');
+  late final __objc_msgSend_73 = __objc_msgSend_73Ptr.asFunction<
+      instancetype Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+          ffi.Pointer<ObjCObject>)>();
+
+  bool _objc_msgSend_74(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    ffi.Pointer<ObjCObject> indexSet,
+  ) {
+    return __objc_msgSend_74(
+          obj,
+          sel,
+          indexSet,
+        ) !=
+        0;
+  }
+
+  late final __objc_msgSend_74Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Uint8 Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+              ffi.Pointer<ObjCObject>)>>('objc_msgSend');
+  late final __objc_msgSend_74 = __objc_msgSend_74Ptr.asFunction<
+      int Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+          ffi.Pointer<ObjCObject>)>();
+
+  int _objc_msgSend_75(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    int value,
+  ) {
+    return __objc_msgSend_75(
+      obj,
+      sel,
+      value,
+    );
+  }
+
+  late final __objc_msgSend_75Ptr = _lookup<
+      ffi.NativeFunction<
+          NSUInteger Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+              NSUInteger)>>('objc_msgSend');
+  late final __objc_msgSend_75 = __objc_msgSend_75Ptr.asFunction<
+      int Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, int)>();
+
+  int _objc_msgSend_76(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    ffi.Pointer<NSUInteger> indexBuffer,
+    int bufferSize,
+    NSRangePointer range,
+  ) {
+    return __objc_msgSend_76(
+      obj,
+      sel,
+      indexBuffer,
+      bufferSize,
+      range,
+    );
+  }
+
+  late final __objc_msgSend_76Ptr = _lookup<
+      ffi.NativeFunction<
+          NSUInteger Function(
+              ffi.Pointer<ObjCObject>,
+              ffi.Pointer<ObjCSel>,
+              ffi.Pointer<NSUInteger>,
+              NSUInteger,
+              NSRangePointer)>>('objc_msgSend');
+  late final __objc_msgSend_76 = __objc_msgSend_76Ptr.asFunction<
+      int Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+          ffi.Pointer<NSUInteger>, int, NSRangePointer)>();
+
+  int _objc_msgSend_77(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    NSRange range,
+  ) {
+    return __objc_msgSend_77(
+      obj,
+      sel,
+      range,
+    );
+  }
+
+  late final __objc_msgSend_77Ptr = _lookup<
+      ffi.NativeFunction<
+          NSUInteger Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+              NSRange)>>('objc_msgSend');
+  late final __objc_msgSend_77 = __objc_msgSend_77Ptr.asFunction<
+      int Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, NSRange)>();
+
+  bool _objc_msgSend_78(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    int value,
+  ) {
+    return __objc_msgSend_78(
+          obj,
+          sel,
+          value,
+        ) !=
+        0;
+  }
+
+  late final __objc_msgSend_78Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Uint8 Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+              NSUInteger)>>('objc_msgSend');
+  late final __objc_msgSend_78 = __objc_msgSend_78Ptr.asFunction<
+      int Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, int)>();
+
+  bool _objc_msgSend_79(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    NSRange range,
+  ) {
+    return __objc_msgSend_79(
+          obj,
+          sel,
+          range,
+        ) !=
+        0;
+  }
+
+  late final __objc_msgSend_79Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Uint8 Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+              NSRange)>>('objc_msgSend');
+  late final __objc_msgSend_79 = __objc_msgSend_79Ptr.asFunction<
+      int Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, NSRange)>();
+
+  bool _objc_msgSend_80(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    ffi.Pointer<ObjCObject> indexSet,
+  ) {
+    return __objc_msgSend_80(
+          obj,
+          sel,
+          indexSet,
+        ) !=
+        0;
+  }
+
+  late final __objc_msgSend_80Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Uint8 Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+              ffi.Pointer<ObjCObject>)>>('objc_msgSend');
+  late final __objc_msgSend_80 = __objc_msgSend_80Ptr.asFunction<
+      int Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+          ffi.Pointer<ObjCObject>)>();
+
+  void _objc_msgSend_81(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    ffi.Pointer<ObjCObject> block,
+  ) {
+    return __objc_msgSend_81(
+      obj,
+      sel,
+      block,
+    );
+  }
+
+  late final __objc_msgSend_81Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+              ffi.Pointer<ObjCObject>)>>('objc_msgSend');
+  late final __objc_msgSend_81 = __objc_msgSend_81Ptr.asFunction<
+      void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+          ffi.Pointer<ObjCObject>)>();
+
+  void _objc_msgSend_82(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    int opts,
+    ffi.Pointer<ObjCObject> block,
+  ) {
+    return __objc_msgSend_82(
+      obj,
+      sel,
+      opts,
+      block,
+    );
+  }
+
+  late final __objc_msgSend_82Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+              ffi.Int32, ffi.Pointer<ObjCObject>)>>('objc_msgSend');
+  late final __objc_msgSend_82 = __objc_msgSend_82Ptr.asFunction<
+      void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, int,
+          ffi.Pointer<ObjCObject>)>();
+
+  void _objc_msgSend_83(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    NSRange range,
+    int opts,
+    ffi.Pointer<ObjCObject> block,
+  ) {
+    return __objc_msgSend_83(
+      obj,
+      sel,
+      range,
+      opts,
+      block,
+    );
+  }
+
+  late final __objc_msgSend_83Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+              NSRange, ffi.Int32, ffi.Pointer<ObjCObject>)>>('objc_msgSend');
+  late final __objc_msgSend_83 = __objc_msgSend_83Ptr.asFunction<
+      void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, NSRange, int,
+          ffi.Pointer<ObjCObject>)>();
+
+  int _objc_msgSend_84(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    ffi.Pointer<ObjCObject> predicate,
+  ) {
+    return __objc_msgSend_84(
+      obj,
+      sel,
+      predicate,
+    );
+  }
+
+  late final __objc_msgSend_84Ptr = _lookup<
+      ffi.NativeFunction<
+          NSUInteger Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+              ffi.Pointer<ObjCObject>)>>('objc_msgSend');
+  late final __objc_msgSend_84 = __objc_msgSend_84Ptr.asFunction<
+      int Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+          ffi.Pointer<ObjCObject>)>();
+
+  int _objc_msgSend_85(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    int opts,
+    ffi.Pointer<ObjCObject> predicate,
+  ) {
+    return __objc_msgSend_85(
+      obj,
+      sel,
+      opts,
+      predicate,
+    );
+  }
+
+  late final __objc_msgSend_85Ptr = _lookup<
+      ffi.NativeFunction<
+          NSUInteger Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+              ffi.Int32, ffi.Pointer<ObjCObject>)>>('objc_msgSend');
+  late final __objc_msgSend_85 = __objc_msgSend_85Ptr.asFunction<
+      int Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, int,
+          ffi.Pointer<ObjCObject>)>();
+
+  int _objc_msgSend_86(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    NSRange range,
+    int opts,
+    ffi.Pointer<ObjCObject> predicate,
+  ) {
+    return __objc_msgSend_86(
+      obj,
+      sel,
+      range,
+      opts,
+      predicate,
+    );
+  }
+
+  late final __objc_msgSend_86Ptr = _lookup<
+      ffi.NativeFunction<
+          NSUInteger Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+              NSRange, ffi.Int32, ffi.Pointer<ObjCObject>)>>('objc_msgSend');
+  late final __objc_msgSend_86 = __objc_msgSend_86Ptr.asFunction<
+      int Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, NSRange, int,
+          ffi.Pointer<ObjCObject>)>();
+
+  ffi.Pointer<ObjCObject> _objc_msgSend_87(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    ffi.Pointer<ObjCObject> predicate,
+  ) {
+    return __objc_msgSend_87(
+      obj,
+      sel,
+      predicate,
+    );
+  }
+
+  late final __objc_msgSend_87Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
+              ffi.Pointer<ObjCSel>, ffi.Pointer<ObjCObject>)>>('objc_msgSend');
+  late final __objc_msgSend_87 = __objc_msgSend_87Ptr.asFunction<
+      ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
+          ffi.Pointer<ObjCSel>, ffi.Pointer<ObjCObject>)>();
+
+  ffi.Pointer<ObjCObject> _objc_msgSend_88(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    int opts,
+    ffi.Pointer<ObjCObject> predicate,
+  ) {
+    return __objc_msgSend_88(
+      obj,
+      sel,
+      opts,
+      predicate,
+    );
+  }
+
+  late final __objc_msgSend_88Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ObjCObject> Function(
+              ffi.Pointer<ObjCObject>,
+              ffi.Pointer<ObjCSel>,
+              ffi.Int32,
+              ffi.Pointer<ObjCObject>)>>('objc_msgSend');
+  late final __objc_msgSend_88 = __objc_msgSend_88Ptr.asFunction<
+      ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
+          ffi.Pointer<ObjCSel>, int, ffi.Pointer<ObjCObject>)>();
+
+  ffi.Pointer<ObjCObject> _objc_msgSend_89(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    NSRange range,
+    int opts,
+    ffi.Pointer<ObjCObject> predicate,
+  ) {
+    return __objc_msgSend_89(
+      obj,
+      sel,
+      range,
+      opts,
+      predicate,
+    );
+  }
+
+  late final __objc_msgSend_89Ptr = _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_89 = __objc_msgSend_89Ptr.asFunction<
+      ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
+          ffi.Pointer<ObjCSel>, NSRange, int, ffi.Pointer<ObjCObject>)>();
+
+  void _objc_msgSend_90(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    ffi.Pointer<ObjCObject> block,
+  ) {
+    return __objc_msgSend_90(
+      obj,
+      sel,
+      block,
+    );
+  }
+
+  late final __objc_msgSend_90Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+              ffi.Pointer<ObjCObject>)>>('objc_msgSend');
+  late final __objc_msgSend_90 = __objc_msgSend_90Ptr.asFunction<
+      void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+          ffi.Pointer<ObjCObject>)>();
+
+  void _objc_msgSend_91(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    int opts,
+    ffi.Pointer<ObjCObject> block,
+  ) {
+    return __objc_msgSend_91(
+      obj,
+      sel,
+      opts,
+      block,
+    );
+  }
+
+  late final __objc_msgSend_91Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+              ffi.Int32, ffi.Pointer<ObjCObject>)>>('objc_msgSend');
+  late final __objc_msgSend_91 = __objc_msgSend_91Ptr.asFunction<
+      void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, int,
+          ffi.Pointer<ObjCObject>)>();
+
+  void _objc_msgSend_92(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    NSRange range,
+    int opts,
+    ffi.Pointer<ObjCObject> block,
+  ) {
+    return __objc_msgSend_92(
+      obj,
+      sel,
+      range,
+      opts,
+      block,
+    );
+  }
+
+  late final __objc_msgSend_92Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+              NSRange, ffi.Int32, ffi.Pointer<ObjCObject>)>>('objc_msgSend');
+  late final __objc_msgSend_92 = __objc_msgSend_92Ptr.asFunction<
+      void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, NSRange, int,
+          ffi.Pointer<ObjCObject>)>();
+
+  void _objc_msgSend_93(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    ffi.Pointer<ObjCObject> indexSet,
+  ) {
+    return __objc_msgSend_93(
+      obj,
+      sel,
+      indexSet,
+    );
+  }
+
+  late final __objc_msgSend_93Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+              ffi.Pointer<ObjCObject>)>>('objc_msgSend');
+  late final __objc_msgSend_93 = __objc_msgSend_93Ptr.asFunction<
+      void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+          ffi.Pointer<ObjCObject>)>();
+
+  void _objc_msgSend_94(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    ffi.Pointer<ObjCObject> indexSet,
+  ) {
+    return __objc_msgSend_94(
+      obj,
+      sel,
+      indexSet,
+    );
+  }
+
+  late final __objc_msgSend_94Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+              ffi.Pointer<ObjCObject>)>>('objc_msgSend');
+  late final __objc_msgSend_94 = __objc_msgSend_94Ptr.asFunction<
+      void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+          ffi.Pointer<ObjCObject>)>();
+
+  void _objc_msgSend_95(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    int value,
+  ) {
+    return __objc_msgSend_95(
+      obj,
+      sel,
+      value,
+    );
+  }
+
+  late final __objc_msgSend_95Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+              NSUInteger)>>('objc_msgSend');
+  late final __objc_msgSend_95 = __objc_msgSend_95Ptr.asFunction<
+      void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, int)>();
+
+  void _objc_msgSend_96(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    NSRange range,
+  ) {
+    return __objc_msgSend_96(
+      obj,
+      sel,
+      range,
+    );
+  }
+
+  late final __objc_msgSend_96Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+              NSRange)>>('objc_msgSend');
+  late final __objc_msgSend_96 = __objc_msgSend_96Ptr.asFunction<
+      void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, NSRange)>();
+
+  void _objc_msgSend_97(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    int index,
+    int delta,
+  ) {
+    return __objc_msgSend_97(
+      obj,
+      sel,
+      index,
+      delta,
+    );
+  }
+
+  late final __objc_msgSend_97Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+              NSUInteger, NSInteger)>>('objc_msgSend');
+  late final __objc_msgSend_97 = __objc_msgSend_97Ptr.asFunction<
+      void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, int, int)>();
+
+  instancetype _objc_msgSend_98(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    ffi.Pointer<ObjCObject> changes,
+  ) {
+    return __objc_msgSend_98(
+      obj,
+      sel,
+      changes,
+    );
+  }
+
+  late final __objc_msgSend_98Ptr = _lookup<
+      ffi.NativeFunction<
+          instancetype Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+              ffi.Pointer<ObjCObject>)>>('objc_msgSend');
+  late final __objc_msgSend_98 = __objc_msgSend_98Ptr.asFunction<
+      instancetype Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+          ffi.Pointer<ObjCObject>)>();
+
+  instancetype _objc_msgSend_99(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    ffi.Pointer<ObjCObject> inserts,
+    ffi.Pointer<ObjCObject> insertedObjects,
+    ffi.Pointer<ObjCObject> removes,
+    ffi.Pointer<ObjCObject> removedObjects,
+    ffi.Pointer<ObjCObject> changes,
+  ) {
+    return __objc_msgSend_99(
+      obj,
+      sel,
+      inserts,
+      insertedObjects,
+      removes,
+      removedObjects,
+      changes,
+    );
+  }
+
+  late final __objc_msgSend_99Ptr = _lookup<
+      ffi.NativeFunction<
+          instancetype Function(
+              ffi.Pointer<ObjCObject>,
+              ffi.Pointer<ObjCSel>,
+              ffi.Pointer<ObjCObject>,
+              ffi.Pointer<ObjCObject>,
+              ffi.Pointer<ObjCObject>,
+              ffi.Pointer<ObjCObject>,
+              ffi.Pointer<ObjCObject>)>>('objc_msgSend');
+  late final __objc_msgSend_99 = __objc_msgSend_99Ptr.asFunction<
+      instancetype Function(
+          ffi.Pointer<ObjCObject>,
+          ffi.Pointer<ObjCSel>,
+          ffi.Pointer<ObjCObject>,
+          ffi.Pointer<ObjCObject>,
+          ffi.Pointer<ObjCObject>,
+          ffi.Pointer<ObjCObject>,
+          ffi.Pointer<ObjCObject>)>();
+
+  instancetype _objc_msgSend_100(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    ffi.Pointer<ObjCObject> inserts,
+    ffi.Pointer<ObjCObject> insertedObjects,
+    ffi.Pointer<ObjCObject> removes,
+    ffi.Pointer<ObjCObject> removedObjects,
+  ) {
+    return __objc_msgSend_100(
+      obj,
+      sel,
+      inserts,
+      insertedObjects,
+      removes,
+      removedObjects,
+    );
+  }
+
+  late final __objc_msgSend_100Ptr = _lookup<
+      ffi.NativeFunction<
+          instancetype Function(
+              ffi.Pointer<ObjCObject>,
+              ffi.Pointer<ObjCSel>,
+              ffi.Pointer<ObjCObject>,
+              ffi.Pointer<ObjCObject>,
+              ffi.Pointer<ObjCObject>,
+              ffi.Pointer<ObjCObject>)>>('objc_msgSend');
+  late final __objc_msgSend_100 = __objc_msgSend_100Ptr.asFunction<
+      instancetype Function(
+          ffi.Pointer<ObjCObject>,
+          ffi.Pointer<ObjCSel>,
+          ffi.Pointer<ObjCObject>,
+          ffi.Pointer<ObjCObject>,
+          ffi.Pointer<ObjCObject>,
+          ffi.Pointer<ObjCObject>)>();
+
+  ffi.Pointer<ObjCObject> _objc_msgSend_101(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+  ) {
+    return __objc_msgSend_101(
+      obj,
+      sel,
+    );
+  }
+
+  late final __objc_msgSend_101Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ObjCObject> Function(
+              ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>>('objc_msgSend');
+  late final __objc_msgSend_101 = __objc_msgSend_101Ptr.asFunction<
+      ffi.Pointer<ObjCObject> Function(
+          ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>();
+
+  ffi.Pointer<ObjCObject> _objc_msgSend_102(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+  ) {
+    return __objc_msgSend_102(
+      obj,
+      sel,
+    );
+  }
+
+  late final __objc_msgSend_102Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ObjCObject> Function(
+              ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>>('objc_msgSend');
+  late final __objc_msgSend_102 = __objc_msgSend_102Ptr.asFunction<
+      ffi.Pointer<ObjCObject> Function(
+          ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>();
+
+  ffi.Pointer<ObjCObject> _objc_msgSend_103(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    int index,
+  ) {
+    return __objc_msgSend_103(
+      obj,
+      sel,
+      index,
+    );
+  }
+
+  late final __objc_msgSend_103Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ObjCObject> Function(ffi.Pointer<ObjCObject>,
+              ffi.Pointer<ObjCSel>, NSUInteger)>>('objc_msgSend');
+  late final __objc_msgSend_103 = __objc_msgSend_103Ptr.asFunction<
+      ffi.Pointer<ObjCObject> Function(
+          ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, int)>();
+
+  instancetype _objc_msgSend_104(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    ffi.Pointer<ffi.Pointer<ObjCObject>> objects,
+    int cnt,
+  ) {
+    return __objc_msgSend_104(
+      obj,
+      sel,
+      objects,
+      cnt,
+    );
+  }
+
+  late final __objc_msgSend_104Ptr = _lookup<
+      ffi.NativeFunction<
+          instancetype Function(
+              ffi.Pointer<ObjCObject>,
+              ffi.Pointer<ObjCSel>,
+              ffi.Pointer<ffi.Pointer<ObjCObject>>,
+              NSUInteger)>>('objc_msgSend');
+  late final __objc_msgSend_104 = __objc_msgSend_104Ptr.asFunction<
+      instancetype Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+          ffi.Pointer<ffi.Pointer<ObjCObject>>, int)>();
+
+  instancetype _objc_msgSend_105(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    ffi.Pointer<ObjCObject> coder,
+  ) {
+    return __objc_msgSend_105(
+      obj,
+      sel,
+      coder,
+    );
+  }
+
+  late final __objc_msgSend_105Ptr = _lookup<
+      ffi.NativeFunction<
+          instancetype Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+              ffi.Pointer<ObjCObject>)>>('objc_msgSend');
+  late final __objc_msgSend_105 = __objc_msgSend_105Ptr.asFunction<
+      instancetype Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+          ffi.Pointer<ObjCObject>)>();
+
+  void _objc_msgSend_106(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    ffi.Pointer<ObjCObject> anObject,
+  ) {
+    return __objc_msgSend_106(
+      obj,
+      sel,
+      anObject,
+    );
+  }
+
+  late final __objc_msgSend_106Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+              ffi.Pointer<ObjCObject>)>>('objc_msgSend');
+  late final __objc_msgSend_106 = __objc_msgSend_106Ptr.asFunction<
+      void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+          ffi.Pointer<ObjCObject>)>();
+
+  void _objc_msgSend_107(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    ffi.Pointer<ObjCObject> anObject,
+    int index,
+  ) {
+    return __objc_msgSend_107(
+      obj,
+      sel,
+      anObject,
+      index,
+    );
+  }
+
+  late final __objc_msgSend_107Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+              ffi.Pointer<ObjCObject>, NSUInteger)>>('objc_msgSend');
+  late final __objc_msgSend_107 = __objc_msgSend_107Ptr.asFunction<
+      void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+          ffi.Pointer<ObjCObject>, int)>();
+
+  void _objc_msgSend_108(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    int index,
+    ffi.Pointer<ObjCObject> anObject,
+  ) {
+    return __objc_msgSend_108(
+      obj,
+      sel,
+      index,
+      anObject,
+    );
+  }
+
+  late final __objc_msgSend_108Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+              NSUInteger, ffi.Pointer<ObjCObject>)>>('objc_msgSend');
+  late final __objc_msgSend_108 = __objc_msgSend_108Ptr.asFunction<
+      void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, int,
+          ffi.Pointer<ObjCObject>)>();
+
+  instancetype _objc_msgSend_109(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    ffi.Pointer<ObjCObject> coder,
+  ) {
+    return __objc_msgSend_109(
+      obj,
+      sel,
+      coder,
+    );
+  }
+
+  late final __objc_msgSend_109Ptr = _lookup<
+      ffi.NativeFunction<
+          instancetype Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+              ffi.Pointer<ObjCObject>)>>('objc_msgSend');
+  late final __objc_msgSend_109 = __objc_msgSend_109Ptr.asFunction<
+      instancetype Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+          ffi.Pointer<ObjCObject>)>();
+
+  void _objc_msgSend_110(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    ffi.Pointer<ObjCObject> typeIdentifier,
+    int visibility,
+    ffi.Pointer<ObjCObject> loadHandler,
+  ) {
+    return __objc_msgSend_110(
+      obj,
+      sel,
+      typeIdentifier,
+      visibility,
+      loadHandler,
+    );
+  }
+
+  late final __objc_msgSend_110Ptr = _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_110 = __objc_msgSend_110Ptr.asFunction<
+      void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+          ffi.Pointer<ObjCObject>, int, ffi.Pointer<ObjCObject>)>();
+
+  void _objc_msgSend_111(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    ffi.Pointer<ObjCObject> typeIdentifier,
+    int fileOptions,
+    int visibility,
+    ffi.Pointer<ObjCObject> loadHandler,
+  ) {
+    return __objc_msgSend_111(
+      obj,
+      sel,
+      typeIdentifier,
+      fileOptions,
+      visibility,
+      loadHandler,
+    );
+  }
+
+  late final __objc_msgSend_111Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Void Function(
+              ffi.Pointer<ObjCObject>,
+              ffi.Pointer<ObjCSel>,
+              ffi.Pointer<ObjCObject>,
+              ffi.Int32,
+              ffi.Int32,
+              ffi.Pointer<ObjCObject>)>>('objc_msgSend');
+  late final __objc_msgSend_111 = __objc_msgSend_111Ptr.asFunction<
+      void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+          ffi.Pointer<ObjCObject>, int, int, ffi.Pointer<ObjCObject>)>();
+
+  ffi.Pointer<ObjCObject> _objc_msgSend_112(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+  ) {
+    return __objc_msgSend_112(
+      obj,
+      sel,
+    );
+  }
+
+  late final __objc_msgSend_112Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ObjCObject> Function(
+              ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>>('objc_msgSend');
+  late final __objc_msgSend_112 = __objc_msgSend_112Ptr.asFunction<
+      ffi.Pointer<ObjCObject> Function(
+          ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>();
+
+  bool _objc_msgSend_113(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    ffi.Pointer<ObjCObject> typeIdentifier,
+  ) {
+    return __objc_msgSend_113(
+          obj,
+          sel,
+          typeIdentifier,
+        ) !=
+        0;
+  }
+
+  late final __objc_msgSend_113Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Uint8 Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+              ffi.Pointer<ObjCObject>)>>('objc_msgSend');
+  late final __objc_msgSend_113 = __objc_msgSend_113Ptr.asFunction<
+      int Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+          ffi.Pointer<ObjCObject>)>();
+
+  bool _objc_msgSend_114(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    ffi.Pointer<ObjCObject> typeIdentifier,
+    int fileOptions,
+  ) {
+    return __objc_msgSend_114(
+          obj,
+          sel,
+          typeIdentifier,
+          fileOptions,
+        ) !=
+        0;
+  }
+
+  late final __objc_msgSend_114Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Uint8 Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+              ffi.Pointer<ObjCObject>, ffi.Int32)>>('objc_msgSend');
+  late final __objc_msgSend_114 = __objc_msgSend_114Ptr.asFunction<
+      int Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+          ffi.Pointer<ObjCObject>, int)>();
+
+  ffi.Pointer<ObjCObject> _objc_msgSend_115(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    ffi.Pointer<ObjCObject> typeIdentifier,
+    ffi.Pointer<ObjCObject> completionHandler,
+  ) {
+    return __objc_msgSend_115(
+      obj,
+      sel,
+      typeIdentifier,
+      completionHandler,
+    );
+  }
+
+  late final __objc_msgSend_115Ptr = _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_115 = __objc_msgSend_115Ptr.asFunction<
+      ffi.Pointer<ObjCObject> Function(
+          ffi.Pointer<ObjCObject>,
+          ffi.Pointer<ObjCSel>,
+          ffi.Pointer<ObjCObject>,
+          ffi.Pointer<ObjCObject>)>();
+
+  ffi.Pointer<ObjCObject> _objc_msgSend_116(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    ffi.Pointer<ObjCObject> typeIdentifier,
+    ffi.Pointer<ObjCObject> completionHandler,
+  ) {
+    return __objc_msgSend_116(
+      obj,
+      sel,
+      typeIdentifier,
+      completionHandler,
+    );
+  }
+
+  late final __objc_msgSend_116Ptr = _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_116 = __objc_msgSend_116Ptr.asFunction<
+      ffi.Pointer<ObjCObject> Function(
+          ffi.Pointer<ObjCObject>,
+          ffi.Pointer<ObjCSel>,
+          ffi.Pointer<ObjCObject>,
+          ffi.Pointer<ObjCObject>)>();
+
+  ffi.Pointer<ObjCObject> _objc_msgSend_117(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    ffi.Pointer<ObjCObject> typeIdentifier,
+    ffi.Pointer<ObjCObject> completionHandler,
+  ) {
+    return __objc_msgSend_117(
+      obj,
+      sel,
+      typeIdentifier,
+      completionHandler,
+    );
+  }
+
+  late final __objc_msgSend_117Ptr = _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_117 = __objc_msgSend_117Ptr.asFunction<
+      ffi.Pointer<ObjCObject> Function(
+          ffi.Pointer<ObjCObject>,
+          ffi.Pointer<ObjCSel>,
+          ffi.Pointer<ObjCObject>,
+          ffi.Pointer<ObjCObject>)>();
+
+  ffi.Pointer<ObjCObject> _objc_msgSend_118(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+  ) {
+    return __objc_msgSend_118(
+      obj,
+      sel,
+    );
+  }
+
+  late final __objc_msgSend_118Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ObjCObject> Function(
+              ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>>('objc_msgSend');
+  late final __objc_msgSend_118 = __objc_msgSend_118Ptr.asFunction<
+      ffi.Pointer<ObjCObject> Function(
+          ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>)>();
+
+  void _objc_msgSend_119(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    ffi.Pointer<ObjCObject> value,
+  ) {
+    return __objc_msgSend_119(
+      obj,
+      sel,
+      value,
+    );
+  }
+
+  late final __objc_msgSend_119Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+              ffi.Pointer<ObjCObject>)>>('objc_msgSend');
+  late final __objc_msgSend_119 = __objc_msgSend_119Ptr.asFunction<
+      void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+          ffi.Pointer<ObjCObject>)>();
+
+  instancetype _objc_msgSend_120(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    ffi.Pointer<ObjCObject> object,
+  ) {
+    return __objc_msgSend_120(
+      obj,
+      sel,
+      object,
+    );
+  }
+
+  late final __objc_msgSend_120Ptr = _lookup<
+      ffi.NativeFunction<
+          instancetype Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+              ffi.Pointer<ObjCObject>)>>('objc_msgSend');
+  late final __objc_msgSend_120 = __objc_msgSend_120Ptr.asFunction<
+      instancetype Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+          ffi.Pointer<ObjCObject>)>();
+
+  void _objc_msgSend_121(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    ffi.Pointer<ObjCObject> object,
+    int visibility,
+  ) {
+    return __objc_msgSend_121(
+      obj,
+      sel,
+      object,
+      visibility,
+    );
+  }
+
+  late final __objc_msgSend_121Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+              ffi.Pointer<ObjCObject>, ffi.Int32)>>('objc_msgSend');
+  late final __objc_msgSend_121 = __objc_msgSend_121Ptr.asFunction<
+      void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+          ffi.Pointer<ObjCObject>, int)>();
+
+  void _objc_msgSend_122(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    ffi.Pointer<ObjCObject> aClass,
+    int visibility,
+    ffi.Pointer<ObjCObject> loadHandler,
+  ) {
+    return __objc_msgSend_122(
+      obj,
+      sel,
+      aClass,
+      visibility,
+      loadHandler,
+    );
+  }
+
+  late final __objc_msgSend_122Ptr = _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_122 = __objc_msgSend_122Ptr.asFunction<
+      void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+          ffi.Pointer<ObjCObject>, int, ffi.Pointer<ObjCObject>)>();
+
+  bool _objc_msgSend_123(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    ffi.Pointer<ObjCObject> aClass,
+  ) {
+    return __objc_msgSend_123(
+          obj,
+          sel,
+          aClass,
+        ) !=
+        0;
+  }
+
+  late final __objc_msgSend_123Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Uint8 Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+              ffi.Pointer<ObjCObject>)>>('objc_msgSend');
+  late final __objc_msgSend_123 = __objc_msgSend_123Ptr.asFunction<
+      int Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+          ffi.Pointer<ObjCObject>)>();
+
+  ffi.Pointer<ObjCObject> _objc_msgSend_124(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    ffi.Pointer<ObjCObject> aClass,
+    ffi.Pointer<ObjCObject> completionHandler,
+  ) {
+    return __objc_msgSend_124(
+      obj,
+      sel,
+      aClass,
+      completionHandler,
+    );
+  }
+
+  late final __objc_msgSend_124Ptr = _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_124 = __objc_msgSend_124Ptr.asFunction<
+      ffi.Pointer<ObjCObject> Function(
+          ffi.Pointer<ObjCObject>,
+          ffi.Pointer<ObjCSel>,
+          ffi.Pointer<ObjCObject>,
+          ffi.Pointer<ObjCObject>)>();
+
+  instancetype _objc_msgSend_125(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    ffi.Pointer<ObjCObject> item,
+    ffi.Pointer<ObjCObject> typeIdentifier,
+  ) {
+    return __objc_msgSend_125(
+      obj,
+      sel,
+      item,
+      typeIdentifier,
+    );
+  }
+
+  late final __objc_msgSend_125Ptr = _lookup<
+      ffi.NativeFunction<
+          instancetype Function(
+              ffi.Pointer<ObjCObject>,
+              ffi.Pointer<ObjCSel>,
+              ffi.Pointer<ObjCObject>,
+              ffi.Pointer<ObjCObject>)>>('objc_msgSend');
+  late final __objc_msgSend_125 = __objc_msgSend_125Ptr.asFunction<
+      instancetype Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+          ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCObject>)>();
+
+  instancetype _objc_msgSend_126(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    ffi.Pointer<ObjCObject> fileURL,
+  ) {
+    return __objc_msgSend_126(
+      obj,
+      sel,
+      fileURL,
+    );
+  }
+
+  late final __objc_msgSend_126Ptr = _lookup<
+      ffi.NativeFunction<
+          instancetype Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+              ffi.Pointer<ObjCObject>)>>('objc_msgSend');
+  late final __objc_msgSend_126 = __objc_msgSend_126Ptr.asFunction<
+      instancetype Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+          ffi.Pointer<ObjCObject>)>();
+
+  void _objc_msgSend_127(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    ffi.Pointer<ObjCObject> typeIdentifier,
+    NSItemProviderLoadHandler loadHandler,
+  ) {
+    return __objc_msgSend_127(
+      obj,
+      sel,
+      typeIdentifier,
+      loadHandler,
+    );
+  }
+
+  late final __objc_msgSend_127Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Void Function(
+              ffi.Pointer<ObjCObject>,
+              ffi.Pointer<ObjCSel>,
+              ffi.Pointer<ObjCObject>,
+              NSItemProviderLoadHandler)>>('objc_msgSend');
+  late final __objc_msgSend_127 = __objc_msgSend_127Ptr.asFunction<
+      void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+          ffi.Pointer<ObjCObject>, NSItemProviderLoadHandler)>();
+
+  void _objc_msgSend_128(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    ffi.Pointer<ObjCObject> typeIdentifier,
+    ffi.Pointer<ObjCObject> options,
+    NSItemProviderCompletionHandler completionHandler,
+  ) {
+    return __objc_msgSend_128(
+      obj,
+      sel,
+      typeIdentifier,
+      options,
+      completionHandler,
+    );
+  }
+
+  late final __objc_msgSend_128Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Void Function(
+              ffi.Pointer<ObjCObject>,
+              ffi.Pointer<ObjCSel>,
+              ffi.Pointer<ObjCObject>,
+              ffi.Pointer<ObjCObject>,
+              NSItemProviderCompletionHandler)>>('objc_msgSend');
+  late final __objc_msgSend_128 = __objc_msgSend_128Ptr.asFunction<
+      void Function(
+          ffi.Pointer<ObjCObject>,
+          ffi.Pointer<ObjCSel>,
+          ffi.Pointer<ObjCObject>,
+          ffi.Pointer<ObjCObject>,
+          NSItemProviderCompletionHandler)>();
+
+  late final ffi.Pointer<ffi.Pointer<ObjCObject>>
+      _NSItemProviderPreferredImageSizeKey =
+      _lookup<ffi.Pointer<ObjCObject>>('NSItemProviderPreferredImageSizeKey');
+
+  ffi.Pointer<ObjCObject> get NSItemProviderPreferredImageSizeKey =>
+      _NSItemProviderPreferredImageSizeKey.value;
+
+  set NSItemProviderPreferredImageSizeKey(ffi.Pointer<ObjCObject> value) =>
+      _NSItemProviderPreferredImageSizeKey.value = value;
+
+  late final ffi.Pointer<ffi.Pointer<ObjCObject>>
+      _NSExtensionJavaScriptPreprocessingResultsKey =
+      _lookup<ffi.Pointer<ObjCObject>>(
+          'NSExtensionJavaScriptPreprocessingResultsKey');
+
+  ffi.Pointer<ObjCObject> get NSExtensionJavaScriptPreprocessingResultsKey =>
+      _NSExtensionJavaScriptPreprocessingResultsKey.value;
+
+  set NSExtensionJavaScriptPreprocessingResultsKey(
+          ffi.Pointer<ObjCObject> value) =>
+      _NSExtensionJavaScriptPreprocessingResultsKey.value = value;
+
+  late final ffi.Pointer<ffi.Pointer<ObjCObject>>
+      _NSExtensionJavaScriptFinalizeArgumentKey =
+      _lookup<ffi.Pointer<ObjCObject>>(
+          'NSExtensionJavaScriptFinalizeArgumentKey');
+
+  ffi.Pointer<ObjCObject> get NSExtensionJavaScriptFinalizeArgumentKey =>
+      _NSExtensionJavaScriptFinalizeArgumentKey.value;
+
+  set NSExtensionJavaScriptFinalizeArgumentKey(ffi.Pointer<ObjCObject> value) =>
+      _NSExtensionJavaScriptFinalizeArgumentKey.value = value;
+
+  late final ffi.Pointer<ffi.Pointer<ObjCObject>> _NSItemProviderErrorDomain =
+      _lookup<ffi.Pointer<ObjCObject>>('NSItemProviderErrorDomain');
+
+  ffi.Pointer<ObjCObject> get NSItemProviderErrorDomain =>
+      _NSItemProviderErrorDomain.value;
+
+  set NSItemProviderErrorDomain(ffi.Pointer<ObjCObject> value) =>
+      _NSItemProviderErrorDomain.value = value;
+
+  late final ffi.Pointer<NSStringTransform> _NSStringTransformLatinToKatakana =
+      _lookup<NSStringTransform>('NSStringTransformLatinToKatakana');
+
+  NSStringTransform get NSStringTransformLatinToKatakana =>
+      _NSStringTransformLatinToKatakana.value;
+
+  set NSStringTransformLatinToKatakana(NSStringTransform value) =>
+      _NSStringTransformLatinToKatakana.value = value;
+
+  late final ffi.Pointer<NSStringTransform> _NSStringTransformLatinToHiragana =
+      _lookup<NSStringTransform>('NSStringTransformLatinToHiragana');
+
+  NSStringTransform get NSStringTransformLatinToHiragana =>
+      _NSStringTransformLatinToHiragana.value;
+
+  set NSStringTransformLatinToHiragana(NSStringTransform value) =>
+      _NSStringTransformLatinToHiragana.value = value;
+
+  late final ffi.Pointer<NSStringTransform> _NSStringTransformLatinToHangul =
+      _lookup<NSStringTransform>('NSStringTransformLatinToHangul');
+
+  NSStringTransform get NSStringTransformLatinToHangul =>
+      _NSStringTransformLatinToHangul.value;
+
+  set NSStringTransformLatinToHangul(NSStringTransform value) =>
+      _NSStringTransformLatinToHangul.value = value;
+
+  late final ffi.Pointer<NSStringTransform> _NSStringTransformLatinToArabic =
+      _lookup<NSStringTransform>('NSStringTransformLatinToArabic');
+
+  NSStringTransform get NSStringTransformLatinToArabic =>
+      _NSStringTransformLatinToArabic.value;
+
+  set NSStringTransformLatinToArabic(NSStringTransform value) =>
+      _NSStringTransformLatinToArabic.value = value;
+
+  late final ffi.Pointer<NSStringTransform> _NSStringTransformLatinToHebrew =
+      _lookup<NSStringTransform>('NSStringTransformLatinToHebrew');
+
+  NSStringTransform get NSStringTransformLatinToHebrew =>
+      _NSStringTransformLatinToHebrew.value;
+
+  set NSStringTransformLatinToHebrew(NSStringTransform value) =>
+      _NSStringTransformLatinToHebrew.value = value;
+
+  late final ffi.Pointer<NSStringTransform> _NSStringTransformLatinToThai =
+      _lookup<NSStringTransform>('NSStringTransformLatinToThai');
+
+  NSStringTransform get NSStringTransformLatinToThai =>
+      _NSStringTransformLatinToThai.value;
+
+  set NSStringTransformLatinToThai(NSStringTransform value) =>
+      _NSStringTransformLatinToThai.value = value;
+
+  late final ffi.Pointer<NSStringTransform> _NSStringTransformLatinToCyrillic =
+      _lookup<NSStringTransform>('NSStringTransformLatinToCyrillic');
+
+  NSStringTransform get NSStringTransformLatinToCyrillic =>
+      _NSStringTransformLatinToCyrillic.value;
+
+  set NSStringTransformLatinToCyrillic(NSStringTransform value) =>
+      _NSStringTransformLatinToCyrillic.value = value;
+
+  late final ffi.Pointer<NSStringTransform> _NSStringTransformLatinToGreek =
+      _lookup<NSStringTransform>('NSStringTransformLatinToGreek');
+
+  NSStringTransform get NSStringTransformLatinToGreek =>
+      _NSStringTransformLatinToGreek.value;
+
+  set NSStringTransformLatinToGreek(NSStringTransform value) =>
+      _NSStringTransformLatinToGreek.value = value;
+
+  late final ffi.Pointer<NSStringTransform> _NSStringTransformToLatin =
+      _lookup<NSStringTransform>('NSStringTransformToLatin');
+
+  NSStringTransform get NSStringTransformToLatin =>
+      _NSStringTransformToLatin.value;
+
+  set NSStringTransformToLatin(NSStringTransform value) =>
+      _NSStringTransformToLatin.value = value;
+
+  late final ffi.Pointer<NSStringTransform> _NSStringTransformMandarinToLatin =
+      _lookup<NSStringTransform>('NSStringTransformMandarinToLatin');
+
+  NSStringTransform get NSStringTransformMandarinToLatin =>
+      _NSStringTransformMandarinToLatin.value;
+
+  set NSStringTransformMandarinToLatin(NSStringTransform value) =>
+      _NSStringTransformMandarinToLatin.value = value;
+
+  late final ffi.Pointer<NSStringTransform>
+      _NSStringTransformHiraganaToKatakana =
+      _lookup<NSStringTransform>('NSStringTransformHiraganaToKatakana');
+
+  NSStringTransform get NSStringTransformHiraganaToKatakana =>
+      _NSStringTransformHiraganaToKatakana.value;
+
+  set NSStringTransformHiraganaToKatakana(NSStringTransform value) =>
+      _NSStringTransformHiraganaToKatakana.value = value;
+
+  late final ffi.Pointer<NSStringTransform>
+      _NSStringTransformFullwidthToHalfwidth =
+      _lookup<NSStringTransform>('NSStringTransformFullwidthToHalfwidth');
+
+  NSStringTransform get NSStringTransformFullwidthToHalfwidth =>
+      _NSStringTransformFullwidthToHalfwidth.value;
+
+  set NSStringTransformFullwidthToHalfwidth(NSStringTransform value) =>
+      _NSStringTransformFullwidthToHalfwidth.value = value;
+
+  late final ffi.Pointer<NSStringTransform> _NSStringTransformToXMLHex =
+      _lookup<NSStringTransform>('NSStringTransformToXMLHex');
+
+  NSStringTransform get NSStringTransformToXMLHex =>
+      _NSStringTransformToXMLHex.value;
+
+  set NSStringTransformToXMLHex(NSStringTransform value) =>
+      _NSStringTransformToXMLHex.value = value;
+
+  late final ffi.Pointer<NSStringTransform> _NSStringTransformToUnicodeName =
+      _lookup<NSStringTransform>('NSStringTransformToUnicodeName');
+
+  NSStringTransform get NSStringTransformToUnicodeName =>
+      _NSStringTransformToUnicodeName.value;
+
+  set NSStringTransformToUnicodeName(NSStringTransform value) =>
+      _NSStringTransformToUnicodeName.value = value;
+
+  late final ffi.Pointer<NSStringTransform>
+      _NSStringTransformStripCombiningMarks =
+      _lookup<NSStringTransform>('NSStringTransformStripCombiningMarks');
+
+  NSStringTransform get NSStringTransformStripCombiningMarks =>
+      _NSStringTransformStripCombiningMarks.value;
+
+  set NSStringTransformStripCombiningMarks(NSStringTransform value) =>
+      _NSStringTransformStripCombiningMarks.value = value;
+
+  late final ffi.Pointer<NSStringTransform> _NSStringTransformStripDiacritics =
+      _lookup<NSStringTransform>('NSStringTransformStripDiacritics');
+
+  NSStringTransform get NSStringTransformStripDiacritics =>
+      _NSStringTransformStripDiacritics.value;
+
+  set NSStringTransformStripDiacritics(NSStringTransform value) =>
+      _NSStringTransformStripDiacritics.value = value;
+
+  late final ffi.Pointer<NSStringEncodingDetectionOptionsKey>
+      _NSStringEncodingDetectionSuggestedEncodingsKey =
+      _lookup<NSStringEncodingDetectionOptionsKey>(
+          'NSStringEncodingDetectionSuggestedEncodingsKey');
+
+  NSStringEncodingDetectionOptionsKey
+      get NSStringEncodingDetectionSuggestedEncodingsKey =>
+          _NSStringEncodingDetectionSuggestedEncodingsKey.value;
+
+  set NSStringEncodingDetectionSuggestedEncodingsKey(
+          NSStringEncodingDetectionOptionsKey value) =>
+      _NSStringEncodingDetectionSuggestedEncodingsKey.value = value;
+
+  late final ffi.Pointer<NSStringEncodingDetectionOptionsKey>
+      _NSStringEncodingDetectionDisallowedEncodingsKey =
+      _lookup<NSStringEncodingDetectionOptionsKey>(
+          'NSStringEncodingDetectionDisallowedEncodingsKey');
+
+  NSStringEncodingDetectionOptionsKey
+      get NSStringEncodingDetectionDisallowedEncodingsKey =>
+          _NSStringEncodingDetectionDisallowedEncodingsKey.value;
+
+  set NSStringEncodingDetectionDisallowedEncodingsKey(
+          NSStringEncodingDetectionOptionsKey value) =>
+      _NSStringEncodingDetectionDisallowedEncodingsKey.value = value;
+
+  late final ffi.Pointer<NSStringEncodingDetectionOptionsKey>
+      _NSStringEncodingDetectionUseOnlySuggestedEncodingsKey =
+      _lookup<NSStringEncodingDetectionOptionsKey>(
+          'NSStringEncodingDetectionUseOnlySuggestedEncodingsKey');
+
+  NSStringEncodingDetectionOptionsKey
+      get NSStringEncodingDetectionUseOnlySuggestedEncodingsKey =>
+          _NSStringEncodingDetectionUseOnlySuggestedEncodingsKey.value;
+
+  set NSStringEncodingDetectionUseOnlySuggestedEncodingsKey(
+          NSStringEncodingDetectionOptionsKey value) =>
+      _NSStringEncodingDetectionUseOnlySuggestedEncodingsKey.value = value;
+
+  late final ffi.Pointer<NSStringEncodingDetectionOptionsKey>
+      _NSStringEncodingDetectionAllowLossyKey =
+      _lookup<NSStringEncodingDetectionOptionsKey>(
+          'NSStringEncodingDetectionAllowLossyKey');
+
+  NSStringEncodingDetectionOptionsKey
+      get NSStringEncodingDetectionAllowLossyKey =>
+          _NSStringEncodingDetectionAllowLossyKey.value;
+
+  set NSStringEncodingDetectionAllowLossyKey(
+          NSStringEncodingDetectionOptionsKey value) =>
+      _NSStringEncodingDetectionAllowLossyKey.value = value;
+
+  late final ffi.Pointer<NSStringEncodingDetectionOptionsKey>
+      _NSStringEncodingDetectionFromWindowsKey =
+      _lookup<NSStringEncodingDetectionOptionsKey>(
+          'NSStringEncodingDetectionFromWindowsKey');
+
+  NSStringEncodingDetectionOptionsKey
+      get NSStringEncodingDetectionFromWindowsKey =>
+          _NSStringEncodingDetectionFromWindowsKey.value;
+
+  set NSStringEncodingDetectionFromWindowsKey(
+          NSStringEncodingDetectionOptionsKey value) =>
+      _NSStringEncodingDetectionFromWindowsKey.value = value;
+
+  late final ffi.Pointer<NSStringEncodingDetectionOptionsKey>
+      _NSStringEncodingDetectionLossySubstitutionKey =
+      _lookup<NSStringEncodingDetectionOptionsKey>(
+          'NSStringEncodingDetectionLossySubstitutionKey');
+
+  NSStringEncodingDetectionOptionsKey
+      get NSStringEncodingDetectionLossySubstitutionKey =>
+          _NSStringEncodingDetectionLossySubstitutionKey.value;
+
+  set NSStringEncodingDetectionLossySubstitutionKey(
+          NSStringEncodingDetectionOptionsKey value) =>
+      _NSStringEncodingDetectionLossySubstitutionKey.value = value;
+
+  late final ffi.Pointer<NSStringEncodingDetectionOptionsKey>
+      _NSStringEncodingDetectionLikelyLanguageKey =
+      _lookup<NSStringEncodingDetectionOptionsKey>(
+          'NSStringEncodingDetectionLikelyLanguageKey');
+
+  NSStringEncodingDetectionOptionsKey
+      get NSStringEncodingDetectionLikelyLanguageKey =>
+          _NSStringEncodingDetectionLikelyLanguageKey.value;
+
+  set NSStringEncodingDetectionLikelyLanguageKey(
+          NSStringEncodingDetectionOptionsKey value) =>
+      _NSStringEncodingDetectionLikelyLanguageKey.value = value;
+
+  void _objc_msgSend_129(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    NSRange range,
+    ffi.Pointer<ObjCObject> aString,
+  ) {
+    return __objc_msgSend_129(
+      obj,
+      sel,
+      range,
+      aString,
+    );
+  }
+
+  late final __objc_msgSend_129Ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>,
+              NSRange, ffi.Pointer<ObjCObject>)>>('objc_msgSend');
+  late final __objc_msgSend_129 = __objc_msgSend_129Ptr.asFunction<
+      void Function(ffi.Pointer<ObjCObject>, ffi.Pointer<ObjCSel>, NSRange,
+          ffi.Pointer<ObjCObject>)>();
+
+  late final ffi.Pointer<NSExceptionName> _NSCharacterConversionException =
+      _lookup<NSExceptionName>('NSCharacterConversionException');
+
+  NSExceptionName get NSCharacterConversionException =>
+      _NSCharacterConversionException.value;
+
+  set NSCharacterConversionException(NSExceptionName value) =>
+      _NSCharacterConversionException.value = value;
+
+  late final ffi.Pointer<NSExceptionName> _NSParseErrorException =
+      _lookup<NSExceptionName>('NSParseErrorException');
+
+  NSExceptionName get NSParseErrorException => _NSParseErrorException.value;
+
+  set NSParseErrorException(NSExceptionName value) =>
+      _NSParseErrorException.value = value;
+
+  ffi.Pointer<ObjCObject> _objc_msgSend_130(
+    ffi.Pointer<ObjCObject> obj,
+    ffi.Pointer<ObjCSel> sel,
+    ffi.Pointer<ObjCObject> a,
+    ffi.Pointer<ObjCObject> b,
+  ) {
+    return __objc_msgSend_130(
+      obj,
+      sel,
+      a,
+      b,
+    );
+  }
+
+  late final __objc_msgSend_130Ptr = _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_130 = __objc_msgSend_130Ptr.asFunction<
+      ffi.Pointer<ObjCObject> Function(
+          ffi.Pointer<ObjCObject>,
+          ffi.Pointer<ObjCSel>,
+          ffi.Pointer<ObjCObject>,
+          ffi.Pointer<ObjCObject>)>();
+}
+
+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>)>>;
+
+ffi.Pointer<ObjCSel> _registerName(StringTestObjCLibrary _lib, String name) {
+  final cstr = name.toNativeUtf8();
+  final sel = _lib._sel_registerName(cstr.cast());
+  pkg_ffi.calloc.free(cstr);
+  return sel;
+}
+
+ffi.Pointer<ObjCObject> _getClass(StringTestObjCLibrary _lib, String name) {
+  final cstr = name.toNativeUtf8();
+  final clazz = _lib._objc_getClass(cstr.cast());
+  pkg_ffi.calloc.free(cstr);
+  return clazz;
+}
+
+class _ObjCWrapper {
+  final ffi.Pointer<ObjCObject> _id;
+  final StringTestObjCLibrary _lib;
+  _ObjCWrapper._(this._id, this._lib);
+}
+
+class NSValue extends NSObject {
+  NSValue._(ffi.Pointer<ObjCObject> id, StringTestObjCLibrary lib)
+      : super._(id, lib);
+
+  static ffi.Pointer<ObjCObject>? _class;
+
+  static NSValue castFrom<T extends _ObjCWrapper>(T other) {
+    return NSValue._(other._id, other._lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_getValue_size;
+  void getValue_size(ffi.Pointer<ffi.Void> value, int size) {
+    _sel_getValue_size ??= _registerName(_lib, "getValue:size:");
+    _lib._objc_msgSend_28(_id, _sel_getValue_size!, value, size);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_objCType;
+  ffi.Pointer<pkg_ffi.Char> get objCType {
+    _sel_objCType ??= _registerName(_lib, "objCType");
+    return _lib._objc_msgSend_29(_id, _sel_objCType!);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_initWithBytes_objCType;
+  NSValue initWithBytes_objCType(
+      ffi.Pointer<ffi.Void> value, ffi.Pointer<pkg_ffi.Char> type) {
+    _sel_initWithBytes_objCType ??=
+        _registerName(_lib, "initWithBytes:objCType:");
+    final _ret =
+        _lib._objc_msgSend_30(_id, _sel_initWithBytes_objCType!, value, type);
+    return NSValue._(_ret, _lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_initWithCoder;
+  NSValue initWithCoder(NSObject coder) {
+    _sel_initWithCoder ??= _registerName(_lib, "initWithCoder:");
+    final _ret = _lib._objc_msgSend_31(_id, _sel_initWithCoder!, coder._id);
+    return NSValue._(_ret, _lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_new1;
+  static NSValue new1(StringTestObjCLibrary _lib) {
+    _class ??= _getClass(_lib, "NSValue");
+    _sel_new1 ??= _registerName(_lib, "new");
+    final _ret = _lib._objc_msgSend_1(_class!, _sel_new1!);
+    return NSValue._(_ret, _lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_alloc;
+  static NSValue alloc(StringTestObjCLibrary _lib) {
+    _class ??= _getClass(_lib, "NSValue");
+    _sel_alloc ??= _registerName(_lib, "alloc");
+    final _ret = _lib._objc_msgSend_1(_class!, _sel_alloc!);
+    return NSValue._(_ret, _lib);
+  }
+}
+
+class NSObject extends _ObjCWrapper {
+  NSObject._(ffi.Pointer<ObjCObject> id, StringTestObjCLibrary lib)
+      : super._(id, lib);
+
+  static ffi.Pointer<ObjCObject>? _class;
+
+  static NSObject castFrom<T extends _ObjCWrapper>(T other) {
+    return NSObject._(other._id, other._lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_load;
+  static void load(StringTestObjCLibrary _lib) {
+    _class ??= _getClass(_lib, "NSObject");
+    _sel_load ??= _registerName(_lib, "load");
+    _lib._objc_msgSend_0(_class!, _sel_load!);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_initialize;
+  static void initialize(StringTestObjCLibrary _lib) {
+    _class ??= _getClass(_lib, "NSObject");
+    _sel_initialize ??= _registerName(_lib, "initialize");
+    _lib._objc_msgSend_0(_class!, _sel_initialize!);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_init;
+  NSObject init() {
+    _sel_init ??= _registerName(_lib, "init");
+    final _ret = _lib._objc_msgSend_1(_id, _sel_init!);
+    return NSObject._(_ret, _lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_new1;
+  static NSObject new1(StringTestObjCLibrary _lib) {
+    _class ??= _getClass(_lib, "NSObject");
+    _sel_new1 ??= _registerName(_lib, "new");
+    final _ret = _lib._objc_msgSend_1(_class!, _sel_new1!);
+    return NSObject._(_ret, _lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_allocWithZone;
+  static NSObject allocWithZone(
+      StringTestObjCLibrary _lib, ffi.Pointer<_NSZone> zone) {
+    _class ??= _getClass(_lib, "NSObject");
+    _sel_allocWithZone ??= _registerName(_lib, "allocWithZone:");
+    final _ret = _lib._objc_msgSend_2(_class!, _sel_allocWithZone!, zone);
+    return NSObject._(_ret, _lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_alloc;
+  static NSObject alloc(StringTestObjCLibrary _lib) {
+    _class ??= _getClass(_lib, "NSObject");
+    _sel_alloc ??= _registerName(_lib, "alloc");
+    final _ret = _lib._objc_msgSend_1(_class!, _sel_alloc!);
+    return NSObject._(_ret, _lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_dealloc;
+  void dealloc() {
+    _sel_dealloc ??= _registerName(_lib, "dealloc");
+    _lib._objc_msgSend_0(_id, _sel_dealloc!);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_finalize;
+  void finalize() {
+    _sel_finalize ??= _registerName(_lib, "finalize");
+    _lib._objc_msgSend_0(_id, _sel_finalize!);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_copy;
+  NSObject copy() {
+    _sel_copy ??= _registerName(_lib, "copy");
+    final _ret = _lib._objc_msgSend_3(_id, _sel_copy!);
+    return NSObject._(_ret, _lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_mutableCopy;
+  NSObject mutableCopy() {
+    _sel_mutableCopy ??= _registerName(_lib, "mutableCopy");
+    final _ret = _lib._objc_msgSend_4(_id, _sel_mutableCopy!);
+    return NSObject._(_ret, _lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_copyWithZone;
+  static NSObject copyWithZone(
+      StringTestObjCLibrary _lib, ffi.Pointer<_NSZone> zone) {
+    _class ??= _getClass(_lib, "NSObject");
+    _sel_copyWithZone ??= _registerName(_lib, "copyWithZone:");
+    final _ret = _lib._objc_msgSend_5(_class!, _sel_copyWithZone!, zone);
+    return NSObject._(_ret, _lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_mutableCopyWithZone;
+  static NSObject mutableCopyWithZone(
+      StringTestObjCLibrary _lib, ffi.Pointer<_NSZone> zone) {
+    _class ??= _getClass(_lib, "NSObject");
+    _sel_mutableCopyWithZone ??= _registerName(_lib, "mutableCopyWithZone:");
+    final _ret = _lib._objc_msgSend_6(_class!, _sel_mutableCopyWithZone!, zone);
+    return NSObject._(_ret, _lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_instancesRespondToSelector;
+  static bool instancesRespondToSelector(
+      StringTestObjCLibrary _lib, ffi.Pointer<ObjCSel> aSelector) {
+    _class ??= _getClass(_lib, "NSObject");
+    _sel_instancesRespondToSelector ??=
+        _registerName(_lib, "instancesRespondToSelector:");
+    return _lib._objc_msgSend_7(
+        _class!, _sel_instancesRespondToSelector!, aSelector);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_conformsToProtocol;
+  static bool conformsToProtocol(
+      StringTestObjCLibrary _lib, NSObject protocol) {
+    _class ??= _getClass(_lib, "NSObject");
+    _sel_conformsToProtocol ??= _registerName(_lib, "conformsToProtocol:");
+    return _lib._objc_msgSend_8(
+        _class!, _sel_conformsToProtocol!, protocol._id);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_methodForSelector;
+  IMP methodForSelector(ffi.Pointer<ObjCSel> aSelector) {
+    _sel_methodForSelector ??= _registerName(_lib, "methodForSelector:");
+    return _lib._objc_msgSend_9(_id, _sel_methodForSelector!, aSelector);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_instanceMethodForSelector;
+  static IMP instanceMethodForSelector(
+      StringTestObjCLibrary _lib, ffi.Pointer<ObjCSel> aSelector) {
+    _class ??= _getClass(_lib, "NSObject");
+    _sel_instanceMethodForSelector ??=
+        _registerName(_lib, "instanceMethodForSelector:");
+    return _lib._objc_msgSend_10(
+        _class!, _sel_instanceMethodForSelector!, aSelector);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_doesNotRecognizeSelector;
+  void doesNotRecognizeSelector(ffi.Pointer<ObjCSel> aSelector) {
+    _sel_doesNotRecognizeSelector ??=
+        _registerName(_lib, "doesNotRecognizeSelector:");
+    _lib._objc_msgSend_11(_id, _sel_doesNotRecognizeSelector!, aSelector);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_forwardingTargetForSelector;
+  NSObject forwardingTargetForSelector(ffi.Pointer<ObjCSel> aSelector) {
+    _sel_forwardingTargetForSelector ??=
+        _registerName(_lib, "forwardingTargetForSelector:");
+    final _ret = _lib._objc_msgSend_12(
+        _id, _sel_forwardingTargetForSelector!, aSelector);
+    return NSObject._(_ret, _lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_forwardInvocation;
+  void forwardInvocation(NSObject anInvocation) {
+    _sel_forwardInvocation ??= _registerName(_lib, "forwardInvocation:");
+    _lib._objc_msgSend_13(_id, _sel_forwardInvocation!, anInvocation._id);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_methodSignatureForSelector;
+  NSMethodSignature methodSignatureForSelector(ffi.Pointer<ObjCSel> aSelector) {
+    _sel_methodSignatureForSelector ??=
+        _registerName(_lib, "methodSignatureForSelector:");
+    final _ret =
+        _lib._objc_msgSend_14(_id, _sel_methodSignatureForSelector!, aSelector);
+    return NSMethodSignature._(_ret, _lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_instanceMethodSignatureForSelector;
+  static NSMethodSignature instanceMethodSignatureForSelector(
+      StringTestObjCLibrary _lib, ffi.Pointer<ObjCSel> aSelector) {
+    _class ??= _getClass(_lib, "NSObject");
+    _sel_instanceMethodSignatureForSelector ??=
+        _registerName(_lib, "instanceMethodSignatureForSelector:");
+    final _ret = _lib._objc_msgSend_15(
+        _class!, _sel_instanceMethodSignatureForSelector!, aSelector);
+    return NSMethodSignature._(_ret, _lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_allowsWeakReference;
+  bool allowsWeakReference() {
+    _sel_allowsWeakReference ??= _registerName(_lib, "allowsWeakReference");
+    return _lib._objc_msgSend_16(_id, _sel_allowsWeakReference!);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_retainWeakReference;
+  bool retainWeakReference() {
+    _sel_retainWeakReference ??= _registerName(_lib, "retainWeakReference");
+    return _lib._objc_msgSend_16(_id, _sel_retainWeakReference!);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_isSubclassOfClass;
+  static bool isSubclassOfClass(StringTestObjCLibrary _lib, NSObject aClass) {
+    _class ??= _getClass(_lib, "NSObject");
+    _sel_isSubclassOfClass ??= _registerName(_lib, "isSubclassOfClass:");
+    return _lib._objc_msgSend_17(_class!, _sel_isSubclassOfClass!, aClass._id);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_resolveClassMethod;
+  static bool resolveClassMethod(
+      StringTestObjCLibrary _lib, ffi.Pointer<ObjCSel> sel) {
+    _class ??= _getClass(_lib, "NSObject");
+    _sel_resolveClassMethod ??= _registerName(_lib, "resolveClassMethod:");
+    return _lib._objc_msgSend_18(_class!, _sel_resolveClassMethod!, sel);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_resolveInstanceMethod;
+  static bool resolveInstanceMethod(
+      StringTestObjCLibrary _lib, ffi.Pointer<ObjCSel> sel) {
+    _class ??= _getClass(_lib, "NSObject");
+    _sel_resolveInstanceMethod ??=
+        _registerName(_lib, "resolveInstanceMethod:");
+    return _lib._objc_msgSend_19(_class!, _sel_resolveInstanceMethod!, sel);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_hash;
+  static int hash(StringTestObjCLibrary _lib) {
+    _class ??= _getClass(_lib, "NSObject");
+    _sel_hash ??= _registerName(_lib, "hash");
+    return _lib._objc_msgSend_20(_class!, _sel_hash!);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_superclass;
+  static NSObject superclass(StringTestObjCLibrary _lib) {
+    _class ??= _getClass(_lib, "NSObject");
+    _sel_superclass ??= _registerName(_lib, "superclass");
+    final _ret = _lib._objc_msgSend_21(_class!, _sel_superclass!);
+    return NSObject._(_ret, _lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_class1;
+  static NSObject class1(StringTestObjCLibrary _lib) {
+    _class ??= _getClass(_lib, "NSObject");
+    _sel_class1 ??= _registerName(_lib, "class");
+    final _ret = _lib._objc_msgSend_22(_class!, _sel_class1!);
+    return NSObject._(_ret, _lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_description;
+  static NSString description(StringTestObjCLibrary _lib) {
+    _class ??= _getClass(_lib, "NSObject");
+    _sel_description ??= _registerName(_lib, "description");
+    final _ret = _lib._objc_msgSend_27(_class!, _sel_description!);
+    return NSString._(_ret, _lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_debugDescription;
+  static NSString debugDescription(StringTestObjCLibrary _lib) {
+    _class ??= _getClass(_lib, "NSObject");
+    _sel_debugDescription ??= _registerName(_lib, "debugDescription");
+    final _ret = _lib._objc_msgSend_27(_class!, _sel_debugDescription!);
+    return NSString._(_ret, _lib);
+  }
+}
+
+typedef instancetype = ffi.Pointer<ObjCObject>;
+
+class ObjCObject extends ffi.Opaque {}
+
+class _NSZone extends ffi.Opaque {}
+
+class ObjCSel extends ffi.Opaque {}
+
+typedef IMP = ffi.Pointer<ffi.NativeFunction<ffi.Void Function()>>;
+
+class NSMethodSignature extends _ObjCWrapper {
+  NSMethodSignature._(ffi.Pointer<ObjCObject> id, StringTestObjCLibrary lib)
+      : super._(id, lib);
+
+  static ffi.Pointer<ObjCObject>? _class;
+
+  static NSMethodSignature castFrom<T extends _ObjCWrapper>(T other) {
+    return NSMethodSignature._(other._id, other._lib);
+  }
+}
+
+typedef NSUInteger = pkg_ffi.UnsignedLong;
+
+class NSString extends NSObject {
+  NSString._(ffi.Pointer<ObjCObject> id, StringTestObjCLibrary lib)
+      : super._(id, lib);
+
+  static ffi.Pointer<ObjCObject>? _class;
+
+  static NSString castFrom<T extends _ObjCWrapper>(T other) {
+    return NSString._(other._id, other._lib);
+  }
+
+  factory NSString(StringTestObjCLibrary _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 ffi.Pointer<ObjCSel>? _sel_length;
+  int get length {
+    _sel_length ??= _registerName(_lib, "length");
+    return _lib._objc_msgSend_20(_id, _sel_length!);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_characterAtIndex;
+  int characterAtIndex(int index) {
+    _sel_characterAtIndex ??= _registerName(_lib, "characterAtIndex:");
+    return _lib._objc_msgSend_23(_id, _sel_characterAtIndex!, index);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_init;
+  @override
+  NSString init() {
+    _sel_init ??= _registerName(_lib, "init");
+    final _ret = _lib._objc_msgSend_1(_id, _sel_init!);
+    return NSString._(_ret, _lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_initWithCoder;
+  NSString initWithCoder(NSObject coder) {
+    _sel_initWithCoder ??= _registerName(_lib, "initWithCoder:");
+    final _ret = _lib._objc_msgSend_24(_id, _sel_initWithCoder!, coder._id);
+    return NSString._(_ret, _lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_stringWithCString_encoding;
+  static NSString stringWithCString_encoding(
+      StringTestObjCLibrary _lib, ffi.Pointer<pkg_ffi.Char> cString, int enc) {
+    _class ??= _getClass(_lib, "NSString");
+    _sel_stringWithCString_encoding ??=
+        _registerName(_lib, "stringWithCString:encoding:");
+    final _ret = _lib._objc_msgSend_25(
+        _class!, _sel_stringWithCString_encoding!, cString, enc);
+    return NSString._(_ret, _lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_UTF8String;
+  ffi.Pointer<pkg_ffi.Char> UTF8String() {
+    _sel_UTF8String ??= _registerName(_lib, "UTF8String");
+    return _lib._objc_msgSend_26(_id, _sel_UTF8String!);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_new1;
+  static NSString new1(StringTestObjCLibrary _lib) {
+    _class ??= _getClass(_lib, "NSString");
+    _sel_new1 ??= _registerName(_lib, "new");
+    final _ret = _lib._objc_msgSend_1(_class!, _sel_new1!);
+    return NSString._(_ret, _lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_alloc;
+  static NSString alloc(StringTestObjCLibrary _lib) {
+    _class ??= _getClass(_lib, "NSString");
+    _sel_alloc ??= _registerName(_lib, "alloc");
+    final _ret = _lib._objc_msgSend_1(_class!, _sel_alloc!);
+    return NSString._(_ret, _lib);
+  }
+}
+
+extension StringToNSString on String {
+  NSString toNSString(StringTestObjCLibrary lib) => NSString(lib, this);
+}
+
+typedef unichar = pkg_ffi.UnsignedShort;
+
+class NSNumber extends NSValue {
+  NSNumber._(ffi.Pointer<ObjCObject> id, StringTestObjCLibrary lib)
+      : super._(id, lib);
+
+  static ffi.Pointer<ObjCObject>? _class;
+
+  static NSNumber castFrom<T extends _ObjCWrapper>(T other) {
+    return NSNumber._(other._id, other._lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_initWithCoder;
+  @override
+  NSNumber initWithCoder(NSObject coder) {
+    _sel_initWithCoder ??= _registerName(_lib, "initWithCoder:");
+    final _ret = _lib._objc_msgSend_32(_id, _sel_initWithCoder!, coder._id);
+    return NSNumber._(_ret, _lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_initWithChar;
+  NSNumber initWithChar(int value) {
+    _sel_initWithChar ??= _registerName(_lib, "initWithChar:");
+    final _ret = _lib._objc_msgSend_33(_id, _sel_initWithChar!, value);
+    return NSNumber._(_ret, _lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_initWithUnsignedChar;
+  NSNumber initWithUnsignedChar(int value) {
+    _sel_initWithUnsignedChar ??= _registerName(_lib, "initWithUnsignedChar:");
+    final _ret = _lib._objc_msgSend_34(_id, _sel_initWithUnsignedChar!, value);
+    return NSNumber._(_ret, _lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_initWithShort;
+  NSNumber initWithShort(int value) {
+    _sel_initWithShort ??= _registerName(_lib, "initWithShort:");
+    final _ret = _lib._objc_msgSend_35(_id, _sel_initWithShort!, value);
+    return NSNumber._(_ret, _lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_initWithUnsignedShort;
+  NSNumber initWithUnsignedShort(int value) {
+    _sel_initWithUnsignedShort ??=
+        _registerName(_lib, "initWithUnsignedShort:");
+    final _ret = _lib._objc_msgSend_36(_id, _sel_initWithUnsignedShort!, value);
+    return NSNumber._(_ret, _lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_initWithInt;
+  NSNumber initWithInt(int value) {
+    _sel_initWithInt ??= _registerName(_lib, "initWithInt:");
+    final _ret = _lib._objc_msgSend_37(_id, _sel_initWithInt!, value);
+    return NSNumber._(_ret, _lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_initWithUnsignedInt;
+  NSNumber initWithUnsignedInt(int value) {
+    _sel_initWithUnsignedInt ??= _registerName(_lib, "initWithUnsignedInt:");
+    final _ret = _lib._objc_msgSend_38(_id, _sel_initWithUnsignedInt!, value);
+    return NSNumber._(_ret, _lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_initWithLong;
+  NSNumber initWithLong(int value) {
+    _sel_initWithLong ??= _registerName(_lib, "initWithLong:");
+    final _ret = _lib._objc_msgSend_39(_id, _sel_initWithLong!, value);
+    return NSNumber._(_ret, _lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_initWithUnsignedLong;
+  NSNumber initWithUnsignedLong(int value) {
+    _sel_initWithUnsignedLong ??= _registerName(_lib, "initWithUnsignedLong:");
+    final _ret = _lib._objc_msgSend_40(_id, _sel_initWithUnsignedLong!, value);
+    return NSNumber._(_ret, _lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_initWithLongLong;
+  NSNumber initWithLongLong(int value) {
+    _sel_initWithLongLong ??= _registerName(_lib, "initWithLongLong:");
+    final _ret = _lib._objc_msgSend_41(_id, _sel_initWithLongLong!, value);
+    return NSNumber._(_ret, _lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_initWithUnsignedLongLong;
+  NSNumber initWithUnsignedLongLong(int value) {
+    _sel_initWithUnsignedLongLong ??=
+        _registerName(_lib, "initWithUnsignedLongLong:");
+    final _ret =
+        _lib._objc_msgSend_42(_id, _sel_initWithUnsignedLongLong!, value);
+    return NSNumber._(_ret, _lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_initWithFloat;
+  NSNumber initWithFloat(double value) {
+    _sel_initWithFloat ??= _registerName(_lib, "initWithFloat:");
+    final _ret = _lib._objc_msgSend_43(_id, _sel_initWithFloat!, value);
+    return NSNumber._(_ret, _lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_initWithDouble;
+  NSNumber initWithDouble(double value) {
+    _sel_initWithDouble ??= _registerName(_lib, "initWithDouble:");
+    final _ret = _lib._objc_msgSend_44(_id, _sel_initWithDouble!, value);
+    return NSNumber._(_ret, _lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_initWithBool;
+  NSNumber initWithBool(bool value) {
+    _sel_initWithBool ??= _registerName(_lib, "initWithBool:");
+    final _ret = _lib._objc_msgSend_45(_id, _sel_initWithBool!, value);
+    return NSNumber._(_ret, _lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_initWithInteger;
+  NSNumber initWithInteger(int value) {
+    _sel_initWithInteger ??= _registerName(_lib, "initWithInteger:");
+    final _ret = _lib._objc_msgSend_46(_id, _sel_initWithInteger!, value);
+    return NSNumber._(_ret, _lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_initWithUnsignedInteger;
+  NSNumber initWithUnsignedInteger(int value) {
+    _sel_initWithUnsignedInteger ??=
+        _registerName(_lib, "initWithUnsignedInteger:");
+    final _ret =
+        _lib._objc_msgSend_47(_id, _sel_initWithUnsignedInteger!, value);
+    return NSNumber._(_ret, _lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_charValue;
+  int get charValue {
+    _sel_charValue ??= _registerName(_lib, "charValue");
+    return _lib._objc_msgSend_48(_id, _sel_charValue!);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_unsignedCharValue;
+  int get unsignedCharValue {
+    _sel_unsignedCharValue ??= _registerName(_lib, "unsignedCharValue");
+    return _lib._objc_msgSend_49(_id, _sel_unsignedCharValue!);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_shortValue;
+  int get shortValue {
+    _sel_shortValue ??= _registerName(_lib, "shortValue");
+    return _lib._objc_msgSend_50(_id, _sel_shortValue!);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_unsignedShortValue;
+  int get unsignedShortValue {
+    _sel_unsignedShortValue ??= _registerName(_lib, "unsignedShortValue");
+    return _lib._objc_msgSend_51(_id, _sel_unsignedShortValue!);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_intValue;
+  int get intValue {
+    _sel_intValue ??= _registerName(_lib, "intValue");
+    return _lib._objc_msgSend_52(_id, _sel_intValue!);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_unsignedIntValue;
+  int get unsignedIntValue {
+    _sel_unsignedIntValue ??= _registerName(_lib, "unsignedIntValue");
+    return _lib._objc_msgSend_53(_id, _sel_unsignedIntValue!);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_longValue;
+  int get longValue {
+    _sel_longValue ??= _registerName(_lib, "longValue");
+    return _lib._objc_msgSend_54(_id, _sel_longValue!);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_unsignedLongValue;
+  int get unsignedLongValue {
+    _sel_unsignedLongValue ??= _registerName(_lib, "unsignedLongValue");
+    return _lib._objc_msgSend_55(_id, _sel_unsignedLongValue!);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_longLongValue;
+  int get longLongValue {
+    _sel_longLongValue ??= _registerName(_lib, "longLongValue");
+    return _lib._objc_msgSend_56(_id, _sel_longLongValue!);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_unsignedLongLongValue;
+  int get unsignedLongLongValue {
+    _sel_unsignedLongLongValue ??= _registerName(_lib, "unsignedLongLongValue");
+    return _lib._objc_msgSend_57(_id, _sel_unsignedLongLongValue!);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_floatValue;
+  double get floatValue {
+    _sel_floatValue ??= _registerName(_lib, "floatValue");
+    return _lib._objc_msgSend_58(_id, _sel_floatValue!);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_doubleValue;
+  double get doubleValue {
+    _sel_doubleValue ??= _registerName(_lib, "doubleValue");
+    return _lib._objc_msgSend_59(_id, _sel_doubleValue!);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_boolValue;
+  bool get boolValue {
+    _sel_boolValue ??= _registerName(_lib, "boolValue");
+    return _lib._objc_msgSend_16(_id, _sel_boolValue!);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_integerValue;
+  int get integerValue {
+    _sel_integerValue ??= _registerName(_lib, "integerValue");
+    return _lib._objc_msgSend_60(_id, _sel_integerValue!);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_unsignedIntegerValue;
+  int get unsignedIntegerValue {
+    _sel_unsignedIntegerValue ??= _registerName(_lib, "unsignedIntegerValue");
+    return _lib._objc_msgSend_20(_id, _sel_unsignedIntegerValue!);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_stringValue;
+  NSObject get stringValue {
+    _sel_stringValue ??= _registerName(_lib, "stringValue");
+    final _ret = _lib._objc_msgSend_61(_id, _sel_stringValue!);
+    return NSObject._(_ret, _lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_compare;
+  int compare(NSObject otherNumber) {
+    _sel_compare ??= _registerName(_lib, "compare:");
+    return _lib._objc_msgSend_62(_id, _sel_compare!, otherNumber._id);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_isEqualToNumber;
+  bool isEqualToNumber(NSObject number) {
+    _sel_isEqualToNumber ??= _registerName(_lib, "isEqualToNumber:");
+    return _lib._objc_msgSend_63(_id, _sel_isEqualToNumber!, number._id);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_descriptionWithLocale;
+  NSString descriptionWithLocale(NSObject locale) {
+    _sel_descriptionWithLocale ??=
+        _registerName(_lib, "descriptionWithLocale:");
+    final _ret =
+        _lib._objc_msgSend_64(_id, _sel_descriptionWithLocale!, locale._id);
+    return NSString._(_ret, _lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_new1;
+  static NSNumber new1(StringTestObjCLibrary _lib) {
+    _class ??= _getClass(_lib, "NSNumber");
+    _sel_new1 ??= _registerName(_lib, "new");
+    final _ret = _lib._objc_msgSend_1(_class!, _sel_new1!);
+    return NSNumber._(_ret, _lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_alloc;
+  static NSNumber alloc(StringTestObjCLibrary _lib) {
+    _class ??= _getClass(_lib, "NSNumber");
+    _sel_alloc ??= _registerName(_lib, "alloc");
+    final _ret = _lib._objc_msgSend_1(_class!, _sel_alloc!);
+    return NSNumber._(_ret, _lib);
+  }
+}
+
+class _NSRange extends ffi.Struct {
+  @NSUInteger()
+  external int location;
+
+  @NSUInteger()
+  external int length;
+}
+
+class NSFastEnumerationState extends ffi.Struct {
+  @pkg_ffi.UnsignedLong()
+  external int state;
+
+  external ffi.Pointer<ffi.Pointer<ObjCObject>> itemsPtr;
+
+  external ffi.Pointer<pkg_ffi.UnsignedLong> mutationsPtr;
+
+  @ffi.Array.multi([5])
+  external ffi.Array<pkg_ffi.UnsignedLong> extra;
+}
+
+class NSEnumerator extends NSObject {
+  NSEnumerator._(ffi.Pointer<ObjCObject> id, StringTestObjCLibrary lib)
+      : super._(id, lib);
+
+  static ffi.Pointer<ObjCObject>? _class;
+
+  static NSEnumerator castFrom<T extends _ObjCWrapper>(T other) {
+    return NSEnumerator._(other._id, other._lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_nextObject;
+  NSObject nextObject() {
+    _sel_nextObject ??= _registerName(_lib, "nextObject");
+    final _ret = _lib._objc_msgSend_65(_id, _sel_nextObject!);
+    return NSObject._(_ret, _lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_new1;
+  static NSEnumerator new1(StringTestObjCLibrary _lib) {
+    _class ??= _getClass(_lib, "NSEnumerator");
+    _sel_new1 ??= _registerName(_lib, "new");
+    final _ret = _lib._objc_msgSend_1(_class!, _sel_new1!);
+    return NSEnumerator._(_ret, _lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_alloc;
+  static NSEnumerator alloc(StringTestObjCLibrary _lib) {
+    _class ??= _getClass(_lib, "NSEnumerator");
+    _sel_alloc ??= _registerName(_lib, "alloc");
+    final _ret = _lib._objc_msgSend_1(_class!, _sel_alloc!);
+    return NSEnumerator._(_ret, _lib);
+  }
+}
+
+abstract class NSCollectionChangeType {
+  static const int NSCollectionChangeInsert = 0;
+  static const int NSCollectionChangeRemove = 1;
+}
+
+class NSOrderedCollectionChange extends NSObject {
+  NSOrderedCollectionChange._(
+      ffi.Pointer<ObjCObject> id, StringTestObjCLibrary lib)
+      : super._(id, lib);
+
+  static ffi.Pointer<ObjCObject>? _class;
+
+  static NSOrderedCollectionChange castFrom<T extends _ObjCWrapper>(T other) {
+    return NSOrderedCollectionChange._(other._id, other._lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_object;
+  NSObject get object {
+    _sel_object ??= _registerName(_lib, "object");
+    final _ret = _lib._objc_msgSend_66(_id, _sel_object!);
+    return NSObject._(_ret, _lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_changeType;
+  int get changeType {
+    _sel_changeType ??= _registerName(_lib, "changeType");
+    return _lib._objc_msgSend_67(_id, _sel_changeType!);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_index;
+  int get index {
+    _sel_index ??= _registerName(_lib, "index");
+    return _lib._objc_msgSend_20(_id, _sel_index!);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_associatedIndex;
+  int get associatedIndex {
+    _sel_associatedIndex ??= _registerName(_lib, "associatedIndex");
+    return _lib._objc_msgSend_20(_id, _sel_associatedIndex!);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_init;
+  @override
+  NSObject init() {
+    _sel_init ??= _registerName(_lib, "init");
+    final _ret = _lib._objc_msgSend_68(_id, _sel_init!);
+    return NSObject._(_ret, _lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_initWithObject_type_index;
+  NSOrderedCollectionChange initWithObject_type_index(
+      NSObject anObject, int type, int index) {
+    _sel_initWithObject_type_index ??=
+        _registerName(_lib, "initWithObject:type:index:");
+    final _ret = _lib._objc_msgSend_69(
+        _id, _sel_initWithObject_type_index!, anObject._id, type, index);
+    return NSOrderedCollectionChange._(_ret, _lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_initWithObject_type_index_associatedIndex;
+  NSOrderedCollectionChange initWithObject_type_index_associatedIndex(
+      NSObject anObject, int type, int index, int associatedIndex) {
+    _sel_initWithObject_type_index_associatedIndex ??=
+        _registerName(_lib, "initWithObject:type:index:associatedIndex:");
+    final _ret = _lib._objc_msgSend_70(
+        _id,
+        _sel_initWithObject_type_index_associatedIndex!,
+        anObject._id,
+        type,
+        index,
+        associatedIndex);
+    return NSOrderedCollectionChange._(_ret, _lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_new1;
+  static NSOrderedCollectionChange new1(StringTestObjCLibrary _lib) {
+    _class ??= _getClass(_lib, "NSOrderedCollectionChange");
+    _sel_new1 ??= _registerName(_lib, "new");
+    final _ret = _lib._objc_msgSend_1(_class!, _sel_new1!);
+    return NSOrderedCollectionChange._(_ret, _lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_alloc;
+  static NSOrderedCollectionChange alloc(StringTestObjCLibrary _lib) {
+    _class ??= _getClass(_lib, "NSOrderedCollectionChange");
+    _sel_alloc ??= _registerName(_lib, "alloc");
+    final _ret = _lib._objc_msgSend_1(_class!, _sel_alloc!);
+    return NSOrderedCollectionChange._(_ret, _lib);
+  }
+}
+
+class NSIndexSet extends NSObject {
+  NSIndexSet._(ffi.Pointer<ObjCObject> id, StringTestObjCLibrary lib)
+      : super._(id, lib);
+
+  static ffi.Pointer<ObjCObject>? _class;
+
+  static NSIndexSet castFrom<T extends _ObjCWrapper>(T other) {
+    return NSIndexSet._(other._id, other._lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_indexSet;
+  static NSIndexSet indexSet(StringTestObjCLibrary _lib) {
+    _class ??= _getClass(_lib, "NSIndexSet");
+    _sel_indexSet ??= _registerName(_lib, "indexSet");
+    final _ret = _lib._objc_msgSend_1(_class!, _sel_indexSet!);
+    return NSIndexSet._(_ret, _lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_indexSetWithIndex;
+  static NSIndexSet indexSetWithIndex(StringTestObjCLibrary _lib, int value) {
+    _class ??= _getClass(_lib, "NSIndexSet");
+    _sel_indexSetWithIndex ??= _registerName(_lib, "indexSetWithIndex:");
+    final _ret = _lib._objc_msgSend_71(_class!, _sel_indexSetWithIndex!, value);
+    return NSIndexSet._(_ret, _lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_indexSetWithIndexesInRange;
+  static NSIndexSet indexSetWithIndexesInRange(
+      StringTestObjCLibrary _lib, NSRange range) {
+    _class ??= _getClass(_lib, "NSIndexSet");
+    _sel_indexSetWithIndexesInRange ??=
+        _registerName(_lib, "indexSetWithIndexesInRange:");
+    final _ret =
+        _lib._objc_msgSend_72(_class!, _sel_indexSetWithIndexesInRange!, range);
+    return NSIndexSet._(_ret, _lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_initWithIndexesInRange;
+  NSIndexSet initWithIndexesInRange(NSRange range) {
+    _sel_initWithIndexesInRange ??=
+        _registerName(_lib, "initWithIndexesInRange:");
+    final _ret =
+        _lib._objc_msgSend_72(_id, _sel_initWithIndexesInRange!, range);
+    return NSIndexSet._(_ret, _lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_initWithIndexSet;
+  NSIndexSet initWithIndexSet(NSObject indexSet) {
+    _sel_initWithIndexSet ??= _registerName(_lib, "initWithIndexSet:");
+    final _ret =
+        _lib._objc_msgSend_73(_id, _sel_initWithIndexSet!, indexSet._id);
+    return NSIndexSet._(_ret, _lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_initWithIndex;
+  NSIndexSet initWithIndex(int value) {
+    _sel_initWithIndex ??= _registerName(_lib, "initWithIndex:");
+    final _ret = _lib._objc_msgSend_71(_id, _sel_initWithIndex!, value);
+    return NSIndexSet._(_ret, _lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_isEqualToIndexSet;
+  bool isEqualToIndexSet(NSObject indexSet) {
+    _sel_isEqualToIndexSet ??= _registerName(_lib, "isEqualToIndexSet:");
+    return _lib._objc_msgSend_74(_id, _sel_isEqualToIndexSet!, indexSet._id);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_count;
+  int get count {
+    _sel_count ??= _registerName(_lib, "count");
+    return _lib._objc_msgSend_20(_id, _sel_count!);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_firstIndex;
+  int get firstIndex {
+    _sel_firstIndex ??= _registerName(_lib, "firstIndex");
+    return _lib._objc_msgSend_20(_id, _sel_firstIndex!);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_lastIndex;
+  int get lastIndex {
+    _sel_lastIndex ??= _registerName(_lib, "lastIndex");
+    return _lib._objc_msgSend_20(_id, _sel_lastIndex!);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_indexGreaterThanIndex;
+  int indexGreaterThanIndex(int value) {
+    _sel_indexGreaterThanIndex ??=
+        _registerName(_lib, "indexGreaterThanIndex:");
+    return _lib._objc_msgSend_75(_id, _sel_indexGreaterThanIndex!, value);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_indexLessThanIndex;
+  int indexLessThanIndex(int value) {
+    _sel_indexLessThanIndex ??= _registerName(_lib, "indexLessThanIndex:");
+    return _lib._objc_msgSend_75(_id, _sel_indexLessThanIndex!, value);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_indexGreaterThanOrEqualToIndex;
+  int indexGreaterThanOrEqualToIndex(int value) {
+    _sel_indexGreaterThanOrEqualToIndex ??=
+        _registerName(_lib, "indexGreaterThanOrEqualToIndex:");
+    return _lib._objc_msgSend_75(
+        _id, _sel_indexGreaterThanOrEqualToIndex!, value);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_indexLessThanOrEqualToIndex;
+  int indexLessThanOrEqualToIndex(int value) {
+    _sel_indexLessThanOrEqualToIndex ??=
+        _registerName(_lib, "indexLessThanOrEqualToIndex:");
+    return _lib._objc_msgSend_75(_id, _sel_indexLessThanOrEqualToIndex!, value);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_getIndexes_maxCount_inIndexRange;
+  int getIndexes_maxCount_inIndexRange(ffi.Pointer<NSUInteger> indexBuffer,
+      int bufferSize, NSRangePointer range) {
+    _sel_getIndexes_maxCount_inIndexRange ??=
+        _registerName(_lib, "getIndexes:maxCount:inIndexRange:");
+    return _lib._objc_msgSend_76(_id, _sel_getIndexes_maxCount_inIndexRange!,
+        indexBuffer, bufferSize, range);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_countOfIndexesInRange;
+  int countOfIndexesInRange(NSRange range) {
+    _sel_countOfIndexesInRange ??=
+        _registerName(_lib, "countOfIndexesInRange:");
+    return _lib._objc_msgSend_77(_id, _sel_countOfIndexesInRange!, range);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_containsIndex;
+  bool containsIndex(int value) {
+    _sel_containsIndex ??= _registerName(_lib, "containsIndex:");
+    return _lib._objc_msgSend_78(_id, _sel_containsIndex!, value);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_containsIndexesInRange;
+  bool containsIndexesInRange(NSRange range) {
+    _sel_containsIndexesInRange ??=
+        _registerName(_lib, "containsIndexesInRange:");
+    return _lib._objc_msgSend_79(_id, _sel_containsIndexesInRange!, range);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_containsIndexes;
+  bool containsIndexes(NSObject indexSet) {
+    _sel_containsIndexes ??= _registerName(_lib, "containsIndexes:");
+    return _lib._objc_msgSend_80(_id, _sel_containsIndexes!, indexSet._id);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_intersectsIndexesInRange;
+  bool intersectsIndexesInRange(NSRange range) {
+    _sel_intersectsIndexesInRange ??=
+        _registerName(_lib, "intersectsIndexesInRange:");
+    return _lib._objc_msgSend_79(_id, _sel_intersectsIndexesInRange!, range);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_enumerateIndexesUsingBlock;
+  void enumerateIndexesUsingBlock(NSObject block) {
+    _sel_enumerateIndexesUsingBlock ??=
+        _registerName(_lib, "enumerateIndexesUsingBlock:");
+    _lib._objc_msgSend_81(_id, _sel_enumerateIndexesUsingBlock!, block._id);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_enumerateIndexesWithOptions_usingBlock;
+  void enumerateIndexesWithOptions_usingBlock(int opts, NSObject block) {
+    _sel_enumerateIndexesWithOptions_usingBlock ??=
+        _registerName(_lib, "enumerateIndexesWithOptions:usingBlock:");
+    _lib._objc_msgSend_82(
+        _id, _sel_enumerateIndexesWithOptions_usingBlock!, opts, block._id);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_enumerateIndexesInRange_options_usingBlock;
+  void enumerateIndexesInRange_options_usingBlock(
+      NSRange range, int opts, NSObject block) {
+    _sel_enumerateIndexesInRange_options_usingBlock ??=
+        _registerName(_lib, "enumerateIndexesInRange:options:usingBlock:");
+    _lib._objc_msgSend_83(_id, _sel_enumerateIndexesInRange_options_usingBlock!,
+        range, opts, block._id);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_indexPassingTest;
+  int indexPassingTest(NSObject predicate) {
+    _sel_indexPassingTest ??= _registerName(_lib, "indexPassingTest:");
+    return _lib._objc_msgSend_84(_id, _sel_indexPassingTest!, predicate._id);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_indexWithOptions_passingTest;
+  int indexWithOptions_passingTest(int opts, NSObject predicate) {
+    _sel_indexWithOptions_passingTest ??=
+        _registerName(_lib, "indexWithOptions:passingTest:");
+    return _lib._objc_msgSend_85(
+        _id, _sel_indexWithOptions_passingTest!, opts, predicate._id);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_indexInRange_options_passingTest;
+  int indexInRange_options_passingTest(
+      NSRange range, int opts, NSObject predicate) {
+    _sel_indexInRange_options_passingTest ??=
+        _registerName(_lib, "indexInRange:options:passingTest:");
+    return _lib._objc_msgSend_86(_id, _sel_indexInRange_options_passingTest!,
+        range, opts, predicate._id);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_indexesPassingTest;
+  NSIndexSet indexesPassingTest(NSObject predicate) {
+    _sel_indexesPassingTest ??= _registerName(_lib, "indexesPassingTest:");
+    final _ret =
+        _lib._objc_msgSend_87(_id, _sel_indexesPassingTest!, predicate._id);
+    return NSIndexSet._(_ret, _lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_indexesWithOptions_passingTest;
+  NSIndexSet indexesWithOptions_passingTest(int opts, NSObject predicate) {
+    _sel_indexesWithOptions_passingTest ??=
+        _registerName(_lib, "indexesWithOptions:passingTest:");
+    final _ret = _lib._objc_msgSend_88(
+        _id, _sel_indexesWithOptions_passingTest!, opts, predicate._id);
+    return NSIndexSet._(_ret, _lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_indexesInRange_options_passingTest;
+  NSIndexSet indexesInRange_options_passingTest(
+      NSRange range, int opts, NSObject predicate) {
+    _sel_indexesInRange_options_passingTest ??=
+        _registerName(_lib, "indexesInRange:options:passingTest:");
+    final _ret = _lib._objc_msgSend_89(_id,
+        _sel_indexesInRange_options_passingTest!, range, opts, predicate._id);
+    return NSIndexSet._(_ret, _lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_enumerateRangesUsingBlock;
+  void enumerateRangesUsingBlock(NSObject block) {
+    _sel_enumerateRangesUsingBlock ??=
+        _registerName(_lib, "enumerateRangesUsingBlock:");
+    _lib._objc_msgSend_90(_id, _sel_enumerateRangesUsingBlock!, block._id);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_enumerateRangesWithOptions_usingBlock;
+  void enumerateRangesWithOptions_usingBlock(int opts, NSObject block) {
+    _sel_enumerateRangesWithOptions_usingBlock ??=
+        _registerName(_lib, "enumerateRangesWithOptions:usingBlock:");
+    _lib._objc_msgSend_91(
+        _id, _sel_enumerateRangesWithOptions_usingBlock!, opts, block._id);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_enumerateRangesInRange_options_usingBlock;
+  void enumerateRangesInRange_options_usingBlock(
+      NSRange range, int opts, NSObject block) {
+    _sel_enumerateRangesInRange_options_usingBlock ??=
+        _registerName(_lib, "enumerateRangesInRange:options:usingBlock:");
+    _lib._objc_msgSend_92(_id, _sel_enumerateRangesInRange_options_usingBlock!,
+        range, opts, block._id);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_new1;
+  static NSIndexSet new1(StringTestObjCLibrary _lib) {
+    _class ??= _getClass(_lib, "NSIndexSet");
+    _sel_new1 ??= _registerName(_lib, "new");
+    final _ret = _lib._objc_msgSend_1(_class!, _sel_new1!);
+    return NSIndexSet._(_ret, _lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_alloc;
+  static NSIndexSet alloc(StringTestObjCLibrary _lib) {
+    _class ??= _getClass(_lib, "NSIndexSet");
+    _sel_alloc ??= _registerName(_lib, "alloc");
+    final _ret = _lib._objc_msgSend_1(_class!, _sel_alloc!);
+    return NSIndexSet._(_ret, _lib);
+  }
+}
+
+typedef NSRange = _NSRange;
+typedef NSRangePointer = ffi.Pointer<NSRange>;
+
+class NSMutableIndexSet extends NSIndexSet {
+  NSMutableIndexSet._(ffi.Pointer<ObjCObject> id, StringTestObjCLibrary lib)
+      : super._(id, lib);
+
+  static ffi.Pointer<ObjCObject>? _class;
+
+  static NSMutableIndexSet castFrom<T extends _ObjCWrapper>(T other) {
+    return NSMutableIndexSet._(other._id, other._lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_addIndexes;
+  void addIndexes(NSObject indexSet) {
+    _sel_addIndexes ??= _registerName(_lib, "addIndexes:");
+    _lib._objc_msgSend_93(_id, _sel_addIndexes!, indexSet._id);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_removeIndexes;
+  void removeIndexes(NSObject indexSet) {
+    _sel_removeIndexes ??= _registerName(_lib, "removeIndexes:");
+    _lib._objc_msgSend_94(_id, _sel_removeIndexes!, indexSet._id);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_removeAllIndexes;
+  void removeAllIndexes() {
+    _sel_removeAllIndexes ??= _registerName(_lib, "removeAllIndexes");
+    _lib._objc_msgSend_0(_id, _sel_removeAllIndexes!);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_addIndex;
+  void addIndex(int value) {
+    _sel_addIndex ??= _registerName(_lib, "addIndex:");
+    _lib._objc_msgSend_95(_id, _sel_addIndex!, value);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_removeIndex;
+  void removeIndex(int value) {
+    _sel_removeIndex ??= _registerName(_lib, "removeIndex:");
+    _lib._objc_msgSend_95(_id, _sel_removeIndex!, value);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_addIndexesInRange;
+  void addIndexesInRange(NSRange range) {
+    _sel_addIndexesInRange ??= _registerName(_lib, "addIndexesInRange:");
+    _lib._objc_msgSend_96(_id, _sel_addIndexesInRange!, range);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_removeIndexesInRange;
+  void removeIndexesInRange(NSRange range) {
+    _sel_removeIndexesInRange ??= _registerName(_lib, "removeIndexesInRange:");
+    _lib._objc_msgSend_96(_id, _sel_removeIndexesInRange!, range);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_shiftIndexesStartingAtIndex_by;
+  void shiftIndexesStartingAtIndex_by(int index, int delta) {
+    _sel_shiftIndexesStartingAtIndex_by ??=
+        _registerName(_lib, "shiftIndexesStartingAtIndex:by:");
+    _lib._objc_msgSend_97(
+        _id, _sel_shiftIndexesStartingAtIndex_by!, index, delta);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_indexSet;
+  static NSMutableIndexSet indexSet(StringTestObjCLibrary _lib) {
+    _class ??= _getClass(_lib, "NSMutableIndexSet");
+    _sel_indexSet ??= _registerName(_lib, "indexSet");
+    final _ret = _lib._objc_msgSend_1(_class!, _sel_indexSet!);
+    return NSMutableIndexSet._(_ret, _lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_indexSetWithIndex;
+  static NSMutableIndexSet indexSetWithIndex(
+      StringTestObjCLibrary _lib, int value) {
+    _class ??= _getClass(_lib, "NSMutableIndexSet");
+    _sel_indexSetWithIndex ??= _registerName(_lib, "indexSetWithIndex:");
+    final _ret = _lib._objc_msgSend_71(_class!, _sel_indexSetWithIndex!, value);
+    return NSMutableIndexSet._(_ret, _lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_indexSetWithIndexesInRange;
+  static NSMutableIndexSet indexSetWithIndexesInRange(
+      StringTestObjCLibrary _lib, NSRange range) {
+    _class ??= _getClass(_lib, "NSMutableIndexSet");
+    _sel_indexSetWithIndexesInRange ??=
+        _registerName(_lib, "indexSetWithIndexesInRange:");
+    final _ret =
+        _lib._objc_msgSend_72(_class!, _sel_indexSetWithIndexesInRange!, range);
+    return NSMutableIndexSet._(_ret, _lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_new1;
+  static NSMutableIndexSet new1(StringTestObjCLibrary _lib) {
+    _class ??= _getClass(_lib, "NSMutableIndexSet");
+    _sel_new1 ??= _registerName(_lib, "new");
+    final _ret = _lib._objc_msgSend_1(_class!, _sel_new1!);
+    return NSMutableIndexSet._(_ret, _lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_alloc;
+  static NSMutableIndexSet alloc(StringTestObjCLibrary _lib) {
+    _class ??= _getClass(_lib, "NSMutableIndexSet");
+    _sel_alloc ??= _registerName(_lib, "alloc");
+    final _ret = _lib._objc_msgSend_1(_class!, _sel_alloc!);
+    return NSMutableIndexSet._(_ret, _lib);
+  }
+}
+
+abstract class NSOrderedCollectionDifferenceCalculationOptions {
+  static const int NSOrderedCollectionDifferenceCalculationOmitInsertedObjects =
+      1;
+  static const int NSOrderedCollectionDifferenceCalculationOmitRemovedObjects =
+      2;
+  static const int NSOrderedCollectionDifferenceCalculationInferMoves = 4;
+}
+
+class NSOrderedCollectionDifference extends NSObject {
+  NSOrderedCollectionDifference._(
+      ffi.Pointer<ObjCObject> id, StringTestObjCLibrary lib)
+      : super._(id, lib);
+
+  static ffi.Pointer<ObjCObject>? _class;
+
+  static NSOrderedCollectionDifference castFrom<T extends _ObjCWrapper>(
+      T other) {
+    return NSOrderedCollectionDifference._(other._id, other._lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_initWithChanges;
+  NSOrderedCollectionDifference initWithChanges(NSObject changes) {
+    _sel_initWithChanges ??= _registerName(_lib, "initWithChanges:");
+    final _ret = _lib._objc_msgSend_98(_id, _sel_initWithChanges!, changes._id);
+    return NSOrderedCollectionDifference._(_ret, _lib);
+  }
+
+  static ffi.Pointer<ObjCSel>?
+      _sel_initWithInsertIndexes_insertedObjects_removeIndexes_removedObjects_additionalChanges;
+  NSOrderedCollectionDifference
+      initWithInsertIndexes_insertedObjects_removeIndexes_removedObjects_additionalChanges(
+          NSObject inserts,
+          NSObject insertedObjects,
+          NSObject removes,
+          NSObject removedObjects,
+          NSObject changes) {
+    _sel_initWithInsertIndexes_insertedObjects_removeIndexes_removedObjects_additionalChanges ??=
+        _registerName(_lib,
+            "initWithInsertIndexes:insertedObjects:removeIndexes:removedObjects:additionalChanges:");
+    final _ret = _lib._objc_msgSend_99(
+        _id,
+        _sel_initWithInsertIndexes_insertedObjects_removeIndexes_removedObjects_additionalChanges!,
+        inserts._id,
+        insertedObjects._id,
+        removes._id,
+        removedObjects._id,
+        changes._id);
+    return NSOrderedCollectionDifference._(_ret, _lib);
+  }
+
+  static ffi.Pointer<ObjCSel>?
+      _sel_initWithInsertIndexes_insertedObjects_removeIndexes_removedObjects;
+  NSOrderedCollectionDifference
+      initWithInsertIndexes_insertedObjects_removeIndexes_removedObjects(
+          NSObject inserts,
+          NSObject insertedObjects,
+          NSObject removes,
+          NSObject removedObjects) {
+    _sel_initWithInsertIndexes_insertedObjects_removeIndexes_removedObjects ??=
+        _registerName(_lib,
+            "initWithInsertIndexes:insertedObjects:removeIndexes:removedObjects:");
+    final _ret = _lib._objc_msgSend_100(
+        _id,
+        _sel_initWithInsertIndexes_insertedObjects_removeIndexes_removedObjects!,
+        inserts._id,
+        insertedObjects._id,
+        removes._id,
+        removedObjects._id);
+    return NSOrderedCollectionDifference._(_ret, _lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_insertions;
+  NSObject get insertions {
+    _sel_insertions ??= _registerName(_lib, "insertions");
+    final _ret = _lib._objc_msgSend_101(_id, _sel_insertions!);
+    return NSObject._(_ret, _lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_removals;
+  NSObject get removals {
+    _sel_removals ??= _registerName(_lib, "removals");
+    final _ret = _lib._objc_msgSend_102(_id, _sel_removals!);
+    return NSObject._(_ret, _lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_hasChanges;
+  bool get hasChanges {
+    _sel_hasChanges ??= _registerName(_lib, "hasChanges");
+    return _lib._objc_msgSend_16(_id, _sel_hasChanges!);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_inverseDifference;
+  NSOrderedCollectionDifference inverseDifference() {
+    _sel_inverseDifference ??= _registerName(_lib, "inverseDifference");
+    final _ret = _lib._objc_msgSend_1(_id, _sel_inverseDifference!);
+    return NSOrderedCollectionDifference._(_ret, _lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_new1;
+  static NSOrderedCollectionDifference new1(StringTestObjCLibrary _lib) {
+    _class ??= _getClass(_lib, "NSOrderedCollectionDifference");
+    _sel_new1 ??= _registerName(_lib, "new");
+    final _ret = _lib._objc_msgSend_1(_class!, _sel_new1!);
+    return NSOrderedCollectionDifference._(_ret, _lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_alloc;
+  static NSOrderedCollectionDifference alloc(StringTestObjCLibrary _lib) {
+    _class ??= _getClass(_lib, "NSOrderedCollectionDifference");
+    _sel_alloc ??= _registerName(_lib, "alloc");
+    final _ret = _lib._objc_msgSend_1(_class!, _sel_alloc!);
+    return NSOrderedCollectionDifference._(_ret, _lib);
+  }
+}
+
+class NSArray extends NSObject {
+  NSArray._(ffi.Pointer<ObjCObject> id, StringTestObjCLibrary lib)
+      : super._(id, lib);
+
+  static ffi.Pointer<ObjCObject>? _class;
+
+  static NSArray castFrom<T extends _ObjCWrapper>(T other) {
+    return NSArray._(other._id, other._lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_count;
+  int get count {
+    _sel_count ??= _registerName(_lib, "count");
+    return _lib._objc_msgSend_20(_id, _sel_count!);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_objectAtIndex;
+  NSObject objectAtIndex(int index) {
+    _sel_objectAtIndex ??= _registerName(_lib, "objectAtIndex:");
+    final _ret = _lib._objc_msgSend_103(_id, _sel_objectAtIndex!, index);
+    return NSObject._(_ret, _lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_init;
+  @override
+  NSArray init() {
+    _sel_init ??= _registerName(_lib, "init");
+    final _ret = _lib._objc_msgSend_1(_id, _sel_init!);
+    return NSArray._(_ret, _lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_initWithObjects_count;
+  NSArray initWithObjects_count(
+      ffi.Pointer<ffi.Pointer<ObjCObject>> objects, int cnt) {
+    _sel_initWithObjects_count ??=
+        _registerName(_lib, "initWithObjects:count:");
+    final _ret =
+        _lib._objc_msgSend_104(_id, _sel_initWithObjects_count!, objects, cnt);
+    return NSArray._(_ret, _lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_initWithCoder;
+  NSArray initWithCoder(NSObject coder) {
+    _sel_initWithCoder ??= _registerName(_lib, "initWithCoder:");
+    final _ret = _lib._objc_msgSend_105(_id, _sel_initWithCoder!, coder._id);
+    return NSArray._(_ret, _lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_new1;
+  static NSArray new1(StringTestObjCLibrary _lib) {
+    _class ??= _getClass(_lib, "NSArray");
+    _sel_new1 ??= _registerName(_lib, "new");
+    final _ret = _lib._objc_msgSend_1(_class!, _sel_new1!);
+    return NSArray._(_ret, _lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_alloc;
+  static NSArray alloc(StringTestObjCLibrary _lib) {
+    _class ??= _getClass(_lib, "NSArray");
+    _sel_alloc ??= _registerName(_lib, "alloc");
+    final _ret = _lib._objc_msgSend_1(_class!, _sel_alloc!);
+    return NSArray._(_ret, _lib);
+  }
+}
+
+abstract class NSBinarySearchingOptions {
+  static const int NSBinarySearchingFirstEqual = 256;
+  static const int NSBinarySearchingLastEqual = 512;
+  static const int NSBinarySearchingInsertionIndex = 1024;
+}
+
+class NSMutableArray extends NSArray {
+  NSMutableArray._(ffi.Pointer<ObjCObject> id, StringTestObjCLibrary lib)
+      : super._(id, lib);
+
+  static ffi.Pointer<ObjCObject>? _class;
+
+  static NSMutableArray castFrom<T extends _ObjCWrapper>(T other) {
+    return NSMutableArray._(other._id, other._lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_addObject;
+  void addObject(NSObject anObject) {
+    _sel_addObject ??= _registerName(_lib, "addObject:");
+    _lib._objc_msgSend_106(_id, _sel_addObject!, anObject._id);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_insertObject_atIndex;
+  void insertObject_atIndex(NSObject anObject, int index) {
+    _sel_insertObject_atIndex ??= _registerName(_lib, "insertObject:atIndex:");
+    _lib._objc_msgSend_107(
+        _id, _sel_insertObject_atIndex!, anObject._id, index);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_removeLastObject;
+  void removeLastObject() {
+    _sel_removeLastObject ??= _registerName(_lib, "removeLastObject");
+    _lib._objc_msgSend_0(_id, _sel_removeLastObject!);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_removeObjectAtIndex;
+  void removeObjectAtIndex(int index) {
+    _sel_removeObjectAtIndex ??= _registerName(_lib, "removeObjectAtIndex:");
+    _lib._objc_msgSend_95(_id, _sel_removeObjectAtIndex!, index);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_replaceObjectAtIndex_withObject;
+  void replaceObjectAtIndex_withObject(int index, NSObject anObject) {
+    _sel_replaceObjectAtIndex_withObject ??=
+        _registerName(_lib, "replaceObjectAtIndex:withObject:");
+    _lib._objc_msgSend_108(
+        _id, _sel_replaceObjectAtIndex_withObject!, index, anObject._id);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_init;
+  @override
+  NSMutableArray init() {
+    _sel_init ??= _registerName(_lib, "init");
+    final _ret = _lib._objc_msgSend_1(_id, _sel_init!);
+    return NSMutableArray._(_ret, _lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_initWithCapacity;
+  NSMutableArray initWithCapacity(int numItems) {
+    _sel_initWithCapacity ??= _registerName(_lib, "initWithCapacity:");
+    final _ret = _lib._objc_msgSend_71(_id, _sel_initWithCapacity!, numItems);
+    return NSMutableArray._(_ret, _lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_initWithCoder;
+  @override
+  NSMutableArray initWithCoder(NSObject coder) {
+    _sel_initWithCoder ??= _registerName(_lib, "initWithCoder:");
+    final _ret = _lib._objc_msgSend_109(_id, _sel_initWithCoder!, coder._id);
+    return NSMutableArray._(_ret, _lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_new1;
+  static NSMutableArray new1(StringTestObjCLibrary _lib) {
+    _class ??= _getClass(_lib, "NSMutableArray");
+    _sel_new1 ??= _registerName(_lib, "new");
+    final _ret = _lib._objc_msgSend_1(_class!, _sel_new1!);
+    return NSMutableArray._(_ret, _lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_alloc;
+  static NSMutableArray alloc(StringTestObjCLibrary _lib) {
+    _class ??= _getClass(_lib, "NSMutableArray");
+    _sel_alloc ??= _registerName(_lib, "alloc");
+    final _ret = _lib._objc_msgSend_1(_class!, _sel_alloc!);
+    return NSMutableArray._(_ret, _lib);
+  }
+}
+
+abstract class NSItemProviderRepresentationVisibility {
+  static const int NSItemProviderRepresentationVisibilityAll = 0;
+  static const int NSItemProviderRepresentationVisibilityTeam = 1;
+  static const int NSItemProviderRepresentationVisibilityGroup = 2;
+  static const int NSItemProviderRepresentationVisibilityOwnProcess = 3;
+}
+
+abstract class NSItemProviderFileOptions {
+  static const int NSItemProviderFileOptionOpenInPlace = 1;
+}
+
+class NSItemProvider extends NSObject {
+  NSItemProvider._(ffi.Pointer<ObjCObject> id, StringTestObjCLibrary lib)
+      : super._(id, lib);
+
+  static ffi.Pointer<ObjCObject>? _class;
+
+  static NSItemProvider castFrom<T extends _ObjCWrapper>(T other) {
+    return NSItemProvider._(other._id, other._lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_init;
+  @override
+  NSItemProvider init() {
+    _sel_init ??= _registerName(_lib, "init");
+    final _ret = _lib._objc_msgSend_1(_id, _sel_init!);
+    return NSItemProvider._(_ret, _lib);
+  }
+
+  static ffi.Pointer<ObjCSel>?
+      _sel_registerDataRepresentationForTypeIdentifier_visibility_loadHandler;
+  void registerDataRepresentationForTypeIdentifier_visibility_loadHandler(
+      NSObject typeIdentifier, int visibility, NSObject loadHandler) {
+    _sel_registerDataRepresentationForTypeIdentifier_visibility_loadHandler ??=
+        _registerName(_lib,
+            "registerDataRepresentationForTypeIdentifier:visibility:loadHandler:");
+    _lib._objc_msgSend_110(
+        _id,
+        _sel_registerDataRepresentationForTypeIdentifier_visibility_loadHandler!,
+        typeIdentifier._id,
+        visibility,
+        loadHandler._id);
+  }
+
+  static ffi.Pointer<ObjCSel>?
+      _sel_registerFileRepresentationForTypeIdentifier_fileOptions_visibility_loadHandler;
+  void
+      registerFileRepresentationForTypeIdentifier_fileOptions_visibility_loadHandler(
+          NSObject typeIdentifier,
+          int fileOptions,
+          int visibility,
+          NSObject loadHandler) {
+    _sel_registerFileRepresentationForTypeIdentifier_fileOptions_visibility_loadHandler ??=
+        _registerName(_lib,
+            "registerFileRepresentationForTypeIdentifier:fileOptions:visibility:loadHandler:");
+    _lib._objc_msgSend_111(
+        _id,
+        _sel_registerFileRepresentationForTypeIdentifier_fileOptions_visibility_loadHandler!,
+        typeIdentifier._id,
+        fileOptions,
+        visibility,
+        loadHandler._id);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_registeredTypeIdentifiers;
+  NSObject get registeredTypeIdentifiers {
+    _sel_registeredTypeIdentifiers ??=
+        _registerName(_lib, "registeredTypeIdentifiers");
+    final _ret = _lib._objc_msgSend_112(_id, _sel_registeredTypeIdentifiers!);
+    return NSObject._(_ret, _lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_hasItemConformingToTypeIdentifier;
+  bool hasItemConformingToTypeIdentifier(NSObject typeIdentifier) {
+    _sel_hasItemConformingToTypeIdentifier ??=
+        _registerName(_lib, "hasItemConformingToTypeIdentifier:");
+    return _lib._objc_msgSend_113(
+        _id, _sel_hasItemConformingToTypeIdentifier!, typeIdentifier._id);
+  }
+
+  static ffi.Pointer<ObjCSel>?
+      _sel_hasRepresentationConformingToTypeIdentifier_fileOptions;
+  bool hasRepresentationConformingToTypeIdentifier_fileOptions(
+      NSObject typeIdentifier, int fileOptions) {
+    _sel_hasRepresentationConformingToTypeIdentifier_fileOptions ??=
+        _registerName(
+            _lib, "hasRepresentationConformingToTypeIdentifier:fileOptions:");
+    return _lib._objc_msgSend_114(
+        _id,
+        _sel_hasRepresentationConformingToTypeIdentifier_fileOptions!,
+        typeIdentifier._id,
+        fileOptions);
+  }
+
+  static ffi.Pointer<ObjCSel>?
+      _sel_loadDataRepresentationForTypeIdentifier_completionHandler;
+  NSProgress loadDataRepresentationForTypeIdentifier_completionHandler(
+      NSObject typeIdentifier, NSObject completionHandler) {
+    _sel_loadDataRepresentationForTypeIdentifier_completionHandler ??=
+        _registerName(
+            _lib, "loadDataRepresentationForTypeIdentifier:completionHandler:");
+    final _ret = _lib._objc_msgSend_115(
+        _id,
+        _sel_loadDataRepresentationForTypeIdentifier_completionHandler!,
+        typeIdentifier._id,
+        completionHandler._id);
+    return NSProgress._(_ret, _lib);
+  }
+
+  static ffi.Pointer<ObjCSel>?
+      _sel_loadFileRepresentationForTypeIdentifier_completionHandler;
+  NSProgress loadFileRepresentationForTypeIdentifier_completionHandler(
+      NSObject typeIdentifier, NSObject completionHandler) {
+    _sel_loadFileRepresentationForTypeIdentifier_completionHandler ??=
+        _registerName(
+            _lib, "loadFileRepresentationForTypeIdentifier:completionHandler:");
+    final _ret = _lib._objc_msgSend_116(
+        _id,
+        _sel_loadFileRepresentationForTypeIdentifier_completionHandler!,
+        typeIdentifier._id,
+        completionHandler._id);
+    return NSProgress._(_ret, _lib);
+  }
+
+  static ffi.Pointer<ObjCSel>?
+      _sel_loadInPlaceFileRepresentationForTypeIdentifier_completionHandler;
+  NSProgress loadInPlaceFileRepresentationForTypeIdentifier_completionHandler(
+      NSObject typeIdentifier, NSObject completionHandler) {
+    _sel_loadInPlaceFileRepresentationForTypeIdentifier_completionHandler ??=
+        _registerName(_lib,
+            "loadInPlaceFileRepresentationForTypeIdentifier:completionHandler:");
+    final _ret = _lib._objc_msgSend_117(
+        _id,
+        _sel_loadInPlaceFileRepresentationForTypeIdentifier_completionHandler!,
+        typeIdentifier._id,
+        completionHandler._id);
+    return NSProgress._(_ret, _lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_suggestedName;
+  NSObject get suggestedName {
+    _sel_suggestedName ??= _registerName(_lib, "suggestedName");
+    final _ret = _lib._objc_msgSend_118(_id, _sel_suggestedName!);
+    return NSObject._(_ret, _lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_suggestedName1;
+  set suggestedName(NSObject value) {
+    _sel_suggestedName1 ??= _registerName(_lib, "setSuggestedName:");
+    _lib._objc_msgSend_119(_id, _sel_suggestedName1!, value._id);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_initWithObject;
+  NSItemProvider initWithObject(NSObject object) {
+    _sel_initWithObject ??= _registerName(_lib, "initWithObject:");
+    final _ret = _lib._objc_msgSend_120(_id, _sel_initWithObject!, object._id);
+    return NSItemProvider._(_ret, _lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_registerObject_visibility;
+  void registerObject_visibility(NSObject object, int visibility) {
+    _sel_registerObject_visibility ??=
+        _registerName(_lib, "registerObject:visibility:");
+    _lib._objc_msgSend_121(
+        _id, _sel_registerObject_visibility!, object._id, visibility);
+  }
+
+  static ffi.Pointer<ObjCSel>?
+      _sel_registerObjectOfClass_visibility_loadHandler;
+  void registerObjectOfClass_visibility_loadHandler(
+      NSObject aClass, int visibility, NSObject loadHandler) {
+    _sel_registerObjectOfClass_visibility_loadHandler ??=
+        _registerName(_lib, "registerObjectOfClass:visibility:loadHandler:");
+    _lib._objc_msgSend_122(
+        _id,
+        _sel_registerObjectOfClass_visibility_loadHandler!,
+        aClass._id,
+        visibility,
+        loadHandler._id);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_canLoadObjectOfClass;
+  bool canLoadObjectOfClass(NSObject aClass) {
+    _sel_canLoadObjectOfClass ??= _registerName(_lib, "canLoadObjectOfClass:");
+    return _lib._objc_msgSend_123(_id, _sel_canLoadObjectOfClass!, aClass._id);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_loadObjectOfClass_completionHandler;
+  NSProgress loadObjectOfClass_completionHandler(
+      NSObject aClass, NSObject completionHandler) {
+    _sel_loadObjectOfClass_completionHandler ??=
+        _registerName(_lib, "loadObjectOfClass:completionHandler:");
+    final _ret = _lib._objc_msgSend_124(
+        _id,
+        _sel_loadObjectOfClass_completionHandler!,
+        aClass._id,
+        completionHandler._id);
+    return NSProgress._(_ret, _lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_initWithItem_typeIdentifier;
+  NSItemProvider initWithItem_typeIdentifier(
+      NSObject item, NSObject typeIdentifier) {
+    _sel_initWithItem_typeIdentifier ??=
+        _registerName(_lib, "initWithItem:typeIdentifier:");
+    final _ret = _lib._objc_msgSend_125(
+        _id, _sel_initWithItem_typeIdentifier!, item._id, typeIdentifier._id);
+    return NSItemProvider._(_ret, _lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_initWithContentsOfURL;
+  NSItemProvider initWithContentsOfURL(NSObject fileURL) {
+    _sel_initWithContentsOfURL ??=
+        _registerName(_lib, "initWithContentsOfURL:");
+    final _ret =
+        _lib._objc_msgSend_126(_id, _sel_initWithContentsOfURL!, fileURL._id);
+    return NSItemProvider._(_ret, _lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_registerItemForTypeIdentifier_loadHandler;
+  void registerItemForTypeIdentifier_loadHandler(
+      NSObject typeIdentifier, NSItemProviderLoadHandler loadHandler) {
+    _sel_registerItemForTypeIdentifier_loadHandler ??=
+        _registerName(_lib, "registerItemForTypeIdentifier:loadHandler:");
+    _lib._objc_msgSend_127(_id, _sel_registerItemForTypeIdentifier_loadHandler!,
+        typeIdentifier._id, loadHandler);
+  }
+
+  static ffi.Pointer<ObjCSel>?
+      _sel_loadItemForTypeIdentifier_options_completionHandler;
+  void loadItemForTypeIdentifier_options_completionHandler(
+      NSObject typeIdentifier,
+      NSObject options,
+      NSItemProviderCompletionHandler completionHandler) {
+    _sel_loadItemForTypeIdentifier_options_completionHandler ??= _registerName(
+        _lib, "loadItemForTypeIdentifier:options:completionHandler:");
+    _lib._objc_msgSend_128(
+        _id,
+        _sel_loadItemForTypeIdentifier_options_completionHandler!,
+        typeIdentifier._id,
+        options._id,
+        completionHandler);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_new1;
+  static NSItemProvider new1(StringTestObjCLibrary _lib) {
+    _class ??= _getClass(_lib, "NSItemProvider");
+    _sel_new1 ??= _registerName(_lib, "new");
+    final _ret = _lib._objc_msgSend_1(_class!, _sel_new1!);
+    return NSItemProvider._(_ret, _lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_alloc;
+  static NSItemProvider alloc(StringTestObjCLibrary _lib) {
+    _class ??= _getClass(_lib, "NSItemProvider");
+    _sel_alloc ??= _registerName(_lib, "alloc");
+    final _ret = _lib._objc_msgSend_1(_class!, _sel_alloc!);
+    return NSItemProvider._(_ret, _lib);
+  }
+}
+
+class NSProgress extends _ObjCWrapper {
+  NSProgress._(ffi.Pointer<ObjCObject> id, StringTestObjCLibrary lib)
+      : super._(id, lib);
+
+  static ffi.Pointer<ObjCObject>? _class;
+
+  static NSProgress castFrom<T extends _ObjCWrapper>(T other) {
+    return NSProgress._(other._id, other._lib);
+  }
+}
+
+typedef NSItemProviderLoadHandler = ffi.Pointer<ObjCObject>;
+typedef NSItemProviderCompletionHandler = ffi.Pointer<ObjCObject>;
+
+abstract class NSItemProviderErrorCode {
+  static const int NSItemProviderUnknownError = -1;
+  static const int NSItemProviderItemUnavailableError = -1000;
+  static const int NSItemProviderUnexpectedValueClassError = -1100;
+  static const int NSItemProviderUnavailableCoercionError = -1200;
+}
+
+abstract class NSStringCompareOptions {
+  static const int NSCaseInsensitiveSearch = 1;
+  static const int NSLiteralSearch = 2;
+  static const int NSBackwardsSearch = 4;
+  static const int NSAnchoredSearch = 8;
+  static const int NSNumericSearch = 64;
+  static const int NSDiacriticInsensitiveSearch = 128;
+  static const int NSWidthInsensitiveSearch = 256;
+  static const int NSForcedOrderingSearch = 512;
+  static const int NSRegularExpressionSearch = 1024;
+}
+
+abstract class NSStringEncodingConversionOptions {
+  static const int NSStringEncodingConversionAllowLossy = 1;
+  static const int NSStringEncodingConversionExternalRepresentation = 2;
+}
+
+abstract class NSStringEnumerationOptions {
+  static const int NSStringEnumerationByLines = 0;
+  static const int NSStringEnumerationByParagraphs = 1;
+  static const int NSStringEnumerationByComposedCharacterSequences = 2;
+  static const int NSStringEnumerationByWords = 3;
+  static const int NSStringEnumerationBySentences = 4;
+  static const int NSStringEnumerationByCaretPositions = 5;
+  static const int NSStringEnumerationByDeletionClusters = 6;
+  static const int NSStringEnumerationReverse = 256;
+  static const int NSStringEnumerationSubstringNotRequired = 512;
+  static const int NSStringEnumerationLocalized = 1024;
+}
+
+typedef NSStringTransform = ffi.Pointer<ObjCObject>;
+typedef NSStringEncodingDetectionOptionsKey = ffi.Pointer<ObjCObject>;
+
+class NSMutableString extends NSString {
+  NSMutableString._(ffi.Pointer<ObjCObject> id, StringTestObjCLibrary lib)
+      : super._(id, lib);
+
+  static ffi.Pointer<ObjCObject>? _class;
+
+  static NSMutableString castFrom<T extends _ObjCWrapper>(T other) {
+    return NSMutableString._(other._id, other._lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_replaceCharactersInRange_withString;
+  void replaceCharactersInRange_withString(NSRange range, NSObject aString) {
+    _sel_replaceCharactersInRange_withString ??=
+        _registerName(_lib, "replaceCharactersInRange:withString:");
+    _lib._objc_msgSend_129(
+        _id, _sel_replaceCharactersInRange_withString!, range, aString._id);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_stringWithCString_encoding;
+  static NSString stringWithCString_encoding(
+      StringTestObjCLibrary _lib, ffi.Pointer<pkg_ffi.Char> cString, int enc) {
+    _class ??= _getClass(_lib, "NSMutableString");
+    _sel_stringWithCString_encoding ??=
+        _registerName(_lib, "stringWithCString:encoding:");
+    final _ret = _lib._objc_msgSend_25(
+        _class!, _sel_stringWithCString_encoding!, cString, enc);
+    return NSString._(_ret, _lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_new1;
+  static NSMutableString new1(StringTestObjCLibrary _lib) {
+    _class ??= _getClass(_lib, "NSMutableString");
+    _sel_new1 ??= _registerName(_lib, "new");
+    final _ret = _lib._objc_msgSend_1(_class!, _sel_new1!);
+    return NSMutableString._(_ret, _lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_alloc;
+  static NSMutableString alloc(StringTestObjCLibrary _lib) {
+    _class ??= _getClass(_lib, "NSMutableString");
+    _sel_alloc ??= _registerName(_lib, "alloc");
+    final _ret = _lib._objc_msgSend_1(_class!, _sel_alloc!);
+    return NSMutableString._(_ret, _lib);
+  }
+}
+
+typedef NSExceptionName = ffi.Pointer<ObjCObject>;
+
+class NSSimpleCString extends NSString {
+  NSSimpleCString._(ffi.Pointer<ObjCObject> id, StringTestObjCLibrary lib)
+      : super._(id, lib);
+
+  static ffi.Pointer<ObjCObject>? _class;
+
+  static NSSimpleCString castFrom<T extends _ObjCWrapper>(T other) {
+    return NSSimpleCString._(other._id, other._lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_stringWithCString_encoding;
+  static NSString stringWithCString_encoding(
+      StringTestObjCLibrary _lib, ffi.Pointer<pkg_ffi.Char> cString, int enc) {
+    _class ??= _getClass(_lib, "NSSimpleCString");
+    _sel_stringWithCString_encoding ??=
+        _registerName(_lib, "stringWithCString:encoding:");
+    final _ret = _lib._objc_msgSend_25(
+        _class!, _sel_stringWithCString_encoding!, cString, enc);
+    return NSString._(_ret, _lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_new1;
+  static NSSimpleCString new1(StringTestObjCLibrary _lib) {
+    _class ??= _getClass(_lib, "NSSimpleCString");
+    _sel_new1 ??= _registerName(_lib, "new");
+    final _ret = _lib._objc_msgSend_1(_class!, _sel_new1!);
+    return NSSimpleCString._(_ret, _lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_alloc;
+  static NSSimpleCString alloc(StringTestObjCLibrary _lib) {
+    _class ??= _getClass(_lib, "NSSimpleCString");
+    _sel_alloc ??= _registerName(_lib, "alloc");
+    final _ret = _lib._objc_msgSend_1(_class!, _sel_alloc!);
+    return NSSimpleCString._(_ret, _lib);
+  }
+}
+
+class NSConstantString extends NSSimpleCString {
+  NSConstantString._(ffi.Pointer<ObjCObject> id, StringTestObjCLibrary lib)
+      : super._(id, lib);
+
+  static ffi.Pointer<ObjCObject>? _class;
+
+  static NSConstantString castFrom<T extends _ObjCWrapper>(T other) {
+    return NSConstantString._(other._id, other._lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_stringWithCString_encoding;
+  static NSString stringWithCString_encoding(
+      StringTestObjCLibrary _lib, ffi.Pointer<pkg_ffi.Char> cString, int enc) {
+    _class ??= _getClass(_lib, "NSConstantString");
+    _sel_stringWithCString_encoding ??=
+        _registerName(_lib, "stringWithCString:encoding:");
+    final _ret = _lib._objc_msgSend_25(
+        _class!, _sel_stringWithCString_encoding!, cString, enc);
+    return NSString._(_ret, _lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_new1;
+  static NSConstantString new1(StringTestObjCLibrary _lib) {
+    _class ??= _getClass(_lib, "NSConstantString");
+    _sel_new1 ??= _registerName(_lib, "new");
+    final _ret = _lib._objc_msgSend_1(_class!, _sel_new1!);
+    return NSConstantString._(_ret, _lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_alloc;
+  static NSConstantString alloc(StringTestObjCLibrary _lib) {
+    _class ??= _getClass(_lib, "NSConstantString");
+    _sel_alloc ??= _registerName(_lib, "alloc");
+    final _ret = _lib._objc_msgSend_1(_class!, _sel_alloc!);
+    return NSConstantString._(_ret, _lib);
+  }
+}
+
+class StringUtil extends NSObject {
+  StringUtil._(ffi.Pointer<ObjCObject> id, StringTestObjCLibrary lib)
+      : super._(id, lib);
+
+  static ffi.Pointer<ObjCObject>? _class;
+
+  static StringUtil castFrom<T extends _ObjCWrapper>(T other) {
+    return StringUtil._(other._id, other._lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_strConcat_with;
+  static NSString strConcat_with(
+      StringTestObjCLibrary _lib, NSObject a, NSObject b) {
+    _class ??= _getClass(_lib, "StringUtil");
+    _sel_strConcat_with ??= _registerName(_lib, "strConcat:with:");
+    final _ret =
+        _lib._objc_msgSend_130(_class!, _sel_strConcat_with!, a._id, b._id);
+    return NSString._(_ret, _lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_new1;
+  static StringUtil new1(StringTestObjCLibrary _lib) {
+    _class ??= _getClass(_lib, "StringUtil");
+    _sel_new1 ??= _registerName(_lib, "new");
+    final _ret = _lib._objc_msgSend_1(_class!, _sel_new1!);
+    return StringUtil._(_ret, _lib);
+  }
+
+  static ffi.Pointer<ObjCSel>? _sel_alloc;
+  static StringUtil alloc(StringTestObjCLibrary _lib) {
+    _class ??= _getClass(_lib, "StringUtil");
+    _sel_alloc ??= _registerName(_lib, "alloc");
+    final _ret = _lib._objc_msgSend_1(_class!, _sel_alloc!);
+    return StringUtil._(_ret, _lib);
+  }
+}
+
+const int NSScannedOption = 1;
+
+const int NSCollectorDisabledOption = 2;
+
+const int NSASCIIStringEncoding = 1;
+
+const int NSNEXTSTEPStringEncoding = 2;
+
+const int NSJapaneseEUCStringEncoding = 3;
+
+const int NSUTF8StringEncoding = 4;
+
+const int NSISOLatin1StringEncoding = 5;
+
+const int NSSymbolStringEncoding = 6;
+
+const int NSNonLossyASCIIStringEncoding = 7;
+
+const int NSShiftJISStringEncoding = 8;
+
+const int NSISOLatin2StringEncoding = 9;
+
+const int NSUnicodeStringEncoding = 10;
+
+const int NSWindowsCP1251StringEncoding = 11;
+
+const int NSWindowsCP1252StringEncoding = 12;
+
+const int NSWindowsCP1253StringEncoding = 13;
+
+const int NSWindowsCP1254StringEncoding = 14;
+
+const int NSWindowsCP1250StringEncoding = 15;
+
+const int NSISO2022JPStringEncoding = 21;
+
+const int NSMacOSRomanStringEncoding = 30;
+
+const int NSUTF16StringEncoding = 10;
+
+const int NSUTF16BigEndianStringEncoding = 2415919360;
+
+const int NSUTF16LittleEndianStringEncoding = 2483028224;
+
+const int NSUTF32StringEncoding = 2348810496;
+
+const int NSUTF32BigEndianStringEncoding = 2550137088;
+
+const int NSUTF32LittleEndianStringEncoding = 2617245952;
+
+const int NSProprietaryStringEncoding = 65536;
+
+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;
+
+const int NSMaximumStringLength = 2147483646;
+
+const int NS_UNICHAR_IS_EIGHT_BIT = 0;
diff --git a/pkgs/ffigen/test/native_objc_test/string_config.yaml b/pkgs/ffigen/test/native_objc_test/string_config.yaml
new file mode 100644
index 0000000..9f387a9
--- /dev/null
+++ b/pkgs/ffigen/test/native_objc_test/string_config.yaml
@@ -0,0 +1,12 @@
+name: StringTestObjCLibrary
+description: 'Tests calling Objective-C string methods'
+language: objc
+output: 'test/native_objc_test/string_bindings.dart'
+functions:
+  exclude:
+    - '.*'
+headers:
+  entry-points:
+    - 'test/native_objc_test/string_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/string_test.dart b/pkgs/ffigen/test/native_objc_test/string_test.dart
new file mode 100644
index 0000000..27c6359
--- /dev/null
+++ b/pkgs/ffigen/test/native_objc_test/string_test.dart
@@ -0,0 +1,48 @@
+// 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:test/test.dart';
+import '../test_utils.dart';
+import 'string_bindings.dart';
+
+void main() {
+  late StringTestObjCLibrary lib;
+
+  group('string', () {
+    setUpAll(() {
+      logWarnings();
+      final dylib = File('test/native_objc_test/string_test.dylib');
+      verifySetupFile(dylib);
+      lib = StringTestObjCLibrary(DynamicLibrary.open(dylib.absolute.path));
+    });
+
+    // TODO(#329): Add 'Embedded\u0000Null'.
+    for (final s in ['Hello', '🇵🇬']) {
+      test('NSString to/from Dart string [$s]', () {
+        final ns1 = NSString(lib, s);
+        expect(ns1.toString(), s);
+        expect(ns1.length, s.length);
+
+        final ns2 = s.toNSString(lib);
+        expect(ns2.toString(), s);
+        expect(ns2.length, s.length);
+      });
+    }
+
+    test('strings usable', () {
+      final str1 = 'Hello'.toNSString(lib);
+      final str2 = 'World!'.toNSString(lib);
+
+      final str3 = StringUtil.strConcat_with(lib, str1, str2);
+      expect(str3.length, 11);
+      expect(str3.toString(), "HelloWorld!");
+    });
+  });
+}
diff --git a/pkgs/ffigen/test/native_objc_test/string_test.m b/pkgs/ffigen/test/native_objc_test/string_test.m
new file mode 100644
index 0000000..5add18c
--- /dev/null
+++ b/pkgs/ffigen/test/native_objc_test/string_test.m
@@ -0,0 +1,13 @@
+#import <Foundation/NSObject.h>
+#import <Foundation/NSString.h>
+
+// TODO(#309): strConcat should just be a static function.
+@interface StringUtil : NSObject {}
++ (NSString*)strConcat:(NSString*)a with:(NSString*)b;
+@end
+
+@implementation StringUtil
++ (NSString*)strConcat:(NSString*)a with:(NSString*)b {
+  return [a stringByAppendingString:b];
+}
+@end
diff --git a/pkgs/ffigen/test/regen.dart b/pkgs/ffigen/test/regen.dart
index 1bc2021..7d78b6d 100644
--- a/pkgs/ffigen/test/regen.dart
+++ b/pkgs/ffigen/test/regen.dart
@@ -74,6 +74,21 @@
     File('test/native_objc_test/native_objc_test_bindings.dart'),
   );
 
+  await _regenConfig(
+    File('test/native_objc_test/method_config.yaml'),
+    File('test/native_objc_test/method_bindings.dart'),
+  );
+
+  await _regenConfig(
+    File('test/native_objc_test/property_config.yaml'),
+    File('test/native_objc_test/property_bindings.dart'),
+  );
+
+  await _regenConfig(
+    File('test/native_objc_test/string_config.yaml'),
+    File('test/native_objc_test/string_bindings.dart'),
+  );
+
   await _regenConfig(File('test/native_test/config.yaml'),
       File('test/native_test/native_test_bindings.dart'));